Открыть изображение с процессом создания и MS Paint - PullRequest
0 голосов
/ 04 апреля 2020

Привет, у меня есть задача открыть изображение с помощью mspaint (microsoft paint) и сделать это с создать процесс (windows .h)

как я могу это сделать? я пытаюсь:

STARTUPINFO info = { sizeof(info) };
    PROCESS_INFORMATION processInfo;
    std::string p = pic.getPath();
    if (CreateProcessA(LPCSTR(p),"C:\\Windows\\system32\\mspaint.exe", NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
    {
        WaitForSingleObject(processInfo.hProcess, INFINITE);
        CloseHandle(processInfo.hProcess);
        CloseHandle(processInfo.hThread);
    }

и еще, мне нужно закрыть его с помощью элемента управления c и убедиться, что мой exe не закрывается как я могу это сделать также?

спасибо

1 Ответ

1 голос
/ 05 апреля 2020

Ваши параметры для CreateProcessA() все неверны. Попробуйте вместо этого:

STARTUPINFO info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
std::string p = pic.getPath();
std::string cmd = "C:\\Windows\\system32\\mspaint.exe \"" + p + "\"";
if (CreateProcessA(NULL, const_cast<LPSTR>(cmd.c_str()), NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo))
{
    WaitForSingleObject(processInfo.hProcess, INFINITE);
    CloseHandle(processInfo.hProcess);
    CloseHandle(processInfo.hThread);
}

Что касается закрытия процесса MSPaint, вы не используете для этого CTRL- C. Найдите HWND, который принадлежит окну MSPaint, и затем отправьте ему сообщение WM_CLOSE или WM_QUIT. CreateProcess() сообщает вам идентификатор основного потока порожденного процесса, используйте EnumThreadWindows(), чтобы найти HWND s, которые принадлежат этому потоку. А затем используйте SendMessage() для отправки сообщений на него.

...