(for Internet Explorer)
IsScreenSaverRunning
(src)
Function  IsScreenSaverRunning() as boolean
スクリーンセーバーが動いているかどうかを返します。
→ T_ScreenSaver_Manually.vbs # [T_IsScreenSaverRunning]
テスト
Sub  RegEnumKeys( Path as string, out_Keys as array of string, Opt as integer )
レジストリのサブキーを列挙します。
【引数】
Path
out_Keys
レジストリのキーのパス
(出力) サブキーのフルパスの配列。 末尾に \ は無い
ファイル:
System.vbs
  Dim  keys

  RegEnumKeys  "HKEY_CURRENT_USER\Software\_Test", keys, Empty

'// keys(0) = "HKEY_CURRENT_USER\Software\_Test\Sub"
'// keys(1) = "HKEY_CURRENT_USER\Software\_Test\Sub2"
サンプル:
Opt
オプション。 Empty か F_SubFolder
(src)
サブキーが無いときは、UBound( out_Keys ) = -1 になります。
テスト
→ T_Reg.vbs # T_Reg1
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定したことに
なります。
Sub  RegEnumValues( Path as string, out_Values as array of RegValueName )
指定のレジストリ・キーに入っている値を列挙します。
【引数】
Path
out_Values
レジストリのキーのパス
(出力) 値と型名の配列
ファイル:
System.vbs
Class  RegValueName
  Public  Name  as string
  Public  Type_ as string
End Class
  Dim  values

  RegEnumValues  "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" + _
                 "CurrentVersion\Setup", values
サンプル:
(src)
テスト
→ T_Reg.vbs # T_Reg1
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定した
ことになります。
Sub  RegExists( RegPath as string )
指定のレジストリ・キーか値が存在するかどうかを判定します。
【引数】
RegPath
レジストリのキーのパス
ファイル:
System.vbs
  If RegExists( "HKEY_CURRENT_USER\Software\_Test\" ) Then  Fail
サンプル:
Path の末尾が \ のときは、キーがあるかどうかを判定します。
Path の末尾が \ ではないときは、値があるかどうかを判定します。
(src)
Function  RegRead( Path as string ) as variant
との違いは、キーが見つからないときにエラーになるのではなく、
Empty を返すところです。
レジストリからリードします。
【引数】
返り値
値、または Empty
リードする場所。 キーへのパス+値の名前
Path
(src)
Path の最後に \ があると、キーの (規定) をリードします。
Sub  RegExport( RegPath as string, OutFilePath as string, Opt as variant )
指定のレジストリ・キーに入っている値を .reg ファイルに出力します。
【引数】
RegPath
OutFilePath
レジストリのキーのパス
出力ファイルパス
ファイル:
System.vbs
Opt
オプション。 Empty か F_SubFolder
  RegExport  "HKEY_CURRENT_USER\Control Panel\Keyboard", _
             "keyboard.reg", F_SubFolder
サンプル:
(src)
テスト
→ T_Reg.vbs # T_RegExport
対応しているキーの型は、REG_SZ のみです。
Sub  RegWrite( Path as string, Value as string or integer, Type as string or Empty )
レジストリにライトします。
【引数】
Value
Type
値、または Empty(=値を消す)
値のタイプ, "REG_SZ", "REG_DWORD" など、または Empty(*1)
ライトする場所。 キーへのパス+値の名前
Path
Path によっては管理者権限が必要です
サンプル:
  RegWrite  "HKEY_CLASSES_ROOT\.ext\", "ExtSample", Empty
(src)
ファイル:
System.vbs
との違いは、エラーメッセージの内容です。
Path の最後に \ があると、キーの (規定) に設定します。
(*1) Type = Empty のときは、 Value の型によって自動的に型を判定します。
Sub  RegDelete( Path as string )
レジストリの値、またはキーを削除します。
Path の末尾が "\" のときは、キー(フォルダーのようなもの)を削除します。
サブ・キーや値があるときでも、削除できます。

値の名前に "\" を含むときは、
ただし、RegDelete でキーを削除するときは、そのキー(またはサブ・キー)が
持つ値の名前に "\" を含んでいても正しく処理します。
  RegDelete  "HKEY_CLASSES_ROOT\.svg\"
サンプル:
(src)
を使ってください。
→ T_Reg_Manually.vbs # T_FileAssocOpen
最後の T_FileAssocProg2.exe アンインストールで、値の名前に "\" を含む
値を持つキーを削除しています。
テスト
→ T_Reg_Manually.vbs # T_RegWriteRead
レジストリファイル(*.reg)を編集します。
Dim  f : Set f = OpenForRegFile( "Sample.reg" )
If IsEmpty( f.RegRead( "HKEY_CLASSES_ROOT\.ext\" ) ) Then _
  f.RegWrite  "HKEY_CLASSES_ROOT\.ext\", "ExtSample", "REG_SZ"
f = Empty  '// Write
Function  OpenForRegFile( RegFilePath as string ) as EditRegFile
【引数】
RegFilePath
返り値
レジストリファイルのパス
EditRegFile オブジェクト
サンプル:
ランダムアクセスに対応しています。 OpenForRead や OpenForWrite のように
シーケンシャル(ファイルの先頭から順番)にアクセスする必要はありませんし、
変更しないキーまで Write する必要はありません。

存在しないキーを新規に Write したときは、シーケンシャル(RegWriteした順番)
にファイルに記述されます。 Empty の値を Write すると、そのキーは削除されます。

元々書かれていたコメントは保持されます。
テスト
→ T_Reg.vbs # T_RegFile
(src)
関連
Sample.reg
HKEY_CLASSES_ROOT\.ext\
ExtSample
レジストリファイル(*.reg)を編集します。 OpenForRegFile から取得できます。
メソッド
レジストリファイルからリードします。
レジストリファイルにライトします。
レジストリファイルを閉じます。 アクセスを終了します。
(src)
レジストリファイルを閉じます。 アクセスを終了します。
Sub  EditRegFile::Close()
デストラクタによっても自動的にファイルを閉じます。
閉じる前にエラーが発生してデストラクタが呼ばれたら、Write した内容は反映されません。
(src)
Sub  InstallRegistryFileOpen( Extension as string, ExePath as string, IsDefault as boolean )
ファイルをダブルクリックしたときに開くプログラムを設定します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
IsDefault
True = ダブルクリックしたときに開く、 False = プログラムの選択に登録する
ファイル:
System.vbs
(src)
サンプル:
InstallRegistryFileOpen  "svg", "Snap Note.exe", True
関連
ファイルの右クリック・メニュー
ダブルクリックしたときの設定解除
Sub  RegWriteOpenExt( Ext, KeyName, Explain, Command, Opt )
指定の拡張子の [開く(&O)] メニューのコマンドを登録します。
管理者権限が必要です
【引数】
KeyName
Explain
レジストリのキーの名前(英語)
タイプの説明に表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
拡張子。先頭はピリオド。例:.ext
Ext
(src)
ファイル:
System.vbs
今まで関連付けられていた情報は失われます。
サンプル:
  RegWriteOpenExt  ".c", "cfile", "C Language source", _
    "C:\Windows\Notepad.exe ""%1""", Empty
.c ファイルをメモ帳で開くようにします。
廃止されました。 代わりは……
→ InstallRegistryOfFileOpen
Sub  UninstallRegistryFileOpen( Extension as string, ExePath as string )
ファイルをダブルクリックしたときに開くプログラムを設定解除します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
ファイル:
System.vbs
(src)
サンプル:
UninstallRegistryFileOpen  "svg", "Snap Note.exe"
関連
ダブルクリックしたときの設定
Sub  InstallRegistryFileVerb( ProgID as string, Verb as string, Caption as string,
                              CommandLine as string )
ファイルの右クリック・メニューの1つの項目を追加します。(現在のユーザーのみ)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
Caption
右クリック・メニューに表示する文字列。(*2)
ファイル:
System.vbs
(src)
(*2)
& の次の文字は、右クリック・メニューを表示している状態で押すと選択できるキーボードのキー
CommandLine
コマンドライン。 %1 は、ファイルのパスに置き換わります。
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb  RegReadExtProgID( "svg" ), "edit", "Snap Note (&Z)", _
  """"+ GetAbsPath( "Snap Note.exe", Empty ) +""" ""%1"""
関連
右クリック・メニューの削除
ダブルクリックしたときの設定
拡張子と関連付けられている ProgID の取得
Sub  RegWriteAsterExt( KeyName, Caption, Command, Opt )
すべてのファイルに対するコンテキストメニューを追加登録します。
管理者権限が必要です
【引数】
KeyName
Caption
レジストリのキーの名前(英語)
コンテキストメニューに表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
(src)
ファイル:
System.vbs
サンプル:
  '--- start of parameters for vbslib include -------------------------------
  g_admin = 1
     :
  '--- end of parameters for vbslib include ---------------------------------

Sub main()
  Dim  prog : prog = GetAbsPath( "bz", Empty )
  RegWriteAsterExt  "bz", "bz (binary editor)", prog + "\bz.exe ""%1""", Empty
End Sub
廃止されました。 代わりは……
Sub  UninstallRegistryFileVerb( ProgID as string, Verb as string )
ファイルの右クリック・メニューの1つの項目を削除します。(現在のユーザーのみ)
(src)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
ファイル:
System.vbs
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb  RegReadExtProgID( "svg" ), "edit"
関連
右クリック・メニューの追加
Function  RegReadExtProgID( Extension as string ) as string
拡張子と現在関連付けられている ProgID を取得します。(現在のユーザー)
(src)
関連
右クリック・メニューの追加
フォルダーに対応する ProgID は、"Folder" です。
(src)
Sub  MsiModify( MsiPath as string, TableName as string,
                KeyColumnName as string, ValueColumnNum as integer,
                Key as string, NewValue as string )
Windows 用のインストール・パッケージ(.msi)のデータベースを修正します。
【引数】
MsiPath
TableName
インストール・パッケージ(.msi)のファイルのパス
データベースのテーブル名
KeyColumnName
キーがある列の名前
NewValue
Key
ValueColumnNum
値がある列の番号(最初=1)
キーの名前
新しい値
→ Orca ツール、msi ファイルのデータベースの修正
参考
サンプル
Sub  Main( Opt, AppKey )
  Dim  msi_path : msi_path = "sample.msi"
  Dim  new_values : Set new_values = Dict(Array( "Utilities", "INSTALLDIR" ))
  Dim  key

  For Each key  In new_values.Keys
    MsiModify  msi_path, "Directory", "Directory", 2,  key,  new_values.Item( key )
  Next
End Sub
Function  get_WMI( ComputerName as string, ClassName as string ) as Object
WMI オブジェクトを返します。
【引数】
ComputerName
ClassName
コンピューター名。 Empty = ログオンしているコンピューター
WMI のクラス名
返り値
エラーコード、正常=0
参考
(src)
(src)
SetTargetPythonVersion
(src)
(src)
その他
タスクに登録する
インターネットからダウンロードします。
ファイアウォールをチェックします。
仮想ファイル・サーバーを設定します。
% 文字を使った正規の URL に変換します。
(src)
Sub  DownloadByHttp( DownloadURL as string, OutLocalPath as string )
インターネットからダウンロードします。
【引数】
DownloadURL
OutLocalPath
ダウンロードする URL
ダウンロードしたファイルの保存先パス
Network.vbs
モジュール・シンボル:
デフォルトでは、Sage Plaisir 21 のホームページからダウンロードするときのみ、
ユーザーの許可を確認することなくダウンロードできます。 他のホームページ
からダウンロードするときは、ユーザーの許可を求められます。

他のホームページからダウンロードする処理を含むスクリプトを使って自動化する
ときは、ユーザーの許可を求めない exe を作成する必要があります。 デフォルト
では、ダウンロードを実際に行うのは、scriptlib\vbslibXXX\sage_p_downloader に
入っている sage_p_downloader.exe ですが、同じフォルダにソースが含まれて
いるので、修正は簡単です。 ソースに記述されたダウンロードできるドメインを
変更し、再コンパイルし、exe 名を変更して、Netword.vbs にある DownloadByHttp
の定義を編集してください。 exe 名を変更することで、ウィルス対策ソフトが
ネットワークアクセスの許可を再度行います。
→ T_Download.vbs # T_Download1
テスト
DownloadByHttp  "http://www.sage-p.com/index.html", "index.html"
サンプル:
関連
DownloadURL には、URL に含むことができない文字も含むことができます。
内部で、GetPercentURL を呼び出しています。
ダウンロードを含む処理をするときは、SetVirtualFileServer を使えば、実際に
ネットワークにアクセスする前に、ローカル PC だけで動作確認ができます。
参考
キーワード:
Sub  SetVirtualFileServer( VirtualURL as string, LocalPath as string )
ネットワーク・サーバーの代わり(仮想ファイル・サーバー)を設定します。
【引数】
VirtualURL
LocalPath
仮想ファイル・サーバーが応答するベース URL
VirtualURL に対応するローカル・フォルダのパス
Network.vbs
モジュール・シンボル:
SetVirtualFileServer を使うと、
を呼び出しても、インターネットからダウン
ロードせず、設定したローカル・フォルダからコピーします。
この機能により、一般公開されているサーバーを変更しないでテストができます。
サンプル:
If not IsEmpty(GetVar( "VirtualServer" )) Then
  SetVirtualFileServer  "http://www.sage-p.com/", "C:\www_sage-p_com\"
End If
If not IsEmpty(GetVar( "TestServer" )) Then
  DownloadByHttp  "http://www.sage-p.com/index_test.html", "index.html"
Else
  DownloadByHttp  "http://www.sage-p.com/index.html", "index.html"
End IF
上記は、環境変数 VirtualServer が定義されていたら、
  copy "C:\www_sage-p_com\index.html", "index.html" と同じ処理をします。
VirtualServer が定義されていないで、TestServer が定義されていたら
  http://www.sage-p.com/index_test.html からダウンロードします。
どちらも定義されていなかったら、(リリース版そのものとして)
  http://www.sage-p.com/index.html からダウンロードします。
(src)
VirtualServer の末尾の文字が / なら、LocalPath の末尾は \ にしてください。
_test
C:\www_sage-p_com\
キーワード:
Function  GetPercentURL( UnicodeURL as string ) as string
URL に使えない文字があったときに、% 文字を使った URL に変換します。
【引数】
UnicodeURL
URL に使えない文字も含まれた URL
Network.vbs
モジュール・シンボル:
返り値
URL に使える文字だけを使った URL
url = GetPercentURL( "http://www.sage-p.com/download file.zip" )
サンプル:
url は、 "http://www.sage-p.com/download%20file.zip" になります。
(src)
url = httpurl | ftpurl | newsurl |
      nntpurl | telneturl | gopherurl |
      waisurl | mailtourl | fileurl |
      prosperourl | otherurl
httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath    = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search   = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
uchar = unreserved | escape
unreserved = alpha | digit | safe | extra
escape     = "%" hex hex
safe  = "$" | "-" | "_" | "." | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","
2
 
!
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
1
0
3
4
5
6
7
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
9
8
7
6
5
4
3
2
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
CR
LF
6
5
4
3
0
1
2
7
hsegment
uchar(-escape)
/?%
spc
参考
標準仕様 rfc1738-ja (下記)では、~ 文字は %7E に置き換わりますが、置き換わらない方がデファクト・
スタンダードなので、GetPercentURL では ~ のままになります。
RFC 2396, RFC 3986
Windows では、互換性のため、\(バックスラッシュ)を / に置き換えるとよいでしょう。
関連