終身高級VIP會員
- 資源幣
- 79
- 積分
- 155
- 貢獻(xiàn)
- 0
- 在線時間
- 42 小時
- 注冊時間
- 2018-9-5
- 最后登錄
- 2024-8-27
|
#### 三種編碼
含字符串的結(jié)構(gòu)體或api都分為寬窄版本
寬字節(jié) wchar_t
窄字節(jié) 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, // 必須為全路徑,不能加參數(shù)
// "\"C:\\Program Files\\WinHex\\WinHex64.exe\" -max", // 可以不是全路徑,有空格用引號括起來,寬字節(jié)版本下此參數(shù)不能為常量字符串
// NULL,
// NULL,
// FALSE,
// CREATE_NO_WINDOW, // CREATE_NO_WINDOW只對控制臺應(yīng)用有效
// NULL,
// NULL,
// &si, // 這兩個傳出參數(shù)不填會造成C05
// &pi))
//{
// fprintf(stderr, "create Process failed");
// return -1;
//}
// 會產(chǎn)生三個進(jìn)程:自身,隱藏的控制臺,計算器
if (!CreateProcess("C:\\Windows\\SysWOW64\\cmd.exe", // 必須為全路徑,不能加參數(shù)
"/c calc", // 可以不是全路徑,有空格用引號括起來,寬字節(jié)版本下此參數(shù)不能為常量字符串
NULL,
NULL,
FALSE,
CREATE_NO_WINDOW, // 只能用于隱藏控制臺
NULL,
NULL,
&si, // 這兩個傳出參數(shù)不填會造成C05
&pi))
{
fprintf(stderr, "create Process failed");
return -1;
}
WaitForSingleObject(pi.hProcess, INFINITE); // 父進(jìn)程進(jìn)入就緒態(tài)等待子進(jìn)程執(zhí)行完畢
printf("child complete");
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
|
|