VBScript学習_WshNetworkオブジェクト
学習の方法を変更
こんにちは
誰かに発信している テイ で (テイというときに芸人さんの「たくろう」のネタを思い出すwww)
学習アウトプットを目的とした記事を書いておりますが
自分でほとんど見返さない 記憶に残っているのは、使ったコードだけ 学習スピードが遅い
という観点から、 まとめて表にしたり ただただサイトの文字をうつしたりするのをやめます
たまたま閲覧された方にはありがたくも申し訳ないのですが
読者は存在しないものとしてのブログなのでスルーして欲しいです
それでは学習始めます=3
参考:
WshNetworkオブジェクト
ProgID: WScript.Network
'//MS-DOSベースプリンタ接続 objWshNetwork.AddPrinterConnection strLocalName, strRemoteName[,bUpdateProfile][,strUser][,strPassword] '★[bUpdateProfile]:マッピング情報をプロファイルに保存するかどうかのブール値(default:False) '//ネットワークベースプリンタ接続 objWshNetwork.AddWindowsPrinterConnection strPrinterPath, [strDriverName[,strPort]] '★[strPrinterPath]:リモート・プリンタのUNCパス '//ネットワークプリンタ接続切断 objWshNetwork.RemovePrinterConnection strName, [bForce],[bUpdateProfile] '★[strName]:ポート名、UNCパス '★[bForce]:強制終了ブール値(default:False) '//デフォルト・プリンタ設定 objWshNetwork.SetDefaultPrinter strPrinterName '★[strPrinterName]:UNCパス
WshShellオブジェクトについて
Theme
VBScriptの学習続き
参考:
WshShellオブジェクト
WSHの内部オブジェクト
ProgID: "WScript.Shell"
一覧
WshShellオブジェクト
メソッド
- AppActivate
- SendKeys
- ExpandEnvironmentStrings
- LogEvent
- Popup
- RegRead
- RegWrite
- RegDelete
- Run
- Exec ---> WshScriptExecオブジェクト
- CreateShortcut ---> WshShortcut/WshUrlShortcutオブジェクト
プロパティ
- CurrentDirectory
- Environment ---> WshEnvironmentオブジェクト
- SpecialFolders ---> WshSpecialFoldersオブジェクト
WshScriptExecオブジェクト
★WshShell Execメソッドから派生
メソッド
- Terminate
プロパティ
- ExitCode
- ProcessID
- Status
- StdIn
- StdOut
- StdErr
WshShortcutオブジェクト
★WshShell CreateShortcutメソッドから派生
メソッド
- Save
プロパティ
- Arguments
- Description
- FullName
- HotKey
- IconLocation
- RelativePath
- TargetPath
- WindowStyle
- WorkingDirectory
WshUrlShortcutオブジェクト
★WshShell CreateShortcutメソッドから派生
メソッド
- Save
プロパティ
- FullName
- TargetPath
WshEnvironmentオブジェクト
★WshShell Environmentプロパティから派生
メソッド
- Count
- Remove
プロパティ
- Length
- Item("環境変数名")
WshSpecialFoldersオブジェクト
★WshShell SpecialFoldersプロパティから派生
メソッド
- Count
プロパティ
- Length
- Item("特殊フォルダ名")
各メンバ解説
Runメソッド
WSHからアプリケーションを起動できる
実行時にウィンドウスタイル等指定可能
cf) Execメソッド:起動・実行中アプリと通信可能
記法
object.Run ファイルパス(, ウィンドウスタイル)(, 同期処理設定)
Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") '▼第1引数について▼ '例)メモ帳起動 objWshShell.Run "C:\Windows\System32\notepad.exe" '通常フルパス 'objWshShell.Run "%windir%\System32\notepad.exe" '環境変数使用可能 'objWshShell.Run "notepad.exe" '環境変数PATHに通っているフォルダ内ならファイル名のみでOK 'カレントディレクトリ内でもファイル名のみでOK 'objWshShell.Run """C:\Program Files\Internet Explorer\iexplore.exe""" 'パス内に空白ある場合は3つの「"」で囲む Set objWshShell = Nothing
第2引数(省略可)
数値 | ウィンドウ・スタイル | アクティブウィンドウ |
---|---|---|
0 | 非表示 | そのまま(変化なし) |
1 ★規定値 | 通常サイズ | 起動したアプリ |
2 | 最小化 | 起動したアプリ |
3 | 最大化 | 起動したアプリ |
4 | 通常サイズ | そのまま(変化なし) |
5 | そのまま | 起動したアプリ |
7 | 最小化 | そのまま(変化なし) |
第3引数(省略可)
起動アプリの終了を待つか否かBoolean値で設定
- True:同期処理(待機する)
- False:非同期処理(待機しない)★既定値
★環境変数 確認画面
- [Windows] + [pause] : 設定 - [システム] - [バージョン] 画面起動
- [システムの詳細設定]リンククリック
- [システムのプロパティ]画面開く
- [詳細設定]タブ - [環境変数]ボタン
キオスクモード(全画面表示)
キオスクモードは-k
オプションを最後につける
キオスクモードで開いたウィンドウは[Alt] + [F4]で閉じることができる
AppActivateメソッド
任意のウィンドウをアクティブにできる(アクティブ化の成功をTrue/Falseで返す)
任意のウィンドウ指定方法
ウィンドウタイトルの完全一致/前方一致/後方一致
Execメソッド使用時のProcessID
SendKeysメソッド
アクティブなウィンドウにキーコードを送るメソッド
キーボードにABCと入力する → "ABC"
key | code |
---|---|
プラス記号+ | {+} |
キャレット^ | {^} |
パーセント記号% | {%} |
チルダ~ | {~} |
かっこ() | {(}{)} |
BackSpace | {BACKSPACE}、{BS}、{BKSP} |
Break | {Break} |
CapsLock | {CAPSLOCK} |
Del Delete | {DELETE}、{DEL} |
↓ | {DOWN} |
終了 | {END} |
Enter | {ENTER}、~ |
Esc | {ESC} |
HELP | {HELP} |
ホーム | {HOME} |
Ins、Insert | {INSERT}、{INS} |
← | {LEFT} |
NumsLock | {NUMLOCK} |
PageDown | {PGDN} |
PageUp | {PGUP} |
PrintScreen | {PRTSC} |
→ | {RIGHT} |
ScrollLock | {SCROLLOCK} |
Tab | {TAB} |
↑ | {UP} |
F1 ~ F16 | {F1} ~ {F16} |
Shift | + |
Ctrl | ^ |
Alt | % |
+(EC)
: Shift + E + C^C
: Ctrl + C
{key number}形式で繰り返し
{LEFT 42}
: ←キーを42回{h 10}
: Hキーを10回
注意
AppActivate&SendKeysの誤爆の可能性を念頭において最終手段として使用する
RegRead/RegWrite/RegDeleteメソッド
レジストリの値を読み込む/書き込む/削除するメソッド
注意 レジストリの操作はシステムや設定を破壊してしまう危険があるので実行の際は要注意
# レジストリ構造
ファイルシステムと同様の構造※例外あり
ルート・キー名 | 省略名 | 内容 |
---|---|---|
HKEY_CLASSES_ROOT | HKCR | ファイル・タイプやクラスIDの設定 |
HKEY_CURRENT_USER | HKCU | 現在のユーザーに適用される設定 |
HKEY_LOCAL_MACHINE | HKLM | すべてのユーザーに適用される設定 |
HKEY_USERS | - | HKCUの初期設定とすべてのユーザーの設定(各ユーザーのHKCU) |
HKEY_CURRENT_CONFIG | - | 現在の構成に関する設定 |
エントリの名前、エントリの種類、エントリのデータ
エントリの種類 | 意味 | VBScriptでの型 |
---|---|---|
REG_SZ | 文字列 | String |
REG_DWORD | 数値 | Long |
REG_BINARY | バイナリ値(2進数の値) | Byteの配列 |
REG_EXPAND_SZ | 展開可能な文字列 | String |
REG_MULTI_SZ | 文字列の配列 | Stringの配列 |
ファイルシステムとの相違点
キーに値が存在する
エントリの名前が「(既定)」と表示されているものは、
エントリの名前が(既定)なのではなく、キーの値を示すものである
RegReadメソッド
引数にキー\エントリの名前
既定値を読む際はキー\
例えば、HKEY_CLASSES_ROOT\.<拡張子>
キーには、そのファイルタイプを示す値が格納されている
Point
REG_BINARYはByte型の配列と返されるので各要素を取得するにはForEach~Next文やJoin関数を、Byte型数値を16進数で表示したい場合はHex関数を使用
RegReadメソッドで引数に設定したキーやエントリの存在有無をチェックする方法
'変数strRegEntryにチェックしたいキー・エントリを設定 On Error Resume Next objWshShell.RegRead strRegEntry If Err.Number = -2147024894 Then '//存在しないときにこのエラーが出る Msgbox strRegEntry & "はありません" ElseIf Err.Number = 0 Then Msgbox strRegEntry & "はあります" End If Err.Clear On Error Goto 0
RegWriteメソッド
objWshShell.RegWrite 書き込むエントリ, 書き込むエントリのデータ, 書き込むエントリの種類
※書き込むエントリにキー値(例:"HKEY_CURRENT_USER\Software\WSH Lesson\")を設定するとキーに値を書き込む
RegDeleteメソッド
エントリやキーを引数に指定して削除
キーの中のエントリを削除せずとも、キーを削除することで一括で削除できる
Popupメソッド
intButton = objWshShell.Popup(strText, [nSecondsToWait],[strTitle],[nType])
自動的に閉じた場合、-1を返り値とする
LogEventメソッド
objWshShell.LogEvent intType,strMessage[,strTarget]
intType
は以下の通り
intType | 意味 |
---|---|
0 | SUCCESS(成功) |
1 | ERROR(エラー) |
2 | WARNING(警告) |
4 | INFORMATION(情報) |
8 | AUDIT_SUCCESS(成功の監査) |
16 | AUDIT_FAILURE(失敗の監査) |
strTarget:コンピュータ名を指定
★ローカル・コンピュータ デフォルト値
ExpandEnvironmentStringsメソッド
環境変数を展開するためのメソッド
CurrentDirectoryプロパティ
カレント・ディレクトリを取得または設定するためのプロパティ
Execメソッド
プロセス・IDを取得してアプリケーション・ウィンドウをアクティブ化や操作できる
Terminateメソッドを使用してアプリケーション終了ができる
StdIn,StdOut, StdErrプロパティがが使用できる
RegExpオブジェクト\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
CreateShortcutメソッド/WshShortcutオブジェクト/WshUrlShortcutオブジェクト
- 引数のパスの拡張子次第で作成するオブジェクトが変わる
拡張子
- .lnk => WshShortcutオブジェクト
プロパティ | 意味 |
---|---|
Arguments | ショートカットの引数 |
Description | コメント |
FullName | ショートカット(*.lnk)の絶対パス(読み取り専用) |
HotKey | ショートカット・キー |
IconLocation | アイコン・ファイルのパスとアイコン・インデックス |
RelativePath | ショートカットの相対パス(未実装のため呼び出してもエラーになる) |
TargetPath | ショートカットのリンク先パス |
WindowStyle | 実行時のウィンドウ・スタイル:1=通常、2=最大化、7=最小化 |
WorkingDirectory | 作業フォルダ |
- .url => WshUrlShortcutオブジェクト
プロパティ | 意味 |
---|---|
FullName | ショートカット(*.url)の絶対パス(読み取り専用) |
TargetPath | ショートカットのリンク先パス |
SpecialFoldersプロパティ/WshSpecialFoldersオブジェクト
特殊フォルダ名 | 特殊フォルダの説明 |
---|---|
AllUsersDesktop | すべてのユーザーのデスクトップ |
AllUsersStartMenu | すべてのユーザーのスタート・メニュー |
AllUsersPrograms | すべてのユーザーのスタートメニュー配下のプログラム |
AllUsersStartup | すべてのユーザーのスタートアップ |
Desktop | 現在のユーザーのデスクトップ |
Favorites | 現在のユーザーのお気に入り |
Fonts | フォント |
MyDocuments | 現在のユーザーのマイ・ドキュメント |
NetHood | 現在のユーザーのネットフォルダ |
PrintHood | 現在のユーザーのプリンタ・フォルダ |
Programas | 現在のユーザーのスタートメニュー配下のプログラム |
Recent | 現在のユーザーの最近使ったファイル |
SendTo | 現在のユーザーの送る |
StartMenu | 現在のユーザーのスタート・メニュー |
Startup | 現在のユーザーのスタートアップ |
Templates | 現在のユーザーのテンプレート |
AppData | 現在のユーザーのアプリケーションのデータ |
Environmentプロパティ/WshEnvironmentオブジェクト
引数 | 環境変数名 | 説明 |
---|---|---|
System | システム環境変数 | すべてのユーザーに適用される |
User | ユーザー環境変数 | ユーザーごとに設定可能 |
Volatile | 揮発性環境変数 | ログオフとともにクリアされる |
Process | プロセス環境変数 | 現在読み込まれているすべての環境変数。読み込み専用 |
引数省略時の設定はOSのバージョンで異なる
WScriptの活用2
Theme
引き続き、VBScriptの学習です
COMオブジェクト
COMオブジェクトとは
COMコンポーネントが提供するオブジェクト
COMコンポーネントはDLLファイル(またはOCXファイル等)としてシステムにインストールされている
アプリケーションやOSの機能を呼び出せるもの
レジストリにProgIDと呼ばれる一意に識別されるコンポーネント名が登録されている
タイプ・ライブラリが存在するCOMコンポーネントが、WSHから使用できる
タイプ・ライブラリとは、オブジェクトにどんなメソッドやプロパティ等があり、どういう動作をするかを説明するもの
CreateObjectについて
記法: WScript.CreateObject(ProgID, (接頭辞))
Point 接頭辞とは、イベントを監視するためのプリフィックス
イベント=オブジェクトが何らかのアクションを起こした際にホスト(WSH)に送られるメッセージ
VBScriptにも同様の機能のあるCreateObjectメソッドが存在するが、第2引数の設定可能なのが異なる点である
ProgID
- IE: InternetExplorer.Application
- Word: Word.Application
ConnectObject/DisconnectObjectについて
記法: WScript.ConnectObject obj1, (接頭辞))
Point 接続したオブジェクトのイベントを補強するために使用
また、DisconnectObjectメソッドは、引数に監視中のオブジェクト変数を指定し、イベント監視を解除する
(※イベント発生中に実行されるとエラー)
GetObjectについて
記法: ```WScript.GetObject(ファイルパス/モニカ)
モニカとは:実行中のオブジェクトの種類を示す文字列
Point 存在するオブジェクトを取得し、機能を呼び出す
サンプルコード(list_cpu.vbs)ではCPUの種類を表示するvbsファイルを作成
↓
使用オブジェクト:WMI(WindowsManagementInstrumentation)
タイプライブラリの閲覧方法について
Officeアプリから閲覧する方法
アプリ起動
[Alt] + [F11] Visual Basic Editorを開く
メニュー [表示] - [オブジェクト ブラウザ] / [F2]キー
右クリック - [参照設定]
調べたいオブジェクトのライブラリのチェックボックスをON → [OK]
上部ドロップダウンから、5で選択したライブラリファイル名を選択
表示
クラスリストビュー:オブジェクト
リストビュー:オブジェクトのメンバ(プロパティ/メソッド/イベント等)
WScriptオブジェクトの利用
Theme
前回同様、VBScriptの学習を進めます
参考:
WScriptオブジェクトとは
WScriptオブジェクト
cf.Errオブジェクト:VBScriptのオブジェクト
DimやSetでオブジェクト宣言・代入は不要
WScript.<プロパティ/メソッド>の構文で使用
主なメソッド/プロパティ
プロパティ
情報グループ | プロパティ | 内容 |
---|---|---|
WSH実行ファイルの情報 | Name | WSHの実行ファイル名 |
^ | Path | WSHの実行ファイルのあるフォルダ・パス |
^ | FullName | Wshの実行ファイルパス |
^ | Version | WSHのバージョン |
スクリプトの情報 | ScriptName | スクリプトのファイル名 |
^ | ScriptFullName | スクリプトのフルパス |
^ | Interactive | バッチモードorインタラクティブモード |
^ | TimeOut | タイムアウトの秒数 |
^ | Arguments | コマンドライン引数の情報 |
標準入出力 | StdIn | 標準入力 |
^ | StdOut | 標準出力 |
^ | StdErr | 標準エラー出力 |
メソッド
処理グループ | メソッド | 内容 |
---|---|---|
メッセージ表示 | Echo | メッセージを表示 |
スクリプト実行制御 | Quit | スクリプトの終了 |
^ | Sleep | スクリプトの一時停止 |
オブジェクトの取り扱い | CreateObject | オブジェクトの作成 |
^ | ConnectObject | オブジェクトに接続 |
^ | DisconnectObject | オブジェクトを切断 |
^ | GetObject | オブジェクトの取得 |
使用方法
VBScriptファイルの実行方法
★既定exeを変える方法
コマンド・プロンプト上
'既定をcscript.exeにする cscript.exe //H:CScript '既定をwscript.exeにする cscript.exe //H:WScript
★コンソール出力する際の以下の文字列を表示しない方法
'出力したくない文字列 Microsoft(R) Windows Script Host Version 5.6 Copyright(C) Microsoft Corporation 1996-2001. All rights reserved. '方法 cscript.exe //NoLogoオブション付与
Echoメソッドについて
wscript.exeで実行した場合(wscript.exe 〇〇.vbs)
Point VBScript の MsgBox と似た動作
- メッセージウィンドウ表示
WScript.Echo "hoge"
↓
hoge
- 改行連結
WScript.Echo "hoge" & vbcrlf & "fuga"
↓
hoge
fuga
- 空白連結
WScript.Echo "hoge", "fuga"
↓
hoge fuga
cscript.exeで実行した場合(cscript.exe 〇〇.vbs)
Point Debug.Print と似た動作
- コンソール表示
WScript.Echo "hoge"
↓
hoge
- 自動で改行コード付与
'①②は同様の表示 '① WScript.Echo "hoge" & vbcrlf & "fuga" '② WScript.Echo "hoge" WScript.Echo "fuga"
↓
hoge fuga
Interactiveプロパティについて
スクリプトの実行モード
対話モード:True ← デフォルト
バッチモード:False
★バッチモード(スクリプト実行中にエラーやEchoメソッドの表示がされないモード )で実行
cscript.exe //B <スクリプト・ファイル名>
TimOutプロパティについて
スクリプト実行できる最大時間(秒数)
既定値 0
'スクリプト実行が30秒を過ぎると停止(ダイアログも閉じる) cscript.exe //T:30 <スクリプト・ファイル名>
Argumentsプロパティについて
WshArgumentsクラスのオブジェクトを返す
WshArgumentsオブジェクト(コレクション)に含まれる要素は
コマンドライン引数全体を空白記号で分割した文字列(String型)
WshArgumentsのプロパティ
Count : コマンドライン引数の数 //0=引数なし、1=引数1つ...
Item:既定なので省略化★For Each~Next 列挙可能
Point コマンドライン引数にはファイル自体も可能
GUI操作でExporler上でvbsファイルにtxtファイル等をドラッグアンドドロップし実行するとwscript.exeで実行される
- Named/Unnamed:名前付き/名前なしの引数(コレクション)を返す
Point 名前付き/名前なしとは
Named→WshNamedコレクション
Unnamed→WshUnnamedコレクション
cscript.exe ShowParameter2.vbs /param1 /param2:value2 param3 '/param1 → 名前付き引数(値なし) '/param2:value2 → 名前付き引数(値あり) '/param3 → 名前なし引数
Option Explicit 'オブジェクト変数の宣言と代入 Dim objWshNamed, objWshUnnamed Set objWshNamed = WScript.Arguments.Named Set objWshUnnamed = WScript.Arguments.Unnamed '名前付き引数の存在有無を確認 If objWshNamed.Exists("param1") Then WScript.Echo "名前付き引数/param1が指定されました。" End If '名前付き引数の存在有無を確認し、その値を表示 If objWshNamed.Exists("param2") Then WScript.Echo "名前付き引数/param2が指定されました。", _ "その値は" & objWshNamed.Item("param2") & "です。" End If '名前なし引数の列挙 Dim intIndex If objWshUnnamed.Count > 0 Then For intIndex = 0 To objWshUnnamed.Count - 1 WScript.Echo "引数なし引数" & objWshUnnamed.Item(intIndex) & "が指定されました。" Next End If 'オブジェクトの破棄 Set objWshNamed = Nothing set objWshUnnamed = Nothing
↓
Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. 名前付き引数/param1が指定されました。 名前付き引数/param2が指定されました。 その値はvalue2です。 引数なし引数param3が指定されました。 PS C:\Users\***\***>
StdIn/StdOut/StdErrプロパティについて
概要
使用用途
StdIn
InputBox関数を使わずにユーザに文字列を入力させたいとき
入力値の文字数を指定数だけ取得
strFromStdIn = objStdIn.Read(5)
StdOut
コンソールにユーザのための情報を表示させるときに便利
cscript.exeで実行を強制させたいときに使用するとよい(wscript.exeではStdOutプロパティを参照しようとするとエラー)
Writeメソッドを用いると、改行を加えず文字列を表示する→プログレスバーを作成できる
その他
他のコンソールアプリケーションやファイル、デバイスと連携ができる(「リダイレクト」「パイプ」で検索してみよう)
Sleep/Quitメソッドについて
概要
スクリプトの実行制御をおこなう
Sleepの使用
WScript.Sleep 10000
10秒(ミリ秒単位)
待機の間、CPUを占有しない
待機の間、ほかのオブジェクトでイベントが発生した場合、そちらに処理が移る
↓
イベント発生の待機として空ループを回すときに使用できる
Quitの使用
WScript.Quit()
(数値)引数=エラーコード 省略時は0:正常終了
スクリプトを終了する
COMオブジェクトを扱うメソッドについて
メソッド
CreateObject 作成
ConnectObject 接続
DisconnectObject 切断
GetObject 取得
・・・続きは次回
Classの書き方
ClassのProperty設定
Option Explicit 'クラスSampleの定義 Class Sample 'Caption プロパティ Public Caption End Class 'オブジェクト変数 Dim objSample1 Set objSample1 = New Sample objSample1.Caption = "hoge" MsgBox objSample1.Caption '//ここで「hoge」と表示する Set objSample = Nothing
Property設定時に処理したい/Propertyに初期設定したものを取得したい
'まず、Privateのときは変数にm_と付けるのが慣習らしいのでそれに習う Class Sample '変数設定 Private m_strCaption 'Captionプロパティの値を設定 Public Property Let Caption(Value) '//インスタンスのプロパティに値が代入される際実行 m_strCaption = Value '//この中で値をこねくりまわせる!! End Property 'Captionプロパティの値を取得 Public Property Get Caption '//インスタンスのプロパティが参照される際実行 Caption = m_strCaption End Property 'Public Default Property Get Captionとすると、「.Caption」とせずとも読み込める(規定のプロパティになる) End Class
Class Sample 'プロパティに規定値をClass内に設定したいとき Private m_strCaption Private Sub Class_Initialize() '//Initializeイベント(コンストラクタとも呼ぶ) m_strCaption = "hoge" '//インスタンス生成される度に実行される(規定値を設定しておく) End Sub Public Property Get Caption Caption = m_strCaption End Property End Class Dim objSample1 Set objSample1 = New Sample MsgBox objSample1.Caption '// 「hoge」と表示される Set objSample1 = Nothing
インスタンスメソッド
Class Sample Public Caption Public Sub Show() '//メソッドの書き方 MsgBox Me.Caption '//Me とはインスタンスオブジェクト End Sub End Class Dim objSample1 Set objSample1 = New Sample objSample1.Caption = "hoge" objSample1.Show '//インスタンスメソッド呼び出し 今回のケースでは、「hoge」と表示される処理 Set objSample1 = Nothing
デフォルトクラス
RegExp 正規表現のクラスはデフォルトで使用できるのだ!
最後に問題を解こう
Option Explicit Class Circle Private m_intRadius Private m_intDiameter Private m_dblArea Public Property Let Radius(value) m_intRadius = value m_intDiameter = m_intRadius * 2 m_dblArea = m_intRadius ^ 2 * 3.14 End Property Public Property Get Radius Radius = m_intRadius End Property Public Property Get Diameter Diameter = m_intDiameter End Property Public Property Get Area Area = m_dblArea End Property Public Sub ShowDetail(key) Private strMsg Select Case key Case "半径" strMsg = "半径:" & Me.Radius Case "直径" strMsg = "直径:" & Me.Diameter Case "面積" strMsg = "面積:" & Me.Area Case "全部" strMsg = "半径:" & Me.Radius & vbCrLf & _ "直径:" & Me.Diameter & vbCrLf & _ "面積:" & Me.Area & vbCrLf & _ End Select MsgBox strMsg End Sub End Class Dim objCircle1 Set objCircle1 = New Circle Dim intInput intInput = InputBox("何の要素を取得したいですか?数字で選択してください。" & vbCrlf & _ "1:半径、2:直径、3:面積、4:全部") If Not (intInput = 1 Or intInput = 2 Or intInput = 3 Or intInput = 4) Then Msgbox "不正です" Else objCircle1.Radius = 3 If intInput = 1 Then strInput = "半径" ElseIf intInput = 2 Then strInput = "直径" ElseIf intInput = 3 Then strInput = "面積" Else strInput = "全部" End If objCircle.ShowDetail(strInput) End If Set objCircle = Nothing
答え合わせは明日しましょー
WSHの基本オブジェクト
COMオブジェクト
WSH(VBScript)から呼び出せるオブジェクトのことを、COMオブジェクトとよぶ
COMオブジェクトは3つに分類される
・WSH基本オブジェクト
・Windows OSに標準添付されているオブジェクト
・別途インストールが必要なオブジェクト
WSH基本オブジェクト
標準搭載オブジェクト
オブジェクト名 | 用途 |
---|---|
WScript | ほかのオブジェクトを呼び出す 標準入出力を扱う スクリプト実行を制御する コマンドライン引数を読み込む ※トップレベルオブジェクト |
FileSystemObject | ファイルやフォルダのコピー、移動、削除を行う サイズや更新日時などのプロパティの値取得も可能 テキストファイルに文字列を書き込んだり、読み出したりすることができる |
WshShell | アプリケーション起動・終了 実行中のアプリケーションに対し、キーボード操作を自動化できる コンソールアプリケーションでは、出力内容を取得できる レジストリの操作 ショートカットの作成 |
WshNetwork | ネットワーク・ドライブやネットワーク・プリンタをリストアップ・作成・削除 |
WshController | ネットワーク上のほかのPC上でスクリプト実行ができる |
Windows OSに標準添付されているオブジェクト
WSHの機能ではない
Windows OSに標準添付されているオブジェクト
オブジェクト名 | 用途 |
---|---|
ADODB.Connection | SQL Server やAccessファイルなどのデータベースにアクセス レコードの読み書き |
ADODB.Stream | バイナリ・ファイルを読み書きするためのオブジェクト さまざまな文字コードのテキストファイルを扱える (Windows 98では別途インストールが必要) |
XMLHTTP | Webサーバからファイルを取得 HTTPのPOSTを行う等 |
CDO.Message | SMTPサービスを用いたメールを送信するためのオブジェクト (Windows 2000/Windows XP/Windows Server 2003でのみ利用可能) |
InternetExplorer.Application | IEを操作するためのオブジェクト IE起動・終了・ドキュメント内容読み取り・書き換え WSHにGUIがほしいときに併用することが多い |
Shell.Application | エクスプローラを操作するためのオブジェクト ウィンドウを並べて表示 「ファイル名を指定して実行」ダイアログを表示 フォルダ内の情報取得 |
ADSI (Active Directory Service Interfaces) |
Active Directoryなどのディレクトリ・サービスを操作するためのオブジェクト ドメインにユーザ追加等 (Windows 2000/Windows XP/Windows Server 2003でのみ利用可能) |
WMI (Windows Management Instrumentation) |
ソフトウェアやハードウェア、ネットワークなどのシステム情報を統一的に取り扱うオブジェクト 実行中のプロセス列挙 マザーボードの情報取得 TCP/IPポート追加 (Windows 98/Meでは別途インストールが必要) |
別途インストールが必要なオブジェクト
例) Officeアプリケーションをインストールすることにより、WSHから自在に操作可能
アプリケーションをWSHなど外部から操作することをオートメーションという
Office以外のWindows Media Player や Virtual Server等Microsoft製品や、 一太郎等のサードパーティ製アプリケーションに可能なオブジェクトがある
BASP21:WSHなどから使用されることを想定したオブジェクト。メールの送受信やソケットの操作が可能
合格したのでお次は...
みなさんお元気でしょうか
ExcelVBAエキスパート スタンダード試験ですが、
サクッと合格だったので、やりがいがなかったといえばなかったですw
日頃WinActorというRPAを触っているので、
次はしっかりVBScriptを学習したいなと思い、
夏休み、家事をサボれるいい時間を有効に使うべく
学習をすすめて参ります
良いサイトにも出会った! 良かった!