問題タブ [shell32]

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 投票する
1 に答える
6843 参照

c# - shell32を再度参照し、C#Visual Studio

うーん。さて、PInvokeを再訪した後、私はそれを完全には理解していないと確信しています:-/(ちょうどこの質問をしました

処理する必要のあるコードを説明しましょう。「参照の追加->COM->Microsoft Shell Controls and Automatation」を使用すると機能しますが、残念ながら、「C:\ Users \ Tim \ Documents \VisualStudio」のような参照がプロジェクトに配置されます。 2008 \ Projects \ Wing \ FileWing \ obj \ Debug \ Interop.Shell32.dll "

ごみ箱を掘り起こし、回収したいアイテムを探しています。これを成し遂げるためにPInvokeを介して戦わない方法はありますか?または、実行時にこのコードを使用できるようにするsystem32 / shell32.dllへの参照を取得するには?

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

c# - ディレクトリの奇妙さのために呼び出されたShGetFileInfo

シンプルなファイル ブラウザがあり、そこにファイルとフォルダを表示します。

(ディレクトリ用)によって取得

100% 正常に動作しますが、奇妙な点に気付きました。ディレクトリのアイコンを取得しようとして、FILE_ATTRIBUTE_DIRECTORY の代わりに FILE_ATTRIBUTE_NORMAL を指定すると、ディレクトリに対して奇妙なことが行われます。通常のフォルダには「不明なファイル タイプのホワイト ペーパー」アイコンがあり、リサイクルします。 bin には VLC アイコンなどがあります。SVN の下のディレクトリには適切なオーバーレイがありますが、ベース ファイル アイコン (白い紙) があります。

ディレクトリの基本アイコンが不明なファイルのアイコンになることは理解していますが、一部のフォルダにまったく奇妙なアイコンが付いているのはなぜですか? Config.MSI にはインストーラー アイコンがあり、ごみ箱には VLC アイコン (wtf?!) などがあります。シェル関数はこのパラメーターで何をしますか? 正確にはどのアイコンを取得しますか?

繰り返しますが、これは問題ではありません。ただ興味があるだけです。

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

windows - Windows2000上のILClone

Windows 2000のILClone()関数に関する問題を知っている人はいますか?完全にサポートされていますか?MSDNによると、Windows 2000で実行できるとのことですが、その機能が原因でプログラムがWindows2000で実行されないと報告しているユーザーがいます。

編集:私はWin2Kシステムを手に入れることができました、そして私は問題を確認することができます。

インストールされているShell32.dllのバージョンは5.0.3700.6705です。プログラムの実行時に表示されるエラーメッセージは次のとおりです。プロシージャエントリポイントILCloneがダイナミックリンクライブラリSHELL32.DLLに見つかりませんでした。

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

c# - Shell32を介してパブリックショートカットを読み取るときにE_ACCESSDENIEDを取得するのはなぜですか?

C#4アプリケーションのすべてのデスクトップショートカットのターゲットを読み取ろうとしています。Windowsデスクトップのショートカットは、ショートカットがすべてのユーザー用に作成されているか、現在のユーザーのみ用に作成されているかに応じて、複数の場所から取得できます。この特定のケースでは、パブリックデスクトップからショートカットを読み取ろうとしています。たとえば、C:\ Users \ Public \ Desktop\shortcut.lnkからです。

コードは次のようになります(pathはlnkファイルへのパスを含む文字列です):

最後の行はSystem.UnauthorizedAccessExceptionをスローし、ショートカットファイルの内容を読み取ることが許可されていないことを示します。ユーザーのプライベートデスクトップ(c:\ Users \ username \ Desktop)でショートカットファイルを試してみましたが、問題なく動作します。

だから、私の質問は次のとおりです。

(1)ユーザーとしてコンテンツを明確に読み取ることができるのに、アプリケーションがコードからショートカットを/読み取り/許可されないのはなぜですか?

(2)これを回避する方法はありますか?たぶん、アプリケーション用の特別なマニフェストファイルを使用していますか?

ちなみに、私のOSはWindows 7、64ビットです。

よくなって

-h-

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

.net - 管理プロパティ ハンドラー シェル拡張機能を実装する正しい方法は何ですか?

.NET CLR 4.0 がサイド バイ サイド (SxS) 操作をサポートするようになったので、マネージ コードでシェル拡張機能を記述できるようになりました。私はこれを試み、IPropertyStore、IInitializeWithStream、および IPropertyStoreCapabilities を実装するプロパティ ハンドラーのコーディングに成功しました。

ハンドラーは正常に動作し、エクスプローラーを介してファイルを参照するときに期待どおりに呼び出されます。また、プレビュー パネルとファイル プロパティの「詳細」パネルにカスタム プロパティを表示する際にも問題なく動作します。

しかし、プレビュー パネルでプロパティを編集しようとして [保存] をクリックすると、ファイルが Windows エクスプローラーで開かれていることを示す「ファイルは使用中です」というエラーが表示されます。

いくつかのヒント:

  1. エクスプローラーが IInitializeWithStream.Initialize を呼び出すと、STGM プロパティが STGM_SHARE_DENY_WRITE に設定されます。
  2. そして、エクスプローラーが IPropertyStore.SetValue または IPropertyStore.Commit を呼び出すことはありませんでした。
  3. 同じファイル プロパティに対して、異なるスレッドでハンドラが繰り返し呼び出されています。

では、プロパティの保存を機能させるには、何を変更 (またはレジストリに設定) する必要がありますか?

アップデート:

ベンのおかげでうまくいきました。「難しい部分」(少なくとも私にとって) は、COM 相互運用が PropertyHandler で Dispose または Finalize を呼び出すことは決してないことを理解することでした。これは、GC が実行されるまで、処理したファイルを開いたままにしていました。

幸いなことに、「プロパティ ハンドラー プロトコル」は、IInitializeWithSream.Initialize() が ReadValue() に対して呼び出されると、streamMode が ReadOnly になり、SetValue() に対して呼び出されると、streamMode が ReadWrite になり、Commit() が呼び出されるように機能します。最後に。

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

delphi - ネットワーク共有上のファイルを移動するときのパフォーマンスの問題

ネットワーク共有上のファイルをコピーできるアプリケーションを書いています。通常、ファイルは同じ物理ハードドライブに移動されます。これをWindowsエクスプローラーでテストすると、この操作は非常に迅速に実行されます。Windowsは同じ場所を認識しており、実際の移動を行い、コピーと削除は行わないようです(速度は遅くなります)。

ファイルのセットをコピーしたいとします。

宛先は次のとおりです。

アプリケーションはWindowsシェルAPIを使用します(アプリケーションはDelphiで作成しましたが、問題は他の言語でも同じであるはずです)。

残念ながら、このコードは「コピーと削除」を実行しますが、大きなファイルやファイルがたくさんある場合は非常に遅くなります。どうすればこれを回避できますか?フォルダが同じハードドライブ上にあることを移動操作に伝える方法はありますか?おそらく、ネットワークパスには他の表記法があります。

または、Windowsエクスプローラーで使用される別のAPI関数はありますか?

簡単な比較のために:

  • ファイル数:260
  • 各ファイルのファイルサイズ:11 kB
  • エクスプローラーでの移動時間:2秒
  • SHFILEOPERATIONで移動する時間:20秒

開発システムでWindows7を使用していますが、XPでも動作するはずなので、新しいIFileOperationインターフェイスを使用できません。

敬具

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

.net - プログラムで.lnkを変更して、ターゲットを変更するにはどうすればよいですか?

Windowsショートカット(.lnkファイル)を開いてターゲットを変更する方法はありますか?現在のターゲットを見つけることができる次のスニペットを見つけましたが、これは読み取り専用のプロパティです。

ターゲットを変更するものが見つかりません。現在のショートカットを上書きする新しいショートカットを作成する唯一のオプションはありますか?..もしそうなら、どうすればいいですか?

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

.net - Shell32.dll .NET インターフェイスは OS に依存しています

ユーザー プログラム メニューにリストされているすべてのアプリケーションを検索したいと考えています。次のルーチンを使用します。

これは、Windows 7 x64 で非常にうまく動作します。残念ながら、Windows XP x86 では、オブジェクトはプロパティShell32.Shellを宣言しません。Shell32.Shell.Targetこのコードを Windows XP で実行するにはどうすればよいですか?

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

winapi - マウント後にエクスプローラーを更新して、マウントされたドライブをVC ++で表示するにはどうすればよいですか?

NPAddConnection3を使用してFTPドライブをマウントするためにドライバーコードを使用しています。問題は、マウントされたドライブをマウントするときに発生しますが、エクスプローラーを強制終了し、マウントされたドライブを表示するために手動で再起動する必要があります。

この問題を解決する方法は?エクスプローラーを強制終了せずに、マウントされたドライブを表示するにはどうすればよいですか?前もって感謝します。

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

.net - プロパティ ハンドラー シェル拡張

プロパティ ハンドラ シェル拡張を実装する方法を知っている人はいますか? 主に .NET の実装に興味があります。