Const HWND_TOPMOST = -1
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_SHOWWINDOW = &H40
Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim s1, s2 As Long
Private Sub Form_Activate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
Private Sub Timer1_Timer()
s1 = GetForegroundWindow
If s1 <> Me.hwnd Then s2 = s1
End Sub
Private Sub Command1_Click()
SetForegroundWindow s2
keybd_event 65, 0, 0, 0
End Sub
这段代码可以在WORD、记事本输入(模拟屏幕键盘),但是在IE网页上无法输入(WWW.163.NET 用户名与密码栏其他网站的只要有用户名与密码的网页都无法输入,有时候可以输入一个字,如果要用光标转到地址栏输入再转到用户名那栏就无法输入),不知道为什么,是不是网页的输入框没有句柄,还是别的原因,请高手们解决!!!
http://community.csdn.net/Expert/topic/3108/3108405.xml?temp=2.662295E-02(之前有提过,但是还是没有解决)
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_SHOWWINDOW = &H40
Private Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim s1, s2 As Long
Private Sub Form_Activate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
Private Sub Timer1_Timer()
s1 = GetForegroundWindow
If s1 <> Me.hwnd Then s2 = s1
End Sub
Private Sub Command1_Click()
SetForegroundWindow s2
keybd_event 65, 0, 0, 0
End Sub
这段代码可以在WORD、记事本输入(模拟屏幕键盘),但是在IE网页上无法输入(WWW.163.NET 用户名与密码栏其他网站的只要有用户名与密码的网页都无法输入,有时候可以输入一个字,如果要用光标转到地址栏输入再转到用户名那栏就无法输入),不知道为什么,是不是网页的输入框没有句柄,还是别的原因,请高手们解决!!!
http://community.csdn.net/Expert/topic/3108/3108405.xml?temp=2.662295E-02(之前有提过,但是还是没有解决)
在这里可以啊
请你们都试一下.类似163的用户名与密码框。
我把timer该为
Private Sub Timer1_Timer()
s1 = GetForegroundWindow
If s1 <> Me.hwnd Then
s2 = s1
SetForegroundWindow s2
keybd_event 65, 0, 0, 0
End If
End Sub
了
在win2000以上的操作系统中window增加了一条附加窗口风格WS_EX_NOACTIVATE,他可以完全满足你的要求,可以作为一条捷径:作为测试,窗体上只有一个按钮:
Option Explicit
Private Const GWL_STYLE = (-16)
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40
Private Const WS_EX_NOACTIVATE = &H8000000
Private Const GWL_EXSTYLE = (-20)
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)Private Sub Command1_Click()
SendKeys "哈哈"
End SubPrivate Sub Form_Load()
Dim style As Long
style = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
style = style Or WS_EX_NOACTIVATE
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, style)
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub这段代码的缺点是标题栏始终是灰突突的,很不好看,这可以通过自绘标题栏解决至于2000以下的操作系统,这段代码则不能很好的运行,只好老老实实的写代码了