Показать сообщение отдельно
  #1  
Старый 22.04.2009, 22:43
TJoY TJoY вне форума
Прохожий
 
Регистрация: 22.04.2009
Сообщения: 5
Репутация: 10
По умолчанию Запуск ехе или bat файла с параметром

Имеем батник 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!" , подскажите, что я не так делаю? Или может есть другие варианты запуска батника?
Ответить с цитированием