Windows平台创建控制台程序并实现双向管道(Pipe)
为了实现MySQL 完美Dump——MySQL 5.7+ 不能带密钥执行命令,shellexe表示无奈!有网友给出了设置Mysql [Client]参数的方法——如果服务器不可控——无效!也有网友给出通过批处理文件实现等等…统统忽略:上菜!
语言:ObjectPascal,DELPHI11
1. 创建进程
测试使用了cmd命令
procedure TfrmC20221201.btnCreateProcessClick(Sender: TObject);
var CmdExeName : String;
pcallBack : Pointer;
theTitle : String;
cr1,cr2 : LongBool;
begin
CmdExeName := Trim( edtCmdExeName.Text );
r.Lines.Add('RUN:'+CmdExeName);
btnCreateProcess.Enabled :=False;
osVer.dwOSVersionInfoSize := Sizeof(TOSVERSIONINFO);
GetVersionEX(osVer);
if osVer.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
SA.nLength := SizeOf(SA);
SA.lpSecurityDescriptor := nil;
SA.bInheritHandle := True;
cr1 := CreatePipe(hReadPipe, hWritePipe, @SA, 0);
cr2 := CreatePipe(hInPut_ReadPipe, hInPut_WritePipe, @SA, 0);
end
else
begin
cr1 := CreatePipe(hReadPipe, hWritePipe, nil