+ -
当前位置:首页 → 问答吧 → 问一个关于sendmessage和combobox和messagebox的问题

问一个关于sendmessage和combobox和messagebox的问题

时间:2011-12-16

来源:互联网

我自己写一个程序(1.exe)向另外一个程序(aaa.exe)上面的combobox发送消息,如果只要选择就直接用SendMessage(hwndChild, CB_SETCURSEL, 9, 0);就可以正确的执行了,但是combo box下面还有分别为1、2、3编号的edit窗口对combo的值作出响应的动作,后来用了下面
::SendMessage(hwndChild,CB_SHOWDROPDOWN,1,0);
::SendMessage(hwndChild, CB_SETCURSEL, 9, 0);
::SendMessage(hwndChild,WM_LBUTTONDOWN,0,-1);
::SendMessage(hwndChild,WM_LBUTTONUP,0,-1);
四个函数就正确的为combobox设置值了,但是因为1、2edit窗口只根据combobox的值跟随设置,但是在第3个edit窗口出现值的之前会出现一个MessageBox的窗口,我要选择其中的取消,跳出messagbox之后,如果我又另外写了一个程序(2.exe)测试,在按钮事件中,加入::SendMessage(hdsun,WM_COMMAND,IDNO,0);就可以了消除messagebox了,
HWND hdsun=::FindWindowEx(hDlgWnd,NULL, _T("确认"),NULL); 
::SendMessage(hdsun,WM_COMMAND,IDNO,0);
但是我合并在一个程序(1.exe)中就不可以了。
::SendMessage(hwndChild,CB_SHOWDROPDOWN,1,0);
::SendMessage(hwndChild, CB_SETCURSEL, 9, 0);
::SendMessage(hwndChild,WM_LBUTTONDOWN,0,-1);
::SendMessage(hwndChild,WM_LBUTTONUP,0,-1); 
HWND hdsun=::FindWindowEx(NULL, _T("确认")); 
::SendMessage(hdsun,WM_COMMAND,IDNO,0);
-----------------------
跳出messagebox后,我的程序(1.exe)处于等待状态,只有自己点击messagebox上面的取消后,(aaa.exe)上面的第3个edit才执行,但是为什么Findwindow和后面的sendmessage函数没有起作用呀,想不明白,高人指点一下。。

作者: vc_one   发布时间: 2011-12-16

hwndChild 这个句柄你获取到了吗??

在同一个程序中,用sendmessage是阻塞的线程。。。你看看执行到那一步了??

作者: shen_wei   发布时间: 2011-12-16

hwndChild获取到了
::SendMessage(hwndChild,CB_SHOWDROPDOWN,1,0);
::SendMessage(hwndChild, CB_SETCURSEL, 9, 0);
::SendMessage(hwndChild,WM_LBUTTONDOWN,0,-1);
::SendMessage(hwndChild,WM_LBUTTONUP,0,-1);
可以正确执行了,第3个edit窗口在显示内容之前会跳出messagebox让你判断,一般情况下点击否就可以了
messagebox的标题是“确认”,所以我用findwindow,但是下面两句根本没有执行呀,
HWND hdsun=::FindWindowEx(NULL, _T("确认"));  
::SendMessage(hdsun,WM_COMMAND,IDNO,0);

作者: vc_one   发布时间: 2011-12-16

打错了应该是
HWND hdsun=::FindWindow(NULL, _T("确认"));  
::SendMessage(hdsun,WM_COMMAND,IDNO,0);

作者: vc_one   发布时间: 2011-12-16

If hwndParent is NULL, the function uses the desktop window as the parent window. The function searches among windows that are child windows of the desktop.

::SendMessage(hwndChild,WM_LBUTTONUP,0,-1);
执行到这里停止,还是怎么回事,不知道下面的findwindow

作者: shen_wei   发布时间: 2011-12-16

热门下载

更多