【问题标题】:Virtual keyboard on Top顶部虚拟键盘
【发布时间】:2013-03-04 05:22:31
【问题描述】:

我们将创建一个带有自定义键(没有 Ctrl、Alt 和 ...)的虚拟键盘(屏幕键盘)。 问题是当我们将应用程序设置为Topmost="Ture" 时,就不可能找到最后一个活动应用程序的窗口来将选定的密钥发送给它。 (键盘应用程序现在是活动的。) 我们进行了一些搜索,但找不到任何有用的信息。

【问题讨论】:

    标签: c# wpf touch


    【解决方案1】:

    在将属性设置为 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()
        }
      }
    }
    

    【讨论】:

    • 用户可能需要在各种应用程序上使用键盘,我们需要在每次按下关键字后切换回最后一个活动窗口。
    • 对不起,我不明白这个问题,当键盘应用程序启动时,您保留窗口 A 的句柄,然后将其设置为最顶部,然后单击一个键,将保存的句柄再次设置为活动状态。
    • 目标应用程序可能会根据用户的需求而改变。
    • 您可以在每个 getFocus 或 Activated veent 上保持获取最后一个活动窗口。见msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    感谢您的帮助和回答。 我找到了Wosk,它解决了我的问题。 您可以查看代码。

    【讨论】:

      猜你喜欢
      • 2020-08-19
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2015-01-02
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多