当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

FindWindow获取窗口句柄等方法的介绍

这篇文章内容是关于使用上一篇文章中介绍的Spy工具,没有印象的人可以看一眼以前的回忆。(伯纳德肖,美国电视剧)。

话不多说,直奔主题,介绍一下之前文章中使用到的u是Windows用户界面相关应用程序接口中的方法。

FindWindow获取窗口的句柄

[DllImport("u",SetLastError = true)]

privatestaticexternIntPtr FindWindow(string lpClassName, string lpWindowName);

参数:lpClassName窗口的类名;lpWindowName窗口的标题(上一篇文章中介绍了如何获取,不在赘述)

[DllImport("u",EntryPoint = "FindWindowEx")]

privatestaticexternIntPtr FindWindowEx(IntPtrhwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

参数: hwndParent要查找子窗口的父窗口句柄;hwndChildAfter子窗口句柄;lpszClass窗口的类名;lpszWindow窗口的标题

ShowWindow设置窗口的显示状态

[DllImport("u",EntryPoint = "ShowWindow",SetLastError = true)]

staticexternint ShowWindow(IntPtr hWnd, uint nCmdShow);

参数:hWnd窗口句柄;nCmdShow窗口如何显示

具体的nCmdShow对应的值参加下表详细内容:


MoveWindow改变指定窗口的位置和大小

[DllImport("u",SetLastError = true)]

privatestaticexternbool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);

参数:hwnd窗口的句柄;x,y窗口左上角的起点;cx,cy窗口的宽度和高度;repaint是否立即重绘。为true时系统会立即发送WM_PAINT到窗口程序(会调用UpdateWindow()函数),为false时不会发生任何类型的重绘操作

SetWindowPos实现窗口的移动

[DllImport("u")]

privatestaticexternbool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint uFlags);

参数:hWnd窗口的句柄;hWndlnsertAfter窗口的Z顺序(多个窗口时本窗口显示的顺序);x,y窗口左上角的起点;cx,cy窗口的宽度和高度;uFlags选项;hWndlnsertAfter和uFlags的可选值见下面详细

hWndlnsertAfter参数可选值:

HWND_TOP = 0; {在前面}

HWND_BOTTOM = 1; {在后面}

HWND_TOPMOST = HWND(-1); {在前面, 位于任何顶部窗口的前面}

HWND_NOTOPMOST = HWND(-2);{在前面, 位于其他顶部窗口的后面}

uFlags 参数可选值:SWP_NOSIZE = 1; {忽略 cx、cy, 保持大小}SWP_NOMOVE = 2; {忽略 X、Y, 不改变位置}SWP_NOZORDER = 4; {忽略 hWndInsertAfter, 保持 Z 顺序}SWP_NOREDRAW = 8; {不重绘}SWP_NOACTIVATE = $10; {不激活}SWP_FRAMECHANGED = $20; {强制发送 WM_NCCALCSIZE 消息, 一般只是在改变大小时才发送此消息}SWP_SHOWWINDOW = $40; {显示窗口}SWP_HIDEWINDOW = $80; {隐藏窗口}SWP_NOCOPYBITS = $100; {丢弃客户区}SWP_NOOWNERZORDER = $200; {忽略 hWndInsertAfter, 不改变 Z 序列的所有者}SWP_NOSENDCHANGING = $400; {不发出 WM_WINDOWPOSCHANGING 消息}SWP_DRAWFRAME = SWP_FRAMECHANGED; {画边框}SWP_NOREPOSITION = SWP_NOOWNERZORDER;{}SWP_DEFERERASE = $2000; {防止产生 WM_SYNCPAINT 消息}SWP_ASYNCWINDOWPOS = $4000; {若调用进程不拥有窗口, 系统会向拥有窗口的线程发出需求}

MoveWindow和SetWindowPos两者都能实现移动和改变窗口大小。

MoveWindow()功能比较单一,只能移动和改变窗口大小,而SetWindowPos()可以设置更多的参数,实现Zorder及显示方式标志。MoveWindow()发送WM_WINDOWPOSCHANGING,WM_WINDOWPOSCHANGED,WM_MOVE,WM_SIZE和WM_NCCALCSIZE等消息到窗口,SetWindowPos()只发送WM_WINDOWPOSCHANGED消息到窗口。所以说如果需要发送更多消息时还是使用MoveWindow()的好。


好了,本篇文章就简要介绍到这里,下一篇文章再见...

1.《FindWindow获取窗口句柄等方法的介绍》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《FindWindow获取窗口句柄等方法的介绍》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3217067.html

上一篇

关于怎么关闭美团商家,你需要知道这些美团非合作型商家撤店 顾客支付180元被拉黑

怎么获取窗口的句柄?我来告诉你答案用python做一个游戏辅助脚本

  • 怎么获取窗口的句柄?我来告诉你答案用python做一个游戏辅助脚本
  • 怎么获取窗口的句柄?我来告诉你答案用python做一个游戏辅助脚本
  • 怎么获取窗口的句柄?我来告诉你答案用python做一个游戏辅助脚本

怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况

  • 怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况
  • 怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况
  • 怎么获取窗口的句柄?我来告诉你答案[按键精灵教程]获取子窗口句柄遇到的多种情况
关于怎么获取窗口的句柄,你需要知道这些VC|窗口对象句柄、指针、ID的获取及它们之间的转换

关于怎么获取窗口的句柄,你需要知道这些VC|窗口对象句柄、指针、ID的获取及它们之间的转换

怎么获取窗口的句柄相关介绍,SDK的WIN32 API使用句柄HANDLE操作Windows窗口,VC将HANDLE封装到CWnd类的成员变量m_hWnd中。可以通过获取该对象的m_hWnd属性来获取句柄。 同时,VC中每一个窗...