下面的sendkeys代码适用于记事本,但它不适用于计算器.问题是什么?(与我发送的.NET程序中的Sendkeys问题相比,这是另一个问题)
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("User32")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr calculatorHandle = FindWindow("SciCalc", "Calculator");
//IntPtr calculatorHandle = FindWindow("Notepad", "Untitled - Notepad");
if (calculatorHandle == IntPtr.Zero)
{
MessageBox.Show("Calculator is not running.");
return;
}
SetForegroundWindow(calculatorHandle);
System.Threading.Thread.Sleep(1000);
SendKeys.SendWait("111*11=");
//SendKeys.SendWait("{ENTER}");
//cnt++;
SendKeys.Flush();
}
Run Code Online (Sandbox Code Playgroud)
我会告诉你如何弄清楚如何将keystorkes发送到calc.exe.
使用spy ++来监视calc.exe窗口进程中的消息.要执行此操作,请进入spy ++并单击日志消息工具栏按钮.将光标拖到calc.exe窗口.我给出的说明适用于VS2008,对于其他VS版本中包含的Spy ++,它们可能略有不同.但是始终可以使用相同的功能.
您将在输入文本时确切地看到发送的消息.你需要做同样的事情.
将Win32 API SendMessage,LPARAM和WPARAM用于找到的窗口句柄.