Entwickler-Ecke

Windows API - Computer sperren ohne Strg-Alt-Entf und ohne LockWorkStation


Learner - Sa 16.11.02 15:58
Titel: Computer sperren ohne Strg-Alt-Entf und ohne LockWorkStation
Computer sperren war schon mal, aber gibt es auch eine Möglickeit den Arbeitsplatz zu sperren ohne Strg-Alt-Entf und ohne LockWorkStation (auf NT mit D3 oder D4)?

Gruß Theo :?


DeCodeGuru - Sa 16.11.02 17:08

Bei NT kannst du Strg-Alt-Entf nicht unterdrücken. Bin mir aber nit 100%-ig sicher.


Delete - Sa 16.11.02 17:35

DeCodeGuru: Ere sucht glaube ich eine Möglichkeit den Computer zu sperren ohne Strg+Alt+Entf und ohne LockWorkStation.

LockWorkStation ist die einfachste Möglichkeit. Warum suchst du also was anderes? :roll:


Delete - Sa 16.11.02 17:40

Ausschalten, Netzkabel verstecken und den Anschluss mit Kitt zuschmieren. :mrgreen:


Learner - Sa 16.11.02 18:11

Zitat:
Bei NT kannst du Strg-Alt-Entf nicht unterdrücken
.

Will ich auch gar nicht! Ich hätte nur gern Strg-Alt-Entf + "Abeitsplatz sperren" per Mausklick erledigt

Gruß Theo


Learner - Sa 16.11.02 18:14

Zitat:
LockWorkStation ist die einfachste Möglichkeit. Warum suchst du also was anderes? :roll:


Weil "LockWorkStation" definitiv nicht in "meiner" user32.dll :cry: implemtiert ist!

Gruß Theo


Delete - Sa 16.11.02 18:16

Dann hast du Windows 95/98/ME?

Dann schreib einen Screensaver mit Passwort abfrage.


Learner - Sa 16.11.02 18:17

MathiasSimmack hat folgendes geschrieben:
Ausschalten, Netzkabel verstecken und den Anschluss mit Kitt zuschmieren. :mrgreen:


Ich probier 's mal :tongue:

Gruß Theo


Delete - Sa 16.11.02 18:21

Mit einem Dremel kannst du den Anschluss ja wieder aufbohren. :mrgreen:


Learner - Sa 16.11.02 18:30

Win98 und Win NT 4.0 (da soll's später laufen)

Zitat:
schreib einen Screensaver mit Passwort abfrage.


Wäre 'ne Möglichkeit, aber auf den meisten Rechner ist der Bildschirmschoner (incl. Kennwortschuzt) deaktiviert und mir wäre es lieber, wenn es so bliebe!

Gruß Theo


DeCodeGuru - Sa 16.11.02 18:44

Zitat:
Mit einem Dremel kannst du den Anschluss ja wieder aufbohren.


Problem: Dann muss er immer ncoh das Netzkabel suchen :wink:


Delete - Sa 16.11.02 18:46

Dann kaufst du ein neues, wenn du es nicht mehr findest. :wink:


Delete - Sa 16.11.02 20:18

Learner hat folgendes geschrieben:
Win NT 4.0 (da soll's später laufen)

Schlechte Karten, würde ich sagen. Laut PSDK gibt´s die Funktion "LockWorkstation" erst ab Windows 2000.
Vorher gab´s sie sicher auch, nur wurde sie da entweder noch nicht exportiert (zur allgemeinen Verwendung), bzw. kein Mensch kennt den Namen oder die Nummer, mit der sie exportiert wurde.


Ghost - Mo 16.12.02 16:30

kannst du den Arbeitsplatz in irgendeiner Weise per Tastatur sperren?
Wenn ja, simulier einfach.
Folgenden Code benutze ich z.B um schnell die Endungen der Dateien sichtbar/ unsichbar zu machen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
procedure PressKeyboard(KEY:uint);
begin 
keybd_event(KEY, $3A, KEYEVENTF_EXTENDEDKEY,0 ); 
keybd_event(KEY, $3A, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0 ); 
end;

procedure PressKeyUP(KEY1:uint); 
begin
keybd_event(KEY1, $3A, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0 ); 
end; 

procedure PressKeyDOWN(KEY1:uint);
begin 
keybd_event(KEY1, $3A, KEYEVENTF_EXTENDEDKEY,0 ); 
end; 


procedure Run(Name: string);
begin
ShellExecute(Application.Handle, 'open',
             PChar('C:\'), nil, nil,
             SW_ShowNormal);
end;


procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
Run('Arbeitsplatz');
// einen Moment warten
sleep(300);

// Alt drücken
PressKeyDOWN(VK_MENU);
Aus dem Menü Extras/OrdnerOptionen wählen
PressKeyboard(Word('X'));
PressKeyboard(Word('O'));
// Alt loslassen
PressKeyUP(VK_MENU);

for i:= 1 to 6 do begin
PressKeyDOWN(VK_TAB);
PressKeyUP(VK_TAB);
end;
PressKeyDOWN(VK_RIGHT);
PressKeyUP(VK_RIGHT);
for i:= 1 to 3 do begin
PressKeyDOWN(VK_TAB);
PressKeyUP(VK_TAB);
end;

for i:= 1 to 5 do begin
PressKeyDOWN(VK_DOWN);
PressKeyUP(VK_DOWN);
end;

//lehrzeichzen
PressKeyDOWN(VK_Space);
PressKeyUP(VK_SPACE);
PressKeyDOWN(VK_RETURN);
sleep(200);
PressKeyUP(VK_RETURN);

//schließen
PressKeyDOWN(VK_MENU);
PressKeyDOWN(VK_F4);
sleep(20);
PressKeyUP(VK_F4);
PressKeyUP(VK_MENU );
end;


Delete - Mo 16.12.02 16:58

Hallo.
Kannst du mir mal den Sinn dieser Prozedur erläutern:

Quelltext
1:
2:
3:
4:
5:
6:
procedure Run(Name: string); 
begin 
ShellExecute(Application.Handle, 'open', 
             PChar('C:\'), nil, nil, 
             SW_ShowNormal); 
end;

Aufruf wie folgt:

Quelltext
1:
Run('Arbeitsplatz');                    

Du übergibst der Prozedur zwar einen Parameter, aber da du ihn nicht benutzt, könntest du genauso gut einen lauwarmen Furz übergeben. :roll:

Und das Durchgehangele mit den Tastaureingaben ist ja mehr als fürchterlich. Aber das resultiert daher, dass ihr fremde Fenster aus eurem Programm so bedienen wollt, als wenn ihr es selbst mit der Maus und Tastatur machen würdet, anstatt es so zu machen, wie Windows eure Aktivitäten dann letztendlich ausführt.
Irgendwo hier im Forum habe ich gepostet, wie man gezielt einen Menüeintrag per SendMessage "anklickt" und das selbe mit einem Button.


Ghost - Mo 16.12.02 19:11

Zitat:
Kannst du mir mal den Sinn dieser Prozedur erläutern:

Hab ich übersehen. Sorry.
Zitat:

Irgendwo hier im Forum habe ich gepostet, wie man gezielt einen Menüeintrag per SendMessage "anklickt" und das selbe mit einem Button.

Außer den OK Button, hab ich da keine Buttons zum anklicken


Delete - Mo 16.12.02 20:00

Radiobuttons und Checkboxen sind auch nur Buttons. das einzigeste Problem dürfte der Tabsheet darstellen.


Ghost - Di 17.12.02 13:39

aha
ok, gebe mich geschlagen :roll: