Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Kopyalama,programın açık kalma durumu ve internet sayacı

Konu, 'Pascal / Delphi / Delphi.NET' kısmında extra life tarafından paylaşıldı.

  1. extra life

    extra life Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    7
    Beğenilen Mesajlar:
    0
    Selam arkadaşlar;

    Delphide yaptıgımız programın kopyalanmamasını nasıl
    sağlayabiliriz.


    Bir de yaptıgımız programı açtık ve kapatmadan ikinci
    defa açtıgımızda yine program açılıyor bu kez iki tane
    program(aynı program) açık durumda oluyor. Sormak
    istedigim programı kapatmadan ikinci defa açmaya
    çalıştıgımızda nasıl bir program yazmamız gerekiyor
    ki programın açık oldugunu anlasın ve uyarsın.

    Üçüncü bir sorumsa ... Ben internet sayacı diye çok
    küçük bir program yazmaya çalışıyorum. Amaç ben
    internete girdigimde kaç dakika girdigimi Tabloya
    kaydetsin. Fakat internete girdigimi program nasıl
    anlayabilir bu nasıl bir kodlama kullanmam gerekiyor
    ki internete girdigimde program internete girdigimi
    anlasın ve internetten çıktıgımda program anlayıp
    saymayı bıraksın..

    Cevap ve Önerilerinize açığım..

    Teşekkürler.......
     
  2. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Kopyalanmayı önlemen çok zor. Ama bunu geciktirmeyi, yada kopyalamayı sağlayıp, programı çalıştırmalarını engelleme çalışması yapabilirsin. Tabi bunlar kısa vadede fayda sağlar. Bunun içi mesela Registrayda anahtar yazabilirsin. Yada çalışma anında herhangi bi dizin içine (ben genelde windows'u kullanırım) attığın herhangi bir dosyada, herhangi bir satırı kontrol ederim. Bir çeşit *.ini gibi. HDD'im uçmuş olmasaydı örnek atardım (bkz CevizForum.Donanım )
    Program aynı anda 1 kez çalışsın istiyosan kaynak koda (source);

    CreateMutex(nil,FALSE,'Ceviz');
    if GetLastError = ERROR_ALREADY_EXISTS then begin
    ShowMessage('2 kere çalıştırdınız!');
    Halt(0);
    end;

    // eğer Windows oturumunda sadece 1 kere çalışsın istiyosan,

    procedure TForm1.FormShow(Sender : TObject);
    var ceviz1 : integer;
    ceviz2 : string;
    begin
    if GlobalFindAtom('THIS_IS_SOME_OBSCUREE_TEXT') = 0 then
    ceviz1 := GlobalAddAtom('THIS_IS_SOME_OBSCUREE_TEXT')
    else
    begin
    ceviz2 := #10 + #13;
    ShowMessage('versiyon her Windows oturumunda yanlızca bir kere çalışır.' + ceviz2 + 'REGISTER !!');
    Close;
    end;
    end;


    İnternete bağlı olup olmadığını anlamak içinse, TCP componenti koy sayfana ve bunu kontrol edecek olan button veya timer 'a (yad her ikisine dolaylı olarak :) )


    if (TCP1.LOCALIP='0.0.0.0') or (TCP1.LOCALIP='127.0.0.1') then
    begin
    // İnternete bağlı değilken yapacakların
    end
    else
    begin
    // İnternete bağlı iken yapacakların
    end;


    Bu varyasyonları çoğaltmak mümkün. Yazdıklarımda hata olma olasılığı var, çünkü HDD'im şuanda çöpte!

    Kolay gelsin...
    Extra bi durumda Mailleşebilirizde :)

    hmustak@ceviz.net
     
  3. extra life

    extra life Yeni Üye

    Kayıt:
    9 Şubat 2003
    Mesajlar:
    7
    Beğenilen Mesajlar:
    0
    selam hmustak;
    Yolladığın cevap için teşekkürler, yalnız bir sorum
    daha olacak. Tcp componentinden bahsettin. Ben delphi
    5 kullanıyorum view-->components list'ten Ttcp diye aradım
    fakat böyle bir componente rastlamadım. Hatta componentleri
    teker teker gözden geçirdim
    Acaba bu tcp componenti eklenti bir komponent olabilirmi
    eklentiyse bu componenti nerden bulabilirim.


    Teşekkurler.....
     
  4. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    Bu Delphi5 de de olacaktı yaw... Neyse yoksa da en kolay yollu yapan bir component buluruz Default gelen componentler arasında. Lakin öncelikle benim Yeni HDD'me kavuşmam gerek, bunun içinde bayramdan sonraki Ptesi yi beklemek gerek :) Geçici kullandığım HDD 2,1 GB olduğundan kuramıyorum delphiyi :) Haa bide dediğm gibi TCP değilde başka bir komponentde olabilir, ben öyle hatırlayıp yazdım.
    Şöyle de bağlantıyı kontrol etmen mümkün, mantık yukarıda yazıyo zaten;

    Forma NMEcho koy;
    NMEcho1.LocalIP='0.0.0.0.' ise veya '127.0.0.1' ise bağlı değilsindir.

    Aynı mantıklaTclientSocket de işine yarar zannediyorum
     
  5. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    :tabi:
     
  6. Fobus

    Fobus .

    Kayıt:
    7 Şubat 2003
    Mesajlar:
    1,094
    Beğenilen Mesajlar:
    0
    Bence Programı 1 defa çalıştırmaktan kastı senin yazdığın kod değil hakan ağbi. arkadaş word gibi sistemde sadece 1 tane pence ile çalışacak bi program yazmak istiyor. bunu yapabilmek için program başlangıc koduna pencerenin hanlerini buldurup(handle yaratılmadan) sonra daha onceden bu handle varmı diye kontrol ettiriyodum eğer varsa program sonlanıyordu. (şimdi evde değilim kodları yazamıyorum Ama windows apileri yardım dosyasını kurcalarsa 3-5 saat içinde bulabilir:super: )
     
  7. hmustak

    hmustak PersianBulls

    Kayıt:
    29 Mayıs 2002
    Mesajlar:
    4,607
    Beğenilen Mesajlar:
    0
    Meslek:
    BT/QA
    Şehir:
    Persian
    lojistik için teşekürler...
    :super:

    ;)