ウェイクアップ処理のようにWindows10使用時にドライバ有効にするスクリプトを
制作しているのですが、色々と調査して以下のような処理構成となりました。
(経緯:Windows10のスリープしない問題が2018年からあり、
USBゲームパッドの接続監視が原因なのにMSが未だに対策してくれないので。。)
もう少し簡潔にしたいのですが、以下の項目について他の策があれば教えて頂きたいです。
・バッチファイルやPowerShellを介さない方法
(ドライバ有効無効の処理時にコマンド画面を出なくしたい)
・ゲームパッドドライバのインスタンスIDの取得
(現在はデバイスマネージャで調査して手動で貼り付け。
調べる感じだとAPIもなさそうなのでレジストリの検索と取得が必要?)
ネットで調べた所、 VectorにHSP制作のデバイス有効無効(2013年)がありましたが、
WDKツールの devcon.exe を呼び出すもので、インスタンスIDも調査し手動入力でした。
結構古い exeですが、これを使うのが無難なのでしょうか?
■現在の処理構成:
管理者権限で実行
スリープ時 >> 無効化バッチ >> 無効化PowerShell
ウェイク時 >> 有効化バッチ >> 有効化PowerShell
・スクリプトのスリープ・ウェイク部のみ
;管理者権限の確認 管理者でis_admin=1 itimer=0 wakeup=0 repeat await 200 ;CPU使用率監視 30%以上でwakeup=1 ;MOUSEカーソル移動監視 変化ありでwakeup=1 ;MOUSEボタン監視 ONでwakeup=1 ;MOUSEホイール監視(ウィンドウ外で取得できず調査中) ;KEYBOARD入力監視 ONでwakeup=1 ;GAMEPAD有無監視 有りでgpaOn=1 if(gpaOn){ ;GAMEPADパッド入力監視 変化有りでwakeup=1 ;GAMEPADボタン入力監視 ONでwakeup=1 } if(wakeup):itimer=0:else:itimer++ if(is_admin){ if(gpaOn==0&wakeup):exec "GPadDevEna.bat" if(gpaOn&(itimer>5000)):exec "GPadDevDis.bat" } loop
・ドライバ有効無効のバッチとPowerShell
('HID\xxxx'はUSBゲームパッドのインスタンスID)
[GPadDevEna.bat] PowerShell -ExecutionPolicy RemoteSigned %~dp0\GPadDevEna.ps1 [GPadDevEna.ps1] Get-PnpDevice | ? {$_.InstanceId -eq 'HID\xxxx'} | Enable-PnpDevice -Confirm:$false [GPadDevDis.bat] PowerShell -ExecutionPolicy RemoteSigned %~dp0\GPadDevDis.ps1 [GPadDevDis.ps1] Get-PnpDevice | ? {$_.InstanceId -eq 'HID\xxxx'} | Disable-PnpDevice -Confirm:$false