Avatar billede thomas-sp2k Nybegynder
06. juli 2000 - 18:07 Der er 10 kommentarer og
1 løsning

Luk med windows

Jeg har lige to spm

1.
Er der nogen som kan få denne lille kode til at virke ???

PageControl1.ActivePage.TabIndex := strtoint(iniread(FFileName,'Options','Page',inttostr(0)));

Det læser fra en ini fil som der nok kan ses...!

2.
Hvordan kan man få sit program til at lukke med windows ?
Jeg har Win2000 og når jeg så vil prøve at lukke Windows sker der ikke noget ! hvorfor ???
Det er et program som starter med windows og ligger i systray, og det skulle gerne kunne lukke med windows også.!


/Thomas
Avatar billede thomas-sp2k Nybegynder
06. juli 2000 - 18:08 #1
Det skulle også gerne kunne lukkes med Win95/98 !
Avatar billede borrisholt Novice
06. juli 2000 - 18:30 #2
Hmmmn .. Spørgsmål ved jeg ikke lige men spørgsmål 2 har jeg da en løsning på

Probelmet er at ikke alle under windowsNT har ret til at lukke computeren, man kan saktens forestille sig at en bruger ikke har ret til dette, ydligere skal der holdes styr på hvem og hvorsan Windows lukkes ned. Derfor skal brugeren bede om en SeShutdownPrivilege token fra windows. Alt dette under W2K. for 95/98/ME skal du bare kalse ExitWindowsEx().

Alt dette kan kommes ned i en og samme funktion, hvortil du bare skal medgive en parameter alt efter hvilken slage Shutdown du ønsker. Jeg har for nemheds skyld valgt at kalde den ExitWindows, forsi det er jo det den gør....


Function ExitWIndows( iFlags : Integer ) : Boolean;
//-------------------------------------
//Exit the current Windows session. iFlags have to be one of the following constants.
//
//EWX_FORCE    Forces processes to terminate. Instead of bringing up the "application not responding"
//              dialog box for the user, this value forces an application to terminate if it does not respond.
//
//EWX_LOGOFF    Shuts down all processes running in the security context of the process that called the
//              ExitWindows function. Then it logs the user off.
//
//EWX_POWEROFF    Shuts down the system and turns off the power. The system must support the power-off feature.
//
//EWX_REBOOT    Shuts down the system and then restarts the system.
//
//EWX_SHUTDOWN    Shuts down the system to a point at which it is safe to turn off the power.
//              All file buffers have been flushed to disk, and all running processes have stopped.
//-------------------------------------

  Function SetPrivilege( sPrivilegeName : String; bEnabled : Boolean ) : Boolean;
  var
    TPPrev,
    TP        : TTokenPrivileges;
    Token      : THandle;
    dwRetLen  : DWORD;
  begin
    Result := False;
    OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES  or TOKEN_QUERY, Token );
    TP.PrivilegeCount := 1;
    if( LookupPrivilegeValue( Nil, PChar( sPrivilegeName ), TP.Privileges[ 0 ].LUID ) )then
      begin
      if( bEnabled )then
        TP.Privileges[ 0 ].Attributes  :=  SE_PRIVILEGE_ENABLED
      else
        TP.Privileges[ 0 ].Attributes  :=  0;
      dwRetLen := 0;
      Result := AdjustTokenPrivileges( Token, False,TP, SizeOf( TPPrev ), TPPrev, dwRetLen );
    end;
    CloseHandle( Token );
  end;

begin
  Result := True;
  if( SetPrivilege( 'SeShutdownPrivilege', True ) )then
  begin
    if( not ExitWindowsEx( iFlags, 0 ) )then
    begin
      // handle errors...
      Result := False;
    end;
    SetPrivilege( 'SeShutdownPrivilege', False )
  end
  else
  begin
    // handle errors...
    Result := False;
  end;
end;

Hvad den opmærksomme læser straks bemærker så har jeg lånt lidt inde fra Online hjælpen ...

Jens B
Avatar billede thomas-sp2k Nybegynder
06. juli 2000 - 19:00 #3
Hvor skal koden kaldes fra OnClose etc. ???
Avatar billede borrisholt Novice
06. juli 2000 - 19:08 #4
OnClose skal den vel ikke kaldes fra med mindre ud ønsker at lukke windows sammen med dit program. Det vil være mere naturligt at kalde funktionen fra en kanp af, eller hvis der bliver svaret OK i en dialogbox

Jens B
Avatar billede borrisholt Novice
06. juli 2000 - 19:15 #5
På min homepage, http://borrisholt.com, under kategorien "WinNT" finder du et eksemple på en application der bruger funktionen.

Jens B:
Avatar billede thomas-sp2k Nybegynder
06. juli 2000 - 19:17 #6
så tror jeg ikke helt du forstå mit spm !

Når jeg vil lukke Windows via Start->Shut Down skal windows også lukke mit program !
Avatar billede borrisholt Novice
06. juli 2000 - 19:21 #7
Det gør den automatisk, med mindre du explisit forhindere windows i at lukke ned.

Så med andre ord så lukker Windows også dit program, hvis du "ingenting gør"

Jens B
Avatar billede thomas-sp2k Nybegynder
06. juli 2000 - 19:31 #8
nej ikk ved mig !

Kan det være fordi at min form's visible er false ?
Avatar billede borrisholt Novice
06. juli 2000 - 20:36 #9
Prøv at kigge på det eksempel fra Borisholt.com.

Jens B
Avatar billede thomas-sp2k Nybegynder
07. juli 2000 - 20:00 #10
oki det vil jeg
Avatar billede thomas-sp2k Nybegynder
10. juli 2000 - 20:03 #11
Jeg kan ikke helt bruge det så jeg lukker...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester