CreateProcess 启动带参数的EXE 并获得PID

var
   MysqlStartupInfo:TStartupInfo;
   MysqlProcessInfo:TProcessInformation;
   MysqlPid: Integer;


procedure TForm1.Button_StartMysqlClick(Sender: TObject);
begin
  //ShellExecute(Self.handle,'open', PWideChar(edit_MysqlPath.Text + '\bin\mysqld.exe'),PWideChar('--defaults-file=my.ini'),'',SW_SHOWNORMAL);
  FillChar(MysqlProcessInfo,sizeof(MysqlProcessInfo),0);
  FillChar(MysqlStartupInfo,Sizeof(MysqlStartupInfo),0);
  MysqlStartupInfo.cb:=Sizeof(MysqlStartupInfo);
  MysqlStartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
  MysqlStartupInfo.wShowWindow:=SW_SHOW;
  If CreateProcess(PWideChar(edit_MysqlPath.Text + '\bin\mysqld.exe'),PWideChar('"' + edit_MysqlPath.Text + '\bin\mysqld.exe' + '"' + ' --defaults-file=my.ini'),nil,nil,False,0,
    nil,nil,MysqlStartupInfo,MysqlProcessInfo) then
  begin

    memo1.Lines.Add('[' + FormatdateTime('hh:nn:ss', Now)+ '] MYSQL数据库启动成功');

    MysqlPid := MysqlProcessInfo.dwProcessId;

  end
  else
    begin
      memo1.Lines.Add('[' + FormatdateTime('hh:nn:ss', Now)+ '] MYSQL数据库启动失败,请检查相关配置');
    end;
end;

                
在Python的`_winapi`模块中,`CreateProcess`函数是一个Windows API接口,用于创建一个新的进程,并在其中运行指定的程序(由`executable`参数指定)。`_winapi.CreateProcess`函数通常用于复杂的跨平台应用程序环境,尤其当涉及到与Windows系统深度交互时。 这个函数的语法大致如下: ```python hp, ht, pid, tid = _winapi.CreateProcess( executable, args, dwCreationFlags=None, processAttributes=None, threadAttributes=None, bInheritHandles=False, dwLogfileMode=0, startupinfo=None, creationflags=CREATE_DEFAULT_ERROR_MODE | DEBUG_ONLY_THIS_PROCESS, env=None, currentDirectory=None ) ``` 让我们详细解释一下关键参数: 1. **executable** (`str`) - 这是你要启动的程序的完整文件路径。例如,如果目标程序是一个`.exe`文件,则这是一个指向此文件的路径。 2. **args** (`list[str]`) - 一个包含命令行参数的列表。如果`executable`需要额外的参数,你可以在这里指定它们。例如,如果`executable`是某个脚本名,而你希望它接受某些参数,那么这里就是添加这些参数的地方。 下面是一些常用的`CreateProcess`函数的其他参数简述: - 控制新进程的行为,如是否调试等。 - **processAttributes** (`struct`, 可选) - 如果提供的,则控制新进程的安全属性。 - **threadAttributes** (`struct`, 可选) - 同样,若提供则控制新线程的安全属性。 - **bInheritHandles** (`bool`, 默认为`False`) - 决定新进程是否继承其父进程中打开的手柄。 - **dwLogfileMode** (`int`, 默认为`0`) - 设置日志文件模式。 - **startupinfo** (`STARTUPINFO`结构体, 可选) - 包含有关启动过程的信息,如窗口属性等。 - **creationflags** (`int`, 默认同`dwCreationFlags`) - 控制如何创建新进程。 - **env** (`dict`, 可选) - 新进程环境变量字典,包括用户环境变量和当前目录环境变量。 - **currentDirectory** (`str`, 可选) - 新进程的起始目录。 使用`CreateProcess`函数时需注意安全性及权限问题,特别是在操作重要资源或执行敏感操作时。不当使用可能引发安全风险或其他未预见的问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值