加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – CreateProcessW不遵守命令行

发布时间:2020-12-16 07:10:43 所属栏目:百科 来源:网络整理
导读:参见英文答案 CreateProcess doesn’t pass command line arguments????????????????????????????????????8个 我正在尝试在dll中实现CreateProcessW,以便用户可以在单独的进程中启动应用程序. 对于初学者,我在代码中硬编码命令,直到我搞清楚为止. 我有 START
参见英文答案 > CreateProcess doesn’t pass command line arguments????????????????????????????????????8个
我正在尝试在dll中实现CreateProcessW,以便用户可以在单独的进程中启动应用程序.

对于初学者,我在代码中硬编码命令,直到我搞清楚为止.

我有

STARTUPINFO si = {sizeof(STARTUPINFO),0};
si.cb = sizeof(si);
PROCESS_INFORMATION pi = {0};
LPCTSTR AppName=L"c:utilitiesdepends.exe";
LPTSTR Command = L"c:utilitiestee.exe";
if (CreateProcessW(AppName,Command,CREATE_DEFAULT_ERROR_MODE,&si,&pi)) {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        return GX_RESULT_OK;
    } else {
        .. show error msg
    }

这将启动Depends但不会打开Tee.exe.没有错误,它只是忽略命令行参数.参数是正确的,我可以在运行提示符下运行它,它工作正常.如果我将AppName留空并指定Depends.exe作为Command参数,它也可以,但如果我指定

LPTSTR Command = L"c:utilitiesdepends.exe c:utilitiestee.exe";

我得到错误3:“系统找不到指定的路径”.

此外,通过指定lpCurrentDirectory参数,它同样被忽略.

解决方法

您必须在命令中提供可执行文件

> Appname应包含可执行文件的完整路径
>命令还应该包含argv [0]

如果你想用记事本打开文件t.txt,你可以给出如下:

> Appname =“c:/windows/notepad.exe”;
> command =“notepad c:/temp/t.txt”;

你甚至不必提供真正的程序名称,即使假名也能完成这项工作,因为它只是一个占位符.

像这样:command =“fake c:/temp/t.txt”;

现在在notepad.exe中:

> argv [0] =“记事本”;
> argv [1] =“c:/temp/t.txt”;

看到这个完整的例子:

#include <Windows.h>
#include <iostream>

using namespace std;

int main(){
    STARTUPINFO si = {sizeof(STARTUPINFO),0};
    si.cb = sizeof(si);
    PROCESS_INFORMATION pi = {0};
    LPTSTR AppName=L"C:/Windows/notepad.exe";
    wchar_t Command[] = L"notepad C:/Temp/t.txt"; 
    DWORD res = CreateProcess(AppName,&pi);
    if (res) {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        return 0;
    } else {
        cerr<<"error..."<<GetLastError()<<endl;
    }; 
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读