文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>神奇的CreateProcess命令行

神奇的CreateProcess命令行

时间:2010-08-26  来源:glshader

今天用CreateProcess创建一个进程, 并且使用命令行参数, 也就是lpCommandLine这个参数

 

BOOL WINAPI CreateProcess(
  __in_opt     LPCTSTR lpApplicationName,
  __inout_opt  LPTSTR lpCommandLine,
  __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in         BOOL bInheritHandles,
  __in         DWORD dwCreationFlags,
  __in_opt     LPVOID lpEnvironment,
  __in_opt     LPCTSTR lpCurrentDirectory,
  __in         LPSTARTUPINFO lpStartupInfo,
  __out        LPPROCESS_INFORMATION lpProcessInformation
);

 

我原本以为微软不会恶搞我, 但是没想到啊!

在创建的进程中, 我竟然无法从_tWinMain中获得命令行参数!

 

int CALLBACK WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
);

这里的 lpCmdLine为空.

我用procexp.exe查了一下, 命令行中有值, 我再用GetCommandLine, 也有值.


但是 lpCmdLine竟然是空.


最后我到网上查了一下, 在使用 lpCmdLine的时候, 传入的命令行参数要自己用空格隔开!!!

比如:

 

WCHAR commandLine[32] = {0};
::swprintf_s(commandLine, 32, " arg");
::CreateProcess(..., commandLine, ...);

 


这样才能在创建的进程中从lpCmdLine获得命令行参数.

相关阅读 更多 +
排行榜 更多 +
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载
货运猎人

货运猎人

飞行射击 下载