VC++中怎样获取到一个窗体的句柄

VC++中怎样获取到一个窗体的句柄,第1张

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如何在线程中定义或得到主窗口句柄等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9645546.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存