问一个关于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函数没有起作用呀,想不明白,高人指点一下。。
::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是阻塞的线程。。。你看看执行到那一步了??
在同一个程序中,用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);
::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);
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
::SendMessage(hwndChild,WM_LBUTTONUP,0,-1);
执行到这里停止,还是怎么回事,不知道下面的findwindow
作者: shen_wei 发布时间: 2011-12-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28