USBメモリで快適なWindows環境を整えます。

Home > 常駐ソフト > マウスで文字をなぞるだけでクリップボードにコピーできるAutoHotkeyスクリプト
2013/11/04
  • このエントリーをはてなブックマークに追加




Windows7に変えてから「copipex」(紹介記事)の調子が悪かったため、同様の機能をAutoHotkeyに実装できないか調べてみたところ、そのものズバリなスクリプトを公式フォーラムで見つけました。このスクリプトを導入すると、マウスで文字を選択するだけで自動的にコピーができるようになり、右クリック→「コピー」を選んだり「Ctrl+C」を押す手間が省けます。また、左Shift+矢印キーで文字を選択したときに自動コピーするスクリプトや、Ctrl+Aで「すべて選択」したときに自動コピーするスクリプトも載っていたので合わせて紹介したいと思います。(現在、Window7 64bit、「AutoHotkey_L Unicode 64ビット版」の環境で使用しています。)

参考にさせていただいたページ
Auto Copy Selected Text to Clipboard - Scripts - AutoHotkey Community

スポンサード リンク



マウスで文字を選択したとき自動コピーするスクリプト
以下のコードは、上記サイトの2番目の書き込みからマウスで文字をドラッグしたとき自動コピーするスクリプトのみ抜粋したものです。書式の意味はサッパリ分からないわけですが、とりあえずこれを設定ファイルに貼り付けるだけでマウスでの自動コピーが可能になりました。(11/07追記)どうも他のスクリプトと競合しやすいようなので、設定ファイルの一番下に貼った方がいいかも。
~LButton::
MouseGetPos, xx
TimeButtonDown = %A_TickCount%
; Wait for it to be released
Loop
{
Sleep 10
GetKeyState, LButtonState, LButton, P
if LButtonState = U ; Button has been released.
{
If WinActive("Crimson Editor") and (xx < 25) ; Single Click in the Selection Area of CE
{
Send, ^c
return
}
break
}
elapsed = %A_TickCount%
elapsed -= %TimeButtonDown%
if elapsed > 200 ; Button was held down too long, so assume it's not a double-click.
{
MouseGetPos x0, y0 ; save start mouse position
Loop
{
Sleep 20 ; yield time to others
GetKeyState keystate, LButton
IfEqual keystate, U, {
MouseGetPos x, y ; position when button released
break
}
}
if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5)
{ ; mouse has moved
clip0 := ClipBoardAll ; save old clipboard
;ClipBoard =
Send ^c ; selection -> clipboard
ClipWait 1, 1 ; restore clipboard if no data
IfEqual ClipBoard,, SetEnv ClipBoard, %clip0%
}
return
}
}

左Shift+矢印キーで文字を選択したときに自動コピーするスクリプト
私は右Shiftでも使いたかったので、「Lshift」の部分を「shift」に変えて使用しています。
~Lshift::
TimeButtonDown = %A_TickCount%
; Wait for it to be released
Loop
{
Sleep 10
GetKeyState, LshiftState, Lshift, P
if LshiftState = U ; Button has been released.
break
elapsed = %A_TickCount%
elapsed -= %TimeButtonDown%
if elapsed > 200 ; Button was held down long enough
{
x0 = A_CaretX
y0 = A_CaretY
Loop
{
Sleep 20 ; yield time to others
GetKeyState keystate, Lshift
IfEqual keystate, U, {
x = A_CaretX
y = A_CaretY
break
}
}
if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5)
{ ; Caret has moved
clip0 := ClipBoardAll ; save old clipboard
;ClipBoard =
Send ^c ; selection -> clipboard
ClipWait 1, 1 ; restore clipboard if no data
IfEqual ClipBoard,, SetEnv ClipBoard, %clip0%
}
return
}
}

Ctrl+Aで全選択したときに自動コピーするスクリプト
私は全選択して削除するときにちょっと邪魔になるかなと思って入れませんでした。
~^a::Send, ^c

ちなみに他にもいくつかスクリプトが載っていましたが、動作確認したときにAutoHotkeyが落ちることがあったので確実に使えそうなものだけ紹介しました。

スポンサード リンク

関連記事

コメント

管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
2013/11/05 17:21  #[ 編集]


この記事に対するコメントの投稿
















この記事に対するトラックバック

トラックバックURL
http://usbcafe.blog111.fc2.com/tb.php/140-668a78bf
この記事にトラックバックする(FC2ブログユーザー)
カテゴリー
サイト内検索

人気記事ベスト10 (過去30日)

RSSを購読

このブログについて

USB Hacks !

Author:echo77
このブログではUSBメモリなどの外部ストレージに入れて持ち運べる「ポータブルアプリ」を中心に紹介していきます。詳しくはAboutをご覧ください。

過去の記事
ブログパーツ

この日記のはてなブックマーク数

ブログパーツ