Autor |
Beitrag |
Reinhold666
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 22.06.06 02:07
erstmal die Funktion :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function Killtask(const name:string):boolean; var p:TProcessEntry32; h:THandle; begin result:=false; p.dwSize:=Sizeof(p); h:=CreateToolHelp32snapshot(TH32CS_SnapProcess,0);
if Process32First(h,p) then repeat if AnsiLowerCase(Extractfilename(p.szExeFile))=AnsiLowerCase(name) then Result:=TerminateProcess(Openprocess(PROCESS_TERMINATE,BOOL(0),p.th32ProcessID),0); until (not Process32Next(h,p)) or Result; CloseHandle(h); end; |
jetzt steht im programm irgendwo:
Delphi-Quelltext 1:
| Killtask('blabla.exe'); |
-->Problem , es lassen sich nicht alle programme beenden.
wenn ich den namen des laufenden programmes angebe, zum beispiel , beendet es sich, so wie es auch soll..
allerdings lassen sich andere programme wie z.b. explorer.exe nicht beenden....
(anscheinend willkürlich, notepad.exe kann ich zum beispiel auch so beenden....anscheinend spielt es auch keine rolle von wem das programm gestartet wurde(sowohl notepad als auch explorer sind unter "Benutzer" am laufen))
woran liegts? hat mein programm keine rechte?muss ich andere parameter übergeben?oder hab ich einen fehler in der funtion?
danke im vorraus,
grüße , Reinhold
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
Steve1024
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Do 22.06.06 10:13
Titel: WM_Close
Und wenn du an den Thread noch ein PostThreadMessage mit WM_Close oder so schickts??
|
|
Reinhold666 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 22.06.06 18:37
Delphi-Quelltext 1: 2: 3: 4: 5:
| repeat if AnsiLowerCase(Extractfilename(p.szExeFile))=AnsiLowerCase(name) then postthreadmessage(p.th32ProcessID,WM_CLOSE,0,0); until (not Process32Next(h,p)) or Result; |
is des richtig? wenn ja, dann funktioniert diese variante überhauptnicht(sendmessage und postmessage hab ich auchschon ausprobiert)
die sache ist schon irgendwie komisch, bei manchen programmen funktionierts , bei manchen nicht...mir gehts eigentlich huptsächlich um die explorer.exe...das verwirrende ist, das manchmal garnichts passiert(das ist auch richtig wenn der prozess nicht gefunden wird.....aber explorer.exe hab ich garantiert richtig geschrieben^^) und manchmal (aber auch nur manchmal(bis jetzt 2 mal)) nach dem beenden meines programmes der fehler kommt "Error <irgendwas> illegal handle"...
hab auch im i-net geschaut , aber nix hatt wirklich funktioniert... bin voll am verzweifeln
eine andere lösung währe auch wenn jemand wüsste wie man verhindert das die explorer.exe beim starten von win XP gestartet wird....(regestry wahrscheinlich(also bei win98 konnte man das im explorer schlüssel))....
greetz, Reinhold
Moderiert von Christian S.: Delphi-Tags hinzugefügt
|
|
Steve1024
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Do 22.06.06 19:13
also, wenn dir das reicht, dann schau mal im Library nach "Anwendung als erster staren" oder so...
Ich weiss nämlich nicht sicher, ob es das ist... aber kannst es ja mal ausprobieren....
RegValue Zitat: | HK_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Shell |
von explorer.exe in dein App ändern...
außerdem meinte ich beise ausführen zu lassen... ich hatte damals sogar (glaube ich) drei Befehle benutzt.. alse Terminate, CloseHandle oder CloseProccess (k.A. mehr) und PostMessage bzw PosThreadMessage....
Das nächste wäre, dass du über FindWindowsEx oder durch OpenProccess dir das Fenster-Handle übergeben lässt und dort dann WM_Close hin sendest...
|
|
Reinhold666 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 22.06.06 20:34
super, vielen dank schonmal, hast mir schon viel weitergeholfen:)
also ich hab die explorer.exe durch mein programm ersetzt in der reg.
der explorer startet auch nichtmehr beim start, perfekt...
allerdings meoin programm auchnicht.... hab schon versucht es in den windows ordner zu kopieren und dann ohne pfadangabe einzutragen(wie der originaleintrag vom explorer) , klappt aber auchnich....
hab ausprobiert bei shell nichts anzugeben und mein programm in den autostart zu klatschen(bei ....Run in der reg)
aber das hat auchnicht gefunzt...
fazit: explorer startet nichtmehr, das gewünschte programm aber auchnicht...
hoffe du hast auch dafür eine lösung  , thx im vorraus,
grüße Reinhold
|
|
Steve1024
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Fr 23.06.06 08:57
Also im Library steht, dass das Programm im "Windows\System32" Verzeichnis liegen soll... wenn ich mich recht erinnere...
Hast du das auch schon mal probiert??? Ansonsten schau doch mal einfach in der delphi-library.de...
|
|
Reinhold666 
Hält's aus hier
Beiträge: 6
|
Verfasst: Fr 23.06.06 20:49
Titel: hook
juhuuu, es klappt*freu*
hab die datei in den system32 ordner kopiert und jetz klappts, vielen dank!!!!!!!!!!!!
jetzt ist mein programm fast fertig,muss nurnoch schaffen strg+alt+entf und alt+tab abufangen...
gibts dafür ne andre möglichkeit als hooks?
irgendwie fenstermessage abfangen und mit ner konstanten für den jeweiligen befehl vergleichen oder so?
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 23.06.06 23:28
Titel: Re: hook
Reinhold666 hat folgendes geschrieben: | jetzt ist mein programm fast fertig,muss nurnoch schaffen strg+alt+entf und alt+tab abufangen...
gibts dafür ne andre möglichkeit als hooks? |
Geht auch nicht mit Hooks, es sei den du meinst damit einen Tastaturtreiber. Einzige Möglichkeit ist es die Gina durch eine eigene zu ersetzen: msdn.microsoft.com/l...inlogon_and_gina.asp
Und bevor du jetzt fragst: "Wie geht das?" Lass dir gesagt sein, dass dies zu erklären wohl mehrerer Seiten eines Buches füllen würde. Und ich kenne auch niemanden, der das schon mal gemacht hätte. Und die Personen, denen ich das zutraue sind vernünftig genug dies nicht zu tun. Aus welchen Grund willst du das denn unbedingt verhindern?
|
|
bf109g.01
      
Beiträge: 84
|
Verfasst: Do 26.08.10 18:12
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 26.08.10 18:15
Vermutlich TlHelp32.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Do 26.08.10 19:55
Keine Ahnung ob das auf neueren Systemen auch funktioniert, sollte dir aber ein Blick wert sein:
www.codeproject.com/.../AntonioWinLock.aspx
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Do 26.08.10 20:16
Moin!
Luckie hat folgendes geschrieben : | Geht auch nicht mit Hooks, es sei den du meinst damit einen Tastaturtreiber. |
Der Process Explorer( *) von Sysinternals hat ja die Möglichkeit, den Windows-Taskmanager zu ersetzen.
Ich vermute mal, dass dies über einen Registry-Schlüssel läuft, in dem der Pfad zum Taskmanager liegt?
Oops, der Thread ist ja antik *auf feinen Pinsel wechselt*
bf109g.01 hat folgendes geschrieben : | Ich versuche gerade so ein Programm zu bauen, um den IPodService automatisch zu beenden. |
Vielleicht hilft es dir, das Ausführen des Programms unter den Windows-Dateioptionen\Sicherheit zu verbieten. Per Ausführen als kannst du es immer noch manuell mit einem anderen Benutzerkonto starten.
Oder erstmal aus dem Autostart nehmen, aber da erzähle ich dir wahrscheinlich nichts neues.
lg,
_________________ 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)
|
|
|