2016-06-24 2 views
-3

Windowsシステムで現在開いているウィンドウと何らかの形でやり取りする方法があるのだろうかと思います。私はつまり、そのプロパティの一部を得ることに興味を持っています:Windowsとプログラムで対話する

  • 場所
  • 寸法
  • がバックグラウンドで動作していますか?
  • おそらくウィンドウタイトル

好ましくは、私はJavaでそれを行うしたいと思いますが、任意の提案を歓迎します。

+1

参照:[1](http://stackoverflow.com/questions/ 6091531/how-to-get-the-x-and-a-a-program-window-in-java)[2](http://stackoverflow.com/questions/11067484/get-titles-of-非Java-Windows-in-Java)[3](http://stackoverflow.com/questions/31312793/why-does-my-call-to-winapi-getwindowplacement-fail-using-jna) – theB

答えて

1

A comment Javaのための良いリソースにリンクされています。 C++でネイティブにしたい場合に備えて、関連するWindows APIを実行します。

システム内のすべてのトップレベルウィンドウを列挙するには、EnumWindowsを使用します。 EnumWindowsProcのシグネチャを持つコールバック関数を与えるので、各ウィンドウハンドルを最初のパラメータとして受け取ります。

GetWindowRect機能を使用して、ウィンドウの位置(画面座標)と寸法を取得できます。受け取ったウィンドウハンドルを渡し、LPRECTRECTへのポインタ)を出します。

ウィンドウが最大化されているかどうかを確認するには、GetWindowPlacementを使用し、受け取ったWINDOWPLACEMENT構造のshowCmdフィールドを確認します。

最後に、ウィンドウのキャプションを取得するには、GetWindowTextを使用します。 (別として、別のプロセスでコントロールのテキストを取得する場合は、自分でWM_GETTEXTメッセージを送信する必要があります)。

関連する問題