//通过一个定时器,获取鼠标所指的窗口的句柄,如果该窗口有密码,则读取密码。
void CgetpasswordDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CPoint point;
CString m_strprompt;
CString m_static_pass;
::GetCursorPos(&point);//获取鼠标指针
CWnd* w=CWnd::WindowFromPoint(point);
char sName[60];
HWND hWnd=NULL;
if(w!=NULL) hWnd=w->GetSafeHwnd( );
if(hWnd != NULL)
{
::GetClassNameW(hWnd,(LPWSTR)sName,55);
CString str(sName);
m_strprompt="这不是密码";
if(str=="edit"::GetWindowLong(hWnd,GWL_STYLE) & ES_PASSWORD)
m_strprompt="哈哈,密码找到啦";
::SendMessage(
(HWND) hWnd, // handle to destination window
WM_GETTEXT, // message to send
(WPARAM)55, // number of characters to copy
(LPARAM) sName // text buffer
);
m_static_pass=sName;
MessageBoxW(str,0,0);//只显示一个字符
MessageBoxW((LPCTSTR)sName,0,0);//显示窗口的标题
UpdateData(FALSE);}
CDialog::OnTimer(nIDEvent);
}
运行没有成功。
CString str(sName);
sName获得了窗口标题,但str却没有。
问题一:该如何将sName的值给str呢?
问题二:程序运行时不时出现异常,不知何故。