使用创建过程和 ms paint 打开图像

Open image with create process and ms paint

您好,我的任务是使用 mspaint(微软画图)打开图像,然后使用 create process (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 没有关闭 我也该怎么做?

谢谢

你给 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。找到属于 MSPaint window 的 HWND,然后向其发送 WM_CLOSEWM_QUIT 消息。 CreateProcess() 告诉您生成进程的主线程 ID,使用 EnumThreadWindows() 查找属于该线程的 HWND。然后使用SendMessage()向它发送消息。