10. juni 2002 - 20:08Der er
38 kommentarer og 3 løsninger
Logge af aktuelle Windows-bruger...
Har lavet et program der kan: # Lukke computeren # Genstarte computeren # Logge af den aktuelle bruger (logge af)
Mit problem opstår når jeg vil logge af. I første omgang ser det ud til at virke fint, alle kørende programmer lukker, men når login-dialogen burde komme starter den bare alt igen. Når jeg atter, via mit program, prøver at logge af, så virker det fint, login-dialogen kommer frem.
En del af min kode: procedure TForm1.OKButtonClick(Sender: TObject); begin SaveToReg(ComboBox.ItemIndex,'index',2); case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: if ExitWindowsEx(EWX_LOGOFF,0) then Close; 3: Close; end end;
//Tror ikke fejlen er her: procedure SaveToReg(input1:Variant;input2:String;inputtype:Byte=1); begin reg:=TRegistry.Create; with reg do try begin Rootkey:=HKEY_CURRENT_USER; CreateKey('\Software\xShutDown'); OpenKey('\Software\xShutDown', True); case inputtype of 1: reg.WriteString(input2,input1); 2: reg.WriteInteger(input2,input1); 3: reg.WriteBool(input2,input1); end; reg.CloseKey; end; finally reg.Free; end; end;
-------------------------------------------------
//Ikke en del af min kode, men virker fint: procedure TForm1.OKButtonClick(Sender: TObject); begin ExitWindowsEx(EWX_LOGOFF,0); Close; end;
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hov, jeg startede med at skrive, afviste og pludselig så stod det jeg har skrevet der som en komentar!
Nå, men nu til sagen: JB, jeg kan desværre ikke bruge dit svar, har faktisk prøvet din kode allerede før jeg oprettede spørgsmålet, den giver mig fejl!
procedure TForm1.OKButtonClick(Sender: TObject); begin case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: if ExitWindowsEx(EWX_LOGOFF,0) then Close; 3: Close; end end;
Men det gør det her ikke:
procedure TForm1.ComboBoxKeyPressed(Kan ikke lige huske alle paremetrene, ud over Sender og Key); begin if (key in [#13,#32]) then case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: if ExitWindowsEx(EWX_LOGOFF,0) then Close; 3: Close; end; end;
JB -> Det er selve hovedkoden der lukker, genstarter og logger af der ikke vil virke, det gør til gendgæld ExitWindowsEx! (Men hvor er fejlen i min kode?)
Hvor er fejlen i: procedure TForm1.ComboBoxKeyPressed(Kan ikke lige huske alle paremetrene, ud over Sender og Key); begin if (key in [#13,#32]) then case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: if ExitWindowsEx(EWX_LOGOFF,0) then Close; 3: Close; end; end;
Kan det være at EWX_LOGOFF kræver at programmet som sendte forbliver åben lidt tid efter kaldet?
Måske du bare skulle prøve:
case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: ExitWindowsEx(EWX_LOGOFF,0); 3: Close; end;
dkn -> Hvorfor virker følgende så: procedure TForm1.OKButtonClick(Sender: TObject); begin case ComboBox.ItemIndex of 0: if ExitWindowsEx(EWX_SHUTDOWN,0) then Close; 1: if ExitWindowsEx(EWX_REBOOT,0) then Close; 2: if ExitWindowsEx(EWX_LOGOFF,0) then Close; 3: Close; end end;
Hvad du muligvis har lagt mærke til så bruger jeg ikke close i mit eksempel, fordi det klarer Windows selv.
Jeg gør sådan her : procedure TForm1.Button1Click(Sender: TObject); begin If RadioButton1.Checked then ExitWindows(EWX_SHUTDOWN); If RadioButton2.Checked then ExitWindows(EWX_REBOOT); If RadioButton3.Checked then ExitWindows(EWX_LOGOFF); end;
Måske du skulle prøve :
procedure TForm1.OKButtonClick(Sender: TObject); begin case ComboBox.ItemIndex of 0: ExitWindowsEx(EWX_SHUTDOWN,0); 1: ExitWindowsEx(EWX_REBOOT,0); 2: ExitWindowsEx(EWX_LOGOFF,0); 3: Close; end end;
Jeg har ikke en Windows 9x til min rådighed .... Og kan derfor ikke teste koden
Jeg kan vel finde nogle point frem hvis det skulle være :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.