ITPub博客

首页 > > > C++全局钩子里添加了通过控件句柄获取控件标题的代码,在获取时程序死机

C++全局钩子里添加了通过控件句柄获取控件标题的代码,在获取时程序死机

作者:renke 时间:2019-10-21 14:49:25 0 删除 编辑

我添加了一段通过某一控件的句柄,获取应用程序中某一窗口中的该控件标题,可是当程序运行到获取标题时程序就死机了,而且貌似不能取到控件的标题,请大家帮忙看看

代码如下:

LRESULT CALLBACK ShellHookProc(int nCode,WPARAM wParam,LPARAM lParam)

{

if(nCode>=0)// Windows Created {

constintMyMaxParentWinCount =2;

// 父窗口类名数组char*A_szClassName[MyMaxParentWinCount] = {

"#32770","Button" };

// 父窗口标题数组char*A_szWinName[MyMaxParentWinCount] = {

"询问","是(&Y)" };

// 首先求得顶级父窗口HWND hLastWins =FindWindow(A_szClassName[0], A_szWinName[0]);

HWND hLastWinss = FindWindowEx(hLastWins,0,

"Static", NULL);

chartitle[200];

GetWindowText(hLastWinss, title, 200);//运行到这里死机char*t=title;

char*pattern="小于成本";

char*patter="小于最低销售价";

char*isMatch1= strstr(t,pattern);

char*isMatch2= strstr(t,patter);

if(title!=NULL)

{

if(isMatch1!=NULL||isMatch2!=NULL)

{

/*MessageBox((HWND)isMatch1,NULL,NULL,NULL);*/// 逐次用FindWindowEx函数求出各级子窗口for(inti=1; i

{

hLastWins = FindWindowEx(hLastWins,0,

"Button","是(&Y)");

}

EnableWindow(hLastWins, false);

}

}

}

return CallNextHookEx(g_hHookShell,nCode,wParam,lParam);

}

BOOL CQJHook1::SetHook()

{

g_hHookShell = SetWindowsHookEx(WH_CALLWNDPROC, ShellHookProc,glhInstance,0);

returng_hHookShell ? TRUE : FALSE;

}

BOOL CQJHook1::DestroyHook()

{

if(g_hHookShell == NULL)

{

return FALSE;

}

UnhookWindowsHookEx(g_hHookShell);

return TRUE;

}

CQJHook1::CQJHook1() //类构造函数 {

}

CQJHook1::~CQJHook1()

{

DestroyHook();

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/430/viewspace-3169367/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Java的NIO和NIO.2
请登录后发表评论 登录
全部评论

注册时间:2019-10-11

  • 博文量
    140
  • 访问量
    17926