我希望我的程序能够使用“SendKeys.SendWait()”,一次发送键到多个相同的进程。例如,如果我打开了x个记事本进程数量,我希望它能够对数量进行计数,然后将密钥逐个发送到所有进程。该程序是用C#编写的控制台应用程序。SendKeys到多个相同的进程
是我到目前为止的代码:
Process[] processes = Process.GetProcessesByName("notepad");
Process game1 = processes[0];
do
{
while (!Console.KeyAvailable)
{
IntPtr p = game1.MainWindowHandle;
SetForegroundWindow(p);
SendKeys.SendWait("{ESC}");
Thread.Sleep(1000);
SendKeys.SendWait("^{C}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
Thread.Sleep(100);
SendKeys.SendWait("{A}");
}
} while (Console.ReadKey(true).Key != ConsoleKey.NumPad1);
到目前为止,该应用程序能够找到记事本和发送键,但它只是把它发送到一个进程一遍又一遍(相同的过程)。我曾尝试创建一个for循环,但我不知道如何计算或实现for循环,因此我可以将它发送到打开的每个x数量的记事本。
在下面的代码,我可以让这个它2个记事本进程之间发送,但仅仅是因为我已经告诉它有2个,开辟2.
Process[] processes = Process.GetProcessesByName("notepad");
Process game1 = processes[0];
do
{
while (!Console.KeyAvailable)
{
game1 = processes[0];
IntPtr p = game1.MainWindowHandle;
SetForegroundWindow(p);
SendKeys.SendWait("{ESC}");
Thread.Sleep(1000);
SendKeys.SendWait("^{C}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
Thread.Sleep(100);
SendKeys.SendWait("{A}");
game1 = processes[1];
p = game1.MainWindowHandle;
SetForegroundWindow(p);
SendKeys.SendWait("{ESC}");
Thread.Sleep(1000);
SendKeys.SendWait("^{C}");
SendKeys.SendWait("{ENTER}");
SendKeys.SendWait("{ENTER}");
Thread.Sleep(100);
SendKeys.SendWait("{A}");
}
} while (Console.ReadKey(true).Key != ConsoleKey.NumPad1);
虽然我没有其他的代码来测试它,但是如果你只是改变你的while循环for循环for(int i = 0; i
Proxy
@Proxy我试图为进程[0]使用foreach循环,但我不能有一个int,因为它是一个进程。 – janky