0

我只是想知道适用于 Windows 的 Google 输入工具是如何运行的。在拖动小谷歌弹出窗口(提供语言建议)时,记事本不会失去焦点......

我尝试了相同风格的 Window ,

  • 浮动在任何其他窗口的最顶部。
  • 应用投影。
  • 从任何窗口获取文本插入符号位置并随光标动态移动。

现在的问题是,当我单击并拖动我的窗口时,记事本/任何应用程序都会失去焦点,当前焦点在我的小弹出窗口上。

但是Google Input Tool,在拖动它时,记事本不会失去焦点。

在这里,我想实现我的浮动弹出窗口不能有焦点..并且当我触摸我的弹出窗口时目标应用程序不应该失去焦点..

什么 windows VB6 API 用于实现这一点..

非常感谢您观看.... :-)

4

1 回答 1

2

这是 Windows API 代码(把它放在一个模块中)

  Option Explicit
  Public Const SWP_NOMOVE = 2
  Public Const SWP_NOSIZE = 1
  Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
  Public Const HWND_TOPMOST = -1
  Public Const HWND_NOTOPMOST = -2

  Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos"  _
        (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  ) As Long

  Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
     As Long

     If Topmost = True Then 'Make the window topmost
        SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, _
           0, FLAGS)
     Else
        SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, _
           0, 0,FLAGS)
        SetTopMostWindow = False
     End If
  End Function

在使用中,这会将 Form1 设置为最顶层:

SetTopMostWindow Form1.hwnd, True 

(从谷歌搜索vb6 窗口最顶层时的第一个结果,http://support.microsoft.com/kb/184297

于 2013-07-15T15:21:02.480 回答