我做的功能很简单:
就是在一个程序里对另一个程序发送一个按纽的消息,但是它就是不响应,郁闷
下面是程序:高手帮我解释一下!谢谢(ComMM.EXE的“开始”按纽为什么不动做啊)
HWND h_Main;
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main == NULL)
{
ShellExecute(NULL, "open", apppath, NULL, NULL, SW_SHOWNORMAL);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main != NULL)
{
h_AUTO = FindWindowEx(h_Main,NULL,"Button","开始");
::SendMessage(h_AUTO,BM_CLICK,0,0); //BM_CLICK 单击按纽
}
}
就是在一个程序里对另一个程序发送一个按纽的消息,但是它就是不响应,郁闷
下面是程序:高手帮我解释一下!谢谢(ComMM.EXE的“开始”按纽为什么不动做啊)
HWND h_Main;
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main == NULL)
{
ShellExecute(NULL, "open", apppath, NULL, NULL, SW_SHOWNORMAL);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main != NULL)
{
h_AUTO = FindWindowEx(h_Main,NULL,"Button","开始");
::SendMessage(h_AUTO,BM_CLICK,0,0); //BM_CLICK 单击按纽
}
}
解决方案 »
- 我在头文件写好类的声明后,有什么快捷键帮我迅速生成框架好填写代码吗?
- 程序换了个地方就不能用?
- 请球迷帮忙:用create()在View中动态创建的CButton按扭怎么添加其消息响应函数?
- 寻找图象处理的电子书
- IXMLDocmentd::createnode()问题,简单!马上给分!!
- 只要有List Control就无法显示对话框?
- Windows 7 中以管理员身份运行,拖放文件时 OnDropFiles 不能被正常调用
- 求助输出对齐问题
- CFontDlg在win7可选字体中没有Tahoma等常用西文字体?
- 请教如何给CTreeView中的Tree加一个根结点?
- 请问一个问题?谢谢
- 关于写文件的问题
即用WaitForInputIdle等,然后再FindWindow。
::SendMessage(h_AUTO,WM_LBUTTONDOWN,0,0);
::SendMessage(h_AUTO,WM_LBUTTONUP,0,0);
HWND h_Main;
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main == NULL)
{
ShellExecute(NULL, "open", apppath, NULL, NULL, SW_SHOWNORMAL);
Sleep(1000);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main != NULL)
{
h_AUTO =::GetDlgItem(h_Main,nButtonID);//nButtonID要改为"开始"按钮ID
if(h_AUTO)
{
if(::SetForegroundWindow(h_Main ))
::SendMessage(h_AUTO,BM_CLICK,0,0);
}
else AfxMessageBox("没找到开始按钮");
}
}
2.进程之间最好通过WM_COPYDATA,SendMessage对于很多少消息都不能正确跨进程(主要是用到字符串等类型的参数),Windows只对一些简单的控制(Button,Edit之类的)作了跨进程边界的处理。对于ListView,TreeCtrl之类,SendMessage可能无法达到你的目的。
SendMessage(WM_COMMAND,((WPARAM)BN_CLICKED)<<8|(WPARAM)IDC_BUTTON,0L);
::PostMessage(m_hWnd,WM_COMMAND,MAKEWPARAM(IDOK,BN_CLICKED),0);
::SendMessage(m_hWnd,WM_COMMAND,MAKEWPARAM(IDOK,BN_CLICKED),0);//知道HWND的值pwnd
::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONDOWN,0,0);
::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONUP,0,0);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main == NULL)
{
ShellExecute(NULL, "open", apppath, NULL, NULL, SW_SHOWNORMAL);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main != NULL)
{
::SendMessage(h_Main ,WM_COMMAND,0x2,0); //WM_COMMAND 命令消息
}
}
HWND h_Main;
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main == NULL)
{
ShellExecute(NULL, "open", apppath, NULL, NULL, SW_SHOWNORMAL);
Sleep(1000);
h_Main =::FindWindow(NULL,"ComMM");
if(h_Main != NULL)
{
h_AUTO =::GetDlgItem(h_Main,nButtonID);//nButtonID要改为"开始"按钮ID
if(h_AUTO)
{
if(::SetForegroundWindow(h_Main ))
::SendMessage(h_AUTO,BM_CLICK,0,0);
}
else AfxMessageBox("没找到开始按钮");
}
}