情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

AutoHotkeyで修飾キー(Ctrl,Shift,Alt,Win)の状態(^!+#)を取得する関数を作る方法 このエントリーを含むはてなブックマーク

modifier(修飾キー)を取得する

押し下げ状態は、GetKeyStateで取得できます。今回は、その結果を、Sendの引数として利用できる形式(^、+、!、#の結合)で取得する関数get_modifiers()を作成します

get_modifiers()

定義は次の通り。

get_modifiers() {
	modifiers := ""
	if GetKeyState("Ctrl", "P")
		modifiers = %modifiers%^
	if GetKeyState("Shift", "P")
		modifiers = %modifiers%+
	if GetKeyState("Alt", "P")
		modifiers = %modifiers%!
	if GetKeyState("Win", "P")
		modifiers = %modifiers%`#
	return %modifiers%
}

現在キーボードのWinキーをF17キーに変更してしまったのでWinキーについては試せていませんが、他の修飾キーに関しては問題なく動作しています。

modifiers := get_modifiers()
Send, %modifiers%{%key_name%}

のようにして、利用できると思います。特に「AutoHotkeyで変数名を組み立てて変数の中身を取得するちょっと不思議な方法」などと組み合わせるといろいろ出来ると思います。お試しあれ。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
Advanced Windows 第5版 上 (マイクロソフト公式解説書)
インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)
APIで学ぶWindows徹底理解

AutoHotkey | コメント:1 | トラックバック:0 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

こんにちは、最近AHKを使い出したので、参考にさせてもらっています。

こちらの記事を参考にコーディングしたんですが、このままだとWindowsキーを返してくれないようです。で、調べてみたのですがAHKのキーリストにLWinとRWinはあるのですが単体のWinは無いようです。
9行目を
if GetKeyState("RWin","P")||GetKeyState("LWin","P")
に変更するとちゃんと動きました。

不躾かもと思いましたが参考まで
2015-11-17 Tue 07:23 |  通りすがり [ 編集]

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。