
FindWindow接收两个参数,第一个是窗口的类名,第二个就是窗口的标题。
类名和标题都可以通过VS自带的工具Spy++获取到。
他返回的就是一个窗口的句柄,HWND类型。
MFC中封装了此方法,可以直接调用。
第一个问题:
方法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将数据读出来显示到接收的窗口中,在另一个窗口中改变这个全局变量,这种方式最简单快捷
关键的步骤就是获取实际窗口指针(句柄)。
不同程序和模式获取方式不同,一般可以通过参数传递、AfxGetMainWnd等MFC函数获取、全局变量、共享内存等方式获取,第一种最简单,其它的各有要求。
获取指针后GetSafeHandle可以获取句柄,然后SendMessage即可。
思路有问题,应该如下做(只限于有标题栏的窗口)
1找到窗口,通过标题,如下:
HWND
myHwnd;
/////////找到窗口的HDR
myHwnd=::FindWindow(
NULL,/
class
name/
"窗口名称"
//LPCTSTR
lpWindowName
//
window
name
);
if(myHwnd==NULL)
//"Cannot
Find");
2
//找到窗口的位置及大小
::GetWindowRect(
myHwnd,
//
handle
to
window
mRect
//
client
coordinates
);
3获得屏幕句柄
HDC
hdc
=
::GetDC(NULL);
4通过mRect
和hdc
对界面进行 *** 作
以上就是关于VC++中怎样获取到一个窗体的句柄全部的内容,包括:VC++中怎样获取到一个窗体的句柄、在线等答案,VC 获取一个窗口句柄、VC如何在线程中定义或得到主窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)