3

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

编辑: 在我的申请中遵循这个过程。假设最终用户打开了 5 页的 MS Word 文档,并且他按下向上翻页和向下翻页按钮在这些页面内移动。我想使用 c# 自动化这个场景。目前我使用 UIAutomationClient.dll 和 UIAutomationTypes.dll。我可以用这些吗?

4

6 回答 6

4

AutoIt 自动化和脚本语言是自动发送各种击键的一个非常好的方法。可以用它做很多事情,尤其是向上翻页和向下翻页发送。

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

于 2012-06-14T10:26:48.120 回答
4
  1. 使用 P/Invoke 激活应用程序的窗口。
  2. SendWait("C")用任何字符调用。

例如

// 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("=");
}

请参阅如何:在代码中模拟鼠标和键盘事件>“将击键发送到不同的应用程序”

于 2014-03-12T17:14:55.020 回答
1

我认为您想将击键发送到您没有源代码的应用程序。
我无法帮助您告诉您如何直接在 C# 中执行此操作。
但是您可以使用AutoIt轻松完成;它有一个你可以在 C# 中引用的 DLL 来完全满足你的需要。

于 2012-06-14T10:25:17.333 回答
1

您是否阅读过 如何向进程发送密钥而不是字符?

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

于 2012-06-14T11:32:48.293 回答
1

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

于 2019-10-31T05:09:53.437 回答
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找不到此问题的解决方案。因此,我使用此移动单击方法单击按钮。)

于 2012-06-18T10:51:32.457 回答