Avatar billede jisch Mester
05. marts 2002 - 09:23 Der er 26 kommentarer og
3 løsninger

Automatisk nedlukning

Hej alle,

Jeg mangler et program der kan detektere om der IKKE har været aktivitet på computeren i et bestemt tidsinterval. Hvis der ikke har været aktivitet skal programmet poppe op og meddele at computeren slukke om f.eks. 1 min. Med mindre brugeren aktiverer popup-vinduet på en eller anden måde, lukkes windows. Er der mon nogen der kan hjælpe?

Hilsen Jisch
Avatar billede pornholmer Nybegynder
05. marts 2002 - 09:24 #1
lytter... :)
Avatar billede stoney Nybegynder
05. marts 2002 - 09:43 #2
Lav det som en screensaver. Det er det nemmeste.
Ellers skal du hen og have fat i en masse hooks.

Stoney
Avatar billede Marting Forsker
05. marts 2002 - 10:56 #3
Hej Stoney!!

fik du lave det til ham der???

Martin
Avatar billede stoney Nybegynder
05. marts 2002 - 11:09 #4
marting>>

Fik lavet hvad til hvem ?

Stoney
Avatar billede Marting Forsker
05. marts 2002 - 11:28 #5
Stoney >>

skulle du ikke lave et prom. til en ???

noget med en sever til ande sever??

Martin
Avatar billede stoney Nybegynder
05. marts 2002 - 11:39 #6
Nå, jo jo.
Jeg blev færdig kl. 2 i nat.
Det spiller bare.

Stoney
Avatar billede Marting Forsker
05. marts 2002 - 11:50 #7
Du er bare god!!!!!!!
ok så fik du ikke skå bollo af :-))

og du fik min E-m??

Martin
Avatar billede stoney Nybegynder
05. marts 2002 - 11:54 #8
Jeg svarer lige på din mail når jeg kommer hjem.

Stoney
Avatar billede jisch Mester
05. marts 2002 - 13:27 #9
Hej Stoney,
Tak for dit svar. Jeg ved ikke rigtigt hvordan det gøres med den der screensaver. Kan du evt. uddybe det??
Jeg går ud fra at resten er en privat chat mellem dig og Marting!!!!
Hilsen Jisch
Avatar billede stoney Nybegynder
05. marts 2002 - 13:51 #10
Groft sagt kan du bare lave en exe fil og omdøbe den til .scr og kopiere
den til rette bibliotek alt efter hvilket WIN OS du kører.

Jeg kigger lige på det i aften.

Stoney
Avatar billede borrisholt Novice
05. marts 2002 - 14:41 #11
jeg vil foreslå du bruger nogle WindowsHooks ... Jeg kan sende dig et eksempel hvis du giver min din e-mail adr.

jens B
Avatar billede geek Nybegynder
05. marts 2002 - 18:33 #12
Har lige fixet noget sammen som burde det du ville, men du skal bruge programmet som en screensaver altså omdøb din exe til scr.

skal bruge en form og en timer med interval 1000.

var
  Form1: TForm1;
  tid : integer= 0;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
if copy(ParamStr(paramCount),2,1) <> 's' then application.Terminate
else
  timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
y : integer;
begin
  inc(tid);
  canvas.Font.Height := 60;
  Canvas.Handle := GetDC(0);
  y := canvas.TextWidth('Slukker om ' + inttostr(60 - tid) + ' Sec');
  Canvas.TextOut(screen.Width div 2 - y div 2,screen.Height div 2,'Slukker om ' + inttostr(60 - tid) + ' Sec');

  if tid = 60 then ExitWindowsEx(EWX_SHUTDOWN,0);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
InvalidateRect(0,nil,true);
end;

end.
Avatar billede geek Nybegynder
05. marts 2002 - 18:34 #13
HOV glemte egentlig at den skulle afslutte programmet hvis man rørte ved en tast :)
Må du lige selv fixe...
Avatar billede borrisholt Novice
06. marts 2002 - 08:34 #14
geek >> Din løsning virker ikke på en Windows NT/2K/XP ... Efter min mening ikke særligt optimalt ...

Jens B
Avatar billede jisch Mester
06. marts 2002 - 10:09 #15
Til borrisholt,
Tak for dit svar. Min e-mail jspost@sol.dk
Hilsen jisch
Avatar billede geek Nybegynder
06. marts 2002 - 20:39 #16
Quote borrisholt "Efter min mening ikke særligt optimalt"
Ja undskyld man prøver at hjælpe...
Har ikke mulighed for at teste det i NT eller XP, men i 2K virker det meste da som det skal, er da kun lige "ExitWindowsEx(EWX_SHUTDOWN,0);" som skal udbyttes med noget som faktisk slukker maskinen...

Geek
Avatar billede borrisholt Novice
07. marts 2002 - 09:06 #17
geek>> Du skal ikke undskylde !!! Aldrig bøje nakken ..... Bare fordi jeg har sidet her på eksperten i langtid (næsten 3 år) og du knap så lang tid, gør på ingen måde jeg har mere ret end dig !

Jeg forbeholder mig blot retten til at til en hvertid at give min hjertens ubegriblige mening !

Jeg vil da i ævrigt gerne være vært ved en funktion der kan lukke en Windows maskine ned :

function ExitWIndows( iFlags : integer ) : boolean;

  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;


Her er så tre eksempler på hvordan den kan kaldes :

    ExitWindows(EWX_SHUTDOWN);
    ExitWindows(EWX_REBOOT);
    ExitWindows(EWX_LOGOFF);
Jens B
Avatar billede geek Nybegynder
07. marts 2002 - 19:27 #18
quote "Jeg forbeholder mig blot retten til at til en hvertid at give min hjertens ubegriblige mening !"
Det skal du da self. også have lov til :)
Du har faktisk kun været her nogle mdr. mere end mig !

Hvis man skal bruge SÅ meget kode bare for at boote maskinen i forholdt til 3 linjer i 98 forstår man godt at windows fylder så meget som det gør !!

Geek
Avatar billede jisch Mester
08. marts 2002 - 05:32 #19
Hej,
Tak for alle indlæg. Jeg har endnu ikke besluttet mig for om det skal være hooks eller screensaver. Bortset fra det - hvordan omdøber jeg en exe-fil til en scr-fil i windows 2K? Den er jo stadigvæk registreret som en exe-fil.
Jisch
Avatar billede jisch Mester
08. marts 2002 - 05:44 #20
Hej igen, igen,
Undskyld - det ved jeg faktisk godt selv. Det blev lidt sent!!
Jisch
Avatar billede jisch Mester
08. marts 2002 - 05:51 #21
Til Stoney,
Kan du ikke sende mig et svar. Jeg synes at alle disse gode svar skal dele pointene.
Jisch
Avatar billede borrisholt Novice
08. marts 2002 - 08:33 #22
geek >> ja ja ... Det der med Windows 98 og mit program der fylder så meget ... Det er ikke HELT rigtigt .. fordi min lokale procedure SetPrivilege() kan bruged i rigtig mange sitiationer når man koder WIndowsNT (eller en efter følger) fordi ikke alle brugere har ret til at gøre alt ...

jisch >> Der der med at omdøbe en exe fil til en scr fil gør den ikke til en Screensaver på www.torry.net kan du dowloade et eksempel på hvordan man laver en Screensaver i Delphi :-)

Jens B
Avatar billede jisch Mester
09. marts 2002 - 11:47 #23
Til Borrisholt,
Jeg kan da omdøbe exe til scr fra dos-promten. Det virker i hvert fald.
Jeg har afprøvet din function ExitWindows. Den virker i Windows 2K, men jeg kan ikke få den til at virke i Windows 98.
Et andet problem: I Windows 2K slukker computeren ikke, men giver en meddelelse om at jeg nu kan slukke computeren. Hvorfor det?

Jisch
Avatar billede jisch Mester
09. marts 2002 - 13:08 #24
OK - den med "Nu kan du slukke computeren" har jeg fundet ud af. Jeg skal blot bruge parameteren EWX_POWEROFF. Kan jeg i Windows 98 ikke blot kalde ExitWindowsEx(EWX_POWEROFF,0)?

Jisch
Avatar billede jisch Mester
10. marts 2002 - 22:10 #25
Sidste spørgsmål om dette. Hvordan undertrykker jeg ved nedlukningen at et kørende program f.eks. Word ikke kommer frem med meddelelsen "Skal ændringerne i "dokument 1" gemmes ?"?

Jisch
Avatar billede borrisholt Novice
11. marts 2002 - 08:40 #26
du bruger min metode og så kalder du
ExitWindows(EWX_FORCE);

Jens B
Avatar billede stoney Nybegynder
11. marts 2002 - 08:58 #27
:-)

Stoney
Avatar billede borrisholt Novice
11. marts 2002 - 09:05 #28
er der nogen der gidder teste mit lordt på win 9x ?

Jens B
Avatar billede jisch Mester
11. marts 2002 - 10:58 #29
Til Borrisholt,
Tak skal du ha', men den har jeg prøvet. Det lukker bare ikke computeren ned, men beder mig om at logge ind igen. Jeg har prøvet:
ExitWindows(EWX_FORCE);
ExitWindows(EXW_POWEROFF);
Den går jo ikke da EXWFORCE lukker det kørende program ned.

Jisch
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