查找指定类名的子窗口

向WebBrowser控件发送消息,示例

/*
Using PostMessage/SendMessage to send keys to c# IE WebBrowser
http://www.acnenomor.com/946128p2/using-postmessagesendmessage-to-send-keys-to-c-ie-webbrowser
*/
BOOL Ccat8637_priceComparingSystemDlg::PreTranslateMessage(MSG* pMsg)
{
	static int i=0;
	if(pMsg->message == WM_KEYDOWN) {
		switch(pMsg->wParam) {
		case VK_RETURN:
			{	
				if (i%2==0)//ignore even message, because the even message is just send.
				{
					CWnd *pWnd = &m_webBrowser;
					// just get instance of webbrowsrer control
					while (pWnd = pWnd->GetWindow(GW_CHILD))
						// and find specific window between children
					{
						CString strClass;
						GetClassName(pWnd->m_hWnd, strClass.GetBuffer(64), 64);
						strClass.ReleaseBuffer();
						if (strClass == _T("Internet Explorer_Server") )
						{
							::PostMessage(pWnd->GetSafeHwnd(), WM_KEYDOWN, VK_RETURN, 0);
							::PostMessage(pWnd->GetSafeHwnd(), WM_CHAR, VK_RETURN, 0);
							::SendMessage(pWnd->GetSafeHwnd(), WM_CHAR, VK_RETURN, 0);
							::PostMessage(pWnd->GetSafeHwnd(), WM_KEYUP, VK_RETURN, 0L);
							break;
						}
					}//end while
				}//end if
				i++;
			}//end case

			return TRUE;
		case VK_ESCAPE://Disable Escape key
			return TRUE;
		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}


你可能感兴趣的:(查找指定类名的子窗口)