Du kan fange det på classname eller caption på formen.
Stoney
Synes godt om
Slettet bruger
04. november 2003 - 15:17#2
Hvis du kender exe filens navn kan du bruge denne kode:
Uses TlHelp32;
Type TEnumData = Record hW: HWND; pID: DWORD; End;
Function EnumProc( hw: HWND; Var data: TEnumData ): Bool; stdcall; Var pID: DWORD; Begin Result := True; If (GetWindowLong(hw, GWL_HWNDPARENT) = 0) and (IsWindowVisible( hw ) or IsIconic(hw)) Then Begin GetWindowThreadProcessID( hw, @pID ); If pID = data.pID Then Begin data.hW := hW; Result := False; End; { If } End; { If } End; { EnumProc }
Function WindowFromProcessID( pID: DWORD ): HWND; Var data: TEnumData; Begin data.pID := pID; data.hW := 0; EnumWindows( @EnumProc, longint(@data) ); Result := data.hW; End; { WindowFromProcessID }
Function WindowFromAppname32( appname: String ): HWND; { Take only the application filename, not full path! Need to pass the extension as well. } Var snapshot: THandle; processEntry : TProcessEntry32; Begin Result := 0; snapshot := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); If snapshot <> 0 Then try processEntry.dwSize := Sizeof( processEntry ); If Process32First( snapshot, processEntry ) Then Repeat If AnsiCompareText( appname, ExtractFilename( StrPas(processEntry.szExeFile)) ) = 0 Then Begin Result:= WindowFromProcessID( processEntry.th32ProcessID); Break; End; { If } Until not Process32Next( snapshot, processEntry ); finally CloseHandle( snapshot ); End; { try } End; { WindowFromAppname32 }
procedure TForm1.Button1Click(Sender: TObject); begin if WindowFromAppname32('project1.exe') <> 0 then ShowMessage('Programmet kører'); end;
Synes godt om
Slettet bruger
04. november 2003 - 18:21#3
og hvis det ikke kører
if WindowFromAppname32('project1.exe') <> 0 ?? hvad skal så ændres skal den så ændres til <0
Synes godt om
Slettet bruger
04. november 2003 - 18:23#4
Nej, du skal bruge = : if WindowFromAppname32('project1.exe') = 0 then
Synes godt om
Slettet bruger
04. november 2003 - 18:43#5
if WindowFromAppname32('project1.exe') = 0 then ShowMessage('Programmet er lukket');
hvordan kan man styre ('project1.exe') hvad der skal stå via et Tedit.
sådan at det er en variabel i en Tedit som ændrer "project1.exe" til project2.exe. hvis du forstår hvad jeg mener...
Synes godt om
Slettet bruger
04. november 2003 - 18:54#6
Tror det er det her du mener:
if WindowFromAppname32(Edit1.Text) = 0 then ShowMessage('Programmet er lukket');
Synes godt om
Slettet bruger
04. november 2003 - 19:22#7
næ ikke helt for så er project1.exe en konstant, og man kan kun lukke project1.exe
hvis teksten i en Tedit er project2.exe ændres "project2.exe" i WindowFromAppname32(project2.exe)da man ikke altid ved hvad brugeren indtaster i editfeltet, kunne project1.exe ikke være en variabel, så hvis man skrev i editfeltet project1.exe eller project2.exe så lukkes programmerne alt efter hvad der står i editfeltet. Håber du forstår hvad jeg mener.
Synes godt om
Slettet bruger
04. november 2003 - 19:33#8
Er ik helt sikker på hvad du mener, men hvis du skal lukke programmerne kan du bruge denne kode:
uses Tlhelp32;
function KillTask(ExeFileName: string): Integer; const PROCESS_TERMINATE = $0001; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin Result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess( OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end;
procedure TForm1.Button1Click(Sender: TObject); begin KillTask(Edit1.Text); end;
Hvis du f.eks. skriver Project1.exe i Edit1 lukker den project1.exe.
Synes godt om
Slettet bruger
04. november 2003 - 19:54#9
yepper det var hvad jeg mente...gud hvor indlysende når man ser det.gg
takker
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.