program çalıştığı anda o anda çalışan programları bir listeye atıyorum.
sonra timer ile 1 dk aralıklarla programları kontrol etmem lazım.
yeni açılan program varsa tespit edip kapatmam lazım.
iki listeyi karşılaştırıp farklı olanları pratik bir şekilde dışarı çıkartabilirmiyiz.
saygılarımla
Kod: Tümünü seç
Function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var Title, ClassName: array[0..255] of char; PrID : Integer;
begin
say:=say+1;
Result := True; GetWindowText(wHandle, Title, 255);
GetClassName(wHandle, ClassName, 255); GetWindowThreadProcessId(wHandle, @PrID);
if IsWindowVisible(wHandle) then _s1.add(Title);
end;
Kod: Tümünü seç
Function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var Title, ClassName: array[0..255] of char; PrID : Integer;
begin
Result := True; GetWindowText(wHandle, Title, 255);
GetClassName(wHandle, ClassName, 255); GetWindowThreadProcessId(wHandle, @PrID);
if IsWindowVisible(wHandle) then _s2.Add(Title);
end;
Kod: Tümünü seç
procedure TfrmMain.Timer1Timer(Sender: TObject);
var
d1,d2:integer;
j:integer;
begin
//program açılırken diziye atılan başlanğıç programlarıyla
//sonradan açılan programları karşılartır. yeni açılan bir program varsa kapat
EnumWindows(@EnumWindowsProc, 1); //her 5 sn de bir programları al karşılaştırma yap yeni program açıldıysa kapat
d1:=_s1.Count;
d2:=_s2.Count;
Label2.Caption:=IntToStr(d1);
Label3.Caption:=IntToStr(d2);
if AnsiMatchStr('Two', _s1) then
ShowMessage('It contains Two');
end;