如何将键击发送到应用程序UI自动化-C#

时间:2012-06-14 10:20:17

标签: c# c#-4.0 automation

我需要找出关键主板值的自动装配?如何将键击发送到应用程序UI自动化?我需要在键盘中自动化页面向上和向下翻页功能。什么是最好的方法 它?

修改 在我的应用程序后面的过程。假设最终用户打开5页的MS Word文档,他按下向上翻页和向下翻页按钮在这些页面中移动。我想使用c#自动化这个场景。目前我使用的是UIAutomationClient.dll和UIAutomationTypes.dll。我能用这些吗?

6 个答案:

答案 0 :(得分:3)

自动发送各种击键的一种非常好的方法是AutoIt automation and scripting language。可以使用它完成很多工作,尤其是向上翻页和向下翻页。

我建议用自动编写一个EXE,它将自己连接到它将发送击键的程序。

答案 1 :(得分:2)

  1. 使用P / Invoke激活应用程序的窗口。
  2. 使用任何字符致电SendWait("C")
  3. E.g。

    // Get a handle to an application window.
    [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
    public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
    // Activate an application window.
    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    
    // Send a series of key presses to the Calculator application. 
    private void button1_Click(object sender, EventArgs e)
     {
        // Get a handle to the Calculator application. The window class 
        // and window name were obtained using the Spy++ tool.
        IntPtr calculatorHandle = FindWindow("CalcFrame","Calculator");
    
        // Verify that Calculator is a running process. 
        if (calculatorHandle == IntPtr.Zero)
        {
            MessageBox.Show("Calculator is not running.");
            return;
        }
    
        // Make Calculator the foreground application and send it  
        // a set of calculations.
        SetForegroundWindow(calculatorHandle);
        SendKeys.SendWait("111");
        SendKeys.SendWait("*");
        SendKeys.SendWait("11");
        SendKeys.SendWait("=");
    }
    

    请参阅How to: Simulate Mouse and Keyboard Events in Code> “将击键发送到其他应用程序”

答案 2 :(得分:1)

我认为您希望将键击发送到您没有源代码的应用程序 我无法帮你告诉你如何在C#中直接做到这一点 但是你可以用AutoIt轻松完成;它有一个你可以在C#中引用的DLL,可以完全满足你的需要。

答案 3 :(得分:1)

你读过吗? How to send keys instead of characters to a process?

这将告诉您如何将密钥发送到应用程序。

答案 4 :(得分:0)

在这种情况下,将word文档放到前面,然后在屏幕键盘上使用 System.Diagnostics.Process.Start("osk.exe");并使用鼠标输入单击向上和向下翻页按钮 因为鼠标点击需要页面向上和向下按钮的屏幕坐标。

(我尝试使用UI自动检测屏幕键盘。但它没有检测到屏幕的键。 https://stackoverflow.com/questions/11077738/windows-sdk-inspect-tool-what-are-the-reasons-on-screen-keyboard-does-not-disp无法找到此问题的解决方案。因为我使用此移动点击方法单击按钮。 )

答案 5 :(得分:0)

// 使用Windows窗体并将此列表与发送键一起使用 https://www.autoitscript.com/autoit3/docs/appendix/SendKeys.htm 我很确定他只是在为他的SendKey.Send(“ {}”);; p