2013-03-04 4 views
4

Nous allons créer un clavier virtuel (clavier à l'écran) avec des touches personnalisées (pas de Ctrl, Alt et ...). Le problème est que lorsque nous configurons l'application sur Topmost="Ture", il n'est pas possible de trouver la fenêtre de la dernière application active pour y envoyer la clé sélectionnée. (L'application clavier est maintenant active.) Nous avons fait quelques recherches mais n'avons rien trouvé d'utile.Clavier virtuel au-dessus

Répondre

0

Merci pour votre aide et vos réponses. Je trouve Wosk et cela a résolu mon problème. Vous pouvez consulter le code.

4

Gardez une poignée à la dernière fenêtre avant de définir la prperty true, jetez un oeil à GetForegroundWindow() ou GetActiveWindow(), puis utilisez un pour l'SetActiveWindow() le remettre après fait avec l'application du clavier.

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

L'utilisateur peut avoir besoin d'utiliser le clavier sur diverses applications et nous devons revenir à la dernière fenêtre active après chaque appui sur notre mot-clé. – Babak

+0

Désolé je n'ai pas compris le problème, vous gardez le handle de la fenêtre A lorsque l'application du clavier est démarrée, puis réglez-la au plus haut, et sur un clic de la souris vous activez à nouveau la poignée enregistrée. – CloudyMarble

+0

L'application cible peut changer en fonction du souhait de l'utilisateur. – Babak