| Autor |
Beitrag |
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: 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  !!
Nur leider habe ich keinen Ansatz, wie das gehen soll...
Könnt ihr mir helfen  ?
_________________ Die Lösung ist nicht siebzehn.
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Di 02.12.08 19:29
Über den Dateinamen gehts so:
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; ...
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; |
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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 
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: 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
|
Verfasst: Di 02.12.08 20:02
Und welchen Fenstertitel willst Du bei versteckten Prozessen eintragen? Klingt für mich alles unausgegoren, sry.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 02.12.08 20:19
Mitmischer 1703 hat folgendes geschrieben : | | @Andreas L.: Was macht der Code denn |
Den an die Funktion übergebenen Prozess killen...
..., wenn du die Funktion aufrufst.
Mitmischer 1703 hat folgendes geschrieben : | | @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.
Mitmischer 1703 hat folgendes geschrieben : | | @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
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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  .
|
|
|