VBSによる簡易クリップボード履歴保存

客先常駐など、自由にソフトウェアをインストールできないときに、
メモ帳にクリップボード履歴を保存し、呼び出すための簡易スクリプトです。

これをスタートメニューで自動起動しておきます。
履歴を保存するファイル、clipbord.txt を、ショートカットキーで起動できるようにしておけば、
ショートカットキーからいつでもクリップボード履歴を呼び出せます。


基本動作は、以下の通りです。

  1. 3秒毎にクリップボードを監視し、値を取得
  2. 取得した値が、保存用のclipbord.txtに存在するか確認
  3. 存在しなかったらclipbord.txtの一番下に追記


phrase.txt に、固定文書をあらかじめ保存、登録しておくことで、
定型文としてすぐに呼び出すことができます。



clipbord.txt
phrase.txt
この二つのファイルは、同じフォルダに配置する必要があります。




Dim GetClipboardText
Dim objHTML
Dim objFSO      ' FileSystemObject
Dim objFile     ' ファイル書き込み用
Dim objFilepath
Dim objTemp

On Error Resume Next

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFilepath = WScript.CreateObject("Scripting.FileSystemObject")

objFilepath = objFilepath.GetFile(WScript.ScriptFullName).ParentFolder.Path
objFSO.DeleteFile  "clipbord.txt"

Set objFile = objFSO.OpenTextFile( objFilepath & "\phrase.txt", 1) 
objTemp = objFile.ReadAll

Set objFile = Nothing
Set objFile = objFso.OpenTextFile(objFilepath & "\clipbord.txt" , 2 , True)

objFile.WriteLine "20" & date

objFile.WriteLine objTemp


Set objFile = Nothing
do
 Set objFile = objFSO.OpenTextFile( objFilepath & "\clipbord.txt", 1) 
 Set objHTML = CreateObject("htmlfile")
 GetClipboardTextOld = objHTML.ParentWindow.ClipboardData.GetData("text")
 objTemp = objFile.ReadAll
 I = InStr( objTemp, GetClipboardTextOld )  
  If I > 0 then
   objFile.Close
  Else
   objFile.Close
   Set objFile = objFSO.OpenTextFile( objFilepath & "\clipbord.txt", 8)
   objFile.WriteLine(GetClipboardTextOld)
   objFile.Close
  end If
WScript.Sleep 3000
Set objFile = Nothing
Set objHTML = Nothing
loop
 
Set objFSO = Nothing