答えて
おそらくWindows APIを使用している可能性があります。このような作業の前に私はJava Native Accessを使用しました。私はライブラリがとても便利だとわかりました。
JNAでは、共有ライブラリ(DLL)のエクスポートされた関数を使用してインターフェイスを宣言し、プロキシをそのライブラリにロードするライブラリを読み込みます。
私たちは、次のUSER32機能に興味がWinAPIの機能
:HWND WINAPI FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
BOOL WINAPI ShowWindow(HWND hWnd, int nCmdShow);
当社のプロキシインタフェースは、次のようになります。このインターフェイスは非常に低レベルのアクセスを提供するので、実際には機能をカプセル化したいと思うかもしれません。
import com.sun.jna.win32.StdCallLibrary;
interface User32 extends StdCallLibrary {
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
int FindWindowA(String className, String windowName);
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx
boolean ShowWindow(int window, int command);
}
関数名は、API関数の名前正確と一致しなければならないことに注意してください。 Javaスタイルのメソッド名(PascalCaseの代わりにcamelCase)を使用する場合は、変更を行うカスタム関数マッパーが必要です(definition)
ウィンドウを検索して表示するには)それが動作しない場合は、WindowsのAPIドキュメントはあなたを助けるでしょう、これをテストした:ウィンドウ名も正確に一致しなければならないということ
import com.sun.jna.Native;
public class Program {
private static final int SW_RESTORE = 9;
public static void main(String[] args) {
User32 user32 = Native.loadLibrary("User32.dll", User32.class);
int window = user32.FindWindowA(null, "Google Chrome");
boolean success = user32.ShowWindow(window, SW_RESTORE);
if (success) {
System.out.println("Success");
} else {
System.out.println("Fail: " + Native.getLastError());
}
}
}
注意を、それ以外の場合はwindow
は0(NULL)になると、次の呼び出しは失敗します。 。 SW_RESTOREが単独で動作するのか、別のフラグが必要なのかもわかりません。
興味のあるものを見つけるためにすべてのプロセスを列挙したい場合は、lacuna
projectからいくつかの例を調べることができます。windows/WindowsPidEnumerator.javaとwindows/WindowsNativeProcessCollector.javaファイルは有用かもしれません。しかし、警告の言葉で、これはコースプロジェクトであり、嫌なことに抽象化の層がたくさんあります。
正しいかどうかわかりませんが、私が試したことは次のとおりです。https://pastebin.com/8Gw1qHAp @cubrr –
@EugenValentinインターフェイス内で必要なのはwinapiメソッドだけです。それは期待どおりに機能しましたか?そうでない場合、代わりに何が起こったのですか? – cubrr
は実際には期待どおりに動作していませんでした。エラーが発生しました:@cubrr –
- 1. 最大化WPF RibbonWindowはWindowsタスクバーを非表示にします
- 2. windows:タイトルバーをダブルクリックすると最大化ウィンドウを無効にし、タスクバーをクリックすると最小化する
- 3. タスクバーの開いているアプリケーションウィンドウを最大化し、pythonを使って最小化するには?
- 4. 最大化のJFrameは、Java
- 5. JavaでJInternalFrameを最大化する
- 6. マルチスクリーン環境でタスクバーを非表示/ブロックせずにウィンドウを最大化する
- 7. ウィンドウから最小化/最大化ボタンを削除する、OpenTK
- 8. WPFウィンドウのスタイル=なしアプリケーションの初期化後に最大化するとタスクバーをカバーする
- 9. 電子:最大化されたブラウザウィンドウがウィンドウのタスクバーと重複します
- 10. 最大サイズのJava配列のインスタンス化
- 11. Javaアプリケーション(バニラデータ処理)パフォーマンスの最大化
- 12. VB.NETウィンドウをタスクバーに最小化するには?
- 13. 64ビットWindows10でJavaプロセスあたりの最大メモリ量は?
- 14. 最大化を実行している間にフォアグラウンドでWindowsタスクバーを表示する方法は?
- 15. タスクバーからアプリケーションアイコンを隠す
- 16. Java 8ストリームから最大頻度のオブジェクトを取得する
- 17. JFrameをJAVAで最大化するには?
- 18. コマンドラインからウィンドウを最大化する(Keepassx2)
- 19. WPFウィンドウを最大限に最大化
- 20. サブウィンドウを最大に最大化するためのマップ
- 21. 株式の利益を最大化する(最大サブアレイ)
- 22. JavaからCygwinプロセスを開始する
- 23. Java:配列のスライスから最大のインデックスを見つける
- 24. Javaアプリケーションから大量のバッチインサートをMySQLに最適化するにはどうすればよいですか?
- 25. フォームのAutoScrollMinSizeグリッチ最小化/最大化
- 26. JInternalFrameの最大化と最小化
- 27. Windowsフォームアプリケーションの最小化と最大化
- 28. UITableViewCellアニメーションの最小化と最大化
- 29. ウィンドウの最大化/最小化を無効にする
- 30. 最大から最大までのマージ
この*実行中のプログラムは、起動したいのですか、それとも他の任意のプログラムですか? Windowsや他のOSを独占的にターゲットにしていますか? – cubrr
@cubrr私はWindowsをターゲットにしています。私はすでに実行しているプロセスを起動したい。 –
もっと正確に言えば、タスクバーからゲームを開く。 –