※ ChatGPTを利用し、要約された質問です(原文:win32 GetWindowLong)
win32 GetWindowLongでウインドウハンドルを取得する方法
2009/11/13 20:41
このQ&Aのポイント
GetWindowLongで別のプログラムのウインドウハンドルを取得してウィンドウプロシージャのアドレスを調べようと思ったのですが取得できません。
他のウィンドウのウィンドウプロシージャのアドレスは取得できないのでしょうか?
使用する関数はGetWindowLongで、指定したウインドウの長整数型の情報を返します。
GetWindowLongで別のプログラムのウインドウハンドルを取得してウィンドウプロシージャのアドレスを調べようと思ったのですが取得できません。他のウィンドウのウィンドウプロシージャのアドレスは取得できないのでしょうか?
------------------------------------------
#include <stdio.h>
#include <string.h>
#include <windows.h>
struct cell{
HWND hWnd;
char WindowName[256];
};
BOOL CALLBACK EnumWndProc( HWND hWnd, LPARAM lParam )
{
char buff[256]="";
GetWindowText( hWnd,buff, sizeof(buff));//ウインドウの文字を取得して、
if(strcmp(buff,((cell*)lParam)->WindowName)==0){//名前が一致したら、
((cell*)lParam)->hWnd = hWnd;//ウィンドウハンドルを渡す
}
return true;
}
int main(int argc, char* argv[])
{
cell c;
c.hWnd =NULL;
strcpy(c.WindowName,"無題 - メモ帳");//検索するウィンドウの名前
EnumWindows( EnumWndProc, (LPARAM)&c);
LONG wndproc, exstyle;
if(c.hWnd != NULL){
//目的のウインドウハンドルが取得できました
wndproc = GetWindowLong(c.hWnd, GWL_WNDPROC); //メモ帳のウィンドウプロシージャが取得できない
exstyle = GetWindowLong(c.hWnd, GWL_EXSTYLE);
}
return 0;
}
質問の原文を閉じる
質問の原文を表示する
お礼
回答ありがとうございます。 同じプロセス空間にないとだめなんですね。 ありがとうございました。