問題タブ [shell-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
779 参照

windows - Windows Explorer Shell Extension: ファイルを作成し、「名前変更」モードに入る

シェル エクステンション (UI は "New/" コンテキスト メニューに似ています) の場合、ファイルを作成して選択し、"名前変更" モードに入って、ユーザーがデフォルト名を調整できるようにする必要があります。

Q: ファイルの「名前変更」モードに入るにはどうすればよいですか?

0 投票する
1 に答える
475 参照

windows - エクスプローラーの TIF 画像ハンドラーを置き換えるには?

いくつかの TIF/TIFF 画像形式を処理するために、Windows エクスプローラー用のサムネイル画像ハンドラー (シェル拡張) を作成しました。Explorer には既に TIFF サポート (Windows XP に付属する shimgvw.dll 拡張機能によって提供される) が含まれていることは知っていますが、それを独自のイメージ ハンドラー拡張機能に置き換えたいと考えています。

拡張機能を (ShellEx/{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1} 経由で) 登録し、shimgvw.dll を (regsvr32 /u shimgvw.dll 経由で) 登録解除すると、サムネイル ハンドラー拡張機能は機能しますが、問題が発生します: shimgvw .dll は、BMP、JPG、PNG などのいくつかの一般的な画像形式のサムネイルも処理するため、登録を解除すると、これらの形式のサポートが無効になります。

shimgvw.dll の登録を解除せずに、拡張機能を (.tif ファイルのみで) 機能させる方法はありますか? 前もって感謝します!

0 投票する
1 に答える
1109 参照

c# - ファイルの ICopyHook.CopyCallback またはその代替はありますか?

ICopyHook.CopyCallbackシェル拡張機能を使用して、フォルダーの削除、移動、作成を検出しますが、ファイル は検出しませんLink、ユーザーが C# アプリケーションからファイルを削除しているかどうかを検出する方法、またはユーザーの削除操作を処理する方法 ? 例: ユーザーが f1.txt で Shift + DEL を押すと、オペレーティング システムは "Are Yuo sure You Want to delete 'f1.txt'?" と尋ねます。ユーザーが 'yes' を押すと、C# アプリケーションは「f1.txt」を隠しフォルダ{たとえば}に透明な方法で移動する???

注:FileSystemWatcherはこのタスクを実行できないと思います..

0 投票する
1 に答える
1380 参照

c# - 親ダイアログを閉じるときに子ダイアログを閉じる

EZShellExtensions.NETを使用して C# で Windows シェル拡張機能を作成しています。

ダイアログを表示するコンテキスト メニューを提供します。

エクスプローラ ウィンドウ (A) を表示するとします。次に、コンテキスト メニューを使用して、非モーダル ウィンドウ (B) を表示します。

Windows XP と Windows Vista では、A を閉じると B が閉じられます (この動作が必要です)。ただし、Windows 7 では、A を閉じると、B は閉じられませんが、イベントに応答しません。私の質問は次のとおりです。

  • Windows 7 が表示されたフォームを子フォームとして管理する理由を知っていますか?
  • A を閉じた場合にメッセージ ループを維持する方法はありますか?

編集: A を B の所有者として設定すると、A を閉じると、B も閉じられます。しかし、それは新たな問題を生み出します。B は常に A の上にあります。

0 投票する
1 に答える
126 参照

windows - Windows エクスプローラーのボタンとしてのお気に入り?

深くネストされたフォルダーにすばやくアクセスするために、Windows エクスプローラーのお気に入りを頻繁に使用します。しかし、常にメニューの [お気に入り] ボタンをクリックして、探しているお気に入りをドロップダウンで検索しなければならないのは非常に面倒です。

特定のお気に入りをボタンとして Windows エクスプローラーに追加する方法はありますか?

XPx64を使用しています。

助けてくれてありがとう!

0 投票する
1 に答える
2461 参照

c++ - C++ シェル コンテキスト メニュー拡張

Windows ファイル/フォルダーのコンテキスト メニュー拡張機能を作成しようとしています。私はすでに非常に試しましたが、何もうまくいきませんでした。私はすでに 32 ビット システム用の拡張機能を持っていますが、時代遅れです。64 ビット システム用の C++ を使用して再作成したいと考えています。

これは私がやりたいことに最も近いものでした: Klick しかし、これは 32 ビット システム用です。コメントを読んだ後、x64用に修正してビルドすることができました。

64 ビット システムで system32/regsvr32.exe を使用して登録すると、正常に登録されたことがわかります。すべてのレジストリ エントリが正しく作成されます。しかし、メニュー項目は表示されません。理由はわかりません...

誰かが私を助けることができますか?必要に応じて、プロジェクトをアップロードできます。

アップデート

上記のリンクの元のプロジェクトを使用し、次の点を変更しました。

1) ターゲットを「x64」に設定

2)コンパイルできなかったので、次のことを変更しました。

2.1) stdafx.h にインクルードする前に、以下を追加しました:

2.2) ここで UINT を UINT_PTR に変更しました。

3) .rgs ファイルで txtfile を * に変更し、すべてのファイル タイプに表示されるようにしました。

4) コンパイルして登録できました

あなたが私を助けることができない場合は、x64 システムで動作するテンプレートをアップロードしていただければ幸いです。

0 投票する
0 に答える
639 参照

c++ - C++ シェル拡張 - 32 ビットでは登録できません

この Templateを使用して C++ Shell Context Menu Extension を作成しました。

64 ビット コンピューターでは問題なく動作しますが、32 ビット コンピューターでは登録できません。プロジェクトの変更されていない元のバージョンでさえ機能しません。

ターゲットを Win32 に設定してからコンパイルする必要があることはわかっています。

なぜ登録できないのかわかる方いますか?

エラーメッセージは次のとおりです。

モジュール「fmshell32.dll」の読み込みに失敗しました。バイナリが指定されたパスに格納されていることを確認するか、デバッグして、バイナリまたは依存する .DLL ファイルに問題がないか確認してください。指定されたモジュールが見つかりませんでした。

を使って登録してみました

32 ビットのコンピューターで試してみたところ、32 ビットの dll を使用しました。

0 投票する
0 に答える
288 参照

c# - Windows 7 エクスプローラーは、カスタム列の複数行テキストをサポートしていますか?

.NET 4.0 を使用して Windows エクスプローラー用のカスタム プロパティ ハンドラーを実装しました。複数の値を持つ列が「;」で区切られた同じ行に表示されることを除いて、すべてが機能しています。drawControl のコントロール属性を Default、MultiLineText、MultiValueText に設定しようとしましたが、うまくいきません。私が達成したいのは、「;」で区切るのではなく、各値を別々の行に入れることです。

登録した propdesc ファイルの propertyDescription は次のとおりです。

IPropertyStore インターフェイスの GetValue メソッドの実装を次に示します。

0 投票する
1 に答える
502 参照

windows - Windows エクスプローラ シェル拡張機能: ITransferSource::RemoveItem による再帰的な削除?

Windows 7 でネットワーク ファイル システム用の Windows エクスプローラ シェル拡張機能を実装していますが、削除機能の実装中に問題が発生しました。

私のリモートファイルシステム階層が次のようになっているとしましょう:

私の理解では、実装する必要がありますがITransferSource::RemoveItem(私はこれを実行しました)、最初にファイルシステム ツリーの最も遠い子から再帰的に呼び出されることを期待していました (つまり、深さ優先の再帰トラバーサル):

何が起こるかというと、最初にルートが呼び出され、次に各子が繰り返し呼び出されます。

操作の進行状況バー (「項目の検出」ダイアログ) を表示するために、シェルは削除するすべての項目を再帰的に反復処理するため、これは私にとっては少し奇妙です。私のリモート ファイル システムは、空でないディレクトリの削除をサポートしていません。私の知る限り、Windows のローカル ファイル システムにも同じ制限があります。反復順序の変更に関する MSDN のヒントは見つかりませんでした。

実際の反復順序は、ファイルシステム内のアイテムの作成順序によって異なると思います。

このインターフェイス メソッドを実装するCOPYENGINE_S_DONT_PROCESS_CHILDREN場合、自分でツリー全体を再帰して削除すると元に戻すことができますが、これではユーザーが進行中の削除をキャンセルすることはできないと思います (標準の Explorer シェルのように)。これは次善の解決策だと思いますが、より良い解決策が見つからない場合は、そうする必要があるかもしれません.

私が最初に考えたのは、空でないディレクトリの削除要求を後でキューに入れることでしたが、ディレクトリのすべての子の削除操作がいつ完了したかを拡張機能が認識できないため、これは機能しないと思います。これらのアイテムを「後で」削除するためのスレッドを生成することもできますが、その場合、原因不明の奇妙な動作やクラッシュが発生することはほぼ確実です。

それで、私の質問は、Windows 7 シェル拡張で削除操作を実装する適切な方法は何ですか?

PS: おそらくおわかりのように、Windows シェル拡張機能は私にとってまったく新しいトピックなので、質問が不完全な場合は事前にお詫び申し上げます。必要に応じて質問を絞り込みます。

ありがとう!

0 投票する
1 に答える
589 参照

c++ - C++ Windows シェル拡張 - Win7 32 ビット - 64 ビットの互換性の問題

私はビジュアル スタジオ 2005 を使用しており、Windows エクスプローラーのシェル拡張機能を作成しています。

プロジェクトをコンパイルするWindows Vista 32ビットで動作します。プロジェクトが Windows7 64 ビットでコンパイルされている場合、Windows 7 64 ビットでも動作します。

プロジェクトがWindows Vista 32ビットでコンパイルされたときに、Windows 7 32ビットでもテストしたいのですが、動作しません!

C++ バージョン間に互換性の問題はありますか?

シェル拡張 dll が登録されません。(サイド バイ サイド エラー)。

動作させるには、Windows 7 32 ビットでコンパイルする必要がありますか?

私の dll は、codeproject.com の「シェル拡張機能の記述に関する完全なばかガイド」の例に基づいています。

ありがとう !