Fragrammer’s Blog

破片プログラマーから脱する

メモ帳起動して文字入力(UI Automation)

UI Automation使ってC#でメモ帳起動~文字入力まで。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Automation;
using System.Windows.Forms;

namespace UIAutoPractice
{
    class Program
    {
        private static readonly string PROCESS_NAME = @"notepad";
        private static readonly int DEFAULT_WAIT_TIME = 1000;

        private static AutomationElement mainForm;
        static void Main(string[] args)
        {

            Process process = Process.Start(PROCESS_NAME);
            try
            {
                // メモ帳を起動します
                Thread.Sleep(DEFAULT_WAIT_TIME);
                mainForm = AutomationElement.FromHandle(process.MainWindowHandle);
                // あああああ
                string InputText = "あああああ";
                // 入力準備
                object valuePattern = null;
                if (!mainForm.TryGetCurrentPattern(ValuePattern.Pattern, out valuePattern))
                {
                    mainForm.SetFocus();
                    Thread.Sleep(100);
                    SendKeys.SendWait(InputText);
                }
                else
                {
                    mainForm.SetFocus();
                    ((ValuePattern)valuePattern).SetValue(InputText);
                }
            
            }
            finally
            {
                process.CloseMainWindow();
            }
        }

    }
}