请教: 如何判断一个指定的窗体是否被出于被激活状态(即有焦点输入)?

时间:2021-12-01 19:02:26
{
   我的目的是想通过判断是否出于激活状态, 来决定是否运行sendkeys函数.
   如果不能判断是否出于激活状态, 我就不能安全的使用sendkeys函数了..
}

9 个解决方案

#1


你可以定义一个全局变量,用于记录处于激活状态的窗体名
'模块中
public IsForm as string

'在每个窗体的
Private Sub Form_GotFocus()
    IsForm=me.Name
End Sub

你只要判断IsForm的值就知道哪个窗体处于激活状态

#2


If Form2.ActiveControl Is Nothing Then
    MsgBox "asdf"
End If

#3


如果是MDI child 窗体可以用ActiveForm 来判断
Private Sub MDIForm_Load ()
   Dim NewForm As New Form1     NewForm.Show
End Sub

Private Sub Command1_Click ()
   msgbox ActiveForm.name
End Sub

#4


我想知道的是其它被控制的程序的窗体是否被激活!不是mdi child~

比如我想自动登陆NETTERM游戏, 我就需要用程序启动NETTERM,再用SENDKEYS发送登陆脚本内容给NETTERM窗体, 但如果发送过程中, 我点击了其他窗体, 则NETTERM就不处于激活状态, sendkeys就会发错对象了。 我需要的就是当netterm一旦不处于激活状态, 我就停止, 一旦处于激活状态再继续(我用timer1控件来不断检查它是否处于激活状态), 哎~ 就是不知道怎么检查。

#5


IsWindowEnabled:

Public Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long

判断窗口是否处于活动状态(在vb里使用:针对vb窗体和控件,请用enabled属性)

  hwnd -----------  Long,待检测窗口的句柄

#6


用SendMessage不用有焦点,有窗体句柄就可以了

#7


如果是其他窗体建议使用KEY_EVENT

#8


有一个查找当前获取焦点的的窗体的API函数,我也忘了,哪位大侠能来这里说说。

#9


IsWindowEnabled 试验过, 好像有点问题阿? 如果这个窗体在最上面,要是点击其它窗体把他变成灰色, 还是返回enable.

#1


你可以定义一个全局变量,用于记录处于激活状态的窗体名
'模块中
public IsForm as string

'在每个窗体的
Private Sub Form_GotFocus()
    IsForm=me.Name
End Sub

你只要判断IsForm的值就知道哪个窗体处于激活状态

#2


If Form2.ActiveControl Is Nothing Then
    MsgBox "asdf"
End If

#3


如果是MDI child 窗体可以用ActiveForm 来判断
Private Sub MDIForm_Load ()
   Dim NewForm As New Form1     NewForm.Show
End Sub

Private Sub Command1_Click ()
   msgbox ActiveForm.name
End Sub

#4


我想知道的是其它被控制的程序的窗体是否被激活!不是mdi child~

比如我想自动登陆NETTERM游戏, 我就需要用程序启动NETTERM,再用SENDKEYS发送登陆脚本内容给NETTERM窗体, 但如果发送过程中, 我点击了其他窗体, 则NETTERM就不处于激活状态, sendkeys就会发错对象了。 我需要的就是当netterm一旦不处于激活状态, 我就停止, 一旦处于激活状态再继续(我用timer1控件来不断检查它是否处于激活状态), 哎~ 就是不知道怎么检查。

#5


IsWindowEnabled:

Public Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long

判断窗口是否处于活动状态(在vb里使用:针对vb窗体和控件,请用enabled属性)

  hwnd -----------  Long,待检测窗口的句柄

#6


用SendMessage不用有焦点,有窗体句柄就可以了

#7


如果是其他窗体建议使用KEY_EVENT

#8


有一个查找当前获取焦点的的窗体的API函数,我也忘了,哪位大侠能来这里说说。

#9


IsWindowEnabled 试验过, 好像有点问题阿? 如果这个窗体在最上面,要是点击其它窗体把他变成灰色, 还是返回enable.