簡體   English   中英

以編程方式在文本框中隱藏Win7觸摸鍵盤提示? VB.net WPF應用

[英]Programmatically hide Win7 touch keyboard prompt in text box? VB.net WPF app

我有一個最初在VB.net 2010 Express中開發的WPF應用程序。 它在Windows XP上運行良好,在非觸摸屏Windows 7計算機上運行良好。

該應用程序專為觸摸屏使用而設計,其UI帶有用於編輯數字等的大按鈕。它甚至還有一個小的屏幕鍵盤,僅包含應用程序所需的按鈕,因此您無法進入Windows。

不幸的是,我現在需要使用99.9%的代碼來為Windows 7觸摸屏機器開發該應用程序的新版本。 它具有適當的觸摸屏驅動程序(hooray!),而不是鼠標仿真(boo),但是只要突出顯示一個文本框,Win7的小“ open the OSK”提示就會出現,該提示卡在我的UI上方。

圖片在這里: http : //i.imgur.com/W8XthZF.jpg

我可以以某種方式將TextBox調整為“不顯示Win7 OSK提示”嗎? FWIW我現在正在使用Visual Studio Express 2013,仍在VB.net中進行編程,但目標是.NET 4.5.2。

顯然,不明智的解決方案是將TextBox向下移得足夠遠,以至於不會重疊,但是我也想刪除一種方便的方法,使用戶可以啟動Win7屏幕鍵盤,然后按一下Win鍵並開始播放紙牌或其他。

鍵盤由一個名為tabtip.exe的進程處理,該進程通常位於@“ C:\\ Program Files \\ Common Files \\ microsoft shared \\ ink \\ tabtip.exe”中;

1)您可以終止進程:

                var p = Process.GetProcesses();
                var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip"));
                foreach (var item in n)
                {
                    try
                    {
                        item.CloseMainWindow();
                        //item.Kill(); 
                    }
                    catch { }
                }

2)使用Windows 32消息隱藏(我的經驗是並不總是有效):

    var p = Process.GetProcesses();
    var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip")).FirstOrDefault();
    if (n != null)
    {
        n.CloseMainWindow();
    }

或其中之一

        //  SendMessage(_keyboardProcess.Handle, WS_MINIMIZE, IntPtr.Zero, IntPtr.Zero);
        //  SendMessage(_keyboardProcess.Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
        //  SendMessage(_keyboardProcess.Handle, WM_QUIT, IntPtr.Zero, IntPtr.Zero);

暫無
暫無

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

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