🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
AutoHotkey

AutoHotkeyは、Windowsでの連続した操作をショートカットキー(ホットキー)として自動化設定できるソフトウェアです。さまざまなコマンドが用意され、GUIのプログラム作成もできます。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

Q&A

1回答

2120閲覧

選択された文字列を自動的にコピーしたい

slimat

総合スコア57

AutoHotkey

AutoHotkeyは、Windowsでの連続した操作をショートカットキー(ホットキー)として自動化設定できるソフトウェアです。さまざまなコマンドが用意され、GUIのプログラム作成もできます。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

0グッド

0クリップ

投稿2021/01/19 08:57

編集2021/06/30 14:44

こんにちは.

autoclipxのように, 選択したテキストを自動的にクリップボードにコピーしたいです. ただ, ctrl+cをシミュレーションして実装することは避けたいです.
そこで, autohotkeyを使ってこちらに記載されている下記コードのイベント識別子を変えて実装しようとしているのですが, サイト内で紹介されているイベント一覧のページから"文字列が選択された時に送られるイベント"を見つけることがでません.
何というイベント識別子を設定すれば良いのでしょうか?

AutoHotKey

1#Persistent 2 3myFunc := RegisterCallback("WinActivateHandler") 4 5myHook := DllCall("SetWinEventHook" 6 , "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND 7 , "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND 8 , "UInt", 0 ; hModule : self 9 , "UInt", myFunc ; hWinEventProc : 10 , "UInt", 0 ; idProcess : All process 11 , "UInt", 0 ; idThread : All threads 12 , "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS 13 , "UInt") 14 15WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) { 16 WinGetTitle, title, ahk_id %hwnd% 17 WinGetClass, class, ahk_id %hwnd% 18 Tooltip,%title% ahk_class %class%」がアクティブになった 19}

環境 OS : Windows10, AutoHotKey : Version 1.1.33.02
よろしくお願いいたします.

ーーーー追記①(2021/6/30)ーーーー
現在のコードの状態です.

AHK

1#Persistent 2 3#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. 4; #Warn ; Enable warnings to assist with detecting common errors. 5SendMode Input ; Recommended for new scripts due to its superior speed and reliability. 6SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. 7 8myFunc := RegisterCallback("textSelectedHandler") 9 10myHook := DllCall("SetWinEventHook" 11 , "UInt", 0x8014 ; eventMin : EVENT_SYSTEM_FOREGROUND 12 , "UInt", 0x8014 ; eventMax : EVENT_SYSTEM_FOREGROUND 13 , "UInt", 0 ; hModule : self 14 , "UInt", myFunc ; hWinEventProc : 15 , "UInt", 0 ; idProcess : All process 16 , "UInt", 0 ; idThread : All threads 17 , "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS 18 , "UInt") 19 20textSelectedHandler() { ; 引数を全消ししても動いた 21 WinActive("A") ; sets last found window 22 ControlGetFocus, ctrl 23 if (RegExMatch(ctrl, "A)Edit\d+")) { ; attempt copying without clipboard 24 ControlGet, text, Selected,, %ctrl% 25 clipboard := text 26 } 27}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

イベント一覧のページにあるEVENT_OBJECT_TEXTSELECTIONCHANGEDは使えませんか?

投稿2021/03/12 16:35

modieu

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

slimat

2021/06/30 14:30

ご回答ありがとうございます. 返事が遅れてしまい申し訳ございません. ご提示いただいたイベント識別子でテキストの選択時にイベントを発生させることができました. しかし, なぜかwindowsデフォルトのメモ帳アプリ以外のアプリ(chromeやfirefox)でイベントが発生しませんでした.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問