扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

Windows涓璫reateprocess鎬庝箞浣跨敤

扬州沐宇科技
2023-11-15 21:51:18
windows

鍦╓indows涓紝CreateProcess鍑芥暟鐢ㄤ簬鍒涘缓鏂拌繘绋嬨€?/p>

浣跨敤CreateProcess鍑芥暟闇€瑕佸寘鍚玏indows.h澶存枃浠讹紝骞朵笖鍑芥暟鍘熷瀷濡備笅锛?/p>

BOOL CreateProcessA(
  LPCSTR                lpApplicationName,
  LPSTR                 lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL                  bInheritHandles,
  DWORD                 dwCreationFlags,
  LPVOID                lpEnvironment,
  LPCSTR                lpCurrentDirectory,
  LPSTARTUPINFOA        lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);

涓嬮潰鏄鍙傛暟鐨勮В閲婏細

  • lpApplicationName锛氾紙鍙€夛級瑕佽繍琛岀殑鍙墽琛屾枃浠剁殑鍚嶇О銆?/li>
  • lpCommandLine锛氾紙鍙€夛級鍛戒护琛屽弬鏁般€?/li>
  • lpProcessAttributes锛氾紙鍙€夛級杩涚▼瀹夊叏灞炴€с€?/li>
  • lpThreadAttributes锛氾紙鍙€夛級绾跨▼瀹夊叏灞炴€с€?/li>
  • bInheritHandles锛氭寚绀烘柊杩涚▼鏄惁缁ф壙鐖惰繘绋嬬殑鍙ユ焺銆?/li>
  • dwCreationFlags锛氭帶鍒舵柊杩涚▼鐨勫垱寤烘柟寮忋€?/li>
  • lpEnvironment锛氾紙鍙€夛級鏂拌繘绋嬬殑鐜鍙橀噺銆?/li>
  • lpCurrentDirectory锛氾紙鍙€夛級鏂拌繘绋嬬殑褰撳墠宸ヤ綔鐩綍銆?/li>
  • lpStartupInfo锛氬惎鍔ㄤ俊鎭粨鏋勪綋銆?/li>
  • lpProcessInformation锛氳繘绋嬩俊鎭粨鏋勪綋銆?/li>

涓嬮潰鏄竴涓娇鐢–reateProcess鍑芥暟鍒涘缓涓€涓柊杩涚▼鐨勭ず渚嬶細

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

int main() {
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    // 浣跨敤CreateProcess鍑芥暟鍒涘缓鏂拌繘绋?/span>
    if (!CreateProcessA("C:\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
        std::cout << "CreateProcess failed: " << GetLastError() << std::endl;
        return 1;
    }

    // 绛夊緟鏂拌繘绋嬬粨鏉?/span>
    WaitForSingleObject(pi.hProcess, INFINITE);

    // 鍏抽棴鍙ユ焺
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);

    return 0;
}

鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑浣跨敤CreateProcess鍑芥暟鍒涘缓涓€涓柊鐨凬otepad杩涚▼銆傞鍏堬紝鎴戜滑瀹氫箟浜嗕竴涓猄TARTUPINFO缁撴瀯浣撳拰涓€涓狿ROCESS_INFORMATION缁撴瀯浣擄紝鐒跺悗閫氳繃ZeroMemory灏嗚繖涓や釜缁撴瀯浣撶殑鍐呭瓨娓呴浂銆傛帴涓嬫潵锛屾垜浠皟鐢–reateProcess鍑芥暟鏉ュ垱寤烘柊鐨凬otepad杩涚▼銆傚鏋淐reateProcess鍑芥暟璋冪敤鎴愬姛锛屽畠灏嗚繑鍥炰竴涓潪闆跺€硷紝骞朵笖鏂拌繘绋嬬殑鍙ユ焺鍜岀嚎绋嬪彞鏌勫皢淇濆瓨鍦≒ROCESS_INFORMATION缁撴瀯浣撲腑銆傛垜浠彲浠ヤ娇鐢╓aitForSingleObject鍑芥暟鏉ョ瓑寰呮柊鐨勮繘绋嬬粨鏉燂紝鐒跺悗閫氳繃CloseHandle鍑芥暟鍏抽棴杩涚▼鍜岀嚎绋嬪彞鏌勩€?/p>

闇€瑕佹敞鎰忕殑鏄紝CreateProcess鍑芥暟鏈変竴涓瀛楃鐗堟湰CreateProcessW鍜屼竴涓獎瀛楃鐗堟湰CreateProcessA銆傚湪涓婇潰鐨勭ず渚嬩腑锛屾垜浠娇鐢ㄤ簡CreateProcessA鍑芥暟鏉ュ垱寤烘柊杩涚▼锛岃繖琛ㄧず鎴戜滑浣跨敤鐨勬槸绐勫瓧绗︼紙ASCII锛夌増鏈€傚鏋滈渶瑕佷娇鐢ㄥ瀛楃锛圲nicode锛夌増鏈紝璇蜂娇鐢–reateProcessW鍑芥暟锛屽苟灏嗙浉鍏冲弬鏁扮殑绫诲瀷鏇存敼涓哄瀛楃鐗堟湰銆?/p>

扫码添加客服微信