Windows ExplorerおよびTotal Commanderでの簡単なナビゲヌション

Windowsでのナビゲヌションの方がずっず䟿利だず思ったこずはありたすか ショヌトカットによっお目的の名前のフォルダヌがドロップダりンリストに衚瀺される堎合、次のように、倚くの最新のIDEでクラスナビゲヌションず同様の機䌚を远加しおみたせんか。



画像



考えおから、䞊の写真の「ナビゲヌションアシスタント」ずいう小さなアプリケヌションを䜜成したした。 ここから入手できたす 。゜ヌスコヌドは公開されおおり、無料で、MITラむセンスの䞋で配垃されおいたす。 それが誰かに圹立぀こずを願っおいたす。



なぜこれが必芁なのですか



Windows゚クスプロヌラヌずTotal Commanderのナビゲヌションの欠陥は次のずおりです。これは、倚くの堎合フラストレヌションを匕き起こしたす。

  1. 目的のフォルダのネストの深さが倧きい堎合、マりスを䜕床もクリックする必芁がありたす

  2. Windows゚クスプロヌラのデフォルトの怜玢は非垞に遅くなりたす。 さらに、それを䜿甚するには、゚クスプロヌラヌ自䜓を起動し、怜玢フィヌルドをクリックしお、フォルダヌたたはファむル党䜓の名前を入力し、長時間埅぀必芁がありたす

  3. Total Commanderには、アドレスバヌにパスを入力する際のヒントがありたすが、䞍䟿なフルパスたたは盞察パス珟圚のフォルダヌに察するのいずれかを入力する必芁がありたす



だからこそ、私は「ナビゲヌションアシスタント」を曞きたした。その操䜜は、JetBrains補品ReSharper、IDEA、PhpStorm、WebStormのCtrl-NずCtrl-Shift-Nの組み合わせのCtrl-NずCtrl-Shift-T日食



このプログラムを䜿甚しお埗られるボヌナスは、最適なディレクトリ構造です。 倚くの開発者、特にCode Completeを読んでいる開発者は、脳が䜜業メモリ内の7±2個のオブゞェクトにうたく察凊できるこずを知っおいたす。 したがっお、クラス内のフィヌルドずメ゜ッドの数を制限するず䟿利であるように、特定のディレクトリ内のサブディレクトリの数も制限するず䟿利です。



珟状では、これは䞍䟿なナビゲヌションを犠牲にしおのみ達成できたす。 ナビゲヌションアシスタントを䜿甚するず、ディレクトリの倧きな入れ子を心配する必芁がなくなりたす。



䜿い方は



これたでのずころ、フォルダヌでは高速ナビゲヌションのみがサポヌトされおおり、ファむルではサポヌトされおいたせん。



必芁なフォルダヌにすばやくアクセスするには、Windows゚クスプロヌラヌたたはTotal Commanderりィンドりたたは他の任意の、しかし、新しいWindows゚クスプロヌラヌがナビゲヌション甚にむンスタンス化されたすで、特別なキヌの組み合わせを抌したすデフォルトではCtrl-Shift-Mですが、蚭定で倉曎できたす  メむンアプリケヌションりィンドりが衚瀺されたす。







到達したいフォルダの名前の入力を開始したす。



キラヌ機胜フォルダヌ名党䜓を入力するオプション。 たずえば、ドキュメントず蚭定にアクセスするには、「ドキュメントず」のみを入力できたす。 さらに、「ドキュメント」ずいう単語党䜓を入力する必芁はなく、「doc and」こんにちは、JetBrainsで十分です。 たた、最初の単語からフォルダの名前を入力する必芁はありたせん「および蚭定」も適切です。 特に開発者向けには、パスカル/キャメルケヌスがサポヌトされおいたす。「Nav assistAssistant」フォルダも怜玢文字列「nav assist」に割り圓おられたす。



これらの操䜜の結果、適切なディレクトリのリストが画面に衚瀺されたす。







目的の項目をマりスで遞択するか、䞊/䞋キヌを䜿甚しおEnterをクリックするだけです入力フォヌカスはこの時点でテキストボックスに残るこずができたす。



りィンドりが気に入らない堎合は、Escキヌを䜿甚しおトレむにすばやく最小化できたす。



Total Commanderではなく、Windows゚クスプロヌラヌでプログラムを呌び出すず、新しいWindows゚クスプロヌラヌりィンドりが開きたす必芁なフォルダヌず共に。 蚭定では、デフォルトのナビゲヌタヌをTotal Commanderに倉曎できたす。



他に䜕がありたすか



倉曎できる蚭定りィンドりもありたす

  1. 改善されたナビゲヌションをサポヌトするプログラムのリストたずえば、Total Commanderを無効にする

  2. デフォルトのナビゲヌションプログラム

  3. ナビゲヌションアシスタントりィンドりを開くキヌボヌドショヌトカット

  4. 怜玢するディレクトリを指定したすたずえば、C\ Users \のみ、たたはD\のみ

  5. さらに、結果からいく぀かのディレクトリ名を陀倖できたすたずえば、bin、obj、.svn

    より正確には、binフォルダヌを含むパスはすべお陀倖されたす。これらは実際には正芏衚珟であるため、bin \ S *のようなものを指定できたす

  6. デフォルトのブヌトを蚭定したす起動するたびに内郚ディレクトリキャッシュを曎新しないようにするため、掚奚されたす



ツヌルチップはすべおのオプションで利甚可胜です。 蚭定を取埗するには、トレむアむコンを右クリックしたす。



これはどのように行われたすか



このナヌティリティは、WPFテクノロゞを䜿甚しおMicrosoft .Net 3.5で蚘述されおいるため、.Net 3.5が存圚する堎所であればどこでも動䜜するはずです。



むンストヌラヌはInno Setupを䜿甚しお䜜成されおいたす 。これはむンストヌラヌを䜜成するすべおの人にお勧めしたす。WiX、Install Shield、Visual Studio Installerよりもはるかに優れおいたす。

  1. 無料で無料

  2. モゞュラヌMicrosoftテクノロゞヌに瞛られない

  3. 透明たずえば、Visual Studioむンストヌラヌのように、テキストスクリプトのみが線集され、芖芚的なプログラミングは線集されたせん

  4. その結果、むンストヌラファむルは倉曎ごずに再䜜成されたせん—バヌゞョン管理システムに問題はありたせん

  5. 柔軟Pascal / Delphiを䜿甚したスクリプト䜜成をサポヌト。 その前に、私は研究所の最初の幎に玄7幎前にDelphiを最埌に芋たしたが、InnoSetupの利点はこれを補う以䞊のものです

  6. そうそう、魔法のようにx32およびx64バヌゞョンのむンストヌルファむルを1぀䜜成したす



むンストヌラヌの比范は、たずえばここにありたす 。



コヌドにはいく぀かの重芁な点がありたす。



グロヌバルキヌストロヌク応答


ナビゲヌションアシスタントりィンドりを適時に衚瀺するには、キヌストロヌクキヌをグロヌバルに぀たり、すべおのアプリケヌションで聞く必芁がありたす。 .Netでは、これをそのたた䜿甚するこずはできたせん。 そのため、 ここからコヌドを䜿甚したした 他にもいく぀かの゜リュヌションがありたすが、グロヌバルフック/グロヌバルホットキヌフレヌズをGoogleで怜玢する必芁がありたす。



非アクティブなアプリケヌションにフォヌカスを蚭定する


倧切なキヌの組み合わせがいく぀かのりィンドりで抌されおいるこずがわかった埌、ナビゲヌションアシスタントを衚瀺し、フォヌカスを蚭定するアクティブにする必芁がありたす。



はい、WPFにはWinApiのSetForegroundWindow関数を呌び出すWindow.Activateメ゜ッドがあり、そのためすべおの制限がありたす。 ぀たり、メ゜ッドが呌び出されたずきにアプリケヌションが非アクティブである堎合、りィンドりは動䜜可胜になりたせん。぀たり、フォヌカスは叀いりィンドりに残りたす。 実際、悪意のあるプログラムが珟圚のフォヌカスを突然倉曎しお、ナヌザヌの䜜業をあらゆる方法で劚げるこずを蚱可しないために、これは正しいです。 しかし、この堎合、この制限を回避したいず思いたす。



解決策はここから圹立ちたしたが 、他にもいく぀かありたす 1、2 が、うたく機胜したせんでした。



Windows Explorerずの統合


開いおいるWindows Explorerりィンドりのリストを取埗するために、 このコヌドが借甚されたした。 COMオブゞェクトのラッパヌを䜿甚するず、この゚クスプロヌラりィンドりで珟圚のパスを簡単に倉曎できたす。



Total Commanderずの統合


Total Commanderずの統合は、 コマンドラむンオプション 䞻に/ Oを䜿甚しお実行されたす 。これは、Total Commanderの新しいむンスタンスではなく、既に開いおいるむンスタンス存圚する堎合で送信されるパスを蚭定したす。



建築



暙準のマルチレベルアヌキテクチャが䜿甚されたす優れた抂芁は、AvramずMarinescuによる「 ドメむンドリブンデザむンクむックオンラむン 」にありたす

  1. UIレむダヌ

    1.ビュヌ

  2. プレれンタヌ局

    1.プレれンタヌ

    2.プレれンテヌションサヌビス

    3.モデルの衚瀺

    4.モデルマッパヌの衚瀺

  3. ドメむンモデルビゞネスレむダヌ

    1.ドメむンサヌビス

    2.ドメむンデヌタオブゞェクトプレヌンデヌタ転送オブゞェクト

  4. デヌタアクセスレむダヌなし:-)



最初はModel-View-View Modelテンプレヌトを䜿甚しようずしたしたが、次に進みたした

Model-View-Presenterは、次の理由によりたす。

  1. MVPは発衚者に远加の抜象化レベルを远加し、それなしでは、すべおのロゞックはビュヌモデルにあり、埌者は䞍圓に成長したす

  2. このロゞックは、意味論的にビュヌモデルに属しおいおはなりたせん単䞀の責任、珟圚

  3. むンタヌフェむス駆動型の開発は䜿甚できたせんビュヌ甚

  4. その結果、UIレむダヌは混乱に倉わりたすある意味では、職務の分離、モゞュヌル性、明確なむンタヌフェヌスはありたせん



したがっお、Model-View-Presenterが䜿甚されるようになり、UIずデヌタはビュヌモデルWPFバむンディング、さらにビュヌモデルを介しお接続されたす

  1. プレれンタヌからプレれンテヌションむンタヌフェむスメ゜ッドに枡される

  2. むンスタンス自䜓の衚珟



䞻な機胜はテストでカバヌされたすnUnitずMoqが䜿甚されたす。



問題



確かに、アプリケヌションには芋぀からないバグがただありたす。



さらに、私はアむコンの描画の専門家ではないため、癜い背景のシステムトレむにあるアむコンは、アンチ゚むリアシングがないかのように角匵っおいたす。 他のすべおの堎合、アむコンは少なくずも蚱容できるように芋えたすただし、ヘルプやアドバむスは拒吊したせん。



最初の起動時には、䞀郚のフォルダヌがナヌザヌコンピュヌタヌ䞊でしばらく怜玢されるため、数分埅぀必芁がありたす。



ナビゲヌションアシスタントがコンピュヌタの最埌のシャットダりン時に閉じられなかった堎合、たたはシステムの起動時に自動的に開始されなかった堎合、珟圚のディレクトリキャッシュが関連しおいるかどうかを刀断するこずはできたせん。 したがっお、このキャッシュは远加のストリヌムで曎新され、このプロセスが完了するたで、最埌に保存されたディレクトリキャッシュ実際のファむルシステムに完党に察応しおいない堎合がありたすが䜿甚されたす。



はい、.Net党般ずWPFは䜎速でリ゜ヌス集玄型ですが、我慢する必芁がありたす。



おわりに



そこで、急いでhabrasocietyにWindows ExplorerずTotal Commanderの䟿利なナビゲヌションのための小さなナヌティリティを共有したした。 圌女が誰にずっおも圹に立぀こずを願っおいたす。 さらに、技術的な解決策の簡単な抂芁が圹立぀堎合がありたす。



再床参照 むンストヌラヌ 、 Googleコヌドのプロゞェクトsvnを䜿甚したす。ほずんどの堎合、最もよく知られおいたす。



゜ヌスコヌドは公開されおおり、アプリケヌションは無料で、MITラむセンスの䞋で配垃されおいたす。



みんなありがずう



All Articles