Tortoise SVNやDropboxのように、ファイルやフォルダにオーバーレイするアイコンを実装しようとしています。Windows用のJavaでファイルアイコンのオーバーレイ
インターネットで多くの検索をしましたが、Javaで解決策を見つけることができません。
誰もがこれを手伝ってくれますか?
Tortoise SVNやDropboxのように、ファイルやフォルダにオーバーレイするアイコンを実装しようとしています。Windows用のJavaでファイルアイコンのオーバーレイ
インターネットで多くの検索をしましたが、Javaで解決策を見つけることができません。
誰もがこれを手伝ってくれますか?
恐怖を確認して申し訳ありませんが、Javaでは実行できません。
アイコンオーバーレイはプラグインの一種です。 DLL(JNIではなく実際のネイティブDLL)として実装し、Windowsレジストリに登録する必要があります。 CodeProjectの記事で見たように、DLLは特定のインターフェイス(IShellIconOverlayIdentifier
)を実装する必要があります。
例えば、TortoiseSVN implementationとします。
TortoiseSVNのDLLは、エクスプローラでロードされ、そのプロセスに添付されています
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */)
{
...
if (dwReason == DLL_PROCESS_ATTACH)
...
Javaでこれを行うためには、あなたは次のようになりJVMとあなたのJARをロードするDLLを記述する必要があります過剰な
トレイアイコンオーバーレイについては、Javaアプリケーションが制御可能なので、実行することができます。
私は同じ問題を抱え、ネイティブとjniのDLLとの組み合わせでJava 1.7+のソリューションを見つけました。 Windows Vista +、Mac、Linuxで動作します。だからここに質問に私を参照してください https://github.com/liferay/liferay-nativity
:
あなたはここにGITプロジェクトを見つけることができます Method to implement Windows Explorer icon overlays with Java
良い質問、私はJavaプログラムがで実行するようなことを行うことは不可能であると思うだろうJava仮想マシンは、それらを実行するオペレーティングシステムから切り離します。私は確信していないので答えとして投稿しない。 –
実際に変更を加えるためにネイティブコードにジャンプするためにJNIを使用する必要があります(つまり、一部のWinAPI経由でも可能です)。 – Java42
@ W.Goemanはい、それはJavaでdiffuchultまたは不可能だと思われますが、私はそれを行う簡単な方法があると思います。私は知りませんが、おそらくアイコンのライブラリがJavaなどにオーバーレイされています。 – baharcglr