05. marts 2002 - 09:23Der 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?
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
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;
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>> 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;
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
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 !!
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
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 :-)
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?
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)?
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 ?"?
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
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.