WinAPI

 
 
 
Сообщения:23
Добрый день, коллеги!

1. Запускаю посредством Process .exe-файл
Process process = new ProcessBuilder("C:\\APPS\\myApp.exe").start();


2. с помощью HWND ищу заголовок окна
hwnd = User32.INSTANCE.FindWindow(null, title);


Вопрос: Есть ли функция в WinAPI с помощью которой программа могла бы дождаться запуска сторонней программы и после уже искать заголовок окна?

Заранее спасибо.
Изменен:02 июл 2019 05:50
 
 
Сообщения:879
Если есть возможность модифицировать windows-приложение, то можно сделать такой костыль:

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        try {
            while ((line = reader.readLine()) != null) {
                      if (line.startsWith("STARTED")) {
                          break;



В windows-приложении надо будет после инициализации (когда гарантированно созданы все окна/элементы окна) записать в выходной out-поток строку STARTED.
Изменен:02 июл 2019 10:39
 
 
Сообщения:23
Роман Осипов:
Если есть возможность модифицировать windows-приложение, то можно сделать такой костыль:

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        try {
            while ((line = reader.readLine()) != null) {
                      if (line.startsWith("STARTED")) {
                          break;



В windows-приложении надо будет после инициализации (когда гарантированно созданы все окна/элементы окна) записать в выходной out-поток строку STARTED.


Спасибо за ответ, Роман, но windows-приложение, запускаемое программой невозможно модифицировать.
 
 
Сообщения:51
Добрый день! Возможно вам подойдет
WaitforSingleObject
 
 
Сообщения:23
Добрый день!
Нашел решение в библиотеке автотестов Winium + Selenium WebDriver.
 
 
Сообщения:4
Ну ещё как вариант обернуть в класс, добавить событие и его обработчик, в коем уже запускать то, что уже нужно после старта 1й... Может это и не самый правильный вариант, но я все именно по такому пути иду.

Интересный портал - https://moi-nikopol.online/
VPS беру у них - https://datacheap.ru/
Изменен:16 июл 2019 11:34
 
 
Сообщения:23
amorka89:
Ну ещё как вариант обернуть в класс, добавить событие и его обработчик, в коем уже запускать то, что уже нужно после старта 1й... Может это и не самый правильный вариант, но я все именно по такому пути иду.

Winium - отличная библиотека.

Минус один нашел в том, что я не могу обнаружить на форме Delphi элемент DBGrid
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет