今回は他のウィンドウハンドルを取得し、何か操作をしたいと思います。私は以前TeX用エディタを
作っていたとき、コンパイルした後にDVIビュアーをアクティブにするいう操作を今回説明する方法を使って
していました。
ウィンドウハンドルを取得する方法はいくつかありますので、とりあえず私が使ったことのある二つの方法を
紹介したいと思います。
簡単なので、命令さえ分かってしまえば説明の必要もないですね。この方法は、エディットコントロールに カットやペーストの処理をするなどメインウィンドウでないハンドルを取得するときは便利なの ですが、前述した指定アプリケーションをアクティブにすると言った操作をするときは、アプリケーションの タイトルが分かっているのに位置を1回1回入力するなんて面倒です。
#include<windows.h> #include<string.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdLine,int nCmdShow) { BOOL flag=FALSE; char moji[100]; HWND lhwnd; lhwnd=GetTopWindow(GetDesktopWindow()); while((lhwnd=GetNextWindow(lhwnd,GW_HWNDNEXT))!=NULL) { GetWindowText(lhwnd,moji,sizeof moji); if(IsWindowVisible(lhwnd) && strlen(moji)) { //この中にはタイトルがある可視状態のウィンドウが来る if(strcspn(moji,"帳") < strlen(moji))//←これまちがってます。 { flag=TRUE; SetWindowText(lhwnd,"勝手に変更して申し訳ございません"); } } } if(flag) MessageBox(NULL,"変更しちゃいました","",MB_OK); else MessageBox(NULL,"帳をタイトルに含むアプリケーションが\r\nありませんでした","",MB_OK); return 1; } |
IsWindowVisibleで可視状態かどうか調べています。
あっ!!!
今、気が付いたんだけど、一番最初に獲得したウィンドウハンドルに関してはチェックしてないぞ
でもまぁ各自変更してもらえばいいか。それでは(逃げ)