Avatar billede assassin Juniormester
16. oktober 2007 - 10:43 Der er 19 kommentarer og
1 løsning

Forhindre screensaver i at blive aktiveret.

Jeg skal forhindre screensaveren i at blive aktiveret.
Screensaveren er sat til 10 minutter og det kan IKKE ændres.

Jeg overvejer at lave et program, som åbner kontrolpanel hver 6. minut og jeg ved hvordan jeg åbner kontrolpanel:

WinExec('Rundll32 Shell32.dll, Control_RunDLL', SW_SHOW);

MEN hvordan får jeg lukket den igen?
Avatar billede dkn Nybegynder
16. oktober 2007 - 10:52 #1
altså hvis det skal ordnes på sådan en måde, så kan jeg ikke forstå hvorfor du ikke bare vil nøjes med at simulere mus eller tastetryk
Avatar billede sherlock Nybegynder
16. oktober 2007 - 10:56 #2
Avatar billede assassin Juniormester
16. oktober 2007 - 11:12 #3
dkn - det er fordi at jeg ikke havde tænkt på det.

Det vil være endnu bedre.
Avatar billede assassin Juniormester
16. oktober 2007 - 11:47 #4
Sherlock - jeg ser lige på det.
Avatar billede assassin Juniormester
16. oktober 2007 - 13:18 #5
Sherlock - jeg har lidt problemer med hvordan jeg skal kalde proceduren, kan du hjælpe?
Avatar billede sherlock Nybegynder
16. oktober 2007 - 13:23 #6
Den skal ikke kaldes af dig.
Den bliver kaldt af delphi's globale eventhandler, når windows laver en broadcast til alle kørende applikationer.
Den skal bare tilføjes til din form.
Avatar billede assassin Juniormester
16. oktober 2007 - 13:47 #7
OK - jeg tester lige
Avatar billede assassin Juniormester
16. oktober 2007 - 14:02 #8
Den fanger ikke screensaveren, den bliver stadig aktiveret.
Avatar billede sherlock Nybegynder
16. oktober 2007 - 14:20 #9
Det er nok fra før-XP tiden...

Her er en anden metode at forsøge med.
Jeg har ikke selv Delphi installeret mere, så jeg kan ikke teste, før jeg poster her.

{
Insert the following code into the
"public" section of
your main form:
}
procedure AppMessage
  (var Msg : TMsg;
    var bHandled : boolean ) ;

{
In the OnCreate for the main form add:
}
Application.OnMessage := AppMessage;

{
In the "implementation" section, insert the
following code (suppose Form1 is the name of your form):
}
procedure TForm1.AppMessage(
  var Msg : TMsg;
  var bHandled : boolean ) ;
begin
  if((WM_SYSCOMMAND = Msg.Message) and
      (SC_SCREENSAVE = Msg.wParam) )then
    bHandled := True;
end;
Avatar billede assassin Juniormester
16. oktober 2007 - 14:24 #10
Jeg kører Windows 2000, hvis det gør nogen forskel, men jeg prøver lige.
Avatar billede assassin Juniormester
16. oktober 2007 - 14:40 #11
Indtil nu er der ikke noget, har kunne forhindre screensaveren til at starte op.
Avatar billede sherlock Nybegynder
16. oktober 2007 - 15:02 #12
Nååmen. Vi giver ikke op så let :)

Kald denneher i Form.Create.


function ActivateScreenSaver
        (Activate: boolean): boolean;
var IntActive: byte;
begin
  if Activate then
    IntActive := 1
  else
    IntActive := 0;

  Result := SystemParametersInfo
            (SPI_SETSCREENSAVEACTIVE, IntActive,
              nil, 0) ;
end;
Avatar billede assassin Juniormester
17. oktober 2007 - 12:05 #13
Jeg tester lige
Avatar billede hrc Mester
17. oktober 2007 - 13:44 #14
Hvis man bruger det sidste af sherlocks forslag skal man huske at sætte den igen, men hvad sker egentlig hvis programmet uventet dør?

I øvrigt en helt sjovt API-kald, den SystemParametersInfo.

Jeg prøvede forslag nr. 2, hvor jeg koblede den på application.OnMessage. Den skal jo også forhindre pauseskærmen når andre forme er åbne. Men min maskine er imod mig. Selvom maskinen er genstartet og tidsintervallet sat til 1 minut, kan jeg ikke få pauseskærmen frem - og så kan jeg heller ikke teste om det virker.
Avatar billede assassin Juniormester
17. oktober 2007 - 13:51 #15
Nope, min screensaver insistere på at starte op.
Avatar billede sherlock Nybegynder
17. oktober 2007 - 14:03 #16
Ok. Prøv det her og hvis det virker, så "stjæl" med arme og ben :)

http://members.fortunecity.com/schutzenberger/download/AntiScreensaverSrc.zip
Avatar billede assassin Juniormester
18. oktober 2007 - 15:13 #17
Avatar billede sherlock Nybegynder
18. oktober 2007 - 15:33 #18
Så bare kopier linket og sæt det i adressefeltet selv :)
Avatar billede assassin Juniormester
19. oktober 2007 - 10:31 #19
DET VIRKER!

Sherlock - smid et svar, så du kan få dine velfortjente points.

Og tak for hjælpen.
Avatar billede sherlock Nybegynder
19. oktober 2007 - 11:07 #20
:) Befriende....
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