WinExec Yardımı İstiyorum.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
MiLiTaN
Üye
Mesajlar: 13
Kayıt: 01 Nis 2006 01:52

WinExec Yardımı İstiyorum.

Mesaj gönderen MiLiTaN »

Selamun Aleyküm

Programımda kullanıcının yazacağı siteye ping attıracağım.Yani bir text teki yazıyı winexec komutuyla ping attırmak istiyorum fakat bir türlü başaramadım.
Yardımlarınızı bekliyorum.
oyle
Üye
Mesajlar: 137
Kayıt: 17 Eki 2006 05:53

Mesaj gönderen oyle »

http://delphi.about.com/od/internetintr ... 81503a.htm bu sayfada istedigin sey var. winexec ile yapimamis ama

Kod: Tümünü seç

function Ping(InetAddress : string) : boolean;
fonksiyonuna edit' taki degeri parametre gecmeniz yeterli.

Kod: Tümünü seç

ping(edit1.text);
gibi.
MiLiTaN
Üye
Mesajlar: 13
Kayıt: 01 Nis 2006 01:52

Mesaj gönderen MiLiTaN »

oyle yazdı:http://delphi.about.com/od/internetintr ... 81503a.htm bu sayfada istedigin sey var. winexec ile yapimamis ama

Kod: Tümünü seç

function Ping(InetAddress : string) : boolean;
fonksiyonuna edit' taki degeri parametre gecmeniz yeterli.

Kod: Tümünü seç

ping(edit1.text);
gibi.
Peki bu şekilde dönen sonucu bir ekrana nasıl yazdırabilirim?
Ayrıca WinExec komutu ile aynı değeri gönderebilir mi?
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

Mesaj gönderen sTb »

Bildiğim kadarı ile winexec ile yapılan pingin dönüşünü alamıyorsunuz . Ben aşağıdaki gibi kullanıyorum.

Formunuza button, listbox, edit ve IdIcmpClient bileşeni koyup;

Butona,

Kod: Tümünü seç

  IdIcmpClient1.OnReply := IdIcmpClient1Reply;
  IdIcmpClient1.ReceiveTimeout := 990;
  try
  IdIcmpClient1.Host := edit1.Text;
  IdIcmpClient1Reply.ping;
  finally
  end;
IdIcmpClient nin onreply event ine de,

Kod: Tümünü seç

var
  sTime,saat: string;
begin

  if (ReplyStatus.MsRoundTripTime = 0) then
  sTime := '<1'
  else
  sTime := '=';
  if ReplyStatus.BytesReceived>1 then begin
  saat:=timetostr(time);
  ListBox1.Items.Add(Format('%s => %s : Bayt=%d ttl=%d Süre%s%d ms',
  [saat,
  ReplyStatus.FromIpAddress,
  ReplyStatus.BytesReceived,
 // ReplyStatus.SequenceId,
  ReplyStatus.TimeToLive,
  sTime,
  ReplyStatus.MsRoundTripTime]));
  end else ListBox1.Items.add(edit1.Text+' cevabı : İstek Zaman Aşımına Uğradı');
Kolay Gelsin
" Her bildiğin doğru olsun. Ama her doğruyu her yerde söylemek doğru değildir. "
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

Delphi 7 için Indy 9.0'da kodlar biraz farklılaşmış... Modifiye edilmiş hali...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  IdIcmpClient1.OnReply := IdIcmpClient1Reply; 
  IdIcmpClient1.ReceiveTimeout := 990;
  try
    IdIcmpClient1.Host := Edit1.Text;
    IdIcmpClient1.Ping;
  finally
  end;
end;

Kod: Tümünü seç

procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
var 
  sTime, Saat: string;
begin

  if (AReplyStatus.MsRoundTripTime = 0)
    then sTime := '<1'
    else sTime := '=';
  if AReplyStatus.BytesReceived > 1 then begin
    Saat := TimeToStr(Time);
    ListBox1.Items.Add( Format('%s => %s : Bayt=%d ttl=%d Süre%s%d ms',
                        [ Saat,
                          AReplyStatus.FromIpAddress,
                          AReplyStatus.BytesReceived,
                         // ReplyStatus.SequenceId,
                          AReplyStatus.TimeToLive,
                          sTime,
                          AReplyStatus.MsRoundTripTime ]));
  end else ListBox1.Items.add( Edit1.Text + ' cevabı : İstek Zaman Aşımına Uğradı');
end;
Resim
Resim ....Resim
MiLiTaN
Üye
Mesajlar: 13
Kayıt: 01 Nis 2006 01:52

Mesaj gönderen MiLiTaN »

Merhabalar

Delphi 7 de kodu şu şekilde yazdım:


Buton:

Kod: Tümünü seç

IdIcmpClient1.OnReply := IdIcmpClient1.OnReply;
  IdIcmpClient1.ReceiveTimeout := 990;
  try
    IdIcmpClient1.Host := Edit1.Text;
    IdIcmpClient1.Ping;
  finally
  end;

OnReply:

Kod: Tümünü seç

if (AReplyStatus.MsRoundTripTime = 0)
    then sTime := '<1'
    else sTime := '=';
  if AReplyStatus.BytesReceived > 1 then begin
    Saat := TimeToStr(Time);
    ListBox1.Items.Add( Format('%s => %s : Bayt=%d ttl=%d Süre%s%d ms',
                        [ Saat,
                          AReplyStatus.FromIpAddress,
                          AReplyStatus.BytesReceived,
                         // ReplyStatus.SequenceId,
                          AReplyStatus.TimeToLive,
                          sTime,
                          AReplyStatus.MsRoundTripTime ]));
  end else ListBox1.Items.add( Edit1.Text + ' cevabı : İstek Zaman Aşımına Uğradı');
end;
Bu şekilde çalıştı ping cevabını bana yolladı.Şimdi ben bu program ile eğer kullanıcı istek duyarsa belli aralıklarda o siteye ping attırıp gelen cevabı farklı şekilde kullanıcıya sunduracağım ama şöyle bir durum var bu ping olayı ping atılan siteyi yavaşlatır mı?
Yani siteye herhangi bir zararı olur mu?
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

Şu foruma bayılıyorum :D üzerinden geçilmemiş çözüm bulmamış pek az konu var güzel örneğiniz için teşekkür ederim. :alkis: Saygılar :elsalla:
Cevapla