Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определение окончания работы другого приложения

Delphi , Программа и Интерфейс , Приложения чужие

Определение окончания работы другого приложения

WinExec сразу после запуска приложения возвращает его дескриптор. Для определения завершения программы вы должны вызывать функцию GetModuleUsage(InstanceID), где InstanceID - дескриптор запущенного функцией WinExec приложения. Если возвращаемый результат содержит ноль, приложение завершило свою работу. Сделайте проверку в таймерном цикле и задача решена.

Here's the translation of the provided C++ code into Russian:

#include  <windows.h>
#include  <stdio.h>

int main() {
    // Запуск приложения с помощью WinExec
    HANDLE hInstance = WinExec("путь/к/вашему/приложению.exe", 0);

    // Проверка успешности запуска
    if (hInstance == NULL) {
        printf("Ошибка запуска приложения\n");
        return 1;
    }

    // Использование таймера для периодического проверки, если приложение закончилось
    DWORD lastCheckTime = GetTickCount();
    while (true) {
        // Ожидание 100мс перед следующим проверкой
        Sleep(100);

        // Получение текущего времени
        DWORD currentTime = GetTickCount();

        // Проверка, если прошло достаточно времени с последней проверки
        if (currentTime - lastCheckTime >= 1000) { // 1 секунда
            lastCheckTime = currentTime;

            // Использование GetModuleUsage для проверки, если приложение все еще запущено
            DWORD usage = GetModuleUsage(hInstance);
            if (usage == 0) {
                // Приложение закончилось, выйти из цикла
                break;
            }
        }
    }

    // Закрытие handles
    CloseHandle(hInstance);

    return 0;
}

This code uses WinExec to launch the application and then waits for a short period of time (100ms in this example) before checking if the application has finished using GetModuleUsage. If the application is still running, it continues to wait and check until enough time has passed or the application finishes.

Note that GetModuleUsage returns the number of bytes used by the module. If the result is zero, it means the module has been unloaded, which indicates that the application has finished its execution.

Also, make sure to close the handle using CloseHandle when you're done with it to free up system resources.

Определение окончания работы другого приложения заключается в вызове функции GetModuleUsage с дескриптором запущенного приложения, используя функцию WinExec, и проверке результата на нуль, что указывает на успешное завершение программы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложения чужие ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:23:37/0.0139319896698/1