• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:下記内容のスクリプトを実行すると、ポップアップが)

スクリーンセーバーの待ち時間を取得するスクリプト

このQ&Aのポイント
  • 下記のスクリプトを実行すると、ポップアップが5回表示されるのですが、どこから取ってきた値なのか知りたいです。
  • スクリプトを実行すると、デスクトッププロパティから取得できる"スクリーンセーバーの待ち時間"が4回目に表示されます。
  • スクリーンセーバーの待ち時間を取得できるスクリプトです。デスクトッププロパティから取得した値を表示させるため、コードを実行するとポップアップが5回表示されます。必要なのは4回目に表示される"スクリーンセーバーの待ち時間"のみです。

質問者が選んだベストアンサー

  • ベストアンサー
  • machua
  • ベストアンサー率71% (28/39)
回答No.2

>5回表示されるのですが、どこから取ってきた値なのか知りたいです。 ユーザデスクトップの情報を持ったWMIクラスから取得しており、(あなたのソースの4行目のSELECT文がある個所)存在するユーザのデスクトップ情報を取得しています。これには、システムのユーザも含まれています。(私のソースの末尾から4行目をあなたのソースにコメントを外して追加すると表示されます) ほとんどが4番目に来るようですが、念のためログインユーザがこのスクリプトを実行したときに、目的の情報を表示されるようにしてみました。コメントを参照してください。 ****************** On Error Resume Next strComputer = "." ' ローカルPCのWMIクラスを生成 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") ' ユーザデスクトップの属性を取得(複数ユーザ) Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop") ' 追加:ホスト名とログインユーザ名を取得する Set objNetWork = WScript.CreateObject("WScript.Network") ' 追加:「ホスト名¥ユーザ名」という文字列を作成 userName = objNetWork.ComputerName & "\" & objNetWork.UserName ' ユーザデスクトップの情報を繰り返し処理(複数ユーザの情報があるため) For Each objItem in colItems ' 追加:ログインユーザだったらスクリーンセーバーの待ち時間を表示 if objItem.Name = userName then 'Wscript.Echo "User: " & objItem.Name Wscript.Echo "ScreenSaverTimeout: " & objItem.ScreenSaverTimeout end if Next ******************

fsibomb
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

#あまり詳しくないので"自信なし"アドバイスですが... 一旦、実行中ユーザー名を取得してからobjItem.Nameで判断させると一応取れますが、 これが真っ当なやり方かどうかは知りません。 もっとピンポイントに取れる方法があるのかもしれません? On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objItem In colItems   user = objItem.UserName Next Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop") For Each objItem In colItems   If objItem.Name = user Then     Wscript.Echo "UserName:" & user & vbCrLf & _            "ScreenSaverTimeout: " & objItem.ScreenSaverTimeout   End If Next (参考) http://www.wmifun.net/sample/win32_desktop.html

fsibomb
質問者

お礼

ありがとうございました。

関連するQ&A