[英]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
-為了記錄,您似乎無法以編程方式更改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_WINDOWPOSCHANGING和WM_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.