2012-04-28 70 views
0

我想弄清楚我怎么能够基本上把一个窗口变成思考它的焦点。我通过搜索找到的是,我需要某种沙箱来实现这一点。 OS和窗口之间的中间层。伪造窗口焦点(沙盒?,应用程序V?)

我很感激一些帮助,指出我可以通过C#(如果需要的话可以通过pinvoke等)完成这项工作的正确方向。从本质上启动C#程序中的另一个可执行文件,并以某种方式将其设置为位于虚拟桌面上,并持续关注窗口。但仍然可以像平常那样与窗口进行交互(就像一个窗口包装器,如果你愿意,它可以失去所有想要的焦点,但包含的窗口永远不会认为它没有焦点)。我相信这是一项很有意义的事情(虽然也许不会,也许有人知道这是一个优雅的解决方案),但我知道这是可能的,因为我在商业广告中看到过类似的事情产品。 (我试图模拟这个沙盒产品的行为之一)。

回答

0

首先尝试调用激活事件:

private void Form1_Activated(object sender, EventArgs e) 
{ 
    //Code 
} 

再出任何功能,声明eventarg:

private EventArgs ev; 

最后,当你要假的焦点,调用激活功能:

Form1_Activated(this, ev); 

希望有所帮助!

+0

对不起,但是,这与我所说的事情没有什么关系。我更倾向于欺骗第三方应用程序,使其相信它已经关注(像游戏或其他类似的应用程序)。 – Hydra 2012-04-28 22:08:00

0

您可以尝试将WM_ACTIVATE消息注入到目标Windows消息队列中。这可能会诱使它认为它有重点,即使它没有。这实际上取决于应用程序如何检查焦点。