Zasadniczo szukam sposobu na wykonanie aplikacji, gdy mój laptop przejdzie na zasilanie bateryjne i podobnie, gdy wróci do prądu przemiennego.
Czy istnieje wbudowany hak w systemie Windows lub aplikacja innej firmy, która pozwoli mi reagować na takie zdarzenia?
EDYTOWAĆ
Zajrzałem do TaskScheduler próbującego odpalić zadanie po zdarzeniu „power”, ale żadne zdarzenie nie jest rejestrowane po przełączeniu na baterię.
windows-7
laptop
power-management
battery
Ryan Emerle
źródło
źródło
Odpowiedzi:
Napisałem aplikację ( http://batterysaver.codeplex.com/ ), która będzie nasłuchiwać komunikatu o zmianie trybu zasilania i wykonywać działania w oparciu o konfigurację XML.
Jeśli ktoś może go użyć lub rozszerzyć, to świetnie. Jeśli jest coś lepszego, opublikuj to.
źródło
Nie znam prostej komendy, którą można by wykonać w tym celu, ale skrypty powinny być w stanie to zrobić.
Spróbuj przechwycić zdarzenie Win32_PowerManagementEvent w PowerShell lub WSH . Artykuł tomshardware zawiera kod vbscript, ale myślę, że będziesz potrzebować skrzynki dla eventtype 10 (zmiana powerstate). StackOverflow ma kilka pomysłów na Skąd mogę wiedzieć, kiedy system Windows przechodzi w tryb uśpienia lub hibernacji? , ale musisz rozszerzyć pomysł, aby obsługiwał zmianę stanu zasilania zamiast uśpienia / hibernacji. Możesz również znaleźć kilka pomysłów w kodzie na pytanie W jaki sposób można wykorzystać ManagementEventWatcher do śledzenia zawieszenia / wznowienia?
EDYCJA: W rzeczywistości spróbuj czegoś takiego. Jest to całkowicie zhakowane razem, więc nie jest ładne. Zmień instrukcje Echo, aby zrobić wszystko, co chcesz, jeśli zostanie wykryta zmiana zasilania DC lub AC. Biegnij z
cscript power.vbs
power.vbs
źródło
Uwielbiam podejście Billa, ale on nie mówi ci, jak zarejestrować się na zdarzenie WMI w PowerShell, więc oto jak to zrobić.
Jeśli chcesz, aby kod był wyzwalany tylko po zmianie stanu zasilania systemu, jak opisano tutaj , użyj tego kodu.
Teraz uruchomi się za każdym razem, gdy zmieni się stan zasilania, niezależnie od tego, czy podłączysz urządzenie, czy je odłączysz. Możesz więc chcieć zatrzymać się i zatrzymać, aby zadać pytanie:
Na szczęście możemy to zrobić za pomocą klasy WMI
BatteryStatus
, więc oto pełna konstrukcja, której używam, aby WYŁĄCZNIE uruchamiać operację, gdy zmienia się zdarzenie mocy, i tylko wtedy, gdy nie mam już zasilania.źródło