Autor Beitrag
Reinhold666
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 22.06.06 02:07 
erstmal die Funktion :

ausblenden 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:
ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt
Steve1024
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 22.06.06 18:37 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
repeat
    if AnsiLowerCase(Extractfilename(p.szExeFile))=AnsiLowerCase(name) then
    //Result:=TerminateProcess(Openprocess(PROCESS_TERMINATE,BOOL(0),p.th32ProcessID),0);
    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 user profile iconChristian S.: Delphi-Tags hinzugefügt
Steve1024
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 141

Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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



BeitragVerfasst: Fr 23.06.06 23:28 
Titel: Re: hook
user profile iconReinhold666 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Do 26.08.10 18:12 
user profile iconReinhold666 hat folgendes geschrieben Zum zitierten Posting springen:
erstmal die Funktion :

ausblenden 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;


Was muss ich in die Uses Liste ergänzen? Das (fett) ist alles rot.
Ich versuche gerade so ein Programm zu bauen, um den IPodService automatisch zu beenden.
LG

Moderiert von user profile iconNarses: B- durch Highlight-Tags ersetzt
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Do 26.08.10 20:16 
Moin!

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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*

user profile iconbf109g.01 hat folgendes geschrieben Zum zitierten Posting springen:
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. :mrgreen:

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)