获取窗口标题

一个关于获得窗口标题的问题, 不过只是针对部分窗口出现错误, 望高手指教. 

我使用方法1: 
ZeroMemory(szWndTitle, sizeof(szWndTitle)); 
GetWindowText(hWnd, szWndTitle, sizeof(TCHAR)*MAX_PATH); 
或SendMessage(hWnd, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)szWndTitle); 


打开有些窗口后,再调用本函数发现会卡在此处GetWindowText(), 不直不会向下运行. 

使用方法2: 
ZeroMemory(szWndTitle, sizeof(szWndTitle)); 
LONG lWindowLong = GetWindowLong(hWnd,GWLP_WNDPROC); 
CallWindowProc((WNDPROC)lWindowLong,hWnd,WM_GETTEXT,(WPARAM)sizeof(TCHAR)*MAX_PATH,(LPARAM)szWndTitle); 


打开有些窗口后,再调用本函数CallWindowProc(), 发现会出现微软提供的BUG "C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\wincore.cpp"第442行出现错误, 查看则是RemoveProp(hWnd, _afxOldWndProc); . 

使用方法3(根据方法2微软提供的BUG进行修正): 
WNDPROC oldWndProc = (WNDPROC)::GetProp(hWnd, _T("AfxOldWndProc423")); 
CallWindowProc(oldWndProc, hWnd, WM_GETTEXT, (WPARAM)sizeof(TCHAR)*MAX_PATH,(LPARAM)szWndTitle); 
SetWindowLong(hWnd, GWLP_WNDPROC, reinterpret_cast <INT_PTR>(oldWndProc)); 
RemoveProp(hWnd, _T("AfxOldWndProc423")); 
GlobalDeleteAtom(GlobalFindAtom(_T("AfxOldWndProc423"))); 

//if(wcslen(szWndTitle) <= 0) 
//{ 
// SetWindowLong(hWnd, GWLP_WNDPROC, reinterpret_cast <INT_PTR>(WindowLong)); 
// GetWindowText(hWnd, szWndTitle, sizeof(TCHAR)*MAX_PATH);     //使用此段时会卡住. 不使用此段时不会获得窗口标题. 
//} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值