我的目的是想通过判断是否出于激活状态, 来决定是否运行sendkeys函数.
如果不能判断是否出于激活状态, 我就不能安全的使用sendkeys函数了..
}
9 个解决方案
#1
你可以定义一个全局变量,用于记录处于激活状态的窗体名
'模块中
public IsForm as string
'在每个窗体的
Private Sub Form_GotFocus()
IsForm=me.Name
End Sub
你只要判断IsForm的值就知道哪个窗体处于激活状态
'模块中
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
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
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控件来不断检查它是否处于激活状态), 哎~ 就是不知道怎么检查。
比如我想自动登陆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,待检测窗口的句柄
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的值就知道哪个窗体处于激活状态
'模块中
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
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
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控件来不断检查它是否处于激活状态), 哎~ 就是不知道怎么检查。
比如我想自动登陆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,待检测窗口的句柄
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.