Proğram Kullanılmıyorsa şifre ekranı gelsin

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Proğram Kullanılmıyorsa şifre ekranı gelsin

Mesaj gönderen cuneyt22 »

s.a arkadaşlar kolay gelsin. proğramda 15 dk içinde herhangi bir işlem yapılmassa şifre ekranı gelsin istiyorum. yani 15 dk içinde proğram ile ilgili herhangi birşey yapılmassa ben bi form çağıracam ve o form aktif olacak. kullanıcı proğrama döndüğü zaman o formu görecek.formumda baya bi aradım ancak bi sonuca ulaşamadım.kolay gelsin
Erd_turkmen
Üye
Mesajlar: 38
Kayıt: 27 Ara 2006 03:13

Mesaj gönderen Erd_turkmen »

A.S. Üstadlar daha iyi bilir ama yinede ben bi yorum yapayım dedim :P
Timer kullanarak yapılabilir diye düşünüyorum. Örneğin formun onenter olayında zaman başlayacak 15 dk içerisinde onenter olayında bi değişiklik olmassa diğer formu çağıracak. Kolay Gelsin
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Şöyle yapabilirsin hocammm..

Programa en son müdehaleyi (giriş birimlerinden klavye, fare) tespit edip bu zamandan itibaren 15 dakikalık bir zaman dilimi tutan bir kod parçası ile iş biter herhalde diye düşünüyorum..
Yani 15 dakika zaman dolunca zaten programa bağlantı kesilecek ve sen ilk müdehalende şifre formun ekrana gelecek..
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

Hocam forumda okudum daha önceki benzer 1-2 tane soruyu. ancak "Programa en son müdehaleyi (giriş birimlerinden klavye, fare) tespit edip" bu olayı nasıl yapacam.örnek kod varmı acaba
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

Windows Hooklarını kullanarak yapabilirsin diye düşünüyorum. Yanlış hatırlamıyorsam klavye ve mouse hooklarında, mesaj hedef bileşene gitmeden önce yakalanıyor ve hatta isterseniz iptal bile edebiliyorsunuz. Bundan sonra yapılması gereken sadece hedef bileşenin (ki size aslında Handle bilgisi geliyor) sizin programın bileşeni olup olmadığını tespit etmek. Eğer sizin bileşene aitse o zaman Timer'ı sıfırlarsınız. Bu arada buradaki timer hook işleminin yapıldığı DLL'de tanımlanırsa, ana programda da çok fazla değişiklik yapmaya gerek kalmaz. Timer tetiklendiği zaman da aslında sadece ana pencereye bir Windows Message gönderir. Elbette bu sizin tanımladığınız bir mesaj olur.

Bu sistemin iki tane sakıncalı durumu var.
1. Bazı antivirüs ve güvenlik programları sizin programınızı şüpheli olarak işaretleyebilir. Sanırım Kaspersky'ın böyle bir güvenlik kontrolü vardı.
2. Klavye veya mouse mesajının gönderildiği bileşenin sizin programa ait bir bileşen olduğunu tespit etmek biraz sıkıntılı olabilir. Ama tahminimce Windows API'lerinde bu işe yarayacak bir API mutlaka vardır. En kötü ihtimalle recursive bir fonksiyon ile de çözebilirsiniz.

En büyük avantajı ise bu DLL'in sizin uygulamanızdan bağımsız olması. Yani bu DLL daha sonra istediğiniz her uygulamanıza entegre edebilirsiniz. Yapmanız gereken sadece DLL'in içindeki Hook ve UnHook fonksiyonlarını kullanmak ve DLL'in göndereceği Windows mesajını yakalamak.

Yukarıda yazdığım sistemin kurulması için bilmeniz gereken fonksiyonların neredeyse hepsinin forumda bir örneği var sanırım. Bu yüzden biraz Windows Hooklarını, biraz Windows Mesaj sistemini, biraz da DLL içeriğini araştırırsanız, 2 gün içinde DLL'i hazırlarsınız diye tahmin ediyorum.

Kolay gelsin,
Bahadır Alkaç
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Hook türü araçlar genel olarak güvenlik araçları tarafından zararlı olarak algılanabilir. Bu proje içerisinden basit düzeyde belki olabilir. Benim aklıma ilk gelen şey ise projenin ana formunun üzerine bir adet TApplicationEvents (->Additional) bileşeni yerleştirip onMessage olayına gerekli kod yazılırsa belki bir şeyler olabilir.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  AppEvnts;

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    SonSure:Cardinal;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  case Msg.message of
    WM_KEYDOWN,WM_KEYUP,WM_NCMOUSEMOVE,WM_NCLBUTTONDOWN,WM_NCRBUTTONDOWN,
    WM_NCLBUTTONUP,WM_NCRBUTTONUP:SonSure:=GetTickCount;
  end;
  if {şifre ekranında değilse and} (SonSure-GetTickCount>300000) {5(dk)*60(sn)*1000(milisn)=300000} then //Şifre Ekranına geç
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SonSure:=GetTickCount;
end;

end.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
cuneyt22
Üye
Mesajlar: 213
Kayıt: 07 Şub 2004 03:32
İletişim:

Mesaj gönderen cuneyt22 »

Hay Allah razı olsun arkadaşlar. özellikle recep abiye. bu linki gönderdiği için. işimi gördü Allah razı olsun kolay gelsin arkadaşlar
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sizlerden de bilgiye ulaşımı kolaylaştıran tüm sebep olanlardan da Allah razı olsun :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla