1read 100read
2011年12月1期ソフトウェア6: AutoHotkey スレッド part13 (359)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
・ 次のスレ
7: Excel友の会 (399)
8: Mozilla Firefox 非公式ビルド(MOD)スレッド11 (822)
9: 動画再生ソフト Part23 (482)
10: getter1【超高速】ゲッター1 Part2 (637)
AutoHotkey スレッド part13
- 1 :11/09/28 〜 最終レス :11/12/09
- ■配布元
http://www.autohotkey.com/
本家Autohotkeyは事実上開発停止で、派生のAutoHotkey_L(AHKL)が主流。
新規利用者には日本語の扱いで不具合の無いAHKLのユニコード版の利用を推奨。
■日本語解説等
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
アップローダ
http://loda.jp/ahk/
■派生版
IronAhk (.NET製、クロスプラットフォーム)
http://www.ironahk.net/
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.net/~tinku99/ahkdll/
■ 関連スレ
AutoIt
http://pc12.2ch.net/test/read.cgi/software/1277173327/
テンプレ>>2-10
- 2 :
- ■重要事項
オリジナルである、本家 "AutoHotKey" の開発は終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流。
スクリプトについては、それが本家AHKで動くものであるか、Lであるのかに注意。
AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
→http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/
→http://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/index
※ 新規利用者にはAHKLを推奨するが、移行に際してすくなからずの改修が必要となる。
特に、旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない。
安定利用できている環境を崩して移行するかどうかは各人の判断による。
■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
■過去スレ
@http://pc7.2ch.net/test/read.cgi/software/1098531338/ Attp://pc7.2ch.net/test/read.cgi/software/1129836713/
Bttp://pc11.2ch.net/test/read.cgi/software/1157043396/ Cttp://pc11.2ch.net/test/read.cgi/software/1184556627/
Dttp://pc11.2ch.net/test/read.cgi/software/1201502896/ Ettp://pc11.2ch.net/test/read.cgi/software/1219130051/
Fttp://pc12.2ch.net/test/read.cgi/software/1230694774/ Gttp://pc12.2ch.net/test/read.cgi/software/1243005818/
Http://pc12.2ch.net/test/read.cgi/software/1253888736/ Ittp://pc12.2ch.net/test/read.cgi/software/1265518996/
Jttp://hibari.2ch.net/test/read.cgi/software/1280482227/ Kttp://hibari.2ch.net/test/read.cgi/software/1296446228/
- 3 :
- 以下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 )を解除する。
- 4 :
- 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ではできない。
- 5 :
- 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のようにインライン化しているアプリでは無理)
- 6 :
- ■ その他
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)を利用すると真のマルチスレッドが利用可。
- 7 :
- ■リンク等
AutoHotkey メモ - Principia
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
なまず日記
http://www.tierra.ne.jp/~aki/diary/
eamatの日記
http://d.hatena.ne.jp/eamat/
1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/
Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較)
http://rosettacode.org/wiki/Category:Programming_Tasks
以下公式フォーラムより
http://www.autohotkey.com/forum/topic8795.html Tips N Tricks
http://www.autohotkey.com/forum/topic26855.html ListViewで大きな画像を扱いたい
http://www.autohotkey.com/forum/topic19509.html GUIで標準のもの以外を使いたい
http://www.autohotkey.com/forum/topic20097.html GUIを手軽に作りたい
http://www.autohotkey.com/forum/topic39598.html DllCallで定数調べるのマンドクセ
http://www.autohotkey.com/forum/topic22975.html コンパイルユーティリティ%28Compile_AHK II)
http://www.autohotkey.com/forum/topic23072.html HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい
http://www.autohotkey.com/forum/topic19367.html Windowsのイベントをフックして色々やりたい
http://www.autohotkey.com/forum/topic20701.html ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
http://www.autohotkey.com/forum/topic20701-42.html ShellDesktop() : デスクトップで選択されたファイルを取得
http://www.autohotkey.com/forum/topic21451.html ポップアップメニューの情報を得る
- 8 :
- ● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。
<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。
- 9 :
- ★教えて君五大要素★
1 読まない (文盲)
2 調べない (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない (馬鹿)
5 人を利用することしか頭にない ()
YES → 【見つかった?】 ─ YES → じゃあ聞くな
/ \
【探した?】 NO → なら、ねぇよ
\
NO →
- 10 :
- 670 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/07/20(水) 07:04:25.19 ID:Bb1hKbPa0
■回答できるレベルの人へお願い■
このスレは親切な人が多いと思うけど、もう日記に対する検証&レスは、
たとえ対処法をわかっている人がいても、レスは一切やめにしてくれないか?
こいつがやってることは
「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」
ってことだ。しかも、一度だけならまだしも、何度も繰り返している。
これまでに、このスレではこの手の質問者は居なかったと記憶する。
いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。
- 11 :
- >>8-10
そういうのを気にする人はそういう質問をしない。
数日で1スレ消化なら自治があったほうが良いかもれいないけど
1スレ消費に1ヶ月以上掛かるところで自治を促すものが多いと
それを気にする普通の人が質問しづらくなり
気にしない教えてくんが相対的に増えて縮小、衰退していく。
- 12 :
- スレ立て乙
気づいたんだけど>>7の日本語のページって情報があまりにも古くない?
- 13 :
- 乙だが >9はいらないだろ
探して見つけて試して動かなかったから相談に来る人間は拒否してない
質問ですらない日記は別だけどな
- 14 :
- MouseMove, A_CaretX,A_CaretY
MouseMove,%A_CaretX%,%A_CaretY%
いずれも エクスプローラーやメモ帳のキャレットには反応しますが
firefox のキャレットに対してうまくはたらかず
左上にいってしまいます
MsgBox,A_CaretX,A_CaretY
だと 8.30 と出力されます
対処法はないのでしょうか?
- 15 :
- 8,30でした
- 16 :
- ホイール操作をした場合マウスカーソル下のコントロールに下スクロールを送りたいのですが以下の処理で反応してくれません。
マウス下のコントロールを取得して、そこにキーを送っているつもりですが、おかしい箇所を指摘してもらえないでしょうか?
MouseGetPos, xx, yy, , control, 1
ControlClick, x%xx% y%yy%, , , WheelDown, 1, Pos
;こちらでもダメでした
ControlClick, %control%, , , WheelDown
- 17 :
- >>16
WinTitleが未指定。
- 18 :
- >>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
- 19 :
- タスクトレイメニューに複数の項目をもつサブメニューを入れたい
ルート─サブ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になるから
上書きされてるんじゃないかとおもうんだけどどうしたら良いかが分からない
- 20 :
- #Persistent
Menu, サブ, Add, サブ1, Show1
Menu, サブ, Add, サブ2, Show2
Menu, TRAY, Add , ルート, :サブ
Return
Show1:
msgbox, Show1
Return
Show2:
msgbox, Show2
Return
こういうことかいね?
- 21 :
- ジョイパッドの3ボタンを同時押しした時にCtrl+WheelDownを
五回行うっていうプログラムを組んでいるのですが
Ctrl+WheelDownのような特殊なキーを含んだ動作は
コンビネーションキーで使用することはできないのでしょうか?
- 22 :
- そういう制限は見聞きしたこないな
ま、とりあえず、晒せ
- 23 :
- 晒すほどのものにはなってないのですが一応。
Joy2::
if(GetKeyState("Joy7") && GetKeyState("Joy8"))
{
Send,{};ここに何を入れるかで悪戦苦闘中
}
return
- 24 :
- いわゆる「コンビネーションキー」つーわけでも無いのか。
なら普通に Send, ^{WheelDown} とかでいいんでないかい。
^ の意味はマニュアルをよく読むこと。
- 25 :
- 回答どうもです。
Send,^{WheelDown}
これは真っ先に試してみたんですが反応せず。
Send,{WheelDown}
これは反応ありですが、「^」をつけるとどうも動かないんですよね。
- 26 :
- >>25
キーを押している時間を長めに設定する
setkeydelay,,50 ; 反応しない場合は50msより大きい値にする(200msとか)
Send,^{WheelDown}
setkeydelay,,-1 ; 元に戻す
- 27 :
- Send, {Ctrl down}{WheelDown 5} {Ctrl up}
- 28 :
- 色々とありがとうございます。が、申し訳ない。
どうやら同時に起動してたソフトが悪さしてたみたいで、
そのソフトを一旦切ってみたら>>24の方の方法でも問題なく動きました。
- 29 :
- なんもしてないが、解決して何より。
だが、
悪さ、というか干渉してるのを具体的に書くと同じようなことがおきた別の人のためになるんじゃないかな
- 30 :
- ちょっとした作業の繰り返しをしたいときに
キーボードやマウスでの操作を記録して
再生するスクリプトってありますか?
- 31 :
- 本家版(Version 1.0.48.05)に同梱されている
AutoScriptWriter(AutoScriptWriter.exe ) を使う。
- 32 :
- >>20
うまくいきました!
サブメニューにしたいもの全てに同じメニュー項目名をあてれば良かったのですね
どうもありがとうございました
- 33 :
- 自作のポップアップメニュー表示中の割り込み制御はいつになったら実装されるのか
- 34 :
- 現状でやりたいなら、DLL版つかって別スレッドのスクリプトで動かすのがせいぜいだな
- 35 :
- つか前スレでも聞いといてなんだけど、AHKメニューに縦区切りつけるのって標準の命令じゃ無理なん?
- 36 :
- >>29
具体的にどう悪さをしていたのかって言うのは分からないので
状況だけしか書き込めないのですが
・AHKと同時にJoyAdapterというパッド→キー変換ソフトを使用していた
・そのソフトの設定でJoy2ボタンにCtrlを割り当てていた
・同ソフトでJoy2=Ctrlの設定を解除したら正常に動作した
と、まぁこんな感じです。
- 37 :
- >>35
http://www.autohotkey.com/forum/topic74666.html
縦区切りてこういうの?
- 38 :
- >>37
おぉ、まさにこういうやつ。情報dです
やっぱ標準じゃ無理なのね。InsertMenuItemなんてコール初めて知った
- 39 :
- 韓国語とか中国語のimeを使っているとき、
imeの状態や変換モードを取得したり設定するにはどうすればよいのでしょうか。
- 40 :
- dllcall imm32.dllでググればいいんじゃね?
- 41 :
- 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:
- 42 :
- http://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/Compatibility#TOC-3
このあたりでは
- 43 :
- >> 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 は公開されておらず、そこで手詰り。
誰か猛者はおらぬか…
- 44 :
- >>42
理解するのは難しそうだけど読んでみるよ、ありがとう。
>>43
おお、先駆者がいたのかw
Thumbsenseはいったいどうやって32,64bit対応させてるんだろうね?
しかもあれ確か5年以上前の64bitすらなかった時代のソフトなのに。
- 45 :
- >>44 ThumbSense は 32 ビットソフトなんじゃないの?
32 ビットでならこれまで通りタッチパッドの情報取得が可能。
- 46 :
- なので AHK の x86 (32 ビット) 版でなら >41 の ThumbRemap も普通に動く。
- 47 :
- もちろんその通りだよ。
問題は、そいつが64bit環境でも普通に動いてるってこと。
ひょっとして、AHK_L64bitじゃなく昔のバージョンのAHKを使えば動いたりは・・・?
しないよな、やっぱw
- 48 :
- ナ、ナンダッテー
- 49 :
- 32bit版らしきもの
(http://www.autohotkey.net/%7ELexikos/AutoHotkey_L/
のUnicode x86)
を落として使ってみたけど動かずw
- 50 :
- ANSI版じゃないの?
- 51 :
- >>47
64 ビット OS 上でも ThumbSense のプロセスは 32 ビットでしょ?
同じ理由で ThumbRemap スクリプトは 32 ビット AHK でなら正常動作する。
また >>49 を使う場合は、スクリプトを UTF-8 で保存しないと動かないよ。
- 52 :
- PostMessage, 0x111, 65305,,, tometai.ahk - AutoHotkey
上のように、別のスクリプトである tometai.ahk をsuspend するコマンドで
A::Suspedn,off
で出来るような Suspend 命令に追加コマンドをつける方法はありますか?
- 53 :
- 1.1.05.00
http://www.autohotkey.com/forum/topic77423.html
super-global助かるわー
- 54 :
- そろそろv2くるか
- 55 :
- >>50-51
昔のXpマシン引っ張り出して旧ahk.exeと置き換えたら動いた!
できれば64bitで正式に動かしたいからちょっと気持ち悪いところはあるけど当分はこれでいいや、ありがとう。
- 56 :
- >>52
どっちにしろ PostMessage するんだったら、
OnMessage で待ち受けてwParam,lParamの値で分岐して処理が走るようにすりゃいい。
あとは、投げ側と受け側が同じメッセージ番号使うって約束だけ守ればいいかと。
- 57 :
- 使用中で容量が増え続けロックがかかっているファイルがあります。
エクスプローラでアクセスするとその時点のファイルサイズを取得できるのですが、
コマンドのFileGetSizeを使っても、その時点のファイルサイズを取得できません。
Autohotkeyでその時点のファイルサイズを取得する良い方法はないですか?
- 58 :
- >>53を見て思ったんだけど
autohotkey_lでどういう場面でクラスを使うんだろう
これまで何年もクラスなしのautohotkeyに慣れ親しんできたし
他の言語もよく分からないので、今いちピンとこない
掲示板の反応を見る限りではかなり好評みたいだから
使用例とかノウハウを具体的に見てみたい
- 59 :
- >>56
それで出来ましたありがとうございました
- 60 :
- a::
Gui, Add, Text, , %A_Now%
Gui, Show, , TIME
return
///////////////////////////////////////////////////////////////
最初にAを押した時刻しか表示できません。
Aを押したときに現在の時刻を表示できるようにするにはどうすればいいですか?
- 61 :
- a::
Gui, Destroy
Gui, Add, Text, , %A_Now%
Gui, Show, , TIME
return
みたいな感じ?
- 62 :
- >>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()
- 63 :
- >>61
ありがとう出来ました。
- 64 :
- SAIに定期実行でC-s送ろうと思って
#Persistent
SetTimer,OnTimer, 1000
return
OnTimer:
DetectHiddenWindows, On
ControlSend,, ^s, ahk_class sfl_window_class
return
って書いたんですがうまく行きません
何故かNotepad++だとうまくいくのですが…
- 65 :
- WheelRedirect.ahkがPostMessage使ってるのは何か意味あるのかな
WM_MOUSEWHEEL はSendMessageしないといけないと思うんだけど
いろいろいじくってたら、やっとまともに動くようになったが
- 66 :
- E-mail:
内容:
Alt+任意のキーでカーソルの移動を割り付けているんですが、
!sc01A::Send, {Up}
!sc035::Send, {Down}
Alt+Fでアプリケーションのプルダウンメニューを出した後に、
割り付けたキーで移動をかけようとすると、メニューが消えてしまいます。
これってどうやったら回避できるんでしょうか。
Key historyで見ると
で、LAlt+FとDownの間に、別の命令があって、それで消えていそうなことはわかるんですが・・・
- 67 :
- 特にSendを使う理由がないならこれでいいんじゃない?
!sc01A::Up
!sc035::Down
- 68 :
- ごめん途中で送信しちゃった
Send使うなら>>4Q3とか
- 69 :
- >>67-68
回答ありがとうございます。
Sendを使わないと、そもそもカーソルが動かないんですよね・・・
でも、確かにプルダウンでは教えていただいた方法で問題なく動きます。
あと、修飾をAltじゃないものにすれば、Sendを使わないでも、両方とも問題なく
動作するんですが・・・
Altだけ動作が特殊なんですかね?
プルダウンにカーソルがある時と、それ以外の時が判定できればいいかとは思うのですが、
そんなことはできるんでしょうか?
質問、続いてしまって申し訳ありません。
- 70 :
- OS仕様的にAlt単体でメニューへのフォーカストグルの挙動になってるから難しいんじゃね
>>65
SendMessageだと戻りを待つので動作が遅いとかそんな理由だったと思う
処理として正しいかはわからんが(XP以下のOSでは)Postで投げるだけでも動いてたし
- 71 :
- fenrirスレでfenrirのバグ扱いしてた奴か
- 72 :
- 見たような気がしたと思ったらそれか
- 73 :
- 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
- 74 :
- 事故解決したかも
試していたのがブラウザ(DonutQ)だったんだけど
他ソフトで試したらほとんど失敗なくなりました
対象が悪かったの・・か?
- 75 :
- さらに追記
ウィンドウの指定をアクティブウィンドウじゃなくて
MouseGetPosから取得したウィンドウハンドルを使ったら成功率ほぼ百%に
でもWinGetやWinGetClassではなぜか駄目
- 76 :
- >>73
俺はメニューが閉じるまで待つようにしてる。
While !(WinExist("A"))
Continue
- 77 :
- OSはXPかVistaで、IE7のタブがいくつ開いているか調べる方法ってありますか?
特定のページが開きっぱなしのときctrl+wを送って閉じたいのですが、
タブが1個のときにこれを送るとIE自体が終了してしまうため(設定は変えたくない)、
複数のタブが開いているかどうかを調べたいです。
WinGetText, text,A
とやると、テキストの中に、タブ数に応じて「メニューバー」というテキストが複数に増えることは
確認できましたが、こんなんで判別してしまったら、例外が出そうですよね。
現在のタブ数を調べる方法があればと思い質問させていただきました。
- 78 :
- c := 0
for w in ComObjCreate("Shell.Application").Windows()
{
c += (w.LocationURL != "")
; WinGetClass, cls, % "ahk_id " w.hwnd
; str .= "`n" cls
}
MsgBox, % "ie=" c ;. str
※ 変数 c にIE窓(タブ含)の数。
※ ループ変数 w は IEオブジェクト。w.Quit() とかやると閉じることも可。
オブジェクトのメソッド・プロパティは以下参照
ttp://msdn.microsoft.com/en-us/library/windows/desktop/aa752084%28v=VS.85%29.aspx
- 79 :
- WinXPと7で処理分けるのってどうやればいいですか
- 80 :
- if A_OSVersion in WIN_XP
{
MsgBox,XP
}
if A_OSVersion in WIN_????
{
MsgBox,Win7
}
A_OSVersionで行けそうです。
- 81 :
- >>78
どうもありがとうございます。残念ながら動きませんでしたが、
原因はこちらのAHKが古いせいでした。
AHK_L 53+と記載されているということは、_L専用の命令ということですね。
_Lへの移行を終わらせた後に再度検証してみます。
- 82 :
- キーボードをマウスにするスクリプトが常用化できた
同じ事やってる人います?
ところでarm 版windows への対応はどうなるんだろう
動きがないなら開発してみようかな?
- 83 :
- >>82
変換と無変換をモディファイアキーにして
http://www.guru-board.com/japanese/layout_jp
とマウス操作のレイヤーを作って使ってる
ただマウスは加速ありと加速なししか作ってないから
ウィンドウのコントロールごとに飛ぶのが欲しいなとか思ってたり
- 84 :
- ウィンドウのコントロールごとに飛ぶ、か
いいね、自分もやってみよう
- 85 :
- ツールバーのボタンとかに対してHit-a-HintやQuickHintみたいなことができればいいと思うんだけど
- 86 :
- >>83
自分はRAlt をmodifier にして
asdf をマウスの←↓↑→
デフォルトを加速つき移動にして
j, ; を押しながらasdf で高速低速の定速
画面端へのジャンプキー4つ
k,l をマウスクリック、みたいにしてつかってます
その他全部の文字キーに動作を割り当てて
capslock も 別のmodifier にしたこともあり
使い勝手ではトラックポイント単体を上回ったと思ってます
キーを犠牲にしたくない場合パッドをスイッチにするといいですね
自分は左手用スイッチにしてます
- 87 :
- これいいんじゃね。ahkで実装するのも簡単そうだし
> テンキーとモード切り替えで簡単マウスキー操作「Advanced Mouse Emulator」
> 9分割画面から領域選択を繰り返してマウスカーソルをすばやく移動
> http://www.forest.impress.co.jp/docs/serial/okiniiri/20110112_418297.html
欲しいと思ってたコントロールごとに飛ぶのは
判定できない?のとか実行スピードとかいろいろあって
技術力不足で俺にはむりぽ
- 88 :
- 「何かキー(マウスボタンも含む)が押されたら」ってどう書けばいいですか?
ホットキーラベルとして正規表現で「.*::」でできるかなと思いましたが駄目でした
どんな方法があるでしょうか?
- 89 :
- >88
マウスだけならMouseGesture.ahkを使うと
分かりやすいインターフェースで自動でスクリプト生成してくれる。
- 90 :
- 無変換とスペースの間にもうひとつ特殊キーのあるキーボードが欲しい・・・
何でこんなおいしい場所にアホ長いスペースがのさばってるんだ
- 91 :
- >>90
ttp://jp.razerzone.com/product.php?act=page&pgid=91
これとかどうよ
- 92 :
- >>90
つErase-Eaze
- 93 :
- >>90
英語キーボード見たことないの?
無変換-スペース-変換-かな の場所が全部1つのスペースキー
- 94 :
- ~aやSpace & XButton1など
おまけつきでホットキーを登録した時に
aやXButton1だけを簡単に得る方法はないですか?
A_ThisHotKeyだと全体だし、
正規表現だとなにか大げさな気がして
- 95 :
- windows7で#lを無効化する方法はないんでしょうか
- 96 :
- >>90
You さっさと μTRON 買っちゃいな YO!
- 97 :
- もしかしてeverythingってahkまったく効かない?
- 98 :
- いいえ
- 99 :
- 前にも話題に出てたウィンドウシェードについてなんだが、通常はサイズ変更で、
サイズが制限されてる奴はリージョンでやればできるけど
SAIはサイズ制限されてる上にリージョンが効かないみたい、
ちょっと調べたんだが、アプリケーションはWM_GETMINMAXINFOでサイズ制限をかけられるようだが、
SAIがそうしてるかわからんけどもしそうであると仮定して、AHKからSAIのMINMAXINFO構造体へサイズを上書きすることって可能なのかな?
フックとかつかわんと無理かな?
もしくはリージョン設定が上手くいかないのを何とかする方法がわかるなら、誰か教えてエロイ人
- 100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
・ 次のスレ
7: Excel友の会 (399)
8: Mozilla Firefox 非公式ビルド(MOD)スレッド11 (822)
9: 動画再生ソフト Part23 (482)
10: getter1【超高速】ゲッター1 Part2 (637)