Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windowstasten sperren (https://www.delphipraxis.net/17278-windowstasten-sperren.html)

No Voices 2. Mär 2004 15:15


Windowstasten sperren
 
Hallo,

Ich habe folgendes Problem...

Ich schreibe ein Programm wo ich Form1 als hintergrung im FullScreen habe. jetzt möchte ich das der anwender keine möglichkeit hat das Programm zu verlassen. Alles Windowstasten sollen ohnen funktion sein. Keine windowstaste, keine Tastenkombination (Strg+Esc) u.s.w.

Kann mir da mal jemand zu Hand gehen, in der Delphi hilfe habe ich nichts gefunden. Ich arbeite mit Delphi 7 unb freue mich über jede schnelle antwort.

Danke!

sakura 2. Mär 2004 15:17

Re: Windowstasten sperren
 
Suche mal im Forum nach [dp]Hook*[/dp], darin dürfte die einzige Lösung liegen. Dinge wie [STRG]+[ALT]+[ENTF] lassen sich allerdings auch damit nicht abfangen.

...:cat:...

-homer- 2. Mär 2004 15:20

Re: Windowstasten sperren
 
hi,

klar kann man den Taskmanager sperren.


-homer-

sakura 2. Mär 2004 15:21

Re: Windowstasten sperren
 
Zitat:

Zitat von -homer-
klar kann man den Taskmanager sperren.

Unter NT kommt man damit aber nicht zum Taskmanager :roll:

...:cat:...

-homer- 2. Mär 2004 15:23

Re: Windowstasten sperren
 
hi,

NT Suc......X


-homer-


ps.: Finde ich :mrgreen:

sakura 2. Mär 2004 15:29

Re: Windowstasten sperren
 
:warn: Vorsicht, das wird OT!

...:cat:...

fkerber 2. Mär 2004 16:02

Re: Windowstasten sperren
 
HI!

Vielleicht ist es mit Kanonen auf Spatzen geschossen, wer weiß ...
(Ist auch ungetestet, aber es müsste gehen)

Delphi-Quellcode:
procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

 if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
  else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;

// Example Call:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DisableTaskMgr(True);
end;
Kann man ja mal testen ...

Ciao fkerber

P.S. Das ist die falsche Kategorie, oder?

DP-Maintenance 2. Mär 2004 16:03

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API" verschoben.
Zitat:

Zitat von fkerber
P.S. Das ist die falsche Kategorie, oder

Hm... :gruebel:

Matze 2. Mär 2004 17:36

Re: Windowstasten sperren
 
Das Windows-Sicherheits-Menü wird zwar geöffnet, aber der Taskmanager-Button ist deaktiviert und über Strg + Shift + Esc lässt er sich auch nicht öffnen...

Luckie 2. Mär 2004 19:36

Re: Windowstasten sperren
 
Also Alt+Tab usw. könnte ich ja noch bei einem Spiel verstehen. Die Windowstasten auch, da kann man ja schon mal draufkommen. Aber was ich beim besten Willen nicht verstehen kann ist Strg+Alt+Entf. Wenn das Programm mal abstürzt, dann stehe ich da. Da ich dann nur noch den Resteknöpf drücken kann, ist ein Datenverlust, bei anderen eventuell geöffneten Programmen, vorprogrammiert. Ich bin zwar nicht so der große Zocker und Spieler, aber mir ist noch kein Spiel untergekommen, was mir meine Macht über meinen Rechner dermaßen beschneidet.

fkerber 2. Mär 2004 19:52

Re: Windowstasten sperren
 
Hi!

Zitat:

Zitat von Luckie
aber mir ist noch kein Spiel untergekommen

Wieso gehst du davon aus, dass es ein Spiel werden soll?
Ich wäre vor einiger Zeit froh gewesen, diesen Code gehabt zu haben (um einen Rechner "wasserdicht" zu machen).
Er will verhindern, dass sein Programm geschlossen wird ...

Ciao fkerber

Luckie 2. Mär 2004 19:56

Re: Windowstasten sperren
 
Weil man so einen Rechner nicht "wasserdicht" macht, sondern mit dem Policy-Editor von MS und entsprechenden Policies.

Auf das Spiel kam ich wohl, weil er was mit Fullscreen geschrieben hat. Aber wie dem auch sei, so macht man es jedenfalls nicht.

fkerber 2. Mär 2004 19:59

Re: Windowstasten sperren
 
Hi!

Zitat:

Zitat von Luckie
Weil man so einen Rechner nicht "wasserdicht" macht, sondern mit dem Policy-Editor von MS und entsprechenden Policies.

Wenn es aber nicht für "immer" gelten soll, sondern nur während dieser Programmausführung? (Beim Beenden des Programms wird alles wieder zurückgesetzt).

Ciao fkerber

P.S. Ich glaube, der Titel zielt am Thema vorbei ...

Matze 2. Mär 2004 20:04

Re: Windowstasten sperren
 
Ob das echt ein Spiel wird... :gruebel:

Klingt irgendwie nicht so. :mrgreen: Ich denke an nichts Bestimmtes. :angle2:


Also, ich wollt auch nicht, dass man Strg + Alt + Entf sperrt, fehlt nur, dass das peogramm nicht unter "Prozesse" angezeigt wird, was bei NT ff zum Glück nicht geht. :P

No Voices 3. Mär 2004 06:42

Re: Windowstasten sperren
 
Schön dank für die tollen Anregungen.....
Soll es ein Spiel werden oder nicht....
Oder doch was anderes.....

Eigentlich soll es nur ein Programm werden. Der User darf das Programm aber nicht verlassen dürfen oder ins Windows gehen um eventuel daten zu ändern. Wenn das Programm gestartet wurde darf es nur ein User geben der das Programm beenden kann. Diesen User frage ich mit einen Passwort ab. OK an einen absturz habe ich nicht gedacht....könnte mann da nicht die tastenkombinationen auch mit einem Passwort schützen? Denken wir mal an eine Zeiterfassung, wenn der User ins Windows kann brauche ich keine Zeiterfassung, oder?

Danke für die rege Teilnahme

Nehme dankend alles an was mir weiter hilft.....

No Voices 3. Mär 2004 08:54

Re: Windowstasten sperren
 
Hallo fkerber

Ich habe dein Code mal getestet, ist schon ganz gut. Jetzt habe ich folgende anregung.

Rufe ich den TaskMgr mit (Strg + AltGr + Entf) auf bekomme ich unter Win 2000 nur ein blaues Fenster, das ist auch gut so. Benutze ich aber (Strg + Shif + Esc) komme ich an die Taskleiste ran und kann so das Programm schließen oder was anderes machen. Für den fall das mal wirklich das Programm abstürzt, kann ich wenn ich den TaksMgr aufrufe eine Abfrage zwischen schalten das nur der User mit einem Passwort den TaskMgr benutzen kann?

Es gibt ja viele möglichkeiten aus dem Programm raus zu kommen,

(Alt + F4); (WindowsTaste); (Strg + Esc)

Kann ich diese Reaktionen abfangen und nur mit einem Passwort vortsetzen, das nur dann die Funktion ausgeführt wird wenn das Passwort stimmt. Oder einfach ganz unterdrücken so das bei den Tastenkombinationen einfach nichts passiert. Auch die Taskleiste sollte nicht verfügbar sein wenn mein Programm läuft.

Zu beachten ist das die sperrung nur dan aktiv sein soll wenn mein programm läuft, nach beendigung meiner EXE soll alles wieder normal funktionieren.

Danke noch mal...

himitsu 3. Mär 2004 09:00

Re: Windowstasten sperren
 
Es gibt 'ne Möglichkeit die Taskleiste du deaktivieren (ist ja auch nur ein Programm), dazu gibt es irgendwo hier im Forum schon mindestens einen Beitrag.

mgubler 3. Mär 2004 09:18

Re: Windowstasten sperren
 
@fkrerber:

Warum so kompliziert, wenn es auch einfach geht?
Zitat:

Code:
  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

Code:
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', TRUE);
Gruss,
mgubler

No Voices 3. Mär 2004 12:30

Re: Windowstasten sperren
 
@ himitsu

Das mit der Taskleiste habe ich schon hin bekommen, die wird nicht mehr angezeigt. Jedoch macht er noch das startmenü auf (Strg + Shift + Esc) und mit Alt + F4 schmeist er mich auch noch aus mein programm.

Steve 3. Mär 2004 14:26

Re: Windowstasten sperren
 
Servus,

das mit ALT+F4 bekommst Du ganz einfach in den Griff, z.B. so:

Delphi-Quellcode:
VAR
  Schliessen : Boolean;
{...}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  { Fenster nur bei Klick auf Button Schließen! }
  Action := caNone;
  IF Schliessen THEN Action := caFree;
end;

{ **************************************************************************** }

procedure TForm1.BtnClick(Sender: TObject);
begin
  { Gibt an, dass das Fenster nun geschlossen werden darf }
  Schliessen := TRUE;
  Close;
end;

Dann ist das Schließen über die Titelzeile halt auch nimmer möglich, sondern Du musst selber nen Button, Menüpunkt oder sonstwas dafür bereitstellen.
[edit]Oder Du kannst natürlich "Action" auch davon abhängig machen, was das Prog grade macht usw... Bist da bestimmt flexibel :wink: [/edit]
Mfg
Stephan


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 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