2009-03-11, 15:03
  #1
Medlem
Okej det är nämligen så här.
Har funderat på att göra ett program som stänger av datorn efter en viss tid.
antingen att jag anger hur många timmar/minuter/sekunder den ska vara på.
eller när klockan blir t.ex 15.00 ska den stängas av.
hur gör man detta på bästa sätt?
Har funderat på en while, eller if sats. Dvs while(tid < 15.00) t.ex. Fast detta förut sätter att man kan få tag i system klockan på något sätt.
Har inte så mycket skills i programmering, precis börjat på Prog B.
Men tror inte att detta kan vara svårt?
Citera
2009-03-11, 15:06
  #2
Medlem
micaeles avatar
Nej, det är absolut inte svårt. Men du kommer behöva väldigt mycket mer kunskaper än vad du har nu för att göra det bra. Systemtid och tidmätning är inte svårt att få tag i och implementera, heller inte att stänga av datorn.
Men ditt uttryck...
Citat:
Har funderat på en while, eller if sats.
...talar ganska tydligt om nivån. Så jo, just nu är det nog väldigt svårt.
Citera
2009-03-11, 15:11
  #3
Medlem
Det finns ju ett kommando, beroende på system, som stänger av datorn.
Linux: shutdown -h +15, Stänger av datorn efter 15min tex.

Tror att shutdown finns i windows med, testa google.
Citera
2009-03-11, 15:38
  #4
Medlem
Är det inte bättre om du gör en batch fil med några enklare kommandon?
Detta är för Windows dock och är det enda jag känner till tyvärr.
För andra typer av OS så för du väl göra en google sökning på det eller om någon annan kunnig kan svara på det.

http://en.wikipedia.org/wiki/Batch_file
Citera
2009-03-11, 15:53
  #5
Medlem
Windows shutdown

Om du skall ge dig in i detta, så måste du förstå vad jag gjort nedan. Avstå annars.

Kod:
typedef WINADVAPI
  BOOL
  APIENTRY
  (*InitiateSystemShutdownExAFunc)(
      IN LPSTR lpMachineName,
      IN LPSTR lpMessage,
      IN DWORD dwTimeout,
      IN BOOL bForceAppsClosed,
      IN BOOL bRebootAfterShutdown,
      IN DWORD dwReason
      );

void __fastcall TForm1::systemShutDown( bool Reboot )
{

     static bool gotpriv = false;
     if( !gotpriv) {
         HANDLE processToken;
         if( OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &processToken)) {
             TOKEN_PRIVILEGES    provValue;
             if( LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &provValue.Privileges[0].Luid)) {
                 provValue.PrivilegeCount = 1;
                 provValue.Privileges[0].Attributes =SE_PRIVILEGE_ENABLED;
                 AdjustTokenPrivileges (processToken, false, &provValue, sizeof(TOKEN_PRIVILEGES), NULL, 0);
                 gotpriv = true;
                 }
             }
         }


     HINSTANCE hinst = LoadLibraryEx("Advapi32.dll", NULL, 0);
     InitiateSystemShutdownExAFunc func;
     if( hinst) {
         func = (InitiateSystemShutdownExAFunc)GetProcAddress(hinst, "InitiateSystemShutdownExA");
         DWORD  err = func("", NULL, 0, true, Reboot, 0x00030001);
        }
}

I ovanstående är kärnan i hur man stänger en Windows maskin.
Något nedklippt i vissa delar jag ansåg var ovidkommande för funktionen, bl.a. test på "err".

Och som ni ser väljer jag vid anrop av metoden om det är Reboot eller Shutdown jag vill nå.
__________________
Senast redigerad av PeterSfa 2009-03-11 kl. 16:04.
Citera
2009-03-11, 18:14
  #6
Medlem
Asså det behöver inte vara svårt... om du t.ex skriver in en tid. säg 1 timme 4 minuter och 36 sekunder (3876 sec), omvandlar det till sekunder och sedan programmet räkna ner 3876 sekunder innan man drar system(shutdown) bör väll inte vara svårt?
Citera
2009-03-11, 20:24
  #7
Medlem
War Skeletons avatar
In i cmd och skriv: at 15:00 /interactive shutdown -s
Citera
2009-03-14, 01:34
  #8
Medlem
katten80s avatar
Detta går väl och göra i det allra flesta OS med något enkelt script.
vet ett program (sleepy trot jag det heter) som jag vet en del skolor betalar extra för denna typ av funktionalitet
Citera
2009-03-15, 12:27
  #9
Medlem
Joo. vet att det finns sådana program men har så mycket fritid och hade lust att göra ett eget bara för skojs skull.
Citera
2009-03-16, 10:30
  #10
Awaiting Email Confirmation
<ta bort plox>
__________________
Senast redigerad av al6 2009-03-16 kl. 10:52.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in