我想要CreateProcess函数来调用一个exe文件,并且传2个参数给这个exe程序,exe这边用__argv[i]去获取,我现在只知道直接把要传的参数以字符串形式加在CreateProcess后面的某个参数里面就可以了,但是看了CreateProcess函数的参数说明,也没搞懂是加在什么地方,哪位朋友知道? 比如我调用process.exe程序,同时给它传过去2个参数127.0.0.1 和 111。
CreateProcess(exe的路径, NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)
应该在哪个参数里面加呢?
CreateProcess(exe的路径, NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)
应该在哪个参数里面加呢?
"process 127.0.0.1 111"即可
LPCTSTR lpApplicationName, // name of executable module
LPTSTR lpCommandLine, // command line string
LPSECURITY_ATTRIBUTES lpProcessAttributes, // SD
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
BOOL bInheritHandles, // handle inheritance option
DWORD dwCreationFlags, // creation flags
LPVOID lpEnvironment, // new environment block
LPCTSTR lpCurrentDirectory, // current directory name
LPSTARTUPINFO lpStartupInfo, // startup information
LPPROCESS_INFORMATION lpProcessInformation // process information
);lpCommandLine
[in, out] Pointer to a null-terminated string that specifies the command line to execute.
不是127.0.0.1字符串 而是 char strIP[10];
我试了下 不知道怎么把strIP传过去。
TCHAR szApp[MAX_PATH] = _T("F:\\process.exe ");
TCHAR szIP[10] = {0};
... // szIP内存,_stprintf_s/_stprintf()之类的格式化szIP
然后调用_tcscat_s()
例如下面的
TCHAR szApp[MAX_PATH] = _T("F:\\process.exe ");
TCHAR szIP[10] = {0};
_stprintf_s(szIP, _countof(szIP), _T("%s"), _T("111"));
_tcscat_s(szApp, szIP);
STARTUPINFO si = {sizeof(si)};
PROCESS_INFORMATION pi = {0};
if(CreateProcess(NULL, szApp, ....,&si, &pi)
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
首先函数描述如下BOOL CreateProcess(
LPCTSTR lpApplicationName, // 执行程序文件名
LPTSTR lpCommandLine, // 参数行
LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程安全参数
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全参数
BOOL bInheritHandles, // 继承标记
DWORD dwCreationFlags, // 创建标记
LPVOID lpEnvironment, // 环境变量
LPCTSTR lpCurrentDirectory, // 运行该子进程的初始目录
LPSTARTUPINFO lpStartupInfo, // 创建该子进程的相关参数
LPPROCESS_INFORMATION lpProcessInformation // 创建后用于被创建子进程的信息
); 其次
你需要搞清楚你的环境是ASCII还是Unicode
在普通环境下(ASCII),LPTSTR 和 char * 是一回事。
在Unicode条件下,LPTSTR 是 WCHAR *;
char * 到 WCHAR *的转换可用MultiBytesToWideChar()函数
谢谢,这个应该是要得答案,我刚才把几个char用+号连起来,难怪不行,必须先连接成一个,呵呵,再去试试