已知句柄,如何使某个窗口获得焦点呢
已知句柄,怎么使某个窗口获得焦点呢?
以前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
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\ForegroundFlashCount HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout
------解决方案--------------------
Private Declare Function SetForegroundWindow Lib "user32 " (ByVal hwnd As Long) As Long