Почему событие UIAutomation WindowOpened не запускается?C#

Место общения программистов C#
Ответить
Anonymous
 Почему событие UIAutomation WindowOpened не запускается?

Сообщение Anonymous »

Я хочу войти в приложение, чтобы программно щелкнуть один раз.
Я попробовал использовать следующий код.
Это приложение предназначено для торговли акциями, поэтому войдите в систему. требуется, чтобы открыть окно торговли.
Кроме того, в этом приложении есть задержка между «Показом диалогового окна проверки обновления ClickOnce» и «Открытием окна входа в систему» ​​из-за clickonece.
Я хотел бы запустить код, который нужно ввести идентификатор пользователя и пароль после открытия окна входа в систему, поэтому я хочу обнаружить событие WindowOpened.
Но теперь ничего не происходит, даже добавляется обработчик событий.
Обратите внимание, что этот код работает на C# 9.0
using System.Diagnostics;
using System.Windows.Automation;
using System.Text;

void onWindowOpened(object sender, AutomationEventArgs e)
{
AutomationElement? element;
try
{
element = sender as AutomationElement;
if (element == null)
{
Console.WriteLine("Element is null");
} else
{
Console.WriteLine("onWindowOpened!!");
LoginKabucom();
}
}
catch (ElementNotAvailableException)
{
Console.WriteLine("ElementNotAvailableException is happened");
}
}

Automation.AddAutomationEventHandler(WindowPattern.WindowOpenedEvent, AutomationElement.RootElement, TreeScope.Subtree, new AutomationEventHandler(onWindowOpened));
KillKabuS(); // Ensure the stock trade software is killed before start.
var p = StartKabuS();

void KillKabuS()
{
var processes = Process.GetProcesses();
foreach (var process in processes)
{
if (process.ProcessName.Contains("KabuS"))
{
Console.WriteLine("KabuS is included");
process.Kill(true);
process.WaitForExit();
break;
}
}
}

Process? StartKabuS()
{
var psi = new ProcessStartInfo();
var appref = "C:\\Users\\yuya\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\kabu.com\\kabuステーション.appref-ms";
psi.FileName = appref;
psi.UseShellExecute = true;
var p = Process.Start(psi);
return p;
}

void LoginKabucom(AutomationElement? elem)
{
// do something related to login
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -not-fired
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»