终身高级VIP会员
- 资源币
- 79
- 积分
- 155
- 贡献
- 0
- 在线时间
- 42 小时
- 注册时间
- 2018-9-5
- 最后登录
- 2024-8-27
|
#### 三种编码
含字符串的结构体或api都分为宽窄版本
宽字节 wchar_t
窄字节 char
兼容模式 TCHAR
utf-8 u8"张三"
#### CreateProcess
```c++
#include <stdio.h>
#include <windows.h>
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&pi, sizeof(pi));
//if (!CreateProcess(NULL, // 必须为全路径,不能加参数
// "\"C:\\Program Files\\WinHex\\WinHex64.exe\" -max", // 可以不是全路径,有空格用引号括起来,宽字节版本下此参数不能为常量字符串
// NULL,
// NULL,
// FALSE,
// CREATE_NO_WINDOW, // CREATE_NO_WINDOW只对控制台应用有效
// NULL,
// NULL,
// &si, // 这两个传出参数不填会造成C05
// &pi))
//{
// fprintf(stderr, "create Process failed");
// return -1;
//}
// 会产生三个进程:自身,隐藏的控制台,计算器
if (!CreateProcess("C:\\Windows\\SysWOW64\\cmd.exe", // 必须为全路径,不能加参数
"/c calc", // 可以不是全路径,有空格用引号括起来,宽字节版本下此参数不能为常量字符串
NULL,
NULL,
FALSE,
CREATE_NO_WINDOW, // 只能用于隐藏控制台
NULL,
NULL,
&si, // 这两个传出参数不填会造成C05
&pi))
{
fprintf(stderr, "create Process failed");
return -1;
}
WaitForSingleObject(pi.hProcess, INFINITE); // 父进程进入就绪态等待子进程执行完毕
printf("child complete");
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
|
|