C#如何选择打开的应用程序窗口
我正在尝试创建一个基本的宏录制/回放系统。如果我想选择一个打开的应用程序(如记事本)将其放在前面进行输入,我将如何通过名称或其他可引用的属性来调用它?您可以从使用开始-这将为您提供所有正在运行的进程的列表。检查每个进程上的不同属性-这应该可以让您继续。签出一个名为“Autohotkey”的应用程序,它可以满足您的所有需要,并为您节省大量编程时间,而且是免费的 如果autohotkey不能解决您的问题,或者您这样做是为了学习,有人问了一个“全新”的应用程序,等等,这里有一些链接可能会有所帮助: (上面写着“移动窗口”,但仍然有帮助)C#如何选择打开的应用程序窗口,c#,macros,C#,Macros,我正在尝试创建一个基本的宏录制/回放系统。如果我想选择一个打开的应用程序(如记事本)将其放在前面进行输入,我将如何通过名称或其他可引用的属性来调用它?您可以从使用开始-这将为您提供所有正在运行的进程的列表。检查每个进程上的不同属性-这应该可以让您继续。签出一个名为“Autohotkey”的应用程序,它可以满足您的所有需要,并为您节省大量编程时间,而且是免费的 如果autohotkey不能解决您的问题,或者您这样做是为了学习,有人问了一个“全新”的应用程序,等等,这里有一些链接可能会有所帮助:
希望能有所帮助。以下是一个例子。基本上,先得到,然后调用它: 您应该了解以下限制: 系统限制哪些进程可以设置前台窗口。仅当以下条件之一为真时,进程才能设置前景窗口:
- 这个过程就是前景过程
- 该进程由前台进程启动
- 进程接收到最后一个输入事件
- 没有前台进程
- 正在调试前台进程
- 前景未锁定(请参见LockSetForegroundWindow)
- 前台锁定超时已过期(请参阅SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT)
- 没有激活的菜单
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);
}
}