MFC中如何获取窗口的句柄

MFC中如何获取窗口的句柄

本文目录

  • MFC中如何获取窗口的句柄
  • MFC中怎样获取指定窗口的句柄
  • Windows服务怎么获取窗口句柄
  • 求助:如何获取当前窗口句柄
  • C#获取当前窗体句柄及该窗体里的信息
  • 获取窗口句柄有什么用
  • 如何获取某个应用程序的窗体句柄
  • C++中如何获取当前窗口句柄
  • VB获取窗口句柄的详细教程

MFC中如何获取窗口的句柄


在VC的窗口类中有一成员变量:m_hWnd
,它代表这个窗口的句柄
。因此在VC中通过一些得到窗口指针的函数,然后再访问它的成员变量,应该可以得到所要的句柄。
比如用这个函数得到窗口指针,然后访问它的m_hWnd

AfxGetMainWnd(
);

MFC中怎样获取指定窗口的句柄


句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息处理程序):0。获取所在类窗口的句柄:
this-》m_hwnd
1。主窗口的句柄:
无论在主窗口类内,还是子窗口类内,获取主窗口句柄的方法:
AfxGetMainWnd()-》m_hWnd,
如:::SendMessage(AfxGetMainWnd()-》m_hWnd , WM_MY_DOSOME , 0 ,(LPARAM)i);
在窗口类中
this-》m_hWnd
或者this-》GetSafeHwnd()
2。子窗口句柄:用FindWindow,(只要知道子窗口的名字即可)如:
 ::FindWindow(NULL,WindowsName) 
返回找到的窗口的句柄
寻找当前窗口是否在运行windowname的程序,该名字为窗口名字,如:
CWnd* pWnd=FindWindow(NULL,_T(“清芝--支票机“));//
GetSafeHwnd
函数功能:获取某个窗口对象(CWnd的派生对象)指针的句柄(HWND)时,最安全的方法是使用GetSafeHwnd()函数。
通过下面的例子来看其理由:

    CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理
  HWND hwnd = pwnd-》m_hwnd; //得到它的HWND
  这样的代码当开始得到的pwnd为空的时候就会出现一个“General protection error”,并关闭应用程序,因为一般不能对一个NULL指针访问其成员,如果用下面的代码:
  CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到资源管理器
  HWND hwnd = pwnd-》GetSafeHwnd(); //得到它的HWND

  就不会出现问题,因为尽管当pwnd是NULL时,GetSafeHwnd仍然可以用,只是返回NULL
3。获取窗口中 控件的句柄,用 GetDlgItem
语法为:GetDlgItem(IDC_COMBO3)-》m_hWnd :参数为 该控件的ID,返回值为:CWnd* 类型,但它是CWnd类内的函数,因此要先获取控件所在窗口的指针,如:
CString str(_T(“dd“));
::SendMessage(AfxGetMainWnd()-》GetDlgItem(IDC_COMBO3)-》m_hWnd, WM_SETTEXT , 0 , (LPARAM)str.GetBuffer(0));
从句柄获得指针,用 FromHandle
语法:CWnd* pWnd = CWnd::FromHandle(hWnd);
获取窗口句柄(全集) vc&MFC 
获得窗口句柄:
this-》m_hwnd
HWND GetForegroundWindow(VOID);
GetSafehWnd 取你程序所在窗口类的句柄
GetActiveWindow 取当前活动窗口句柄
AfxGetMainWnd 取主窗口句柄
GetForegroundWindow 取前台窗口句柄
FindWindow
EnumWindow


Windows服务怎么获取窗口句柄


使用EnumWindows和EnumChildWindows函数以及相对的回调函数EnumWindowsProc和EnumChildWindowsProc获取所有顶层窗口以及它们的子窗口(有些窗口做了特殊处理,比如QQ是不能通过这个方法获得的)!

求助:如何获取当前窗口句柄


调用格式: 〈整数型〉 对象.取窗口句柄 () - 系统核心支持库-》窗口
英文名称:GetHWnd
取出本窗口或窗口组件的窗口句柄(即HWND)。本命令为高级对象成员命令。
操作系统需求: Windows
调用格式: 〈整数型〉 取鼠标所在窗口句柄 () - 应用接口支持库-》窗口操作
英文名称:GetHwndFromPoint
取鼠标所在窗口句柄。本命令为初级命令。
操作系统需求: Windows

C#获取当前窗体句柄及该窗体里的信息


C#获取当前窗体句柄及该窗体里的信息可以参考以下的代码:

FindWindow(

lpClassName, {窗口的类名}

lpWindowName: PChar {窗口的标题}

): HWND; {返回窗口的句柄; 失败返回 0}

//FindWindowEx 比 FindWindow 多出两个句柄参数:

FindWindowEx(

Parent: HWND; {要查找子窗口的父窗口句柄}

Child: HWND; {子窗口句柄}

ClassName: PChar; {}

WindowName: PChar {}

): HWND;

扩展资料:

句柄语句

HINSTANCE hInstance;

可以改成:

HANDLE hInstance;

上面的2条语句都是对的,表达的是一个意义.

一个WINDOWS应用程序可以用不同的方法获得一个特定项的句柄。许多API函数,诸如CreateWindow,GlobalAlloc,OpenFile的返回值都是一个句柄值。

另外,WINDOWS也能通过应用程序的引出函数将一个句柄作为参数传送给应用程序,应用程序一旦获得了一个确定项的句柄,便可在WINDOWS环境下的任何地方对这个句柄进行操作。其实句柄的大量使用已经影响到了每一个WINDOWS的程序设计。

参考资料来源:百度百科-句柄


获取窗口句柄有什么用


了解什么是句柄就好理解了
就是获得这个窗口的识别代码
句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。
有些是整个系统唯一(如窗口句柄),有些是当前进程线程中唯一
(如线程句柄,全局的有另一个标识符)。
详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。
常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),
文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),
区域句柄(HRGN)等等。
在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。
而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释
放。

如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话,
大多数会使用。
再Windows系统中,句柄(我一直觉得这个词翻译得特别别扭)分为三大类:Kernel
Handle、UserHandle和应用程序自定义的Handle。
KernelHandle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文
件、信号等。但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值
(其实应该是Obfuscator,MicrosoftBugs(R):),生成Handle后将Handle与这个值异
或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。这些
Handle和索引的对象是由KRNL32.DLL和VMM32.VXD共同管理的,所以称之为Kernel
Handle。
UserHandle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象
的开头,有一个偏移量。同样,这些对象是由USER32.DLL管理的。
第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

如何获取某个应用程序的窗体句柄


如果窗口是现有程序的,使用VS自带的spy++获取窗口的相关信息,然後使用WinAPI获取句柄,具体参考spy++的使用方法和winapi的使用
FindWindow(
lpClassName, {窗口的类名}
lpWindowName: PChar {窗口的标题}
): HWND; {返回窗口的句柄; 失败返回 0}
//FindWindowEx 比 FindWindow 多出两个句柄参数:
FindWindowEx(
Parent: HWND; {要查找子窗口的父窗口句柄}
Child: HWND; {子窗口句柄}
ClassName: PChar; {}
WindowName: PChar {}
): HWND;
如果窗口是你的程序动态生成的,使用如下语句
Form _FORM=new Form();
IntPtr _P = _FORM.Handle;
_P就是你实例化的窗口句柄

C++中如何获取当前窗口句柄


1、启动VS,新建C# WinForm项目。

2、在Form1中添加4个Label控件,并布局如下。

3、在Form1中添加代码,如下。

4、完成之后,调试运行,结果如下。

注意事项:

C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。


VB获取窗口句柄的详细教程


1、首先在电脑中打开VB软件,然后点击窗口。

2、然后找到窗体布局窗口,就可以在这里,直接拖曳鼠标,设置窗体的位置

3、如果没有默认打开,回到操作页面中,找到并点击如下图的按钮。

4、也可以找到stateUpPosition这个属性

5、然后在打开点页面中,就可以根据自己的需要,设置预设的类型了。


免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部