C++ 使用创建过程和ms绘制打开图像

C++ 使用创建过程和ms绘制打开图像,c++,windows,winapi,paint,createprocess,C++,Windows,Winapi,Paint,Createprocess,您好,我的任务是使用mspaint(microsoft paint)打开图像,并使用创建过程(windows.h)执行此操作 我该怎么做? 我尝试: 还有一件事,我需要用控件c关闭它,并确保我的exe没有关闭 我该怎么做呢 谢谢您的CreateProcessA()参数都错了。请尝试以下方法: STARTUPINFO={sizeof(info)}; 处理信息处理信息; std::string p=pic.getPath(); std::string cmd=“C:\\Windows\\system

您好,我的任务是使用mspaint(microsoft paint)打开图像,并使用创建过程(windows.h)执行此操作

我该怎么做? 我尝试:

还有一件事,我需要用控件c关闭它,并确保我的exe没有关闭 我该怎么做呢


谢谢

您的
CreateProcessA()
参数都错了。请尝试以下方法:

STARTUPINFO={sizeof(info)};
处理信息处理信息;
std::string p=pic.getPath();
std::string cmd=“C:\\Windows\\system32\\mspaint.exe\”“+p+”\;
if(CreateProcessA(NULL,const_cast(cmd.c_str()),NULL,NULL,FALSE,0,NULL,NULL,&info,&processInfo))
{
WaitForSingleObject(processInfo.hProcess,无限);
CloseHandle(processInfo.hproces);
CloseHandle(processInfo.hThread);
}

至于关闭MSPaint进程,您不需要使用CTRL-C。找到属于MSPaint窗口的
HWND
,然后向其发送
WM\u CLOSE
WM\u QUIT
消息
CreateProcess()
告诉您生成的进程的主线程ID,使用
EnumThreadWindows()
查找属于该线程的
HWND
s。然后使用
SendMessage()
向它发送消息。

您的
CreateProcessA()
参数都是错误的。请尝试以下方法:

STARTUPINFO={sizeof(info)};
处理信息处理信息;
std::string p=pic.getPath();
std::string cmd=“C:\\Windows\\system32\\mspaint.exe\”“+p+”\;
if(CreateProcessA(NULL,const_cast(cmd.c_str()),NULL,NULL,FALSE,0,NULL,NULL,&info,&processInfo))
{
WaitForSingleObject(processInfo.hProcess,无限);
CloseHandle(processInfo.hproces);
CloseHandle(processInfo.hThread);
}

至于关闭MSPaint进程,您不需要使用CTRL-C。找到属于MSPaint窗口的
HWND
,然后向其发送
WM\u CLOSE
WM\u QUIT
消息
CreateProcess()
告诉您生成的进程的主线程ID,使用
EnumThreadWindows()
查找属于该线程的
HWND
s。然后使用
SendMessage()
向其发送消息。

(0)尝试上述代码时发生了什么。(1) MSPaint不是用Ctrl-C关闭的。大概,这部分的答案是“你不能”我需要把Ctrl-C放在处理程序中,以杀死打开图片的程序,但我不知道如何做。对于(0)mspaintopen但没有图片(0)当你尝试上面的代码时发生了什么。(1) MSPaint不是用Ctrl-C关闭的。大概,这部分的答案是“你不能”我需要将Ctrl-C放在处理程序中,以杀死打开图片的程序,但我不知道如何操作,(0)mspaintopen但没有图片
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);
    }