2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

AutoHotkey スレッド part8

1 :名無しさん@お腹いっぱい。:2009/05/23(土) 00:23:38 ID:78PWRd9v0
■公式
http://www.autohotkey.com/

■解説
AutoHotkeyを流行らせるページ
http://lukewarm.s101.xrea.com/

■過去スレ
1 http://pc7.2ch.net/test/read.cgi/software/1098531338/
2 http://pc7.2ch.net/test/read.cgi/software/1129836713/
3 http://pc11.2ch.net/test/read.cgi/software/1157043396/
4 http://pc11.2ch.net/test/read.cgi/software/1184556627/
5 http://pc11.2ch.net/test/read.cgi/software/1201502896/
6 http://pc11.2ch.net/test/read.cgi/software/1219130051/
7 http://pc12.2ch.net/test/read.cgi/software/1230694774/

■派生版
AutoHotkey_L
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/

駄目文字微対策版
http://yak.myhome.cx/junks/#ahk.cp932

関連リンク>>2以降も参照


952 :名無しさん@お腹いっぱい。:2009/09/22(火) 23:42:31 ID:8kUIQ97D0
>>951
なるよ

953 :名無しさん@お腹いっぱい。:2009/09/22(火) 23:45:13 ID:Ma+YsCie0
>>951
>>243-244,529-530,940-941

954 :名無しさん@お腹いっぱい。:2009/09/22(火) 23:46:41 ID:Ma+YsCie0
次のテンプレに↓いれようぜ

Q:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
  これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
   ^1::Send, {Esc}

955 :名無しさん@お腹いっぱい。:2009/09/23(水) 00:02:48 ID:QP5TzsHo0
^F16::Send, {Shift} の入力結果は +^ でした。
私の目的はキーリピートが発生しなければ良さそうです。

956 :名無しさん@お腹いっぱい。:2009/09/23(水) 00:21:11 ID:ZvPjkUm50
^F16::
Keywait, Ctrl
Send, {Shift}
Return

957 :名無しさん@お腹いっぱい。:2009/09/23(水) 00:22:33 ID:GEtdsmCm0
ということで当初よりのキーリピートの発生しない ^F16::Shift を妥協して使います。
出来ないということがわかりました。本当にありがとうございました。

958 :名無しさん@お腹いっぱい。:2009/09/23(水) 00:46:29 ID:QoQA+ZLl0
つか[F16]ってのが気になってんだけど、そういう実キーがある拡張キーボードなのか、
SetPointとかで仮想キー発行させてんのかで動作って変わったりするんじゃね?

ちなみに $^F12::Send, {Shift} とかやった場合はどうなる?
やっぱりCtrl発行されんのかい?

959 :名無しさん@お腹いっぱい。:2009/09/23(水) 00:51:48 ID:sBoYTXmA0
>>958
質問者の情報提供が少なすぎるのがそもそもの大問題なんだが、

>HDUSのリモコンなんですが

これを部外者が補足説明すると、地デジチューナー。
リモコンが付属してて、HIDで認識する。
ボタンを押すとF16〜F24やCTRL+F16などが押された状態になる。


そもそも、地デジと全然関係ないスレで「HDUSなんですが」って書いて
相手に正確に伝わるかどうかとか考えないことが、俺的に不思議。

960 :名無しさん@お腹いっぱい。:2009/09/23(水) 01:05:14 ID:d2Ia2Rvw0
>>959
ググりゃわかるだろ。

そもそも、地デジと全然関係ないスレで補足説明って書いて
相手にくどいと思われるかどうかとか考えないことが、俺的に不思議。

961 :名無しさん@お腹いっぱい。:2009/09/23(水) 01:36:30 ID:+iyUXEWm0
なに逆切れしてんのよ
最初から説明しとけば済む話でしょ

962 :名無しさん@お腹いっぱい。:2009/09/23(水) 02:36:39 ID:LbA54mw80
autohotkey と qtclipの最新版を併用することができません
autohotkeyの方で ^v を設定してqtclipを使ってみました
そしたら文字の出力のところで、autohotkeyの ^v が貼り付けの動作を奪い取ってしまいます

そこで^v の設定で
qtclipから ^v が送られてきたときは素直に ^v を出し、
それ以外の時は test を送信するということをしたいです
GetKeyState("ctrl")を使ってどうにかできないかと考えたのですが、
qtclipから ^v が送られてきたことを判定する方法がいまいち思いつきません

どう修正すればいいでしょうか

#NoEnv
SendMode Input

#InstallKeybdHook
#UseHook

^v::
; msgbox,% GetKeyState("ctrl")
send,test

return



963 :名無しさん@お腹いっぱい。:2009/09/23(水) 02:43:42 ID:3vW5mf2h0
Pオプション付けて物理的な押下状態を取得してみれば、といい加減にレス

964 :名無しさん@お腹いっぱい。:2009/09/23(水) 10:53:43 ID:rnq/Cubc0
IMEがオンの時のキーアサインを 一か所に記述する方法ってないよね?
各アプリごとにif imeがオンなら的に記述するのは可能っぽいけど
そんな面倒なことはさすがにやりたくない。


965 :名無しさん@お腹いっぱい。:2009/09/23(水) 11:15:35 ID:QoQA+ZLl0
>>959
ああ、リモコンの押下情報を拾いたいって話だったのか。補足サンクス
自分はてっきり、リモコン「に」何かをさせるためのコマンドをAHKから
投げたいのかと思ってたんだわ。

>ググりゃわかる
ググってもらうこと前提での質問はさすがにどうかと思うが。
実機触ったことない奴は最初から及びじゃないって話だったら謝るが
特殊デバイスとの明記があっても実際はそこは関係なく
AHKの基本的な挙動部分のアドバイスで解決してるパターンも多い品

>>964
LoopかSetTimerでIME状態を定期チェックして
HotkeyコマンドをまとめてON/OFFしたら?

966 :名無しさん@お腹いっぱい。:2009/09/23(水) 12:13:13 ID:6ioiqGbMP
>>964
AutoHotkey_Lを使うとか、関数でラッパーを作るとか。
どのくらいの数のキーアサインがあって、どれくらい複雑なのを書いてるのかにもよるだろうけど、
関数やサブルーチン化すれば何とでもなる気がする。

キーアサインの見た目をスッキリさせたいだけなら、
定義ファイルを読んで動的にHotkeyコマンドでアサインするスクリプトにすればいいと思うよ。

以下、ラッパーの例:

F12:: SwitchByIMEStatus( "IME_ON_" . A_ThisHotKey, "aaa" )

SwitchByIMEStatus( IME_OnKey, IME_OffKey )
{
 KeyOrLabel := IME_GET() ? IME_OnKey : IME_OffKey
 if( isLabel( KeyOrLabel ) ) {
  gosub %KeyOrLabel%
 }
 else {
  Send %KeyOrLabel%
 }
}

;
IME_ON_F12:
 MsgBox IME_ON_%A_ThisHotKey%
return

967 :名無しさん@お腹いっぱい。:2009/09/23(水) 12:17:08 ID:byEpQsx60
>>949
俺もユーザーだけどそれリモコン側の仕様だから諦めれ

968 :名無しさん@お腹いっぱい。:2009/09/24(木) 00:47:16 ID:S38f/Qa80
>>963
ありがとうございます
それならなんとかなりそうです

969 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:22:46 ID:DtBc3Rqs0
IMEがONだったらOFFにするという処理じゃなくて
それ自体をONにならないようにする事は可能ですか?

970 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:27:16 ID:DYoozoKf0
・On/Offを制御するキーを無効化@AHK
・On/Offを制御するキーを無効化@IME設定
・タイマー監視してOnになったら即座にOffにする@AHK
・IMEを削除@コンパネ

971 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:33:27 ID:UyV85G8yP
どういう状況でONにしたくないのか具体的に書くべき

972 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:34:26 ID:MWui31/h0
IME wo sakujo sitemimasita
nihongo kakenai

973 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:53:32 ID:DtBc3Rqs0
海外のゲームなのですがゲームの裏でIMEがONになると
AHKでキー無効化(自分で設定した)しているのでOFFに出来なくなります。
何個かキーを同時に押すのが原因なのか不明ですがIMEがONになることがあります。
それでIME自体を一時的に無効化出来ないかという発想になりました。


974 :名無しさん@お腹いっぱい。:2009/09/24(木) 16:54:08 ID:XOiOazUs0
質問者じゃないけど、どういう状況でONにしたくないのか・・・
ブラウザのFirefoxやIEで、URL入力バーにカーソルを置いたときに、
IMEがオンだったら自動的にIMEオフにできると便利かも、と思った。

IEなら

#IfWinActive ahk_class IEFrame
~F6 up::
~Lbutton up::
ControlGetFocus, cgf,A
if cgf=Edit1
 {
 ;IMEをオフ
 send,{vkF3sc029}
 }
return
#IfWinActive

で、できた。
ただIMEのON/OFFがトグル動作になるのでその対策は誰か頼む

Firefoxは、Control関連がほとんど取得できないので厳しいか。
URL入力欄にカーソルがあることを、識別させる方法ないかな

975 :名無しさん@お腹いっぱい。:2009/09/24(木) 17:27:07 ID:FLcpHl050
>>973
基本、IMEの状態はアプリ毎に保持してるから、別のアプリでONになったものが、他に影響を与えないはず。
(ATOKなんかは、グローバルに切り替える設定があった気がするけど…)
もしゲームの中で、コンパネの入力言語の切り替えに設定されてるキーを押しちゃってONになるのなら、
そちらの設定を無効にすれば良いと思う。

それでも発生するなら、対症療法的に>>970のようにタイマー使う方法が確実かも。

>>974
Firefoxにはその手のアドオンがあったはず。
特定のフィールドで自分の好みでというなら、AHKよりもユーザJavaScriptの方が
onFocusのイベントが使えるので、綺麗に書けると思う。
FirefoxならJavaScript+FlashProxyなどで、IEならJavaScriptのみでいけたと思う

976 :名無しさん@お腹いっぱい。:2009/09/24(木) 17:49:37 ID:wDsPraqV0
IMEで思い出したけど

ttp://www.vector.co.jp/soft/win95/writing/se085141.html
の AgainTyper みたいなのをAHKで造るいい方法はないかな?

タイマーで ControlGetFocus して Edit とか Combobox なら監視〜
とかやると AttachThreadInput の多用でダブルクリックが効かなくなるし・・・


>>974
>ただIMEのON/OFFがトグル動作になるのでその対策は誰か頼む
IME関係の関数がうpろだにあるんでそれを使えば明示的にオン/オフできる

977 :名無しさん@お腹いっぱい。:2009/09/24(木) 20:51:33 ID:DYoozoKf0
まっとうにやるなら、グローバルフック(AHK単体では無理)する必要があるとおもう。

てか、フォーカスのある場所が変わると指定の関数(orサブルーチン)を呼ぶ機能がAHKに欲しい。

OnFocusChange("HogeFunc")

HogeFunc(hwnd, classNN) {
 WinGetClass, class, ahk_id %hwnd%
 If (class = "IEFrame" && classNN = "Edit1")
  IME_Set(0)
}

dllで作れば何とかなるらしいとは分かるが、作れないw

978 :名無しさん@お腹いっぱい。:2009/09/24(木) 21:38:13 ID:DO4QqIKd0
>>976
AgainTyperの細かい挙動は知らんのだけど、過去ログでそれっぽいものはあったよ

AutoHotkey スレッド part6
http://pc11.2ch.net/test/read.cgi/software/1219130051/271-273,279-281

979 :名無しさん@お腹いっぱい。:2009/09/25(金) 00:12:16 ID:RNpkcNtC0
>>974
>>976がいうとおり、
send,{vkF3sc029}じゃなくてIME_SET(0)を使うべき
そうすればトグルの問題は解決する

980 :名無しさん@お腹いっぱい。:2009/09/25(金) 00:27:28 ID:GGpS0qzg0
関数組み込まなくても
IMEの設定で「IME-オフ」を適当なキーに割り当てて
そのキーをSendするという方法もある

981 :名無しさん@お腹いっぱい。:2009/09/25(金) 01:14:05 ID:Jfkb4kqj0
>>978
これ一時期使ってたけど、うちの低スペックマシンにはつらすぎた

982 :名無しさん@お腹いっぱい。:2009/09/25(金) 02:12:35 ID:ImZboX9h0
アップローダに上げられたIMEチェッカの改良版を作ってる人を見つけた

解説 http://blechmusik.xrea.jp/resources/keyboard_layout/DvorakJ/inc/IME.txt
コード http://blechmusik.xrea.jp/resources/keyboard_layout/DvorakJ/inc/IME.ahk

使ってみたのだけど、

IME_GET()

を呼び出して、アクティブウインドウのIME状況を知りたかったんだけど、
常にゼロが帰ってきてしまう。どうやって使えばいいんだろう。

983 :名無しさん@お腹いっぱい。:2009/09/25(金) 02:18:28 ID:ImZboX9h0
ちなみに関数を引用すると

> IME_GET(WinTitle="")
> ;-----------------------------------------------------------
> ; IMEの状態の取得
> ; 対象: AHK v1.0.34以降
> ; WinTitle : 対象Window (省略時:アクティブウィンドウ)
> ; 戻り値 1:ON 0:OFF
> ;-----------------------------------------------------------

俺のAHKは1.0.47.05だったがダメだった

984 :名無しさん@お腹いっぱい。:2009/09/25(金) 02:44:54 ID:WcTvLFes0
>>983
構造体のメモリを確保してないからだよ。

#Persistent
; 48バイトを確保して初期化しておく
VarSetCapacity(stGTI, 48)
DllCall("RtlFillMemory", "UInt", &stGTI, "UInt", 48, "UChar", 0)
DllCall("RtlFillMemory", "UInt", &stGTI, "UInt", 1, "UChar", 48)

SetTimer, getImeTimer, 500
return

getImeTimer:
tooltip, % IME_GET()
return

985 :名無しさん@お腹いっぱい。:2009/09/25(金) 03:13:06 ID:iLvMLypl0
>>984
おお動いたありがとう。

986 :名無しさん@お腹いっぱい。:2009/09/25(金) 03:54:41 ID:QHVB3Q8l0
>>978
サンクス、試してみます

987 :名無しさん@お腹いっぱい。:2009/09/25(金) 19:47:48 ID:j07RXB3U0
>>982
これ試したらいつの間にかIME状態取れなくなってた秀丸8βでも値取れた。

オリジナルの Ime.AhkだとバックグラウンドのIMEステータスも一応見れるので、
GetWindowThreadProcessId でスレッドID取得しするようにしてみたんだけど
アクティブ時は上手くいくのにバックグラウンドだとスレッド情報がうまくとれない(´・ω・`)
(戻り値は1で帰ってくるのでGetGUIThreadInfo関数自体は成功してるみたいなのに
スレッド情報は空になっている)

なんかおまじないが必要なんだろうか


settimer,timer1,200
return
+ESC::ExitApp


988 :つづき:2009/09/25(金) 19:51:45 ID:j07RXB3U0
Timer1: ;マウス下のウィンドウのスレッドIDを取得

MouseGetPos,mx,my,mhwnd
ThreadId := DllCall("GetWindowThreadProcessId",UInt,mhwnd,UInt,0,UInt)

; GUIスレッドの情報を取得
VarSetCapacity(stGTI, 48, 0)
NumPut(48, stGTI, 0, "UInt") ; DWORD cbSize;
ret:= DllCall("GetGUIThreadInfo", Uint,ThreadId, Uint,&stGTI)
cbSize := NumGet(stGTI, 0, "UInt")
flags := NumGet(stGTI, 4, "UInt")
hwndActive := NumGet(stGTI, 8, "UInt")
hwndFocus := NumGet(stGTI, 12, "UInt")
hwndCapture := NumGet(stGTI, 16, "UInt")
hwndMenuOwner := NumGet(stGTI, 20, "UInt")
hwndMoveSize := NumGet(stGTI, 24, "UInt")
hwndCaret := NumGet(stGTI, 28, "UInt")
rcCaret_l := NumGet(stGTI, 32, "UInt")
rcCaret_t := NumGet(stGTI, 36, "UInt")
rcCaret_r := NumGet(stGTI, 40, "UInt")
rcCaret_b := NumGet(stGTI, 44, "UInt")

;Message:WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
imests := DllCall("SendMessage", UInt,DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwndFocus), UInt, 0x0283, Int,0x0005, Int,0)

;↓改行長いって怒られた。下繋げて下さい
Tooltip, imests=%imests%`nGetGUIThreadInfo=%ret%`nThreadId=%ThreadId%`nProcessId=%ProcessId%`n`n
cbSize=%cbSize%`nflags=%flags%`nhwndActive=%hwndActive%`nhwndFocus=%hwndFocus%`nhwndCapture=%hwndCapture%`n
hwndMenuOwner=%hwndMenuOwner%`nhwndMoveSize=%hwndMoveSize%`nhwndCaret=%hwndCaret%`n
rcCaret_l=%rcCaret_l%`nrcCaret_t=%rcCaret_t%`nrcCaret_r=%rcCaret_r%`nrcCaret_b=%rcCaret_b%

Return

989 :名無しさん@お腹いっぱい。:2009/09/25(金) 23:16:33 ID:VEuCex6/0
質問しようかと思ったがスレも終了とはついてない。
新スレで質問させていただきます。

990 :名無しさん@お腹いっぱい。:2009/09/25(金) 23:20:24 ID:gLjU/yn40
>>989
すげー質問がくるんだろうなー(`〜´)y-~~~

991 :名無しさん@お腹いっぱい。:2009/09/25(金) 23:23:06 ID:aKBzNl6i0
まだ、次スレないのか。建てるか。

992 :名無しさん@お腹いっぱい。:2009/09/25(金) 23:39:09 ID:aKBzNl6i0
建てた。異論は認める。

AutoHotkey スレッド part9
http://pc12.2ch.net/test/read.cgi/software/1253888736/

993 :名無しさん@お腹いっぱい。:2009/09/26(土) 01:21:52 ID:QCvI6Osl0
乙しつつ埋め

994 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:02:05 ID:JGvN8cyx0


995 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:02:55 ID:JGvN8cyx0
埋め

996 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:03:17 ID:bwP8Emjr0
うめー

997 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:03:29 ID:wCAO+XhV0
うめうめ

998 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:03:52 ID:JGvN8cyx0


999 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:04:04 ID:8D2IrUBq0


1000 :名無しさん@お腹いっぱい。:2009/09/26(土) 05:04:13 ID:ipSzmwem0
水都大阪のアヒル祭りは27日まで
http://petite-soeur.dyndns.org/cgi-bin/up2/src/ps22517.jpg
http://petite-soeur.dyndns.org/cgi-bin/up2/src/ps22518.jpg
http://petite-soeur.dyndns.org/cgi-bin/up2/src/ps22519.jpg
http://homepage3.nifty.com/marauders/ca250173.jpg
http://petite-soeur.dyndns.org/cgi-bin/up2/src/ps22520.jpg
http://www.hetga.com/duck-b18.jpg
http://www.hetga.com/duck-b19.jpg
http://sukima.vip2ch.com/up/sukima071955.jpg
http://petite-soeur.dyndns.org/cgi-bin/up2/src/ps22522.jpg

【大阪】巨大アヒル、まもなく展示終了-「水都大阪2009」(画像あり)
http://tsushima.2ch.net/test/read.cgi/newsplus/1253854838/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

355 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)