像联合证券行情查看这类软件,在主界面,接受键盘输入,只要在主界面输入股票代码就可切换,可我用如下代码就是不成功,不知出了什么问题,请高手指点。
像别的Edit窗口,我这代码会成功的。 CWnd *pWnd = NULL;
pWnd = FindWindow("TdxW_MainFrame_Class",0);
if(pWnd == NULL)
return;
pWnd->SetWindowPos(this,-1,-1,0,0,SWP_NOSIZE||SWP_NOMOVE);
pWnd->SetActiveWindow();
char cKey;
char cBuf[7] = "600001";
for(int i=0;i<6;i++)
{
cKey = cBuf[i];
pWnd->SendMessage(WM_CHAR, (WPARAM)cKey, 0);
Sleep(100);
}
像别的Edit窗口,我这代码会成功的。 CWnd *pWnd = NULL;
pWnd = FindWindow("TdxW_MainFrame_Class",0);
if(pWnd == NULL)
return;
pWnd->SetWindowPos(this,-1,-1,0,0,SWP_NOSIZE||SWP_NOMOVE);
pWnd->SetActiveWindow();
char cKey;
char cBuf[7] = "600001";
for(int i=0;i<6;i++)
{
cKey = cBuf[i];
pWnd->SendMessage(WM_CHAR, (WPARAM)cKey, 0);
Sleep(100);
}
不过我现在发现这是个MDI程序
我现获得的只是主窗口的句柄,不知是不是就可以了?
不过我现在发现这是个MDI程序
我现获得的只是主窗口的句柄,不知是不是就可以了?
//////////////////////////////////////////////////
不可以,要找到接收输入的窗口句柄。
现在MDI的一个活动子窗口,Text="`",Class="Afx:400000:300b",我用FindWindowEx就是找不到它,我想把它作为输入窗口试试,不知有没办法获取MDI下子窗口的句柄,谢谢兄弟们了
在回调函数中,用::GetWindowInfo(HWND);获得窗口信息,
再判断如果窗口注册类为EDIT,就发送消息。
BOOL CALLBACK EnumChildProc(HWND hwndChild,LPARAM lParam)
{
char cKey;
char cBuf[7] = "600001";
for(int i=0;i<6;i++)
{
cKey = cBuf[i];
SendMessage(hwndChild,WM_CHAR, (WPARAM)cKey,0);
}
return TRUE;
}
可能是你发送消息的方式不对,或者它真的在主窗口的激活那里做了什么手脚SetForegroundWindows后,用SendInput试试
我现找了个驱动改改,就成功了,谢谢各位,呵