我正在尝试打开计算器并向其发送击键。在做了一些研究后,我发现了一些记事本的工作代码,但是当我将路径替换为计算器时,它所做的只是打开计算器。
这是我的代码。一切顺利,我在ShowWindow方法中玩了整数,以便在打开时最大化,最小化等记事本。
但是,当我使用计算器的其他路径时,它会打开计算器,然后什么也不做。它不仅拒绝发送击键,我似乎无法将其最小化(最大化计算器无论如何都不起作用),这意味着ShowWindow方法也不起作用。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TextSendKeys
{
class Program
{
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
Process notepad = new Process();
notepad.StartInfo.FileName = @"C:Windows\notepad.exe";
//notepad.StartInfo.FileName = @"C:\Windows\System32\calc.exe";
notepad.Start();
// Need to wait for notepad to start
notepad.WaitForInputIdle();
IntPtr p = notepad.MainWindowHandle;
ShowWindow(p, 3);
SendKeys.SendWait("123");
}
}
}