fc2ブログ

    クリップボードを扱うスクリプトを公開します

    Windows10のコマンドプロンプトでclip.exeというコマンドがありますが、いやらしい事にクリップボードにデータを書き込む事が出来ても読み込む事が出来ません。
    PowerShellではクリップボードの読み書き出来ますが、PowerShellのスクリプトを実行出来るようにするのは恐ろしくて出来ないし、PowerShellでプログラミンングを行うぐらいなら死んだほうがましだと思う人もいらっしゃるでしょう。
    そこで、いつものように老爺心を発揮し、恐らくRuby2.x全てでクリップボードをファイル経由で読み書き出来ると思われるスクリプトを公開しますので、恐れを知らない人はこちらのスクリプトをご自由にお使いください。
    尚、このスクリプトを使って後悔するような事が起きても私は何の責任も持てませんので、利用は完全自己責任でお願いしますが、動作がおかしい場合はコメントで連絡していただければ、出来るだけ誠意を持って対応したいと思います。
    因みに、Ruby2.xをWindowsPCにインストールしていない人は、確認は出来ていないですが、
    の2.xの最新版(64bit版or32bit版)を完全自己責任でインストールして試してください。

    #クリップボードを読み込んでファイルにUTF-8で書き込み,第1引数はファイル名(getclip.rb)
    require 'Win32API'
    Win32API.new('user32','OpenClipboard',['I'],'I').Call(0)
    handle=Win32API.new('user32','GetClipboardData',['I'],'I').Call(1)
    if handle.to_i>0
        cdata=Win32API.new('kernel32','GlobalLock',['I'],'P').Call(handle)
        wdata=cdata.to_s.force_encoding("Windows-31J").encode("UTF-8").delete("\r")
        Win32API.new('kernel32','GlobalUnlock',['I'],'I').Call(handle)
        Win32API.new('user32','CloseClipboard',[]).Call()
    else  wdata="";end
    File.open(ARGV[0],"w"){|f|f.write(wdata)}
    exit(0)

    #UTF-8のファイルを読み込んでクリップボードに書き込み,第1引数はファイル名(setclip.rb)
    require 'Win32API'
    Win32API.new('user32','OpenClipboard',['I'],'I').Call(0)
    File.open(ARGV[0]){|f|$fdata=f.read}
    sdata=$fdata.force_encoding("UTF-8").encode("Windows-31J")
    handle=Win32API.new('kernel32','GlobalAlloc','II','I').call(0x42,sdata.bytesize+1)
    cdata=Win32API.new('kernel32','GlobalLock',['I'],'P').call(handle)
    Win32API.new('msvcrt','strcpy','IP','I').call(cdata,sdata)
    Win32API.new('user32','EmptyClipboard',[]).call()
    Win32API.new('user32','SetClipboardData','II','I').call(1,handle)
    Win32API.new('user32','CloseClipboard',[]).Call()
    exit(0)

    追記:
    追記2:
    UTF-8からWindows-31Jへの変換で一部の文字コードでエラーが発生する事が分かりましたので、もしこのスクリプトを使われる人は、
    を参考にして手直ししてください。
    追記3:
    Ruby2.6系ではRuby2.6.6までしかこのスクリプトは機能しないようなので、このスクリプトを使用される方は、Ruby2.6.6の64bit版でお試しください。
    関連記事

    コメント

    非公開コメント

    アクセスランキング

    FC2カウンター

    ブロとも一覧

    最新記事

    QRコード

    QR