HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Aktív alkalmazás figyelése


Példaprogram letöltése

4679 bájt

Készítsünk most egy olyan komponenst, mely képes arra, hogy szolgáltassa az aktuálisan futó program ablakának fejléc szövegét (Form.Caption) és egy eseményen keresztül értesítse alkalmazásunkat, ha a felhasználó egy másik programra váltott át.

A mellékelt példaprogram megnyitása előtt a WindowWatcher.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Készítünk egy Timer-t a komponensen belül, melyet a konstruktorban hozunk létre és arra használunk fel, hogy folyamatosan ellenőrizzük, hogy változott-e az aktív alkalmazás.
A Timer OnTimer eseményéhez hozzárendeljük saját DoTimer eljárásunkat, mint esemény kezelőt.
constructor TWindowWatcher.Create(AOwner: TComponent);
begin
  inherited;
  FTimer:=TTimer.Create(nil);
  FTimer.Interval:=250;
  FTimer.OnTimer:=DoTimer;
  FTimer.Enabled:=true;
end;
Amikor a DoTimer meghívásra kerül, a GetForegroundWindow függvénnyel lekérdezzük, hogy mi az aktív alkalmazásnak az azonosító száma.
procedure TWindowWatcher.DoTimer(Sender: TObject);
begin
  h:=GetForegroundWindow;
Ha ez a szám nem egyezik a legutóbb lekérdezett számmal, akkor már egy másik programról van szó, ez esetben a felhasználó épp átváltott egy másik alkalmazásra.
  if h<>FLastHandle then begin
    FLastHandle:=h;
Ekkor egy WM_GETTEXT üzenettel lekérdezzük az ablak fejléc szövegét, majd ha lett a komponensünk OnChange eseményéhez eseménykezelő rendelve, akkor meghívjuk azt.
    SendMessage(h, WM_GETTEXT, 512, integer(@buf[0]));
    FLastName:=buf;
    if Assigned(OnChange) then begin
      OnChange(Self);
    end;
  end;
end;
Amikor a felhasználjuk a komponenst és létrejön az OnChange eseménye, akkor a LastName property-n keresztül érhetjük el az aktuálisan aktív program ablakának fejléc szövegét, míg a LastHandle property-ből az alkalmazás ablakának azonosítója olvasható ki.
procedure TForm1.WindowWatcher1Change(Sender: TObject);
begin
  ListBox1.Items.Add(WindowWatcher1.LastName);
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 550. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |