.NET sendkeys到计算器

use*_*232 3 c# sendkeys

下面的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)

Bri*_*ndy 7

我会告诉你如何弄清楚如何将keystorkes发送到calc.exe.

使用spy ++来监视calc.exe窗口进程中的消息.要执行此操作,请进入spy ++并单击日志消息工具栏按钮.将光标拖到calc.exe窗口.我给出的说明适用于VS2008,对于其他VS版本中包含的Spy ++,它们可能略有不同.但是始终可以使用相同的功能.

您将在输入文本时确切地看到发送的消息.你需要做同样的事情.

将Win32 API SendMessage,LPARAM和WPARAM用于找到的窗口句柄.