2013-03-04 5 views
4

Мы собираемся создать виртуальную клавиатуру (на экранной клавиатуре) с настраиваемыми клавишами (без Ctrl, Alt и ...). Проблема заключается в том, что мы устанавливаем приложение в Topmost="Ture", тогда невозможно найти последнее окно активного приложения для отправки на него выбранного ключа. (Приложение клавиатуры теперь является активным.) Мы сделали несколько поисков, но не смогли найти ничего полезного.Виртуальная клавиатура сверху

ответ

0

Благодарим за помощь и ответы. Я нашел Wosk, и это решило мою проблему. Вы можете просмотреть код.

4

Держите ручку до последнего окна, прежде чем установить prperty к истинным, посмотрите на 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

+0

Извините, я не понял проблемы, вы держите дескриптор окна A, когда запускается приложение для клавиатуры, затем установите его в верхнюю часть, а при нажатии клавиши вы снова активируете сохраненный дескриптор. – CloudyMarble

+0

Целевое приложение может изменяться в зависимости от желания пользователя. – Babak

Смежные вопросы