Avatar billede dilling-hansen Nybegynder
18. august 2006 - 13:44 Der er 8 kommentarer og
1 løsning

Dvale function til XP

Jeg har prøvet at rode lidt med det her:
  http://www.eksperten.dk/spm/479264
men kan ikke få det til at virke :(
er der nogen der ligger inde med noget viden om hvordan man kan sætte computeren i dvale :)
bruge BDS 2006.
Avatar billede Slettet bruger
18. august 2006 - 14:01 #1
start > Luk computeren > hold shift nede og vælg dvale !
Avatar billede dilling-hansen Nybegynder
18. august 2006 - 14:13 #2
Du er her : Eksperten : Spørgsmål & Svar : Programmering :: Delphi :: Dvale function til XP

:D men ellers tak for svaret :)
Avatar billede a_nor Nybegynder
18. august 2006 - 14:18 #3
Den side der henvises til http://www.swissdelphicenter.ch/torry/showcode.php?id=1401
fungerer "godt nok", Der skal bare rettes en anelse i koden:

i Interface delen indsættes:


function SetSuspendState(
  Hibernate: Boolean;
  ForceCritical: Boolean;
  DisableWakeEvent: Boolean):boolean;


{  Parameters:

  Hibernate: If this parameter is TRUE, the system hibernates.
              If the parameter is FALSE, the system is suspended.
  ForceCritical: If this parameter is TRUE, the system suspends operation immediately;
                  if it is FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to
                  each application to request permission to suspend operation.
  DisableWakeEvent: If this parameter is TRUE, the system disables all wake events.
                    If the parameter is FALSE, any system wake events remain enabled.


  Windows NT/2000/XP: Included in Windows 2000 and later.
  Windows 95/98/Me: Included in Windows 98 and later.
}

var
  _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL;  stdcall; // = nil);

og i Implementation:





function LinkAPI(const module, functionname: string): Pointer; forward;

function SetSuspendState(Hibernate, ForceCritical,  DisableWakeEvent: Boolean): boolean;
  begin
  if not Assigned(_SetSuspendState) then
    @_SetSuspendState := LinkAPI('POWRPROF.dll', 'SetSuspendState');
  if Assigned(_SetSuspendState) then
    Result := _SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent)
  else
    Result := False;
  end;

function LinkAPI(const module, functionname: string): Pointer;
var
  hLib: HMODULE;
  begin
  hLib := GetModulehandle(PChar(module));
  if hLib = 0 then
    hLib := LoadLibrary(PChar(module));
  if hLib <> 0 then
    Result := getProcAddress(hLib, PChar(functionname))
  else
    Result := nil;
  end;


Og så en knap (Button1) der kalder :


procedure TForm1.Button3Click(Sender: TObject);
begin
  SetSuspendState(True, False, False);
end;
Avatar billede dilling-hansen Nybegynder
18. august 2006 - 14:33 #4
Lige så snart jeg sætter det her ind lige efter 'interface':

function SetSuspendState(
  Hibernate: Boolean;
  ForceCritical: Boolean;
  DisableWakeEvent: Boolean):boolean;
var
  _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL;  stdcall; // = nil);

Så brokker den sig med det her + ca 100 andre om alt muligt mærkeligt :-/

[Pascal Error] MainForm.pas(10): E2029 Declaration expected but 'USES' found
Avatar billede a_nor Nybegynder
18. august 2006 - 14:39 #5
Det skal indsættes 'lige over' implementation i interface-delen
Avatar billede a_nor Nybegynder
18. august 2006 - 14:43 #6
Det vigtige er at din Uses-sætning kommer umiddelbart efter Interface
Avatar billede Slettet bruger
18. august 2006 - 14:57 #7
ha ha,  det havde jeg slet ikke set !  godt ord igen !
Avatar billede dilling-hansen Nybegynder
18. september 2006 - 23:19 #8
lidt sent på den (som jeg plejer ;P) men fik det til at virke, så hvis nogen vil have point så smid et svar :) så vi kan få lukket det spg ;)
Avatar billede a_nor Nybegynder
19. september 2006 - 10:42 #9
Fint det lykkedes for dig (after all ?? )  :-))
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