ページ 11

別のプロセスのウィンドウのタイトルを取得

Posted: 2011年2月06日(日) 09:20
by みけCAT
Dev-Cpp4.9.9.2、gcc3.4.2です。
Windows Vista SP2 32ビットです。
コンパイルオプションは
-Werror-implicit-function-declaration -Wformat -Wshadow -mwindows
です。
他のプロセスのウィンドウのタイトルを取得したいです。
しかし、このコードでは、空欄になってしまいます。
Shiftキーを押さずに「ウィンドウを選択」ボタンを押すと、
メインウィンドウを一瞬隠してからフォアグラウンドウィンドウを取得します。
Shiftキーを押しながら「ウィンドウを選択」ボタンを押すと、
メインウィンドウの左上にあるウィンドウを取得します。
「ウィンドウを選択」ボタンの下のエディットボックスに選択したウィンドウのタイトルが表示されれば成功です。
どうすればうまくいくか教えてください。
Vistaでは無理なら、そう書き込んでください。
よろしくお願いします。

Re: 別のプロセスのウィンドウのタイトルを取得

Posted: 2011年2月06日(日) 11:06
by Cir
以下のコードで取得できました。ただ、実行環境がWindowXPなので、Vistaでは取得可能か確認できていません。

コード:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
	char TitleStr[512] = "";
	HWND hTargetWindow;

	POINT p = {0, 0};
	
	hTargetWindow = WindowFromPoint(p);
	
	if(hTargetWindow)
	{
		GetWindowText(hTargetWindow, TitleStr, sizeof(TitleStr));
		
		MessageBox(NULL, TitleStr, "", MB_OK);
	}
	
	return 0;
}

Re: 別のプロセスのウィンドウのタイトルを取得

Posted: 2011年2月06日(日) 11:42
by Ciel
私もCirさんの方法でできました。

WIndows7 32bitです。

Re: 別のプロセスのウィンドウのタイトルを取得

Posted: 2011年2月06日(日) 13:03
by みけCAT
提示していただいたコードでうまくいきました。
自分のプログラムに組み込んでもうまくいきました。
ありがとうございました。