我正在尝试创建一个基本的宏录制/播放系统。如果我想选择一个打开的应用程序(如记事本)将它带到前面进行输入,我将如何通过名称或其他一些可靠的属性来调用它?
答案 0 :(得分:7)
这是一个例子。基本上,获取Process,然后在SetForegroundWindow上调用MainWindowHandle:
using System;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
namespace StackOverflow.Test
{
class Program
{
static void Main(string[] args)
{
var proc = Process.GetProcessesByName("notepad").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
SetForegroundWindow(proc.MainWindowHandle);
}
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
}
}
您应该了解这些限制:
系统限制哪些进程可以设置前景窗口。仅当满足下列条件之一时,进程才能设置前台窗口:
答案 1 :(得分:0)
您可以先使用Process.GetProcesses
- 这将为您提供所有正在运行的进程的列表。检查每个过程的不同属性 - 这应该让你去。
答案 2 :(得分:0)
查看名为“Autohotkey”的应用程序,它可以完成您需要的所有操作并节省大量编程时间,而且它是免费的。
如果autohotkey无法解决您的问题,或者您出于学习目的而这样做,有人会问一个“全新的”应用程序,等等,有一些链接可能会有所帮助:
Bringing Window to the Front in C# using Win32 API http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesvbcs/thread/92823775-29f6-4950-bf06-d2f1ca89ec8d(它说“移动窗口”,但仍然可以提供帮助)
希望它有所帮助。