AutoHotkey スレッド part13at SOFTWARE
AutoHotkey スレッド part13 - 暇つぶし2ch2:名無しさん@お腹いっぱい。
11/09/28 05:52:29.35 hycmOHZn0
■重要事項
オリジナルである、本家 "AutoHotKey" の開発は終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流。
スクリプトについては、それが本家AHKで動くものであるか、Lであるのかに注意。

AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
URLリンク(www.autohotkey.net)

オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →URLリンク(www.autohotkey.net)
 →URLリンク(sites.google.com)

※ 新規利用者にはAHKLを推奨するが、移行に際してすくなからずの改修が必要となる。
特に、旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない。
安定利用できている環境を崩して移行するかどうかは各人の判断による。

■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。

■過去スレ
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)

3:名無しさん@お腹いっぱい。
11/09/28 05:55:29.76 hycmOHZn0
以下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を起動する。( URLリンク(www.forest.impress.co.jp) )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
  「上のスキャンコードでキー変更する」をクリックすると「変更前 (中略) 0x0064 をどのキーに変更しますか?」
  というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
  リマップ( F12::F13 )を解除する。

4:名無しさん@お腹いっぱい。
11/09/28 05:58:14.86 hycmOHZn0
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:名無しさん@お腹いっぱい。
11/09/28 06:01:04.48 hycmOHZn0
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:URLリンク(www6.atwiki.jp) の「IME.ahk」を使いましょう。

Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)

6:名無しさん@お腹いっぱい。
11/09/28 06:03:31.44 hycmOHZn0
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
  複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
  が、バッチでかなりの回数(数万↑~)回したりする場合以外は、体感出来るほどの差はない。

Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり

Q3:GUI作るのめんどくせ~~
A3:公式( URLリンク(www.autohotkey.com) )から SmartGUI Creator をDLして使うと楽。

Q4:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
  > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
  > → 実行中、 …:割り込み終了待ち
  > 元スレッド   →→→→→→……………………………………→→→→
  >                  ★割込                ↑再開
  > 割り込みスレ          →→→→…………→→→→→→END
  >                        ◆割込 ↑再開
  > 更に割り込み                →→→END
 ※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。

7:名無しさん@お腹いっぱい。
11/09/28 06:05:33.72 hycmOHZn0
■リンク等
AutoHotkey メモ - Principia
URLリンク(principia.s54.xrea.com)
なまず日記
URLリンク(www.tierra.ne.jp)
eamatの日記
URLリンク(d.hatena.ne.jp)
1 Hour Software by Skrommel - DonationCoder.com
URLリンク(www.donationcoder.com)
Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較)
URLリンク(rosettacode.org)

以下公式フォーラムより
URLリンク(www.autohotkey.com)  Tips N Tricks
URLリンク(www.autohotkey.com) ListViewで大きな画像を扱いたい
URLリンク(www.autohotkey.com) GUIで標準のもの以外を使いたい
URLリンク(www.autohotkey.com) GUIを手軽に作りたい
URLリンク(www.autohotkey.com) DllCallで定数調べるのマンドクセ
URLリンク(www.autohotkey.com) コンパイルユーティリティ%28Compile_AHK II)
URLリンク(www.autohotkey.com) HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい
URLリンク(www.autohotkey.com) Windowsのイベントをフックして色々やりたい
URLリンク(www.autohotkey.com) ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
URLリンク(www.autohotkey.com) ShellDesktop() : デスクトップで選択されたファイルを取得
URLリンク(www.autohotkey.com) ポップアップメニューの情報を得る

8:名無しさん@お腹いっぱい。
11/09/28 15:37:11.27 qr06MIOW0
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。


9:名無しさん@お腹いっぱい。
11/09/28 15:39:17.90 qr06MIOW0
★教えて君五大要素★

1 読まない             (文盲)
2 調べない             (能なし)
3 試さない              (発想力欠如のアホ)
4 理解力が足りない        (馬鹿)
5 人を利用することしか頭にない (死ね)



           YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
         /                  \
【探した?】                        NO → なら、ねぇよ
         \
            NO → 死ね

10:名無しさん@お腹いっぱい。
11/09/28 15:40:35.52 qr06MIOW0
670 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/07/20(水) 07:04:25.19 ID:Bb1hKbPa0
■回答できるレベルの人へお願い■

このスレは親切な人が多いと思うけど、もう日記に対する検証&レスは、
たとえ対処法をわかっている人がいても、レスは一切やめにしてくれないか?
こいつがやってることは

 「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
  学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」

ってことだ。しかも、一度だけならまだしも、何度も繰り返している。
これまでに、このスレではこの手の質問者は居なかったと記憶する。

いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。



11:名無しさん@お腹いっぱい。
11/09/28 19:32:04.09 hycmOHZn0
>>8-10
そういうのを気にする人はそういう質問をしない。
数日で1スレ消化なら自治があったほうが良いかもれいないけど
1スレ消費に1ヶ月以上掛かるところで自治を促すものが多いと
それを気にする普通の人が質問しづらくなり
気にしない教えてくんが相対的に増えて縮小、衰退していく。

12:名無しさん@お腹いっぱい。
11/09/28 22:02:43.78 EviKU6+t0
スレ立て乙
気づいたんだけど>>7の日本語のページって情報があまりにも古くない?


13:名無しさん@お腹いっぱい。
11/09/28 23:46:13.43 D2pdAQ2a0
乙だが >9はいらないだろ
探して見つけて試して動かなかったから相談に来る人間は拒否してない

質問ですらない日記は別だけどな

14:名無しさん@お腹いっぱい。
11/09/29 13:51:36.41 15gWJ5w80
MouseMove, A_CaretX,A_CaretY
MouseMove,%A_CaretX%,%A_CaretY%


いずれも エクスプローラーやメモ帳のキャレットには反応しますが
firefox のキャレットに対してうまくはたらかず
左上にいってしまいます
MsgBox,A_CaretX,A_CaretY
だと 8.30 と出力されます
対処法はないのでしょうか?

15:名無しさん@お腹いっぱい。
11/09/29 13:59:59.09 fr4WgM6M0
8,30でした

16:名無しさん@お腹いっぱい。
11/09/29 17:58:05.76 ugkUReGR0
ホイール操作をした場合マウスカーソル下のコントロールに下スクロールを送りたいのですが以下の処理で反応してくれません。
マウス下のコントロールを取得して、そこにキーを送っているつもりですが、おかしい箇所を指摘してもらえないでしょうか?

MouseGetPos, xx, yy, , control, 1
ControlClick, x%xx% y%yy%, , , WheelDown, 1, Pos

;こちらでもダメでした
ControlClick, %control%, , , WheelDown

17:名無しさん@お腹いっぱい。
11/09/29 18:31:48.50 oW5t+FVH0
>>16
WinTitleが未指定。

18:名無しさん@お腹いっぱい。
11/09/29 18:57:58.27 ugkUReGR0
>>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:名無しさん@お腹いっぱい。
11/10/01 04:32:46.30 W6eyoRpi0
タスクトレイメニューに複数の項目をもつサブメニューを入れたい
ルート─サブ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:名無しさん@お腹いっぱい。
11/10/01 05:22:04.46 /+TTeqmY0
#Persistent

Menu, サブ, Add, サブ1, Show1
Menu, サブ, Add, サブ2, Show2
Menu, TRAY, Add , ルート, :サブ
Return

Show1:
msgbox, Show1
Return

Show2:
msgbox, Show2
Return

こういうことかいね?

21:名無しさん@お腹いっぱい。
11/10/01 13:06:16.13 6XDZ/DuM0
ジョイパッドの3ボタンを同時押しした時にCtrl+WheelDownを
五回行うっていうプログラムを組んでいるのですが
Ctrl+WheelDownのような特殊なキーを含んだ動作は
コンビネーションキーで使用することはできないのでしょうか?

22:名無しさん@お腹いっぱい。
11/10/01 13:32:52.84 gearqMd80
そういう制限は見聞きしたこないな
ま、とりあえず、晒せ

23:名無しさん@お腹いっぱい。
11/10/01 14:21:47.43 qVyJBgGm0
晒すほどのものにはなってないのですが一応。

Joy2::
if(GetKeyState("Joy7") && GetKeyState("Joy8"))
{
Send,{};ここに何を入れるかで悪戦苦闘中
}
return

24:名無しさん@お腹いっぱい。
11/10/01 17:06:38.13 gearqMd80
いわゆる「コンビネーションキー」つーわけでも無いのか。
なら普通に Send, ^{WheelDown} とかでいいんでないかい。
 ^ の意味はマニュアルをよく読むこと。


25:名無しさん@お腹いっぱい。
11/10/01 17:27:24.15 qVyJBgGm0
回答どうもです。

Send,^{WheelDown}
これは真っ先に試してみたんですが反応せず。
Send,{WheelDown}
これは反応ありですが、「^」をつけるとどうも動かないんですよね。

26:名無しさん@お腹いっぱい。
11/10/01 17:46:00.35 uOdIXmpE0
>>25
キーを押している時間を長めに設定する

setkeydelay,,50 ; 反応しない場合は50msより大きい値にする(200msとか)
Send,^{WheelDown}
setkeydelay,,-1 ; 元に戻す

27:名無しさん@お腹いっぱい。
11/10/01 17:57:53.39 xb0Hmb8/0
Send, {Ctrl down}{WheelDown 5} {Ctrl up}

28:名無しさん@お腹いっぱい。
11/10/01 18:42:15.81 qVyJBgGm0
色々とありがとうございます。が、申し訳ない。

どうやら同時に起動してたソフトが悪さしてたみたいで、
そのソフトを一旦切ってみたら>>24の方の方法でも問題なく動きました。

29:名無しさん@お腹いっぱい。
11/10/01 19:59:50.69 gearqMd80
なんもしてないが、解決して何より。
だが、
悪さ、というか干渉してるのを具体的に書くと同じようなことがおきた別の人のためになるんじゃないかな

30:名無しさん@お腹いっぱい。
11/10/01 21:40:27.84 B3yqzv7A0
ちょっとした作業の繰り返しをしたいときに
キーボードやマウスでの操作を記録して
再生するスクリプトってありますか?

31:名無しさん@お腹いっぱい。
11/10/01 22:05:40.29 uOdIXmpE0
本家版(Version 1.0.48.05)に同梱されている
AutoScriptWriter(AutoScriptWriter.exe ) を使う。

32:名無しさん@お腹いっぱい。
11/10/01 23:21:49.62 W6eyoRpi0
>>20
うまくいきました!
サブメニューにしたいもの全てに同じメニュー項目名をあてれば良かったのですね
どうもありがとうございました


33:名無しさん@お腹いっぱい。
11/10/02 12:14:35.27 LtYUvIYb0
自作のポップアップメニュー表示中の割り込み制御はいつになったら実装されるのか

34:名無しさん@お腹いっぱい。
11/10/02 16:38:49.15 v8TY5WNA0
現状でやりたいなら、DLL版つかって別スレッドのスクリプトで動かすのがせいぜいだな

35:名無しさん@お腹いっぱい。
11/10/02 17:02:10.41 LV4Wto0R0
つか前スレでも聞いといてなんだけど、AHKメニューに縦区切りつけるのって標準の命令じゃ無理なん?

36:名無しさん@お腹いっぱい。
11/10/02 17:20:44.92 Fnt2c63e0
>>29
具体的にどう悪さをしていたのかって言うのは分からないので
状況だけしか書き込めないのですが
・AHKと同時にJoyAdapterというパッド→キー変換ソフトを使用していた
・そのソフトの設定でJoy2ボタンにCtrlを割り当てていた
・同ソフトでJoy2=Ctrlの設定を解除したら正常に動作した
と、まぁこんな感じです。

37:名無しさん@お腹いっぱい。
11/10/02 18:33:04.93 9Azq3eB20
>>35
URLリンク(www.autohotkey.com)
縦区切りてこういうの?

38:35
11/10/03 00:50:58.12 s2cRK8Zj0
>>37
おぉ、まさにこういうやつ。情報㌧です
やっぱ標準じゃ無理なのね。InsertMenuItemなんてコール初めて知った

39:名無しさん@お腹いっぱい。
11/10/03 13:51:11.03 uFpObJt20
韓国語とか中国語のimeを使っているとき、
imeの状態や変換モードを取得したり設定するにはどうすればよいのでしょうか。


40:名無しさん@お腹いっぱい。
11/10/05 01:39:26.26 diN1YZVV0
dllcall imm32.dllでググればいいんじゃね?

41:名無しさん@お腹いっぱい。
11/10/07 03:47:00.88 cFsZJU3X0
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:名無しさん@お腹いっぱい。
11/10/07 04:53:56.78 AhdHAUK70
URLリンク(sites.google.com)
このあたりでは

43:名無しさん@お腹いっぱい。
11/10/07 09:46:08.68 zGvbh1f60
>> 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:名無しさん@お腹いっぱい。
11/10/07 16:10:51.27 cFsZJU3X0
>>42
理解するのは難しそうだけど読んでみるよ、ありがとう。

>>43
おお、先駆者がいたのかw
Thumbsenseはいったいどうやって32,64bit対応させてるんだろうね?
しかもあれ確か5年以上前の64bitすらなかった時代のソフトなのに。

45:43
11/10/07 18:04:07.65 i477kWl90
>>44 ThumbSense は 32 ビットソフトなんじゃないの?
32 ビットでならこれまで通りタッチパッドの情報取得が可能。

46:43
11/10/07 18:05:42.71 i477kWl90
なので AHK の x86 (32 ビット) 版でなら >41 の ThumbRemap も普通に動く。

47:名無しさん@お腹いっぱい。
11/10/07 18:06:57.40 cFsZJU3X0
もちろんその通りだよ。

問題は、そいつが64bit環境でも普通に動いてるってこと。

ひょっとして、AHK_L64bitじゃなく昔のバージョンのAHKを使えば動いたりは・・・?
しないよな、やっぱw

48:名無しさん@お腹いっぱい。
11/10/07 18:07:40.71 cFsZJU3X0
ナ、ナンダッテー

49:名無しさん@お腹いっぱい。
11/10/07 18:11:47.11 cFsZJU3X0
32bit版らしきもの
URLリンク(www.autohotkey.net)
のUnicode x86)

を落として使ってみたけど動かずw

50:名無しさん@お腹いっぱい。
11/10/07 19:25:57.05 aSsReaAr0
ANSI版じゃないの?

51:43
11/10/07 20:48:36.36 K1u62ixM0
>>47
64 ビット OS 上でも ThumbSense のプロセスは 32 ビットでしょ?
同じ理由で ThumbRemap スクリプトは 32 ビット AHK でなら正常動作する。

また >>49 を使う場合は、スクリプトを UTF-8 で保存しないと動かないよ。

52:名無しさん@お腹いっぱい。
11/10/08 02:30:59.66 uI2+K3RG0
PostMessage, 0x111, 65305,,, tometai.ahk - AutoHotkey


上のように、別のスクリプトである tometai.ahk をsuspend するコマンドで

A::Suspedn,off

で出来るような Suspend 命令に追加コマンドをつける方法はありますか?


53:名無しさん@お腹いっぱい。
11/10/08 17:43:27.50 /huHMveF0
1.1.05.00
URLリンク(www.autohotkey.com)

super-global助かるわー

54:名無しさん@お腹いっぱい。
11/10/08 18:24:51.65 pz0FYWHt0
そろそろv2くるか

55:名無しさん@お腹いっぱい。
11/10/08 19:48:52.54 asLVgakZ0
>>50-51
昔のXpマシン引っ張り出して旧ahk.exeと置き換えたら動いた!

できれば64bitで正式に動かしたいからちょっと気持ち悪いところはあるけど当分はこれでいいや、ありがとう。

56:名無しさん@お腹いっぱい。
11/10/09 10:10:39.65 ozo7Y5Ld0
>>52
どっちにしろ PostMessage するんだったら、
OnMessage で待ち受けてwParam,lParamの値で分岐して処理が走るようにすりゃいい。
あとは、投げ側と受け側が同じメッセージ番号使うって約束だけ守ればいいかと。

57:名無しさん@お腹いっぱい。
11/10/09 20:21:25.74 5JM8g4ch0
使用中で容量が増え続けロックがかかっているファイルがあります。
エクスプローラでアクセスするとその時点のファイルサイズを取得できるのですが、
コマンドのFileGetSizeを使っても、その時点のファイルサイズを取得できません。

Autohotkeyでその時点のファイルサイズを取得する良い方法はないですか?

58:名無しさん@お腹いっぱい。
11/10/10 12:31:54.70 NAXF/YFI0
>>53を見て思ったんだけど
autohotkey_lでどういう場面でクラスを使うんだろう
これまで何年もクラスなしのautohotkeyに慣れ親しんできたし
他の言語もよく分からないので、今いちピンとこない

掲示板の反応を見る限りではかなり好評みたいだから
使用例とかノウハウを具体的に見てみたい

59:名無しさん@お腹いっぱい。
11/10/10 16:31:42.01 fGFEyZ990
>>56
それで出来ましたありがとうございました

60:名無しさん@お腹いっぱい。
11/10/10 17:10:45.70 LA/Y0ISq0
a::

Gui, Add, Text, , %A_Now%
Gui, Show, , TIME

return

///////////////////////////////////////////////////////////////
最初にAを押した時刻しか表示できません。
Aを押したときに現在の時刻を表示できるようにするにはどうすればいいですか?

61:名無しさん@お腹いっぱい。
11/10/10 18:19:50.51 ZvpkolI90
a::

Gui, Destroy
Gui, Add, Text, , %A_Now%
Gui, Show, , TIME

return
みたいな感じ?

62:名無しさん@お腹いっぱい。
11/10/10 19:36:01.11 k2KeYrAD0
>>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:名無しさん@お腹いっぱい。
11/10/10 20:20:02.05 LA/Y0ISq0
>>61
ありがとう出来ました。

64:名無しさん@お腹いっぱい。
11/10/10 21:45:13.81 h3O1kDSl0
SAIに定期実行でC-s送ろうと思って

#Persistent
SetTimer,OnTimer, 1000
return

OnTimer:
DetectHiddenWindows, On
ControlSend,, ^s, ahk_class sfl_window_class
return

って書いたんですがうまく行きません
何故かNotepad++だとうまくいくのですが…

65:名無しさん@お腹いっぱい。
11/10/11 12:17:04.11 ySjv9cT10
WheelRedirect.ahkがPostMessage使ってるのは何か意味あるのかな
WM_MOUSEWHEEL はSendMessageしないといけないと思うんだけど
いろいろいじくってたら、やっとまともに動くようになったが

66:名無しさん@お腹いっぱい。
11/10/13 10:18:15.99 Wl1WLloQ0
E-mail:
内容:
Alt+任意のキーでカーソルの移動を割り付けているんですが、

!sc01A::Send, {Up}
!sc035::Send, {Down}

Alt+Fでアプリケーションのプルダウンメニューを出した後に、
割り付けたキーで移動をかけようとすると、メニューが消えてしまいます。
これってどうやったら回避できるんでしょうか。

Key historyで見ると
で、LAlt+FとDownの間に、別の命令があって、それで消えていそうなことはわかるんですが・・・


67:名無しさん@お腹いっぱい。
11/10/13 11:11:01.60 btvDesHt0
特にSendを使う理由がないならこれでいいんじゃない?
!sc01A::Up
!sc035::Down

68:名無しさん@お腹いっぱい。
11/10/13 11:14:29.46 btvDesHt0
ごめん途中で送信しちゃった

Send使うなら>>4Q3とか

69:名無しさん@お腹いっぱい。
11/10/13 15:33:18.58 Wl1WLloQ0
>>67-68
回答ありがとうございます。
Sendを使わないと、そもそもカーソルが動かないんですよね・・・
でも、確かにプルダウンでは教えていただいた方法で問題なく動きます。
あと、修飾をAltじゃないものにすれば、Sendを使わないでも、両方とも問題なく
動作するんですが・・・
Altだけ動作が特殊なんですかね?
プルダウンにカーソルがある時と、それ以外の時が判定できればいいかとは思うのですが、
そんなことはできるんでしょうか?
質問、続いてしまって申し訳ありません。

70:名無しさん@お腹いっぱい。
11/10/13 16:03:07.08 qqHQyIVa0
OS仕様的にAlt単体でメニューへのフォーカストグルの挙動になってるから難しいんじゃね

>>65
SendMessageだと戻りを待つので動作が遅いとかそんな理由だったと思う
処理として正しいかはわからんが(XP以下のOSでは)Postで投げるだけでも動いてたし

71:名無しさん@お腹いっぱい。
11/10/13 17:18:30.32 6woDxz+q0
fenrirスレでfenrirのバグ扱いしてた奴か

72:名無しさん@お腹いっぱい。
11/10/13 19:45:06.08 nB7zEvtC0
見たような気がしたと思ったらそれか

73:名無しさん@お腹いっぱい。
11/10/14 18:18:28.95 fKmTP1NW0
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:名無しさん@お腹いっぱい。
11/10/14 21:57:11.20 fKmTP1NW0
事故解決したかも

試していたのがブラウザ(DonutQ)だったんだけど
他ソフトで試したらほとんど失敗なくなりました
対象が悪かったの・・か?

75:名無しさん@お腹いっぱい。
11/10/14 22:28:07.72 fKmTP1NW0
さらに追記
ウィンドウの指定をアクティブウィンドウじゃなくて
MouseGetPosから取得したウィンドウハンドルを使ったら成功率ほぼ百%に
でもWinGetやWinGetClassではなぜか駄目

76:名無しさん@お腹いっぱい。
11/10/15 00:24:54.89 3+Jfx3iF0
>>73
俺はメニューが閉じるまで待つようにしてる。

While !(WinExist("A"))
  Continue

77:名無しさん@お腹いっぱい。
11/10/15 03:04:57.19 4RcUncIh0
OSはXPかVistaで、IE7のタブがいくつ開いているか調べる方法ってありますか?

特定のページが開きっぱなしのときctrl+wを送って閉じたいのですが、
タブが1個のときにこれを送るとIE自体が終了してしまうため(設定は変えたくない)、
複数のタブが開いているかどうかを調べたいです。

WinGetText, text,A


とやると、テキストの中に、タブ数に応じて「メニューバー」というテキストが複数に増えることは
確認できましたが、こんなんで判別してしまったら、例外が出そうですよね。

現在のタブ数を調べる方法があればと思い質問させていただきました。

78:名無しさん@お腹いっぱい。
11/10/15 04:59:22.09 JSWINI/z0
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() とかやると閉じることも可。
  オブジェクトのメソッド・プロパティは以下参照
URLリンク(msdn.microsoft.com)


79:名無しさん@お腹いっぱい。
11/10/15 14:50:06.38 UU0kIiFM0
WinXPと7で処理分けるのってどうやればいいですか

80:名無しさん@お腹いっぱい。
11/10/15 15:09:02.90 UU0kIiFM0
if A_OSVersion in WIN_XP
{
MsgBox,XP
}

if A_OSVersion in WIN_????
{
MsgBox,Win7
}

A_OSVersionで行けそうです。

81:77
11/10/16 08:02:28.62 G3Xj1HS60
>>78
どうもありがとうございます。残念ながら動きませんでしたが、
原因はこちらのAHKが古いせいでした。

AHK_L 53+と記載されているということは、_L専用の命令ということですね。
_Lへの移行を終わらせた後に再度検証してみます。

82:名無しさん@お腹いっぱい。
11/10/18 22:23:04.40 wm26LBjr0
キーボードをマウスにするスクリプトが常用化できた
同じ事やってる人います?

ところでarm 版windows への対応はどうなるんだろう
動きがないなら開発してみようかな?

83:名無しさん@お腹いっぱい。
11/10/19 00:36:33.34 Hx2QtaG20
>>82
変換と無変換をモディファイアキーにして
URLリンク(www.guru-board.com)
とマウス操作のレイヤーを作って使ってる

ただマウスは加速ありと加速なししか作ってないから
ウィンドウのコントロールごとに飛ぶのが欲しいなとか思ってたり

84:名無しさん@お腹いっぱい。
11/10/19 01:13:58.10 1oZuXYsA0
ウィンドウのコントロールごとに飛ぶ、か
いいね、自分もやってみよう

85:名無しさん@お腹いっぱい。
11/10/19 01:23:09.22 GnMt1BCy0
ツールバーのボタンとかに対してHit-a-HintやQuickHintみたいなことができればいいと思うんだけど

86:名無しさん@お腹いっぱい。
11/10/19 17:51:11.11 TmKNV3OF0
>>83
自分はRAlt をmodifier にして
asdf をマウスの←↓↑→
デフォルトを加速つき移動にして
j, ; を押しながらasdf で高速低速の定速
画面端へのジャンプキー4つ
k,l をマウスクリック、みたいにしてつかってます

その他全部の文字キーに動作を割り当てて
capslock も 別のmodifier にしたこともあり
使い勝手ではトラックポイント単体を上回ったと思ってます

キーを犠牲にしたくない場合パッドをスイッチにするといいですね
自分は左手用スイッチにしてます



87:名無しさん@お腹いっぱい。
11/10/20 01:15:56.76 3oyW7BXy0
これいいんじゃね。ahkで実装するのも簡単そうだし

> テンキーとモード切り替えで簡単マウスキー操作「Advanced Mouse Emulator」
> 9分割画面から領域選択を繰り返してマウスカーソルをすばやく移動
> URLリンク(www.forest.impress.co.jp)

欲しいと思ってたコントロールごとに飛ぶのは
判定できない?のとか実行スピードとかいろいろあって
技術力不足で俺にはむりぽ

88:名無しさん@お腹いっぱい。
11/10/22 15:18:26.88 oaTlB/cb0
「何かキー(マウスボタンも含む)が押されたら」ってどう書けばいいですか?
ホットキーラベルとして正規表現で「.*::」でできるかなと思いましたが駄目でした
どんな方法があるでしょうか?

89:名無しさん@お腹いっぱい。
11/10/23 08:04:46.03 PS8qcPCA0
>88
マウスだけならMouseGesture.ahkを使うと
分かりやすいインターフェースで自動でスクリプト生成してくれる。

90:名無しさん@お腹いっぱい。
11/10/23 08:29:14.23 gddPritJ0
無変換とスペースの間にもうひとつ特殊キーのあるキーボードが欲しい・・・
何でこんなおいしい場所にアホ長いスペースがのさばってるんだ

91:名無しさん@お腹いっぱい。
11/10/23 09:16:13.28 79nT6PPu0
>>90
URLリンク(jp.razerzone.com)
これとかどうよ

92:名無しさん@お腹いっぱい。
11/10/23 10:09:46.12 GvPy3Dte0
>>90
つErase-Eaze

93:名無しさん@お腹いっぱい。
11/10/23 16:39:00.86 BolpMG+u0
>>90
英語キーボード見たことないの?
無変換-スペース-変換-かな の場所が全部1つのスペースキー

94:名無しさん@お腹いっぱい。
11/10/23 16:43:41.18 zr0YCeAZ0
~aやSpace & XButton1など
おまけつきでホットキーを登録した時に
aやXButton1だけを簡単に得る方法はないですか?
A_ThisHotKeyだと全体だし、
正規表現だとなにか大げさな気がして

95:名無しさん@お腹いっぱい。
11/10/24 22:15:54.19 tXcJ09QX0
windows7で#lを無効化する方法はないんでしょうか

96:名無しさん@お腹いっぱい。
11/10/24 23:32:15.32 pNguWrZO0
>>90
You さっさと μTRON 買っちゃいな YO!

97:名無しさん@お腹いっぱい。
11/10/25 14:42:22.22 xnRLOf/E0
もしかしてeverythingってahkまったく効かない?

98:名無しさん@お腹いっぱい。
11/10/25 15:37:09.58 WLBQmsav0
いいえ

99:名無しさん@お腹いっぱい。
11/10/25 18:08:33.82 +FyICoFz0
前にも話題に出てたウィンドウシェードについてなんだが、通常はサイズ変更で、
サイズが制限されてる奴はリージョンでやればできるけど
SAIはサイズ制限されてる上にリージョンが効かないみたい、

ちょっと調べたんだが、アプリケーションはWM_GETMINMAXINFOでサイズ制限をかけられるようだが、
SAIがそうしてるかわからんけどもしそうであると仮定して、AHKからSAIのMINMAXINFO構造体へサイズを上書きすることって可能なのかな?
フックとかつかわんと無理かな?

もしくはリージョン設定が上手くいかないのを何とかする方法がわかるなら、誰か教えてエロイ人

100:名無しさん@お腹いっぱい。
11/10/26 09:46:14.16 NqM+BtFG0
ztopみたいにホイール操作でマウス直下をアクティブにしてその画面にホイールイベントを渡してますが、普通の画面は問題ないけど小さいウィンドウがたくさんあるソフトではうまくいきません。
ウィンドウによって何か処理を毛得る必要があるのでしょうか?

101:名無しさん@お腹いっぱい。
11/10/26 23:51:20.93 i2cAt2yX0
>>98
everything上で行った入力がキーヒストリーに全く記録されないのはなぜでしょうか。

102:名無しさん@お腹いっぱい。
11/10/27 00:12:39.65 /AJDMAkZ0
>>101
ユーザーアカウント制御(UAC)に引っかかってるんじゃないの?
Win7はセキュリティ上異なる権限のソフトからのキーバインドは無効化する
AHKを管理者権限で起動すればそういうのにも効くようになるけど、
そうすると今度は一般権限のターゲットに効かなくなる
結局のところUACを切ってしまうか諦めるかのどっちかしかない


103:名無しさん@お腹いっぱい。
11/10/27 00:54:05.04 z1EqPk3r0
Win7 HP x64 & Pro x64 上で AHK_L x64 を管理者権限で動かしてるけど
キーバインド・マウス制御に特に問題ないよ。

通常窓も管理者窓もどっちも平気。

ただし、暗転するUACのダイアログは無理。

104:名無しさん@お腹いっぱい。
11/10/27 18:24:03.36 cMY1hA+z0
MouseGetPos, , , hwnd
してhwnd->pid->process pathの取得ってお手軽にやる方法無いですか。
DllCallしまくりでやるしかないのかな。

105:名無しさん@お腹いっぱい。
11/10/27 21:05:27.09 GD5GaSqi0
Adobe ReadeにSend, ^{WheelDown}を送ってもふつうのホイールダウンにしかなりません。
なぜControlが効かないのでしょうか?

106:名無しさん@お腹いっぱい。
11/10/27 21:06:31.49 nNuynYiV0
AHK_Lの最近のなら

MouseGetPos,,, id
WinGet, path, ProcessPath, ahk_id %id%

107:名無しさん@お腹いっぱい。
11/10/27 21:37:34.30 PSx1iIK70
>>102さんや>>103さんの環境では、everything上でのキー入力も記録されているんですか?

108:名無しさん@お腹いっぱい。
11/10/27 21:39:28.54 mJ83PnaZ0
>>102でも>>103でもないけどされてるよ

109:名無しさん@お腹いっぱい。
11/10/27 21:55:30.68 PSx1iIK70
ということは何かしら自分の環境に問題ありなようですね。
頑張って調べてみます。ありがとうございました!

110:名無しさん@お腹いっぱい。
11/10/27 22:02:50.15 NloYrWG80
>>105
理由は知らんしReaderで試してないが
PhotoshopCS5で SendPlayしないとモデファイヤが上手く動かないことはあった

111:名無しさん@お腹いっぱい。
11/10/28 12:24:27.14 GzSW3VZL0
>>5のIME.ahkですが、Windows7 64bit上ではちゃんと値が習得できません。
改良した方いましたら、ご教授願います。
DllCallはさっぱりなのですが、
DllCall("imm32~
これをimm64に変えただけではダメでした。

112:名無しさん@お腹いっぱい。
11/10/28 16:10:15.92 3ysK0sA+0
ホイールのアクセレータを実装しようかと以下を作ったのですが、どうもうまくアクセルがかかりません。
そもそもアプローチが間違えているのでしょうか?

113:名無しさん@お腹いっぱい。
11/10/28 16:12:16.61 3ysK0sA+0
>>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}
}

114:名無しさん@お腹いっぱい。
11/10/28 22:19:11.59 dkZeM3pg0
sub == 0 の激速回転してる人なら加速いらなくね

115:名無しさん@お腹いっぱい。
11/10/29 08:33:12.42 pkq52/ok0
>>113
一応動いてるよ、returnはコピペし忘れだよね?
5連続ぐらいだと分かりにくいから
わかりやすいようにSend, {Wheelup 500}とかやってみw

あと、たしか間隔狭すぎるとアプリによっては取りこぼして反応しなかったりする場合もあったとおもうから
もし動かないアプリ合ったらそこらへん調整したほうがいいよ

116:名無しさん@お腹いっぱい。
11/10/29 18:00:25.67 03gsgiz40
操作性向上系スクリプトは動作原理はたいてい至って簡単で、
面倒になるのは微調整。
それも対象とするアプリごとにやってやらんといけない。

そこで投げてお仕着せのツールを使うか、粘ってうまく仕上げるかは当人次第。

117:名無しさん@お腹いっぱい。
11/10/29 18:23:46.02 racBYXN+0
俺は
Wheel→そのまま
RButton+Wheel→PgUp・PgDnに変更
これだけだなw

118:名無しさん@お腹いっぱい。
11/10/29 19:33:13.16 QpZ9B+1B0
wmpで「拡張子が.mp3だったら、起動(=再生開始)と同時に最小化」ってできますか?

119:名無しさん@お腹いっぱい。
11/10/29 19:46:17.88 xFVrfBi10
はい

120:名無しさん@お腹いっぱい。
11/10/29 20:30:43.56 VLEXdEZ80
ウィンドウクラスが変わるソフトがあるのですが、
指定する方法はないでしょうか?
変わる部分は後半だけで、
SetTitleMatchModeもデフォルトが前方一致なようなので
削ればうまくいくと思ったのですがうまくいきません

mousegesture.ahkではexeで指定できるので
何か方法はあるとおもうのですがわかりませんでした。

わかるかた、アドバイスをよろしくお願いします。

121:名無しさん@お腹いっぱい。
11/10/29 20:49:53.41 cU5ScI/N0
>>120
>ウィンドウクラスが変わるソフトがあるのですが、
>指定する方法はないでしょうか?

URLリンク(sites.google.com)
SetTitleMatchMode, RegEx
にしてウィンドウクラスを正規表現で指定する

>mousegesture.ahkではexeで指定できるので

URLリンク(sites.google.com)
WinGet で ProcessName を取得して If で分岐させる

122:名無しさん@お腹いっぱい。
11/10/29 20:52:15.68 2z/a8QcK0
Lだとahk_exeが使えるから楽だよ

123:名無しさん@お腹いっぱい。
11/10/29 21:14:34.99 VLEXdEZ80
>>121
できました!ありがとうございます!
processnameですか・・・ずっと見落としてました。助かりました。
>>122
64bit環境に移行した際に導入しようかとおもったのですが、
あまりにも修正部分が多くて挫折してしまった過去があってw
やっぱり色々便利そうですね。根気が回復したときにやってみたいと思います。

124:名無しさん@お腹いっぱい。
11/10/29 21:32:44.76 a8WJtCM10
ahk_exeなんて有ったのか
全然知らなかった…

125:名無しさん@お腹いっぱい。
11/10/30 13:46:26.78 Tbx4xAo+0
マウスの左右ボタン同時押しの検出方法を教えて下さい。
あと、方法があったとしてこういう操作って誤動作しやすかったりしますか。

126:名無しさん@お腹いっぱい。
11/10/30 15:32:35.13 9tUvaU9g0
>>119
できるんですか。
もしよければ、「拡張子が.mp3だったら」という部分だけ少しヒントをいただければ・・・

127:名無しさん@お腹いっぱい。
11/10/30 19:30:49.89 EanuBRUP0
>>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 にする。

128:名無しさん@お腹いっぱい。
11/10/30 20:41:30.16 9tUvaU9g0
>>127
できました! ありがとうございます!

再生するファイルのタイトルを取得してwmpに投げるところから書けばよかったんですね。
「どうにかしてwmp内から再生ファイルの拡張子orタイトルが取得できないか」って考えしかありませんでした。
とても助かりました。

129:名無しさん@お腹いっぱい。
11/10/30 22:10:53.06 1T1GdUqv0
>>125
同時押しの検出方法ってのは

1.左右両方のボタンを押したときに何らかの動作をさせたい。

2.左右ボタンとは別トリガーでボタンの押下状態を調べたい。
 例:左Altキーを押したときに左右両方のボタンが押されていれば「OK」
 そうでなければ「NG」と表示させる。

3.左右ボタンが(ほぼ)同時に押されたかどうかで分岐
 例:50ms以内に左右両方のボタンが押された場合「成功」
 50ms以上かかった場合「失敗」と表示させる。

4.もっと別のなにか

さあどれ

130:名無しさん@お腹いっぱい。
11/10/31 00:25:35.04 JI+xyTRB0
>>127
これだと複数ファイルを渡したときとか、すでにWMPが起動してるときはうまくいかなくね?

131:名無しさん@お腹いっぱい。
11/10/31 07:26:32.93 LzcUHjYg0
>>129
例えば左右同時押しをトリガとして
ランチャを起動するといった使い方を考えています。
実装が1-4のどれになるかはわかりません。

コードにするとこんなイメージですが
これだと同時押しの検出はできるものの
LButton単体押し検出されなくなってしまいます。

LButton & RButton::
  Run,MyLauncher
  return

132:名無しさん@お腹いっぱい。
11/10/31 07:28:08.95 XDDYFwlt0
~LButton & RButton::
でおk

133:名無しさん@お腹いっぱい。
11/10/31 12:37:41.42 spgnTdj00
WinGet, , Processpathもahk_exeもここ見てやっと分かった俺ってアホくさ
changelogをしっかり読むべきだな

134:名無しさん@お腹いっぱい。
11/10/31 17:43:34.90 u0eZ94hi0
英語の説明だと、自分では読んでるつもりでも機能とかを見落としてるときあるよね

135:名無しさん@お腹いっぱい。
11/10/31 22:33:06.25 /CZ1zgKlP
>>43
>Synaptics から 64 ビット用 SDK は公開されておらず、そこで手詰り。

のどかの中の人に教えてもらった。(のどかはサポートしているから)

SynCOMAPIv1_0 SDKのheaderファイルは、そのままで
x64のSynCom.libファイルをx64版のSynCOM.dllから作るそうです。

参考にするところは、下記とのこと。
URLリンク(ameblo.jp)

136:名無しさん@お腹いっぱい。
11/11/01 12:33:23.21 zAQ+5vWH0
IfWinExist, ahk_class EVERYTHING{
 a::b
}

と書きました。
これで、everythingが常駐している状態でメモ帳などに「a」と打つと「b」と表示されます。
しかし、everything上で「a」と打っても「a」と表示されます。

everything側の問題な気はしますが、何か原因がわかる方はいらっしゃらないでしょうか。

137:名無しさん@お腹いっぱい。
11/11/01 12:47:44.05 zt/LB+5K0
>>136
権限が無いからだよ
AHKを管理者権限で起動すればEverything上でも動作するはず

138:名無しさん@お腹いっぱい。
11/11/01 12:58:23.98 LYBvz1Dl0
OSとEverythingとAHKのバージョンすら書かずに質問繰り返してるとライトのコピペ貼られるぞw

139:名無しさん@お腹いっぱい。
11/11/01 15:51:15.77 jv/Ysr/00
IfWinExistの後には「{」続けられなくね?
それ以前に「EVERYTHING{」ってスペース無しだとそういうクラス名だと認識されね?

140:名無しさん@お腹いっぱい。
11/11/01 15:58:50.71 jv/Ysr/00
すまん、なんか色々読み違えてたから忘れてくれ

141:名無しさん@お腹いっぱい。
11/11/01 21:25:11.96 nUoYEePPP
>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側の問題な気はしますが、何か原因がわかる方はいらっしゃらないでしょうか。


これは、あの人の匂いがする・・・

142:名無しさん@お腹いっぱい。
11/11/01 22:25:20.50 hDpXcnLH0
このキチガイは本スレ+セキュ板の全く関係ないスレでも暴れてるんで触らない方がいい

143:名無しさん@お腹いっぱい。
11/11/01 23:31:44.82 mliz6RbI0
少なくともAHKの内部じゃこう処理されてるはず

IfWinExist, ahk_class EVERYTHING{
 ; 空っぽ
}

a::b

144:名無しさん@お腹いっぱい。
11/11/01 23:39:04.54 WLqBJ8kR0
if と #if の違いはきちんと理解すべき
というか、autohotkey_lの利点の一つが #if を使えること

本当ならしっかりとしたチュートリアルがあればいいんだろうけど
現状で満足している人が多数いるんだよね
forumで初心者向けのチュートリアルをぽつぽつと書いている人が時たま居るけど
うまい具合にまとめてくれればいいのに

145:名無しさん@お腹いっぱい。
11/11/04 04:29:49.64 VuI6Fc5n0
#includeされたファイル内で、スクリプト読み込み時に何かを実行するちゃんとした方法ってあるんでしょうか。

initialize() { static a:= initialize() } とか以外で

146:名無しさん@お腹いっぱい。
11/11/04 10:46:40.67 a9pYO/fv0
iTunesの早送りをAutoHotKeyで制御しようと思っているのですが何故かうまくいきません。
iTunesが非アクティブの時制御させようと思っているので、以下2つを試しています。

;①スライドバーの上でホイール操作
ControlSend ,ahk_class iTunesSlider2, {WheelUp}, ^iTunes$

;②iTunesのショートカットキー Ctrl+Alt+ ←
ControlSend , , ^!{Left}, ^iTunes$

iTunes非アクティブ時はどちらもうまく動作しませんが、
アクティブ時は②は動作しました。

非アクティブ時の②は単純なレフトキーを押しただけのショートカットキーが動作してしまいます。
Ctrl+Altが効いていないような動作です。

このようなショートカットキー操作はそもそもできないのでしょうか?
それともiTunesが特殊なのでしょうか?

147:名無しさん@お腹いっぱい。
11/11/04 23:23:21.01 QOx42/Rx0
デスクトップとタスクバーってahk_idが変動したりするものなの?
ずっと上手く動かなかったスクリプト、
このふたつのIDをいちいち取り直すようにしたら動いた

148:名無しさん@お腹いっぱい。
11/11/04 23:42:49.41 HN20j19B0
autohotkeyのスクリプトは何のエディタを使って編集していますか?
便利なものがあれば教えて下さい

149:名無しさん@お腹いっぱい。
11/11/05 01:36:35.30 abaWtDGH0
愛用しているテキストエディタのプラグインでAutohotkeyに対応しているものを探す。
ソースが公開されているなら自分用にカスタマイズすると更に使い勝手が良くなる。
対応しているものなら基本的にコマンド、関数、単語等のそれぞれに色付けされ、
自動インデントとか付いてたり(個人的に自動インデントは邪魔)、
カーソルがある文字列をリファレンス(ヘルプファイルやhtml)検索したり、etc・・・

150:名無しさん@お腹いっぱい。
11/11/05 01:46:45.69 OKInPBdU0
Lは違うかも分からんがExtras\Editorsの中に対応エディタの定義ファイルが入ってる
無いときは \Syntaxの各キーワードファイルを使いたいエディタの定義ファイルに変換するスクリプトでも作ればOK

151:無しさん@お腹いっぱい。
11/11/05 01:56:43.06 7OYpB50g0
あぁ難しいな・・


152:名無しさん@お腹いっぱい。
11/11/05 13:25:17.06 WdDBTlbt0
エディタって細かい違いが多すぎてなあ
自分でいろいろ試したほうが良いよ
おれはotbedit使ってる
キーワードファイルはそのスレに上げた

153:名無しさん@お腹いっぱい。
11/11/05 14:31:51.93 nq32eYLh0
男なら黙ってVim

そのうち他のソフトでもVim風キーバインドを使えるようにするためにAHK書くようになるよ

154:名無しさん@お腹いっぱい。
11/11/05 15:43:11.42 o1BElYO80
手軽さで言えばNotePad2のModのひとつが
デフォでAHKのキーワードに対応してた
URLリンク(code.google.com)のヤツ

155:名無しさん@お腹いっぱい。
11/11/05 16:19:12.33 +AMhHQjy0
秀丸で AHK キーワード強調表示させてる。実に便利。

156:名無しさん@お腹いっぱい。
11/11/06 19:15:26.98 qhp7OpjZ0
凄く単純なことなんですけど
NumLockキーがオンの時orオフの時 って
どう書いたらいいんですか?

157:名無しさん@お腹いっぱい。
11/11/06 20:06:34.75 37c3DKJe0
>3参照


158:名無しさん@お腹いっぱい。
11/11/06 20:38:50.33 Gvkl60ge0
NumLockキーがOnの時とOffの時で処理をわけたいって意味なら
If GetKeyState("NumLock","T")
MsgBox, NumLockキーはONです
Else
MsgBox, NumLockキーはOFFです
Return

159:名無しさん@お腹いっぱい。
11/11/06 23:17:54.31 qhp7OpjZ0
あぁGetKeyStateを使えばいいんですね
どうもです

160:名無しさん@お腹いっぱい。
11/11/07 01:54:23.92 1BXxH3280
2chでも有数の良いスレだね、ここは。
ahkの知名度がそれほどでもないのが良いほうに働いているというか。

最近やっとXPからWin7の64bitにしたんだが、
ahkも普通に動くし、早速いろいろ挙動をカスタマイズしたよ。

161:名無しさん@お腹いっぱい。
11/11/07 10:23:07.95 vhOSdjAq0
AHK_Lの日本語リファレンスマニュアル的な本でもあれば・・・と思う今日この頃
現状AutoHotkeyJpがリファレンスマニュアル代わりになってるけど
万が一あそこが消えたりしたらつらいことになりそうだ

162:名無しさん@お腹いっぱい。
11/11/07 10:57:39.02 5oMjLD1h0
どこかの出版社がautohotkeyのマニュアルを出すっていうのか
なるほど
よく考えると、autohotkeyとそれなりに似ている UWSC の解説本が
翔泳社から出ているから突飛なことでもない

163:名無しさん@お腹いっぱい。
11/11/07 21:12:31.15 zUPLwWIo0
すごく便利なのはわかるが難しすぎて
フルに使いこなせないのが歯がゆいなぁ
今自分の出来ることだけでも十分便利だけどもさ

164:名無しさん@お腹いっぱい。
11/11/07 23:31:49.17 V9iAcL3G0
ログイン必要なとこからファイルGETするにはどうしたらいい?
具体的にはGoogle Bookmarksのエクスポートファイル定期的に落としたい

165:名無しさん@お腹いっぱい。
11/11/08 14:58:57.69 XTAVs2xi0
久しぶりにAHKのコードを書く時が来たようだ
URLリンク(tech3d.sakura.ne.jp)

166:名無しさん@お腹いっぱい。
11/11/08 20:29:38.34 1H8lvEZT0
おいやめろwww

167:名無しさん@お腹いっぱい。
11/11/09 03:08:45.80 0bPq9xwm0
AHKのスクリプトを使ってると、どこかのタイミングでスクリプトが動かなくなるので
リロードしなくちゃいけなくなるんですけど、これを回避する何かいい方法ないですかね?
しかたないのでもう一つスクリプト起動してメインのスクリプトを30分ごとに再読み込みさせるようにしたんですけど
これだと一部の継続して使うスクリプトの動きが遮断されて色々と面倒なんです。

168:名無しさん@お腹いっぱい。
11/11/09 04:28:17.17 wJ1ULpvB0
スクリプト晒した上で、何が動かなくなるのか具体的に書いてくれないと…

169:名無しさん@お腹いっぱい。
11/11/09 11:24:01.68 S6uve8or0
WinSet, Style, -0xC40000, A でタイトルバーやウィンドウの枠を取ることは出来ましたが、更にメニューバー、スクロールバー、ステータスバーを取り除くことは出来ますか?
なるべくエディタなどで表示エリアを大きく取るための手段として考えています。

170:名無しさん@お腹いっぱい。
11/11/09 16:11:20.54 S6uve8or0
かざぐるマウスとAutoHotKeyを併用したときに、AutoHotKeyでマウスホイールの定義を下記のように設定していると
かざぐるマウスにホイールイベント渡らないですが、しばらくすると
ある段階からかざぐるマウスのイベント処理が走ってしまいます。
その時AutoHotKeyのイベントも動きます。

これはAutoHotKeyのパフォーマンスによるものなのでしょうか。

WheelUp::
 ToolTip ほげ
 return

171:名無しさん@お腹いっぱい。
11/11/09 18:46:22.30 V2eQl0Qe0
マイネットワークは
Run,::{208D2C60-3AEA-1069-A2D7-08002B30309D}
で開けるのが分かったのですが、ワークグループを開くにはどう書いたらいいのでしょうか?

Run,explorer.exe /n`, /root`, "マイ ネットワーク\ネットワーク全体\Microsoft Windows Network\Workgroup"
と書いて見ましたが駄目でした。よろしくお願いします。

172:名無しさん@お腹いっぱい。
11/11/09 19:25:12.16 0UMpSjcL0
run,workgroup.lnk

173:名無しさん@お腹いっぱい。
11/11/10 01:28:43.67 0RzHedoG0
あるスクリプトを特定のプログラムでだけ動かなくするようにできないですかね?
Windowsで動いてる何十のアプリのうち一つだけ除外したいといった感じです。

174:名無しさん@お腹いっぱい。
11/11/10 02:25:34.18 xI6akbba0
^a::何らかの関数

みたいになっている状態で、autohotkeyから^aを送って
「何らかの関数」を実行することはできないんでしょうか

175:名無しさん@お腹いっぱい。
11/11/10 07:04:21.75 3sOHU0gk0
>>173
特定のウィンドウがアクティブかどうかということなら
IfWinNotActive, ahk_class Notepad
msgbox, メモ帳ではありません。
else
msgbox, メモ帳がアクティブです。

ホットキーなら
#IfWinNotActive, ahk_class Notepad
a::send,b


>>174
^a::test()

test() {
msgbox, hoge
}

176:名無しさん@お腹いっぱい。
11/11/10 07:53:05.26 D/9NRdlr0
あるウインドウがアクティブで、マウスカーソルが座標が
画面の座標系でなく、そのアクティブウインドウの座標系でのa≦x≦b、c≦y≦dに
ある場合 ○○::××
ない場合 △△::□□ ってので下の括弧の中ってどうなります?

#IfWinActive ahk_class ・・・
If (          )
○○::××
else
△△::□□
return

177:名無しさん@お腹いっぱい。
11/11/10 09:05:24.72 xLOv1+L80
URLリンク(sites.google.com)
URLリンク(sites.google.com)

178:名無しさん@お腹いっぱい。
11/11/10 09:42:50.12 0+RlQXau0
>>174
擬似的にイベント発生させたいなら
#UseHook Off
Send, ^a
ホットキーラベルに $はつけないこと
ただしマウスホットキーはハードウエア操作じゃないとイベント発生しなかったはず


関数にパラメータとしてホットキーラベルを渡したいということであれば
^a:: func(A_ThisHotkey)

func(label) {
msgbox, %label%
}

179:名無しさん@お腹いっぱい。
11/11/10 14:58:05.41 D/9NRdlr0
>>177
ありがとうございます!非常に助かりました

180:名無しさん@お腹いっぱい。
11/11/11 10:05:50.50 atOAXHfV0
ControlSendってウィンドウタイトル指定すれば非アクティブなウィンドウでもキーが送れると思っていましたが
同じコードでも、アクティブでは動作、非アクティブでは反応なしでした。
非アクティブでは送れないものなのでしょうか?

181:167
11/11/11 10:11:59.32 Q6n2+j0D0
>>168
どこかのサイトでAHKスクリプトはこまめにリロードしてくださいってあったんで
こういうことは案外普通にあるんだと思って詳細を省いてしまいました。すいません。

動かなくなるのはマウスボタンに割り当てたスクリプト全部です。
特定のスクリプトだけ、特定のアプリでの動作だけ、という感じではないです。
キーボードに割り当てたものは動き続けてます。マウスに原因があるんでしょうか?
こういうことって頻繁におきることですかね?

182:名無しさん@お腹いっぱい。
11/11/11 10:24:38.83 U545B7Ga0
スクリプト晒した上で、何が動かなくなるのか具体的に書いてくれないと…

183:名無しさん@お腹いっぱい。
11/11/11 10:51:48.60 3L35XHfi0
マウス関連は色々入れてるけど、たまに手動でリロードするくらいで
そうそうおかしくなることはないな

しょっちゅうリロードが必要な状態ってのはコードに問題があるように思える
入り口が別でも中で同じサブルーチンや関数通っててそこに問題がある場合もあるし
それか拾い物のホイールやマウスジェスチャを組み込んでない?
あれらは中で色々やってるので挙動が怪しくならないとは言い切れない

>一部の継続して使うスクリプトの動きが遮断され
ってのも気になる。これが悪さしてる可能性はないの?
あと、リロードで問題が生じるならこっちを別立てで動かすとか

184:名無しさん@お腹いっぱい。
11/11/11 11:30:22.40 WIZtv/n20
だから、推測で言ってても流れてくだけだから
最低でもスクリプト無いと分からないって事なんじゃないの?
それで解決するかどうかは別としてさ

185:名無しさん@お腹いっぱい。
11/11/11 15:00:53.70 TDrTfIAa0
変数に好きな娘の名前つけてるから恥ずかしいんだろ。オレもそう

186:名無しさん@お腹いっぱい。
11/11/11 17:05:30.70 LEVcAZl30
プログラミング言語に触ったことが無いと命名規則とかわからないしな
詳しい人に一通り書いてもらいたいわ・・・

187:名無しさん@お腹いっぱい。
11/11/11 17:15:55.12 Vi8P3CSJ0
こんなの作ったよってのがあるとすごく参考になるよね
0から作れって言うとほんとに判らないってこと多い

188:名無しさん@お腹いっぱい。
11/11/11 20:27:36.85 kYoG0s+n0
ちょっとかっこつけて聞きなれない英単語を使うと
意味がわかりにくく、スペルミスするorz


ところで作成した1つのGuiWindow内で
コントロール毎に背景色を変える事ってできますか?

gui,color,,000000
gui,add,edit,x10 y5
gui,add,edit,x10 y+5 -background
gui,show

こんな強引?な方法で2色はできるんだけども
ちゃんと設定する方法があったら教えてください。

加えてreadonlyとかdisabledの背景色も変更可能?

189:名無しさん@お腹いっぱい。
11/11/11 22:51:03.69 HtyLX/3A0
AutoHotkey_Lで
Ctrl+Alt 数字の1 Enterキー の入力で、Ctrl Ctrl F1 を実行するのは
どう記述すればいいでしょうか?

CPU切替器の切り替えコマンドを以前つかっていたものに変更したく


190:名無しさん@お腹いっぱい。
11/11/12 02:29:18.89 YUmAmP460
>>175
#IfWinNotActiveでできました どうもです

191:名無しさん@お腹いっぱい。
11/11/12 04:21:29.20 bLDDD3X90
>>188
URLリンク(www.autohotkey.com)
トピ主が発狂しててワロタw
サブクラス化するしか無いんかね、めんどくさいね


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch