我正在尝试向后台运行的程序发送一次击键。我实际上能够做到这一点,但由于某种原因,我无法用我想要的程序做到这一点。代码在一个程序中工作正常,但是当我更改进程名称时,我收到错误System.IndexOutOfRangeException
并且我不知道为什么。
这是我的一个程序的工作代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Threading;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace AntiAfk
{
static class Program
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
static void Main(string[] args)
{
Process[] processes = Process.GetProcessesByName("aion.bin");
Process game1 = processes[0];
IntPtr p = game1.MainWindowHandle;
SetForegroundWindow(p);
SendKeys.SendWait("{e}");
Thread.Sleep(1000);
SendKeys.SendWait("{e}");
}
}
}
现在如果我将“aion.bin”更改为“archeage.exe”它不起作用,它会抛出该错误。详情如下;指数数组的边界之外。 HResult -2146233080。有什么想法吗?
编辑 - 答案 - 我的进程名称错误。