已知句柄,怎么使某个窗口获得焦点呢?VB codeDim NotepadHwnd As Long, hwnd As LongNotepadHwnd FindWin
已知句柄,怎么使某个窗口获得焦点呢?
- VB code
Dim NotepadHwnd As Long, hwnd As Long NotepadHwnd = FindWindow("notepad", vbNullString) '得到窗口类名为Edit的窗口句柄 hwnd = FindWindowEx(NotepadHwnd, 0, "Edit", vbNullString)以前98下用
SetActiveWindow NotepadHwnd
apiSetFocus hwnd
可以,现在XP下不起作用
[解决办法]
BringWindowToTop NotepadHwnd
SetForegroundWindow NotepadHwnd
都不行?
[解决办法]
这时 XP 的行为特性决定的,给非当前程序的窗口设置焦点只会闪烁而不会真正转移焦点。
该特性可以通过工具 TweakUI for Windows XP 修改,它的选项
General\Focus\Prevent applications from stealing focus
[解决办法]
跟系统有关,有些系统下就没法置于前台 有些系统你用text1.setfocus都可以置于前台!
据说跟
- VB code
HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundFlashCountHKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout
[解决办法]
Private Declare Function SetForegroundWindow Lib "user32 " (ByVal hwnd As Long) As Long
