belli bir zamanda program çalıştırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

belli bir zamanda program çalıştırma

Mesaj gönderen emrahkaraarslan »

meraba arkadaşlar şu yazdığım kodları kullandığımda, istediğim şekilde program çalışıyor; ama mutaka formun açık olması gerekiyor. Yani dcmintray
adlı companent kullanarak system traya gönderdiğimde, program işlevini yitiriyor, nasıl bir düzenleme yapmam gerekir.

Kod: Tümünü seç


begin
   label2.Caption:=TimeToStr(now);
     
   if label2.Caption='01:00:00' then
 begin
    WinExec('D:\katırr\emule.exe',SW_SHOWNORMAL);
  end;
end;
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
tatu
Üye
Mesajlar: 25
Kayıt: 09 Nis 2005 06:13

windows scheduled task

Mesaj gönderen tatu »

windows scheduled taskı kullanarak belirlediğin zaman dilimlerinde çalışmasını sağlayabilirsin.
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Re: windows scheduled task

Mesaj gönderen emrahkaraarslan »

tatu yazdı:windows scheduled taskı kullanarak belirlediğin zaman dilimlerinde çalışmasını sağlayabilirsin.
evet biliyorum yalnız, böyle yapmak istiyorum.
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Bu bir Timer nesnesinin içerisinde değil mi ? System Tray'e gittiğinde de Timer durmaz ki, dolayısı ile çalışmasına devam eder ve işlevini yapar...

- başka bir sorun olmalı... kodlarını tekrar gözden geçir. Minimize yapıldığında timer durduran bir kod içertiyor olabilir...

- Timer interval değeri istediğin zaman dilimini yakalayacak kadar kısa olmalı.

-Ayrıca bu işlemi yapmadan önce "eğer EMULE çalışmıyorsa"'yı mutlaka kontrol ettir.
Resim
Resim ....Resim
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

mrmarman yazdı:- Bu bir Timer nesnesinin içerisinde değil mi ? System Tray'e gittiğinde de Timer durmaz ki, dolayısı ile çalışmasına devam eder ve işlevini yapar...

- başka bir sorun olmalı... kodlarını tekrar gözden geçir. Minimize yapıldığında timer durduran bir kod içertiyor olabilir...

- Timer interval değeri istediğin zaman dilimini yakalayacak kadar kısa olmalı.

-Ayrıca bu işlemi yapmadan önce "eğer EMULE çalışmıyorsa"'yı mutlaka kontrol ettir.
kodlar aynen yukarıda yazdığım gibi söylediğiniz maddelerin hiç birinde sorun yok.
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- EMULE çalışıyor mu sorgusunu nerede yapıyorsun, göremiyorum ?!

- Neyse ben sana anahtar teslimi kod hazırladım. Bana da lazımdı bir ara ama elim değmemişti. Bahane ile kendi downloadlarımı da gece otomatik başlamaya ayarlamış oluyorum...

- Bu arada üçüncü parti bir TrayIcon bileşeni kullanmak yerine her zaman olduğu gibi kendi yağımızda kavrulmayı öğrenmeliyiz diyerek, bileşen yerine kod ile TrayIcon özelliği ekledim.

Download Linki (Kaynak Kodları ve Çalışan EXE içinde)
Ref : http://rapidshare.com/files/19153670/Za ... v.zip.html

Kod: Tümünü seç

const
  WM_ICONTRAY = WM_USER + 1;

Kod: Tümünü seç

  private
    TrayIcon: TNotifyIconData;
    procedure TrayMessage(var Msg: TMessage); message WM_ICONTRAY;
    Procedure FormuGizle(Sender: TObject);
    Procedure FormuGoster;
    Procedure MenuyuGoster;
    { Private declarations }
// Anahtar Fonksiyon bu, Emule çalışıyorsa işlem yapmasın diye..

Kod: Tümünü seç

Function EmuleCalisiyor : Boolean;
Var
  hEmule : THandle;
  Title,
  ClassName : array[0..255] of char;
begin
  Result := False;
  hEmule := Application.Handle;
  while ( hEmule > 0 ) AND (NOT Result) do
  begin
    GetWindowText(hEmule, Title    ,255);
    GetClassName (hEmule, ClassName,255);
    If (ClassName = '#32770') AND ( Pos('EMULE', UpperCase(Title) ) > 0 )
      then Result := True;
    hEmule := GetnextWindow(hEmule, GW_HWNDNEXT);
  end; // While
end;

Kod: Tümünü seç

procedure TForm1.FormuGizle(Sender: TObject);
begin
  with TrayIcon do
  begin
    cbSize := SizeOf(TrayIcon);
    Wnd := Handle;
    uID := 0;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
    uCallbackMessage := WM_ICONTRAY;
    hIcon := Application.Icon.Handle;
    StrPCopy(szTip, Application.Title);
  end;
  Shell_NotifyIcon(NIM_ADD, @TrayIcon); // System Tray'e yeni bir Icon ekle
  Form1.Hide;                         // Formu gizle
end;

Kod: Tümünü seç

procedure TForm1.FormuGoster;
Begin // Uses'a ShellApi
  Form1.Show;
  Application.Restore;
  Form1.SetFocus;
  Application.BringToFront;
  Shell_NotifyIcon(NIM_DELETE, @TrayIcon);
end;

Kod: Tümünü seç

procedure TForm1.MenuyuGoster;
Var
  FareninKonumu : TPoint;
Begin
  GetCursorPos(FareninKonumu);                 // Mouse'un pozisyonunu öğren
  PopUpMenu1.Popup(FareninKonumu.X,FareninKonumu.Y); // PopUp menüyü o pozisyona aç
  PostMessage(Self.Handle,WM_NULL,0,0);        // Systeme Herhangibir Mesaj Gönderme
end;

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label2.Caption:=TimeToStr(now);
  if Trim(Label2.Caption) = '01:00:00' then
  begin
    If NOT EmuleCalisiyor() then begin
      WinExec('D:\katırr\emule.exe', SW_SHOWNORMAL);
    end;
  end;
end;

Kod: Tümünü seç

procedure TForm1.TrayMessage(var Msg: TMessage);
begin
  case Msg.lParam of
    WM_LBUTTONDOWN:
      Abort;
    WM_LBUTTONDBLCLK:
    begin
      FormuGoster();
    end;
    WM_RBUTTONUP:
    begin
      MenuyuGoster();
    end;
  end;
end;

Kod: Tümünü seç

procedure TForm1.FormuGster1Click(Sender: TObject);
begin
  FormuGoster();
end;

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
begin
  FormuGizle(Self);
end;
Afiyet olsun...
Resim
Resim ....Resim
Kullanıcı avatarı
emrahkaraarslan
Üye
Mesajlar: 243
Kayıt: 21 Haz 2005 12:28
Konum: Trabzon

Mesaj gönderen emrahkaraarslan »

çok teşekkürler ben bu kodları yazabilmek için fazlasıyla acemiyim, daha çok veritabanı programlarıyla uğraştım bu tür şeylerle hiç işim olmadı; ama işime yarayanlarla uğraşıyorum işte nasıl bu şekilde kodlar yazabilirim öneriniz varsa çok iyi olur biraz uğraşmak istiyorum tekrar teşekkürler.
Allah'ım bana değiştirebileceklerimi değiştirme değiştiremeyeceklerimi kabullenme ve aradaki farkı anlayabilme yeteneği ver
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Önerim ihtiyaçların ölçüsünde proje üret ve uygulamaya çalış. Araştırıp kod örneklerini incele. Yapamadığın yer olursa buradan sor... Önce kavramsal olarak sonra da kod olarak yardımcı oluruz...
Resim
Resim ....Resim
mutues
Üye
Mesajlar: 4
Kayıt: 03 Eki 2007 12:42

Mesaj gönderen mutues »

HAY ALLAH RAZI OLSUN YA GERÇEKTEN GÜZEL YAPMIŞIN RABBİM YARDIMCIN OLSUN İNŞ.
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Hocam link i kontrol edebilirmisiniz ben ulaşamadım
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bildiğimiz rapid linki... Şu an aktif. Özel bazı kodlar dışında burada yayınladığım Delphi örneklerini silmiyorum.
Resim
Resim ....Resim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Valla hocam demirelvari bir cevap farz oldu..

"DADINDAN YİNMEZ"
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla