大侠帮忙:已知一个窗体句柄和按钮类型及其相关信息,怎样通过消息或事件来运行这个按钮?
本人测试如下,发现失败,望高手来解决:
HWND hMicapsWnd = FindWindow("TMainForm","测试");
bool ret;
char buf[255];
if(hMicapsWnd!=NULL)
{
HWND hBtn= FindWindowEx(hMicapsWnd, NULL,"TkktFlatButton","开始(&S)");
if(hBtn!=NULL)
{
SendMessage(hBtn,WM_GETTEXT ,255,(LPARAM)(LPCTSTR)buf);
MessageBox(NULL,buf,buf,MB_OK); //正确
ret=SendMessage(hBtn,BM_CLICK,0 ,0);//失败
}
// CloseHandle(hMicapsWnd);
// CloseHandle(hBtn);
}
如果按钮是Butten或TBiten等以上代码可以实现,如果是SpeedButton则不能实现,不知道怎么解决。
本人测试如下,发现失败,望高手来解决:
HWND hMicapsWnd = FindWindow("TMainForm","测试");
bool ret;
char buf[255];
if(hMicapsWnd!=NULL)
{
HWND hBtn= FindWindowEx(hMicapsWnd, NULL,"TkktFlatButton","开始(&S)");
if(hBtn!=NULL)
{
SendMessage(hBtn,WM_GETTEXT ,255,(LPARAM)(LPCTSTR)buf);
MessageBox(NULL,buf,buf,MB_OK); //正确
ret=SendMessage(hBtn,BM_CLICK,0 ,0);//失败
}
// CloseHandle(hMicapsWnd);
// CloseHandle(hBtn);
}
如果按钮是Butten或TBiten等以上代码可以实现,如果是SpeedButton则不能实现,不知道怎么解决。
解决方案 »
- 利用CSocket进行无连接通信,客户端程序老出错,找不出来,希望高手给以帮助,头文件和源文件都写出来啦,谢谢啦
- 关于vc中messagebox问题
- SDI打印预览的问题
- 求教原因,各位高手帮忙啊!
- 单文档多视图中,在一个FormView上,按CTRL+C无法复制?
- 捕获摄像头的每一帧数据
- 一个程序如何结束另一个程序呢?
- 初学者应该看哪些书呀?
- 怎样在两个程序之间用SendMessage或PostMess传送两个字符串吗?
- 用VC++的ClassWizard生成的类,如果修改一下怎么做?我遇到的问题是,开始把基类选错了想改掉但不知怎么做。
- 如何在工程里舔加其他SDK的C和H文件?
- 初学者问题:_T函数是干什么用的?
代码如下:
::SetFocus(hMicapsWnd);
PostMessage(hMicapsWnd ,WM_CHAR,'s',0);如果没有快键,那真的没有办法。
我是向其他进程发送click。
首先通过FindWindow取得windows程序的窗口句柄,
然后通过GetDlgItem取得其中输入框的窗口句柄,
最后,向该窗口句柄发送WM_CHAR消息即可显示字符
例如,对于Notepad窗口,可以以如下的方式向其中输入一个'a':
// 取得记事本的窗口句柄
HWND hWnd = ::FindWindow( NULL , "未定标题 - 记事本" );// 取得其中输入框的窗口句柄
HWND hEdit = ::GetDlgItem( hWnd , 0x0F ); // 这里0x0F是编辑框的ID,可在SPY++中观察得到
// 向输入框中填写'a'
::SendMessage( hEdit , WM_CHAR , (WPARAM)'A' , 0x00000001 );
-----
参考一下
举个例子,行吗?
可是buttonid不知道呀,是否有什么函数可以搞定?