問題タブ [icon-handler]
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.
shell-extensions - アイコン ハンドラーが Explorer をクラッシュさせる
Icon Handler に SharpShell を使用するプロジェクトがあります。アイコンを見つけて表示するために、APK 内を覗きます。私はそれを機能させていますが、いくつかの副作用があります。APK の名前を from などの別の名前に変更しようとすると、Explorer がクラッシュA.apk
しB.apk
、その理由がわかりません。
メイン セクションとロギング ビットは次のとおりです。
私の APK コードは実行aapt d badging "path.apk"
され、出力を解析してアイコン情報を取得し、GetIcon は APK を zip として開き、そのファイルを取得します。すべてを try/catch でラップし、SharpShell の LogError メソッドに結び付けましたが、何も出力されません。UACを無効にしました。APKLog.txt は表示されますが、有用な情報がないため、ドライブのルートへの書き込みにアクセス許可の問題はないと思います。
「Windows エクスプローラーが動作を停止しました」というウィンドウが表示され、この情報が「問題の署名」としてリストされます。
私はそれが言っているのを見ますSystem.AccessViolationException
が、私のコードのどれもそれをキャッチしていません。誰かがここで何が起こっているのかについて少し洞察を提供できますか?
c++ - Windows XP でシステムを再起動すると、登録されているアイコン ハンドラー シェル拡張 dll が explorer.exe によって読み込まれない
masters: アイコン ハンドラー シェル拡張機能を登録して、dll を explorer.exe に挿入し、指定された拡張子名のファイルをデスクトップに配置しようとしています。Win7 では正常に動作しますが、Windows XP ではうまく動作しません。現象は次のとおりです。
- 初めて拡張機能を登録すると、dll が正常に挿入されます。
- システムを再起動すると、dll が explorer.exe によって読み込まれません。しかし、拡張子名で新しいファイルを作成すると、ロードできます。
デスクトップがファイルアイコンをキャッシュしていたので、アイコンを抽出するためにアイコンハンドラを呼び出す必要がないことが理由だと思います。デスクトップが指定されたファイルのアイコンをキャッシュしないようにするにはどうすればよいですか。
どうもありがとうございました。
以下は私のコードの一部です: // CShellIcon
c++ - win32 SDKを使用してWindowsデスクトップウィンドウでアイテムをカスタム描画する方法
Windowsデスクトップウィンドウにファイルがあります。通常のアイコンとテキストの代わりにカスタム描画したい。次の手順でほぼ実装します。1. IExtractIcon インターフェイスが実装されている dll を作成し、ファイルのアイコン ハンドラー シェル拡張を登録して、explorer.exe によって読み込まれる dll を作成します。2. dll の dllmain 関数で、デスクトップ ウィンドウをサブクラス化し、カスタム ドローイングを作成します。
これはほとんど機能しましたが、まだいくつかの問題があります。 1. winxp で、dll が 1 回だけロードされました。PCを再起動した後、同じ拡張子を持つ別のファイルを作成した場合を除いて、dllはロードされませんでした. その理由は、デスクトップがアイコンをキャッシュしているため、アイコンを抽出するために dll をロードする必要がないためだと思います。しかし、なぜwin7が機能するのですか。システムが常にdllをロードするようにするにはどうすればよいですか?
- ファイルシステムでは常に拡張子が付いていますが、デスクトップで表示すると拡張子が表示されない場合があります。デスクトップのリスト ビュー アイテムに従って、ファイルの完全な名前を取得するにはどうすればよいですか?
または、explorer.exeにdllを自動的にロードさせる他の方法はありますか?
IExtractIcon コードは次のとおりです。
windows - アイコン ハンドラーに黒いアイコンが表示される
Sharpshell を使用して、pdf および xlsx アイコンを変更しています。ほとんどの場合は問題なく動作しますが、黒いアイコンが表示されることがあります。エクスプローラーを更新または再起動しても、影響はありません。
さらに、特定のアイコン ビューでは正常に動作します。たとえば、詳細、コンテンツでは正常に動作しますが、中型アイコンやタイルでは正常に動作しません。また、アイコンはサーバー マネージャー ツールで正常に機能します。
もう 1 つ、黒いアイコンのファイルの名前を変更すると、正しいアイコンがすぐに表示されます。
これはコードです:
これはよりシンプルなバージョンです。私は何百ものアイコンに取り組んでいます。誰か提案はありますか?
編集:アイコンがランダムに割り当てられていることがわかりました。アイコン キャッシュをクリアすると、ランダムなアイコンが表示されます。何もない場合もあるので、真っ黒か真っ白になります。サーバーマネージャーツールでも同じことが起こっています。助けてください!
python - _com_interfaces_ は何をしますか?
私はpywin32のCOM サーバーの例を理解しようとしていwin32comext/shell/demos/servers/icon_handler.py
ます。
とインターフェースIconHandler
を実装する必要があることを明確に示していますが、が実際に使用されているドキュメントは見つかりません。またはのどこにも見られないため、登録もサーバー呼び出しも実際にはこれを使用していないようです。に関するドキュメントはありますか?IExtractIcon
IPersistFile
_com_interfaces_
win32com.server.register
win32com.server.localserver.py
_com_interfaces_