![]() |
Programm vor Taskmanager verstecken
Liste der Anhänge anzeigen (Anzahl: 2)
ich habe folgenden Code im INet auf diversen Seiten gefunden:
Delphi-Quellcode:
angeblich soll dieser Code das Programm vor dem Taskmanager verstecken.
function RegisterServiceProcess(dwProcessID, dwType: dword): integer; stdcall;
external 'Kernel32.dll'; procedure TForm1.FormCreate(Sender: TObject); begin RegisterServiceProcess(0, 1); end; Doch bei mir macht er nur folgendes: - Das Programm startet im Einzelschritt - Es stürzt ab, bevor die OnCreate-Methode des MainForms aufgerufen werden kann. - Ich bekomme die Fehlermeldung, die im Anhang zu sehen ist Wenn ich nun die Zeile mit "RegisterServiceProcess" auskommentiere, dann läuft das Programm wieder normal. Hat einer von euch 'ne Ahnung, was falsch sein könnte? (Quell-Code im Anhang) |
Re: Programm vor Taskmanager verstecken
Hallo Marc,
üblicherweise übergibst du GetCurrentProcessID() als ersten Parameter. Grüße vom marabu |
Re: Programm vor Taskmanager verstecken
:(
Hat leider auch nicht den gewünschten Effekt. Ich habe immer noch den selben Fehler... |
Re: Programm vor Taskmanager verstecken
a.) Man versteckt keine Prozesse vor dem TaskManager, sondern entzieht dem Benutzer den Zugriff
b.) Funktioniert deine C&P-Frickellösung nur auf Windows 9x/Me Um es vorneweg klarzustellen. Ja, RegisterServiceProcess() ist eine Frickellösung. Da hilft auch kein rumdiskutieren. Während ich bei Win9x/Me ohne Rechteverwaltung durchaus noch eine Daseinsberechtigung sehen könnte (mit viel gutem Willen), ist sie ab NT4 (eigentlich NT allgemein) nicht mehr gegeben. Daher existiert diese Funktion dort nicht. Und das ist auch gut so. Willst du verhindern, daß dein Prozess beendet wird, so tu dies über ACLs usw.! Sagst du uns noch welches OS du hast, Marc?! |
Re: Programm vor Taskmanager verstecken
Gerade wollte ich Marc bitten vor dem Aufruf der Funktion WIN95 zu starten. Ich hatt in meiner code library geschaut und die Abhängigkiet erst soeben in der online hilfe entdeckt. Peinlich...
marabu |
Re: Programm vor Taskmanager verstecken
Zitat:
Mich wundert eigentlich nur, daß die o.g. Fehlermeldung kommt, weil dies für mich bedeutet, daß es kein fehlender Import sein kann. Da würde der PE-Loader vorher aufmucken. Also entweder gibt es einen schlechten Stub in dem OS, welches er benutzt, oder er benutzt Win9x/Me. Wobei dann der Fehler (lt. Adresse) gefühlsmäßig in einer DLL liegen dürfte. Hatte schon viele Probleme mit dieser Mist-Funktion. Die sollte man nur dynamisch importieren ... alle Programmierer, die das mißachten, gehören in die VisualBasic-Hölle :mrgreen: ... wurde uns diese Funktion vielleicht sogar vom ![]() Das ist übrigens der Grund, warum diese Funktion noch immer nicht offiziell dokumentiert ist. |
Re: Programm vor Taskmanager verstecken
1. Ich nutze Win2000 Pro, das Programm soll aber auch unter WinXP laufen (Home und Pro)
2. Delphi 7 Pro. 3. Das Programm soll eine Uhr sein, die ständig im Vordergrund liegt, damit man nicht immer die Taskleiste öffnen muss. Sie kann jederzeit per PopUp Menü beendet werden. Ich möchte sie nur verstecken, damit sie nicht per ALT-TAB auswählbar ist und so Platz spart... Rechtevergabe wäre hier also wie mit Kanonen auf Spatzen schießen. |
Re: Programm vor Taskmanager verstecken
Delphi-Quellcode:
Mit W2K verwendet man diese Funktion einfach nicht. Einen Prozess unter NT verstecken zu wollen ist
type
TFNRegisterServiceProcess = function(dwProcessID, dwType: dword): Integer; stdcall; function RegisterServiceProcess(dwProcessID, dwType: DWORD): Integer; var hLib:THandle; _RegisterServiceProcess: TFNRegisterServiceProcess; begin // Ist sowieso immer geladen _RegisterServiceProcess := nil; hLib := GetModuleHandle('Kernel32.dll'); if(hLib <> 0)then @_RegisterServiceProcess := GetProcAddress(hLib, 'RegisterServiceProcess'); if(Assigned(@_RegisterServiceProcess))then result := _RegisterServiceProcess(dwProcessID, dwType) else begin SetLastError(ERROR_CALL_NOT_IMPLEMENTED); result := 0; // Fehler signalisieren end; end; a.) entweder dumm, oder b.) mit einer bösen Absicht (Rootkit, Virus) verbunden. Such's dir aus ;) ... das Thema RSP ist so alt wie sonst nix. Mußt du diese Funktion dennoch verwenden, so wrappe sie wie ich es dir oben schnell hingetippt habe. Beispiele mit LoadLibrary() kannste hier komplett vergessen, weil manche Menschen denken sie könnten einen Win32-Prozess ohne kernel32.dll starten :mrgreen: Siehe auch: ![]() :wall: ... für dein Ziel brauchst du eine ganz andere Lösung. Poste ich nach dem Mittagessen wenn keiner schneller war. Den Code zum Verstecken haste ja nun. |
Re: Programm vor Taskmanager verstecken
Hallo Olli,
klingt ganz schön überheblich, was du da von dir gibst. Zitat:
Zitat:
Zu welcher Kategorie gehörst du denn zu a.) oder b.)? Rainer ( dieser Beitrag ist nicht ganz ernst gemeint ) |
Re: Programm vor Taskmanager verstecken
Hi Rainer,
locker bleiben. Zitat:
Nur weil es dumm ist etwas zu tun, ist derjenige der es tut nicht gleich dumm. Oder? Zitat:
Zitat:
Übrigens: siehe deine Signatur ;) -> Ja. |
Re: Programm vor Taskmanager verstecken
Zitat:
Da wir nun geklärt haben, dass ich die Überschrift etwas unglücklich gewählt habe ;), hat einer von euch nun eine Lösung? @Olli: Dein Code funktioniert bei mir nicht.
Delphi-Quellcode:
Liefert mir immer ein:
@_RegisterServiceProcess := GetProcAddress(hLib, 'RegisterServiceProcess');
@_RegisterServiceProcess = nil :( |
Re: Programm vor Taskmanager verstecken
Zitat:
Zitat:
Die Lösung des anderen Problems kommt, wie gesagt, gleich. |
Re: Programm vor Taskmanager verstecken
Hallo Olli,
probier mal:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; |
Re: Programm vor Taskmanager verstecken
Zitat:
Püh, ich stell mich jetzt in die Ecke und schmolle :mrgreen: @Marc: Sowas in der Art meinte ich. |
Re: Programm vor Taskmanager verstecken
Zitat:
Delphi-Quellcode:
Und dein Fenster taucht in der taskleiste nicht mehr auf.
ShowWindow(GetWindow(Handle,GW_OWNER),SW_HIDE);
|
Re: Programm vor Taskmanager verstecken
Hi Olli,
den letzten Satz hast du aber gelesen? Rainer ( ich liebe es wenn sich jemand so aufregt ) |
Re: Programm vor Taskmanager verstecken
Zitat:
Aber ich möchte das Fenster auch noch aus der Alt-TAB-Liste entfernen. Man soll es zwar per Maus anklicken und beenden können (FormStyle steht auf fsStayOnTop) aber nicht per Alt-TAB auswählen können... |
Re: Programm vor Taskmanager verstecken
Zitat:
|
Re: Programm vor Taskmanager verstecken
Zitat:
|
Re: Programm vor Taskmanager verstecken
Hi Rainer,
Zitat:
Ich lese jeden Monat Titanic und Eulenspiegel ... bin also "Kummer" gewohnt *g* :mrgreen: @Marc: Ich schaue mal eben nochmal über deinen Code. Habe selber W2K, sollte also reproduzierbar sein ;) Gruß, |
Re: Programm vor Taskmanager verstecken
@DevilsCamp: Was steht im OnCreate Ereigis des Formulars?
Zeig mal... |
Re: Programm vor Taskmanager verstecken
Delphi-Quellcode:
In der Taskleiste ist es verschwunden, aber wie schon gesagt weiterhin per ALT-TAB auswählbar...
procedure TForm1.FormCreate(Sender: TObject);
begin mdown := false; ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end; |
Re: Programm vor Taskmanager verstecken
s14, das gehort nicht ins FormCreate. Zu diesem Zeitpunkt muss nicht notwendigerweise ein Fenster vorhanden sein und es ist durchaus moeglich das das Fenster spaeter gegen ein neues ausgewechselt wird.
|
Re: Programm vor Taskmanager verstecken
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Programm vor Taskmanager verstecken
Zitat:
|
Re: Programm vor Taskmanager verstecken
Ich habe den Fehler.
Das Icon, das bei Alt-Tab angezeigt wird, gehört zum MainForm. Ich muss also auch das MainForm (in diesem Fall Form1) verstecken:
Delphi-Quellcode:
So funktioniert es...
procedure TForm1.FormCreate(Sender: TObject);
begin mdown := false; Timer1.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); ShowWindow( Handle, SW_HIDE ); SetWindowLong( Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Handle, SW_SHOW ); end; |
Re: Programm vor Taskmanager verstecken
Ist der Timer den wirklich nötig?
Würde es nicht reichen den Constructor zu überschreiben? FormCreate wird ja irgendwo dazwischen aufgerufen.... |
Re: Programm vor Taskmanager verstecken
Ich habe aber erst ein Handle auf das Fenster, NACHDEM es erstellt wurde. Und nicht schon vorher...
|
Re: Programm vor Taskmanager verstecken
Zitat:
|
Re: Programm vor Taskmanager verstecken
Zitat:
Delphi-Quellcode:
Nachtrag: @Ollie: Jenau! :)
constructor TSomeForm.Create(AOwner: TComponent);
begin inherited; // OnCreate würde noch *im* Constrcutor // des Vorgängers (TCustomForm) aufgerufen werden // somit wird alles nach inherited auch nach OnCreate // und somit nach allem Fenstergedönst aufgerufen ShowWindow(Application.Handle, SW_HIDE); SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow(Application.Handle, SW_SHOW); ShowWindow(Handle, SW_HIDE); SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow(Handle, SW_SHOW); end; |
Re: Programm vor Taskmanager verstecken
mist.
Zu spät :D So, damit wäre die Frage wohl geklärt :) |
Re: Programm vor Taskmanager verstecken
Oder man schreibt den Code ins OnShow Ereignis. :wink:
Florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz