在线等答案,VC 获取一个窗口句柄
答案:3 悬赏:50
解决时间 2021-02-13 05:27
- 提问者网友:相思故
- 2021-02-12 08:35
在线等答案,VC 获取一个窗口句柄
最佳答案
- 二级知识专家网友:有钳、任性
- 2021-02-12 08:44
第一个问题:
方法1:
HWND hwnd=::FindWindow(0,"ddd"); //假设你要找的窗口标题为“ddd”,注意:此处为Caption的值
CWnd::FromHandle(hwnd)->SetForegroundWindow();
::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息
方法2:这里以向记事本程序发送Ctrl+s按键消息为例:
CWnd *pWnd = FindWindow("FSOnline Class", NULL);//注意:此处为Class的值
if (pWnd->GetSafeHwnd())
{
pWnd->ShowWindow(SW_NORMAL);
pWnd->SetForegroundWindow();
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('S', 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
}
第二个问题:
最好用全局变量,在接受的窗口设置一个定时器例如100ms将数据读出来显示到接收的窗口中,在另一个窗口中改变这个全局变量,这种方式最简单快捷
方法1:
HWND hwnd=::FindWindow(0,"ddd"); //假设你要找的窗口标题为“ddd”,注意:此处为Caption的值
CWnd::FromHandle(hwnd)->SetForegroundWindow();
::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息
方法2:这里以向记事本程序发送Ctrl+s按键消息为例:
CWnd *pWnd = FindWindow("FSOnline Class", NULL);//注意:此处为Class的值
if (pWnd->GetSafeHwnd())
{
pWnd->ShowWindow(SW_NORMAL);
pWnd->SetForegroundWindow();
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('S', 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
}
第二个问题:
最好用全局变量,在接受的窗口设置一个定时器例如100ms将数据读出来显示到接收的窗口中,在另一个窗口中改变这个全局变量,这种方式最简单快捷
全部回答
- 1楼网友:迷人小乖乖
- 2021-02-12 10:53
1.WindowFromPoint()之类。。。
什么叫标识ID?
2.SendMessage(),
或者直接在相应的窗口类中加个函数,在另一个里面调用。这样只要存接收窗口的this 指针。
或者FileMapping用内存文件。
或者NamePipe命名管道
等等等等。。方案很多。
- 2楼网友:风格单纯
- 2021-02-12 10:24
cwnd有个成员函数
hwnd getsafehwnd( ) const;
在对话框类的成员函数里用
hwnd hwnd = getsafehwnd();
得到的hwnd就是句柄了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |