我正在尝试弄清楚如何能够从本质上欺骗一个窗口,使其认为它具有焦点。我通过一些搜索发现,我需要一些沙箱来完成这项工作。操作系统和窗口之间的中间层。
如果能给我指明正确的方向,让我知道如何通过C# (如果必要的话,可以使用pinvoke等)来实现这一点,我将不胜感激。从本质上讲,从C#程序启动另一个可执行文件,并以某种方式将其设置在一个具有恒定窗口焦点的人造桌面上。但是仍然能够像平常一样与窗口交互(就像一个窗口包装器,如果你愿意的话,它可以失去它想要的焦点,但包含在其中的窗口永远不会认为它没有焦点)。
我确信这是一个相当大的任务(虽然,也许不会是,也许有人知道一个优雅的解决方案),但我知道这是可能的,因为我在商业产品中看到过类似的事情。(我正在尝试模仿这个沙盒产品的一种行为)。
发布于 2012-04-28 12:54:58
首先,尝试调用激活事件:
private void Form1_Activated(object sender, EventArgs e)
{
//Code
}然后在所有函数中声明一个eventarg:
private EventArgs ev;最后,当你想要伪装一个焦点时,调用激活的函数:
Form1_Activated(this, ev);希望对大家有所帮助!
发布于 2016-10-10 07:54:31
您可以尝试将WM_ACTIVATE消息注入目标windows消息队列。这可能会欺骗它认为它有焦点,即使它没有。这真的取决于应用程序如何检查焦点。
https://stackoverflow.com/questions/10360455
复制相似问题