VBScriptで、クリップボードに文字列をコピーする
2009年6月7日
Windows NTのcmd.exeでは、ファイルをcmdのウインドウにdrag&dropすることで、ファイルのフルパスを入力することができた。これは、XP以降ではできなくなったようで(もしかしたら、Vista以降かな?)、不便を感じたので、SendToからファイルパスをクリップボードにコピーするスクリプトを書いてみた。
最近はほとんどEXEファイルを作成することがなくなったので、今回もVBScriptで。で、Googleで『vbscript クリップボード』という検索語で調べてみると、マイクロソフトのページが最初に出た。
Hey, Scripting Guy!
WSH と VBScript のいずれにもクリップボードを操作する機能はありません。どちらを使用しても、クリップボードにデータをコピーしたりクリップボードからデータを貼り付けたりすることはできません。一方、Internet Explorer ではクリップボードを操作することができます
VBScriptではできないらしい。Googleの検索で出てくるほかのページでも、大体、似たようなことをしている。これは、ちょっと残念。クリップボードにコピーするためだけにIEを起動するのは、その時間が多分待っていられないだろうと思った。
何とかならないかと、少し考えて作成したのが次のスクリプト。
始め、InputBoxに表示させるだけのスクリプトにして、手動で『Ctrl+C』を押せば良いかなと考えた。それなら、『Ctrl+C』を押す操作も自動にしてしまえば良いということでできたのが上記のスクリプト。これを、適当なファイル名(拡張子は、.vbs)で保存して、SendToフォルダにコピーすればOK。ファイル名をクリップボードに入れたいファイルのアイコンを右クリックし、『Send To』から新しく作成したVBScriptのファイルを指定すればよい。
ちなみに、クリップボードの値を取得したい場合、上記"^c{ENTER}"を"^v{ENTER}"に変更し、InputBoxの戻り値を取得するようにすればよい。
最近はほとんどEXEファイルを作成することがなくなったので、今回もVBScriptで。で、Googleで『vbscript クリップボード』という検索語で調べてみると、マイクロソフトのページが最初に出た。
Hey, Scripting Guy!
WSH と VBScript のいずれにもクリップボードを操作する機能はありません。どちらを使用しても、クリップボードにデータをコピーしたりクリップボードからデータを貼り付けたりすることはできません。一方、Internet Explorer ではクリップボードを操作することができます
VBScriptではできないらしい。Googleの検索で出てくるほかのページでも、大体、似たようなことをしている。これは、ちょっと残念。クリップボードにコピーするためだけにIEを起動するのは、その時間が多分待っていられないだろうと思った。
何とかならないかと、少し考えて作成したのが次のスクリプト。
option explicit dim i,arg,wsh set arg=WScript.Arguments set wsh=CreateObject("WScript.Shell") if arg.count=0 then wscript.quit arg=arg.item(0) if arg=":::" then for i=1 to 100 if wsh.appactivate ("argument is as follows") then exit for wscript.sleep 100 next wsh.sendkeys "^c{ENTER}" else wsh.run "wscript.exe """ & WScript.ScriptFullName & """ :::" inputbox "argument is as follows","argument is as follows",arg end if
始め、InputBoxに表示させるだけのスクリプトにして、手動で『Ctrl+C』を押せば良いかなと考えた。それなら、『Ctrl+C』を押す操作も自動にしてしまえば良いということでできたのが上記のスクリプト。これを、適当なファイル名(拡張子は、.vbs)で保存して、SendToフォルダにコピーすればOK。ファイル名をクリップボードに入れたいファイルのアイコンを右クリックし、『Send To』から新しく作成したVBScriptのファイルを指定すればよい。
ちなみに、クリップボードの値を取得したい場合、上記"^c{ENTER}"を"^v{ENTER}"に変更し、InputBoxの戻り値を取得するようにすればよい。
コメント
acchan (2012年1月15日 07:00:24)
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
Warning: comments::cb1_tag_body(): Argument #1 ($m) must be passed by reference, value given in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/comments.php on line 51
はじめまして。
ちょうどこのような作業をしたく検索したところ
本記事に出会いました。
「Ctrl+C」のくだりが特に参考になりました。
複数選択時のファイル名が欲しかったので、少し手を加えさせていただき
利用しています。後の備忘のため、こちらで共有させてください。
------------------
Option Explicit
Dim I,objArgs,objWsh,strArgs
Set objArgs=WScript.Arguments
Set objWsh=CreateObject("WScript.Shell")
If objArgs.count=0 Then Wscript.Quit
If objArgs.Item(0)=":::" Then
For I=1 To 100 'Inputbox待ち
If objWsh.Appactivate ("argument is as follows") Then Exit For
Wscript.Sleep 100
Next
objWsh.Sendkeys "^c{ENTER}"
Else
objWsh.Run "wscript.exe """ & WScript.ScriptFullName & """ :::"
strArgs=""
For I = 0 to objArgs.Count - 1
strArgs=strArgs & objArgs(I)
If objArgs.Count<>1 Then strArgs=strArgs & vbCrLf
Next
Inputbox "argument is as follows", "argument is as follows", strArgs
End If