"Hans-Henrik Nielsen" <hansi@mail1.stofanet.dk> wrote in message
news:9b72im$r5o$1@sunsite.dk...
> "david" <tabby@worldonline.dk> skrev i en meddelelse
> news:wUpB6.36353$o4.2712379@news010.worldonline.dk...
> > Hvordan gør jeg så, hvis mit program skal gøre noget når et bestemt
> program
> > starter og noget andet når det blir lukket ned.? Undskyld jeg spør så
> meget.
> Det er jo det gruppen er her for
>
> Hvis du mener et specielt program, som f.eks. Notesblok, kan du prøve
> nedenstående kode.
> Husk iøvrigt at klippe i dine indlæg, og skrive under det citerede.
>
> Mvh
> Hans-Henrik
> ********************************************
> unit Unit1;
> interface
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
> StdCtrls, ExtCtrls;
>
> type
> TForm1 = class(TForm)
> Timer1: TTimer;
> Memo1: TMemo;
> procedure Timer1Timer(Sender: TObject);
> procedure Startet(hwnd: HWND);
> procedure Lukket(Tekst: String);
> procedure FormCreate(Sender: TObject);
> procedure FormDestroy(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> { Callback procedure til at finde alle åbne vinduer}
> function EnumerateWindows(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
>
> var
> Form1: TForm1;
> CheckHWND, KendteHWND: TStringList;
>
> implementation
> {$R *.DFM}
>
> procedure TForm1.Timer1Timer(Sender: TObject);
> var
> i: integer;
> begin
> KendteHWND.Assign(CheckHWND);
> CheckHWND.Clear;
> EnumWindows(@EnumerateWindows,0);
>
> For i:=KendteHWND.Count-1 downto 0 do
> begin
> if CheckHWND.IndexOf(KendteHWND.Strings[i])<0 then
> Lukket(KendteHWND.Strings[i]);
> end;
> For i:=CheckHWND.Count-1 downto 0 do
> begin
> if KendteHWND.IndexOf(CheckHWND.Strings[i])<0 then
> Startet(HWND(StrToInt(CheckHWND.Strings[i])));
> end;
> end;
>
> function EnumerateWindows(hWnd: HWND; lParam: LPARAM): BOOL;
> var
> Class_Name: Array[0..255] of char;
> begin
> if (GetClassName(hwnd, Class_Name, 255) <> 0) and
> (Class_Name = 'Notepad') then // Erstat evt. Notepad med en
anden
> klasse
> CheckHWND.Add(IntToStr(hWnd));
> Result:=TRUE;
> end;
>
> procedure TForm1.Startet(hwnd: HWND);
> var
> Tekst: Array[0..255] of char;
> begin
> GetWindowText(hwnd, Tekst, 255); // Find caption på vinduet
> Memo1.Lines.Add(TimeToStr(now) + ' Startet: (HWND:'+IntToStr(HWND)+') '+
> Tekst);
> end;
>
> procedure TForm1.Lukket(Tekst: string);
> begin
> Memo1.Lines.Add(TimeToStr(now)+ ' Lukket: (HWND:'+Tekst+')');
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Memo1.Clear;
> Timer1.Interval:=1000; // check en gang pr. sek.
> KendteHWND:=TStringList.Create;
> CheckHWND:=TStringList.Create;
> end;
>
> procedure TForm1.FormDestroy(Sender: TObject);
> begin
> CheckHWND.Free;
> KendteHWND.Free;
> end;
>
> end.
>
Jeg kan ikke bruge det ovenstående, jeg skal kunne nå at gøre nogle ting
inden programmet er startet.
--
Jonathan s
1.33 Tbird Overclok and cpuidmax program.
www.chiptek.org
www.tombstoneblues.com