簡體   English   中英

如何在自定義位置打開Tabtip鍵盤?

[英]How to open tabtip keyboard in a custom location?

如何在自定義位置打開Tabtip鍵盤?

這是我的代碼:

Private tabtipProcess As Process

Private Sub t_Enter(sender As Object, e As EventArgs)
    tabtipProcess = Process.Start("tabtip")
End Sub

[如果OP決定改用第三方應用程序,則未刪除的答案將提供解決方案]

-為了記錄,您似乎無法以編程方式更改tabtip的位置。

您可以P / Invoke(也稱為Platform Invoke )WinAPI的SetWindowPos()函數 ,並將進程的MainWindowHandle發送給它。 然后,您只需指定要放置窗口的坐標即可。

<DllImport("user32.dll", SetLastError:=True)> _
Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As Integer) As Boolean
End Function

Const SWP_NOSIZE As Integer = &H0001

Private tabtipProcess As Process

Private Sub t_Enter(sender As Object, e As EventArgs)
    tabtipProcess = Process.Start("tabtip")
    tabtipProcess.WaitForInputIdle()
    SetWindowPos(tabtipProcess.MainWindowHandle, IntPtr.Zero, 300, 200, 0, 0, SWP_NOSIZE)
End Sub

上面的示例將窗口置於坐標(300,200)。

tabtipProcess.WaitForInputIdle()調用是必需的,因為它用於等待應用程序完成加載和創建窗口句柄。 沒有它, tabtipProcess.MainWindowHandle很可能會返回0並在調用SetWindowPos()函數時導致錯誤。

傳遞SWP_NOSIZE標志告訴函數該窗口應保留其當前大小。

最終測試完我先前的答案后,我可以確認(如您所說)它不起作用,因此我做了一些研究。

還有一些其他人也想更改其位置,因此在閱讀了幾篇文章並且對自己進行了一些測試之后, tabtip應用程序似乎已設計為捕獲某些窗口消息(更具體地說是WM_MOVE和/或WM_WINDOWPOSCHANGINGWM_WINDOWPOSCHANGED ),這使您無法使用標准方法以編程方式更改其位置或大小。

目前,似乎還沒有辦法修改其位置。

您可以通過更改tabtip的注冊表值來實現。

像這樣:

 My.Computer.Registry.SetValue(
    "HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip\1.7",
    "OptimizedKeyboardRelativeXPositionOnScreen",
    &HDB1D,
    Microsoft.Win32.RegistryValueKind.DWord
)
My.Computer.Registry.SetValue(
    "HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip\1.7", 
    "OptimizedKeyboardRelativeYPositionOnScreen",
    &H12016,
    Microsoft.Win32.RegistryValueKind.DWord
)

兩個十六進制值是x和y的位置。

傑夫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM