有没有办法在C#中从一个应用程序切换到另一个应用程序?

时间:2011-08-06 06:20:10

标签: c# button timer switch-statement

嗨,我有一个新问题要求所有程序员解决。有没有办法我可以按一个按钮或有一个计时器,将触发一个事件,使我的应用程序从一个应用程序切换到另一个应用程序?例如,我想制作一个应用程序,当我按下按钮时,它将从当前应用程序切换到另一个运行像记事本或游戏或其他东西的应用程序。

如果有办法按名称打开特定应用程序,那将非常棒,谢谢。

PS:我已经知道如何对计时器进行编码,因此如果您不想发布计时器,则无需发布计时器。

2 个答案:

答案 0 :(得分: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函数枚举窗口。


或者,您可以使用Interaction.AppActivate()中的Microsoft.VisualBasic.dll方法,如果您引用它,可以在命名空间Microsoft.VisualBasic中找到。

只需简单地致电Interaction.AppActivate("window title")Interaction.AppActivate(iPID)

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

答案 1 :(得分: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也需要一个窗口句柄)