Имеем батник send.bat следующего содержания:
Код:
@echo off
IF /%1==/ GOTO ERR
f:
cd public
send /a=a
send "hello %1!" to user1
send "hello %1!" to user2
send "hello %1!" to user3
exit
:ERR
echo No parameter!
exit
где %1 это числовой параметр который указывается при запуске батника из командной строки (пример "C:\>send.bat 01"), результат выполнения батника это отправка сообщения hello с номером %1.
Пробую через WinExec
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
bb:=ComboBox2.Text;
if bb='' then
begin
MessageBox(Application.Handle,'укажите номер', 'error', MB_OK +MB_ICONEXCLAMATION);
end else
WinExec(PChar('c:\send.bat '+bb),SW_SHOW);
MessageBox(Application.Handle,'good', 'info', MB_OK +MB_ICONINFORMATION);
end;
Все проходит как нада, но хотелось бы ожидать выполнение батника ну и контролировать сам процесс. Решил попробовать через CreateProcess:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
FillChar( Si, SizeOf( Si ) , 0 );
with Si do begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 1;
end;
.........
CreateProcess(nil,'c:\send.bat +bb',nil,nil,false, Create_default_error_mode,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
.........
Но тут не так все хоршо как хотелось, параметр "bb" он же "%1" в батнике передается не числом а текстом т.е. не "hello 01!" а "hello bb!" , подскажите, что я не так делаю? Или может есть другие варианты запуска батника?