Batch: Aktion beim eindocken - eine Lösung

Adun

Active member
Themenstarter
Registriert
31 Mai 2011
Beiträge
4.934
Ich brauche es zwar nicht wirklich fand es aber dennoch interessent das mal zu versuchen.

Eine Aktion soll nach dem (nicht beim!) Andocken ausgeführt werden. Diese kleine Batch arbeitet über die Abfrage des Dockingzustands alle 3 Sekunden, also kein Event ausgelöstes Programm.

Da es sehr klein ist, sollte es kaum Prozessorauslastung verursachen.

Eine Aktion wird nur nach dem ändern des Zustands ausgeführt und nicht alle 3 Sekunden von neuem.

Ihr dürft das ganze verändern wie ihr wollt :)

Edith: Natürlich sollte man sich das Programm, nachdem man es sich eingestellt hat, in eine unsichtbare .exe schmeißen. (bat to exe converter)

Code:
@echo off
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKLM\SYSTEM\CurrentControlSet\Control\IDConfigDB\CurrentDockInfo"
set VALUE_NAME=DockingState
set statebefore=0x5
:loop
timeout /t 3
FOR /F "tokens=3" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO (
    set state=%%A
)

REM echo %state% > state.txt

IF "%state%" EQU "%statebefore%" goto idle
	goto chose

:idle
goto loop

:chose
set statebefore=%state%

IF "%state%"=="0x0" goto do1
IF "%state%"=="0x1" goto do2
IF "%state%"=="0x2" goto do3

REM statt "@echo XY" den gewünschten Befehl eintragen, z.b. starten eines Prozesses.... 

:do1
@echo "Desktop" 
goto loop

:do2
@echo "Mobile"
goto loop

:do3
@echo "Docked"
goto loop

state 0x0 ist relativ unsinnig da es besagt, das Gerät ist ein Desktop. Wollte es dennoch mal drinne lassen damit man alle drei Zustände sieht.
Unbenannt.png
 
Zuletzt bearbeitet:
Schöne Sache. Vielleicht ließe sich das noch etwas eleganter in Powershell mit Hilfe eines WMI-Events umsetzen, dann fiele die Schleife weg.

Hier hat mal jemand zwei Zeilen Powershell veröffentlicht, um einen WMI-Event zu registrieren, der auf eine Registry Änderung wartet. Das müsste man an sich dann nur noch um die Abfrage ergänzen, zu was der Wert geändert wurde und hat die Sache ein wenig schicker laufen.

http://powershell.com/cs/forums/p/12769/22938.aspx
 
Das mit dem WMI Event und Powershell habe ich auch gesehen, aber damit kenne ich mich null die Bohne aus also habe ich es so versucht ^^ Wenn ich mal wieder mehr Zeit habe dan nschaue ich mir das mal an, danke für den Hinweis ;)
 
Zuletzt bearbeitet:
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben