| Autor | Beitrag | 
| D.Elphi 
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 14:56 
 
Hallo zusammen,
 für ein Programm möchte ich die Tasten ALT, STRG, ESC, F4, ENTF und die Windows-Taste blocken. Mein bisheriger Ansatz:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 
 | procedure TForm1.FormKeyDown(Sender: TObject; var Key: Char;Shift: TShiftState);
 begin
 if Key = 'VK_CONTROL' then Key := '0'; if Key = 'VK_ESCAPE' then Key := '0'; if Key = 'VK_F4' then Key := '0';    if Key = 'VK_DELETE' then Key := '0'; if Key = 'VK_MENU' then Key := '0'; if Key = 'VK_LWIN' then Key := '0'; if Key = 'VK_RWIN' then Key := '0'; end;
 |  Das klappt aber nicht   . Mache ich was falsch? Bitte helft mir    gruß
 D.Elphi
Moderiert von  Narses: Status "gelöst" gesetzt. | 
|  | 
| bummi 
          Beiträge: 1248
 Erhaltene Danke: 187
 
 XP - Server 2008R2
 D2 - Delphi XE
 
 | 
Verfasst: Fr 09.03.12 15:05 
 
1. Key ist ein Char also nur ein Zeichen Du vergleichst mit einem String
2. Ein Teil der Tasten Du abfangen willst kommen nicht über den Key sondern über Shift
 3. Ein Teil kommt gar nicht auf diese Art
 
 Wenn Du es nur innerhalb Deiner Anwendung benötigst könntest Du Dich in Application.OnMessage hängen oder ein eine ApplicationEvents-Komponente verwenden und Dort OnMessage regieren.
 
 Ich vermute aber Du möchtest Dich systemweit einhängen, das Stichwort wäre dann Keyhook und ist immer mit einer DLL verbunden.
 _________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
 DRY DRY KISS
 | 
|  | 
| Narses 
          
  Beiträge: 10183
 Erhaltene Danke: 1256
 
 W10ent
 TP3 .. D7pro .. D10.2CE
 
 | 
Verfasst: Fr 09.03.12 15:07 
 
Moin!
 	  |  D.Elphi hat folgendes geschrieben  : |  	  | für ein Programm möchte ich die Tasten ALT, STRG, ESC, F4, ENTF und die Windows-Taste blocken. Mein bisheriger Ansatz: | 
 Zumindest Strg+Alt+Entf kann man nicht für ein spezielles Programm blockieren, da es eine Systemfunktion ist. Ob und wie auch immer man das machen kann, sei mal dahingestellt. Wofür brauchst du das denn?
 cu
 Narses_________________ There are 10 types of people - those who understand binary and those who don´t.
 | 
|  | 
| D.Elphi  
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 15:22 
 
@Narses: Ich versuche, so etwas ähnliches wie SiteKiosk oder Magic Desktop zu machen, wo diese Kombinationen auch nicht funktionieren. | 
|  | 
| Narses 
          
  Beiträge: 10183
 Erhaltene Danke: 1256
 
 W10ent
 TP3 .. D7pro .. D10.2CE
 
 | 
Verfasst: Fr 09.03.12 15:42 
 
Moin!
 Du möchtest also die Rechte des Benutzers auf das Betriebssystem einschränken. Dafür verwendet man üblicherweise verschiedene Benutzerkonten und Gruppenrichtlinien. Die kann man auch nicht aushebeln und zentral Administrieren (wenn man denn einen Windows-Server zur Hand hat).    Ein Delphi-Programm ist hier leider kein gutes Mittel, dieses Ziel zu erreichen.
 cu
 Narses_________________ There are 10 types of people - those who understand binary and those who don´t.
 | 
|  | 
| D.Elphi  
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 15:48 
 
Ich glaube, mein Beitrag war ein wenig missverständlich   . Ich möchte keines dieser Programme nachmachen, ich möchte lediglich verhindern, dass ein Programm sich per Klick auf "X" oder mit den Tastenkombis beenden lässt (momentan sieht es so aus: ein vom User festgelegtes Passwort muss eingegeben werden, damit das Programm sich beendet.) | 
|  | 
| Gausi 
          Beiträge: 8550
 Erhaltene Danke: 478
 
 Windows 7, Windows 10
 D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
 
 | 
Verfasst: Fr 09.03.12 15:52 
 
Das Schließen (Alt-F4, oder auch Klick auf [ X ]) kann man im OnCloseQuery verweigern. Gegen das Abschießen des Prozesses über den Taskmanager gibt es aber nichts sinnvolles - und das ist auch gut so. _________________ We are, we were and will not be.
 | 
|  | 
| D.Elphi  
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 15:53 
 
OK, danke. Aber wie sieht denn jetzt der Quelltext konkret aus?
 danke im Voraus   | 
|  | 
| bummi 
          Beiträge: 1248
 Erhaltene Danke: 187
 
 XP - Server 2008R2
 D2 - Delphi XE
 
 | 
Verfasst: Fr 09.03.12 15:53 
 
Dann langt gegf. das?
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 
 | procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin
 CanClose := PasswortPasst;
 end;
 | _________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
 DRY DRY KISS
 Für diesen Beitrag haben gedankt: D.Elphi
 | 
|  | 
| Narses 
          
  Beiträge: 10183
 Erhaltene Danke: 1256
 
 W10ent
 TP3 .. D7pro .. D10.2CE
 
 | 
Verfasst: Fr 09.03.12 15:55 
 
Moin!
 	  |  D.Elphi hat folgendes geschrieben  : |  	  | Ich glaube, mein Beitrag war ein wenig missverständlich  . Ich möchte keines dieser Programme nachmachen, | 
 Oh, ja, das habe ich wohl falsch verstanden.    	  |  D.Elphi hat folgendes geschrieben  : |  	  | ich möchte lediglich verhindern, dass ein Programm sich per Klick auf "X" oder mit den Tastenkombis beenden lässt (momentan sieht es so aus: ein vom User festgelegtes Passwort muss eingegeben werden, damit das Programm sich beendet.) | 
 In Delphi kannst du, zusätzlich zu   Gausi s Tipp, auch das OnClose-Ereignis nutzen:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 
 | procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin
 if NichtBeenden then
 Action := caNone;
 |  Dagegen, dass ein Computer-Administrator den Prozess deines Programms abschießt, kannst du erstmal nichts unternehmen. Und gleich der Hinweis: wie man das evtl. doch tun könnte, wollen wir in der EE nicht diskutieren.    cu
 Narses_________________ There are 10 types of people - those who understand binary and those who don´t.
 Für diesen Beitrag haben gedankt: D.Elphi
 | 
|  | 
| D.Elphi  
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 15:56 
 
Klasse    Danke für eure Hilfe! | 
|  | 
| Tranx 
          Beiträge: 648
 Erhaltene Danke: 85
 
 WIN 2000, WIN XP
 D5 Prof
 
 | 
Verfasst: Fr 09.03.12 16:33 
 
Also, wenn ich ein Programm hätte, das sich nur mit Passwort beenden lässt, das würde bei mir gnadenlos per Taskmanager beendet. Und ich würde dann auch noch gleich das Programm herausfinden und mir Eraser von der Festplatte löschen. Ganz ehrlich, das klingt so, wie manche dieser Internetanwendungen, wo man auf das X des Fensters, was ja üblich für "Schießen" steht, klickt und dann öffnet sich irgendeine obskure Internetadresse. Da hab ich echt die Kappe dann auf.
 Wenn ich auf meinem Rechner die Programme nicht schließen kann (Ausnahme irgendwelche Systemroputinen), wann ich will, dann haben die auf meinem Rechner nichts zu suchen.
 
 Das nur mal zu dem Thema. Ansonsten ist die Frage wohl beantwortet.
 _________________ Toleranz ist eine Grundvoraussetzung für das Leben.
 | 
|  | 
| Nersgatt 
          Beiträge: 1581
 Erhaltene Danke: 279
 
 
 Delphi 10 Seattle Prof.
 
 | 
Verfasst: Fr 09.03.12 16:39 
 
Man muss nicht immer Böses dabei vermuten.
 Wir haben auch z.B. Touchscreenterminals, die man nicht per X schließen kann. Und das ist gewollt, denn die werden von Leuten bedient, die es einfach nicht schließen sollen. Die hängen unbeaufsichtigt in Pausenräumen, Hallen, etc... Man staunt, auf was für doofe Ideen Leute während einer langweiligen Nachtschicht kommen. Nach dem Motto "mal gucken, ob man mit der Kiste auch Solitär spielen kann". Und das ist noch die beste der doofen Ideen.     Man könnte die Terminals übrigens über ALT+F4 schließen. Geht aber nicht, weil 1. PC in verschlossenem Schrank und Tastatur ebenso. Bedienung ausschließlich über Touchscreen._________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi) | 
|  | 
| D.Elphi  
          Beiträge: 128
 Erhaltene Danke: 10
 
 Windows 10 Edu x64
 Tokyo Starter, BlueJ
 
 | 
Verfasst: Fr 09.03.12 22:24 
 
Tranx, mal mal nicht den Teufel an die Wand    Nersgatt hat Recht mit seinem Beitrag. Ich hab nix böses vor - dürfte ich eh nicht verbreiten weil wegen Educational-Version   | 
|  | 
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 10.03.12 13:52 
 
	  |  Narses hat folgendes geschrieben  : |  	  | Zumindest Strg+Alt+Entf kann man nicht für ein spezielles Programm blockieren, da es eine Systemfunktion ist. Ob und wie auch immer man das machen kann, sei mal dahingestellt. | 
 Nicht getestet:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 
 | SystemParametersInfo(SPI_SCRE]ENSAVERRUNNING,1,Nil,0);
 .
 
 SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,Nil,0);
 
 oder:
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, 1, 0);
 Label1.Caption:='[Strg] + [Alt] + [Entf] ausgeschaltet';
 .
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, 1, 0);
 Label1.Caption:= '[Strg] + [Alt] + [Entf] eingeschaltet';
 |  Ausserdem:
 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableLockWorkstation
 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr
 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableChangePassword
 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoLogoff
 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoClose
 All entries should be dword values: 1 enables the feature - 0 disables it. | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Sa 10.03.12 14:37 
 
Damit kannst du den Taskmanager deaktivieren, aber nicht Strg+Alt+Entf. Und darüber kann man wieder den Taskmanager erreichen. | 
|  |