0

JNA を使用して user32.dll と kernel32.dll を使用しています。プロセスの を指定すると、ハンドルを取得できるサンプル コードがありtitleます。

hWnd = User32.FindWindowA(null, "Call of Duty®: Modern Warfare® 3 Multiplayer");  

でプロセスハンドルを検索したくありませんTitle。exe名を取る方法はありますか?このような:

hWnd = User32.FindWindowByExecutable ( "iw5mp.exe" );

そのため、このプロセスが実行されていない場合は 0 が返され、それ以外の場合はハンドルが返されます。

また、JNA を使用している場合、Eclipse は明らかに User32 または Kernel32 dll に存在するメソッドを自動提案できません。それで、あなたはそのような場合に何をしますか。考えられる方法をグーグルで検索するだけですか?

4

2 に答える 2

2

2 番目のパラメーターとして FindWindow() に渡される文字列は、プロセスのタイトルではありません。代わりに、いくつかのウィンドウのタイトルです。そして、FindWindow() によって返される値は (驚き!) プロセス ハンドルではなく、ウィンドウのハンドルです。

検索するウィンドウのタイトルが変わる可能性がある場合は、クラス名 (FindWindow の最初の引数) でウィンドウを検索し、2 番目の引数を null のままにすることをお勧めします。

Windows アプリケーション ウィンドウのクラスは、Microsoft Spy++ または同様のソフトウェアによって決定される場合があります。

于 2012-04-08T13:15:20.277 に答える