【发布时间】:2013-03-04 05:22:31
【问题描述】:
我们将创建一个带有自定义键(没有 Ctrl、Alt 和 ...)的虚拟键盘(屏幕键盘)。
问题是当我们将应用程序设置为Topmost="Ture" 时,就不可能找到最后一个活动应用程序的窗口来将选定的密钥发送给它。 (键盘应用程序现在是活动的。)
我们进行了一些搜索,但找不到任何有用的信息。
【问题讨论】:
我们将创建一个带有自定义键(没有 Ctrl、Alt 和 ...)的虚拟键盘(屏幕键盘)。
问题是当我们将应用程序设置为Topmost="Ture" 时,就不可能找到最后一个活动应用程序的窗口来将选定的密钥发送给它。 (键盘应用程序现在是活动的。)
我们进行了一些搜索,但找不到任何有用的信息。
【问题讨论】:
在将属性设置为 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()
}
}
}
【讨论】:
感谢您的帮助和回答。 我找到了Wosk,它解决了我的问题。 您可以查看代码。
【讨论】: