Autor Beitrag
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Di 02.12.08 19:20 
Wie beende ich ein Programm anhand von beliebigen Sachen (Name in der Titelleiste, PID...)?

Theoretisch bräuchte ich ja das Handle. Der Benutzer kann dann ja die PID, den Titel... eingeben, daraus soll dann das Handle ermittelt werden und dann muss ich das Handle terminaten :twisted: !!

Nur leider habe ich keinen Ansatz, wie das gehen soll... :(

Könnt ihr mir helfen :)?

_________________
Die Lösung ist nicht siebzehn.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Di 02.12.08 19:29 
Über den Dateinamen gehts so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
uses
  ..., tlhelp32; //evtl. noch was...

...

function KillProcess(const ExeName: String):Boolean;
var
  Process: TProcessEntry32;
  h: THandle;
begin
  Result := False;
  Process.dwSize := SizeOf(Process);
  h := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
   if Process32First(h, Process) then
    repeat
     if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(ExeName) then Result := TerminateProcess(OpenProcess(Process_Terminate, False, Process.th32ProcessID), 0);
    until (not Process32Next(h, Process)) or Result;
  finally
   CloseHandle(h);
  end;
end{KillProcess}
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.08 19:39 
Zitat:
Der Benutzer kann dann ja die PID, den Titel... eingeben, daraus soll dann das Handle ermittelt werden und dann muss ich das Handle terminaten

In der Zeit, in der ich als Benutzer den Fenstertitel eingegeben habe (woher soll ich die PID wissen?), hab ich das Fenster nach vorne geholt und über "X" geschlossen ;)
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 02.12.08 19:55 
Hi,

Ich denke mal eher der Name wird einmalig eingetipp und das Programm wird dann dei bestimmten Auslöseereignissen beendet ;)

Geschickter fände ich ja die Auswahl per Fokus: Buttonklick; Programm wartet, bis ein erlaubtes Fenster den Fokus hat(dein eigenes Programm und Sachen wie das Fenster der Taskleiste oder den Desktop soltest du filtern). Dann kopierst du den Programmnamen, Pfad, ..(gewünschte Infos) in ein Editfeld und lässt den User bestätigen.

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Mitmischer 1703 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Di 02.12.08 19:57 
@Andreas L.: Was macht der Code denn wann?

@DeddyH: Was ist mit versteckten Prozessen von denen der User weiß, dass sie da sind; er weiß aber rein gar nichts über das beenden

@Hidden: Wie soll das gehen? Ich kann doch nicht den Fokus anderer Programme abfragen...

_________________
Die Lösung ist nicht siebzehn.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.08 20:02 
Und welchen Fenstertitel willst Du bei versteckten Prozessen eintragen? Klingt für mich alles unausgegoren, sry.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.12.08 20:19 
user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
@Andreas L.: Was macht der Code denn
Den an die Funktion übergebenen Prozess killen...

user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
wann?
..., wenn du die Funktion aufrufst.

user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
@DeddyH: Was ist mit versteckten Prozessen von denen der User weiß, dass sie da sind; er weiß aber rein gar nichts über das beenden
Den Titel weiß er auch nicht, d.h. du müsstest eine Liste anzeigen, womit wir bei Programmen wie dem ProcessExplorer wären, der Freeware ist und das sehr gut macht.

user profile iconMitmischer 1703 hat folgendes geschrieben Zum zitierten Posting springen:
@Hidden: Wie soll das gehen? Ich kann doch nicht den Fokus anderer Programme abfragen...
Warum nicht? Natürlich geht das.
// EDIT:
Beispiel für so ein Programm:
www.delphi-forum.de/viewtopic.php?t=21271
Da kannst du ein Fenster mit der Maus auswählen.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 02.12.08 20:30 
Genau an WinSpy dachte ich xD

Dürfte doch mit Screen.ActiveForm gehen, oder?^^

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.12.08 20:32 
Das hatte ich auch mal programmiert, müsste ich schauen wie ichs gemacht hatte, aber das ist ja sowieso ein anderes Thema ;-).