2011-08-06 59 views
1

嗨我有一个新的问题要求所有的程序员解决。有没有办法我可以按下按钮或有一个定时器,将触发一个事件,这将使我的应用程序从一个应用程序切换到另一个?例如让我说我想创建一个应用程序,当我按下按钮时,它将从当前应用程序切换到另一个运行如记事本或游戏或其他应用程序的应用程序。有没有办法在C#中从一个应用切换到另一个?

如果有一种方法可以打开一个特定的应用程序的名字,这将是伟大的,谢谢。

PS:我已经知道如何对一个计时器进行编码,所以如果你不想要的话,你不必发布一个计时器。

回答

3

使用两个WinAPI的功能FindWindowSetFocus,你可以达到你想要的目标:

[DllImport("user32.dll")] 
static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

[DllImport("user32.dll")] 
static extern IntPtr SetFocus(IntPtr hWnd); 

例如,要设置一个记事本窗口标题为“”到前台,您可以使用以下代码:

SetFocus(FindWindow("Notepad", "Untitled - Notepad")); 

如果您不知道表单的名称,那么您可以使用其他WinAPI函数枚举窗口。


或者,你可以,如果你引用它使用来自Microsoft.VisualBasic.dllInteraction.AppActivate()方法,在命名空间Microsoft.VisualBasic找到。

只是简单的电话Interaction.AppActivate("window title")Interaction.AppActivate(iPID)

该方法的相应文档可以找到here

+0

我认为有一个更简单的方法来做这个看海报的问题,我尝试过,但我似乎无法得到它的权利,虽然这是它的链接。 http://www.devmaster.net/forums/archive/index.php/t-4800.html – mendez

+0

谢谢@门德斯。我更新了我的答案以显示“Interaction.AppActivate()'方法的用法。 – foxy

+0

很高兴我能帮忙,但是因为我仍然是一个小菜鸟,所以我不确定如何实施这个工作,你能告诉我一个更详细的例子吗?只是一个简单的按钮点击它将会感谢。 – mendez

0

您可以使用Pinvoke调用SetFocus函数,该函数采用WindowHandle并将键盘焦点设置为该屏幕。

http://msdn.microsoft.com/en-us/library/ms646312(v=vs.85).aspx

http://www.pinvoke.net关于如何使用的PInvoke更多的信息。

http://support.microsoft.com/kb/147659:一篇好文章,如果你不确定窗口标题是什么(如果你这样做,那么你可以得到所有的窗口句柄,然后使用GetWindowName()来获取窗口名称,并检查是否是一个你想,GetWindowName也需要一个窗口句柄)

相关问题