AutoHotKey で配列がなぜ関数の中で使えないのを解決する

AutoHotKey を使い始めた人が他の言語を経験していると、「配列が関数の中で参照できない」と詰まることがある。これを解決する。

結論から言えば、グローバル配列を参照するなら、宣言が必要となる。

検証スクリプト

test.ahk

 

AutoHotKey で何かの自動処理を実行中に、ツールチップを表示させて利用者に知らせる

AutoHotKey を実行中、実行が終わったかどうかをタスクバーの常駐アイコンを見てチェックしているが、とても面倒だ。そこで、ツールチップを使って、AutoHotKey の実行中だと画面上で知らせる方法を考えた。

テストスクリプト

tooltip_cancel.ahk

解説

  • ToolTip で、メッセージと表示位置を設定する
  • CoordMode, ToolTip, Screen で、ツールチップをスクリーン上での絶対座標をとるようにする。初期状態は、アクティブウィンドウの左上からの相対座標

使い方

  • tooltip_cancel.ahk を実行すると、モニター上の左上にツールチップが表示され続ける
  • メッセージや表示座標を、用途に合わせて変更する
  • 本機能と関係ないが、ESC キーの入力でアプリを終了する機能は、動作時間の長いスクリプトでも役に立つ

AutoHotKey でウィンドウのタブを切り離して、好きな場所に移動してリサイズする

Windows で使うアプリで、タブ形式のウインドウを切り離して再配置する作業を手動で行っている。これを自動で行いたい。その方法をAutoHotKey での実装を考えた。

操作

タブをマウスで左クリックドラッグして切り離す

新しくできたウインドウを移動させて、指定のサイズに変更する

マウス操作するときに、ドラッグ開始位置とドラッグ終了位置は、「AutoHotKey でマウスカーソルの座標をリアルタイムで取得したい」を動作させて、メモする

ソース

備考

利用するアプリに、タブを切り離すみたいな操作があればそれを使っているが、タブを切り離すという発想がタブウィンドウにないためか、それができない。

AutoHotKey でマウスカーソルの座標をリアルタイムで取得したい

Widnows アプリでショートカットも指定できない、マウス操作で解決する必要がある操作で、AutoHotKey を使いたい。まず、マウスカーソル座標などを取得する方法を探った。

ソース

get_mouse_condition.ahk

使い方

スクリプトを実行すると、ツールチップで現在のマウスポインタ座標などが出るので、それをメモする

使い終わったら、常駐しているAutoHotKey  スクリプトを終了させる

追記:2020年1月29日(水)

ESC キーを押して終了したい場合は、次のスクリプトを追加する

get_mouse_condition.ahk

#Persistent の設定を追加した

AutoTotKey のHotstring で、当年の指定日の年月日(曜日)を素早く入力する

前回、今日の年月日をHotstring で素早く入力する方法を実装した。今度は、指定日の年月日を素早く入力する方法を実装する。Excel のセルに「月/日」を入力すると暦と認識される機能の応用だ。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“t[[” と入力すると、指定日入力フォームが表示される

指定日を半角英数4ケタ”0101″ のように入力してエンターキーを押すと、”2020年1月1日 (水)” のように出力される

解説

  • 入力フォーム作成に、Gui,Add,Edit を使っている
  • フォームに入力した内容は、TargetDate に代入される
  • Gui,Add,Button で処理が実行されたらInsDateExec 関数を実行する
  • 今年の西暦年をYearString に取得
  • 入力された日付とYearString を使って、指定日の曜日を取得
  • 入力された日付とYearString を使って、年月日を取得
  • 指定日の曜日を、get_dowstr() を使って、「(月)」の形式に変換

参考

AutoHotkey の Hotstring で曜日文字列を素早く入力する
http://stakiran.hatenablog.com/entry/2018/01/19/221444

英文作成時にポンドやユーロを素早く入力したい

英文作成時にこれまで、ポンドやユーロの価格記号を漢字変換を使って入力していた。これを1秒で入力できるようにしたい。今回も、AutoHotKey のHotstringで実装した。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

 

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“p[[” と入力すると、”£” のように出力される

今日の年月日(曜日)を1秒で入力する方法

今日の年月日と曜日を、指定の形式で素早く入力したい。日本語入力支援アプリGoogle IMEなら、「きょう」と入力するだけで変換候補に今日の日付が出てくる。これよりも早く、正確に今日を入力する方法を、AutoHotKey で実装した。

方法

AutoHotKey のHotstring を使う

Hotstring とは

ユーザーが特定の文字列をタイプしたときに、アクションを発生させられる機能

スクリプト

my_hotstring.ahk

使い方

普段使いするなら、このmy_hotstring.ahk をランチャーに入れて実行するか、Windows のスタートアップで起動時に実行されるようにする

“w[[” と入力すると、”2020年1月17日 (金)” のように出力される

解説

  • ::{}:: の{}部分が、反応するタイプ入力部分
  • FormatTime で今日の日付を取得している
  • 曜日は数字で返ってくる
    配列を使おうとしたがうまく使えなかったため、dowtable に1文字ずつ曜日をセットし、StringMid で指定位置の曜日文字を切り取っている

参考

AutoHotkey の Hotstring で曜日文字列を素早く入力する
http://stakiran.hatenablog.com/entry/2018/01/19/221444

編集履歴

  • get_dowstr() を引数指定で、本日以外の曜日を選べるように変更

Google, Facebook, Instagram, Twitter で一度に多数のキーワードでエゴサーチする方法

エゴサーチを普段からたしなむ人がいる。そのエゴサーチを楽にする方法を、AutoHotKey を使って作った。

背景

複数のブランド名のエゴサーチをする必要が出たため、いちいちキーワードを入力して検索していた。Google の検索はURL にキーワードを引数として受け渡せるので、キーワード検索結果ページをブックマークやタブを固定していつでも検索できるようにしてもよい。ただ、キーワードの足し引きの管理が面倒になると感じたので、AutoHotKey を使ってキーワード管理、および検索エンジン選択できるようにした。

ソース

 

検索方法

MoveURL(“検索ワード”, “検索するウェブサービス名”)
検索するウェブサービス名:Google, Facebook, Instagram, Twitter
検索したいキーワードを続けて実行すると、次々にタブを開いて検索を実行していく
半角スペースを入れるときはAscii文字 “%20″を使う
例) “桜の道 リボン日記” → “桜の道%20リボン日記”

備考

  • Facebook はログインしないと、検索結果が出ない
  • Instagram はハッシュタグ検索を行っているだけなので、現状複数語の検索ができない
  • Yahoo! やBing 検索も、同じ要領で機能追加できるだろう。ただ、Weibo はよくわからない(URL Encode が使われている様子がある。)
  • ブラウザは使いなれているFirefox を使っているが、別のブラウザを使ってもよい

AutoHotKey で、Windows アプリの表示位置を指定して開く

Smart Pomo Timer」が便利で使い倒しているのだが、アプリが簡素すぎて表示位置が保存されない。そこで、AutoHotKey を使ってアプリを開き、表示位置を気に入ったところに指定するようにした。

run_smart_pomodoro.ahk

 

解説

Run で「Smart Pomo Timer」をローカルに保存したアプリ実行パスを入力。
WinMove でそれぞれ表示エリアのX座標, Y座標を記入。マルチモニターでサブモニターが左にあるような場合、マイナス座標を入れて座標を変えられる。

あとは、ランチャーに”run_smart_pomodoro.ahk” を入れて、アプリを実行するようにAutoHotKey を実行する。

AutoHotKey で、アクティブなタブブラウザの今のタブでURLを開く

 

何ができるか?

AutoHotKey で、アクティブなタブブラウザの今のタブでURLを開ける

概要

ブラウザ操作のショートカット「アドレスバーにフォーカスする[Alt+d]」を使って、URLを開く

利用するアプリ

AutoHotKey
利用については「AutoHotKey Wiki」を参照

AutoHotKey は何ができるか?

Windows の操作を自動化できる

本件では何を行うか

アクティブなタブブラウザの今のタブで、URLを開く

スクリプト

備考

タブブラウザのショートカットはだいたい同じなので、Chrome などで使える。わたしはFirefox でこの操作を行っている。