2013-03-04 216 views
4

我們將使用自定義鍵(無Ctrl,Alt和...)創建虛擬鍵盤(屏幕鍵盤上)。 問題是,當我們將應用程序設置爲Topmost="Ture",那麼無法找到最後一個活動應用程序的窗口將選定的密鑰發送給它。 (鍵盤應用程序現在是活動的。) 我們做了一些搜索,但找不到有用的東西。頂部的虛擬鍵盤

回答

0

感謝您的幫助和解答。 我發現Wosk它解決了我的問題。 您可以查看代碼。

4

在將屬性設置爲true之前,請保留最後一個窗口的句柄,查看GetForegroundWindow()GetActiveWindow(),然後使用SetActiveWindow()在完成鍵盤應用程序後將其設回。

using System; 
using System.Runtime.InteropServices; 

namespace Foreground { 
    class GetForegroundWindowTest { 

    [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
    public static extern IntPtr GetForegroundWindow(); 

    public static void Main(string[] args){ 
     IntPtr fg = GetForegroundWindow(); //use to keep the last active window 
     // set the topmost property to your keyboard   
     //Set fg to be active again when needed using SetActiveWindow() 
    } 
    } 
} 
+0

用戶可能需要在各種應用程序上使用鍵盤,並且我們需要在每次按下關鍵字後切換回上一個活動窗口。 – Babak 2013-03-04 05:44:54

+0

對不起,我不明白這個問題,當鍵盤應用程序啓動後,您保持窗口A的句柄,然後將其設置到最上面,然後在一個鍵上單擊您將保存的句柄設置爲再次激活。 – CloudyMarble 2013-03-04 06:04:00

+0

目標應用程序可能會根據用戶的需求而改變。 – Babak 2013-03-04 08:10:34