3

キーボード値のautomationidを見つける必要がありますか?キーストロークをアプリケーションUIオートメーションに送信する方法は?キーボードのページアップとページダウン機能を自動化する必要があります。それを行うための最良の方法は何ですか?

編集: プロセスに続く私のアプリケーションで。エンドユーザーが5ページのMSWordドキュメントを開き、ページアップボタンとページダウンボタンを押してこれらのページ内を移動するとします。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

このシナリオでは、ドキュメントという単語を前面に表示してから、画面キーボードで使用し
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は、この問題の解決策を見つけることができませんでした。そのため、このmove clickメソッドを使用してボタンをクリックします。)

于 2012-06-18T10:51:32.457 に答える