Standbyprozess abfangen

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

FreetimeCoder

Betreff: Standbyprozess abfangen

BeitragMi, Dez 05, 2007 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich schreib mal hier rein, weil ich atm noch nichts habe und mir auch nicht sicher bin, ob ich das mit BB bzw Bmax umsetzen kann, bzw ob es überhaupt nötig ist Wink

Es geht nicht um das Nerven von Benutztern.
Ich bin bei uns in der Schule für die PCs zuständig. Jeder kann als eingeschränkter Nutzer ran. Ich kann den Administratoraccount benutzten.

Mein Problem:
Jeder kann an die PCs, dass heißt auch an die Labtops. Leider kommt es häufig vor, dass diese gar nicht ausgeschaltet werden, sondern nur zugeklappt, bzw der Knopf für den Standby gedrückt wird. Die Labtops werden außerdem nicht selten gar nicht wieder an das Stromnetz angeschlossen.
Das Ergebnis: Diese Labtops sind gar nicht zu gebrauchen, da deren Netzteile fest installiert sind. Der Labtop hat keinen Strom und kann nicht mobil benutzt werden.

Meine Frage:
Kann ich den Standby verhindern, und entweder einen Warnhinweis bzw ein Bestätigenfenster erscheinen lassen, bevor der PC in den Standby wechselt? Und dann, falls 30 Sekunden keine Eingabe gemacht wird, automatisch runterfahren?

Ich weiß, es gibt bei Windows die Möglichkeit, einfach beim Drücken des Standbyknopfes, bzw dem Zuklappen des Deckels herunterzufahren, oder einfach nichts zu unternehmen, aber ich bevorzuge meine Idee, da man dadurch den Benutzer auf auf sein Fehlverhalten hinweisen kann.

Jemand eine Idee?

MfG
FTC
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

mabox

BeitragMi, Dez 05, 2007 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Unter den Energieoptionen kann man bei Windows die Deckelschließaktion eines Laptos einstellen. Also könnte man diese auf Herunterfahren einstellen. Wie das mit dem Standbyknopf ist weis ich nicht, bei meinem Laptop kann ich das auch einstellen, ich weis aber nicht wie das bei anderen ist.
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl
Dönerfresser Homepage
 

Dreamora

BeitragMi, Dez 05, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ihr schulsysteme habt, handelt es sich dabei ja gewiss um "NT" Abkömmlinge, das heisst entweder Windows 2000 Pro oder XP Pro

In beiden Fällen musst du einfach dafür sorgen, das user nur auf eingeschränkten useraccounts rein gehen können und die dann als admin so konfigurieren das jede reaktion zu shutdown führt (anstatt standby / ruhezustand).
das wars Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

pixelshooter

BeitragMi, Dez 05, 2007 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
bei den energieoptionen kann man auch die reaktion auf den standby knopf einstellen.
Allerdings verbannt es nicht den eintrag im startmenü Wink
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc

Elvis

BeitragMi, Dez 05, 2007 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Um eine Meldung bei Ausfürung eines Interrupts anzeigen zu lassen, wirst du dich wohl um die Registry kümmern müssen, wenn es überhaupt möglich ist. Vermutlich wird dir aber keiner aus diesem Forum bei diesem Thema detailiertere Lösungsvorschläge geben können, da wohl die meisten, wenn nicht gar alle, nur auf den höchsten Ebenen ihres Betreibssystems arbeiten.


Grüße, Elvis
 

Dreamora

BeitragMi, Dez 05, 2007 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt tools die noch weitere eingriffe erlauben ohne grosse Probleme.
Aber wie gesagt, wenn man dem User die möglichkeit nimmt, standby etc überhaupt zu nutzen in den Rechteeinstellungen ist das kein Problem.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FreetimeCoder

BeitragDo, Dez 06, 2007 7:31
Antworten mit Zitat
Benutzer-Profile anzeigen
FreetimeCoder hat Folgendes geschrieben:
Ich weiß, es gibt bei Windows die Möglichkeit, einfach beim Drücken des Standbyknopfes, bzw dem Zuklappen des Deckels herunterzufahren, oder einfach nichts zu unternehmen, aber ich bevorzuge meine Idee, da man dadurch den Benutzer auf auf sein Fehlverhalten hinweisen kann.


Aber ich glaub ihr habt mich trotzdem überzeugt. Das mit den Einstellungen ist wohl einfacher Wink

MfG
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

ChristianK

BeitragDo, Dez 06, 2007 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Standby abzufangen ist ganz einfach. Das Programm hab ich in BlitzMax geschrieben. Es zeigt eine Meldung an, wenn der User den Standby-Modus benutzen will. Du könntest dann zusätzlich noch einen Counter einbauen, der Windows nach 30 Sekunden herunterfahren lässt. So wie ist jetzt ist, wird der Standby einfach abgebrochen.

Code: [AUSKLAPPEN]
' Standby abfangen

SuperStrict
Framework brl.win32maxgui
Import brl.eventqueue
Import pub.win32

Extern "Win32"
   Function SetWindowProc:Byte Ptr( hwnd:Int, id:Int, proc:Byte Ptr ) = "SetWindowLongA@12"
End Extern

Global PrevWndProc:Byte Ptr

Function SubclassProc:Int( hwnd:Int, msg:Int, wparam:Int, lparam:Int )

   Select msg
         
      Case $0218 ' WM_POWERBROADCAST
         If wparam = 0
            Notify "Bitte benutze nicht den Standby-Modus, sondern fahre den PC herunter.", True
            
            Return $424d5144
         End If
      
   End Select

   Return CallWindowProcA( PrevWndProc, hwnd, msg, wparam, lparam )
End Function

AppTitle = "Standby"
Local win:TGadget = CreateWindow( "", 0, 0, 0, 0, Null, WINDOW_HIDDEN )

PrevWndProc = SetWindowProc( QueryGadget( win, QUERY_HWND ), GWL_WNDPROC, SubclassProc )

While True
   WaitEvent
Wend
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

FreetimeCoder

BeitragDo, Dez 06, 2007 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey danke!

Hätte nicht gedacht, dass das so "einfach" ist.

Thx!
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Arrangemonk

BeitragDo, Dez 06, 2007 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest auch einach das runterfahren um 7 abends erzwingen (so is das bei mir an der fh)
so kann ein laptop wenn er nicht ausgeschaltet wird ab 7 laden^^
ingeneur

FreetimeCoder

BeitragDo, Dez 06, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist ja, dass die Labtops teilweise gar nicht mehr angeschlossen werden. Und damit man zumindest noch ein wenig Restenergie hat sollen die dann Zwangsabgeschaltet werden Wink
Bei der FH kann man denke ich davon ausgehen, dass mit den Geräten ordentlich umgegangen wird, aber bei einem Gymnasium wo auch 5 Klässler drankönnen ist das leider nicht der Fall.

MfG
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Silver_Knee

BeitragDo, Dez 06, 2007 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
lässt sich "shutdown -a" nicht irgendwie auf den Ausknopf binden? dadrauf dann noch n "shutdown -s -t 60" und dann fährt der pc in 60 sek runter... n blizprog/batch könnte aufn ok vom user warten und den countdown mit "shutdown-a" wieder abbrechen..

FreetimeCoder

BeitragDo, Dez 06, 2007 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wen es interessiert:
Code: [AUSKLAPPEN]
SuperStrict
Framework brl.win32maxgui
Import brl.eventqueue
Import brl.timer
Import pub.win32

Extern "Win32"
   Function SetWindowProc:Byte Ptr( hwnd:Int, id:Int, proc:Byte Ptr ) = "SetWindowLongA@12"
   Function WinExec(lpCmdLine:Byte Ptr,nCmdShow:Int)
End Extern

AppTitle = "stb.app"
Global NoteWindow:TGadget=CreateWindow("Achtung!",400,300,400,100,Null,WINDOW_TITLEBAR|WINDOW_HIDDEN)
Local NoteLabel:TGadget=CreateLabel("Bitte benutze nicht den den Standby-Modus, sondern fahre den PC herunter.",10,10,GadgetWidth(NoteWindow)-20,15,NoteWindow)
Local TimeLabel:TGadget=CreateLabel("",10,25,GadgetWidth(NoteWindow)-20,15,NoteWindow)
Global OKButton:TGadget=CreateButton("OK",GadgetWidth(NoteWindow)/2-80,40,40,20,NoteWindow)
Global AbButton:TGadget=CreateButton("Abbrechen",GadgetWidth(NoteWindow)/2-20,40,100,20,NoteWindow)
HideGadget(NoteWindow)

Global CurTime:Int=MilliSecs()
Global PrevWndProc:Byte Ptr
Local Timer:TTimer=CreateTimer(15)
Local LeftTime:Int=30

Function SubclassProc:Int( hwnd:Int, msg:Int, wparam:Int, lparam:Int )

   Select msg
         
      Case $0218 ' WM_POWERBROADCAST
         If wparam = 0
         ShowGadget(NoteWindow)
         CurTime=MilliSecs()           
         Return $424d5144
         End If
     
   End Select

   Return CallWindowProcA( PrevWndProc, hwnd, msg, wparam, lparam )
End Function

Function Shutdown(parm:String=" -s -t 0")
   WinExec("shutdown.exe"+parm$,1)
End Function

PrevWndProc = SetWindowProc( QueryGadget( NoteWindow, QUERY_HWND ), GWL_WNDPROC, SubclassProc )

While True
   WaitEvent
   If GadgetHidden(NoteWindow)=False
      Select EventID()
      Case EVENT_TIMERTICK
         SetGadgetText(TimeLabel,"In "+(LeftTime+((Curtime-MilliSecs())/1000))+" Sekunden wird der Computer automatisch beendet.")
         If (LeftTime+((Curtime-MilliSecs())/1000))<=0
            Shutdown
         EndIf
      Case EVENT_WINDOWCLOSE
         HideGadget(NoteWindow)
      Case EVENT_GADGETACTION
         Select EventSource()
         Case OKButton
            HideGadget(NoteWindow)
            Shutdown
         Case AbButton
            HideGadget(NoteWindow)
         EndSelect
      EndSelect
   EndIf
Wend


Bitte Wink
Bmax.
Klaptt ganz gut. Wenn man es als Gui-App kompiliert, dann kriegt der User kaum was mit, außer über den Taskmanager.

MfG
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

ChristianK

BeitragDo, Dez 06, 2007 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Die WinExec-Funktion ist ein Überbleibsel aus 16-Bit Zeiten und ist nur noch aus Kompatibilitätsgründen in der WinAPI.
Du solltest besser ShellExecute benutzen:

Code: [AUSKLAPPEN]
Function ShellExecuteA( hwnd:Int, op:Byte Ptr, file:Byte Ptr, param:Byte Ptr, dir:Byte Ptr, show:Int )

und so der Aufruf der Funktion:

Code: [AUSKLAPPEN]
ShellExecuteA( 0, "open", "shutdown.exe", "-s -t 0", Null, 1 )

Geht natürlich auch mit der alten Funktion, aber wer weiß, wie lange WinExec noch unterstützt wird? Very Happy
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

FreetimeCoder

BeitragFr, Dez 07, 2007 7:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx, aber auf den Rechnern läuft Win XP Pro. Und was anderes wird nicht drauf kommen.

MfG
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

KddC

BeitragFr, Dez 07, 2007 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
cool...dass hat auch mir sehr geholfen...danke...ich hab nämlich das gleiche problem gehabt...Der unterschied ist nur dass man an unserer schule erst ab der 11. ran darf...dass die leute dann trotzdem so schlecht mit den pc#s umgehen sollte einem aber schon zu denken geben Rolling Eyes ....
auf jeden fall danke
Mfg Kddc

Macbook Pro 13" 2,66Ghz

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group