以下FAQ等
■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」で保存する。(AHKLの場合)
Q2:初めて使うけどどれを使えばいいの?
A2:AHKLのユニコード版を推奨。
旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理です。
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。(
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
リマップ( F12::F13 )を解除する。
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
#UseHookで全部にキーボードフックを適応する方法でも可。
Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
× Joy1::Esc
○ Joy1::Send, {Esc}
Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。
Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, {w 30}
これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:
http://www6.atwiki.jp/eamat/pub/MyScript/ の「IME.ahk」を使いましょう。
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
が、バッチでかなりの回数(数万↑〜)回したりする場合以外は、体感出来るほどの差はない。
Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり
Q3:GUI作るのめんどくせ〜〜
A3:公式(
ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。
Q4:AHKってマルチスレッドじゃないの?
タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド →→→→→→……………………………………→→→→
> ★割込 ↑再開
> 割り込みスレ →→→→…………→→→→→→END
> ◆割込 ↑再開
> 更に割り込み →→→END
※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。
<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。
★教えて君五大要素★
1 読まない (文盲)
2 調べない (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない (馬鹿)
5 人を利用することしか頭にない (死ね)
YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
/ \
【探した?】 NO → なら、ねぇよ
\
NO → 死ね
670 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/07/20(水) 07:04:25.19 ID:Bb1hKbPa0
■回答できるレベルの人へお願い■
このスレは親切な人が多いと思うけど、もう日記に対する検証&レスは、
たとえ対処法をわかっている人がいても、レスは一切やめにしてくれないか?
こいつがやってることは
「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」
ってことだ。しかも、一度だけならまだしも、何度も繰り返している。
これまでに、このスレではこの手の質問者は居なかったと記憶する。
いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。
>>8-10 そういうのを気にする人はそういう質問をしない。
数日で1スレ消化なら自治があったほうが良いかもれいないけど
1スレ消費に1ヶ月以上掛かるところで自治を促すものが多いと
それを気にする普通の人が質問しづらくなり
気にしない教えてくんが相対的に増えて縮小、衰退していく。
スレ立て乙
気づいたんだけど
>>7の日本語のページって情報があまりにも古くない?
乙だが >9はいらないだろ
探して見つけて試して動かなかったから相談に来る人間は拒否してない
質問ですらない日記は別だけどな
MouseMove, A_CaretX,A_CaretY
MouseMove,%A_CaretX%,%A_CaretY%
いずれも エクスプローラーやメモ帳のキャレットには反応しますが
firefox のキャレットに対してうまくはたらかず
左上にいってしまいます
MsgBox,A_CaretX,A_CaretY
だと 8.30 と出力されます
対処法はないのでしょうか?
8,30でした
ホイール操作をした場合マウスカーソル下のコントロールに下スクロールを送りたいのですが以下の処理で反応してくれません。
マウス下のコントロールを取得して、そこにキーを送っているつもりですが、おかしい箇所を指摘してもらえないでしょうか?
MouseGetPos, xx, yy, , control, 1
ControlClick, x%xx% y%yy%, , , WheelDown, 1, Pos
;こちらでもダメでした
ControlClick, %control%, , , WheelDown
>>17 ありがとうございます。
一部出来ましたがiTunesではスクールされませんでした。
取得したコントロールはWindow Spyで示しているClassNNと同じ値が取得できていました。
実際の処理です
MouseGetPos, xpos, ypos, win, control
IfWinNotActive, ahk_id %win%
{
WinActivate , ahk_id %win%
}
Tooltip %control% ahk_id %win%
ControlClick, %control%, ahk_id %win%, , WheelUp
タスクトレイメニューに複数の項目をもつサブメニューを入れたい
ルート─サブ1
└サブ2
といった感じにしたくてこう書いてみたんだけど
Menu, サブ1, Add, サブ1, Show1
Menu, サブ2, Add, サブ2, Show2
Menu, TRAY, Add , ルート, :サブ1
Menu, TRAY, Add , ルート, :サブ2
うまくいかずルート─サブ2になる
Menu, TRAY, の部分の順番を変えてみると
1、2だとルート─サブ2になって2、1だとルート─サブ1になるから
上書きされてるんじゃないかとおもうんだけどどうしたら良いかが分からない
#Persistent
Menu, サブ, Add, サブ1, Show1
Menu, サブ, Add, サブ2, Show2
Menu, TRAY, Add , ルート, :サブ
Return
Show1:
msgbox, Show1
Return
Show2:
msgbox, Show2
Return
こういうことかいね?
21 :
名無しさん@お腹いっぱい。:2011/10/01(土) 13:06:16.13 ID:6XDZ/DuM0
ジョイパッドの3ボタンを同時押しした時にCtrl+WheelDownを
五回行うっていうプログラムを組んでいるのですが
Ctrl+WheelDownのような特殊なキーを含んだ動作は
コンビネーションキーで使用することはできないのでしょうか?
そういう制限は見聞きしたこないな
ま、とりあえず、晒せ
晒すほどのものにはなってないのですが一応。
Joy2::
if(GetKeyState("Joy7") && GetKeyState("Joy8"))
{
Send,{};ここに何を入れるかで悪戦苦闘中
}
return
いわゆる「コンビネーションキー」つーわけでも無いのか。
なら普通に Send, ^{WheelDown} とかでいいんでないかい。
^ の意味はマニュアルをよく読むこと。
回答どうもです。
Send,^{WheelDown}
これは真っ先に試してみたんですが反応せず。
Send,{WheelDown}
これは反応ありですが、「^」をつけるとどうも動かないんですよね。
>>25 キーを押している時間を長めに設定する
setkeydelay,,50 ; 反応しない場合は50msより大きい値にする(200msとか)
Send,^{WheelDown}
setkeydelay,,-1 ; 元に戻す
Send, {Ctrl down}{WheelDown 5} {Ctrl up}
色々とありがとうございます。が、申し訳ない。
どうやら同時に起動してたソフトが悪さしてたみたいで、
そのソフトを一旦切ってみたら
>>24の方の方法でも問題なく動きました。
なんもしてないが、解決して何より。
だが、
悪さ、というか干渉してるのを具体的に書くと同じようなことがおきた別の人のためになるんじゃないかな
ちょっとした作業の繰り返しをしたいときに
キーボードやマウスでの操作を記録して
再生するスクリプトってありますか?
本家版(Version 1.0.48.05)に同梱されている
AutoScriptWriter(AutoScriptWriter.exe ) を使う。
>>20 うまくいきました!
サブメニューにしたいもの全てに同じメニュー項目名をあてれば良かったのですね
どうもありがとうございました
自作のポップアップメニュー表示中の割り込み制御はいつになったら実装されるのか
現状でやりたいなら、DLL版つかって別スレッドのスクリプトで動かすのがせいぜいだな
つか前スレでも聞いといてなんだけど、AHKメニューに縦区切りつけるのって標準の命令じゃ無理なん?
36 :
名無しさん@お腹いっぱい。:2011/10/02(日) 17:20:44.92 ID:Fnt2c63e0
>>29 具体的にどう悪さをしていたのかって言うのは分からないので
状況だけしか書き込めないのですが
・AHKと同時にJoyAdapterというパッド→キー変換ソフトを使用していた
・そのソフトの設定でJoy2ボタンにCtrlを割り当てていた
・同ソフトでJoy2=Ctrlの設定を解除したら正常に動作した
と、まぁこんな感じです。
38 :
35:2011/10/03(月) 00:50:58.12 ID:s2cRK8Zj0
>>37 おぉ、まさにこういうやつ。情報dです
やっぱ標準じゃ無理なのね。InsertMenuItemなんてコール初めて知った
39 :
名無しさん@お腹いっぱい。:2011/10/03(月) 13:51:11.03 ID:uFpObJt20
韓国語とか中国語のimeを使っているとき、
imeの状態や変換モードを取得したり設定するにはどうすればよいのでしょうか。
dllcall imm32.dllでググればいいんじゃね?
64bitでThumbremap動かしたいんだけど、
デフォルトで使おうとするとうんともすんとも反応しないんだよなー。
だからおそらくThumbSynaptics.ahkをどうにか改変しなきゃならないと思うんだけど、
どこがマズいのやら・・・。
それならとこれの元になった前身のThumbsenseを入れてみたら普通に動くから
64bitで動かせないということは無いと思う。
これをどう書き変えたら64bit対応になるんだろう?詳しい人教えてください。
goto,Thumb_Synaptics_End
Thumb_Init_Driver(){
global
Process,Priority,,High
hSynTP:=DllCall("kernel32.dll\CreateFileA",Str,"\\.\SYNTP",UInt,0xC0000000,UInt,3,UInt,0,UInt,3,UInt,80,UInt,0)
Thumb_Synaptics_InBuf:=DllCall("kernel32.dll\GlobalAlloc","UInt",0x40,"UInt",16,"UInt")
Thumb_Synaptics_OutBuf:=DllCall("kernel32.dll\GlobalAlloc","UInt",0x40,"UInt",8,"UInt")
NumPut(0x01000000 | 10 ,Thumb_Synaptics_InBuf+4*0)
NumPut(0x01000000 | 729 ,Thumb_Synaptics_InBuf+4*1)
NumPut(0xFFFFFFFE ,Thumb_Synaptics_InBuf+4*3)
SetTimer,Thumb_Synaptics_GetState,50
}
Thumb_Synaptics_GetState:
DllCall("kernel32.dll\DeviceIoControl","UInt",hSynTP,"UInt",0x80006004,"UInt",Thumb_Synaptics_InBuf,"UInt",16,"UInt",Thumb_Synaptics_OutBuf,"UInt",8,"UInt",0,"UInt",0,"Int")
Thumb_SetState((NumGet(Thumb_Synaptics_OutBuf+4) & 0xFF)>0)
return
Thumb_Synaptics_End:
>> 41,42
ポインタサイズを変えただけじゃ動かないよ。以前調べたところでは、
> NumPut(0x01000000 | 10 ,Thumb_Synaptics_InBuf+4*0)
> NumPut(0x01000000 | 729 ,Thumb_Synaptics_InBuf+4*1)
> NumPut(0xFFFFFFFE ,Thumb_Synaptics_InBuf+4*3)
このあたりの API が 64 ビット未対応のようだった (ポインタサイズは変更した上で)。
Synaptics から 64 ビット用 SDK は公開されておらず、そこで手詰り。
誰か猛者はおらぬか…
>>42 理解するのは難しそうだけど読んでみるよ、ありがとう。
>>43 おお、先駆者がいたのかw
Thumbsenseはいったいどうやって32,64bit対応させてるんだろうね?
しかもあれ確か5年以上前の64bitすらなかった時代のソフトなのに。
45 :
43:2011/10/07(金) 18:04:07.65 ID:i477kWl90
>>44 ThumbSense は 32 ビットソフトなんじゃないの?
32 ビットでならこれまで通りタッチパッドの情報取得が可能。
46 :
43:2011/10/07(金) 18:05:42.71 ID:i477kWl90
なので AHK の x86 (32 ビット) 版でなら >41 の ThumbRemap も普通に動く。
もちろんその通りだよ。
問題は、そいつが64bit環境でも普通に動いてるってこと。
ひょっとして、AHK_L64bitじゃなく昔のバージョンのAHKを使えば動いたりは・・・?
しないよな、やっぱw
ナ、ナンダッテー
ANSI版じゃないの?
51 :
43:2011/10/07(金) 20:48:36.36 ID:K1u62ixM0
>>47 64 ビット OS 上でも ThumbSense のプロセスは 32 ビットでしょ?
同じ理由で ThumbRemap スクリプトは 32 ビット AHK でなら正常動作する。
また
>>49 を使う場合は、スクリプトを UTF-8 で保存しないと動かないよ。
PostMessage, 0x111, 65305,,, tometai.ahk - AutoHotkey
上のように、別のスクリプトである tometai.ahk をsuspend するコマンドで
A::Suspedn,off
で出来るような Suspend 命令に追加コマンドをつける方法はありますか?
そろそろv2くるか
>>50-51 昔のXpマシン引っ張り出して旧ahk.exeと置き換えたら動いた!
できれば64bitで正式に動かしたいからちょっと気持ち悪いところはあるけど当分はこれでいいや、ありがとう。
>>52 どっちにしろ PostMessage するんだったら、
OnMessage で待ち受けてwParam,lParamの値で分岐して処理が走るようにすりゃいい。
あとは、投げ側と受け側が同じメッセージ番号使うって約束だけ守ればいいかと。
使用中で容量が増え続けロックがかかっているファイルがあります。
エクスプローラでアクセスするとその時点のファイルサイズを取得できるのですが、
コマンドのFileGetSizeを使っても、その時点のファイルサイズを取得できません。
Autohotkeyでその時点のファイルサイズを取得する良い方法はないですか?
>>53を見て思ったんだけど
autohotkey_lでどういう場面でクラスを使うんだろう
これまで何年もクラスなしのautohotkeyに慣れ親しんできたし
他の言語もよく分からないので、今いちピンとこない
掲示板の反応を見る限りではかなり好評みたいだから
使用例とかノウハウを具体的に見てみたい
a::
Gui, Add, Text, , %A_Now%
Gui, Show, , TIME
return
///////////////////////////////////////////////////////////////
最初にAを押した時刻しか表示できません。
Aを押したときに現在の時刻を表示できるようにするにはどうすればいいですか?
a::
Gui, Destroy
Gui, Add, Text, , %A_Now%
Gui, Show, , TIME
return
みたいな感じ?
>>58 再利用的な例だと、↓のようなエクスプローラ上で動くホットキーを集めたクラスがあったとして
Class Explorer
{
Open() ; 選択されたファイルを開く
{
Run,% this.GetSelectedFile()
}
Delete() ; 選択されたファイルを削除
{
FileDelete,% this.GetSelectedFile()
}
GetSelectedFile()
{
; エクスプローラ上で選択されたファイルのパスを返す
; ここではCOMを使ってパスを取得したとする
}
}
↑のコマンド群をデスクトップ上でも同じように使いたくなったら、上記のクラスを継承して、必要な部分をオーバーライドするだけで済む
Class Desktop Extends Explorer
{
GetSelectedFile() ; デスクトップ用にオーバーライド
{
; デスクトップ上で選択されたファイルのパスを返す
; ここではControlGetを使ってパスを取得したとする
}
}
; エクスプローラ
#o::Explorer.Open()
; デスクトップ
#o::Desktop.Open()
SAIに定期実行でC-s送ろうと思って
#Persistent
SetTimer,OnTimer, 1000
return
OnTimer:
DetectHiddenWindows, On
ControlSend,, ^s, ahk_class sfl_window_class
return
って書いたんですがうまく行きません
何故かNotepad++だとうまくいくのですが…
WheelRedirect.ahkがPostMessage使ってるのは何か意味あるのかな
WM_MOUSEWHEEL はSendMessageしないといけないと思うんだけど
いろいろいじくってたら、やっとまともに動くようになったが
66 :
名無しさん@お腹いっぱい。:2011/10/13(木) 10:18:15.99 ID:Wl1WLloQ0
E-mail:
内容:
Alt+任意のキーでカーソルの移動を割り付けているんですが、
!sc01A::Send, {Up}
!sc035::Send, {Down}
Alt+Fでアプリケーションのプルダウンメニューを出した後に、
割り付けたキーで移動をかけようとすると、メニューが消えてしまいます。
これってどうやったら回避できるんでしょうか。
Key historyで見ると
で、LAlt+FとDownの間に、別の命令があって、それで消えていそうなことはわかるんですが・・・
特にSendを使う理由がないならこれでいいんじゃない?
!sc01A::Up
!sc035::Down
ごめん途中で送信しちゃった
Send使うなら
>>4Q3とか
>>67-68 回答ありがとうございます。
Sendを使わないと、そもそもカーソルが動かないんですよね・・・
でも、確かにプルダウンでは教えていただいた方法で問題なく動きます。
あと、修飾をAltじゃないものにすれば、Sendを使わないでも、両方とも問題なく
動作するんですが・・・
Altだけ動作が特殊なんですかね?
プルダウンにカーソルがある時と、それ以外の時が判定できればいいかとは思うのですが、
そんなことはできるんでしょうか?
質問、続いてしまって申し訳ありません。
OS仕様的にAlt単体でメニューへのフォーカストグルの挙動になってるから難しいんじゃね
>>65 SendMessageだと戻りを待つので動作が遅いとかそんな理由だったと思う
処理として正しいかはわからんが(XP以下のOSでは)Postで投げるだけでも動いてたし
fenrirスレでfenrirのバグ扱いしてた奴か
見たような気がしたと思ったらそれか
SysGet,monitor1,MonitorWorkArea,1
desktopW:=monitor1Right
desktopH:=monitor1Bottom
desktopW2:=desktopW / 2
desktopH2:=desktopH / 2
Menu,MyMenu,Add,&Window移動(i),patternss1
Menu,MyMenu,Show
Return
patternss1:
WinMove, A,,0,0,desktopW,desktopH2
ExitApp
こんな感じにメニューから項目を選んで
変数で定めた位置と大きさにウィンドウを移動しようとしてるんですが
2回に1回〜7回に1回くらいでしか成功しません
なにか改善方法ってありませんか?
WinWaitActiveを挟んでみたりSetWinDelayの間隔を長めにしても効果ありませんでしたorz
事故解決したかも
試していたのがブラウザ(DonutQ)だったんだけど
他ソフトで試したらほとんど失敗なくなりました
対象が悪かったの・・か?
さらに追記
ウィンドウの指定をアクティブウィンドウじゃなくて
MouseGetPosから取得したウィンドウハンドルを使ったら成功率ほぼ百%に
でもWinGetやWinGetClassではなぜか駄目
>>73 俺はメニューが閉じるまで待つようにしてる。
While !(WinExist("A"))
Continue
OSはXPかVistaで、IE7のタブがいくつ開いているか調べる方法ってありますか?
特定のページが開きっぱなしのときctrl+wを送って閉じたいのですが、
タブが1個のときにこれを送るとIE自体が終了してしまうため(設定は変えたくない)、
複数のタブが開いているかどうかを調べたいです。
WinGetText, text,A
とやると、テキストの中に、タブ数に応じて「メニューバー」というテキストが複数に増えることは
確認できましたが、こんなんで判別してしまったら、例外が出そうですよね。
現在のタブ数を調べる方法があればと思い質問させていただきました。
WinXPと7で処理分けるのってどうやればいいですか
if A_OSVersion in WIN_XP
{
MsgBox,XP
}
if A_OSVersion in WIN_????
{
MsgBox,Win7
}
A_OSVersionで行けそうです。
81 :
77:2011/10/16(日) 08:02:28.62 ID:G3Xj1HS60
>>78 どうもありがとうございます。残念ながら動きませんでしたが、
原因はこちらのAHKが古いせいでした。
AHK_L 53+と記載されているということは、_L専用の命令ということですね。
_Lへの移行を終わらせた後に再度検証してみます。
キーボードをマウスにするスクリプトが常用化できた
同じ事やってる人います?
ところでarm 版windows への対応はどうなるんだろう
動きがないなら開発してみようかな?
ウィンドウのコントロールごとに飛ぶ、か
いいね、自分もやってみよう
ツールバーのボタンとかに対してHit-a-HintやQuickHintみたいなことができればいいと思うんだけど
>>83 自分はRAlt をmodifier にして
asdf をマウスの←↓↑→
デフォルトを加速つき移動にして
j, ; を押しながらasdf で高速低速の定速
画面端へのジャンプキー4つ
k,l をマウスクリック、みたいにしてつかってます
その他全部の文字キーに動作を割り当てて
capslock も 別のmodifier にしたこともあり
使い勝手ではトラックポイント単体を上回ったと思ってます
キーを犠牲にしたくない場合パッドをスイッチにするといいですね
自分は左手用スイッチにしてます
「何かキー(マウスボタンも含む)が押されたら」ってどう書けばいいですか?
ホットキーラベルとして正規表現で「.*::」でできるかなと思いましたが駄目でした
どんな方法があるでしょうか?
89 :
名無しさん@お腹いっぱい。:2011/10/23(日) 08:04:46.03 ID:PS8qcPCA0
>88
マウスだけならMouseGesture.ahkを使うと
分かりやすいインターフェースで自動でスクリプト生成してくれる。
無変換とスペースの間にもうひとつ特殊キーのあるキーボードが欲しい・・・
何でこんなおいしい場所にアホ長いスペースがのさばってるんだ
>>90 英語キーボード見たことないの?
無変換-スペース-変換-かな の場所が全部1つのスペースキー
~aやSpace & XButton1など
おまけつきでホットキーを登録した時に
aやXButton1だけを簡単に得る方法はないですか?
A_ThisHotKeyだと全体だし、
正規表現だとなにか大げさな気がして
windows7で#lを無効化する方法はないんでしょうか
>>90 You さっさと μTRON 買っちゃいな YO!
もしかしてeverythingってahkまったく効かない?
いいえ
前にも話題に出てたウィンドウシェードについてなんだが、通常はサイズ変更で、
サイズが制限されてる奴はリージョンでやればできるけど
SAIはサイズ制限されてる上にリージョンが効かないみたい、
ちょっと調べたんだが、アプリケーションはWM_GETMINMAXINFOでサイズ制限をかけられるようだが、
SAIがそうしてるかわからんけどもしそうであると仮定して、AHKからSAIのMINMAXINFO構造体へサイズを上書きすることって可能なのかな?
フックとかつかわんと無理かな?
もしくはリージョン設定が上手くいかないのを何とかする方法がわかるなら、誰か教えてエロイ人
ztopみたいにホイール操作でマウス直下をアクティブにしてその画面にホイールイベントを渡してますが、普通の画面は問題ないけど小さいウィンドウがたくさんあるソフトではうまくいきません。
ウィンドウによって何か処理を毛得る必要があるのでしょうか?
>>98 everything上で行った入力がキーヒストリーに全く記録されないのはなぜでしょうか。
>>101 ユーザーアカウント制御(UAC)に引っかかってるんじゃないの?
Win7はセキュリティ上異なる権限のソフトからのキーバインドは無効化する
AHKを管理者権限で起動すればそういうのにも効くようになるけど、
そうすると今度は一般権限のターゲットに効かなくなる
結局のところUACを切ってしまうか諦めるかのどっちかしかない
Win7 HP x64 & Pro x64 上で AHK_L x64 を管理者権限で動かしてるけど
キーバインド・マウス制御に特に問題ないよ。
通常窓も管理者窓もどっちも平気。
ただし、暗転するUACのダイアログは無理。
MouseGetPos, , , hwnd
してhwnd->pid->process pathの取得ってお手軽にやる方法無いですか。
DllCallしまくりでやるしかないのかな。
Adobe ReadeにSend, ^{WheelDown}を送ってもふつうのホイールダウンにしかなりません。
なぜControlが効かないのでしょうか?
AHK_Lの最近のなら
MouseGetPos,,, id
WinGet, path, ProcessPath, ahk_id %id%
>>102さんや
>>103さんの環境では、everything上でのキー入力も記録されているんですか?
ということは何かしら自分の環境に問題ありなようですね。
頑張って調べてみます。ありがとうございました!
>>105 理由は知らんしReaderで試してないが
PhotoshopCS5で SendPlayしないとモデファイヤが上手く動かないことはあった
>>5のIME.ahkですが、Windows7 64bit上ではちゃんと値が習得できません。
改良した方いましたら、ご教授願います。
DllCallはさっぱりなのですが、
DllCall("imm32〜
これをimm64に変えただけではダメでした。
ホイールのアクセレータを実装しようかと以下を作ったのですが、どうもうまくアクセルがかかりません。
そもそもアプローチが間違えているのでしょうか?
>>112 このスクリプトです
mouse_before=%A_TickCount%
WheelUp::
sub := A_TickCount - mouse_before
mouse_before = %A_TickCount%
if (sub == 0) {
ToolTip 加速します
Send, {WheelUp}{WheelUp}{WheelUp}{WheelUp}{WheelUp}
} else {
Send, {WheelUp}
}
sub == 0 の激速回転してる人なら加速いらなくね
>>113 一応動いてるよ、returnはコピペし忘れだよね?
5連続ぐらいだと分かりにくいから
わかりやすいようにSend, {Wheelup 500}とかやってみw
あと、たしか間隔狭すぎるとアプリによっては取りこぼして反応しなかったりする場合もあったとおもうから
もし動かないアプリ合ったらそこらへん調整したほうがいいよ
操作性向上系スクリプトは動作原理はたいてい至って簡単で、
面倒になるのは微調整。
それも対象とするアプリごとにやってやらんといけない。
そこで投げてお仕着せのツールを使うか、粘ってうまく仕上げるかは当人次第。
俺は
Wheel→そのまま
RButton+Wheel→PgUp・PgDnに変更
これだけだなw
wmpで「拡張子が.mp3だったら、起動(=再生開始)と同時に最小化」ってできますか?
はい
120 :
名無しさん@お腹いっぱい。:2011/10/29(土) 20:30:43.56 ID:VLEXdEZ80
ウィンドウクラスが変わるソフトがあるのですが、
指定する方法はないでしょうか?
変わる部分は後半だけで、
SetTitleMatchModeもデフォルトが前方一致なようなので
削ればうまくいくと思ったのですがうまくいきません
mousegesture.ahkではexeで指定できるので
何か方法はあるとおもうのですがわかりませんでした。
わかるかた、アドバイスをよろしくお願いします。
122 :
名無しさん@お腹いっぱい。:2011/10/29(土) 20:52:15.68 ID:2z/a8QcK0
Lだとahk_exeが使えるから楽だよ
123 :
名無しさん@お腹いっぱい。:2011/10/29(土) 21:14:34.99 ID:VLEXdEZ80
>>121 できました!ありがとうございます!
processnameですか・・・ずっと見落としてました。助かりました。
>>122 64bit環境に移行した際に導入しようかとおもったのですが、
あまりにも修正部分が多くて挫折してしまった過去があってw
やっぱり色々便利そうですね。根気が回復したときにやってみたいと思います。
ahk_exeなんて有ったのか
全然知らなかった…
マウスの左右ボタン同時押しの検出方法を教えて下さい。
あと、方法があったとしてこういう操作って誤動作しやすかったりしますか。
>>119 できるんですか。
もしよければ、「拡張子が.mp3だったら」という部分だけ少しヒントをいただければ・・・
>>118 >>119じゃないけど、こういう方法とか。
#SingleInstance, FORCE
loop, %1%, 0
if RegExMatch(A_LoopFileName, "\.mp3$") {
run, "C:\Program Files\Windows Media Player\wmplayer.exe" "%1%", , , wmp_pid
WinWait, ahk_pid %wmp_pid%, , 2
if !errorlevel
WinMinimize, ahk_pid %wmp_pid%
}
return
※全角スペースを省くか、半角スペースに置き換える
というahkファイルを作成してコンパイル(exe化)する。(例 ahk_mp3.exe )
mp3ファイルの関連付けを ahk_mp3.exe にする。
>>127 できました! ありがとうございます!
再生するファイルのタイトルを取得してwmpに投げるところから書けばよかったんですね。
「どうにかしてwmp内から再生ファイルの拡張子orタイトルが取得できないか」って考えしかありませんでした。
とても助かりました。
>>125 同時押しの検出方法ってのは
1.左右両方のボタンを押したときに何らかの動作をさせたい。
2.左右ボタンとは別トリガーでボタンの押下状態を調べたい。
例:左Altキーを押したときに左右両方のボタンが押されていれば「OK」
そうでなければ「NG」と表示させる。
3.左右ボタンが(ほぼ)同時に押されたかどうかで分岐
例:50ms以内に左右両方のボタンが押された場合「成功」
50ms以上かかった場合「失敗」と表示させる。
4.もっと別のなにか
さあどれ
>>127 これだと複数ファイルを渡したときとか、すでにWMPが起動してるときはうまくいかなくね?
>>129 例えば左右同時押しをトリガとして
ランチャを起動するといった使い方を考えています。
実装が1-4のどれになるかはわかりません。
コードにするとこんなイメージですが
これだと同時押しの検出はできるものの
LButton単体押し検出されなくなってしまいます。
LButton & RButton::
Run,MyLauncher
return
~LButton & RButton::
でおk
WinGet, , Processpathもahk_exeもここ見てやっと分かった俺ってアホくさ
changelogをしっかり読むべきだな
英語の説明だと、自分では読んでるつもりでも機能とかを見落としてるときあるよね
IfWinExist, ahk_class EVERYTHING{
a::b
}
と書きました。
これで、everythingが常駐している状態でメモ帳などに「a」と打つと「b」と表示されます。
しかし、everything上で「a」と打っても「a」と表示されます。
everything側の問題な気はしますが、何か原因がわかる方はいらっしゃらないでしょうか。
>>136 権限が無いからだよ
AHKを管理者権限で起動すればEverything上でも動作するはず
OSとEverythingとAHKのバージョンすら書かずに質問繰り返してるとライトのコピペ貼られるぞw
IfWinExistの後には「{」続けられなくね?
それ以前に「EVERYTHING{」ってスペース無しだとそういうクラス名だと認識されね?
すまん、なんか色々読み違えてたから忘れてくれ
>97 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/10/25(火) 14:42:22.22 ID:xnRLOf/E0 (PC)
>もしかしてeverythingってahkまったく効かない?
>
>101 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/10/26(水) 23:51:20.93 ID:i2cAt2yX0 (PC)
>
>>98 >everything上で行った入力がキーヒストリーに全く記録されないのはなぜでしょうか。
>
>107 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/10/27(木) 21:37:34.30 ID:PSx1iIK70 [1/2] (PC)
>
>>102さんや
>>103さんの環境では、everything上でのキー入力も記録されているんですか?
>
>136 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/11/01(火) 12:33:23.21 ID:zAQ+5vWH0 (PC)
>IfWinExist, ahk_class EVERYTHING{
> a::b
>}
>
>と書きました。
>これで、everythingが常駐している状態でメモ帳などに「a」と打つと「b」と表示されます。
>しかし、everything上で「a」と打っても「a」と表示されます。
>
>everything側の問題な気はしますが、何か原因がわかる方はいらっしゃらないでしょうか。
これは、あの人の匂いがする・・・
このキチガイは本スレ+セキュ板の全く関係ないスレでも暴れてるんで触らない方がいい
少なくともAHKの内部じゃこう処理されてるはず
IfWinExist, ahk_class EVERYTHING{
; 空っぽ
}
a::b
if と #if の違いはきちんと理解すべき
というか、autohotkey_lの利点の一つが #if を使えること
本当ならしっかりとしたチュートリアルがあればいいんだろうけど
現状で満足している人が多数いるんだよね
forumで初心者向けのチュートリアルをぽつぽつと書いている人が時たま居るけど
うまい具合にまとめてくれればいいのに
#includeされたファイル内で、スクリプト読み込み時に何かを実行するちゃんとした方法ってあるんでしょうか。
initialize() { static a:= initialize() } とか以外で
iTunesの早送りをAutoHotKeyで制御しようと思っているのですが何故かうまくいきません。
iTunesが非アクティブの時制御させようと思っているので、以下2つを試しています。
;@スライドバーの上でホイール操作
ControlSend ,ahk_class iTunesSlider2, {WheelUp}, ^iTunes$
;AiTunesのショートカットキー Ctrl+Alt+ ←
ControlSend , , ^!{Left}, ^iTunes$
iTunes非アクティブ時はどちらもうまく動作しませんが、
アクティブ時はAは動作しました。
非アクティブ時のAは単純なレフトキーを押しただけのショートカットキーが動作してしまいます。
Ctrl+Altが効いていないような動作です。
このようなショートカットキー操作はそもそもできないのでしょうか?
それともiTunesが特殊なのでしょうか?
デスクトップとタスクバーってahk_idが変動したりするものなの?
ずっと上手く動かなかったスクリプト、
このふたつのIDをいちいち取り直すようにしたら動いた
autohotkeyのスクリプトは何のエディタを使って編集していますか?
便利なものがあれば教えて下さい
愛用しているテキストエディタのプラグインでAutohotkeyに対応しているものを探す。
ソースが公開されているなら自分用にカスタマイズすると更に使い勝手が良くなる。
対応しているものなら基本的にコマンド、関数、単語等のそれぞれに色付けされ、
自動インデントとか付いてたり(個人的に自動インデントは邪魔)、
カーソルがある文字列をリファレンス(ヘルプファイルやhtml)検索したり、etc・・・
Lは違うかも分からんがExtras\Editorsの中に対応エディタの定義ファイルが入ってる
無いときは \Syntaxの各キーワードファイルを使いたいエディタの定義ファイルに変換するスクリプトでも作ればOK
あぁ難しいな・・
エディタって細かい違いが多すぎてなあ
自分でいろいろ試したほうが良いよ
おれはotbedit使ってる
キーワードファイルはそのスレに上げた
男なら黙ってVim
そのうち他のソフトでもVim風キーバインドを使えるようにするためにAHK書くようになるよ
秀丸で AHK キーワード強調表示させてる。実に便利。
凄く単純なことなんですけど
NumLockキーがオンの時orオフの時 って
どう書いたらいいんですか?
>3参照
NumLockキーがOnの時とOffの時で処理をわけたいって意味なら
If GetKeyState("NumLock","T")
MsgBox, NumLockキーはONです
Else
MsgBox, NumLockキーはOFFです
Return
あぁGetKeyStateを使えばいいんですね
どうもです
2chでも有数の良いスレだね、ここは。
ahkの知名度がそれほどでもないのが良いほうに働いているというか。
最近やっとXPからWin7の64bitにしたんだが、
ahkも普通に動くし、早速いろいろ挙動をカスタマイズしたよ。
AHK_Lの日本語リファレンスマニュアル的な本でもあれば・・・と思う今日この頃
現状AutoHotkeyJpがリファレンスマニュアル代わりになってるけど
万が一あそこが消えたりしたらつらいことになりそうだ
どこかの出版社がautohotkeyのマニュアルを出すっていうのか
なるほど
よく考えると、autohotkeyとそれなりに似ている UWSC の解説本が
翔泳社から出ているから突飛なことでもない
すごく便利なのはわかるが難しすぎて
フルに使いこなせないのが歯がゆいなぁ
今自分の出来ることだけでも十分便利だけどもさ
164 :
名無しさん@お腹いっぱい。:2011/11/07(月) 23:31:49.17 ID:V9iAcL3G0
ログイン必要なとこからファイルGETするにはどうしたらいい?
具体的にはGoogle Bookmarksのエクスポートファイル定期的に落としたい
おいやめろwww
167 :
名無しさん@お腹いっぱい。:2011/11/09(水) 03:08:45.80 ID:0bPq9xwm0
AHKのスクリプトを使ってると、どこかのタイミングでスクリプトが動かなくなるので
リロードしなくちゃいけなくなるんですけど、これを回避する何かいい方法ないですかね?
しかたないのでもう一つスクリプト起動してメインのスクリプトを30分ごとに再読み込みさせるようにしたんですけど
これだと一部の継続して使うスクリプトの動きが遮断されて色々と面倒なんです。
スクリプト晒した上で、何が動かなくなるのか具体的に書いてくれないと…
WinSet, Style, -0xC40000, A でタイトルバーやウィンドウの枠を取ることは出来ましたが、更にメニューバー、スクロールバー、ステータスバーを取り除くことは出来ますか?
なるべくエディタなどで表示エリアを大きく取るための手段として考えています。
かざぐるマウスとAutoHotKeyを併用したときに、AutoHotKeyでマウスホイールの定義を下記のように設定していると
かざぐるマウスにホイールイベント渡らないですが、しばらくすると
ある段階からかざぐるマウスのイベント処理が走ってしまいます。
その時AutoHotKeyのイベントも動きます。
これはAutoHotKeyのパフォーマンスによるものなのでしょうか。
WheelUp::
ToolTip ほげ
return
171 :
名無しさん@お腹いっぱい。:2011/11/09(水) 18:46:22.30 ID:V2eQl0Qe0
マイネットワークは
Run,::{208D2C60-3AEA-1069-A2D7-08002B30309D}
で開けるのが分かったのですが、ワークグループを開くにはどう書いたらいいのでしょうか?
Run,explorer.exe /n`, /root`, "マイ ネットワーク\ネットワーク全体\Microsoft Windows Network\Workgroup"
と書いて見ましたが駄目でした。よろしくお願いします。
run,workgroup.lnk
173 :
名無しさん@お腹いっぱい。:2011/11/10(木) 01:28:43.67 ID:0RzHedoG0
あるスクリプトを特定のプログラムでだけ動かなくするようにできないですかね?
Windowsで動いてる何十のアプリのうち一つだけ除外したいといった感じです。
^a::何らかの関数
みたいになっている状態で、autohotkeyから^aを送って
「何らかの関数」を実行することはできないんでしょうか
>>173 特定のウィンドウがアクティブかどうかということなら
IfWinNotActive, ahk_class Notepad
msgbox, メモ帳ではありません。
else
msgbox, メモ帳がアクティブです。
ホットキーなら
#IfWinNotActive, ahk_class Notepad
a::send,b
>>174 ^a::test()
test() {
msgbox, hoge
}
あるウインドウがアクティブで、マウスカーソルが座標が
画面の座標系でなく、そのアクティブウインドウの座標系でのa≦x≦b、c≦y≦dに
ある場合 ○○::××
ない場合 △△::□□ ってので下の括弧の中ってどうなります?
#IfWinActive ahk_class ・・・
If ( )
○○::××
else
△△::□□
return
>>174 擬似的にイベント発生させたいなら
#UseHook Off
Send, ^a
ホットキーラベルに $はつけないこと
ただしマウスホットキーはハードウエア操作じゃないとイベント発生しなかったはず
関数にパラメータとしてホットキーラベルを渡したいということであれば
^a:: func(A_ThisHotkey)
func(label) {
msgbox, %label%
}
>>177 ありがとうございます!非常に助かりました
ControlSendってウィンドウタイトル指定すれば非アクティブなウィンドウでもキーが送れると思っていましたが
同じコードでも、アクティブでは動作、非アクティブでは反応なしでした。
非アクティブでは送れないものなのでしょうか?
181 :
167:2011/11/11(金) 10:11:59.32 ID:Q6n2+j0D0
>>168 どこかのサイトでAHKスクリプトはこまめにリロードしてくださいってあったんで
こういうことは案外普通にあるんだと思って詳細を省いてしまいました。すいません。
動かなくなるのはマウスボタンに割り当てたスクリプト全部です。
特定のスクリプトだけ、特定のアプリでの動作だけ、という感じではないです。
キーボードに割り当てたものは動き続けてます。マウスに原因があるんでしょうか?
こういうことって頻繁におきることですかね?
スクリプト晒した上で、何が動かなくなるのか具体的に書いてくれないと…
マウス関連は色々入れてるけど、たまに手動でリロードするくらいで
そうそうおかしくなることはないな
しょっちゅうリロードが必要な状態ってのはコードに問題があるように思える
入り口が別でも中で同じサブルーチンや関数通っててそこに問題がある場合もあるし
それか拾い物のホイールやマウスジェスチャを組み込んでない?
あれらは中で色々やってるので挙動が怪しくならないとは言い切れない
>一部の継続して使うスクリプトの動きが遮断され
ってのも気になる。これが悪さしてる可能性はないの?
あと、リロードで問題が生じるならこっちを別立てで動かすとか
だから、推測で言ってても流れてくだけだから
最低でもスクリプト無いと分からないって事なんじゃないの?
それで解決するかどうかは別としてさ
変数に好きな娘の名前つけてるから恥ずかしいんだろ。オレもそう
プログラミング言語に触ったことが無いと命名規則とかわからないしな
詳しい人に一通り書いてもらいたいわ・・・
こんなの作ったよってのがあるとすごく参考になるよね
0から作れって言うとほんとに判らないってこと多い
ちょっとかっこつけて聞きなれない英単語を使うと
意味がわかりにくく、スペルミスするorz
ところで作成した1つのGuiWindow内で
コントロール毎に背景色を変える事ってできますか?
gui,color,,000000
gui,add,edit,x10 y5
gui,add,edit,x10 y+5 -background
gui,show
こんな強引?な方法で2色はできるんだけども
ちゃんと設定する方法があったら教えてください。
加えてreadonlyとかdisabledの背景色も変更可能?
AutoHotkey_Lで
Ctrl+Alt 数字の1 Enterキー の入力で、Ctrl Ctrl F1 を実行するのは
どう記述すればいいでしょうか?
CPU切替器の切り替えコマンドを以前つかっていたものに変更したく
>>175 #IfWinNotActiveでできました どうもです
192 :
188:2011/11/12(土) 10:06:06.83 ID:/Jwk++vS0
>>191 Noooooooooooooooooooooooo! I hate dllcall!
自分も知識ないのでちょっと同意だけどw
これでできそうです。ありがとう!
Windows7やVistaなら腕立て100回な
今フォトショップのキーボード操作のスクリプトを考えています。
フォトショップはショートカットキーを押している時間によってショートカットの動作が違うのですが、
たとえば現在鉛筆ツールを選択してる状態で、矩形選択ツールを割り当てているショートカットキーのAキーを押したとして
1 Aキーをほんの数ミリセカンド押すだけだと、鉛筆ツールから矩形選択ツールに切り替える。
2 Aキーを押しっぱなしにしていると押しっぱなしにしている間だけは一時的に矩形選択ツールに切り替えるが、Aキーを押すのをやめた時点でまた鉛筆ツールに戻る。
と言った感じです。
この二通りの動作の1の動作を無効にし、代わりに2の動作をさせるようにしたいのですがスクリプトが思いつきません。
例えば最初の例のようにショートカット設定をしているとして
Aキーを一時ツール切り替えに必要な500ms未満の時間しか押していなくても500ms以上キーを長押ししたことにし、鉛筆ツールを矩形選択ツールに切り替えられないようにする。
Aキーを一時ツール切り替えに必要な時間の500ms以上押し続けたのなら通常通りのキー長押しの動作をさせて一時的に矩形選択ツールに切り替える。
という感じの動作をさせるスクリプトを書くにはどういった記述が必要になってくるんでしょうか?
http://www.autohotkey.com/forum/topic72364.html ここにあったスクリプトをためしてみたんですが、キーを押し続けた時間に応じて出力するキーを変えるだけなので、うまくいきませんでした。
>>195 全角スペース→半角置換
ウエイト時間は要調整(うちの環境では500msでは2にならなかった)
$a::
if (A_ThisHotkey!=A_PriorHotkey) {
Send, {a down}
ptim := A_TickCount
}
return
$a up::
sleep, % 1000 - (A_TickCount - ptim)
Send, {a up}
return
ホットキー駆動での押下時間チェック時の注意点はキーリピート
A_TimeSincePriorHotkey使おうとするとハマるので注意
押下時間チェックは KeyWait 使ったほうが楽だな
ただ複数キーのチェックなど割り込みを考えると↑の法がいいのかもしれんが
タスクバー上にカーソルがある場合って言語あります?
座標設定して・・っていう間接的なものより直接的なものがいいんですが
>>199 ^1::
MouseGetPos, , , hwnd
WinGetClass, wndclass, ahk_id %hwnd%
If ( wndclass = "Shell_TrayWnd" )
Msgbox, タスクバー上です
Else
Msgbox, タスクバー以外です
Return
どうもです できねぇなぁ
アッタマわるーw
>>174,178
#ifWinActive, ahk_class Notepad
^a::msgbox("^a")
sendkey(){
#usehook off
send, ^a
}
^q::sendkey()
↑のようにしてみたんですが、#ifwinActiveがあると動かないっぽいです。
やっぱり無理なんでしょうか。
ahkスクリプト読み込んで加工する外部プログラムを作って、
キー一覧をメニューで表示するahkスクリプトを自動作成できるようにしたいんですが
>>197 動きましたどうもです。
分からない記述らだけなのでもう少し勉強します。
ありがとうございました。
>>203 Mousegesture.ahkのように設定をiniファイルに保存、
キー一覧はiniファイルから読み込み、
スクリプトもiniファイルを読み込んで自動生成するとか?
例えばiniファイルにはこんな感じで保存。
sckey1 = ^a
sckeyname1 = msgboxでhoge1〜3を順番に表示
script1 = msgbox,hoge1【TAB】msgbox,hoge2【TAB】msgbox,hoge3
生成されるスクリプト ※スクリプト生成時は【TAB】を改行とする。
^a::
msgbox,hoge1
msgbox,hoge2
msgbox,hoge3
return
ショートカットキー一覧をTooltipで表示
tooltip, %sckey1% " = " %sckeyname1%
206 :
43:2011/11/13(日) 20:38:39.09 ID:knbvSLuF0
>>135 のどかで使ってる DLL の API を教えてもらえたら、そいつを AHK から使えるんじゃない?
209 :
名無しさん@お腹いっぱい。:2011/11/15(火) 06:38:25.41 ID:0e+JGbSz0
特定のボタンのクリックを無効にしたいのですが
MouseGetPosではClassNNが変動した場合
別のボタンが無効化されてしまう事があります
特定位置のクリックを無効にする方法は
別のタブのボタンも巻き込んでしまいます
そこでテキストでクリック判定しようとしましたが上手く行きません
クリックしたボタンのテキストを取得して判定するにはどうしたらよいでしょうか?
対象ソフトはGOMの環境設定-再生-移動-時間移動単位-初期値ボタン
AutoHotkey 1.0.48.05
です
ControlGetText
もしくは
MouseGetPos, X, Y, hwnd, chwnd ,2
WinGetText,caption,ahk_id chwnd
Control系はClassNNの代わりにボタン名もサポートしてるよ
環境設定画面開いた瞬間に
Control, Disable,,ボタン名
でボタン自体押せなくしちゃうほうが楽だと思うが
GOM入れてないから分からんが起動中にClassNN(Zオーダー)や
ハンドルがころころ変わるタイプのアプリなの?
211 :
名無しさん@お腹いっぱい。:2011/11/15(火) 12:59:41.91 ID:0e+JGbSz0
ClassNNが変動しない物は
LButton::
MouseGetPos, , , , OutputVarControl ,
IfInString, OutputVarControl , Button12
{
}
else
{
Click, LEFT, Down ,
}
return
;X Wheel NT での左を使うジェスチャを使えるように
LButton Up::
Click, LEFT, Up ,
return
で済んでいるのですが・・
Control, Disable,,初期値 では上手く行きませんでした
WinGetTextで特定のボタンを指定して
押さない様にする方法が分かりません・・;
左列の別項目を開いた後に設定ウインドウを閉じて、
もう一度開くとClassNNが変動してしまいます
Mbutton::
CoordMode, Mouse, Window
MouseGetPos, ClickX, ClickY, WindowUnderMouseID
WinGetPos, x, y, w, h, ahk_id %WindowUnderMouseID%
if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)
send,!{F4}
else
Send {MButton}
return
#ifwinactive
#IfWinActive ahk_class QWidget
Mbutton::space
#ifwinactive
このスクリプトの組み合わせで使ってるんですが、Notepad++などの開いているファイルをタブで管理するアプリ上で
ミドルクリックをタブ上で押すと押し下げと押し上げそれぞれでミドルクリックが押されたことになってしまって、ミドルクリックが二度押しされてしまいます。
原因はなんでしょうか?ちょっといじってみたんですがこの記述の
Send {MButton} を Send {Mbutton Down}
に変更するか
Mbutton::space を Mbutton::send,{space}
に変更することで二度押しされなくなりますがどうしてそうなるのかがわかりません。
>>208 usbデバイス毎に処理を切り替えるっていうのは
たしかautohotkeyのフォーラムのどこかのスレッドにあったよ
利用する立場にないからそんなものかと流し読みしていたけど
>>207 なんだろ、これ。
小さい頃、こういう勉強おもちゃがあった気がする
教えてください。
一定時間たったあと音を鳴らしたいのですが、
Q1.相対パスで書くにはどうしたらいいのでしょうか?
Q2.一定時間待っている間、ほかのautohotkeyでの動作に影響はないのでしょうか?
F1::
sleep, 1000
SoundPlay, %A_WorkingDir%sound\pon.wav
return
としようとしてるのですがだめっぽいです。
autohotkeyのインストールディレクトリにつくったsoundという
フォルダのなかにいれた音声ファイルを再生したいです。
また、時間を待つ方法ってsleepしかないのでしょうか?
sleepを使うとその待っている間、ほかのautohotkeyのスクリプトの
動作が鈍るような勝手な思い込みがあるのですが、大丈夫でしょうか?
SoundPlay, %A_Scriptdir%\sound\pon.wav
でどうかね。
こういうミスの原因を探すにはまず音が鳴る鳴らない以前に
msgbox,%A_Scriptdir%\sound\pon.wav
とやって、自分が設定した変数に間違いが無いかを探す癖をつけるとよい
>>217 ありがとうございました。
成功しました。どうして %A_WorkingDir%じゃダメなんだろ。
msgbox等で探す癖をつけるようにします。初心者質問スレがほしい。
教えてもらったのに何故試さないんだろう
msgbox,%A_WorkingDir%
してみれば即分かると思うが
ヒント:末尾\
>>219 いまやったら成功しました。
たしかに末尾の¥忘れてました。指摘ありがとうございます。
でも前やったときは末尾の¥のあるなしやってみて両方失敗してた。
末尾に¥があるのが正しいんですね。
例えば5分間マウスカーソルが動かなかったらPCを休止状態にする、みたいなことをしたいんですが
マウスカーソルの動作を監視するにはどうすればいいんでしょうか?
>>221 #InstallMouseHook
SetTimer, MouseIdleTime, 100
return
MouseIdleTime:
ToolTip, %A_TimeIdlePhysical%
return
223 :
名無しさん@お腹いっぱい。:2011/11/17(木) 10:08:17.06 ID:caa7yBCY0
Control, Disableに対象ソフトのタイトル入れ忘れてました・・・
どうりで効かなかった訳ですね
解決しました、ありがとう!
225 :
名無しさん@お腹いっぱい。:2011/11/17(木) 10:59:56.45 ID:uLGkQT6w0
マウスクリックが特定のウィンドウ内かどうかを簡単に判別する関数はないの?
YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
/ \
【探した?】 NO → なら、ねぇよ
\
NO → 死ね
227 :
名無しさん@お腹いっぱい。:2011/11/17(木) 12:57:09.32 ID:uLGkQT6w0
自分で探して見つからなくても、見落としの可能性もあるから、
人に聞いてみることには価値がある。それが分からんとしたら、
お前、かなり低学歴だろw
質問するなら答える気になる聞き方するんだな
教えて君にしか見えない聞き方するから煽られるんだよ
229 :
名無しさん@お腹いっぱい。:2011/11/17(木) 13:18:38.99 ID:uLGkQT6w0
質問の仕方については質問してないんだが?w
判別する方法だけなら少し上にほぼ同じ事例が話題になってるし、
どうしても関数化したいなら勝手にすればいいだけ
つまり
>>225に対する回答は「あるよ」で終了
まあ煽られて当然の人間だったってことだなw
>>222 できました。どうもです。
>>231 そんなんおかしい。そもそも質問スレで質問者を煽る必要がない。
煽りを目的にする人間ばかりになったらどんな質問者も難癖つけらてしまう。
自分もそうなっていたらと考えると怖いね。
ここって質問スレだったんだ
>>232 質問中の煽りは(それがどんなに理不尽だろうが)スルーするのが質問者の鉄則
煽りに反応するような面倒な質問者には他の人間も答える気はなくすよ
226だって本人が反応してなきゃ嗜める住人だっていたかも知れないのに
あとここ質問OKだけど「質問スレ」じゃないから
すまん 別スレみててごっちゃになった。ここは質問スレじゃないわ。
>質問中の煽りは(それがどんなに理不尽だろうが)スルーするのが質問者の鉄則
これはわかる
けどむかつくでしょ 質問者は口答えできないってわかってて煽りに来る奴。
質問者を狙ってストレス解消に来る奴がいなけりゃスレも荒れずに進行する。
なんで煽る側は叩かれないのか。自分が質問する側にまわってこんな目にあるのは嫌でしょう。
住人は教えて君の厨質問にはうんざりしてるんだよ
厨じゃない質問者が煽られてる時は都度フォロー入れてやればいい
226に関しては最初の段階でダメ出しされてもしょうがない聞き方してるし
その後のレスでフォローに値しない人間なのはわかるだろ
過度の自治はかえってスレを腐らせるだけだぞ
>>235 基本的に煽ったりする奴は欠陥人間だから。
まずそれを理解しろ
こんな奴らに煽られてもむかつく訳がない
あと煽る側は叩かれないのではなくて、
今回は「煽る人たち」が質問者を叩いてるだけ
煽る人たちはスレ住人だから、外様の質問者を叩きやすい傾向はある
基本的にレスは質問者の鏡
質問者の質と同じ質の回答がレスされる
ID:uLGkQT6w0を見ても明確
煽られて反応するような糞質問者には
煽るだけのレスくれる糞回答者がレスしてる
つまり糞どものフォローするのは勝手だが、
それは誰の賛同も得にくいから止めてくださいってことです
ムカつかせてバカな反応を引き出すのが煽りの目的だと言う事すら理解出来て無いのか?
反応するバカが居るから煽りも居続けるんだぞ
もっとも、バカな質問者に対して適切な煽りと言うパターンもあったりはするが
AHKのコマンド名が含まれていないレスは総じてゴミ
>>216みたいに、自分でやって、ダメだった過程を晒せばいいんだよ。
そうすりゃ、住人の負担も最低限ですむし、将来ログを見る人も
何が悪かったのか参考にできる。これが成功例。
その過程がない場合「どうやんの?」「これってできます?」系は、たいてい
「楽して添削させるどころか丸ごと作成させるとか、不届きもんだな」
って感情になって、互いに得るものが無く、質問者も回答者も不愉快で誰得で終わる。
スレをみてりゃ、この流れはずっと続いてるわけで、いまさら始まったことでもない。
この流れを読めない(知らない)ってことは、過去ログもろくに見ずに質問したってことだ。
その時点で失格。
全ログを張り付いて参照しろとまでは言わないが、
有効な回答を得られている質問レスには、ちゃんと定石があることを理解すべき。
個人的な感覚を言えば、煽るやつは悪いやつだと思う
答える気がないなら黙ってろ
煽られるような質問をするやつは、悪いことをしてるわけじゃないがバカだなーと思う
質問に答えられない、答える気はないが煽る気はあるって人間がたくさんいるのが匿名掲示板
>答える気がないなら黙ってろ
そうやって皆がスルーしてたら、アドバイス総無視したあげく「日記」と銘打って解決の糸口にも
何にもならないムダなだけの独り言を延々と書き込む構ってちゃんが前スレに湧いて皆が苦い思いをした
別のアプリスレには荒らしや選民意識が強く新参や質問者をやたら叩く住人がいるところもあるだろうが
このスレに限っては、煽られる奴には煽られるだけの理由がある場合がほとんど
中には226のチャートや<分からないn大理由>をコピペ乱発する奴もいるが
まともな質問者相手の時はちゃんと突っ込みが入るし、
大抵は煽りながらも答えの得られやすい質問の仕方指南してるツンデレレスだよ
>>245 確かにこのスレの住民は比較的穏便な印象があるな
雰囲気も落ち着いていると思う
その住民を怒らせたんだから推して知るべし
>>8-10 何かを作ろう調べようと思ったら
ここの過去ログを適当なコマンド名で検索
それで見つからないのならフォーラムを関連してそうな単語を2-3入れて検索
で、たいていの場合は何とかなる
正直聞くよりも手間がかからず早い場合が多い
それでもどうしようもないのなら
>>242にあるように該当部分を添えて聞くしかないけどね
てか、もうあれだ、すべてのレスの先頭か最後に
>>8-10って入れればいいんじゃないか、と
>>8-10
そうはいってもほんとに簡易なコマンドしかかけない人にとっては
取りつく島がほとんどないからね
AHKがメジャーで初心者スレとか分別されてるのならいいんだけどね
いや、大体つっぱねられてるのは簡易なコマンドすら"書かない"ヤツ。
超初歩的な質問でも自分が何やりたいか、やったかを書いてる親切な質問には
大抵親切な回答が返ってくる。
コピペや皮肉すらも受け付けない奴は2chじゃなくて知恵袋にでも行くべき。
スレが1つだからって全部を面倒見る必要はないよ。
まぁどんなに議論したって厨質問も煽りも無くならないだろうけど。
#include の引数についての質問です
[AutoHotkey.dll] AhkDllThread+AhkDllObject+AhkExported
http://www.autohotkey.com/forum/topic60630.html を見ると
#include <FileGetVersionInfo>
こういう設定がありますが、 <FileGetVersionInfo> という表記は何をさして居るのでしょうか
#include のあとはファイル名を拡張子を含めて記述する必要があると思っていましたが
そうする以外にファイルを読み込む方法があるということでしょうか
>>252 ありがとうございます。
[L57+]の機能だったのですね。やっと分かりました。
2点質問させて下さい。
1,タイトルバー上でホイールupで最小化させたくて
WheelUp::
CoordMode,Mouse,Screen
MouseGetPos, x, y, h
SendMessage,0x84,0,% x|y<<16,,ahk_id %h%
If((ErrorLevel=2) && WinActive("ahk_id " . h)){
WinMinimize
}
return
このように書いたのですが、
タイトルバー以外でホイールupが効かず困っています。
どこが間違っていますでしょうか。
2,タスクバー上のボタンで同じ操作を(出来ればトグル)させたいのですが、
タスクボタンの指定がよくわかりませんでした。
テスクボタンの判定は出来ますでしょうか?
よろしくお願いします。
困るというか書いてあるとおりに動いてるんでしょ。
(無条件で)ホイールUpは以下の処理をしろ:
マウス直下の情報を調べる
もしタイトルバーの上のいたら
最小化
終わり
なので、
@
(無条件で)ホイールUpは以下の処理をしろ:
マウス直下の情報を調べる
もしタイトルバーの上のいたら
最小化
それ以外
再度同じホイールUpを送る
終わり
A
(もしタイトルバーの上にいたら)
ホイールUpは以下の処理をしろ:
最小化
終わり
にする。
@はElse書いて再度Send
Aは #If で判定処理を関数化したのを呼べばいい
1.1.05.02 - November 20, 2011
Fixed false detection of end-of-file when loading a compiled script in some cases.
Fixed SendInput to automatically release modifier keys when sending special characters or {U+xxxx} (which was broken by v1.1.00.01).
Fixed ComObjConnect to filter out non-dispatch interfaces instead of allowing the script to crash.
Fixed new %VarContainingClassName%().
ウィンドウがアクティブになった順番って取得できる?
alt+tab の切り替え順だから、どこかに記録はされてると思うんだけど・・・
SetFormat, Integer, h
hWnd := WinExist("A")
Loop, 1000
{
hWnd := DllCall("GetWindow", Ptr, hWnd, Uint, 2)
If (DllCall("IsWindowVisible", Ptr, hWnd))
{
WinGet, ProcName, ProcessName, ahk_id %hWnd%
WinGetClass, WinClass, ahk_id %hWnd%
List .= ProcName "`, " WinClass "`, " hWnd "`n"
}
}
MsgBox, %List%
こう?
>>258-259 確かに、いろいろタスクバー上にはない奴がついてくるな
cccとか
ブラウザのタブ感覚でタスクの切り替えがしたかったんだが(#hでタスクバー上のひとつ左のタスク、とか)、
この方向のアプローチは難しそうだな・・・
現在のアクティブウィンドウのタスクバー上での位置が取得できればcontrolclickでなんとかなりそうだけども、どうだろう
ひとこと礼ぐらい言えんのかよ
ああっ、すみません!
ありがとうございました!
ブラウザのタブ感覚でタスクの切り替えがしたいってのは、
要するにalt+tabの切り替えで表示されるアイコンやらなんやらが邪魔で
ボタンを押した瞬間に即、次のタスク次のタスクと移っていきたいってこと?
ブラウザなら、
[タブA][タブB][タブC][タブD]
↑今ここがアクティブ
って状態で、^HでタブAに、^LでタブCに、って移動できる
同じように、タスクバー上で、
[ie][word][excel][wmp]
↑今ここがアクティブ
って状態だったら、#Hでieに、#Lでexcelに、移動できたらな、と
alt+tabは、押し下げて初めてタスクの並び順が表示されるから、
alt+tab → 真ん中に出てくるタスクの並びを視認 → 何回押すか判断 → 切り替え
ってなってしまう
タスクバーなら常に表示されてるから、何回押すとか考えなくていいかな、と
どーでもいいけど
大抵の物は過去ログかフォーラムにあるよね
車輪の再々々々々々々々々々々発明で凹む
タスクボタンをブラウザのタブになぞらえて操作したいってことか。
なら、ウィンドウがアクティブになった順番は関係なくね?
したいことはXPならタスクバーの情報を取得すれば出来そうだけど。
>>264 AutoHotkeyJpのRegisterCallback()のサンプルを参考にした。
これで一方向にはたぶん切り替えできる。逆方向もがんばればできると思う
#h::
If not EnumAddress
EnumAddress := RegisterCallback("EnumWindowsProc", "Fast")
DetectHiddenWindows, On
DllCall("EnumWindows", UInt, EnumAddress, UInt, 0)
WinActivate, ahk_id %task%
DetectHiddenWindows, Off
return
EnumWindowsProc(hwnd, lParam)
{
global task
if ( DllCall("GetWindow", "UInt", hwnd, "UInt", 4)==0
&& DllCall("IsWindowVisible", "UInt", hwnd)==True
&& DllCall("GetWindowTextLength", "UInt", hwnd)>0
&& DllCall("FindWindow", "Str","Progman", "Str", "Program Manager")!=hwnd )
task := hwnd
return true
}
Vista以降ならWin+数字の方が素早くアクセス出来る気もするが
すげえwこんなショートカットキーあるんだ
>>264 win+T で駄目なん?
おれも同じことしたくて考えたんだけど
win+T を一つのボタンに充てて
タスクバーがアクティブになってる状況下で
スクロールで左右移動できるようにした
最後に決定するボタンが用意できればそれができるんじゃない?
>>271 最後の一行は余計だったな
あくまでも自分の例として
ライブラリを書いてて、意味不明なエラーが取れないなぁと悩んでたら
新しく作成したスクリプトファイルの文字コードがShift-JISだった
こんなことに1時間も……
エクスプローラのウィンドウをクリックしてアクティブ化したときに、
そのウィンドウで表示中のディレクトリのフルパスを取得したいんですが、
どうしたらいいでしょう?
>>275 うわぁぁ、即レス、本当にありがとう!!!
こんな的確なレスが10分後に付くなんて
ネットで今まであまりない体験です
数時間格闘したけど自分には無理だったけど
やっぱこのぐらいやらないと無理だったのね。。。
return が小文字なのが気になる
と思ってこのスレの中を検索してみたらほとんど小文字だった
もしかして大文字で書くのはド素人なのかorz
スクリプトエラーを表示しないことってできる?
コンパイルしてexeファイルにできるのはいいけれど、
万が一なにかエラーが起きたとき、スクリプト見られちゃうのが気になってしまっていて。。。
#IfWinActive,aaa
ならAHKの一切の設定をそのウィンドウがアクティブな間だけ
無効にすると言った記述方法があったら教えて下さい。
すいません。おしえてください。
#IfWinActive, ahk_class うんちゃら でホットキーをAHKをつかって割り当てているのですが、
同様のホットキーが沢山あるので
#IfWinActive, ahk_class うんちゃら または へんちゃら
F1::^F1
みたいにおまとめで書くことはできないのでしょうか?
同様のホットキーしかつかわないのに
#IfWinActiveの項目をいっぱい作ってしまうのがなんか気になってしまいまして。
スクリプトをみるときにすごい下までスクロールするのが気になってしまいまして。
勝手ですが、よろしければ教えていただきたいです。
>>94って、組み込み変数になってもよさそうだけど
向こうのフォーラムとかで、実装してよって話題になったことないの?
group
>>277 自分でいじるだけなら見やすければ何でもいいと思う
ただ一貫してることが一番大切
>>280 JAVA製ソフトの一部のダイアログでIME.ahkが動作しないんだが同じ問題かな
こうなった以上は本田の魅力を100%伝えられる交渉人を雇って
さっさとバルサに移籍してトップ下で究極のパスサッカーを目指すしかないな。
>>284 >>285 ヒントありがとうございます。
ぜんぜんわかりませんが、それを手がかりにちょっと調べてみます。
>>287 >>289 となると、IME.ahkの動作のうち、IMEのon/offはそれなりに問題無いけど、
変換中の処理についてはimm32とtsfで食い違う部分があり、
IME.ahkはこういう意味でimm32にしか対応していない
こういうことかな
ここのスレは2chの中でも屈指のレベル。すごいよこのスレ。
すごい人が1人ずっと常駐しているだけかもしれないけど。
「すごい人が1人ずっと常駐しているスレ」は2chでは全然珍しくないけどなw
何が凄いのか分からん
AHK以前にプログラミングに精通してる人が何人かいるっぽい
英語アレルギーある身としては公式フォーラムネタで盛り上がってるだけでも
皆スゲーなって思って見てるわ
TSF を使う (1) - Windows Input Method の歴史 - NyaRuRuの日記
http://d.hatena.ne.jp/NyaRuRu/20070309/p1 TSFのほうが仕様としては新しいんだけど不具合多くてあまり移行は進んでないらしい
ATOKが11でTSFに対応して主要IMEはだいたい対応終わったのかな
一方でgoogle日本語入力はTSF捨ててIMM32使用に変更になった
個人的には訳のわからないエラー落ち出なくなったしこのままでIMM32でいいじゃん、と思う
ウィザード級プログラマーの私も通りますよ
ウィザードリィならプロ級の凡人AHKマーの私も通りますよ
もうすぐ魔法使いになる私も通ります…
ィ`
俺はAHKのおかげで身長伸びたし宝くじは当たったし彼女もできた。
こうですか!? わかりません><
FileMove, %299%宝くじ, %298%
FileMove, %299%彼女, %298%
FileRemoveDir, %299%, 1
引数に1を指定しているところに、ジャイアニズムを感じざるを得ない
autohotkeyのスクリプトを作成する外部ツールを作成したのですが(not autohotkey)、
このスクリプトのソース(複数)をautohotkeyをインストールしていないパソコンでも実行させたいです
autohotkey.exe の引数にそのソースを指定して起動させることを考えましたが、
autohotkey.exe は一度に一つしかプロセスを起動できないとどこかで読んだ覚えがあります
コマンドプロンプトを起動して ahk.exe source1.ahk で source1を実行
この実行中に続けて ahk.exe source2.ahk で source2 を実行
こんな風にしたいのですが、
それを満たすようなahk.exeを作る方法はあるのでしょうか
どこかで読んだ覚えがあるなしに、なぜ試してみなかったのかが大いに謎
多重起動抑制は同一スクリプトだけだろ
それだって #SingleInstance で避けられるっちゅーに
動作を確かめてみたら問題無く起動できました
お騒がせしてすみません
^+q::Send,{Ctrl 2}{F1}
F1でHELPが立ち上がらないようにするにはどうすればいいでしょうか?
こりやエスパーが必要だな
F1:: return
普段使ってるテキストエディタが
F1で選択した文字列をヘルプで検索できるやつ
それとは別にCtrlをダブルクリックしたら
webとか辞書とかを検索できるソフトをインストールしてる
で、選択した文字列を後者のソフトで検索したいんじゃないか
>>306 操作したいソフト名
具体的な処理手順
最低でもこの2つは書くべきでは
>>308が求めているもののような気はするが
どういう神経してたらこういう、回答者に対する配慮のかけらもない質問ができるんだか
コミュ障なんだよ。ひどい事言わん解いてください
すんませんでした。
いい感じにしたいのですが・・・・
フィーリングでやったらいいよ
できまた。ありがと
Hotstringをホットキーみたいにアプリケーションごとに設定することはできないのでしょうか?
もうネタとか釣りとかそういう類だよなこれ?
残念ながらマジだよ
今年は暖冬なのに、冬休みだけは早いんだな
変数を%%で挟む場合と、そうしなくていい場合の区別がよくわからない
変数の中身に用がある場合にだけ%%で挟んでやるって感じでいいのかな
>>321 =と:=での違い
a = %var%
a := var
コマンドと関数での違い(括弧の有無)
fuga, %var%
fuga(var)
プログラミング言語をしらずautohotkeyから入った人がつまずくポイントだと思う
これが結構重要
他の言語では評価 evaluation という話だね
a := b は b を評価してaに代入するけど、
a = b は bを評価せずにbという文字そのものをaに代入する
a = %b% は bを評価してaに代入する
たとえば
a := a_tickcount
では、autohotkeyの定数(ユーザーが変更できない値) a_tickcount を評価して a に代入する
a にはos起動からの経過時間(数値)が入っている
a = %a_tickcount%
でも同様
a = a_tickcount
こうすると、a_tickcount という文字列そのものを a に代入する
で、
>>321だけど、ここまでの説明が分かれば、%%で挟む場合の動きが分かるかと
例を出すから、どのように動くかまず予想し、それから実際に動かしてみて
loop,10
my_%a_index% := a_index * 2
t := ""
loop, 10
t .= my_%a_index% . "`n"
msgbox, %t%
ごく一部のアプリケーションでしかキャレット位置の取得がうまくいかない
特にfirefox でやりたいんだがどうにかなりませせんか?
c::mousemove,%A_CaretX%,%A_CaretY%
基本は諦め。
どうしても諦められないなら、「なまずIME」とか
ユーザ補助(スクリーンリーダ)とかのAPIとか調べるとどうにかなるかもしれない。
俺はどうにもならんと諦めたけど
firefoxならvimperatorとかgreasemonkeyとかのjavascriptで何とかなるかも
スクリプトのタスクトレイアイコンを個別に変更したくて色々やってまして
いま使ってるスクリプトがこれなんですが
#Persistent
Ico :="C\myicon.ico"
Menu,Tray,Icon,%Ico%
これだと通常のアイコンは変更できてもPauseとSuspend状態のアイコンが変更できないのです。
何かいい方法はないでしょうか?
コンパイルしていいならCompile_AHK.exeを使うのが楽
スクリプトのまま使いたいならサスペンドとかしてもアイコン変わらない設定にして、
ホットキーでサスペンドする前にMenu,Tray,Iconのコマンドを入れる
トレイメニューからサスペンドするならトレイメニューを自前で用意する
下段2行目、
コマンドで別の用意したアイコンに変更するって意味
332 :
名無しさん@お腹いっぱい。:2011/12/05(月) 14:18:46.01 ID:as4sHQAq0
1
333 :
名無しさん@お腹いっぱい。:2011/12/05(月) 14:30:27.18 ID:as4sHQAq0
間違って送信してしまいました
if(it := hoge - foo){
msgbox %it%
}
のようにifの条件部分の結果を{}内でitで使えるように、
it := なしで設定する方法はありますか
このようにしたいです
my_if(hoge - foo){
msgbox %it%
}else{
msgbox error: %it%
}
334 :
名無しさん@お腹いっぱい。:2011/12/05(月) 15:30:11.38 ID:yNTsEj6FP
久し振りに書かせてもらいます。最近、rainmeterというものを勉強しているのですが
rainmeterとautohotkeyって直接つなぐことってできるのでしょうか?
rainmeterはまだ英語ページが多くて、いまいち理解できないのですが
最初は両社には特になにも関係ないソフトなので
VBSでキープレスでもはさんでやろうと考えていたのですが、
検索しているうちになんか同じことをするのに
中間に入れるものはなくていいのかなと
思えるようになってきました。同じこと考えている方いませんでしょうか
A_ThisHotkeyから修飾キー(shiftとかaltとかを除外した素のキー)を取り出してSendすることはできないでしょうか?
Ctrl + アルファベットをCtrlなしのアルファベットにしてSendしたいのですが。
↑ちょっと文がおかしかったです。
A_ThisHotkeyから修飾キー(shiftとかaltとか)を取り出して
素のキーをSendすることはできないでしょうか?が正しいです。
すいません。またおかしかったです。
A_ThisHotkeyから修飾キー(shiftとかaltとか)を除外して、修飾のかかっていない素のキーにして
Sendすることはできないでしょうか?が正しいです。
StringReplaceやRegExReplaceで修飾キー削ればおk
^esc::
msgbox,test
send,hoge
return
このスクリプトを書いたあとでexe化してから、
^escにあたる部分を任意のキーバインドに変更したり追加する方法はあるでしょうか
理想としては、key.txtに一行ずつ書いてあるキーの情報、たとえば
^@
^/
これをもとに
^@::
^/::
msgbox,test
send,hoge
return
こう動作させたいです
Hotkeyコマンド
Hotkeyを使えばいいんじゃないかな
あ、被ったすまん
345 :
341:2011/12/07(水) 23:19:53.12 ID:+dIy4TZU0
ありがとうございます
探していたとおりの機能す
msgbox, % LTrim("s_su", "s_")
この結果がsuではなくてuになるのですが
バグでしょうか?
autohotkey_lの最新版です
バグじゃない。仕様どおり。
マニュアルをもう一度見て。RTrim も試してみるといいよ
349 :
名無しさん@お腹いっぱい。:2011/12/08(木) 18:05:24.90 ID:Y9/a5hqZ0
ControlSendで質問です。
InterVideo WinDVDにビデオデスクトップという機能があります。これは再生中の画面を壁紙のように再生する機能。
PC付属リモコンだとメニュー画面ではリモコンの→ボタンや決定ボタンが働きデスクトップ上でメニュー操作ができます。
ところがリモコンが壊れましたのでAutohotkeyでやりたいのですが、ControlSendコマンドではうまく行きません。
本家?で下記のサンプルがあったのですが
#n::
DetectHiddenWindows,On
ControlSend,,^n,ahk_class SomeApplication
return
しかし本家でもキーストロークを送るのはsendコマンドと書いてます。
メモ帳に文字を書く実験は成功したんですが、、、、
どうやって非アクティブでかつ最小化状態のアプリにキーストロークを送ればいいでしょうか?
ControlSendは特殊修飾キーを無視したような、、、、
やはりSendでしょうか?
小遣いup大作戦問題と同じような質問です
>ahk_class SomeApplication
とりあえずClass名調べるところから始めようか
アクティブウィンドウが切り替わった時点で
Loop処理から抜けたいのですが
SetTimerで監視する以外に何か方法ってありませんか?
352 :
名無しさん@お腹いっぱい。:2011/12/08(木) 20:29:33.34 ID:Y9/a5hqZ0
ahk_class WinDVDClassだと思いますが
>>350 それが間違ってるからダメなんでしょうか?
353 :
名無しさん@お腹いっぱい。:2011/12/08(木) 20:32:49.77 ID:4oGSglAl0
Menuの字体や字の大きさを変えたいのですが、どうしたらいいんでしょう?
>ControlSend,,^n,ahk_class SomeApplication
>小遣いup大作戦問題と同じような質問です
>ahk_class WinDVDClassだと思いますが
>>350 何言ってんだかさっぱりわかんない(´・ω・`)
なんで実際に試したソースじゃなく要改造とわかってる汎用サンプルをそのまま貼るのかしら
これでコントロール名を指定しろって書いたら
(control名)って入れてますけど間違ってるんですか、とか返ってくるんだろうなー
>>351 どういう状況で使いたいのかわからんけど、Loopに入る前にアクティブWindow取得して
Loopの最初に変更チェックすればいいだけならこんなのとか
WinGet, hwnd, ID, A
ActiveID := hwnd
Loop
{
WinGet, hwnd, ID, A
If ActiveID != %hwnd%
Break
ToolTip, %A_Index%周目
}
Msgbox, アクティブWindowが変更されたのでループを終了しました。
Return
>>349 うちはWinDVDじゃないからアレだが、
ControlSend, ahk_parent, ^n, ahk_class WinDVDClass
で試してみ?
357 :
名無しさん@お腹いっぱい。:2011/12/09(金) 09:09:52.83 ID:EhplqjVEO
>>356 ありがとうございます。朝一遅刻恐れながらやってみました。
撃沈(笑)。急いだから間違ったかもです。
夜落ち着いてやってみます。
レスありがとうございました。
>ahk_parent
Lにはこんな指示名もあるのん?
横からだが、いまだ本家使いなんでちょい気になった
359 :
名無しさん@お腹いっぱい。:2011/12/09(金) 10:55:34.42 ID:EhplqjVEO
Lの話すか?”(ノ><)ノ
トラックボール用 左CLICK+ポインタ下移動でホイール下になる
スクリプトに定番ってある?
TrackWheel
ThinkPadのトラックポインタエミュだからデフォは中クリック割当だけど設定で変えられるはず
本家っていうけど、前に作者ちゃんが
Lが後継だからそっち使ってね
とか言ってたと、ここで読んだ気が
まあ本家サイトのダウンロードのリンク先の1番目がautohotkey_Lだから
本家本元を引き継いだ、って理解でいいかと
ただ、以前の本家時代のautohotkey用にいろんなスクリプトが作られたから、
互換性の説明の上では本家と_Lを常に区別するというのも
合理的かと
364 :
名無しさん@お腹いっぱい。:2011/12/10(土) 03:59:46.97 ID:auX0M5WLO
基本的なスクリプトもLで作動しない事あるんすか?
本家というとLが分家で傍流みたい
ということなら
元祖でおながいします
366 :
名無しさん@お腹いっぱい。:2011/12/10(土) 09:05:01.96 ID:auX0M5WLO
じゃ先祖で
367 :
名無しさん@お腹いっぱい。:2011/12/10(土) 09:05:52.85 ID:auX0M5WLO
バカボンすまん
今のは忘れてくれ
368 :
358:2011/12/10(土) 09:12:55.33 ID:f0lr5S6O0
本家終了L主流の見解でおk、ここに貼られるスクリプトもだいぶ前からL前提の流れだよ
自分は単に乗り遅れ(まさか本家が終了すると思わなかった&Unicode対応面倒)で
古い本家のまま放置なだけ
ちなみにahk_parentは日本語版じゃない本家ヘルプで検索かけたらControlSendの項目で出てきてました
なんでL固有の指示名ではなかったですね、お騒がせして申し訳ない
369 :
名無しさん@お腹いっぱい。:2011/12/10(土) 10:29:35.14 ID:7VJFIPVd0
言われてみると本家って書くとまだ本家が生きてるみたいな印象を受けるな
んじゃ旧型?
371 :
名無しさん@お腹いっぱい。:2011/12/10(土) 16:06:32.12 ID:auX0M5WLO
ところでLはそれでマジに最小化したアプリにキーボードショートカット送れるんすか?
>>372 ちょうど旬ネタだし、せっかくだから ahk_parent 試してみてくれい
374 :
名無しさん@お腹いっぱい。:2011/12/10(土) 18:24:33.57 ID:auX0M5WLO
まずは海外のサイトみたいにWinampで試そうかな
>>356 あれ?ahk_parentって Last Found Window にキーを送るんじゃないの?
なんで、 ahk_class WinDVDClass が?
376 :
名無しさん@お腹いっぱい。:2011/12/12(月) 14:30:20.26 ID:3HNuOOiIO
考えてみるとWinDVD5をビデオデスクトップ状態で簡単にリモコン操作させた
リモコンマネージャーの富士通が偉く見えた(笑)
377 :
名無しさん@お腹いっぱい。:2011/12/14(水) 18:26:51.21 ID:3KzXIyMbO
もしや誰もできないとか?
独り言をつぶやく変な携帯がいるな
ん?見えないがなんか湧いたのか?
日記の人注意報
381 :
名無しさん@お腹いっぱい。:2011/12/16(金) 09:18:23.76 ID:r0WPlcIgO
これ付属のレコーダってもしや変換前のキーストロークまで記録してます?
知恵をお貸し下さい。
置換マクロを作っていて以下のようにしているのですが、これだと非効率に思えます。
$:=RegExReplace($,"\$(\w)",%$1%)
では変数参照せず、上手くいきません...
番号振ってloopする以外で何か方法はないでしょうか?
StringReplace,$,$,$p,%p% ,1
StringReplace,$,$,$d,%d% ,1
StringReplace,$,$,$n,%n% ,1
StringReplace,$,$,$e,%e% ,1
StringReplace,$,$,$l,%l% ,1
StringReplace,$,$,$i,%i% ,1
なにがしたいの?
問題なく動いてるのならそれ使えばいいし
どうしても0.1秒以下でも非効率と感じるなら自分で考えたらいい
>>382 $ := "sample $p $d"
p := "sampleP"
d := "sampleD"
n := "sampleN"
e := "sampleE"
l := "sampleL"
i := "sampleI"
tmplVars := ["p", "d", "n", "e", "l", "i"]
for key, tmplVar in tmplVars {
tmplVal := %tmplVar%
StringReplace,$,$,$%tmplVar%,%tmplVal%,1
}
MsgBox,% $
オブジェクトに入れて回すほうがいい気もする。
あとこの置換は副作用あるよね。
$で文字列を配列に分割して2番目以降の要素の先頭文字が
対象の変数名なら置換する感じが本当の正解じゃないか。
コールバックつきの置換があればいいんだが。
ゲーマーではないけどLogicoolのゲーミングマウス G300とか言うの買ったら
拡張ボタンが一気に6個に増えた。
もう何していいんだかさっぱりわかんねw
>>386 G700で拡張ボタンをモディファイアにして増やしてたら
アプリ共通のマウス設定だけで50超えたよ
いつの間にか使い切るってw
指定したファイルをダウンロード中に
何パーセントダウンロードが完了しましたというGUIを
作成できるでしょうか
ご用意しております。
構造体って初めて聞いたんですけど
VarSetCapacityで変数をちょっと加工してから
DllCallでChooseColor関数に渡せばいいみたいですね
勉強してみます
ありがとうございました
Loop,% n
今はnにありえない回数を指定したり分岐で対応してるが
nに何かを入れてCountの省略と同じ無限ループにするのは不可能かな?
調べたらLでWhile使えるようになってたんだな知らんかった
Imagesearchで画像を認識した時に音を鳴らす。
もしくは特定キーを押させると言った機能を探してみたのですが
見つかりませんでした;どう組めばいいのでしょうか?
いやいやいやいやw
超初心者です
変数moji1とmoji2に格納した文字列を連結してmoji3に格納する方法が全く分からんかったとです
moji3 = %moji1% . %moji2% とか moji3 = %moji1% . %moji2% とか moji3 = % %moji1% . %moji2% とか試して
無駄に時間が過ぎたとです
でも
>>321-324見てmoji3 := % moji1 . moji2でできました超感謝
moji3 = %moji1%%moji2%
変態仕様だな
>>399 moji3 := % moji1 . moji2の%はいらないね
moji3 := moji1 . moji2
個人的な話だが
>>400は文字列を切った貼ったするときと、メッセージの途中で変数をはさんでメッセージの動的表現をするときに使う
>>402の3行目の書き方は、数値の計算のときだけ使う
この使い分けを徹底するようにしたところ、あとで自分のコードを見直すときの可読性があがった気がする。
405 :
388:2011/12/23(金) 15:02:21.43 ID:PhSSUKI20
ダウンロード進捗のGUIを探していたものですが、
ダウンロードの進捗状況を取得さえできれば何とかなるとかんがえました
ですが、URLDownloadToFileではどれくらいダウンロードが完了したか
わかりません
ダウンロードするファイルのサイズとダウンロードが完了した分の二つを
取得する処理はどうすればよいのでしょうか
>>405 標準機能じゃできない。
WindowsのAPI使えば何とかなるかも試練が、
ダウンロード用のスレッドとGUI表示用のスレッドを分けないと
操作性が悪くなったりして結構面倒なはず。
(URLDownloadToFileだとDL中は固まるのはこのせい)
そんな処理をスクリプトにやらせるのは間違い
進捗を表示するダウンローダを起動するのが関の山
別にスクリプトを馬鹿にしてるわけじゃなくて
スクリプトにとっては実現するまでの苦労が無駄に大きい領域
408 :
名無しさん@お腹いっぱい。:2011/12/23(金) 21:18:30.03 ID:UYoN1toD0
>>408 !まさにそれです!
>>406-407 何でもautohotkeyでやってみたいと思っていましたが
確かにダウンローダーをインストールすればいいですね
ん?
GUI表示部はなんとでもなるが進捗状況の取得ができないって話じゃなかったの?
純水に車輪の再発明が楽しいだけだろ
後で見ると何やってんだろ、って感じになるけどやってる時はすごい楽しいよ
クリップボード内にある複数行の文字列から
行頭に任意の文字列を含む1行を抜き出して
変数に格納するというのは可能でしょうか?
もちろん可能です。
というか、すごくありがちなシチュエーション
画面にある十個ぐらい(不確定)のタブの折りたたみをAutohotkeyでやりたいのです。
具体的には、画面上の不特定数の折りたたみの▲を全部クリックしていくのを
Autohotkeyのキーバインド一つで自動的にやらせたいのです。
Imagesearchでできるのかなぁと思うのですが、
画像検索でX1,Y1 X2,Y2....と不特定にいっぱいできるのを
Click, Lで”おまとめ”でクリックできるものなのでしょうか?
どなたかやり方おしえていただけませんか?
座標格納名oritatami
^Right::
ImageSearch, evernoteoritatamiX, evernoteoritatamiY, 0, 0, 1920, 1080, C:\AutoHotkey\imageSearch\evernoteoritatami.bmp
if ErrorLevel = 2
MsgBox Could not conduct the search.
else if ErrorLevel = 1
MsgBox Icon could not be found on the screen.アイコンが見つかりません。
else
Click, L, , %evernoteoritatamiX%, %evernoteoritatamiY%
return
上の画像検索は、Evernoteというアプリケーション上でやりたいのですが、
なぜかEvernote上で画像検索をするとエラーレベルの2もしくは1がでて
クリックさえできません。対象の画像は画面上に一個しかないはずなんですが。
なぜだろう。いろいろ検索元の画像を変えているんですが・・・
>>415 文字の説明だけじゃなくて
ソフトの具体的なキャプチャ画像や
キャプチャ動画を見せてくれた方がいいかと
http://i.imgur.com/V1Zxa.png こういう非常に小さいbmpを画像検索元に使っているのですが、
evernote上にあるこの▲を踏んでくれるものと踏んでくれない▲があります。
(色を替えないようにカーソルのフォーカスをあてないようにしているのですが)
タブごとに▲の形に微妙な違いがあるのかなぁ。
それともAutohotkeyの画像検索の材料としては小さすぎてダメとかあるのかな。
PixelSearchを使ってみたら?
こっちの方が細かく認識できる気がする
420 :
名無しさん@お腹いっぱい。:2011/12/28(水) 01:28:27.40 ID:35o746zsO
現在1chを見てたら↑keyは3
現在7ch見てたら↑keyは9
↑key割り当てを見てるチャネルによりトグルさせたいんですが
可能ですか?
今見てるチャンネルの取得ができるなら可
422 :
名無しさん@お腹いっぱい。:2011/12/28(水) 09:01:16.93 ID:35o746zsO
ですよね”(ノ><)ノ→今見てるチャンネルの取得ができるなら
423 :
名無しさん@お腹いっぱい。:2011/12/28(水) 09:08:19.75 ID:35o746zsO
事情を話すと今のTVチューナーソフト
一つの番組がチャネルアップボタンで2つくらい見えちゃうんですわ
3Chanなら031 032が… 032スキップしてくれません
チャネル設定も探しましたがini見あたらず…
巨大文字列から正規表現の文字列を変数に入れていく、というスクリプト
どうもモッサリぎみなんだけど、どう書くのが最速なんですかね?
コードと文字列を書いてみ
文字列は不特定TxtAで、コードはこんな感じ
While( RegExMatch( TxtA, "i)aaa([bcd]+)zzz", str ) )
{
Text%A_Index% := str1
TxtA := RegExReplace( TxtA, "i)aaa([bcd]+)zzz", "", "", 1 )
}
リプレースを止めて、開始位置を指定するくらいしか思いつかないな
(↓のサンプルは最近の _L じゃないと動かないと思う)
result := []
start := 1
While(RegExMatch("iabazbxacdba", "Oi)a.*?b", match, start) <> 0)
{
result.Insert(match[0])
start := match.Pos(0) + match.Len(0)
}
For k, v in result
MsgBox,% v
計測してないけどやはりポジションを使うほうが若干早いようですね。
煩雑になるので避けてたんですが、参考になりました。
今後はRegEx系に配列を導入するらしいのでもっと簡単になるかな。
MouseGesture.ahkを使用しているのですが、Firefox(ver.9.01)上で横スクロールだけが機能しません。
他のジェスチャーは動作しますし、FirefoxのIEtab上ではスクロールできます。
また、キーボードフックは導入済みです。
助言お願いします。
横スクロールってどうやるの
マウスカーソルがある区画内にあり、
かつマスターボリュームがミュートであるかないで動作を切り替えるのを作りたいんです
X::
CoordMode,Mouse,Screen
MouseGetPos,x,y
if (x>=a && x<=b && y>=c && y<=d)
Send,{Y}
else Send,{Z}
return
と区画分けはできたんですけど
http://ahk.xrea.jp/commands/SoundGet.html の項をみてやるんでしょうけど
ミュートである、ないを判別するのになんて書いたらいいかわからない のと
アンド的に条件を重ね合わせる書き方 がわかりません
単数条件ならif、elseなど使えるのですが・・・
具体的に言うと、以下の二つのスクリプトを実行したいんです
区画内にカーソルがあり、ミュートのとき Aをα にリマップ
区画内にカーソルがあり、ミュートでないとき Bをβ にリマップ です
教えていただけないでしょうか?
>OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
おぁ
7 32bit ahk_L です すみません
434 :
名無しさん@お腹いっぱい。:2011/12/31(土) 16:09:47.70 ID:7ne8Fz1L0
>>431 他力本願ですが Volumouse というソフトがGuiも出しゃばらず
音声や画面の明るさも調整できるので Ahkと併用しています。
>>434 お互いに予想通りなんですけど
AutoHotkeyでまとめたいのと書き方を学びたいんです
ありがとうございます
さっぱりです・・・
439 :
429:2012/01/01(日) 01:35:29.67 ID:JK73gRyD0
OS:VistaSP2 32bit
AHK:AHK_L 1.1.5.6
です。お願いします。
440 :
名無しさん@お腹いっぱい。:2012/01/02(月) 23:47:17.27 ID:844tb4UoO
ようつべ等で動画を全画面にした時のクラス名ってわかりますか?
adobe flash player からみはわかるんですが…
フォーカス失うと消えるから
タイマーでGetForegroundWindow呼ぶアプリかスクリプト書けば分かるんじゃね
適当なホットキーにアクティブウィンドウのクラス名取得して
クリップボードに入れる処理書けばいいでしょ
AHK中毒患者は似たようなスクリプトを標準装備してるはずw
443 :
sage:2012/01/03(火) 09:48:33.34 ID:9UcS0P0N0
以下のスクリプトのように、左ctrlを二度押しで処理Aを実行させているのですが、
たとえばctrl+wを2度、素早く押した場合には処理Aが実行されないようにするには
スクリプトをどのように書き換えたらよいでしょうか。
~LControl up::
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 250)
処理A
Return
Win7を新規インストールしていて今更ながら気づいたのですが、
>>3 の「■ リマップ・ホットキー割り当て」でini編集部分が抜けていました。
新スレのときに覚えていたら修正をお願います。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。(
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。
(0x0064はF13のスキャンコード、仮想キーコードではないので注意。)
「上のスキャンコードでキー変更する」をクリックすると「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。
「ファイル」→「現在のキー内容を名前を付けて保存します」を選択。
任意の名前(例 ひらがなをF13)を付け「保存」ボタンをクリックし、ChangeKeyを終了させる。
リマップ( F12::F13 )を解除する(スクリプトを終了させる)
(このままでは「F13」が「ひらがな」キーになるのでiniファイルを編集する)
ChangeKey.exeと同じフォルダにあるchgkey.iniをテキストエディタ(Notepad.exe等)で開く。
name=ひらがなをF13 2012.xx.xx
chg= 100 112
となっているので、「chg= 112 100」の 112 と 100 を入れ替え(書き換え)
chg= 112 100
とし、上書き保存する。
ChangeKeyを起動し、「ファイル」→「名前を付けて保存したキー内容を読み込みます」を選択。
「ひらがなをF13 2012.xx.xx」を選択し、「読込」ボタンをクリック。
「登録」→「現在の設定内容で登録します」を選択し、Windowsを再起動する。
※ちなみに F13キーは 100 (10進数) = 0x0064 (16進数)、ひらがなキーは 112 (10進数) = 0x0070 (16進数)
445 :
444:2012/01/03(火) 11:07:38.99 ID:kq3wtKHk0
朝から寝ぼけてました。
>>444は無しでお願いします。
ini編集は不要で、下記で修正をお願いします。
■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理です。
(キーを押すごとに Up → Down → Up → Down と交互に変わる)
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
Changekeyを起動する。(
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「カタカナひらがな」キーをクリック。
「【カタカナひらがな】をどのキーに変更しますか?」というウィンドウが表示されるので右上の「Scan Code」をクリック。
スキャンコードを直接入力するウィンドウが表示されるので「0064」(0x0064はF13のスキャンコード)を入力して「OK」。
「登録」→「現在の設定内容で登録します」を選択し、Windowsを再起動する。
テキスト処理の質問です
テキストinput.txtに
テストテストテスト
テスト1テスト2テスト3
importing("..\testing.txt")
importing("message\output.txt")
テスト4テスト5テスト6
と書いてあるとき、importing("")と""でくくったファイルの中身が
あたかもinput.txtにはじめから書いてあるかのように
autohotkeyで取り扱う方法はあるでしょうか
RegExReplace()ではファイルの中身を取り出せず、
RegExMatch()では""のファイル名を取り出せてもそれからテキストを組み立てる方法がわかりませんでした
検索語の発見位置と長さを使って文字列の部分切り出し+文字列結合
の繰り返し以外に方法は無いよ。これはどんな処理系つかっても同じ。
>>443 ~^w::Returnを書き加える
>>446 これ
>>427か、下の3処理。
1.「"」を含まない行を削除
2.行頭〜「"」を削除
3.「"」〜行末を削除
どっちが速いかは知らん
それかすることによっちゃLoop,READのが楽
449 :
443:2012/01/03(火) 22:03:57.02 ID:9UcS0P0N0
>>448 おおなるほど!
ありがとうございました。
451 :
名無しさん@お腹いっぱい。:2012/01/04(水) 15:03:24.34 ID:888Pd6gLO
>>441以降の方 返事おくれてスミマセン
うちに帰ってやってみます
過去レス(part12,219)で複数のウインドウクラスを同時指定する方法についての質問の回答が
GroupAdd, Explorer, ahk_class CabinetWClass
GroupAdd, Explorer, ahk_class ExploreWClass
Exit ; Autoexecここまで
#IfWinActive, ahk_group Explorer
Space::MsgBox, エクスプローラ
となっていますが自分の環境では動きません。何がいけないのでしょうか?
7,32bit,AHk_Lなのですが
上のスクリプトのahk_class ・・・・ の・・・・の部分を自分の環境に直しています
>>452 GroupAdd 〜 をAutoExecセクション(解らなければスクリプトの一行目)に書いてますか?
いや
>>452 の5行を基本丸写しで
GroupAdd, Explorer, ahk_class a
GroupAdd, Explorer, ahk_class b
GroupAdd, Explorer, ahk_class c
Exit ; Autoexecここまで
#IfWinActive, ahk_group Explorer
Space::MsgBox, エクスプローラ
な感じです
そのClass名 a b c は例なの?それとも本当にそう書いてるの?
前者なら対象アプリ名と実際にスクリプトに書いてるClass名晒せ
間違ってるくさい箇所伏せて書かれてもわからんて
後者ならちゃんとClass名調べて記述する
適当な名前付けても動かんよ
汎用なソフトじゃない上、単独で動作していたものをコピーしたので白かと・・・
例として汎用的なソフトとしてエクセル、ワード、パワーポイントで
ahk_class XLMAIN
ahk_class OpusApp
ahk_class PPTFrameClass で
GroupAdd, Explorer, ahk_class XLMAIN
GroupAdd, Explorer, ahk_class OpusApp
GroupAdd, Explorer, ahk_class PPTFrameClass
Exit ; Autoexecここまで
#IfWinActive, ahk_group Explorer
Space::MsgBox, エクスプローラ
と書きましたが動きませんでした
ちなみにオフィスの3つとも何かしら設定してるので間違ってはないはずです
他のahkスクリプトを全て終了させ、
↓の6行だけを記述したahkファイル(test.ahk)を作成し、
test.ahkだけを実行させて動くか確認してみては
GroupAdd, Explorer, ahk_class XLMAIN
GroupAdd, Explorer, ahk_class OpusApp
GroupAdd, Explorer, ahk_class PPTFrameClass
Exit ; Autoexecここまで
#IfWinActive, ahk_group Explorer
Space::MsgBox, エクスプローラ
458 :
名無しさん@お腹いっぱい。:2012/01/06(金) 09:20:41.36 ID:jgR9LNydO
すいません Hulu Desktopという動画サイトを全画面でテレビ感覚で見れるアプリがあるんですが
リモコンkeyにキーボードkeyを割り当てても受付ません。アクティブ窓の指定は合ってます
いきなりescやBSでキーボードなら前の画面に戻るのにリモコンはダメ
試しに200ミリ秒開けて二回送信送信すると受け付けます。
アクティブ窓の指定が合ってるから初回のkeyを受け付けるんですよね?
キーボードとリモコンでアプリの振る舞いに違いを付けれるんでしょうか?
なぜリモコンは一度ではダメなのでしょう?
このスレとどういう関係が?
Huluのリモコンキーっつのががどんなもんかわからんが
TVなんかの赤外線リモコンは1プッシュで同じコマンド3回くらい投げてる
受光側も2回以上同じコマンドがこないと動かないようにしてたりするよ
有線と違って中途障害でデータが化ける可能性が高いのでそれを避けるための措置
Win7とXPで、スクリーンセーバーが起動しているか、
それとも通常のデスクトップが表示されている状態か、
判別するのに最適な方法って、どのようなものがありますでしょうか。
スクリーンセーバーへの突入を抑制する方法については過去ログで何回か
言及がありましたが、判別については見つけることができませんでした。
>>463 ありがとうございます。regreadで判別できそうです。
>>460 なるほど〜
ありがとうございます。もう少しリモコンを調べてみます
>>463のバグはWindows 7, Windows Server 2008 R2でも再現するそうな。
どうして直さないのかな〜
>>461 >>453に対して
>>454のレスだから当然単独スクリプトで実験してると思ってたが…
単独なら動くなら
>>453の指摘が一番くさいんじゃないの?
原因が他にあったとしても、どう記述してるのか晒さないと確実なレスはつかないぞ
ちょっとした補助マクロ組むだけなら、メモ帳で大丈夫だったんですが
長くなるとキツくなってきたので、エディタを使おうと思います。
好みは人それぞれかと思いますが、いくつかオススメのエディタを
紹介して頂けるた有り難いです。
ご自分でえらんで
質問してから、このスレ見ていこうとしたら
該当の箇所教えて頂きありがとうございます。
エディタの定義用ファイルなんてものがあったんですね。
それがあるって事が分かっただけでも収穫です。
定義用ファイルがあるエディタから自分に合いそうなのを探してきます
472 :
462:2012/01/06(金) 21:31:12.20 ID:goGWeKa70
ありゃ。うまくいきませんでした。
;現在スクリーンセーバーかどうか判別 1=デスクトップ表示中
RegRead,var,HKEY_CURRENT_USER,Control Panel\Desktop,ScreenSaveActive
msg=%A_NOW%=%var%
これをsettimerでまわして、値をファイルに書き出すようにしてみたところ、
スクリーンセーバーが起動する前も、真っ最中も、そのあとも、
常に1が帰ってきました。監視するのは、このkeyとは別のものなのでしょうか。
>>467 ありがとうございます、恐らくそうですね
一番上にあると他のスクリプトと一緒に書かれてても機能しました
ただ全スクリプトが大した量じゃないので、一括して書いてるんですけども
その状況で一番上にクラス書いてしまうと、今まで一番上に書いてあった
ソフト別に関係なく動く機能が死んでしまうので結局実用は無理でした
Groupの件に回答してくださった方ありがとうございました
>>473 諦めるというなら止めはしないが、それは今までAutoExecセクションに書かれてたものが
AutoExecセクション外に追いやられたために不具合起こってるだけな気がするぞ
GroupAddの3行だけ冒頭に書いて、Exitの行は削除、
#IfWinActive以降はスクリプトの最後に追加で多分いける
>>474 おおできました、どうもです
定義したグループを使うすぐに条件として使う必要がないんですね
出先から帰ってきたのでID変わってるけど
>>474です
単純に#IfWinActiveの条件が下のスクリプト全部にかかってるからだけな気もしてきたので追記
#IfWinActive ahk_group Explorer
Space::MsgBox, エクスプローラ
#IfWinActive
↑
#IfWinActive ○○ で限定したい部分が終わったら、限定を解除するために#IfWinActiveだけの行を記述
>>476 わざわざすみません
解除する方法があったなんて知りませんでした!
ahkにファイルパスを渡した際に
半角スペースを含むパスでも正しくフルパスを取得する方法はないでしょうか
"%1%" のようにダブルクォーテーションでくくっても
半角スペースの所でパスが切れてしまいます
なお、OSはWinXP SP3
ahkはAHK_Lの1.0.91.5を使用しています
480 :
名無しさん@お腹いっぱい。:2012/01/07(土) 12:26:45.65 ID:xqq31zi1O
program~1とかダメ?
すでに切れた状態のものが渡されてるからそこを見なおしたほうがいいよ
javaでできた(?)V2Cという2chブラウザでのキーバインドがautohotkeyで利かない
#IfWinActive, ahk_class SunAwtFrame
sc07b & c::
MsgBox, テスト成功?
return
javaでは動かないの?ふつうに手動でCtrl+cしたらちゃんとコピーできるのに。
sc07b & c:: //err
無変換キーを他の行で sc7b にしてると sc07b が効かない(反応しない)
>>484 sc7bという語句はひとつも使用していません。
無変換はすべて sc07b で統一しています。
いまのところ、V2Cのレス表示上だけで無変換+何かのキーだけが効かない。
ほかのキーの組み合わせは動く。
V2Cのアドレスバーや書き込みウインドウ上では無変換+何かキーもちゃんと動く。
なにこれ。
>>481 現在コンテキストメニューの「送る」からahkにパスを渡しているのですが
他に不特定の任意ファイルを渡す方法はありますか?
487 :
名無しさん@お腹いっぱい。:2012/01/08(日) 19:30:51.03 ID:VrqxKp3rO
遊びパソコンでかじったautohotkeyを仕事で使うとは…
だって便利すぎる
>>486 MsgBox,%1%
だけでどうなってるか教えて
これで途切れてるならちゃんと送れてない
>>486 OS:Windows XP Home Edition SP3 32bit、及びWindows 7 Professional SP1 64bit
AHK:Ahkノーマル(本家ともいう)、及びAHK_L
という環境で
clipboard = %0%`n%1%`n%2%`n%3%`n%4%`n%5%
のみを記述したahkファイルをSendtoフォルダに直接置く、及びahkファイルへのショートカットを置き
E:\a a\b b\s s.txt
E:\a a\b b\t t.txt
E:\a a\b b\u u.txt
上記3つのファイルをahkファイル、及びahkファイルへのショートカットへの「送る」をやってみたけど
普通にパスが取得された。
ロングファイル名じゃなくてショートファイル名だけど。
ついでにショートファイル名をロングファイル名へ変換するahkスクリプト
loop %1%
long = %A_LoopFileLongPath%
msgbox %long%
引数としてファイルパスを渡すなら
半角スペースが入っていようがいまいが、
常にダブルクォートで囲えばいいだけかと
ってか
>>481のいってることが↑だけど
482ですが、V2Cへの無変換のホットキーの割り当てができるようになりました。
原因は
vk1Dsc07B & C:: Send,{Ctrl down}{Insert}{Ctrl up}
だったようです。これの右辺(?)をSend, ^{c}にしたら
解決しました。
以前は簡単に言うと下のような形のahkでした。
============================
GroupAdd, GameBindGroup, ahk_class Valve001
#IfWinNotActive, ahk_group GameBindGroup
vk1Dsc07B & C:: Send,{Ctrl down}{Insert}{Ctrl up}
;V2Cへの割り当て
#IfWinActive, ahk_class SunAwtFrame
sc07b & c::
MsgBox, テスト成功?
return
=======================
原因となったvk1Dsc07B & C:: Send,{Ctrl down}{Insert}{Ctrl up}
というものは、日本のAHKの前あった半ば公式ページへの投稿からもらったものです。
ですからこれ自体は間違ってないと思うのですが、私の.ahkの組み立てが悪く、
原因は他にあるのでしょうか。
改めて考えると、やはり問題は解決していませんでした。
上のahkファイルであれば、本来V2C上で無変換+Cを押すと「テスト成功?」のメッセージボックスが
出るはずなんですよね?現状はコピーできるだけです。(以前はコピーもできずに無反応だった)
V2Cへの割り当てのみで、それ以外を完全に削除した.ahkファイルだときちんと
「テスト成功」BOXがでるので、どこかが悪いはずなんです。
============================
GroupAdd, GameBindGroup, ahk_class Valve001
;V2Cへの割り当て
#IfWinActive, ahk_class SunAwtFrame
sc07b & c::
MsgBox, テスト成功?
return
#IfWinNotActive, ahk_group GameBindGroup
vk1Dsc07B & C:: Send,{Ctrl down}{Insert}{Ctrl up}
=======================
でやってみ
ホットキーが被ってる時は先に見つかった方が有効だったはず
両方には行かないよ
>>494 ありがとうございました。(^ω^) うまくいきました。
ホットキーはかぶったら片方ダメになるんですね。
「一般的にはこのホットキー、ただしこのソフトウェアがアクティブのときはこのホットキー」
ってのが前の.ahkでできると思っていました。
いわば特殊のソフト個別のホットキーを.ahk内で上に持ってきて、優先させるようにして
一般的なホットキーはその下にもっていくことで解決しました。
紙芝居ゲーやってんだけど、マウスホイールで読み進められない。
しょうがないから、
WheelDown::ENTER とか
WheelDown::LButton でやってみたんだけど効果無し
なんか方法無いですかね
SendとかSendPlayとかは?
数学でいう大カッコみたいに、#IfWinNotActiveで、#IfWinActiveの
ホットキーグループを囲むことってやったらバグがでるんですねw
#IfWinNotActive, ahk_group hoge
c::e
#IfWinNotActive, ahk_group hoge2
e::b
#IfWinNotActive
g::b
#IfWinNotActive
みたいにw ホットキーの割り当てがループするのでおかしいと思ってた。
ディレクティブで囲む(ネストする)っていう動作はAHKにはないよ
#IfWinNotActive と引数なしで書いた場合、「無条件に実行されるホットキー」という意味になるから、
>>498は、4つの条件(最後の一つは意味をなさない)が指定されている事になる
#〜 はここから先に書いてあるのはこういう設定です、っていう意味でしか無いからな
>>498 #IfWinNotActiveの2つと3つ目、書き間違えてるし。
#IfWinActiveって書きたかった。ほんと萎えるわ。
でっていう
ディレクティブあたりは出てから相当経ってるし
いいかんじに「枯れてる」はず
#If あたりでコッテリした関数呼ぶときは微妙だが
504 :
名無しさん@お腹いっぱい。:2012/01/12(木) 13:27:12.24 ID:McOZmjHyO
テンキーの+−をvolumeUPDOWNに割り当てたんですが
#IfWinNotActiveでメモ帳とカルクを除外できず音量が変わってしまいます
マルチメディアキーはそうなる仕様でしょうか?
>>504 #IfWinNotActiveを使ってメモ帳とカルクを除外できないというのは
具体的にはどう設定しているの?
それか、#IfWinActiveでメモ帳とカルクで
テンキー+と-を改めてsendするようにしたらいいかと
ちょっと質問というか相談
ホットストリングで慣用語句を入力してるんだけど(::@jyusyo::辞書)
いい加減に数が多くなってきたし管理しにくいんで、
Autohotkey.ahkから分離して別ファイルに移動、ついでに語句ももっと増やそうと思うんだ(IME登録用のCSVを流用予定)
で、以下のどれがスマートだろう?(もしくは他に上手な方法ありますか?)
@ホットストリングの状態のまま別ahkに移動して#Include
AINIファイルにして、ホットキー→Inputで入力を横取り、入力されたキー名でIniReadで読みだし、値をクリップボードに送ってペースト
B起動時に全ての語句を格納した配列を作るahkを#Includeして同上
@は登録は楽だけど、読みが重なった場合(辞書と地所)がちょっと面倒
Aは管理・編集は楽。でもいちいちINIファイルを読みに行かなきゃいけない
Bは編集と起動時が大変かもしれないけど、起動後はAよりはマシかも
とかぐちゃぐちゃ考えてみたけど、どれも一長一短
Ini なりcsvなりを.ahkにコンバートしてキックする
スクリプトを作ればいいじゃないかな
509 :
名無しさん@お腹いっぱい。:2012/01/13(金) 03:11:03.69 ID:aZHVGCpkO
>>506 すんません 複数アプリ指定の方法間違ってました…
除外グループ作るんですよね?
#IfWinActiveでメモ帳とカルクでテンキー+と-を改めてsend
↑前に同じような事をやってautohotkeyに怒られました。
ちなみに、それをスクリプト前半じゃなく後半に書いたら作動しました。
どうも複数アプリで同じキーを使い分ける場合はIf elseで、アプリごとにじゃなく
key毎に書いた方が良さそうですね。
Xp/Win7のタスクマネージャで表示される、OSの消費している「ハンドル」の値を
AHK上で取得したいのですが、どのような方法が考えられますでしょうか。
タスクマネージャを介在させずOSから直接取得できたらベストなのですが、
この返り値をもらう方法なんて、ありますでしょうか。
run firefox.exe %ADDRESS%
で新しいページを開くとき右端のタブで開かれちゃうんですが
なんとか今あるタブの右隣にいくようになりませんかね?
firefoxスレ行け
それはFirefox側(アドオン等)が対応してないと無理じゃないかな。
スレ違いだけど
TabMixPlusというアドオンをインストールしてTab Mix Plus のオプション(設定)を開き
「リンク」タブの「他のアプリケーションから開くリンクは以下の設定を適用」の
「外部から読み込まれたリンクを開く場所」を「新しいタブ」にする。
「イベント」タブの「新しいタブ」の「他のタブを現在のタブの直後に開く」にチェック。
その下の「現在のタブに関連する場合のみ」のチェックを外す。
うちの環境ではこれで現在開いているタブの隣に開くようになった。
これでならない場合はTabMixPlus内の他設定の変更が必要かも。
autohotkeyの入門書はありますか?
どのサイトもマニュアル類ばかりで何から手をつけてよいのかわからず…
最初はそのマニュアルとか
現存してる先人スクリプトの模倣で強くなるもんじゃないの?
理屈はわからんけど、とりあえずできた
↓
より細かいニーズができて、ちょっと応用利かないかなと理屈を理解しようとする
↓
ここから少しずつ発展し繰り返す
先人 の ね
問題集の答えのようにいきなり答えを一から作るのなんて無理だし
まず丸写しして、その中に書いてある構文は正しいものであるわけだから
構文をひとつずつ分けて、単体でどう動くかをひたすら簡易テストして
構文をひとつずつ確実に自分の使えるものにした まだまだまだまだ未熟だけども
517 :
名無しさん@お腹いっぱい。:2012/01/13(金) 23:11:00.65 ID:aZHVGCpkO
OS独自機能が絡んでないスクリプトもOSによって振る舞いが違うんですね…
7と8で同じスクリプトが同じアプリに違う挙動をしめします
多分7とvistaは同じだろうと思いますが…
>>517 例を出してほしいな
それとwindows8ってもう入手できるの?
横レスだが
>>519のロードマップは目から鱗だわ
そりゃそうだということだが図式化してしまえばたしかにそうなる
>>518 8はDeveloper Preview版のことじゃないかな?
Fnキーいじれないのはなぜなんかな
邪魔で消したい機能たくさんあるんだけど
BIOSでFnキーの機能を自由に設定できたらいいのになぁ…
レス内容見る限りWDP版に手を出していいスキルがあるようには見えんがな
ていうかいつもの誘い受けの独り言の人でしょ
リロードしてなかったわ
524は>512へのレス
ではなくて>521だった 連投スマン
527 :
名無しさん@お腹いっぱい。:2012/01/15(日) 18:16:22.42 ID:7rj+yHdAO
みんな最初は初心者だったのに段々謙虚さがなくなる…
井の中の蛙
>>527 もしやあなたは…全部goto文で組むという、あの伝説のプログラマーですか?
530 :
名無しさん@お腹いっぱい。:2012/01/17(火) 09:13:02.95 ID:4Oz8k8G5O
マリリンモンロー
↑
伝説のグラマー
カーソル位置の文字やカーソル位置の一つ前の文字を取得することは
AutoHotkeyでできるでしょうか?
>>531 Send, +{Left}
Send, ^c
Send, {Right}
超力業だけど…
ztopはマウス下のコントロールにスクロースを送る機能があり、Firefoxのテキストエリアにも遅れます。
同じ事をしようと、まずAU3_Spy.exeでコントロールを見て見ましたがテキストエリア外とテキストエリア内でコントロール表示が変わりませんでした。
ztopなどはAutoHotkeyとは違うアプローチでもイールイベントを送っているのでしょうか?
また、ztopと同じようなことをAutoHotkeyでもできるでしょうか?
最近のFirefox(Moz)は入れ子コントロール無くなったよ
コマンドプロンプトと同じ。だから親窓自体に送る。
まぁ、ループネタだが
>最近のFirefox(Moz)は入れ子コントロール無くなったよ
そのせいでcontrolsendで文字列を送れないことがあるんだよなあ
firefoxを再起動しない限りどうやっても送れない
MouseGesture.ahk
マウスジェスチャ2なんですが
動作割り当てでマウスのクリックを割り当てるのはどうすればいいの
{Lbutton}とかやってもできない
>>537 MouseClick,RIGHTで出来ました
本当にありがとう
大量に起動している画像ビューアのタイトルバー文字列を
一度に取得するにはどうするといいですか?
GroupAddやWinGetTitle等のコマンドを調べてみたのですが
一括取得する方法がわかりませんでした
一括取得などというニッチな機能なんぞない
WinGet でマッチするウィンドウID一覧得て
一覧回して WinGetTitle すりゃいい
541 :
539:2012/01/19(木) 23:59:35.21 ID:VUlkfRMn0
>>540 WinGetを使って期待通りの動作ができました
勉強になりました、ありがとうございます!
542 :
名無しさん@お腹いっぱい。:2012/01/20(金) 12:42:27.31 ID:Xy6UoNQ5O
スミマセンautohotkeyをバックグラウンドサービスとしてログイン前に起動ってできますか?
AHKでインストールされているフォントの情報取得をする場合
どのように処理するのが適切ですか?
とりあえずフォント名(フォントファイル名ではない)だけでも取得できればと
思うんですが、いわゆるフォントダイアログのようなコマンドがなく
どうしたものかと悩んでます
家ってもしかして、建築したあと向きを変えるとか
建築可能な範囲内でずらすとかできない?
>>543 dllcallでChooseFontかEnumFontFamiliesExあたりのAPI関数を呼び出すとか?
>>547 DllCall試してみましたが、自分には扱えそうにありませんでした
構造体とかコールバックとか何のことやらさっぱり・・・
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
ここにインストール済みのフォント名が値として入ってるらしいので
Loop(レジストリ)を試してみます
マウスを高速スクロールさせた際、
#MaxHotkeysPerIntervalの制限にひっかかってしまいます。
現状
#MaxHotkeysPerInterval 300
としていますが、他に良い解決策はないでしょうか?
引っかかるのはホイールスクロールの際のみです。
>>549 ttp//ahk.xrea.jp/commands/_HotkeyInterval.html
おれは
#HotkeyInterval 2000
#MaxHotkeysPerInterval 3000
にしてる
フリースクロールじゃ3秒間に2000回とかどうやっても無理だから
>>550 >>551 個別に監視タイミングを変更できないかなと思ったのですが、
ありがとうございました。
>>551 それだと 2秒間で3000回じゃね?
うちは
#HotkeyInterval 10000
#MaxHotkeysPerInterval 700
何となく最大ホットキー数を増やしたくなかったので時間の方を調整
アクセラレーション入れてるから瞬間ピークは高くなるけど
10秒とか長時間回してることはないし
そだね
同じ数値規模にしておいて片方がミリ単位だからどっちにしろ無理だし〜
って発想だったんだな、当時の俺は
いや違うな
過疎スレになってもおかしくないのに
数人、もしくは1人のエキスパートが
港のように広い気持ちでどんな質問も受け入れて
無駄のない簡潔で的確な即レスしてくれるおかげで
多くの人がAHKをやめずに済んでいる
良スレの典型
単に需要があるから残ってるだけだと思うんだが。
違うか?
tst
やりたいことが需要であり、実現する方法が供給になるわけだから
的確なレスってのがAHKみたいなスクリプトツールの場合
初心者には供給なんじゃね
-234-123-abc-cdf
の文字列があるとき、
-234や-abcの-[a-z0-9]毎に繰り返して処理するには
どうすればよいでしょうか
loop,parseでは-が消えてしまいます
RegExMatchとwhileを使えばできそうな気はするのですが
書き方がわかりません
普段からcapslock使わない俺は、
capslockの状態がONのときだけホットキーが効くようにしてみたんだが
そうするとキーボード全体まるごとホットキーにできて結構便利だね
今更こんな単純なことに気が付いた
>>560 -をデリミタにするから消えてしまうんであって、先に「-」を「デリミタ」+「-」に置換すればいいんじゃない?
先頭についたデリミタが邪魔ならそれだけ取ればいいし
LogicoolのN305というテンキーを買いました。
テンキー上部の 「=」「 (」「 )」の3種類のキーは、
エクセル用の特殊キーのようで、ちょっと特殊なコードを吐きます。
たとえば「=」ですが、押すと
Alt(押し下げ) Num6 Num1 Altl(押し上げ)
という順番にコードを吐きます。
それらキーをリマップしたいと思い、
情報を探してみたところ、AHKフォーラムにあった、
以下のスクリプトが動作しました。
(「=」キーのリマップ例)
!Numpad6::
KeyWait, Numpad6
While GetKeyState("Alt","P")
{
If GetKeyState("Numpad1","P")
{
KeyWait, Numpad1
send,=
Return
}
}
Return
このスクリプトは、ちゃんと動作しました。
ただ、ごくたまに取りこぼしが発生するのですが、
防止する方法はありませんでしょうか?
あと、それとは関係ないのですが、
たいていのテンキーって、Shiftキーを押しながらキーを押すと、
NumLockが解除されたときのような動作(←→↑↓PgUP PgDNなど)をしますが、
吐いているキーコードを調べると、単なるNumとShiftの組み合わせにすぎないようなのですが、
これはアプリ側(というかWinのAPI?)が処理しているという認識で正しいでしょうか?
テキストエディタやアプリのエディットボックスではだいたい動作するのですが、
動作しないアプリもあるので、ちょっと不思議に思っていまして・・・
566 :
565:2012/01/25(水) 20:52:08.87 ID:yiSfyOkK0
あ、無効にするのは難しいかも
>>565-566 昔のを有難うございます
大丈夫です 書いてあること全く理解できなさそうですし
結果は何も変わりません
Shiftを違うキーに割り付けたいのですが、
以下は動作するのですが、
F1をNumpad0にすると動作しないのは何故なのでしょうか?
F1::
SendInput,{shift down}
While GetKeyState("F1","P")
{
Sleep,1
}
SendInput,{shift up}
Return
>>563 こんな感じで使ってる。
<!Numpad6::
Input, UserInput, T0.1, {Numpad1}
if (ErrorLevel = "EndKey:Numpad1") {
KeyWait, LAlt, T0.1
Send, =
}
return
<!Numpad4::
Input, UserInput, T0.1, {Numpad0}{Numpad1}
if (ErrorLevel = "EndKey:Numpad0") {
KeyWait, LAlt, T0.1
Send, (
} else if (ErrorLevel = "EndKey:Numpad1") {
KeyWait, LAlt, T0.1
Send, )
}
return
>>569 ありがとう!
こっちの方が断然取りこぼしが少なくていいですね。
とても勉強になりました。
ブラウザ上のURLを読み取って文字列を検知するって方法あります?
特定のページでだけ機能させるようにしたいのですが?
572 :
名無しさん@お腹いっぱい。:2012/01/28(土) 15:03:40.61 ID:TnEg869w0
>>571 Ctrl+Lでアドレスバーのurlをコピーすれば
文字列検知できるんじゃないかね
MouseGestureを使っているのですが
マウスの中ボタンだけMouseGestureを通さずに
普通に動かすことってできないですか?
もしくは忠実に再現させる方法ってあるんでしょうか?
何がしたいかというと
AutoCADでジェスチャー有効にしつつ中ボタンドラッグでパンしたいんですが・・・
ホイール付きマウス使っていないからわからんけど、ジェスチャ定義に
MB_
を作成し、動作割り当てを↓にしたらダメなのかな?
MG_Abort()
send, {mbutton down}
keywait, mbutton
send, {mbutton up}
>>574 できました!
ありがとうございますm(__)m
これで本格的にAutoCADでAHK運用できそうです
しかしAutoCADもAHKも勉強すること大杉です・・・
F2キーって短時間に押しまくるとリネーム機能停止するんだね
力技で一斉リネーム作ったんだけど、なんかうまくいかない・・・
x::
Send,{right}
Loop,420
{
Send,{F2}
Sleep,10
Send,^c
Sleep,10
Send,{Enter}
if Clipboard in 1
break
Send,{left}
Send,{F2}
Sleep,10
Send,^c
Sleep,10
Send,{Enter}
Send,{right}
EnvAdd, Clipboard, 1
Var+=1
Send,{F2}
Sleep,10
Send,^v
Send,{Enter}
Send,{right}
}
Loop
return
あれ右クリックでもリネームできない・・・
見てもらえば理屈はわかると思うんですけど
ループして1に戻ったらブレイクしたいんですけど
そこが機能しないんです どうしたらいいでしょう?
初心者です。
ブラゲーのマクロを作っています。
ウィンドウアクティブ状態の時は動作させることができました。
ただアクティブ状態での動作中は何もできなくなるので、これをバックグラウンドで動作させたいと思っています。
ブラウザが後ろにあるときでも、ブラウザ(Flash)の操作はできるでしょうか?
操作というのはマウスの左クリックをポチポチやるだけです・・・
できるならどのように記述すればいいんでしょうか?
回答よろしくお願いします。
>>579 どうもです
FileMove, C:\前の名前.txt, C:\後の名前.txt
だとリネーム前の名前固定にならないですか?
前の名前がなんでも動くように設定できるんですか?
>>582 >>580については回答いただけませんか?
ContorolSend使ってバックグラウンドにある状態でF5投げたらChromeのブラウザ更新はできました。
でもマウスの左クリックはできません。
ブラウザ上をぽちぽちする方法を教えてくださいませ。
>>582 ちょっと理解が及ばないですねぇ
時間かけてやってみます 有難うございました
なんだよこの流れ
たぶんいつもの日記の人
>>583 ControlClickじゃあかんの?
あいてすんなよ
>>586 おおおおおおおおおおおおおおおおおおおおおお
一歩前進した、ありがとおおおおおおおおおおおおおおおおおおおおお
でも、今度はクリックしたら強制的にアクティブになっちゃうんだ
後ろにいたままってできますか?
毎回WinHideするしかないのかな
だめだ、WinHideするとコマンドがきかない
WinSetでbottomにすることで解決しました。
気づきを与えてくださった
>>586さんには感謝します。
>>587 オマエは地獄に堕ちろばーか
低能にふさわしい捨て台詞だな
スレタイかテンプレの
>>1の最初に馬鹿避けのおまじないが必要だろうな
595 :
580:2012/01/31(火) 05:56:08.65 ID:fid+0reb0
>>591で解決したつもりになっていましたが、一瞬ブラウザが現れるというめんどくさい問題が発生しました。
マクロを動かしてる時はブラウザを使うことはないので、マクロ作動中はJaneを常に最前面にしておくことで対処しました。
これで何かと捗りそうです。ありがとうございました。
質問用のテンプレでも作るか?
>>596 この手の輩がテンプレを読むとでも思ってるの?
598 :
586:2012/01/31(火) 10:42:40.67 ID:zJuz1gzv0
スマン心底反省した
先出のリネームの人のほうがヤバげに見えたんだがな
タスクバーに表示させたAHK実行ファイルのアイコンてどこで変えるの?
>>599 Menu, tray, Icon, FileName , IconNumber, Freeze
で設定出来た。
>>600 すまんタスクトレイアイコンでなくて、
エクスプローラーの右クリック>タスクバーに表示するってやつで表示したボタンのアイコンのこと
すっかりネタスレになったな
>>602 ありがとう
適当にリソース変えたら出来たけど
そのショートカットのアイコンを変える方法でもいいね
スクリプトで変えるとなると面倒そうだな
`;::Return
;キーをリターンキーに割り当てようとしたんだけど
コレだと、;キーが無効になってしまう。
どう書けばいいの?
俺のキーボードにはReturnなんて書いてない
面白くもなんともないネタなんだからほっとけばいい
NEC世代の団塊はマジ糞だなw
家のPCにはCRと書いてある
調べたけど そういうことか
リターンキーなんて知らなかった
Enterの下に改行マークが描かれてるからRetrunキーと呼んでもいいことにしてる。俺の中では。
そんなマークなかった
PSO2でMouseGesture.ahkを無効にしたいんだが、上手くいかない。
nPro使ってるから入力補助で指定じゃダメなのかな?
ここは日記じゃないぞ
知りたいなら最低限こうやったけどできなかったくらい書けよ
nProで制約かけてるくらいならLLフックでうごくAHKじゃ
対抗できないんじゃないかね
LLフックとは別系統で入力を得るDirectInput使ってるとだろうし
ClassNNの「NN」って何の略ですか?
大喜利大会開始
>>617 the classname and instance number of the control
ありがとう。nameとnumberって事か
autohotkeyからデータベースのフリーソフトを扱う例はどこかにあるでしょうか?
データベースへの登録や検索をどうするのかよくわかりません
autohotkey単独でどうにかできればよいかと思ったのですが
データが100,000を超えるのでデータベースを利用したいと思いました
その発想はなかった。。。
同じようなことを考えてggったらAHKからSQLite扱う例を見つけて
フォーラムに別に詳しい奴があるからっつーからフォーラムでも検索かけて
そのどちらを見ても手に負えなさそうだから諦めた俺がいる
WInAPI使えるんだから出来るんじゃねーの
625 :
621:2012/02/07(火) 19:54:56.95 ID:FQ4vlJ1F0
説明不足でした すいません
データベースを使うというのは
>>623のいうようにsqliteのようなものを使って
ahkで処理したデータを追加したり検索したりするということです
データベースソフトのguiをいじってデータをコピペしたりフォーカスを移動する
という訳ではありません
PSSという単語を覚えるアプリケーションがCtrl+F8にある機能が割りふられているんだけど
autohotkey側でCtrl+F8設定してきちんと動いているんだけど
PSSだけはF8としか認識してくれない。
なんでだ?
>>625 Sqliteならライブラリ転がってる
文字列でSQLやDML発行すんのは変わらない。
結果表をぐるぐる回すことになるんで、コールバック関数使った方がいいと思われ
ただ、ahkだけで完結しようと思うと死ねるんで、
DBのコマンドラインツール使う方が楽なこともある
( sqlite3.exe psql.exe sqlplus.exe 等)
標準入出力をパイプで繋いでどうにかなるなら、
Ahkからはパラメタだけ埋め込んでやればいいし
WSHとかシェルプロンプトとあわせて使えば楽勝なんじゃないの
629 :
名無しさん@お腹いっぱい。:2012/02/09(木) 08:21:04.66 ID:nY1ykUQB0
次のようなことをするにはどうすればいいかわかりますでしょうか?
マウス右ボタンを押しながらマウスホイールを上に回すと
Ctrlキーとマイナスキーが押される。
~RButton & wheelup::send,^{-}
これだと右ボタンを離した時にメニューが出てしまいますが
メニューを出さないようにしたいのです。
右ボタンが押されなかったことにする処理とかできますか?
右クリ殺してもいいならできる
大概面倒だから esc送っとけ
前スレ61-を見れ
なんでこれテンプレから消えたの?
>■ マウス関連
>
>Q1:「RButton & WheelDown::〜」とやったら右ボタンが使えないし、
> 「~RButton & WHeelDown::〜」とやったらメニューがでてうざい。
>A1:決定的な解決策はないけど、メニューが出たら消すって方法なら↓。
> ~RButton & WheelUp::
> Send, +^{Tab}
> SetTimer, CancelRMenu, -1
> Return
> ~RButton & WheelDown::
> Send, ^{Tab}
> SetTimer, CancelRMenu, -1
> Return
> CancelRMenu:
> KeyWait, RButton
> SetTitleMatchMode, RegEx
> WinWait, ahk_class #32768|MozillaDropShadowWindowClass,,0.5
> If (!ErrorLevel)
> Send, {ALt}
> Return
>
>Q2::キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない・・・
>A2::マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
633 :
629:2012/02/09(木) 19:56:14.57 ID:nY1ykUQB0
>630-632
ありがとうございます。
とりあえずメニューが出にくいのを作ってみましたが未完成です。
~RButton & wheelup::
KeyWait, wheelup, D
send,^{-}
KeyWait, RButton, U, 1
send,{alt}{RButton, U}{alt up}
return
続く
634 :
629:2012/02/09(木) 20:08:10.85 ID:nY1ykUQB0
続き
右ボタンを押しっぱなしの状態でホイールを連続して回して
Ctrlキーとマイナスキーを何度も送りたいのですが
これだと右ボタンを押しっぱなしの状態でホイールを一回回して
右ボタンを離してまた右ボタンを押してホイールを一回回すという
ことをしなければなりません。
IFとかKeywaitとかでできますでしょうか?
636 :
629:2012/02/09(木) 22:22:02.84 ID:nY1ykUQB0
>635
ありがとうございます。試行錯誤してメニューも出ないのを作りました。
式の意味は全然わかりませんが(笑)
~RButton & WheelUp::
Send, ^{-}
SetTimer, CancelRMenu, -1
Return
~RButton & WheelDown::
Send, ^{+}
SetTimer, CancelRMenu, -1
Return
CancelRMenu:
KeyWait, RButton
Send, {alt}{RButton, U}{alt up}
Return
GUIのEdit(またはText)の数値を、UpDownではなくSlidbarで増減させたいんですが方法ないでしょうか?
Slidbarを使ってEditの変数を変更するところまではできたんですが、
その変更された値をGUIに反映するのがどうしてもできません
Gui, Add, Text, , %sss%
Gui, Add, Edit, VsssA x+10 yp-4 Limit3, %sss%
Gui, Add, Slider, VsssB GReho x+10 yp-4 Range0-255 Line10 NoTicks ToolTip, %sss%
Gui, Show, XCenter YCenter W250 H100, %A_ScriptName%
Return
Reho:
sssA := sssB
sss := sssA
MsgBox, %sss%
MsgBox, %sssA%
;Gui, Submit
Gui, Submit, NoHide
Sleep, 1000
Gui, Show, XCenter YCenter W250 H100, %A_ScriptName% ;←この時点でsssAの値が表示されてほしい
Return
SubMitの前後でGUIをいったんDestroyで破棄して最初から作り直せばできないことはないみたいなんですけど
できれば一度作ったGUIはそのままで値だけ反映させたいんです
どなたか方法ご存知ないでしょうか
よくわからんが
Reho:
GuiControl,, sssA, %sssB%
Return
こういうことがしたいの?
>>636 あまり口出しするのもどうかと思うけど、別段こだわりがないなら
>>632をそのまま使ったほうがいい
たまにメニューが消えなかったりメニュー外にもAltとかSendされたりするぞそれじゃ
ところで住人の方にちょいと質問させてほしい。トレイアイコンをAHKで操作する方法について
流行らせるページで拾ったスクリプトがXPからWin7に変えた途端効かなくなり、直そうと思っても64bitのアプリがメモリのどこにデータ格納しているのかわからずご教示願いたい
; トレイアイコンの情報を取得する(※idxはトレイアイコンの番号)
_Tray_GetInfo(idx,ByRef hwnd,ByRef uid,ByRef msg,ByRef hicon)
{
WinGet,pid,pid,ahk_class Shell_TrayWnd
hp:=DllCall("OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,UInt)
lpTB:=DllCall("VirtualAllocEx",UInt,hp,UInt,0,UInt,20,UInt,0x1000,UInt,0x4,UInt)
SendMessage,0x417,% idx-1,%lpTB%,ToolbarWindow321,ahk_class Shell_TrayWnd ; ←ここまではプロセスのハンドルもテーブル(?)も取得できている
DllCall("ReadProcessMemory",UInt,hp,UInt,lpTB+12,UIntP,dwData,UInt,4,UInt,0) ; ←こっから全部読み出し失敗。UIntをUPtrにしてもダメ。「0」しか返ってこない
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData ,UIntP,hwnd,UInt,4,UInt,0) ; ←dwDataが0だから当然失敗。結果全部「0」が返る
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+4,UIntP,uid ,UInt,4,UInt,0)
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+8,UIntP,msg ,UInt,4,UInt,0)
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+20,UIntP,hicon ,UInt,4,UInt,0)
DllCall("VirtualFreeEx", UInt,lpTB, UInt,0, UInt,0x8000)
DllCall("psapi\CloseProcess",UInt,hp)
}
↑こんな感じで詰まってる。多分探してるデータが64bitの場合ここ(lpTB+12)じゃない場所に置いてるんじゃないかと
(XPの時もなぜここに情報が格納されているのかまったく知らず使ってた)
どう修正すればいいか知ってる人いたら伝授お願い @AHK_L Unicode on Win7 64bit SP1、UTF-8
ホットストリングというのは、リマップしたキーの入力だと機能しないんでしょうか?
スレッドの管理をしたいのですが、どうやったら良いですか?
ホットキーでいくつかのスレッドが立ち上がった場合に、
前に立ち上がっていたスレッドを即座に終了させたいのですが。
スレッドに起動チェックルーチン入れるしかないのでしょうかね?
Win7Pro64bitでWheelRedirectの挙動がいろいろおかしい…
スクリプトを有効にするとV2C, Firefoxがアクティブであってもなくても全くホイールスクロールしなくなります。
今のところ手持ちのアプリの中で問題が出たのは2つだけのようです。
>>65さんはどんな修正をしたんですか?
単純にPostをSendに変えてみただけだと状況は特に変わりませんでした。
>>638 まさにそれです!
SlidbarのAltSubmitオプションとの組み合わせで希望通りの動作になりました
ありがとうございました
ifの記述がめちゃうざいな
無変換+何かのホットキーを設定してると
fenrirの呼び出しキー無変換が利かなくなってしまいます
これはどうにか出来ませんか
~ つけろ
650 :
648:2012/02/12(日) 19:09:34.88 ID:BEfaqSvc0
>>649 ありがとうございます、設定出来るようになりました
細かいことですが、一瞬fenrirが表示されるのは仕方ないのかな
無変換キーアップでfenrir呼び出しにすればいいじゃん
無変換キーアップを待つぐらいなら無変換+CapsLockのほうが、
まだ出が早いぞ。A_TickCountで差分の時間とってみ?
こっちもfenrirに当てているが。
正直大差ないだろ
キーの押し下げ時間が長いわけじゃあるまいし
655 :
名無しさん@お腹いっぱい。:2012/02/13(月) 13:21:49.39 ID:l9qN9nOT0
656 :
名無しさん@お腹いっぱい。:2012/02/13(月) 18:05:35.65 ID:zhszO+7f0
emacsのkey-chord.elのようなものをautohotkeyで作れますか?
657 :
460:2012/02/13(月) 20:06:55.38 ID:v+AV1GX60
ttp://loda.jp/ahk/ 3月31日で終了するけど、何かきたこれ。
○Ver.1.01 2012/02/12
・64bit環境でカスタム条件式のカーソル判別、および矢印ナビが機能する
よう修正
・矢印ナビ更新間隔の設定追加
⇒ MG_ExNaviInterval の値で更新間隔を変更できます(ミリ秒単位)
※数値が小さいほど滑らかになりますが、CPU負荷は増大します
・矢印ナビ残存表示時間の設定追加
⇒ MG_ExNaviPersist の値で残存表示時間を設定できます(ミリ秒単位)
・矢印ナビの背景透過指定の方法を変更
⇒ MG_ExNaviTransBG=1 で背景が透明になります。その際 MG_ExNaviBG
に文字色と近い色を指定すれば、フォントにアンチエイリアスが掛か
る環境でも、矢印境界の色が目立たなくなります
・矢印ナビの設定変更方法を分かり易くするため、MG_User.ahk のテンプ
レート内に、矢印ナビ関連のパラメータ初期化処理を追加
by 42
>>654 thx. アドレスを色々いじってやっと動いた。
テーブルのアドレスが8の倍数でないとダメってのと、構造体のうちhwndとhiconが8バイトに置き換わってるというのがヒントになった
DllCall("ReadProcessMemory",UInt,hp,UInt,lpTB+16, UIntP,dwData,UInt,4,UInt,0) ; ← lpTB+12だったのを+16に置換。はっきり言ってこんなの気づかないと思う
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData , UIntP,hwnd, UInt,8,UInt,0) ; ← hwndはポインタだから8バイト。ptrじゃなくてもUIntのままで動いた
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+8, UIntP,uid , UInt,4,UInt,0) ; ← dwData+4から+8に。hwndが4バイト増えたから4つずらした
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+12,UIntP,msg , UInt,4,UInt,0) ; ← 同じく読みこみ開始アドレスを4バイトずらす
DllCall("ReadProcessMemory",UInt,hp,UInt,dwData+24,UIntP,hicon ,UInt,8,UInt,0) ; ← 同じくずらしてる。hiconは取得しなくても問題の操作は動くから、これで合ってるか自信ない
以上、32bitスクリプトからの変更箇所。この5行だけ置き換えると動く。
参考になれば。
>>644 特定のウィンドウだけ回避して送るようにすればいい
以下、回避例。MouseGetPosの直後に挿入すると動く。*WheelUpの時も同様にするといい
WinGetClass, Class, ahk_id %hwnd%
If (Class = "MozillaWindowClass") {
IfWinActive, ahk_class MozillaWindowClass
Send, {WheelDown}
Else
ControlSend, , {Down 2}, ahk_class MozillaWindowClass
return
}
GUIのボタンの文字色って変えられない?
斜体や太字にはできるんだが文字色だけどうにもならない
テキスト入力欄の文字は色も字体も変えられる
v1.1.06
1) #InputLevel と SendLevel の追加:
AHKが発行したキー・マウスイベントが別ホットキーのトリガとなれるかどうかを制御
2) GUIコンポーネント Link 追加:
クリッカブルリンクをもつテキストラベルを生成
ハイパーリンク以外にGUIイベントをコールすることも可
その他はバグフィックス等
1) は結構いいかも
デフォルトでリマップしてる人には朗報か
>>661 thx。読んでみる
あと今本家のドキュメント見てたら
Note: Buttons do not obey custom colors.ってふつうに書いてあったわorz
663 :
名無しさん@お腹いっぱい。:2012/02/15(水) 13:33:22.98 ID:V+AyKIkR0
Window7の電源管理機能がうまく機能しないので、AHKで70秒間何もしなければモニターの電源を落とし、一時間何もしなければPCを休止状態にし、
復帰させた時にまた休止状態に移行しないようにAHKスクリプトを停止する、という動作をさせたいのですが、
アイドル時間が70秒以上一時間以下ならモニタ電源を落とす
アイドル時間が一時間以上なら休止状態にする
という動作判定をさせるにはどうスクリプトを記述すればいいんでしょうか?
以下試してみたスクリプトですが、一時間以上のif判定が優先されてしまって70秒以上のif判定が機能しません。
If A_TimeIdlePhysical >70000
{
if flag<>1
SendMessage 0x112, 0xF17, 2, , Program Manager
flag=1
}
}else{
flag=0
}
return
If A_TimeIdlePhysical >3600000
{
if flag<>1
{
DllCall( "PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
flag=1
ExitApp
}else{
flag=0
}
>>663 If A_TimeIdlePhysical > 70000
{
If A_TimeIdlePhysical > 3600000
{
; 1時間以上の処理
}
Else
{
; 70秒以上の処理
}
}
いまいちflagの効果が分からんが…
コピペミスかもしらんが、663の例では
70秒、一時間両方とも { } の数が合ってない
ifをネストして使うならカッコが対応してるかは要確認
フラグを抜いて実際に使いたい形に近づけてスクリプトを書いてみましたが、このままだと五秒間のメッセージボックスが表示されるとスクリプトが止まってしまいます。
どうやったら十秒間のメッセージボックスを表示させられますかね?
#Persistent
SetTimer,OnTimer,1000
return
OnTimer:
CoordMode, ToolTip, Screen
ToolTip, %A_TimeIdlePhysical%,
If A_TimeIdlePhysical > 5000
{
If A_TimeIdlePhysical > 10000
{
msgbox 10秒間
}
Else
{
msgbox 5秒間
}
}
return
表示用に別スクリプトを呼ぶのはどうでしょうか
>>669 それしかないですかね?
一つのスクリプトでA_TimeIdlePhysicalの判別は一つまでという感じなんですかね?
いま時間指定スクリプトを五秒と十秒別々に起動してためしましたがうまくいきました。
あとメモリ消費を抑えられるし、管理がしやすいので#includeで本体のスクリプトに五秒用と十秒用両方読み込ませて使ってみたんですが
こっちだと先に発動するスクリプトのせいで後に発動するスクリプトは動きませんでした。
>>670 俺も同じことしてるけど基本はこうやってる。
#Persistent
SetTimer,OnTimer,1000
return
OnTimer:
if flag = 1
{
reload
}
If A_TimeIdlePhysical < 70000
{
return
}
Else
SendMessage,0x112,0xF170,2,,Program Manager
If A_TimeIdlePhysical < 3600000
{
return
}
flag=1
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
return
>>671 使ってみましたがうまくいきました。
どうもありがとうございました。
解決したみたいだけど後学のために蛇足ながら一言
>668はA_TimeIdlePhysicalではなくMsgBoxの使い方に問題がある
スプリクトを止めずに状態変化を知りたい場合のテストコードでは
ToolTipかOutputDebugを使うといい
>>673 情報どうもです。こんどからそうします。
なんか突然スクリプトが動作しなくなった
MsgBoxはでるのに、MouseMoveとかでカーソル移動とか、クリックとかできなくなった
どうしていいのか全く分かりません
助けてくれ
突然できなくなったりは絶対にしない
いやまじなんだよ
Windowsアップデートで再起動して寝たんだけど、起きたらマウス系コマンドが全く使えない
管理者権限でAHKを起動しないと
一般権限のウインドウをいじれなくなることが稀に突然ある。
再起動すると直ったり直らなかったり。
再起動しなおしたら直ったわ
よく分からんが初めての経験だったから焦った
UACはうざがられたりするけどセキュリティ上あった方がいいね
マウスカーソル位置に応じてアクションを変えるコード書いたんだけど
15箇所くらいに分断したあたりで分けがわからなくなってきた…
という訳で0.1秒くらい画面にガイドラインを引きたいんだけど良いサンプルないですか。
Win32APIでGetDC(0)してラバーバンド描いてみたいにやるしかないですか。
zipの書庫の中身を参照したいんだけど、流行らせるページにあったcommonArc.ahkが今の環境では動きません。
Win7 64bitのautohotkeyL unicodeです。
Unicode版ahkならcommonark.ahkのstrをAstrに変えると動く、というのが過去ログにあったのですが、
これだけではうんともすんとも言いませんでした。
x86,x64,ANSIで試してみたけどどれでやってもダメ。もしかしてWindows7だから動かないんでしょうか。
すまん教えてくれ。
Gui,7:Add,Edit,xs+15 ys+20 vHTe gEDITER Limit4,%tvHT%
Gui,7:Add,UpDown,Range0-100,%vHT%
(中略)
Return
EDITER:
(中略)
Return
と書くと、GUIが作成された時点でEDITER:ラベルの内容が実行されちまう。
UpDownボタンが
>対象コントロールに取り付く場合、配置された時点で対象コントロールのテキストにここで指定した値が反映される。
で対象コントローに当たるEditコントロールが
>Gでラベル名を指定すると、入力内容が変更されるごとにサブルーチンが実行される。
かららしいんだが、これを回避する方法ってないか?
自分でも考えたけどEditコントロール諦めてTextコントロール使うくらいしか思いつかんかった
684 :
名無しさん@お腹いっぱい。:2012/02/18(土) 17:40:32.46 ID:Z8kiXGEN0
autohotkeyのスクリプトに引数を渡しそれを取得できますか?
>>683 Gui,7:Add,Edit, の前にediter_label_on:=false
後にediter_label_on:=trueと書いて
EDITER: の直後にif (editer_label_on=true)
とでも書けばいいんじゃないかな
別にへりくだれとは言わんが
687 :
名無しさん@お腹いっぱい。:2012/02/18(土) 20:40:20.65 ID:Z8kiXGEN0
>>686 どうもありがとうございます。できました。
すいません。おしえてください。
Autohotkeyでブラウザ等のウインドウの枠を消して(隠す)
且つ画面最大化ということはできるのでしょうか?
またはフルスクリーンじゃなくてもウインドウの小窓のままでブラウザの枠を消すことって
できるのでしょうか?
ふつうに考えると無理そうですがたしか昔そういう記述を見たことがあったような気がしまして。
よろしくお願いします
WinSet, Region で特定の領域を表示しないようにはできることはできるが、
(単に描画とマウスイベントをスルーするだけ)
それで事足りるかは分からん
多くのブラウザが{F11}でフルスクリーンになるが、それで事足らない何かがあんのかね
俺、前にゲームで使ってたの残ってた
最大化と違って裏行っても死なないのがいいんだよね
コピペだから何がなんだかは理解してないのですまん
あとタスクバーが上になるようにした気がする
#SingleInstance Force
#Persistent
SetTimer Test, 500
Return
Test:
WinGet IDs, List, ahk_class Test
Loop %IDs%
{
ID := IDs%A_Index%
If ID not in %Old_IDs%
{
WinActivate ahk_id %ID%
WinSet, Style, -0xC40000, A
WinMove, A, , 0, 34, 1920, 1046
WinActivate, A
}
New_IDs .= ID ","
}
StringTrimRight Old_IDs, New_IDs, 1
New_IDs =
Return
>>684 そ れ だ
何もコントロールの種類変えることなかったなバカだ俺。
すごい助かった、ありがとー
>>689 いやこれかどうかわかりません。もっと短文でできたような気がするんですが。
僕の気のせいですね。このスクリプトは使えるんだろうか。
>>690 実際はあるけど、見えなくするっていうだけみたいですね。
枠全体を消すっていうのは無理っぽいですね。
配信を単独のポップアップで(ブラウザ)みてて、Media player classicみたいに
映像だけボーダーなしで写したいなぁと。
ありがとうございました。
動作には関係ないけどEDITERじゃなくてEDITORのような
関数内の変数をグローバルにするにはglobalと書きますが
例外的に指定した変数をローカルにする方法はありますか
左クリックを押している間、左クリックを連打する、ということをしたいです。
過去ログを参考に以下の様に書いてみましたがエラーがでます。
どこを修正したらいいでしょうか?
LButton::
Loop
{
If(!GetKeyState("LButton","P"))
Break
MouseClick, LIGHT
Sleep, 5
}
Return
私が馬鹿でした。
LIGHTではなく、LEFTですね。
Let there be LIGHT
FileMenu Toolsについて情報収集しようとしたら当該スレどころか関連スレすら見つかりません
どなたか誘導して頂けないでしょうか
エロ画像集めにLoop回してしまった後のむなしさな
>>702 スレチにも関わらず教えていただき、ありがとうございます
705 :
698:2012/02/21(火) 16:04:16.82 ID:Tp0Mjtgn0
左クリックを押しっぱなしにしているとき、左クリックもしくはキーボードの1つのキーを連打するということをしたいです。
LButton::
Loop
{
If(!GetKeyState("LButton","P"))
Break
MouseClick, LEFT
Sleep, 5
}
Return
このコードでやると、連打はできるのですが、SHIFT, Ctrl, 右クリックなどをしながら、左クリックを押しっぱなしにすると、
PCが止まります。PCの性能は問題ないはずです。
他に連打をさせるためのコードはありませんか?
*lbutton::
test()
return
test(sleep_time=100,key=""){
loop,
{
tooltip,% A_TickCount
send, % key
sleep, % sleep_time
} until 0=GetKeyState(trim(A_ThisHotkey,"*"), "P")
}
あ、そうそう、autohotkey_lじゃないと動かないよ
Mosegeture.ahkの中で使っている
Gui,Add,ListBox,xs y+4 w220 h80 section vLBGesturePattern gLBGesturePatternSelect AltSubmit,
で表示されるリストボックスの文字の中の __ だけ赤で表示させる方法を教えてください。
有難うございました。
peercast等のストリーミングの簡易動画再生プレイヤーを
スクリプトでウインドウ最大化(フルスクリーンではなく)させたいのですが、
ぐぐったスクリプトだと、小さな動画表示がそのままでウインドウが最大化するだけになってしまいます。
どうやれば、動画が伸長される形でウインドウ最大化できるでしょうか?おしえてください。
このスクリプトでは上記にかいたような変な最大化になってしまいます
(win7 x64)
ENTER::
WinGet, tmp, MinMax, A
If tmp = 1
WinRestore, A
else
WinMaximize, A
Return
ENTER::
WinGet, tmp, MinMax, A
If tmp = 1
PostMessage, 0x112, 0xF120, , , A
else
PostMessage, 0x112, 0xF030, , , A
Return
>>712 ありがとうございます。成功しました。すいません。
特定のアプリのメモリ使用量を取得したいのですがどうしたらいいでしょうか?
>>715 本当にありがとう!
うまくできました!
ショートカットキーの設定画面を作りたいんですが
Gui,Add,Hotkeyが一部のキー(Windowsロゴキー、Space、Deleteなど)を受け付けないので
別の方法でキーの決定を使用と思うんですけど(チェックボックス等でキーを決定してHotKeyに投げるとか)
そうゆうのに便利な既存のコンポーネントってありませんか
いまのとこ AutoHotkey Toolkit の kList が第一候補
ttp://www.autohotkey.com/forum/topic61379.html
開いているコモンダイアログのカレントディレクトリを、
任意のディレクトリに移動させたいのだが、
どうやるのが一番いいんだろうか
ファイル名のところにフルパスの文字列+Enterを送信して
無理やり移動させる方法をとってみたが、
タイミングにシビアだったりするし、
もっとスマートな方法はないものか。。。。
さらに悩むのはフォルダ選択ダイアログ。
それも同じことをしたいのだが、無理だろうか。
Runコマンドで DialogHandler 呼び出せ
>>719 うわっ、そんな便利なものが!!!!
フォルダの参照ダイアログまでいけるのか!
試してみたら動作も完璧、すばらしい!!
ありがとうございます!
横レスだが
DialogHandlerなんてオプションがあったかと思ったけど
ソフト名なのね
早速使うことにするわ
涼宮ハルヒの憂鬱が海外では放送されていないのにBDやDVDが爆発的に売れたのは
違法アップロードのおかげ。
違法アプロードだろうがものすごい宣伝効果があるということが証明された一例。
面白くなければ売れない、
赤松は売れない作品に金をくれという貧乏人用語発言でしかない。
つまり原発村ならぬ、まんが村を守りたいだけ、それが自分の利益につながるからwww
アニメヲタは、すぐに話の例えにアニメを出す
例え話とか以前に単なるマルチか誤爆だろ
727 :
名無しさん@お腹いっぱい。:2012/02/28(火) 09:01:34.16 ID:RqMR5WjG0
1.1.07.00 - February 27, 2012
Enhanced %var%() to support function references, objects imitating functions and the default __Call meta-function.
Fixed ControlGet List to work for ListViews where the script and the target process aren't both 32-bit or both 64-bit.
Fixed SendEvent with a key delay of 0; a change introduced by v1.1.05.04 caused it to be slower than intended.
Fixed Object.Remove(i) not adjusting keys if Object[i] doesn't exist.
Fixed an error in ComObjType() which may have caused unpredictable behaviour when it is called via an alternative name.
Fixed ExitApp to exit the thread if an OnExit subroutine prevents the script from terminating, instead of resuming execution after the block which contained ExitApp.
728 :
名無しさん@お腹いっぱい。:2012/02/28(火) 09:03:15.74 ID:RqMR5WjG0
Calling a function via an object no longer acts as a barrier to exiting the thread.
Consequently, if Exit is used or a runtime error occurs within a class method, the entire thread exits instead of just the function.
Calling a base-class method using base.Method() or similar inside a class definition no longer causes a UseUnset warning if the method doesn't exist.
Consequently, instantiating an object which has instance variables no longer causes a warning about the internal base.__Init method if the base class has no instance variables.
bk=%ClipboardAll%
この bk= ってなんですか?
参考ページか何かあります?
「変数」なんだけれども、
解説(参考)サイトか・・・探すのが難しい。
というのも超初心者用のサイトってプログラムの種類に関係なくメッセージボックスを
表示することからの解説が殆ど(全部?)なので
とりあえず、何か解らかいならそれをメッセージボックスで表示してみたりするといいんじゃないかな。
bk=%ClipboardAll%
msgbox, %bk%
※クリップボードが空なら(クリップボードに文字列がコピーされていないなら)メッセージボックスに何も表示されません。
bk という変数に ClipboardAll の中身(内容)を代入している。
こういうの慣れてない人はにゃ難しいらしいよ
EnvSet, bk, 〜〜
のほうが、行頭見るだけで何がしたいか分かるから
文法のパーサでもこの方が作るのは楽だし
=と:=の違いの解説が過去レスにあった気がする
736 :
名無しさん@お腹いっぱい。:2012/03/01(木) 22:50:20.62 ID:L2I4mI7Z0
どなたか詳しい方、教えて下さい。
現在ノート PC の LCD ディスプレイの電源状態を下記スクリプトで取得しています。
hDisp := DllCall("CreateFile", "Str", "\\.\LCD", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 0, "UInt", 0, "Ptr")
DllCall("GetDevicePowerState", "Ptr", hDisp, "IntP", stat) ; stat に状態が出力される
DllCall("CloseHandle", "Ptr", hDisp, "Ptr")
これを外部ディスプレイあるいは HDMI にまで拡張したいのですが、
デバイスをどのように指定すれば良いのか分かりません。
これに関する情報はどこで入手すれば良いのでしょうか?
>>730 この「何々=何々」の意味を理解した途端、
今まで意味不能と投げていた式や関数(の羅列された文字列)を理解できたんだったな
それまではAHKをキーリマップにしか使ってなかった
変数と条件分岐とループさえわかれば
たいていのスクリプトやプログラムは、入りやすいからな
そんなふうに思っていた時期が自分にもありました。でもDLLCallなんかはプログラマじゃない_。
APIなんて調べて使うだけだべ
hotkey知らなくてつい最近知ったけどけっこう便利らしいね
コードとか難しい?perl程度しか知識ないんだが・・・
>>742 サンクス
ミラーあったのか〜
なんか AutoHotkeyを流行らせるページ を見つけたけど廃墟になっていたから
どうしたものかと思ってたところだった
とりあえず入れてみるけど分からんかったことあったらここで聞いてもいい?
=、:=、とか、ifの書式とかで嵌ったわ
>>743 ここはどんな高度な質問も低レベルな質問も
眉ひとつ動かさず同じように的確なレスを繰り出すAHK職人が
何人か常駐しているからいい質問をしてスレを活性化してくれ
今は職業プログラマだけど、学生の時にまともに初めて触ったのはAHKだった。
(良くも悪くも)VBやCなどの文法ごちゃ混ぜな変態言語仕様だけど、
スクリプトを少し書くだけでテキストベースの処理だけじゃなくて
GUIの描画やキーフック何かも簡単にできるから、導入には良いかもしれない。
今だったらブラウザ上でJavaScriptで色々やってみる方が後の役には立ちそうだけどね。
質問です。教えてください。
マウスの周りにコンパスみたいな画像を出したいのですが
1枚で表示させるとポインタ下のウィンドウを判定するような動作に不都合があり,
マウスの所だけ離して,2枚の画像を操作したいのですが,やり方が分かりません。
1枚の時には下のような記述で上手くいきました。
CoordMode,Mouse,Screen
Test=3
delay=100
trans=45
image=%A_ScriptDir%\Test200.bmp
Loop,%Test%{
Gui,%A_Index%:+Owner +AlwaysOnTop -Resize -SysMenu -MinimizeBox -MaximizeBox -Disabled -Caption -Border -ToolWindow
Gui,%A_Index%:Margin,0,0
Gui,%A_Index%:Add,Picture,,%image%
Gui,%A_Index%:Show,X-200 Y-200 W200 H200 NoActivate,MouseTest%A_Index%
WinSet,TransColor,FFFFFF %trans%,MouseTest%A_Index%
trans-=15}
Return
~RButton::
MouseGetPos,sx,sy
Loop{
Loop,%Test%{
MouseGetPos,x,y
dx:=x-sx, dy:=y-sy, dist:=Sqrt(dx**2+dy**2)
if (dist> 10) {Sleep,%delay%
x-=100
y-=100
WinMove,MouseTest%A_Index%,,%x%,%y%}}
GetKeyState,state,RButton,P
If state=U
Break}
Loop,%Test%{WinMove,MouseTest%A_Index%,,-200,-200}
>>746 了解シマスタ
近々初歩的な質問するかもしれないけど
そのとき叩かないでね
初歩でも低レベルでもやる気がある質問は叩かれないよ
コード貼ってもらう気マンマン、考える気ナシのレスには容赦ないけどな
>>750 それはほんとに感じる
ほんとに初歩の初歩でも
最悪でも参考URL投下してくれたりとか本当に助かってる
1.1.07.01 - March 2, 2012
Fixed FileRead to ignore #MaxMem when reading UTF-16 on Unicode builds.
Fixed dynamic function calls with built-in vars such as %A_ThisLabel%().
間違っているところを教えてください。コロンで改行、
コントロールキーと同時押しでコロンが入力されるように
したいのですが、うまく動きません。
^`::: Send, `:
$`::: Send, {Enter}
' ← クォート
` ← アクセント
: ← コロン
, ← コンマ
デフォルトどおりアクセント記号をエスケープ文字として使用しています。
コロンが3つ並んでるのが見えなかった。正直すまんかった
「:」はスキャンコードで書くしか無いと思う
^sc028::Send, `:
$sc028:: Send, {Enter}
>>748 WinSet, Region
で透かしてみては
>>756 できました。ありがとうございました!!
760 :
748:2012/03/04(日) 18:56:36.61 ID:6mnCZ5R30
>>758 何とか2つに分けて表示できましたが,
肝心のポインターの所で行き詰っていました。
これで出来そうです。
有難うございました。
imgctl.dllを使えば画像の処理ができるみたいなんだけど、DllCall全然分からん
何かいいサンプルとかあったら教えてくれないか
具体的には、複数の画像を任意に組み合わせて一枚の画像として出力するスクリプトを作りたい
テキスト情報を収めた変数について
<!--と-->に囲まれた部分を取り除くにはどうすればいいですか?
aaa<!--test-->bbb
は aaabbb に、
aaa<!--test <!-- zzz -->bbb-->ccc
は aaaccc にしたいです
RegExReplaceで<!-- と -->のペアに囲まれている部分を繰り返して取り除こうとしたのですが
よくわかりませんでした
結果用文字バッファ用意する
文を頭から解析して、
開始タグ出現で コメント階層++
終了タグ出現で コメント階層--
コメント階層==0 ならバッファに文字列追加
コメント階層>0 なら積まない
コメント階層<0 なら解析エラー
文末で終了
>>762 F1::
Target := "aaa<!--test-->bbb"
;Target := "aaa<!--test <!-- zzz -->bbb-->ccc"
Pattern := "<!--.*-->"
msgbox, % RegExReplace(Target, Pattern)
Return
こうです
>>764 だめじゃね
aaa<!--test --> zzz <!-- bbb-->ccc
みたいな場合 zzz の部分も取り除かれちゃうでしょ
.*?で無欲な検索になるんじゃなかったか。
無欲にしたら
aaa<!--test <!-- zzz -->bbb-->ccc
aaabbb-->ccc
になるよ
ゲームサイト用にホットキーで作られたexeファイルがあるんですが
3月1日以降使えなくなりました
これってなにかソフト側に原因があるのでしょうか?
それともゲームサイト側の問題でしょうか?
質問です。
キー押し下げ時に発動と、キーを離した時に発動を使い分けようとすると
キー本来の動作まで発動されてしまう。
例えば
~a::send,1
a up::send,2
と設定してから「a」を押して離すと、
「12」と出力させたいのに「a12」になってしまう。
本来の動作をキャンセルさせるにはどうすればいいのでしょうか
>>769 3月1日以降は処理を停止する、なんてことは簡単にできるよ
>>770 a::send,1
a up::send,2
>>766 pattern := "<!--((?>(\s|\w)+)|(?R))*-->"
2バイト文字とか--->がはいると使えないけど
2バイト文字じゃなく英数字だったすまん
英数字以外がはいると、だな寝る
pattern := "U)<!--((?R)|.)*-->"
これでいける
おおー確かに!
無欲にするだけでよいのか。 Thx!です
>>776 へー、(?R)をそういう風に使うのか
それを使えば入れ子になっているものの置き換え処理が簡単にできそう
勉強になった
公式のダウンロードリンク切れてる?
全くつながらない
自己解決しました
cnetにも最新版があった
すみません質問です。
http://sites.google.com/site/agkh6mze/howto/wineventを参考に ウィンドウズのイベントを感知してアクションを起こすスクリプトを作ってみています。
スタートメニューの表示やウィンドウのリサイズはちゃんと感知してくれるのですが、
なぜかドラッグ&ドロップの開始・終了だけ感知してくれません。
MSDNのライブラリのSetWinEventHook関数のページを読んだり
引数の型名を変えてみたりしてみましたが駄目でした
どこが間違っているのでしょうか
Auto-executeセクションに以下のように書いています(AutoHotKye_L 1.1.07)
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x0000000f ; UINT eventMin : EVENT_SYSTEM_DRAGDROPEND(D&D終了。開始は0x0000000e)
, "UInt", 0x0000000f ; UINT eventMax : EVENT_SYSTEM_DRAGDROPEND(D&D終了。開始は0x0000000e)
, "Ptr", 0 ; HMODULE hModule : self
, "Ptr", myFunc ; WINEVENTPROC hWinEventProc :
, "UInt", 0 ; DWORD idProcess : All process
, "UInt", 0 ; DWORD idThread : All threads
, "UInt", 0x0003 ; UINT dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
TrayTip, "報告", "イベント起きしました。", 10, 0
Sleep, 10000
ExitApp
}
StringreplaseやStringGetPosで特定の文字使うとエラーになるんだが
これらの文字をいじりたい場合どうすればいいの?
>* Changed: Command names must be terminated with a space, tab or comma.
>The following characters no longer bypass this requirement: <>:+-*/!~&|^[].
これが原因なんだろうけど、この特殊文字使う文字列を変更する方法を知りたい。
ごめん。事故解決。
どう解決したの?
保険屋に連絡したんじゃね?
自己解決で閉じてしまえば単なるゴミレスだが
どんな初歩的でバカバカしいことでも、解決法を書いておけば
誰かの役に立つ可能性がある
コミュニティってのは情報の共有によって活性化する
自分だけじゃなく、誰かの役に立つかもしれないということを念頭におくのは大事なことだ
それは回りまわって自分のためにもなる
折角の良スレなんだから、もうちょっと考えようぜ
うん、自己解決した場合も、どうやったかは書いてほしいところではあるね
過去に罵られたことがあったのかも。他所だと内容によっては怒る人いるし
そんな事してどうすんだ?みたいなのもいるね
こっちの方が楽じゃね?みたいな別の方法をアドバイスするならともかく
質問そのものを否定するの
質問に対して質問で返す者とかね
791 :
名無しさん@お腹いっぱい。:2012/03/10(土) 11:21:27.45 ID:VCPaWkaZ0
任意のキー(Alt+End)を押してツールチップに一秒ごとに更新する現在
時刻を表示させて、また任意のキーを押してツールチップを消したいので
すが、ツールチップを消す方法がわからず、どなたかお知恵を拝借でき
れば嬉しいです。
「ツールチップに一秒ごとに更新する現在時刻を表示」させる方法は下
記のサイトでスクリプトを見つけたのをそのまま使っています。
●スクリプトの実行のされ方 - hoge
http://sites.google.com/site/agkh6mze/howto/scripting !End::
SetTimer, ClockTimer, 1000
Gosub, ClockTimer
Return
ClockTimer:
CoordMode, Tooltip, Screen
FormatTime, time, %A_Now%, yyyy/MM/dd(ddd) hh:mm:ss
Tooltip, %time%, 0, 0
Return
このスクリプトを実行するとディスプレイ左上隅に時刻が表示されるので
すが、「任意のキーを押してツールチップを消す」方法がわからず、今のと
ころ常駐スクリプトファイルをリロードして急場をしのいでいます。
「流行らせるページ」のリファレンスによれば Tooltip コマンドを Text パ
ラメーターなしで実行すれば非表示になるとのことですが、上のスクリプト
にどう組み込めばよいのかわからず途方に暮れています。
F1::
SetTimer, ClockTimer, Off
ToolTip
Return
こんな感じでタイマ止めて表示消す2行を任意のキーに割り当てればいい
どれかキーを押して消す方法は使っていません
3秒後に消す方法ならこれで試してみて下さい。
Tooltip, %time%, 0, 0
Return
↓
Tooltip, %time%, 0, 0
Sleep,3000
Tooltip
Return
794 :
名無しさん@お腹いっぱい。:2012/03/10(土) 12:10:22.63 ID:VCPaWkaZ0
>792
なるほど!
ToolTip を Off にする単体のスクリプトを作ればよいのですね。
希望通りに消すことができました。どうもありがとう!
>793
一定時間が経ったら消すというのもいいアイデアですね。
ClockTimer:
CoordMode, ToolTip, Screen
FormatTime, Time, %A_Now%, HH:mm:ss
ToolTip, %Time%, 0, 0
Sleep, 3000
ToolTip
Return
上のようにしてみましたが、秒のカウントが始まった直後(たとえば12時07
分01秒)にカウントが三秒間止まり、次に三秒後の「12時07分04秒」
が表示され、また三秒間カウントが止まる……の繰り返しになりました。
とりあえず >793 さんの方法で無事解決しました。どうもありがとう。
795 :
名無しさん@お腹いっぱい。:2012/03/10(土) 12:11:52.28 ID:VCPaWkaZ0
「とりあえず >793 さんの方法で無事解決しました」は「とりあえず >792
さんの方法で無事解決しました」の書き間違えでした。度々すみません。
!EndでClockTimerを有効にする前に時間を取得
ClockTimerの中でその取得した時間と今の時間を比較
差が3秒以上なら792で追加したホットキーラベルへ飛ぶ
もしくは
途中で送信してしまった
ClockTimerの間隔が1秒なので
ClockTimerの中でループ回数をカウント
3回まわってワン
cuda使えますか?
799 :
798:2012/03/10(土) 20:28:11.51 ID:FqXkP3EW0
故爆スマソorz
TooltipでのフォントサイズはDllCallとかで変更できないの?
Gui,Text....(枠なし指定)での文字表示は毎回ちょっと面倒臭い
802 :
名無しさん@お腹いっぱい。:2012/03/10(土) 23:26:36.41 ID:VCPaWkaZ0
>796-797
アドバイスありがとうございます。
>797 の方法がわかりやすそうに思えたのですが、Loop を使ったことがな
いのでどうも勝手がわからず、「流行らせるページ」のヘルプを参照して
下のようなスクリプトを書いてみましたが、3秒経ったあとも時刻のカウント
が止まらなくなってしまいました。
SetTimer, Clock, 1000
Gosub, Clock
Return
Clock:
Loop, 3
{
CoordMode, ToolTip, Screen
FormatTime, Time, %A_Now%, HH:mm:ss
ToolTip, %Time%, 0, 0
If A_Index > 3
Goto, ClockOff
}
Return
ClockOff:
SetTimer, Clock, Off
ToolTip
Return
>>802 797は説明一部省いてた&ループという言葉が紛らわしかったかな。
タイマーによってClockの部分が繰り返されているので
loopコマンドやa_indexは関係ないんだ。
カウント用の変数を用意
SetTimerの前に 0 にする。
Clockの中で変数に 1 足す。
4以上になったらClockOff
>>800 Tooltipじゃないけど、GuiやProgressを使った関数を作れば楽かも
※各々のオプションは適当
tooltip_gui("ほげほげ")
sleep, 2000
tooltip_progress("hogehoge")
return
tooltip_gui(msg) { ; Gui番号を指定すれば複数表示可
Gui, -Border
Gui, Font, S50
Gui, Add, Text, , %msg%
Gui, show
SetTimer, tooltip_gui_off, -2000
return
tooltip_gui_off:
GUI, Destroy
return
}
tooltip_progress(msg) { ; 複数表示不可
Progress, h100 W400 X300 Y200 B1 C00 ZH0 ZW0 ZY2 FM60 WM200 CWFFFFBF , , %msg%
SetTimer, tooltip_progress_off, -2000
return
tooltip_progress_off:
Progress, off
return
}
806 :
名無しさん@お腹いっぱい。:2012/03/11(日) 09:54:29.40 ID:mJwFUxbv0
>804
できました!
x := 0
SetTimer, Clock, 1000
Gosub, Clock
Return
Clock:
CoordMode, ToolTip, Screen
FormatTime, Time, %A_Now%, HH:mm:ss
ToolTip, %Time%, 0, 0
x := x + 1
if x > 4
Goto, ClockOff
Return
ClockOff:
SetTimer, Clock, Off
ToolTip
Return
AutoHotkey_L を主にランチャー(プログラム起動)とウィンドウのアクティ
ブ化に使っているのですが、変数やループの使い方を理解すればいろん
なことができることがわかりました。どうもありがとう。
使い始めたばかりで色々と試し書きしてたんですが何かやっちまったらしくて、
AutoHotkeyを実行すると画面が固まってしまってキーボードもマウスも受け付けなくなってしまいました。
タスクトレイにあるアイコンを右クリして、EDITなんたらのとこに書いてたんですが
あの設定ファイルはどこに保存されてるか分かりますか?
AutoHotkeyを起動させずに消して編集し直したいです。
それか起動せずに初期化する方法があれば教えてください
初回実行時の「My Documentsにautohotkey.iniを作りますか?」って問いに「はい」って答えた
覚えがあるならMy Documentsに、そうでなければ実行ファイルと同じところにあるんじゃないかしら
拡張子違いましたahk
autohotkey.ahkを探してみたらいいわ
>>808 My Documentsにありました。ありがとうございす
マウスカーソルがディスプレイの左端か上端にあたったらAltTabってできますか?
できるよ
マウスカーソルが上端または左端ならAlt+Tabを500msごとに繰り返すサンプル。
#persistent
#SingleInstance, FORCE
altdownflag = 0
settimer, taskchange, 500
return
taskchange:
CoordMode,Mouse,Screen
mousegetpos, x, y
if x and y {
send, % altdownflag ? "{alt up}" :
altdownflag = 0
return
}
altdownflag = 1
send, {alt down}
send, {tab}
return
MouseGestureL.ahkのほうがよさげ。
IEを制御したいのですが、コンボボックスの情報を取得する方法がありましたら教えて下さい。
htmlや全てのファイルとかがどれが選ばれているのか知りたいです。
>>814 俺も今日乗り換えた。いいね。
軌跡が意外によかった。
ありがとう
なるほどね
うん、落ちてるぽい
firefoxの現在ダウンロード途中のファイルの数、もしくはダウンロードの開始と終了はどうやって取得できますか?
それは無茶振りだなあw
非アクティブ状態であるFirefox または GoogleChromeのロケーションバーに
非アクティブ状態を保ったままURLを渡したいです
ControlClickでロケーションバーをクリックしフォーカスを合わせ
ControlSendで渡そうと思ったのですが、うまくいきませんでした
>>825 余裕でできる。
ただ、IEのDOM扱うことになるので、Javascriptでやった方が幸せになれる。
AHKからJS呼びたいならScriptControlつかうよろし
>>824 ドラッグ&ドロップ偽装するといいかも
リンクでもインターネットショートカットファイルのどっちでもよさげ。
ただ、ドロップされたらアクティブになるかもしれんが。
>>826 即レスありがとう。
制御できるのはIEやM$系だけ?
例えばOperaとかFxは制御できない?
>>827 D&D偽装ですか…
クリップボード内の文字列を送ろうと思ったのです
最初同じようなことをしようとUWSCを使ってみたのですが、非アクティブウインドウに対する操作は
こちらの方が強そうだと思ったので…
Hotkeyで作られたゲーム用のexeファイルがあるんですが
コンパイルされたアイコンって緑色に白字で「H」です
これを例えば違うアイコンでコンパイルとかすることも可能なんですか?
>>830 resource hacker を使ってアイコンを置き換える
やり方は 「resource hacker icon」 でググる
>>831 rshackerで出来なかったんですよ!
自分はプログラム音痴なんですが
専ブラJaneのexeアイコンもrs hackerで変更出来ないしそういう仕様なのかなと思って質問しました
変数に含まれた複数行の文字列をできるだけ高速に上下逆転するには
どの方法が無難だろうか
Loop, Parse, Text, `n
Temp = %A_LoopField%`n%Temp%
みたいな文字列を前に追加するやり方だと、内容が多い場合は処理が重くなるし
今は"Loopで先頭に連番付ける→Sort→連番削除"で対応しているけど
もっとスマートな方法があるのかな
836 :
835:2012/03/13(火) 20:22:07.17 ID:ZnjZGT2V0
ごめん。これじゃダメみたい。
>>837 レス有難う
ソースを見ると、配列で文字列を分解して後の番号から順に結合しているね
実は前に一度試した方法だったんだけど、処理速度は今の連番のやり方とほぼ同じだったので
処理速度的にはこの辺りが限界という事が分かってすっきりした
HotkeyコマンドでLabelを指定し
Label:
処理〜
とはかけるのに
Label::
と書けないのは仕様?前者の状態で処理の最後にreturnつけるとscript全体が止まっちゃって
ホットキーの用をなさなくなってしまうんだがどうしたらいいでしょうか
何を言っているのかさっぱり分からない
俺も何言ってるのか分からないわ。
書きかけでもいいからコード貼ってみたら?
>>832 Resource Hackerでアイコン書き換えを試してみたらダメだった。
試して確認もせず、レスしてごめなさい。
すまん、分かり難かったか…
大した処理じゃないんだけど
Hotkey, ^x, label
〜略〜(全く別の変数宣言とか)
;↑ここまでスクリプト起動時に1回だけ処理させる
;↓以下ホットキー
label::
msgbox, debug
return
ここでlabel::の時は^xのたびにmsgboxが表示されるけど、label:の時は起動時に
一気に最後まで処理が進んでreturnでAHKscript全体が止まる。以後^x押しても
反応しない。
あ、書き忘れ
label::の時はそもそもエラーがでて
Note:The hotkey label:: will not be active because it does not exist in the current keyboard layout.
Error: Target label does not exist. The current thread will exit.
と表示され、そもそもAHKが起動しないです。
>>845 ここはAutohotkeyのスレだけど、
別のプログラムと間違ってない?
AutoExecuteセクションのReturn抜けだな
Hotkey, ^x, label
〜略〜(全く別の変数宣言とか)
;↑ここまでスクリプト起動時に1回だけ処理させる
return
;↓以下ホットキー
label:
msgbox, debug
return
でやってみ
ごめん、そこまで言われる意味がよく分からないのだが
そんなに的はずれなこと言っているだろうか?
>>845なら、label:って書けばちゃんと^xでlabel:の処理が実行されるはずだが
>ここでlabel::の時は^xのたびにmsgboxが表示されるけど、
>label::の時はそもそもエラーがでて・・・そもそもAHKが起動しないです。
どっちだよ?
コロン2つでエラーが出るのは仕様通り。
コロン1つで最後まで処理が進むのも仕様通り。
スクリプト全体が止まるのは略してる部分に問題あり。
>>848 !?
さっきまで同じこと何回もやってダメだった気がしたんだが、今やったらあっさり動いたわ
なんてこった こんな単純だったとは とにかくありがとう
でもなぜ label::は許してもらえないような仕様にしたんだろうか不思議だ
>>853 不思議ってお前、意味が全然違うって分かってないのか
>>851 >ここでlabel::の時は^xのたびにmsgboxが表示されるけど、
は
^x::ならmsgboxが表示されるけどlabel::はエラーが出る って言いたかった
矛盾した書き方になってたスマン
ラベルとホットキーラベルの違いを理解してないだけだな
>>851 Hotkey, ^x, ^x
^x:
msgbox, debug
return
とか書いてんじゃね?これだとエラーにならないはず
つかあんま威嚇しなさんな
>>849 なんとなく慣れてる感じがしたから、
AHKに似たスクリプト系のソフト?と思って確認してみた。
悪気はない。ごめん。
断続的にAHK使って結構年月が経ってるけど、今までホットキーはすべてハードコーティング(いつも単体exe化してる)してたんで
たまたま気にならなかったんだなぁ iniから読み込もうなんて思い立ったのがいけなかったようだ
>>856の言うようにAHKの基本が分かってないようだから、また1から仕様読んでみます
色々とすまなかった こんな時間に親切だねこのスレは
コーティング()
書けば書くほど恥をかくわ もう寝る
某開発ツールをUnicode版に乗り換えたので
ついでにのんびり_Lに移行しようかと思ってるんだけど
ホットキーがかぶらなければ_Lとオリジナルの非_Lって
同時にインストール&常駐させて共存可能なの?
ZIP落としてきて別フォルダに突っ込んで実行する分には問題ない
インストーラ使ってシステムに登録する方法だと.ahkの関連付けとかは上書きされるんじゃない?
864 :
名無しさん@お腹いっぱい。:2012/03/17(土) 11:24:05.81 ID:qMmAp53S0
今まで7-32bitで下のをうごかしてたんだけど
7-64bitで同じのを書いたら
32bitで音量のメーターみたいなものが表示されてたのが
64bitで表示されなくなってしまった。
音量は上下するから機能的には不備はないけど視覚的に音量がつかめないのがちょっと
何かわかります? ahk_L です
!WheelUp::Volume_Up
!WheelDown::Volume_Down
申し訳ないあげてしまった
>>862 それぞれを別々のディレクトリ(フォルダ)にインストールし、
オリジナルを ahk、Lを ahl、L64を ah6 に関連付けして使ってる。
>>864 32bitの方に、ボリュームをメーター表示するソフトが入ってたんじゃないの?
おそらくメーカー製PCの機能だろうね
ノートPCとかでその手のアプリがプリインストールされてて
AHKの機能と勘違いしてる悪寒
ありがとうございます
確かに64bitのみOS単体で新しく買ってきて入れたもんですわ
そして32bitはメーカのOEMだ
となるとどうしようもないか
872 :
870:2012/03/17(土) 20:51:04.38 ID:vbBj4gRg0
代替のスクリプトですね
ありがとうございます
internet explorerでウィンドウを最後まで見たこと、
いいかえるとスクロールが最後までいったと判定することはできないでしょうか?
同じ種類のアプリケーションのウインドウをデスクトップを四分割した均等な大きさにして並べるってことを
Autohotkeyで一発でできたりしますか?
あふを多重起動してだいたいいつも4つぐらいまで起動しているのですが、
4枚をいっぺんにみたいときがよくあるんですよね。
あふじゃなくてもデフォルトのエクスプローラーのファイラとか。
どなたか既出のものがあればおしえてください。
ググる言葉かえたら一発ででてきました。
AutoHotKeyでウィンドウのタイル配置。
いまからやってみます。
わからない。Tilemove()
1行目からエラーがでるw
テキストを範囲指定した後 左マウスドラッグさせてスーパードラッグ機能みたいな事出来るかな?
1.範囲指定したテキストをクリップボードに送る
2.マウスのドラッグ方向に合わせて指定の動作を実行
3.既定のブラウザに検索クエリを送る
4.wikiなり Googleなりで検索結果を表示
2.はマウスジェスチャでなんとかなりそうなんだけど、1.3.がいまいちよく判らない。
Jane Styleや秀丸エディタとかからスーパードラッグ検索させたいんですが無理でしょうか?
>>881 #t::
tilemove(){
;略
}
こうしてないか?
#t::tilemove()
tilemove(){
;略
}
こうだぞ?
>>880 1. Send,^c
3. ブラウザをコマンドラインパラメータ付けて起動、またはドラッグエミュレーションで渡す
>Jane Styleや秀丸エディタとかからスーパードラッグ検索させたいんですが無理でしょうか?
左ドラッグでの実現は諦めたほうがいい
OSやアプリのドラッグ操作やテキスト選択動作と被るからそっちの動作ロックしないといけないし
テキスト範囲の選択中なのか、ドラッグ操作なのかの判別も必要になる
1,3,の質問内容見るにそんなスキルなさそうな感じだし
アプリの挙動と被らないミドルボタンやX1、2あたりに割り当てたほうがいいと思う
>>881 コード貼れ
>>880 とは別だけど、UWSCみたいにマウスで選択してる文字列を
コピーコマンドとクリップボード経由させずに、変数の中に
入れる方法ないの?
Edit互換のテキストボックスだったら ControlGetのSelectedで取れる
秀丸やサクラエディタみたいに独自コントロールで制御してるのは
AHKの標準機能では取れない
>>883 おっしゃるとおりです。883さんが見越したとおりでした。
前者そのままやってました。だってHPにそう書いてあるんだもん。
後者のようにしたらできました。これは便利ですね!
ありがとうございました。このスレのみなさんには想像できなかったかもしれませんんが。
>>882 単体でやってみましたが883のように、functionの使い方を元からしりませんでした。
ありがとうございました。
自分の無理解が原因なのにスクリプト書いた人の説明が悪いみたいな言いぐさはどうなの
ていうかこれがどういう意味なのか気になる
>このスレのみなさんには想像できなかったかもしれませんんが。
エスパー回答者の適切なレスで解決してるんだから想像できなかったつーこたないだろ。
それともタイル表示ごとき単純なスクリプトを
「こんなに便利なのに自分以外の人間は思いつかなかったのねププ」
って言ってんの?
>>889 ばかか?かもしれませんって書いてあるだろうが。読めないのか?
んでお前自身が「エスパー」って言葉つかっとろうが。
あほ
おっしゃるとかの敬語が非常に薄っぺらく感じられるようになるコメント有難うございました
二度と来ないでね
こんなとんでもないクソガキにも親切なレスがつくとか
とんでもない神スレだな
ここでウィザード級プログラマのありがたい一言
>>892 ありがとうございましたってお礼いってやつのレスに
横から関係ないやつが難癖つけて的外れなコメントして
嘲笑してるやつのほうが気持ち悪いだろ。明らかに。
糞ガキ以下だろ。普段の生活に置き換えてみろよ。
クズ以外のなにものでもないだろ。
この手の馬鹿が地上から消滅するスクリプト有りませんか?><
「かもしれません」と「エスパー」のつながりがさっぱりわからん
頭と説明力が圧倒的に足りない子みたいね
スーパーエスパーの解説求む
もう触るな
>>894 自分の無理解を棚に上げスクリプト提供者の説明に文句を言い、
884でお前の問題解決に力を貸そうとしたID:pNFWo0pP0をばかだのあほだのと罵る
普段の生活に置き換えたらとんでもないクズだな。
この状況で再びyRBbITJ30が沸いてくるあたりがクズのあらわれでしょ
しかも2chをリアルに置き換えて論ずるあたりも
それに
>>896に同意でわからないし
>877の時点で地雷だって気付けよ
ここまでクソムシのみ
AutoHotkeyで作れらたゲームサイト用のexeファイルあったんですがなぜか使えなくなりました
そのexeファイルを起動してゲームサイトに行くとEscキーが通常の右クリになって
右クリがEscキーになるというものでした
原因分かりますか?
ゲームサイトってことはどこかが運営しているゲームってことなのかな?
そのソフトを使うことによって運営側に対して何かしらの不都合が生じるから無効化されたとか?
単純にページタイトルが変わったんじゃないか?
>>903 ここの麻雀サイトです
ttp://tenhou.net/ 通常Escキーでパス/ツモ切りが可能なのですが
AutoHotkeyで作られたexeファイルを起動して右クリックでパス/ツモ切りが出来ました
これを使用することで対象サイトに不都合とかないと思うんです
というのも右クリックパスが出来る無料のFlash版専用ブラウザも公開していますから
なら無料のFlash版DLしてやればいいんじゃね?と思われるかもしれませんが
IEとかFirefoxなどの通常ブラウザでやる人もいて(自分もそうでした)
これを使うと凄く便利だったんですがなぜか今月になって急に使えなくなったんですよね
>>905 Flash用ツールってその該当Flashにフォーカス当ててないと使えないから、
天鳳側がフラッシュのアップデートかなんか行ったんじゃないの?
Flashゲームの場合
使用ブラウザのwindow → 該当Flashにフォーカス(要はフラッシュをクリックとかしてないとダメ)
とかじゃないと大抵のツールはうまく動作しない
ログインして「メニュー」→「ミニゲーム」→「練習麻雀」で試したけど
↓で普通に動いた
#ifwinactive, オンライン対戦麻雀 天鳳 / Flash版 - Mozilla Firefox
rbutton::esc
esc::rbutton
>>907 他の人も言っていたことなんですが3月1日から使えなくなったと言ってました
原因がFlashにあるのか天鳳側にあるのか
>>908 マジですか?
>>906のzipので動きました?
自分の環境もFirefoxなんですがダメなんですよね
>>906のファイルを逆コンパイルしたら
#IfWinActive 天鳳 / Flash版
RButton::Esc
Esc::RButton
となっているから、
>>904が正解です。
>>910 Hotkey入れてないんですがコンパイルできますか?
>>912 ありがとうございます
ちょっとやってみますが全く予備知識がないので教えてクンするかもしれません
ここにいる方からすればアホな質問になるかもしれませんがよろしくお願いします
教えて君するかもなんて予防線貼ってたら出来るものもできなくなるから頑張れ
>908だとFirefoxでしか動かなくね?
SetTitleMatchMode ,2 ;1:前方 2:中間 3:完全 RegEx:正規表現
#IfWinActive 天鳳 / Flash版
RButton::Esc
Esc::RButton
とかだと今後も多少メンテでタイトル変わっても使えるかも
ただし誤爆の可能性は上がるけど
>>917 他のAutohotkeyスクリプトが起動しているなら、
他のスクリプトのホットキーと干渉して正常に動いていないかもしれないので
とりあえず、すべてのAutohotkeyスクリプト(タスクトレイの H マークのアイコン全て)を終了させる。
>>915 の4行をコピペしてスクリプトを実行する。
Windowsを再起動してみては。
それでもダメなら
SetTitleMatchMode ,2 ;1:前方 2:中間 3:完全 RegEx:正規表現
#IfWinActive 天鳳 / Flash版
RButton::
send, {Esc down}
sleep, 200
send, {Esc up}
return
Esc::
send, {RButton down}
sleep, 200
send, {RButton up}
return
を試してみる。
これでダメなら俺はわからん。
Win7 pro 64bitでFirefox 11 と Win7 StarterでFirefox 11
の2つの環境で
>>908 >>915 の両方が「練習麻雀」で動いた。
>>920 再起動して
>>920をやってもダメでした
同じように
>>908、
>>915の双方もダメでした
ためしに
>>912を参考にコンパイルもしてみましたがやはり反応なしです
環境の問題なんでしょうか?
当方XP pro sp3で以前の
>>906でアップしたのは使えました(2月まで)
すいませんがコンパイルしてアップしていただけますか?
ファイルエンコーディングをUTF-8にしてないんじゃね?
>>922 SJISになっていました
UTF-8にしたらできました!
ありがとうございます
>>915さん
>>920さん大変お手数お掛けしました
たぶん初歩的ミスなんでしょうけどすいませんでした
乙
お困り質問者には全力でお助けするがバイナリ配布には一切応じない
スレ住人の一貫とした信念に感動した
好きなアイコンを使ってexe化することは可能なんでしょうか?
一応、過去ログも検索してみたところ
[AHK_L] fincs' scripted Ahk2Exe rewrite (with GUI) - r3
www.autohotkey.com/forum/topic74816.html
で使えるというレスがありましたが
英語難民でよく分かりません
どなたかご教授を
Ahk2Exeで CustomIcon指定するだけでいけると思うが。
.icoファイルの作り方がわからんとかいう話なら日本語でググれば出てくる
>>925じゃないが CustomIconで指定すると
通常のときは変わるがPause Scriptとかにすると赤/白のまま変わらないんだよな
おい標準アルゴリズムにヒープくらいいれとけよプロコンのD問が解けねぇじゃねぇか
マウスがウィンドウの枠のどこを指しているかを判別する方法を見つけたので、
それを試してみたんだが、最小化(8) 最大化(9) 閉じる(20)各々のボタンが、
微妙に位置がズレてて困ってる。
この位置ズレを修正する方法があれば教えてください。
f1::
CoordMode,Mouse,Screen
MouseGetPos, x, y, h, c
a := DllCall("SendMessage",UInt,h,UInt,0x84,UInt,0,UInt,x | y <<16,UInt)
tooltip,%a%
return
f1 Up::tooltip
非クライアント領域のhittestでってのは散々既出だな
・MouseGetPos で コントロールとれない場合は親窓のhwnd使う
・マルチウィンドウで座標が負になる場合のLPARAMの考慮する
・MouseGetPosの示すHWNDが怪しいなら別メソッドで取得する
・WindowFromPoint使ってみる
・非クライアント領域の独自描画しているアプリ(タイトル
バーでないのにドラッグできるとか)は諦める
1.1.07.02 - March 22, 2012
Fixed a rare crash which can occur when GetClipboardData() fails.
Fixed ComObjArray() to return an empty string on failure instead of an arbitrary integer.
Fixed Object.Remove(i, "") affecting integer keys when !Object.HasKey(i) .
>>813 これ便利そうでよさげだなと横から借りパクしようとおもたんだけど
うちのWin7 x64でぴくりとも動かなかった・・
環境毎にどこか変えるんでつか?
>>934 Win7 pro 64bit で
>>813 をそのまま試したけど
Autohotkey、Autohotkey_L 32bit、Autohotkey_L 64bit の3種で動いたよ
例によってAutoExecuteセクションで引っかかってる悪寒
既存スクリプトに組み込むなら5行目まではスクリプトtopに置け
>>813をカーソルが無意識に端にいくことも考えて、基本構造はそのままで
何かのキーを押しながらカーソルが端で発動
→Win+T に出力
→Shell_TrayWnd がアクティブのときホイール上下を(Left,RightもしくはUp,Down)に変換
→最初の何かのキーをEnterに変換
ってしたいですのですがどうしたらいいでしょうか?
downflag とかよくわからないです この場合813で何がいらないとかも
GetKeyStateあたりと座標とを論理積をとればいいでしょうけど・・
#IfWinActive 〜はわかります
頑張って試行錯誤してみましょう
案外自分でできちゃったりするものです
解決したらその手順を詳しく書いてみるとみんなが喜びますよ
>>937 #persistent ; 意味は
>>1 の解説サイトや日本語ヘルプを参照
#SingleInstance, FORCE ; 同上
altdownflag = 0 ; altdownflag という名の(フラグ)変数を用意し、値が0(false)なら「Altを押していません」ということにする
settimer, taskchange, 500 ; 500msごとに taskchange というサブルーチンを実行する
return ; AutoExecuteセクションはここまで
taskchange:
CoordMode,Mouse,Screen ; マウスカーソルの座標をスクリーン上の絶対座標にする。
mousegetpos, x, y ; マウスカーソルの座標(x,y)を取得する。
if x and y { ; 「 if x=0 or y=0 」や「 if !x or !y 」と同じ。つまり、「もし、マウスカーソルが上端、及び左端以外なら」
send, % altdownflag ? "{alt up}" : ; altdownflag が 1(true)ならAltを開放する(Alt Up)
altdownflag = 0 ; Alt を開放したのでaltdownflagを0(false)にする。
return ; サブルーチンの処理をここまでとし、呼び出し先のところへ戻る
}
altdownflag = 1 ; ↓でAltを押したままにするので altdownflag の値を1(true)にする。
send, {alt down} ; Alt を押したままにする。
send, {tab} ; Tabのキーストローク(Tab Down → Tab Up)を送る
return ; サブルーチンの処理をここまでとし、呼び出し先のところへ戻る(というか、ココまでしか無い)
で、Hotkey機能でDIOの「無駄」を再生してるやつはおらんのか
USBにつなげている二つのキーボード両方ともが
キーが押しっぱなしの状態にしばしばなります。
これはAutohotkeyの既知の問題でしょうか?
ゲーム時のみ、押したキーを離しているにもかかわらず
ゲーム内では押しっぱなしの状態になっていることがあります。
Ctrlなどモディファイアだけじゃなく押したすべてのキーでなります。
ゲームもひとつじゃなく3Dのほとんどのゲームでなります。
autohotkeyもx84とx64両方最新のをつかったのですがかわりません。
ロジクールのsetpointの問題なのかなぁ
疑わしい点を一つ一つ排除して調べるしかない
ソフトウェアなら常駐外して、USBならPS/2に挿すとか
以前流行らせるページに載っていたマウスホイールのスクリプト
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd%
{
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
return
↑がFirefox11上で動かないんですが・・・どなたか修正してくださいませんでしょうか?
ホイールアップです↓
*WheelUp::
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0x00780000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd%
{
SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
return
autohotkey_lの更新内容の
>Fixed Ctrl/Alt/Shift key-down hotkey breaking any corresponding key-up hotkey defined before it.
>Fixed key-down hotkeys to always use the hook if defined after a key-up hotk
それぞれどういうこと?
ほんとだw早く鎮火させないと大変なことに!!!
I corrected the fault ...っておめーが訂正したわけじゃねーから!!!
別にいいんじゃないの?
っていうか特におかしいところはないじゃん。
他人のスクリプトをforkして改造する人なんて
autohotkeyのforumにはそれなりにいるんだし
初心者質問ですみませんが……
;Ctrl+スペースで終了、エクセルがアクティブウィンドウの時はAlt+スペースに
#IfWinNotActive ahk_class XLMAIN
^Space::WinClose,A
#IfWinActive ahk_class XLMAIN
!Space::WinClose,A
これにOpenJeneの書き込みウィンドウ(TWriteForm)の場合も加えたいんですが、
どう変えれば良いのでしょうか?
>>950 >>945 有難うございます
ロムってろと言われそうですが分からないので
スクリプト貼って頂けないでしょうか?
ROMらないくていいから、自分でやって詰まってからおいで
ここは自浄努力する質問者には親切だが、思考停止してる奴にに手助けする人間はいないよ
>>951 #IfWinActive ahk_class TWriteForm
!Space::WinClose,A
を足しゃいいのでは?
>>953 いろいろ試してみたんですが……
それも足してみたんですが、
#IfWinNotActive ahk_class XLMAIN
^Space::WinClose,A
の方が動いてしまうので、これを無効にしたいのです。
#IfWinNotActive ahk_class XLMAIN もしくは TWriteForm
みたいにできればいいんですが、or入れても|入れても動かないしわからずじまいです……
>>951 上から条件に一致するものが優先して実行されるので順番を入れ替える
#IfWinActive ahk_class TWriteForm
!Space::WinClose,A
#IfWinActive ahk_class XLMAIN
!Space::WinClose,A
#IfWinNotActive ahk_class XLMAIN
^Space::WinClose,A
or や | を使いたいなら正規表現を使う
SetTitleMatchMode, RegEx
#IfWinActive ahk_class (TWriteForm|XLMAIN)
正規表現がよくわからないならウインドウグループを利用する
GroupAdd, GroupA, ahk_class TWriteForm
GroupAdd, GroupA, ahk_class XLMAIN
#IfWinActive ahk_group GroupA
>>949 GNUだからコードの改変は好き勝手にどうぞだが、付随する
ドキュメントには著作権があるのが当然。それなのに、
紹介ページと説明書きの継ぎ接ぎで変なchmを作って配って
自分の著作物だと主張している。
極めつけは、継ぎ接ぎヘルプのなかで流行らせる氏管理人の
名称が、用務員みたいなニュアンスの単語に置き換わってる。
元々まとまって完成してた流行らせる氏の日本語説明書きを、
機械翻訳にかけるものだから、至る所が文として破綻しており
真面目に読んでるであろう外国人に申し訳なく感じる。
その点、MouseGestureL.ahkとして引き継いだ開発者さんは、
跡地のBBSで一言挨拶を入れて、結果、跡地のからリンクまで
もらえているのに、あまりにも対称的。
それでも、おかしくないと言えるの?
そういうのは>947でネタ上げた時点で言ってくれよ
>949じゃないがフォーラムざっと舐めただけじゃわからんかったし
ひどいなー、そんなことになってたのか
プンスカ
ここで聞いてもあれだが、Chromeで新しいタブを開いた時に、「最近閉じたタブ」へ
キーボードでフォーカス移すってどうやるの?
仕方ないから、MouseClick,Lbuttun何かで代用してるけど。
※その後10個の「最近閉じたタブ」候補がでるけれども、それもキーボード操作で貫徹させたい。
こめこめ Chrome内でFlashにフォーカスを奪われた時、(方法わからなかったが)Alt押せば
フォーカス戻ることが最近わかった。
~Ctrl::
if A_TickCount < %ctrldouble%
{
run,notepad.exe
ctrldouble=0
}
else
{
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return
コントロールキーをダブルクリックでアプリが実行されるようにしたいです。
しかし上のように記述すると、ctrlを押しっぱなしでアプリが連続起動してしまいます。
長押しでは無効にしたいのですがどうすればいいですか。
特定のソフトウェアが起動した場合、日本語IMEがonになるような設定は可能でしょうか?
Windows 7 64bitで Jane Viewを使用しているのですが
起動時にはimeがOFFで無変換モードになっていて 毎回手動で話し言葉モードにしています
これをなんとか出来るなら これを機に当ソフトを始めて頑張って 記述をかいてみようと思うのですが
>>961 こんな感じでどうかな
LCtrl,RCtrl,Ctrlのどれを使うかはお好みで
$LCtrl::
If (A_PriorHotKey = A_ThisHotKey && A_TimeSincePriorHotkey < 300)
{
Run, Notepad.exe
}
Else
{
Send, {LCtrl Down}
KeyWait, LCtrl
Send, {LCtrl Up}
}
Return
>>963 ありがとうございます。
ctrl長押しで連続起動しなくなりました。
しかし、ctrlをダブルクリックしたあと、すぐにキーを離さないと
アプリが連続起動してしまうようになってしまいました。
キーリピート?
Gui, Add, StatusBar, cRed, Test
で文字色指定しても変わらないんだな
ステータスバーの文字色を指定する方法はないものか
>>962 Jane Viewの起動時だけime-onにしたいなら
事前にime側でIME-Onのショートカットキーを割り当てておき、
Autohokey(run, Jane Viewのパス)でJane Viewを起動させ
Jane ViewがアクティブになったらIme-Onのショートカットキーを実行させるとか。
>>965 >>969 ありがとうございます
> Autohokey(run, Jane Viewのパス)でJane Viewを起動させ
> Jane ViewがアクティブになったらIme-Onのショートカットキーを実行させるとか。
なんとなく解決方法が見えてきたような気がします。
チャレンジしますね
そろそろ次期テンプレか、phpBB形式の日本語フォーラムが欲しいですね。
ctrl+cやctrl+vなどのショートカットが効かなくなりましたすいません
レス消費遅いスレだし
そろそろ次スレのテンプレ案まとめ始めたら?
>>974 >>963 の Return の直前に
keywait, ctrl
でも入れてみては。
あと、ならないならならないで自分で試行錯誤しないとスルーされるだけだよ。
>>975 お願いします。
>>976 ありがとうございます。
ためしてみます。
自分でやろうにもなにをどうしたものかさっぱりで。
初心者用の資料が足りなすぎると思います。
スクリプトのエラーで↓みたいなダイアログが出ますが
エディタでエラー箇所にジャンプする機能・設定ってありますか?
Error at line 44 in #include file "D:\myscript.ahk".
Line Text: x
Error: This line does not contain a recognized action.
The script was not reloaded; the old version will remain in effect.
>>976 別に自分が求める追加要素はないですし・・
ただ個々に適当に提案してみては?位なので
>>978 うちはこんな感じでやってる(全角スペース→半角スペース変換)
わざわざ2回実行してるのは、常駐タイプのスクリプトだとRunWaitで戻ってこなくなるため
AHK常駐環境だったら>980方式で組み込んじゃったほうがスマートかも
;まずは普通に実行してエラーダイアログが出ないかチェック
Run, %A_AhkPath% D:\myscript.ahk,,UseErrorLevel,PID
If (ErrorLevel)
MsgBox,16,%A_AhkPath% D:\myscript.ahk `n起動エラー %ErrorLevel%
WinWait,ahk_pid %PID%, The program will exit. ,1
IfEqual ErrorLevel,1, ExitApp
;エラーっぽかったらリダイレクトで再実行
WinClose, ahk_pid %PID%
RunWait,%ComSpec% /C %A_AhkPath% /ErrorStdOut D:\myscript.ahk > d:\err.txt,,hide UseErrorLevel
;エディタのダイレクトタグジャンプ使いたならFileRead/FileAppend とかで整形
;エディタで開く
Run,notepad.exe d:\err.txt,,UseErrorLevel,%PID%
WinActivate,ahk_pid %PID%