Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   cmd - Delphi (https://forum.antichat.xyz/showthread.php?t=141888)

Logan22 17.09.2009 00:40

cmd - Delphi
 
Подскажите пожалуйста!
Как написать правельно такое
чтоб дельфи исполняло фукцию cmd?
допустим при открытии delphi идет ping на узел?
ping -n 350 -l 10000 00.000.00.00

Извеняюсь, я очень нубский новичег)

Sams 17.09.2009 00:49

Можно записать нужные тебе команды в файл с расширением *.cmd, а потом использовать функцию ShellExecute. Хотя это не лучший вариант, но рабочий :)

Вот пример, кинь на форму один button.

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cmd: TStringList;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
cmd.Add('ping -n 350 -l 10000 00.000.00.00');
cmd.Add('pause');
cmd.SaveToFile('delphicmd.cmd');
ShellExecute(Form1.Handle, nil, 'delphicmd.cmd', nil, nil, SW_RESTORE);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
cmd:=TStringList.Create;
end;

end.


Logan22 17.09.2009 00:51

хм..) не это сильно палевно)))
Я хочу своему другу кинуть в автозагрузку прогу которая бы пинговала один сайтичег))) по этому вид консольда излишний)

wolmer 17.09.2009 01:12

Цитата:

Сообщение от Logan22
хм..) не это сильно палевно)))
Я хочу своему другу кинуть в автозагрузку прогу которая бы пинговала один сайтичег))) по этому вид консольда излишний)

Если не ошибаюсь то (если ошибся то полюбому связанно с winexec)

winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE);

С автозагрузкой сам разберешся, не сложно будет (сам погуглишь на эту тему)

Hiro Protagonist 17.09.2009 01:19

CreateProcess/Pipe - наиболее гибкий вариант.

WinExec/ShellExecute - бяки

Logan22 17.09.2009 01:51

wolmer, спасибо большое) я проверел с другом, его файрвол в бешенстве канает на ура))
Всем кто помогал и пытался помочь +++++ ))

Logan22 17.09.2009 09:29

)
Крайне извеняюсь за наглость) Но хотел бы ещё узнать)
На форме создать Edit1 и кнопку, и в Edit1 вписывать IP и кнопкой начать пинговать, как правельно осуществить, подскажите пожалуйста)?

winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE);" - эта функция действительно работает))) Но в место IP то что вверху пишится 00.000.00.00 должно вводимое в поле Edit1 IP)) Блин трудно объяснить) но думаю меня понять можно)

Хотел бы воспользоваться ситуацией и задать ещё один вопрос, если сайт какойто слабенький типо на движке мойвеб пинговать с разных компов, что с сайтом будет?)) и какой его конечный результат?

Maxxxtri23 17.09.2009 14:06

Результат будет 0. Если же конечно в качестве сервера не используется P1 166mhz

wolmer 17.09.2009 15:09

Цитата:

winexec('cmd /c ping -n 350 -l 10000 00.000.00.00', SW_HIDE); - эта функция действительно работает))) Но в место IP то что вверху пишится 00.000.00.00 должно вводимое в поле Edit1 IP)) Блин трудно объяснить) но думаю меня понять можно)
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text, SW_SHOW);

Logan22 17.09.2009 15:34

Цитата:

Сообщение от wolmer
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text, SW_SHOW);

Не компилит!(
ты помойму забыл закрыть кавычку как бы! после +edit1.text ) я закрыл серовно не компилит, не так не так!

Вот что пишит как ошибку в твоем варианте
" [Error] Unit1.pas(31): Incompatible types: 'String' and 'PAnsiChar' "

Если так то
winexec('cmd /c ping -n 350 -l 10000 '+edit1.text', SW_SHOW);
такая ошибка
[Error] Unit1.pas(31): Unterminated string


Время: 18:57