GUID を取得してクリップボードにコピーする ( VBScript )

TypeLib.Guid で取得するのですが、取得した文字列の最後に NULL が現れるので Left 関数で文字列のみを取得しなおしています。

1) 最も多様なテクニックを使用して取得

クリップボードへのアクセスは clip.exe 
( コマンドプロンプトでリダイレクトが必要です )
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' 外部実行・環境変数取得用
Set WshShell = WScript.CreateObject("WScript.Shell")

' テキストファイル出力用
Set Fs = CreateObject( "Scripting.FileSystemObject" )

' テンポラリフォルダの取得
TempFolder = WshShell.ExpandEnvironmentStrings("%TEMP%")

' テキストファイルを出力用に開く
Set OutObj = Fs.OpenTextFile( TempFolder & "\_guid_text.txt", 2, True )

' GUID を出力
guid = Left( TypeLib.Guid & "", 38 )
OutObj.Write guid

' clip.exe を使用してクリップボードにコピー
' ※ 同期処理でコマンドプロンプトを表示しません
Call WshShell.Run( "cmd.exe /c clip.exe < """ & TempFolder & "\_guid_text.txt""",0, True )

' メッセージ
MsgBox( guid & " をクリップボードにコピーしました" )


2) clip.exe を使用したセオリー的な取得

クリップボードへのアクセスは clip.exe 
( コマンドプロンプトでリダイレクトが必要です )
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' 外部実行
Set WshShell = WScript.CreateObject("WScript.Shell")

' GUID を取得
guid = Left( TypeLib.Guid & "", 38 )

' clip.exe を使用してクリップボードにコピー
' ※ 同期処理でコマンドプロンプトを表示して一旦停止します
' 1) テキストの内容をクリップボードにコピー]
' 2) メッセージ
' 3) pause で停止
Call WshShell.Run( "cmd.exe /c echo " & guid & " | clip.exe & echo " & guid & " をクリップボードにコピーしました" & " & pause", , True )


3) InternetExplorer.Application でクリップボードへコピーする
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

' クリップボード用
' ※ HTA 等では直接 window.clipboardData より実行
' ※ するように書き換える必要があります
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
Do While objIE.Busy
	' 100 ミリ秒
	Wscript.Sleep 100
Loop

Call objIE.document.parentWindow.clipboardData.SetData( "Text", TypeLib.Guid & "" )
objIE.Quit

WScript.Echo "クリップボードにコピーしました" & vbCrLf & vbCrLf & TypeLib.Guid


4) 自分でクリップボードへコピーする
' GUID 取得用
Set TypeLib = CreateObject("Scriptlet.TypeLib")

Call InputBox("コピーして使用して下さい","新しい GUID を取得しました",TypeLib.Guid)