vb.net判断活动窗体 vba判断窗体1是否打开

vb.net 怎样判断某个窗体是否打开Dim F1 As New Datasystem.Form2'实例化窗体
For Each na As Form In Application.OpenForms '打开窗体的集合
If na.ProductName = F1.ProductName AndAlso na.Name = F1.Name0 Then '判断程序集的产品名称和窗体名称是否已存在打开的窗体中
If na.WindowState = FormWindowState.Minimized Then'判断窗体是否最小化
na.WindowState = FormWindowState.Normal'还原窗体
End If
na.Activate() '激活窗体
Return'返回
End If
Next
F1.Show()'如果没有打开的窗体中未找到 , 重新打开窗体
VB 怎么判断自身窗口是不是活动的?如果你能驾御API函数的话,那么推荐你使用楼上的方法 , 那是一个较为正统的方法 。如果不用API的话 , 还真就没有什么好的方法能实现,同感,咱多希望窗体对象能有一个“Active”之类的属性,当窗体活动时,它是True…呵呵 。不过你可以试试换一个角度,当窗体变成活动时会触发Active事件,变成非活动(即失去焦点)时会触发LoseFocus事件,所以你可以定义一个工程级变量(即所有窗体之间都通用的一个变量,如果不会可以追问我),定义成布尔类型的,假设变量名是Form1Active,将 Form1Active = True、Form1Active = False 这两句话分别放到Form1的Active、LoseFocus中,然后就可以在其他过程或其他窗体中通过判断Form1Active的真假来获知Form1的是否是活动的 。
以上只是思路,如果想知道具体代码的话追问我就好 。
vb通过findwindow获得窗口句柄后怎样判断该窗口是否为活动窗口(具有焦点)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修改系统菜单来禁止移动vb.net判断活动窗体,但并不适用所有窗体vb.net判断活动窗体,有vb.net判断活动窗体的窗体不具有系统菜单(BorderStyle=0)
'但通过子类化仍可以实现系统菜单具有vb.net判断活动窗体的功能,新建窗体 , 添加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为小于0vb.net判断活动窗体的-10以防止系统重新加载该菜单 , 新标题为“禁止移动”,成功返回非0,失败0
'ModifyMenu hMenu, -10, MF_BYCOMMANDMF_ENABLED, SC_MOVE, "移动(M)"'恢复移动菜单
SendMessage hwind, WM_NCACTIVATE, True, 0
'发送WM_NCACTIVE消息到指定窗体刷新非客户区(标题栏)
End Sub
【vb.net判断活动窗体 vba判断窗体1是否打开】vb.net判断活动窗体的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vba判断窗体1是否打开、vb.net判断活动窗体的信息别忘了在本站进行查找喔 。

    推荐阅读