s.a.
Arkasaşlar sorumla ilgili arama yaptım 2 örnek buldum fakat bunlar işimi gömüyor. İstediğim şu
herhangi bir programın windows görev yöneticisi (Task manager) listesinde olup olmadığını (yani çalışıp çalışmadığını) nasıl anlarız.
Bu progamı listeden alabilirmiyiz.
Teşekkür ederim.
windows görev yöneticinde program kontrolü
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
İşimi görmüyor dediğin nokta neresi?Listeyi almak için yeteri kadar örnek mevcut, hatta aktif topiclerinden birinde verilmişti kodları.Karşılaştırma işlemini ister string parçalamayla yap istersen TStrings sınıfının IndexOf metoduyla..Tek bir şeye dikkat edilmesi gerekli, orjinal exe adının olmama ihtimali çok yüksek, zira listede caption ya da Application Title şeklinde bulunur vs.vs.
Kolay gele..
Kolay gele..
Sa. bu işlemi daha önceki programlarımın bir tanesinde yedekleme ünitesi için kullanmıştım. Umarım İçinize yarar sayılarımla
Kullanımı
Bu yazı http://www.pckahvesi.com sitesinden alıntıdır.
Saygılarımla
MYOSM
Kod: Tümünü seç
//Çalışan Uygulamaların Bulunması
//-------------------------------------------------------------------------------------
procedure CreateWin9xProcessList(List: TstringList);
var
hSnapShot: THandle;
ProcInfo: TProcessEntry32;
begin
if List = nil then Exit;
hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapShot <> THandle(-1)) then
begin
ProcInfo.dwSize := SizeOf(ProcInfo);
if (Process32First(hSnapshot, ProcInfo)) then
begin
List.Add(ProcInfo.szExeFile);
while (Process32Next(hSnapShot, ProcInfo)) do
List.Add(ProcInfo.szExeFile);
end;
CloseHandle(hSnapShot);
end;
end;
procedure CreateWinNTProcessList(List: TstringList);
var
PIDArray: array [0..1023] of DWORD;
cb: DWORD;
I: Integer;
ProcCount: Integer;
hMod: HMODULE;
hProcess: THandle;
ModuleName: array [0..300] of Char;
begin
if List = nil then Exit;
EnumProcesses(@PIDArray, SizeOf(PIDArray), cb);
ProcCount := cb div SizeOf(DWORD);
for I := 0 to ProcCount - 1 do
begin
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or
PROCESS_VM_READ,
False,
PIDArray[I]);
if (hProcess <> 0) then
begin
EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb);
GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName));
List.Add(ModuleName);
CloseHandle(hProcess);
end;
end;
end;
procedure GetProcessList(var List: TstringList);
var
ovi: TOSVersionInfo;
begin
if List = nil then Exit;
ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(ovi);
case ovi.dwPlatformId of
VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List);
VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List);
end
end;
function EXE_Running(FileName: string; bFullpath: Boolean): Boolean;
var
i: Integer;
MyProcList: TstringList;
begin
MyProcList := TStringList.Create;
try
GetProcessList(MyProcList);
Result := False;
if MyProcList = nil then Exit;
for i := 0 to MyProcList.Count - 1 do
begin
if not bFullpath then
begin
if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then
Result := True
end
else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True;
if Result then Break;
end;
finally
MyProcList.Free;
end;
end;
Kod: Tümünü seç
if EXE_Running('dp.exe', False) then
begin
Application.MessageBox('XXXX Müşteri Takip Programı Açık, Bu Şekilde Yedek Alamazsın, Lütfen Programı Kapatıp Yeniden Deneyin ....','Uyarı',MB_OKCANCEL+MB_ICONWARNING);
Application.Terminate;
end else
begin
Abort;
end;
Bu yazı http://www.pckahvesi.com sitesinden alıntıdır.
Saygılarımla
MYOSM
Gecenin en karanlık anı sabahın en yakın olduğu andır.
- White Rose
- Üye
- Mesajlar: 726
- Kayıt: 06 Tem 2005 09:41
- Konum: Güneyden
- İletişim:
teşekkürler ben de codebank'ta şunu buldum
uses TlHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
devam: BOOL;
fyakhandle: THandle;
islem32 : TProcessEntry32;
begin
s.Clear;
fyakhandle :=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
islem32.dwSize:=Sizeof(islem32);
devam :=Process32First(fyakhandle,islem32);
while integer(devam)<>0 do begin
//Listeye çalışan exe dosyaları ekleniyor.
S.Items.Add(islem32.szExeFile);
devam:=Process32Next(fyakhandle,islem32);
end;
CloseHandle(fyakhandle);
If s.Items.IndexOf('herhangibir.exe')>0 Then
showmessage('PROGRAM VAR')
else
showmessage('PROGRAM YOK');
end;
uses TlHelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
devam: BOOL;
fyakhandle: THandle;
islem32 : TProcessEntry32;
begin
s.Clear;
fyakhandle :=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
islem32.dwSize:=Sizeof(islem32);
devam :=Process32First(fyakhandle,islem32);
while integer(devam)<>0 do begin
//Listeye çalışan exe dosyaları ekleniyor.
S.Items.Add(islem32.szExeFile);
devam:=Process32Next(fyakhandle,islem32);
end;
CloseHandle(fyakhandle);
If s.Items.IndexOf('herhangibir.exe')>0 Then
showmessage('PROGRAM VAR')
else
showmessage('PROGRAM YOK');
end;