首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CreateProcessA() windows 10 c++代码的问题::块

CreateProcessA() windows 10 c++代码的问题::块
EN

Stack Overflow用户
提问于 2022-07-31 22:03:52
回答 1查看 48关注 0票数 0

我对CreateProcessA有一个问题,我在堆栈溢出和其他站点上查看了有关它的所有问题,我按照其他人的建议重写了一个程序,但是它仍然没有执行任何命令并返回错误998。我确信字符串是正确的,因为它既适用于系统,又直接写在cmd上。我真的不知道该怎么办了。我也读过它是如何工作的,但我不想工作。对不起,如果我的英语不好,感谢那些回答我。

代码语言:javascript
运行
复制
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    STARTUPINFOA si;
    si.cb = sizeof(si);
    PROCESS_INFORMATION pi;
    string com="\"C:\\Program Files\\MKVToolNix\\mkvextract.exe\" \"D:\\Anime recuperati\\BKT\\Caricati\\[BKT] Jormungand 01-12 END BDRip\\Jormungand - Ep01.mkv\" attachments -f 1:\"C:\\Users\\Utente\\Desktop\\Subs\\n\\Jormungand - Ep01\\Justus-Bold.ttf\"";
    CreateProcessA(NULL,const_cast<char *>(com.c_str()),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
    cout<<GetLastError();
    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-31 22:42:24

您传递未初始化的STARTUPINFOA si;。必须初始化它。见示例

代码语言:javascript
运行
复制
#include <iostream>
#include <string>
#include <windows.h>

using std::cout;
using std::string;

int main()
{
    STARTUPINFOA si{sizeof(si)};
    PROCESS_INFORMATION pi{};
    string com = R"("C:\Program Files\MKVToolNix\mkvextract.exe" "D:\Anime recuperati\BKT\Caricati\[BKT] Jormungand 01-12 END BDRip\Jormungand - Ep01.mkv" attachments -f 1:"C:\Users\Utente\Desktop\Subs\n\Jormungand - Ep01\Justus-Bold.ttf)";
    CreateProcessA(nullptr, const_cast<char *>(com.c_str()), nullptr, nullptr, false, 0, nullptr, nullptr, &si, &pi);
    cout<<GetLastError();
    return 0;
}
  1. 如果您使用#include <string>,请使用std::string
  2. 使用R"(...)"避免使用转义序列。
  3. nullptr中使用C++。
  4. false中使用C++。
  5. 被认为是糟糕的做法?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73187217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档