vb通过findwindow获得窗口句柄后怎样判断该窗口是否为活动窗口(具有焦点)

vb通过findwindow获得窗口句柄后怎样判断该窗口是否为活动窗口(具有焦点),第1张

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

'可以通过查看前景窗口是否为指定窗口判断

hwd1 = FindWindow("#32770", "QQ用户登录")

'获得指定窗口句柄

hwd2 = GetForegroundWindow

'获得前景窗口句柄

If hwd1 = hwd2 Then MsgBox "指定窗口为活动状态!"

'判断是否相同

'可以通过ModifyMenu修改系统菜单来禁止移动,但并不适用所有窗体,有的窗体不具有系统菜单(BorderStyle=0)

'但通过子类化仍可以实现系统菜单具有的功能,新建窗体,添加command1,复制粘贴下段代码

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long

Private Declare Function ModifyMenu Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Any) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const SC_MOVE = &HF010&

Private Const MF_BYCOMMAND = &H0&

Private Const MF_ENABLED = &H0&

Private Const MF_GRAYED = &H1&

Private Sub Command1_Click()

hwind = FindWindow("#32770", "QQ用户登录")

'获取窗体句柄

hMenu = GetSystemMenu(hwind, False)

'获取该窗体系统菜单句柄

ModifyMenu hMenu, SC_MOVE, MF_BYCOMMAND Or MF_GRAYED, -10, "禁止移动"

'设置移动菜单项不可用,并指定新ID为小于0的-10以防止系统重新加载该菜单,新标题为“禁止移动”,成功返回非0,失败0

'ModifyMenu hMenu, -10, MF_BYCOMMAND + MF_ENABLED, SC_MOVE, "移动(&M)" '恢复移动菜单

SendMessage hwind, WM_NCACTIVATE, True, 0

'发送WM_NCACTIVE消息到指定窗体刷新非客户区(标题栏)

End Sub

Form常用属性

(1)Name属性:用来获取或设置窗体的名称。

(2)WindowState属性:用来获取或设置窗体的窗口状态。

(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。

(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。

(5)Width属性:用来获取或设置窗体的宽度。

(6)Heigth属性:用来获取或设置窗体的高度。

(7)Left属性:用来获取或设置窗体的左边缘的

x

坐标(以像素为单位)。

(8)Top属性:用来获取或设置窗体的上边缘的

y

坐标(以像素为单位)。

(9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。

(10)MaximumBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。

(11)MinimizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。

(12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按

ENTER

键时就相当于单击了窗体上的该按钮。

(13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。

(14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。

(15)ActiveControl属性:用来获取或设置容器控件中的活动控件。

(16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。

(17)AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。

(18)BackColor属性:用来获取或设置窗体的背景色。

(19)BackgroundImage属性:用来获取或设置窗体的背景图像。

(20)Enabled属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。

(21)Font属性:用来获取或设置控件显示的文本的字体。

(22)ForeColor属性:用来获取或设置控件的前景色。

(23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面

(MDI)

子窗体。

(24)IsMdiContainer属性:获取或设置一个值,该值指示窗体是否为多文档界面

(MDI)

中的子窗体的容器。

(25)KeyPreview属性:该属性用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。

(26)MdiChildren属性:数组属性。

(27)MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面

(MDI)

父窗体。

(28)ShowInTaskbar属性:该属性用来获取或设置一个值,该值指示是否在

Windows

任务栏中显示窗体。

(29)Visible属性:该属性获取或设置一个值,该值指示是否显示该窗体或控件。

(30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。

以上就是关于vb通过findwindow获得窗口句柄后怎样判断该窗口是否为活动窗口(具有焦点)全部的内容,包括:vb通过findwindow获得窗口句柄后怎样判断该窗口是否为活动窗口(具有焦点)、C#中 Windows窗口常用的基本属性有哪些、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9479015.html

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

发表评论

登录后才能评论

评论列表(0条)

保存