我在打开网页后
让窗体置前
(setwindowpos Form1.hwnd, -1, 0, 0, 0, 0, Flag  ' 窗体置前)
然后出现了问题
当前焦点不在 当前窗体上
于是我加了;   Me.SetFocus
    Me.WebBrowser1.SetFocus发现焦点是可以在当前窗体了
可是发现窗体闪烁数次而且此时tab 和enter键焦点是在其他地方(我打开了记事本 一开始放窗体前)怎么样做到 窗体置前后马上获得焦点
 
tab 和enter键也一直在当前窗体上
If WebBrowser1.LocationURL = "http://www.baidu.com/" Then   
    setwindowpos Form1.hwnd, -1, 0, 0, 0, 0, Flag  ' 窗体置前
    
    Me.SetFocus
    Me.WebBrowser1.SetFocus
    
     
    'Call Sleep(2000)
    Print "完毕"
    
    'Me.WebBrowser1.SetFocus
    
    Call tb1(4)  'tab移动4次,并按回车
    
    
  End IfPrivate Sub tb1(nn)
    For tt = 1 To nn
        Call keybd_event(9, 0, 0, 0)   '模拟按下tab
        Call keybd_event(9, 0, keyeventf_keyup, 0)  '模拟松开tab
    Next tt
    
    keybd_event 13, 0, 0, 0  '模拟按下enter
    keybd_event 13, 0, keyeventf_keyup, 0
End Sub

解决方案 »

  1.   

    使用API函数 直接让某个窗体获取焦点就可以了呀
    为啥 要TAB TAB TAB TAB 的 Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long 这是API申明
    如果是当前的你写的软件
    CTJB = me.hwnd
    如果是其他软件的窗体句柄
    CTJB = FindWindow("你要设置焦点的那个窗体", vbNullString)SetForegroundWindow 这个是设置某个窗体获得焦点 参数为窗体的句柄 先取句柄 然后
    call SetForegroundWindow (CTJB) 
      

  2.   

    SetWindowPos 的参数 Flag 中加上 SWP_NOACTIVATE,这样就不会转移焦点。