subj собственно, прошу подкинуть примеров, если кто знает.
В общих чертах ситуация - автоматизируется некая программа без исходников (уже не очень свежая), клики по "органам управления" отработаны, и вроде все устойчиво. Всякий раз, по HWnd, подстраховываем нахождение окна в топе отображения, и в фокусе ввода. А вот с вводом имен файлов для открытия/сохранения (ни каких API в целевой проге нет) что то все не просто. На компе у разработчика все работает шустро и стабильно. А у потребителя валится (((
используемые варианты
"Save Table".hWndByTitle().setActive().waitForIdle();
Clipboard.SetText(file_path_name);
SendKeys.SendWait("^V{Enter}");
Thread.Sleep(timeOuts[toSendKeys]);
работает постабильнее (но все равно не достаточно стабильно (( однако очень медленно вводит пути и имена (они бывают длинные, что любопытно - у разработчика такое замедление исчезает, после запуска студии и компиляции бота)
второй вариант
"Save Table".hWndByTitle().setActive().waitForIdle();
SendKeys.SendWait(file_path_name);
SendKeys.SendWait("{Enter}");
Thread.Sleep(timeOuts[toSendKeys]);
работает быстро у всех, но гораздо более падучий - в непредсказуемый момент происходит сбой открытия/сохранения, после чего логика бота рушится
Примечание:
.hWndByTitle().setActive().waitForIdle(); это расширения, на основе импортированных из user32, системных функций.
Собственно просьба - если кто то решал подобную задачу (или видел решение) на C# (можно с импортом системных функций, это не пугает) в котором используется прямой ввод текстовых строк путей+имен файлов, в контролы стандартных диалогов (а если еще "OK" инвоком а не кликом) поделитесь плз!