void CMySMSDlg:: QQSendMessage()
{
CString str;
CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
HWND hWnd,hNext;
hWnd = pMainWnd->m_hWnd;
pMainWnd->GetWindowText(str);
if(str.Find ("聊天")>-1){//找到聊天主窗口Begin
//找RichEdit
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"#32770",NULL);
pMainWnd = CWnd::FromHandle(hWnd);
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL); //Unhandled exception in QQSMS.exe: 0xC0000005: Access Violation
CWnd* pChildWnd=CWnd::FromHandle(hWnd);
int nLen = str.GetLength ();
hNext = FindWindowEx(pChildWnd->m_hWnd,NULL,"RICHEDIT",NULL);
if(hNext){//找到消息填写控件
CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));
pRich->GetWindowText (str);
pRich->SetSel (nLen,nLen);
pRich->ReplaceSel ("成都外国语学校");//填上将要发送的内容
}else return;
//找消息发送按钮
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,NULL,NULL);
while (hWnd) {
pChildWnd=CWnd::FromHandle(hWnd);
pChildWnd->GetWindowText(str);
if(str.Find ("发送")>-1){
pChildWnd->SendMessage (BM_CLICK);//发送
return;// 退出
}
hWnd=FindWindowEx(pMainWnd->m_hWnd,hWnd,NULL,NULL);
}
return;
}//找到聊天主窗口End
else pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); //继续找
}//While
}run 到:
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL);
就停了
---------------------------
Microsoft Visual C++
---------------------------
Unhandled exception in QQSMS.exe: 0xC0000005: Access Violation.
---------------------------
确定
---------------------------请问该如何解决?
{
CString str;
CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST);
while (pMainWnd)
{
HWND hWnd,hNext;
hWnd = pMainWnd->m_hWnd;
pMainWnd->GetWindowText(str);
if(str.Find ("聊天")>-1){//找到聊天主窗口Begin
//找RichEdit
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"#32770",NULL);
pMainWnd = CWnd::FromHandle(hWnd);
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL); //Unhandled exception in QQSMS.exe: 0xC0000005: Access Violation
CWnd* pChildWnd=CWnd::FromHandle(hWnd);
int nLen = str.GetLength ();
hNext = FindWindowEx(pChildWnd->m_hWnd,NULL,"RICHEDIT",NULL);
if(hNext){//找到消息填写控件
CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));
pRich->GetWindowText (str);
pRich->SetSel (nLen,nLen);
pRich->ReplaceSel ("成都外国语学校");//填上将要发送的内容
}else return;
//找消息发送按钮
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,NULL,NULL);
while (hWnd) {
pChildWnd=CWnd::FromHandle(hWnd);
pChildWnd->GetWindowText(str);
if(str.Find ("发送")>-1){
pChildWnd->SendMessage (BM_CLICK);//发送
return;// 退出
}
hWnd=FindWindowEx(pMainWnd->m_hWnd,hWnd,NULL,NULL);
}
return;
}//找到聊天主窗口End
else pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); //继续找
}//While
}run 到:
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL);
就停了
---------------------------
Microsoft Visual C++
---------------------------
Unhandled exception in QQSMS.exe: 0xC0000005: Access Violation.
---------------------------
确定
---------------------------请问该如何解决?
的返回值是?
hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL); //Unhandled exception in QQSMS.exe: 0xC0000005: Access Violation你都等到了hWnd,为什么还要CWnd::FromHandle(hWnd); 下面的hWnd=FindWindowEx(pMainWnd->m_hWnd,NULL,"AfxWnd42",NULL); 里又用pMainWnd->m_hWnd??
这一句上面的代码有问题。
pMainWnd不包含一个#32770类的子窗口。