AutoHotkey スレッド part14

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
■配布元
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/
簡易スクリプト掲示板 ※31日で削除されます。
http://www.autohotkey.net/paste/

■派生版
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名無しさん@お腹いっぱい。:2012/04/02(月) 22:15:43.53 ID:+wgA/llE0
■重要事項
オリジナルである、本家 "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等)の多くはそのままでは動作しない。
安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方がAHKL対応版を配布しているのでそれを利用するのもありです。
http://code.google.com/p/mousegesturel/

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

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
3名無しさん@お腹いっぱい。:2012/04/02(月) 22:25:18.57 ID:+wgA/llE0
■過去スレ
@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/
Lttp://anago.2ch.net/test/read.cgi/software/1317156599/

以下FAQ等

■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」で保存する。(AHKLの場合)

Q2:初めて使うけどどれを使えばいいの?
A2:AHKLのユニコード版を推奨。
  旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
  64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
4名無しさん@お腹いっぱい。:2012/04/02(月) 22:27:37.21 ID:+wgA/llE0
■ リマップ・ホットキー割り当て

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を再起動する。

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}
5名無しさん@お腹いっぱい。:2012/04/02(月) 22:44:06.58 ID:+wgA/llE0
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ではできない。
6名無しさん@お腹いっぱい。:2012/04/02(月) 22:45:03.96 ID:+wgA/llE0
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のようにインライン化しているアプリでは無理)
7名無しさん@お腹いっぱい。:2012/04/02(月) 22:51:53.73 ID:+wgA/llE0
■ その他
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)を利用すると真のマルチスレッドが利用可。
8名無しさん@お腹いっぱい。:2012/04/02(月) 22:54:18.33 ID:+wgA/llE0
Q5:AHK、AHKLx86、AHKLx64の共存は出来る?
A5:それぞれを違うフォルダ(ディレクトリ)にインストールすれば共存できます。
  但し、インストーラーを使って最後にインストールしたAutohotkey(Normal or x86 or x64)
  に対してahkファイルの関連付けが行われますので、レジストリエディタ(Regedit.exe)や
  FileTypesMan等のツールを使って関連付を変更してください。
  ahkファイルをAHK Normal、ahlファイルをAHKLx86、ah6ファイルをAHKLx64といったように
  別々の拡張子に関連付けが可能です。
  それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
  [HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler]
  の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。
9名無しさん@お腹いっぱい。:2012/04/02(月) 22:56:19.07 ID:dnCmvRTX0
前スレくらい>>1に入れてくれ
10名無しさん@お腹いっぱい。:2012/04/02(月) 23:01:58.43 ID:+wgA/llE0
>>9
入れるつもりが忘れてました。
次スレ建てる人は前スレを>>1へ追加をお願いします。
11名無しさん@お腹いっぱい。:2012/04/03(火) 00:32:48.70 ID:0gt728Ga0
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

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

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



           YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
         /                  \
【探した?】                        NO → なら、ねぇよ
         \
            NO → 死ね
13名無しさん@お腹いっぱい。:2012/04/03(火) 00:34:22.13 ID:0gt728Ga0
■回答できるレベルの人へお願い■

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

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

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

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



14名無しさん@お腹いっぱい。:2012/04/03(火) 23:53:00.68 ID:n59aJeYX0
うんうん、じゃあID:0gt728Ga0が

【初心者】AutoHotkey スレッド【お断り】

を立てて、続きはそっちでやっとくれ
15名無しさん@お腹いっぱい。:2012/04/04(水) 09:21:09.30 ID:ddTmLy0B0
総レス数 981で前スレ落ちたんだけど・・wなんで?
16名無しさん@お腹いっぱい。:2012/04/04(水) 11:05:30.35 ID:zWvCZjpH0
980超えると24時間書き込みが無いと落ちる
17名無しさん@お腹いっぱい。:2012/04/07(土) 14:01:21.40 ID:NkYcATpD0
あれ、ahkのサイトがかわった?
18名無しさん@お腹いっぱい。:2012/04/08(日) 09:45:09.86 ID:eYUzMGIC0
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
[板名] - スレタイ
ahk_class SunAwtFrame

V2Cというアプリをspyで調べるとV2Cを特徴付ける情報が無いので

#IfWinActive ] - ahk_class SunAwtFrame

で一応で動くもののいつか誤動作しそうで怖い…
c:\v2c\v2c.exeで引っ掛ける方法ないですか
19名無しさん@お腹いっぱい。:2012/04/08(日) 10:54:03.51 ID:8MHeyAmz0
設定 > 一般 > 板名・スレタイをタイトルバーに表示する
20名無しさん@お腹いっぱい。:2012/04/08(日) 12:39:53.86 ID:QmZe/Aab0
Rightキーを入力している間、Alt+Ctrlが入力しているようにしたいのだけども単純に
Right::Alt
Right::Ctrl
だとエラー吐くし
Right::^Altみたいに修飾シンボル+キー名だと修飾シンボルが無効になってキー名前だけの効果しか出ない
wiki見てもA&Bみたいな同時押しはできないと書かれているし、上みたいに1キー入力で2キーの同時入力みたいな事はできないんですかね
21名無しさん@お腹いっぱい。:2012/04/08(日) 14:05:20.43 ID:Ltl73fXZ0
>18
AutoHotkey_L なら

#IfWinActive ahk_exe v2c.exe

でいけると思う
22名無しさん@お腹いっぱい。:2012/04/08(日) 14:15:40.50 ID:8MHeyAmz0
>>20
キーリマップ使わずSend使えばいい
23名無しさん@お腹いっぱい。:2012/04/11(水) 20:23:06.48 ID:whv2lc1R0
以前にも書かせていただいたのですが、
Autohotkeyによってキーを離した情報が失われることがある、ってことはありませんか?
またそういうのが起こる確率を下げる構文とかありませんか?
(たとえば#InstallKeybdHookをいれれば起こりにくくなるとか?)
新PCにしてキーボードも変えたのに、相変わらずゲーム(複数タイトル)中ではキーの押しっぱなしが
よく起こるんです。もう一度そのキーを押してやれば解除されるのですが。
24名無しさん@お腹いっぱい。:2012/04/11(水) 21:20:23.33 ID:+mZdtG590
>>23
http://sites.google.com/site/autohotkeyjp/reference/commands/SetKeyDelay
setkeydelayの第二引数(PressDuration)を100から200くらいに設定してみては。
25名無しさん@お腹いっぱい。:2012/04/11(水) 21:34:55.61 ID:+mZdtG590
>>23
キーのDown/Upの間隔が短いと(人間が操作する想定以上に速いと)
ゲームクライアントがDownだけ受け取ってUpを拾いきれなくて発生している可能性がある。
setkeydelayで第二引数の値を大きくするか、下のように個別にSleep入れる。
send, {a down}
sleep, 200
send, {a up}

※やってることはどちらも同じ。
26名無しさん@お腹いっぱい。:2012/04/11(水) 21:56:42.74 ID:whv2lc1R0
レスサンクスでした。
Sendとかスクリプト内で設定できる方法のようですね。
スクリプトをバインドしているキーで「キーの押しっぱなし」が起こるのなら
わかりやすいのですが、なにも設定してないだろう、ほとんどのキーで起こるっぽいんですよね。
(修飾キーなしのWキーのみとか、WASD CVキーも同様)
ゲーム中だけ起こるっぽいです。
有名な既知の解決法はないみたいですね。
前のPCから引き続いて使用している常駐ソフトって数えるぐらいしかないので
Autohotkeyじゃないかなとめぼしを付けているのですが違うのかな。
いろんなタイプのAutohotkeyだったり管理者として実行にチェックいれても変わらず。
27名無しさん@お腹いっぱい。:2012/04/12(木) 06:04:29.74 ID:wKZjBzD20
>なにも設定してないだろう、ほとんどのキーで起こるっぽいんですよね。

Autohotkeyで何も設定していないキーで発生する時点でAutohotkeyは関係ない。
スレ違いだけど疑っているソフトがあるならそれらを終了させた状態で発生するか確認してみては。
IntellipointやSetopointといったマウスやキーボード用のユーティリティ(最近はドライバと言ったほうが一般的?)
を使っているなら「それらをアンインストールしてWindowsを再起動してから」試したり。
28名無しさん@お腹いっぱい。:2012/04/14(土) 01:17:19.34 ID:yRgaMzqb0
WM_HSCROLLやWM_VSCROLLを使ったスクロールがどうも気に入らなくて
他の方法を探してたら

ScrollWindow
http://msdn.microsoft.com/ja-jp/library/cc410994.aspx
ScrollWindowEx
http://msdn.microsoft.com/ja-jp/library/cc411017.aspx

といった関数がありましたが初心者の自分には使い方がわかりません
というか、この関数が自分の目的にあってるかどうかもわかりませんので
助けを求めに来ました

以下は適当に試した失敗コードです
VarSetCapacity(rect, 16)
hwnd := WinExist("A")
DllCall("GetClientRect", "UInt", hwnd, "UInt", &rect)
DllCall("ScrollWindowEx", "UInt", hwnd, "Int", 8, "UInt", &rect, "UInt", &rect, "Str", "SW_ERASE")
DllCall("UpdateWindow", "UInt", hwnd)
29名無しさん@お腹いっぱい。:2012/04/17(火) 00:21:49.95 ID:Vhx0JGYA0
>>28
ウチもちょっと自信ないんですけど
"SW_ERASE"は文字列じゃなくてマクロで定義された定数なので
そこは UInt , 0x0004 なんじゃないかと
30名無しさん@お腹いっぱい。:2012/04/17(火) 11:41:15.93 ID:GCibotVQ0
>>29
レスありがとうございます
たしかにそこはそのとおりですね
あとdxとdy二つを渡すべき所で一つだけだったりミスがありました

ScrollWindowの場合は
DllCall("ScrollWindow", "UInt", hWnd, "Int", 0, "Int", -8, "UInt", &rect, "UInt", &rect)
で、壊れたままでもとりあえず目に見える結果は出ますが
MSのページでは「Exの方を使え」っと書いてますからね
でもそのScrollWindowExのやつは同じようなコードでもうんともすんとも言いませんし…

まぁ公式フォーラムでもこの関数を使ってスクロールしてるスクリプトが一つもいない以上は
WM_HSCROLLやWM_VSCROLLで生きるしかないってことかも知れませんし、気長に考えてみます
31名無しさん@お腹いっぱい。:2012/04/18(水) 03:05:50.18 ID:kkhivR8h0
すいません初心者質問で恐縮なのですが、Sleep実行中にファンクションキー以外のキー(A,B,Spaceなど)が効かなくなるのですが、Sleep実行中にキーボードのボタンを効くようにする事ってできるのでしょうか?
32名無しさん@お腹いっぱい。:2012/04/18(水) 04:22:16.84 ID:kkhivR8h0
すいません書き忘れました
OSはWindow7、ソフトはAutoHotkey_Lです
よろしくお願いします
33名無しさん@お腹いっぱい。:2012/04/18(水) 16:26:58.87 ID:kkhivR8h0
説明不足でしたすみません
MouseGestureLを使ってまして、ネトゲの技発動中などに回復ボタンを押してHP回復したいのですが、技の時にSleepを使ってるので、その間Sendコマンドが効かなくて回復できないって感じです
文章力なくてすみません。重ね重ねよろしくお願いします(*_ _)

34名無しさん@お腹いっぱい。:2012/04/18(水) 18:11:38.89 ID:0a+h/lrm0
IMEをONにせず入力した時、その半角文字をコピーしてIMEをONにして打ち直そうと以下2つの案を試しましたが、
以下を設定しても%clipboard%がそのまま表示されてしまいます。

なにかよい対処法はあるでしょうか?

案1
::#a::%clipboard%

案2
#a::
Send, %clipboard%
return
35名無しさん@お腹いっぱい。:2012/04/18(水) 18:32:04.44 ID:RQ0JqQY30
IMEの再変換機能だとダメなの?
36名無しさん@お腹いっぱい。:2012/04/18(水) 18:37:17.76 ID:2oJEmkti0
>>34
過去ログにそれ用のスクリプトあげてる人いたよ
ちょっと今ログあさってる時間ないけど
●もってるなら探してみ
37名無しさん@お腹いっぱい。:2012/04/18(水) 20:10:05.06 ID:qUQ/iLb90
再変換できるなら再変換で問題ないし、
IMEがonになっていれば、案2で問題ないような気が。
googleIMEでしか確認してないけど。

IME_SET(1)してないとかいうオチじゃないよね?


便乗ですが、変換済みの文字を、再変換未対応のアプリで何とかする方法
ってないもんですかね。
「メモ帳を新規に起動して、そこに貼り付けて全選択した上で再変換」というのは
思いつきましたが、エレガントさに欠けることこの上ないので、それ以外の方法でw
38名無しさん@お腹いっぱい。:2012/04/18(水) 20:32:37.95 ID:NlVSxvgY0
>>31-33
ネットゲームの規約で禁止されている行為であるため、アドバイスできません。
39名無しさん@お腹いっぱい。:2012/04/18(水) 20:39:46.98 ID:kkhivR8h0
そうですか・・レスありがとうございました。・゜・(/Д`)・゜・。
40名無しさん@お腹いっぱい。:2012/04/18(水) 22:28:22.57 ID:2oJEmkti0
>34 ログ漁ってきた
情報古いし整理する必要あると思うけど参考にはなるべ

AutoHotkey スレッド part6
http://unkar.org/r/software/1219130051/271-281
41名無しさん@お腹いっぱい。:2012/04/19(木) 01:38:56.16 ID:NGMqvGGc0
規制解除されたので備忘録

#Persistent
SetTimer,NoSleep,60000
return

NoSleep:
if WinActive("ahk_class XXXXXXXXXX")
{
DllCall( "SetThreadExecutionState", UInt,0x00000002 ) ;ES_DISPLAY_REQUIRED
}
return

ゲームパッドで操作するゲームでディスプレイが省電力入るの防ぎたかったので適当に書いたら動いた
1分おきにタイマー回して、特定アプリがアクティブな時はスリープ防止のAPIを呼び出す
DllCallでAPI呼び出すと出来る事一気に増えるねコレ
42名無しさん@お腹いっぱい。:2012/04/20(金) 23:53:44.26 ID:dZtTsw4u0
#ifWinActive, ahk_class
〜〜〜
"ifWinActive,
return
って指定してやると指定したクラスのウィンドウにだけ〜〜〜は反映されるんですよね

以下の物を使ってキーマップ変更してる時に他のウィンドウを操作するとそちらの方にも影響があるようなのですが、書き方間違ってるのでしょうか?
ttp://www1.axfc.net/uploader/File/so/78022
43名無しさん@お腹いっぱい。:2012/04/20(金) 23:56:30.04 ID:dZtTsw4u0
すみません、3行目は"ifWinActive,じゃなくて#ifWinActive,です
44名無しさん@お腹いっぱい。:2012/04/21(土) 06:47:14.25 ID:1MdYZr1+0
>>42-43
#IfWinActive と #If は同等なので入れ子にできません。

#IfWinActive,ahk_class TMeryForm.UnicodeClass
;中略
#If (KeyMap=1) ; ここで #IfWinActive,ahk_class TMeryForm.UnicodeClass は無関係になる。
;中略
#If
;中略
#IfWinActive


;↓なら想定通りに動くと思う

#IfWinActive,ahk_class TMeryForm.UnicodeClass
^e::Send,{Enter}
^i::KeyMap:=!KeyMap
j::send, % KeyMap ? "{left}" : A_Thishotkey
+j::send, % KeyMap ? "+{left}" : A_Thishotkey
^j::send, % KeyMap ? "^{left}" : A_Thishotkey
; 以下略
45名無しさん@お腹いっぱい。:2012/04/21(土) 11:33:11.32 ID:NlMYqlp20
>>44
丁寧な解答ありがとうございます、意図通りに動きました
変更したキーマップは他のウィンドウでも有効なのに肝心の^iが効かなくて困ってましたが納得しました
46名無しさん@お腹いっぱい。:2012/04/22(日) 14:11:08.55 ID:WAka2n4s0
GUIウィンドウ以外の場所が選択された場合に、
GUIウィンドウを消去させる事ってできますか?

左右のクリックに条件指定して「Gui,Destroy」させる方法を
思いついたのですが、これはなるべく避けたいです。
これ以外の案を知っていたら、知恵を貸して下さい。 
47名無しさん@お腹いっぱい。:2012/04/22(日) 14:38:17.38 ID:ilAlVCMQ0
Lのv2.0に移行に例えば下記みたいな修正が必要だけど

AAA = aa%bb%cc%dd%ee

AAA := "aa" . bb . "cc" . dd . "ee"

v1.0でこの書き方をすると処理速度が落ちてしまうけど
v2.0だとこの書き方での速度面も最適化されているのだろうか?
(一応短いソースで確認した限りは同じくらいに見えたけど念の為)

>>46

SetTimerで監視するのどう?
48名無しさん@お腹いっぱい。:2012/04/22(日) 14:58:31.88 ID:WAka2n4s0
>>47
それだっ!
それなら思い通りに動いてくれそうだ。
ありがとうございます。
49名無しさん@お腹いっぱい。:2012/04/22(日) 22:10:06.03 ID:uaYJGlSK0
一応解決してるみたいだけど、私はいつもこうやってるよ

「GUIウィンドウ以外の場所が選択」はGUIウィンドウが非アクティブになると解釈して
非アクティブ状態になったら"OnInactivate"に飛ばす処理
OnMessage(0x6, "OnInactivate")

この関数の中にやりたい処理内容(今回の場合はGUIの破棄かな)
OnInactivate(wParam, lParam) {
 ……
}
5042:2012/04/23(月) 03:14:21.78 ID:v6JiF24U0
42です。先日はお世話になりました
度々すみませんがまたよくわからない状況になってしまいました、また何か間違ってるのでしょうか?

一度>>44の!KeyMapに切り替えるとreturnで区切られても他のウィンドウに引き継がれてしまいます
returnは強制的に他のものから分断してくれるのではないのですか?
今以下のようにまとめてるのですがそれぞれが!KeyMapを使用しています

;; Mery
SetTitleMatchMode, RegEx
Exit
#ifWinActive, ahk_class [TMery|TFind|TReplace]Form.UnicodeClass
〜〜〜
#ifWinActive,
return
;; エクスプローラ
#ifWinActive, ahk_class CabinetWClass
〜〜〜
#ifWinActive,
return
;; 「開く」ダイアログ
#ifWinActive, ahk_class #32770
〜〜〜
#ifWinActive,
return
;;以下略

.ahkもあげておきます。よろしかったら添削お願いします
ttp://www1.axfc.net/uploader/File/so/78126
51名無しさん@お腹いっぱい。:2012/04/23(月) 08:20:57.05 ID:TeoW7g4p0
>#ifWinActive,
>return
これいらない。
変数"KeyMap"をウィンドウごとに違うものにする。

ざっと見ただけなのでよく分からんけどこういう事かな。
#ifWinActiveはその下に書かれたホットキーの発動条件になるだけで
ifとかとは性質が全く違うよ。
52名無しさん@お腹いっぱい。:2012/04/23(月) 11:59:39.47 ID:Dcd2Y7sZ0
現在のカーソル(マウスポインタ)の形を取得するにはどうしたらいい?
具体的にはブラウザ上(Firefox)で今どんなポインタになっているかを取得したいんです

hoge:=DllCall("LoadCursor","UInt",NULL,"Int",IDC_CROSS,"UInt")
と書くらしい(?)事は分かったんですがパラメータが分かりません
53名無しさん@お腹いっぱい。:2012/04/23(月) 17:48:14.46 ID:v6JiF24U0
>>51
そうだったんですか、流行らせるページだけで理解するのは難しいようですね
変数の指定が上手く出来ないので解決できませんでした
もう少しリファレンス見て出直してきます、ありがとうございました
54名無しさん@お腹いっぱい。:2012/04/23(月) 17:50:27.94 ID:TKGUbMpi0
>>52
MouseGestureL.ahkの人の人が調べてる。その人のコードは、

  hCursor := DllCall("user32.dll\LoadCursor", "Ptr",0, "UInt",idCursor, "Ptr")
パラメータは、どこから調べてきたのか知らないが、MG_Edit.ahkのL176〜L193あたり。

参考にならずにすまん。
5547:2012/04/23(月) 23:29:33.26 ID:0kNYzI5h0
前の続きで悪いが…

v2って速度面の向上に対してのアナウンスってあったっけ?
下記の記述で速度面の実験をしてたんだが


1.


A := ""
Loop, 1000000
A .= A_Index . "`n"
msgbox, end


2.


Loop, 10000000
A := RegExReplace("ABCD", "(.)...", "$1")
msgbox, end


v2はv1に比べ、1の記述で2倍、2の記述で5倍も速度が上がっていたんだが
具体的に何が変わっただろうか
56名無しさん@お腹いっぱい。:2012/04/24(火) 00:29:04.14 ID:B5T2pufQ0
正規表現の処理速度が向上したと
フォーラムのどっかに書いてあったような気がする
5747:2012/04/24(火) 23:33:26.91 ID:s/liIH2C0
>>56
そうなのか、サンクス。
58名無しさん@お腹いっぱい。:2012/04/25(水) 09:03:39.83 ID:e9TYmEA80
選択した文字列が日本語かどうかの大雑把な判定が欲しいんですが

F12::
ClipboardLast := Clipboard
, Clipboard :=""
Send, ^c
ClipWait, 3
If ErrorLevel
return
If StrPut(Clipboard, "cp0")=StrPut(Clipboard, "UTF-8")
MsgBox, 1Byte
Else
{
Temp := Clipboard ; ←VarSetCapacity
, StrPut(Clipboard, &Temp, "cp932") ; Shift-JIS
If StrGet(&Temp, "cp932")=Clipboard
MsgBox, ja
Else
MsgBox, unknown
}
Clipboard := ClipboardLast
return

矢印の所のTemp := ClipboardはもともとVarSetCapacityが来るべき所ですね
ところで、
VarSetCapacity(Temp, StrPut(Clipboard, "cp932"))
VarSetCapacity(Temp, StrPut(Clipboard, "cp932")*2)
VarSetCapacity(Temp, StrPut(Clipboard))
VarSetCapacity(Temp, StrPut(Clipboard)*2)
のどれでもうまくいきません

なにかアドバイスお願いしますm(。_。)m
59名無しさん@お腹いっぱい。:2012/04/25(水) 09:26:25.04 ID:vBIn4KNW0
正規表現で[ぁ-ヶ亜-K]じゃダメなん?
60名無しさん@お腹いっぱい。:2012/04/25(水) 10:46:14.37 ID:e9TYmEA80
文字列をGoogleTTSとかに渡す予定だったので
「TTSが読めない文字が入ってるか」が判定基準でした
それで、とりあえずShift−JISでのダメ文字が入ってるか判定してみようとしてました

正規表現はよく知らないんで再度すみませんが
[ぁ-ヶ亜-K]だと「仮名や漢字含まれてるか」の判定だとはわかりますが
「日本語で読めない文字が入ってるか」もしくは「Shift-JIS文字か」の判定も簡単に出来ますか?
61名無しさん@お腹いっぱい。:2012/04/25(水) 11:45:32.31 ID:Qhf7dM++0
文章を読み上げるスクリプトでも作ってるの?
62名無しさん@お腹いっぱい。:2012/04/26(木) 12:31:55.59 ID:lEtwU5Fg0
とりあえずSJISでってなんだよ

相手が認識できる文字一覧をきっちり調べるのが第一でしょ

あとは
・文字列内に認識できない文字が含まれていないこと
・文字列全体がすべてが認識できる文字で構成されていること
のいずれかでチェックかけるだけかと

ループでも正規表現でもやることは変わらんね
速度とコード量はかなり違うけど
63名無しさん@お腹いっぱい。:2012/04/30(月) 20:17:45.63 ID:1xq+GJFn0
MouseGetPos,,,h,c
PostMessage,0x114,1,%h%,%c%,ahk_id %h%
で水平スクロールさせようとしたんだが、上手くいかない窓が多いねコレ。

もしかして、取得するハンドルやらコントロールやらは、
窓ごとに個別設定しなければいけないのか。
だとしたら少しメンドーだな…

スレの皆さんはどのように対応しているのかな?
参考までに教えてもらえると助かる。

64名無しさん@お腹いっぱい。:2012/05/01(火) 16:54:59.65 ID:ipX6gbjY0
サブルーチンを作るとき
「関数」として作成していますが
「ラベル」として作成するメリットって何かあるんでしょうか?
65名無しさん@お腹いっぱい。:2012/05/01(火) 18:44:11.81 ID:LxULn79s0
お手軽という点に尽きるんじゃないの
タイプ数が若干減るし括弧書かなくても済む
66名無しさん@お腹いっぱい。:2012/05/01(火) 19:13:55.40 ID:ZQtRXwI70
サブルーチンは「ラベル」でしか作れないはずだが…
「サブルーチン」と「関数」は別物だよ

;*** サブルーチン ***
サブルーチンラベル:
  〜
return

;*** 関数 ***
function() {
  〜
}

何故混在してるのかというと、AHKのアップデートで
goto → サブルーチン → 関数 の順で作られたから
昔は関数なかったのでサブルーチンでやりくりするしかなかった
もっと以前はGotoしかジャンプ命令が存在しなかった


>>63
スクロールバーのwhnd取得するのがいいんだが、ウィンドウ直下にあるとは限らない
↓この辺のソースを参照
http://sites.google.com/site/agkh6mze/trackwheel
http://www6.atwiki.jp/eamat/pub/MyScript/WheelScroll20090722.zip
67名無しさん@お腹いっぱい。:2012/05/01(火) 19:40:46.75 ID:Cyiv6h820
Menuとかは関数でなくラベルで指定しないといけないんじゃないっけ
68名無しさん@お腹いっぱい。:2012/05/01(火) 19:44:16.44 ID:JRCc8ZvZ0
>>66
ありがとう。
自身で作ってみようと考えてたけど、予想以上に複雑で俺にゃ無理だな。
未熟さを痛感したわ。
おとなしく、紹介されたスクリプトを使うことにするよ。
69名無しさん@お腹いっぱい。:2012/05/02(水) 09:09:12.99 ID:mZb9kgaP0
>>68
プログラミングは単純なパーツを組み上げて複雑なモノを造る
いわばレゴブロックの様なモノ

最初から大作考えるより、単機能なモノから発展させていった方が、挫折せず勉強出来ると思う
70名無しさん@お腹いっぱい。:2012/05/02(水) 10:07:55.03 ID:TilwZwmU0
おれは発展の余地は充分すぎるほどあるんだが
現状不満はないから作る必要がないばっかりにまったく技術が進展しないな

たくさんの高度なスクリプトを見てみたいわ
そうすりゃなんか戦力になるのが見つかるかもしれないなぁ
71名無しさん@お腹いっぱい。:2012/05/02(水) 11:07:55.97 ID:/u5Vyddx0
なんだこいつ
72名無しさん@お腹いっぱい。:2012/05/03(木) 00:06:12.85 ID:OOBVf7bu0
>>65
>>66
>>67
ありがとう。
サブルーチン=GoSub了解。
ラベルに優位性がなければ関数に統一し
実現できないことだけラベルという方針で進めます。
73名無しさん@お腹いっぱい。:2012/05/03(木) 22:01:37.55 ID:112UkGLB0
>>70
意訳すると


使い始めたばかりの初心者です。特に望むものは無いんですけど何となくインストールしました

でも皆さんのすごいスクリプトを見れば何かやってみたくなると思うので晒してください
パクります
74名無しさん@お腹いっぱい。:2012/05/04(金) 19:55:36.42 ID:TyZlBxC20
後述のコードを実行し
1)WindowsのCtrl+cでクリップボードに文字列をコピー
2)#cで1度だけテンポラリに別の文字列を格納
3)#vを連続して実行
の手順を実行すると「2」の内容がペーストされることを期待してますが
空白文字や「1」でコピーした文字列がペーストされる場合があります。

なぜ、このような動作になるのかご教授頂けないでしょうか。
75名無しさん@お腹いっぱい。:2012/05/04(金) 19:59:43.36 ID:TyZlBxC20
■実行したコード
global global_tmp

;カーソル行の文字列をテンポラリに格納
#c::
BlockInput, on
SendInput, {Home}+{End}
clipboard_saved := ClipboardAll
Clipboard =
SendInput ^c
ClipWait, 1
global_tmp := Clipboard
BlockInput, off
Return

;テンポラリの内容を次の行にペースト
#v::
BlockInput, on
clipboard_saved := ClipboardAll
Clipboard =
Clipboard = %global_tmp%
SendInput, {End}{`n}^{v}
Clipboard =
Clipboard := clipboard_saved
BlockInput, off
Return
76名無しさん@お腹いっぱい。:2012/05/04(金) 20:05:12.45 ID:6NOfwA6w0
でたご教授
77名無しさん@お腹いっぱい。:2012/05/04(金) 20:12:14.83 ID:TyZlBxC20
SendInput を SendEventに変更すると多少改善したけど、まだ問題を解消できない。
(あと、退避していたクリップボードの内容を戻す処理を修正しました)


;カーソル行の文字列をテンポラリに格納
#c::
BlockInput, on
SendInput, {Home}+{End}
clipboard_saved := ClipboardAll
Clipboard =
SendEvent ^c
ClipWait, 1
global_tmp := Clipboard
Clipboard := clipboard_saved
BlockInput, off
Return

;テンポラリの内容を次の行にペースト
#v::
BlockInput, on
clipboard_saved := ClipboardAll
Clipboard =
Clipboard = %global_tmp%
SendEvent, {End}{`n}^{v}
Clipboard := clipboard_saved
BlockInput, off
Return
78名無しさん@お腹いっぱい。:2012/05/04(金) 20:22:18.50 ID:gl/JK+Qm0
send に変更して Setkeydelay で各パラメーターを大きくしてみては
79名無しさん@お腹いっぱい。:2012/05/04(金) 20:46:06.86 ID:sdiXk5Sr0
^vの送信直後、貼り付けが処理される前に
クリップボードを戻してしまっているのではなかろうか
80名無しさん@お腹いっぱい。:2012/05/04(金) 23:25:37.89 ID:TyZlBxC20
解決しました。

SendMode Input
をスクリプトの冒頭で行なっていたのですが
これを削除することで問題が解消されました。

「SendEvent」「SendInput」「SendPlay」は
SendModeの影響を受けないと思い込んでいたので
投稿したコード内に記載が漏れていました。

>>78
ありがとう。解決のきっかけになりました。

>>79
そうですね。そんな感じの動作をしています。
81sage:2012/05/05(土) 12:45:13.51 ID:Qaej308K0
mac wireless keyboard を windows につないで使いたいのですが
かな -> 変換
英数 -> 無変換
のマッピングがうまく動作しません。

vkE9sc071 Up::Send,{vk1Dsc07B Down}{vk1Dsc07B Up} ;Apple英数 -> 無変換
vkFFsc072 Up::Send,{vk1Csc079 Down}{vk1Csc079 Up} ;Appleかな -> 変換

「かな」を押しても「英数」を押しても「変換」になってしまいます。
いろいろ調べたのですが・・・ご存知の方がいらっしゃれば教えてください。
82名無しさん@お腹いっぱい。:2012/05/05(土) 19:18:50.99 ID:BFbbvolf0
>>81
想像で適当にコメントしちゃうけど・・・
#USEHOOK
は書いてますか?
キーダウン信号が無いからフックしないとうまくマッピングできないのかも。

両方「変換」になってるんじゃなくて
英数 -> 無変換 のマッピングができてないから
デフォルトの動作(全角カタカナ、半角カタカナの変換)になってるんじゃない?

■参考
http://deltatech.blog90.fc2.com/blog-entry-348.html
83名無しさん@お腹いっぱい。:2012/05/05(土) 22:16:00.42 ID:Qaej308K0
> 英数 -> 無変換 のマッピングができてないから

そのとおりでした orz
84名無しさん@お腹いっぱい。:2012/05/06(日) 05:38:46.83 ID:40xFQPhK0
当方window7 64bit ultなのですが
>AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/
こちらのリンクより左上のDownloadよりダウンロードしたインストーラよりx64版のAuto hot keyをインストールしたのですが起動すると
Error at line 47. Line Text:#z Error:Duplicate hotkey. The program wiill exit.
というエラーメッセージが出て起動できません。UACやアンチウィルスは切っていますしアンインストール後ダウンロードページ↓の方にあるリンクよりx64版をインストールし直しても同様のエラーが出ます。
解決方法はありませんでしょうか?
85名無しさん@お腹いっぱい。:2012/05/06(日) 08:03:47.69 ID:Y7aeAeQD0
47行目でのエラー。
ラインText:#zエラー:複製のホットキー。
プログラムwiill出口。
86名無しさん@お腹いっぱい。:2012/05/06(日) 10:40:39.51 ID:nb4q6vBD0
日本語もおかしいし簡単な英語も読めないとかどこの国の人だよw
まずスクリプトを見直せ。
87名無しさん@お腹いっぱい。:2012/05/06(日) 11:49:00.23 ID:Z9EyTdvn0
>>84
Autohotkey.exeを実行するとそのエラーが出るってこと?
その場合はAutohotkey.iniが自動で実行されているので
Autohotkey.iniを修正するか中身を空っぽにすればいい。


http://ahk.xrea.jp/Usage.html
>単にAutoHotkey.exeを実行するなど、Script Filenameを指定せず起動した場合は、
>起動時の作業ディレクトリのAutoHotkey.iniが読み込まれる。
>ファイルが存在しない場合、My Documentsディレクトリ内のAutoHotkey.iniが読み込まれ、
>それも存在しない場合はMy Documentsディレクトリ内にAutoHotkey.iniを作成してよいかを
>問い合わせるダイアログが表示される。
88名無しさん@お腹いっぱい。:2012/05/08(火) 20:01:53.20 ID:m/ASnHEm0
>>84
一応レスするが

そのエラーが出る時点でインスコに問題はない。
おまいさんの書いたスクリプトが腐ってる。

要はホットキー定義の重複だ。

正味の話、そのエラーメッセージが分からんなら、
使わない方がいいんじゃないかね
89名無しさん@お腹いっぱい。:2012/05/08(火) 20:59:01.16 ID:5kLaNkWx0
>>88
英語として読まなくても分かるよね、これ
90名無しさん@お腹いっぱい。:2012/05/08(火) 21:25:06.10 ID:bhxiM9700
ツールチップの書式設定をする方法てのは無いんかな?
91名無しさん@お腹いっぱい。:2012/05/08(火) 22:13:13.04 ID:m/ASnHEm0
ツールチップはOSの設定依存で書式とかはない

枠線のないGUI窓作って好き勝手にコンポーネント置くなり
自前描画でテキスト書くなりする必要あり

用途にもよるが、
DllCallゴリゴリで現窓やデスクトップに直接描画するのもアリ
92名無しさん@お腹いっぱい。:2012/05/08(火) 23:04:33.89 ID:7w+L0ngS0
Gui,Font みたいに簡単に設定が出来るならば、と考えてたんだが。
DllCall のゴリ押しもする気になれんし…
Gui でオプションいじって、それっぽく見せるのが一番楽そうだな。
ありがとう。 参考になったわ
93名無しさん@お腹いっぱい。:2012/05/08(火) 23:07:00.27 ID:/Ge4teaP0
>>90
GUI または Progress を Tooltip の代わりにすれば書式設定を変更可能
http://logsoku.com/thread/anago.2ch.net/software/1317156599/800-805
94名無しさん@お腹いっぱい。:2012/05/08(火) 23:44:46.08 ID:7w+L0ngS0
感激した。
ぼちぼち作り始めようかなと思ったら、完成形がそこにあった。
ありがとうございます。 
95名無しさん@お腹いっぱい。:2012/05/09(水) 11:59:53.31 ID:Flg03UTx0
自分はこういうの作ってlibフォルダに入れてる。
http://www.autohotkey.net/paste/6daiaj

素人が作ったものなんで突っ込み所ありそうだけど
後学のために遠慮なく突っ込んでください。
96名無しさん@お腹いっぱい。:2012/05/09(水) 12:02:03.16 ID:2Uf7HPLo0
スクロールバーを操作させることは出来るでしょうか?
10%スクロールダウンとか
97名無しさん@お腹いっぱい。:2012/05/09(水) 19:43:01.89 ID:NiqxG7sdi
相手による。
通用する相手でもDllCallと構造体分からんと無理
98名無しさん@お腹いっぱい。:2012/05/09(水) 22:07:17.45 ID:h9ieK83r0
>>95
あれ、classってahkで使えたっけ?
99名無しさん@お腹いっぱい。:2012/05/10(木) 08:03:50.34 ID:Hs+FNWiI0
AutoHotkey_Lだで
100名無しさん@お腹いっぱい。:2012/05/11(金) 12:26:04.97 ID:jf0tlkLN0
a = 5でIf(10 > a > 0){が真でIf(10 > a > 1){が偽になるのが不思議だったんですけど
もしかして((10 > a) > 0)って左から順番に処理されてる?
101名無しさん@お腹いっぱい。:2012/05/11(金) 13:18:09.43 ID:EGGEEEBF0
>>100
てか不等式ってそういう書き方できたっけ?
(10 > a && a > 0)
みたいな書き方しかできないと思ってた
102名無しさん@お腹いっぱい。:2012/05/11(金) 15:21:39.54 ID:6c/ulgEP0
(10 > 5 > 1)
=(True(=1) > 1)
=(1 > 1)
=False
103名無しさん@お腹いっぱい。:2012/05/11(金) 17:43:37.24 ID:jf0tlkLN0
ああやっぱり左からなんですねthx

>>101
(10 > a > 0)の方が馴染みがあるので使えるならこっち使いたかったんだ
多分この書き方できないのが普通
10442:2012/05/13(日) 01:25:38.87 ID:bgX6yvDt0
すみません、42です。何度も何度も情けない限りですが、自力解決出来そうにないのでまた助言いただきたく思います

キーマップを!KeyMapに切り替えた状態で2ストロークキーを定義できません。%KeyMap ? "" : A_Thishotkeyの使い方を分かってないせいかと思うのですが……
流行らせるページのMyScriptのサンプルコードを↓のようにして>>50の.ahkに追加しようとしたのですがErrorが出ました。


^::: ;first key
Input,InputChar,C I L1 T2,{Esc},o,k ;second keys
if ErrorLevel=Match
{
if InputChar=o ;actions
Send,^f
else
if InputChar=k
Send,a
}
return


みなさんどういったところで勉強されたんでしょう、流行らせるページだけなんでしょうか?
105名無しさん@お腹いっぱい。:2012/05/13(日) 03:03:34.82 ID:SkeCNhj50
>>104
見た範囲で思った事だけど

呼び出しホットキーの"^:::"は"^*::"にする
Inputの"EndKeys"に{Esc}は使えないんじゃない?
押されたKey別に分岐するなら、Matchリストは余分な気がする

^*:: ;first key
Input,InputChar,C L1 T2 ;second keys
if InputChar==o ;actions
Send,^f
else if InputChar==k
Send,a
return
106名無しさん@お腹いっぱい。:2012/05/13(日) 03:10:23.22 ID:SkeCNhj50
おっと{Esc}は使えたみたいだ
107名無しさん@お腹いっぱい。:2012/05/13(日) 03:59:45.03 ID:lVawK2540
「 : 」で修飾キーを使う場合は仮想キーコードで指定する
^vkBA:: ;first key
  if KeyMap
  {
    Input,InputChar,C I L1 T2,{Esc},o,k ;second keys
    if InputChar=o ;actions
      Send,^f
    if InputChar=k
      Send,a
  }else{
    Send,^{vkBA}
  }
return

よく分からんけどこんな感じ?
108名無しさん@お腹いっぱい。:2012/05/13(日) 04:29:13.91 ID:bgX6yvDt0
>>105
それでは機能しないようです
Errorは出ないのですが完全に無視されてしまいます
あと^*::だとCtrl+Shift+:と認識されるみたいです

>>107
if KeyMapの行で「This Line doesn't contain a recognized action」と言われてしまいます
仮想キーコードについては気付きませんでした、ご忠告ありがとうございます
109名無しさん@お腹いっぱい。:2012/05/13(日) 06:25:33.77 ID:yYaYR1m50
「This Line doesn't contain a recognized action」
については >>2 の最後 を参照

Send, % KeyMap ? "a" : A_Thishotkey ; KeyMap
は三項演算子を使って書いているだけで
If KeyMap
Send, a
Else



が True なら Send, a 、 False なら Send, %A_Thishotkey%
110109:2012/05/13(日) 06:28:43.31 ID:yYaYR1m50
途中で書き込んでしまった

Send, % KeyMap ? "a" : A_Thishotkey ; KeyMap
は三項演算子を使って書いているだけでIf文に置き換えると

If KeyMap
Send, a
Else
Send, %A_Thishotkey%

となる。
111名無しさん@お腹いっぱい。:2012/05/13(日) 09:56:20.78 ID:bgX6yvDt0
>>109
テンプレを忘れるなどと、大変失礼しました……
Errorは出なくなりましたがこちらも完全に無視されるようです

>>110
なるほど、おぼろげながら分かりました。流行らせるページの「?:演算子(条件)」のことですね

if KeyMapはif !KeyMapにはしなくていいんでしょうか、やってみても駄目でしたが
112名無しさん@お腹いっぱい。:2012/05/13(日) 12:09:53.98 ID:SkeCNhj50
>>108
教えてもらった仮想キーコードの方で解決しただろうけど
*を使う場合は、"LCtrl + *"だった。これは失礼
113名無しさん@お腹いっぱい。:2012/05/13(日) 12:31:17.79 ID:SkeCNhj50
訂正 "LCtrl + *" → "LCtrl & *"
114名無しさん@お腹いっぱい。:2012/05/13(日) 12:36:03.08 ID:yYaYR1m50
>>111
>if KeyMapはif !KeyMapにはしなくていいんでしょうか、やってみても駄目でしたが

! 演算子(論理否定)
http://ahk.xrea.jp/commands/__Not.html

>みなさんどういったところで勉強されたんでしょう、流行らせるページだけなんでしょうか?

オレの場合はAutoHotkeyを流行らせるページのリファレンスを意味が分からないところが
殆どだったけどとりあえず全部のページに目を通した。
んで、一度目を通しているおかげでやりたいことに必要なものが漠然とわかってくるので
あれとこれとそれを組み合わせればいけるんじゃね?みたいになって
あとはパズルみたいに組み立てたり、入れ替えたり、試行錯誤してそれとなく使えるようになった。
11542:2012/05/13(日) 14:04:32.17 ID:bgX6yvDt0
>>112
わざわざありがとうございます

>>114
それがありましたか
^i::KeyMap:=!KeyMapのものと区別がついてなかったです。こっちも分かっているわけではありませんが……

教えていただいたことと流行らせるページの記述から考えると>>107で動く筈だと思うのですが、何故か動きません
今現在の.ahkを上げますので確認してもらえないでしょうか?
ttp://www1.axfc.net/uploader/File/so/78892.dat

すみません、所用につき5時間ほど離れますがもう少しお付き合いいただけると幸いです
116名無しさん@お腹いっぱい。:2012/05/13(日) 15:54:37.52 ID:yTTOuCqW0
^i::KeyMap:=!KeyMap
これが分からないなら↓を読んだ方がいい
 スクリプト仕様 - AutoHotkeyJp
 https://sites.google.com/site/autohotkeyjp/reference/Scripts
このページの
 「変数」 「複雑な式を用いた代入」(リンク) 「式の代入/条件分岐」 「論理演算子」
117名無しさん@お腹いっぱい。:2012/05/13(日) 16:03:50.41 ID:yTTOuCqW0
ちなみに読みやすくするとこうなる

ホットキーラベル
 ↓
 ^i::  KeyMap := (!KeyMap)
     ↑        ↑
  代入先の変数  代入される式
118名無しさん@お腹いっぱい。:2012/05/13(日) 19:06:48.09 ID:lVawK2540
>>115
o,kが他のホットキーと被ってる。
Suspendで一時的にホットキーを無効にしてみたら?
119名無しさん@お腹いっぱい。:2012/05/13(日) 20:52:33.87 ID:bgX6yvDt0
>>117
一通り見ましたが真と偽の概念が理解できないのでなんとも……
新たにKeyMapじゃない変数を定義した、ということでしょうか

>>118
2ストロークキーの開始と終了にSuspend, On・Suspend, Offを入れたら出来ました!
一から十まで本当にありがとうございます

Ctrl2連打を割り当ててるOrchisが呼び出されてしまいますがそちらはおいおい解決法を探っていくことにします
これ以上ここでお世話になっていたら教えて君を通り越してダメ人間になりそうですので……

みなさんレスくださいましてありがとうございました。もっと自力でやれるように頑張ります
120名無しさん@お腹いっぱい。:2012/05/13(日) 22:55:55.25 ID:fldHnlJ80
プログラミングに一切ふれていない人がahkをいじり出すと
ところどころで詰まってしまうと思う

マニュアル目次 - 日本語プログラミング言語「なでしこ」
http://nadesi.com/doc/

まずこのあたりでプログラミング初歩の全体像をつかんだらいいかと
121名無しさん@お腹いっぱい。:2012/05/13(日) 23:33:59.78 ID:lVawK2540
昔、ひまわりに手を出して挫折したの思い出した…
日本語プログラミングって逆に分かりにくくね?
122名無しさん@お腹いっぱい。:2012/05/14(月) 20:01:16.91 ID:VMlSoDBB0
なんか超怪しいプロセスがーとおもったらspy立ち上げっぱなしだった。
もうちょっと名前何とかしてくれよw
123名無しさん@お腹いっぱい。:2012/05/14(月) 21:35:05.62 ID:aFyhf3QK0
>>122
AU3_Spy.exe を自分の好きな名前に変更すればOK

>>42

KeyMap:=!KeyMap

↑はKeyMapが1(真=True)なら0(偽=False)へ、0なら1へ入れ替えを行なっている(真偽を反転させている)。
これをIf文に置き換えると
If KeyMap = 1 ; = 1 を省いて If KeyMap だけでもOK
KeyMap = 0
Else
KeyMap = 1

もしくは
If KeyMap = 0 ; または If !KeyMap でもOK
KeyMap = 1
Else
KeyMap = 0

続く
124名無しさん@お腹いっぱい。:2012/05/14(月) 21:36:03.03 ID:aFyhf3QK0
If KeyMap
とした場合、KeyMap が「0」や「空の文字列」以外なら真(True)となる。
つまり、KeyMapに数値(例えば 100、-9999、0.01など)や文字列(例えば「あ」など)
が代入されていたら真(True)です。逆に
If !KeyMap
とした場合、「0」や「空の文字列」が真(True)となる。
なので0か1(真か偽、OnかOff)で分岐する場合は

If KeyMap = 1 や
If ( KeyMap = 0 && KeyMap = "" )

とするより、

If KeyMap や
If !KeyMap

と記述するだけで事足りる

キーマップを3つ以上用意するなら(1→2→3→1 と入れ替えるなら)

If KeyMap = 1
KeyMap = 2
Else If KeyMap = 2
KeyMap = 3
Else
KeyMap = 1

↑を三項演算子に置き換えると

KeyMap := KeyMap = 1 ? 2 : ( KeyMap = 2 ? 3 : 1 )
125名無しさん@お腹いっぱい。:2012/05/15(火) 09:55:26.47 ID:GWlrt0rm0
xboxコントローラーのキーリマップしているんですが上手くいきません。

Joy7::
GetKeyState, state2, Joy5
if state2 = D
WinActivate, ahk_class Shell_TrayWnd
return

だと、左上のボタン押している間にセレクトを押すと対象のウィンドウをアクティブにするというもので上手くいきました。
次に、左上と右上のボタン同時押ししている間にセレクト押すと別の対象のウィンドウをアクティブにするという意図で、

該当部分を
GetKeyState, state1, Joy5 & Joy6としたのですがエラーがでます。

ただしい記述を教えてください。
ぶしつけな質問で恐縮ですがよろしくおねがいします。
126名無しさん@お腹いっぱい。:2012/05/15(火) 10:32:09.22 ID:GWlrt0rm0
自分で試行錯誤してたら上手いことできたわ
Joy7::
GetKeyState, state1, Joy5
GetKeyState, state2, Joy6
if state2 = D
WinActivate, ahk_class Shell_TrayWnd
if state1 = D
if state2 = D
WinActivate, ahk_class Skyrim
return

&とかなんかでもうちょっと短縮できるんだろうな。
127名無しさん@お腹いっぱい。:2012/05/15(火) 11:12:15.14 ID:LKh0Swpx0
AutoHotkey v2.0-a030以降でWinGetListがちゃんと使えてる人いたら
その部分のサンプル見せていただけませんか?
128名無しさん@お腹いっぱい。:2012/05/15(火) 13:33:41.94 ID:SVE77Cyk0
2系は殆ど話題になってないんで、
使用感や互換性・試行錯誤したをつらつら書くだけでもありがたいかも。
129名無しさん@お腹いっぱい。:2012/05/15(火) 18:53:23.56 ID:WtP72gSE0
同意
130名無しさん@お腹いっぱい。:2012/05/17(木) 11:51:23.95 ID:RKMQoQcY0
ジョイスティックのX軸0〜100をZ軸の0〜50に
Y軸をZ軸の51〜100に割り当てることって出来ますか?
2軸を1軸に合体させたいのですがこのソフトで出来るか教えて下さい。
131名無しさん@お腹いっぱい。:2012/05/17(木) 12:31:27.51 ID:l9FPFwqOi
ジョイスティックの置き換えは無理

・入力信号を殺せない
・別信号を出すことができない

ただ監視して特定の信号があったときに色々できるだけ
元の信号はスルーのみ

どうしてもやるなら、仮想ジョイスティック用意してそいつを操作することになる。
それでも元の信号は殺せない
132名無しさん@お腹いっぱい。:2012/05/17(木) 13:37:11.67 ID:RKMQoQcY0
>>131
ありがとうございます。
元の信号は殺せなくても構いません。
ゲームなどのソフト側で仮想ジョイの軸を割り当てればOKなので。
気になったのは「別信号を出すことができない」という部分です。
このソフトだけでは仮想ジョイに出力出来ないという事でしょうか?
133名無しさん@お腹いっぱい。:2012/05/17(木) 15:12:45.98 ID:U5WFr/7C0
Windows 7 で拡張子が .scr のプロセスが起動しているのを同定するには
どうしたら良いでしょうか。Process, Exist, .scr をタイマーで呼びだしてみましたが
これだけでは上手くいきませんでした。
134名無しさん@お腹いっぱい。:2012/05/17(木) 18:20:20.38 ID:vhtWt0g40
こっちにも貼っときます

Autohotkey専用うpろだ
ttp://ux.getuploader.com/autohotkeyl/
135名無しさん@お腹いっぱい。:2012/05/17(木) 23:38:29.02 ID:zd8E3JTn0
mousegestureの派生がlukewarmさんから了承を得ていたみたいだね
ttp://lukewarm.s151.xrea.com/test/read.cgi/b/1264431038/l50
136133:2012/05/19(土) 09:16:50.23 ID:G3vmTF3w0
>>133 の問題は公式フォーラム過去ログを参照して解決しました。
http://www.autohotkey.com/community/viewtopic.php?t=48486
137名無しさん@お腹いっぱい。:2012/05/19(土) 12:39:09.06 ID:B5mjnj5X0
MouseGestureLで設定画面を出す動作割り当てはどうすればいいんでしょうか?
138名無しさん@お腹いっぱい。:2012/05/19(土) 13:20:50.63 ID:bu702jAn0
Run,%A_ScriptDir%\MG_Edit.ahk
または拡張スクリプト編集の中の
;----- ユーザー定義サブルーチン --------
^e::Gosub,MG_Edit
139名無しさん@お腹いっぱい。:2012/05/19(土) 14:08:07.70 ID:421iAYvw0
>>138
おお、実行ファイル指定するより軽く立ち上がった
ありがとうございます。
140名無しさん@お腹いっぱい。:2012/05/20(日) 19:27:04.61 ID:IdT/xxMg0
流行らせるページ跡地などを読みながら使ってます。
コピー   Send,{Ctrl down}{Insert}{Ctrl up}
貼り付け Send,{Shift down}{Insert}{Shift up}
切り取り Send,{Shift down}{Delete}{Shift up}
これを使ってみたところ、コピーと貼り付けは、だいたいのアプリで使えるのですが、
切り取りが結構な割合で機能しないんです。
個人的にCtrl+C、Ctrl+X、Ctrl+V、が押しにくいので、無変換+任意のキーで使いたいのですが
上記のやり方以外にCtrl+C、Ctrl+X、Ctrl+Vを設定する方法などがありましたら教えてもらえないでしょうか。
141名無しさん@お腹いっぱい。:2012/05/20(日) 19:45:28.58 ID:x9mt5Y5B0
>>140
・setkeydelay で間隔を大きくしてみる。
・一行で記述せず、別々に分けて間にSleepを自分で入れる
  Send,{ctrl down}
  Sleep,50
  Send{Delete down}
・blockinput, on → 対象ウィンドウをアクティブにする → Sendでキーを送る → blockijnput, Off
・Send,{ctrl down}{delete}{ctrl up} ではなく Send,{ctrl down}x{ctrl up} にしてみる。
142名無しさん@お腹いっぱい。:2012/05/20(日) 19:46:52.12 ID:x9mt5Y5B0
途中で書き込んでしまった

・setkeydelay で間隔を大きくしてみる。
・一行で記述せず、別々に分けて間にSleepを自分で入れる、例えば
  Send,{ctrl down}
  Sleep,50
  Send{Delete down}
  Sleep,100
  Send{Delete down}
  Sleep,50
  Send,{ctrl up}
・blockinput, on → 対象ウィンドウをアクティブにする → Sendでキーを送る → blockijnput, Off
・Send,{ctrl down}{delete}{ctrl up} ではなく Send,{ctrl down}x{ctrl up} にしてみる。
143名無しさん@お腹いっぱい。:2012/05/20(日) 21:11:26.05 ID:Ukc85Y4k0
>>142
試させて頂きました。
sleepのほうはファイラでフォーカスが移ってしまう場合がありましたが
Send,{ctrl down}x{ctrl up}はエディタでもうまくいきました。
丁寧にアドバイスして頂きまして、ありがとうございまいした。
144名無しさん@お腹いっぱい。:2012/05/21(月) 11:23:55.48 ID:0eMKI1AT0
今回のケースは関係ないかもしれないけど
SendInput や SendPlay に変更しただけで
全然動かなかったものが、あっさり動くときもあるので覚えておくといいよ
145名無しさん@お腹いっぱい。:2012/05/21(月) 11:26:26.59 ID:0eMKI1AT0
Send(デフォがSendEvent)で普通に動いても、別モードで違いでスムーズさが変わったりすることもあるんで
どうも動作がぎこちないなーってときにも変えてみるといい
146名無しさん@お腹いっぱい。:2012/05/21(月) 12:05:31.95 ID:PxYca1RD0
そういうのを考慮すると、#IfWin〜 #If 〜 で
窓変化に対応して SendMode 切り替えるオプション欲しいなと思ったりする

SendInput〜とか書けばいいんだけど、面倒
147名無しさん@お腹いっぱい。:2012/05/21(月) 12:59:31.27 ID:5TvJmKZU0
Process,WaitClose って上手いこと効かないね。
148名無しさん@お腹いっぱい。:2012/05/21(月) 22:18:54.34 ID:QD1hTtal0
Guiを表示した時にあらかじめGui,Add,Editの欄に
変数を入力させておくにはどうすれば良いでしょうか?

設定をGuiで行えるように奮闘してるんだけど
表示させる度に設定した数値が0に戻ってしまう
これじゃ、使い勝手が悪すぎる。
149名無しさん@お腹いっぱい。:2012/05/21(月) 22:37:50.10 ID:RN29z3PN0
http://sites.google.com/site/autohotkeyjp/reference/commands/Gui_Add_Edit
Gui, Add, Edit [, Options, Text]
Text 最初に入力欄に表示されているテキストを指定する
150名無しさん@お腹いっぱい。:2012/05/21(月) 22:39:55.46 ID:PxYca1RD0
; (1) 初期化時に設定
Gui, Add, Edit, vEdit1, Hoge Hoge
Gui, Show

; (2) 初期後に何らかのイベントで設定
Gui, Add, Edit, vEdit1 w200
Gui, Add, Button,, Change
Gui, Show
Exit
ButtonChange:
 GuiControl,, Edit1, Fuga Fuga
 Return
151名無しさん@お腹いっぱい。:2012/05/21(月) 22:54:06.01 ID:QD1hTtal0
>>148
次の行に Gui,Add,UpDown をつけていたのが原因のようです。
教えて頂いたやり方で、いろいろ試してみたらできました。
ありがとうございます。
152名無しさん@お腹いっぱい。:2012/05/22(火) 15:26:11.16 ID:uHVGN9A00
Process,WaitClose効かないなぁといろいろ試してみて、
一番最初の行に書いてみたら上手くいった。
なんでだろう?
153名無しさん@お腹いっぱい。:2012/05/22(火) 20:50:24.37 ID:tLmcJaNx0
エスパーしてみる

そのコマンドにたどり着く前に、どこかで「待ち」が発生して
処理がとまってるのではないだろうか。
154152:2012/05/23(水) 03:46:15.14 ID:8+R9Q+6K0
よくわからんなりに考えてみたんだけど、return と書かれている行より前だとProcess,WaitCloseを認識して後だと認識してない様子。
想定通りに動いてるのはこんな感じの.ahkなんだが

Process,WaitClose,AGE.exe
ExitApp
#SingleInstance, Force
#Persistent
#InstallKeybdHook
#UseHook, On
<^$vk1D::Suspend, Toggle
return

Pause::
ExitApp
#IfWinActive ahk_class ARCGameEngine
Esc::
WinKill,A
WheelDown::Send, {LButton}
~RButton & LButton::Send, !{Enter}
#IfWinActive
Esc::
WinKill, ahk_class ARCGameEngine
^!Up::
WinActivate, ahk_class ARCGameEngine
return
^!Down::
WinActivate, ahk_class Shell_TrayWnd
return で、
<^$vk1D::Suspend, Toggle
return

の下に持ってくると動かないからreturnが原因?
155名無しさん@お腹いっぱい。:2012/05/23(水) 09:04:30.53 ID:Jr+lgAN70
>>154
そりゃそうだ
http://sites.google.com/site/autohotkeyjp/reference/Scripts#autoexecsection
auto-executeセクションの説明を読むといいよ
156名無しさん@お腹いっぱい。:2012/05/23(水) 11:30:38.19 ID:FWfAKQj10
更にreturnがなんなのかわかってない悪寒
157名無しさん@お腹いっぱい。:2012/05/23(水) 11:38:36.46 ID:34me5LgB0
こんなのに振り回された連中が哀れ
158名無しさん@お腹いっぱい。:2012/05/23(水) 18:17:24.06 ID:FWfAKQj10
別に誰も振り回されてはいないだろ
あるあるネタだろうとは思ったがコード貼るまでスルーしてたし
159名無しさん@お腹いっぱい。:2012/05/23(水) 20:11:31.04 ID:rML3eeXp0
Windows7で一時間アイドルが続くとPCを休止状態にするスクリプト使ってます。
スクリプトから休止状態になったPCを復帰させ、そのままキーボードやマウスにふれないでいると、一分たたないかくらいで、また休止状態に移行してしまいます。
最後にExitAppを入れてタイマースクリプトを停止させているんですが、
それでもアイドルのタイマーがとまらないようで、復帰後マウスかキーボードにふれないとすぐに休止状態になってしまいます。
休止状態から復帰させたら、一度アイドル時間のカウントをとめて休止状態に移行しないようにすることってできないでしょうか?

使っているスクリプトはこれです。

#Persistent
SetTimer,OnTimer,1000
return

OnTimer:
If A_TimeIdlePhysical <3600000
{
return
}

else

DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
ExitApp
160名無しさん@お腹いっぱい。:2012/05/23(水) 21:07:38.74 ID:FWfAKQj10
exitappにたどり着く前に休止してるからじゃね?
サスペンドする前に、settimer,OnTimer,Off 入れたらどうなるかやってみて
161名無しさん@お腹いっぱい。:2012/05/23(水) 22:16:06.23 ID:rdzjIMj30
シフトロック機能つけると
大文字入力、範囲選択の時そこそこ便利だな
開いてるショートカットにぶっこんでおくと良い
162名無しさん@お腹いっぱい。:2012/05/23(水) 22:45:49.28 ID:rML3eeXp0
>>160
これでやってみましたがうまくいきました。ありがとうございました。

DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
settimer,OnTimer,Off
ExitApp

今まで使っていたsettimer off無しのスクリプトでもタスクマネージャーで確認するとそのタイマースクリプトは停止されていたんですが、
どうして休止状態になってしまってたんでしょうかね?タイマーがひそかに動き続けてたってことでしょうか。
163名無しさん@お腹いっぱい。:2012/05/23(水) 22:59:28.05 ID:FWfAKQj10
いやつうか

else
{
settimer,OnTimer,Off
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
ExitApp
}

のほうが良くね?動いてるんならいいけど
dllcallの中で休止処理してるから戻ってくる前にマシンが眠っちゃってるじゃないかと思うんだが
164名無しさん@お腹いっぱい。:2012/05/24(木) 13:10:00.92 ID:eqt9CJdQ0
デスクトップの壁紙とデスクトップアイコンの間に
画像(GUIウィンドウ)表示ってできないでしょうか

WinSet,Bottom だとデスクトップアイコンの上に来てしまってダメでした
165名無しさん@お腹いっぱい。:2012/05/24(木) 20:25:56.46 ID:d9I7ZbW/0
>>163
そうですね。そっちにしときます。
どうもです。
166名無しさん@お腹いっぱい。:2012/05/25(金) 00:34:13.35 ID:oqDYkn0b0
>>164
背景画像変更するのと変わらんような気がするが
頻繁に変わらないなら画像加工して、COM叩けばいいし
167名無しさん@お腹いっぱい。:2012/05/25(金) 03:29:42.78 ID:/nSoydCT0
ユニコード版とANSI版でメッセージの番号が違うようですが、
相互に番号変換できるのでしょうか?
また、両方の番号が載っているサイトやツールはないでしょうか?
168名無しさん@お腹いっぱい。:2012/05/25(金) 12:18:27.14 ID:oqDYkn0b0
歴史的経緯で番号体系には意味無さそうだし
変換テーブル用意するしかないね

番号の定数はVisual-C とか MINGW とかのヘッダファイルに定義がある
169名無しさん@お腹いっぱい。:2012/05/25(金) 12:42:08.73 ID:seyKFqMb0
>>166
デスクトップより小さい画像も表示させたいので、
できれば背景画像(?壁紙)は変更したくないんですが
やっぱ変更する系の方法しかないですかね?

壁紙を変えるとしたらDllCall()でSystemParametersInfo関数使う方法しか知らなくて
それだとBMPしか使えないし…、

>頻繁に変わらないなら画像加工して、COM叩けばいいし
ちなみにこちらの方法だと、どういう作業になるんでしょうか
壁紙と別の画像を合成して表示とか?
170名無しさん@お腹いっぱい。:2012/05/25(金) 13:13:20.23 ID:ZQFUWNeD0
>>168
そのヘッダファイルに定義はどうすれば見るようになるのですか???
171名無しさん@お腹いっぱい。:2012/05/25(金) 15:54:36.03 ID:hnxo1UtZ0
foo、bar、bazとtitleの異なる複数のウィンドウが起動するアプリを#IfWinActiveでclass指定しているのですが、
fooだけを除外したい場合はどう書けばよいのでしょうか?
172名無しさん@お腹いっぱい。:2012/05/25(金) 17:28:02.11 ID:lRQatxse0
;Minimize Window

WinMinimize で普通のウィンドウは大抵最小化するんだけど、
Terapadとか一部のアプリとかは最小化せずに
タイトルバーを縮小化した状態になってタスクバーに最小化で格納されないんだがどうすればいいかな
173名無しさん@お腹いっぱい。:2012/05/25(金) 18:03:29.69 ID:eA4t4FQH0
>>171
逆に #IfWinActive で除外したくないタイトルを指定したほうがいいんじゃない?
ウィンドウが開くたびにタイトルが全く異なり、且つコントロールクラスが共通だったりするの?
というかそのアプリの名称を隠さずに書いたほうが、知っている人から適切なレスがついて解決が速いと思うんだけど。

>>172
http://sites.google.com/site/autohotkeyjp/reference/commands/WinMinimize
のRemarksの方法(PostMessage)を試す。
もしくは、ウィンドウに Send,!{space} して(コンテキストメニューを開いて)、Send,n する(最小化)
174名無しさん@お腹いっぱい。:2012/05/25(金) 18:21:50.46 ID:hnxo1UtZ0
>>173
二度手間になってしまってすみません 主にAviutlです
プラグインごとに窓があり、ahk_classはAviUtlで共通ですがtitleはプラグイン名なので全てバラバラです
表示できる窓は数十枚に及ぶので、除外したくないタイトルを指定するのは厳しい気がします
とりあえずチャプター編集だけ除外にしたいのですが、どう指定すればよいでしょうか?よろしくお願いします
175名無しさん@お腹いっぱい。:2012/05/25(金) 18:47:00.08 ID:XODA09870
#If WinActive("ahk_class AviUtl") and !WinActive("チャプター編集")
176名無しさん@お腹いっぱい。:2012/05/25(金) 18:58:26.45 ID:hnxo1UtZ0
>>175
出来ました
ありがとうございます
177名無しさん@お腹いっぱい。:2012/05/25(金) 22:01:13.02 ID:lRQatxse0
>>173
後者の方で無事できました、ありがとうございます。
前者は、紹介されたページの該当部分をコピペしたところ
missing close quoteのエラーがでて反映されませんでした。
178名無しさん@お腹いっぱい。:2012/05/27(日) 02:25:15.48 ID:6EqyWOGp0
EpgDataCap_BonのEpgTimer.exeのコマンドIDを調べたいです。
窓コンやResource Hackerで調べたのですがわからなかったです。
ソースは付いています。
調べる方法ありますか?
179名無しさん@お腹いっぱい。:2012/05/29(火) 01:28:11.24 ID:dsmJKyA40
なんか無限ループに入ってたり突然終わってしまうスクリプトがあるんだけど、
検証のために各行ごとにここまでは動作したってのをファイルに書き出したいんだけどいい方法ない?

ダンプコマンドとか無いのか探したんだけど見当たらないもんで。
180名無しさん@お腹いっぱい。:2012/05/29(火) 19:23:30.66 ID:WyNmM4Lw0
outputdebugじゃだめなのかい?
181名無しさん@お腹いっぱい。:2012/05/29(火) 20:08:25.89 ID:6LG2jZ/m0
デバッガ使ってブレイクポイント設置してステップ実行すりゃいい
182名無しさん@お腹いっぱい。:2012/05/29(火) 22:42:24.84 ID:YTr0nn1j0
Win+TabをF10に設定する方法を教えて頂けないでしょうか
183名無しさん@お腹いっぱい。:2012/05/29(火) 22:48:06.01 ID:bh4M05wl0
#Tab::Send,{F10}
184名無しさん@お腹いっぱい。:2012/05/29(火) 23:07:31.35 ID:YTr0nn1j0
>>183
ごめんなさい逆でした・・F10を押すとWin+Tabです
185名無しさん@お腹いっぱい。:2012/05/29(火) 23:35:19.08 ID:bh4M05wl0
そのままの意味なら

send,#{Tab}

でも、意図がよくわからん
F10を押している間にWin+Tabを連打してほいなら↓のようにする

F10::
send,{lwin down}{Tab}
SetTimer, Tabrenda, 350
keywait, F10
SetTimer, Tabrenda, off
send,{lwin Up}
return

Tabrenda:
Send,{Tab}
Return

>>1のリンク先を参考に自分の好きなようにいじるといいよ
186名無しさん@お腹いっぱい。:2012/05/29(火) 23:54:29.07 ID:YTr0nn1j0
>>185
ありがとうございます!連打のほうでばっちりです
187名無しさん@お腹いっぱい。:2012/05/30(水) 00:02:58.60 ID:jX4/H2s80
クリップボードを使わず、選択範囲(青くなっているところ)を取得する方法ないですか?
188名無しさん@お腹いっぱい。:2012/05/30(水) 00:47:27.86 ID:qR0WBQmY0
ControlGetの Choice、List,Selected、Selected あたり
189名無しさん@お腹いっぱい。:2012/05/30(水) 06:16:38.94 ID:eRf/nTh80
スマホの音声認識が結構正確でおもしろいんだけど
音声認識とAHKと組み合わせれば結構簡単にPCでも同じように声で操作できるんじゃないかなと思うんだけど
PCで使えるフリーの音声認識のDLLとか無いのかな?

「メモ帳」でメモ帳を起動して
「閉じる」で ALT+F4を送って
「検索」→「検索ワード」でGoogle検索とかその程度の事で良いんだけど

ソフトではもう普通にありそうな気もするけど
スクリプトならいろんな融通の利く活用ができそうな気がするから
可能なら誰かできる人おねがいしたいです
190名無しさん@お腹いっぱい。:2012/05/30(水) 07:12:39.84 ID:1XBUwyve0
音声認識ならSAPIから出来るんじゃねーの?
191名無しさん@お腹いっぱい。:2012/05/30(水) 08:25:06.28 ID:qPtPdr1V0
AutoHotKey + SAPIで音声認識 - jillのネトゲにっき
http://jill524.blog110.fc2.com/blog-entry-23.html
192名無しさん@お腹いっぱい。:2012/05/30(水) 13:06:36.65 ID:Rgtj7Tvr0
ホットキーを割り当てた結果、WinキーやCtrlキーを押しながらバシバシ操作する事が増えたんですが、
そうするとユーザー補助の固定キー機能が有効になってしまって暴発することが多くなってしまいました
どうやってもユーザー補助を無効にすることもできず、困っています
この問題を回避する方法は何かないでしょうか?
193名無しさん@お腹いっぱい。:2012/05/30(水) 13:53:49.84 ID:bw7MHKGN0
それはスレ違いじゃね?
194名無しさん@お腹いっぱい。:2012/05/30(水) 14:11:34.25 ID:1bFYrkYiP
>>どうやってもユーザー補助を無効にすることもできず
んなこたねーよバカ

Windows 7 なら
コントロール パネル\すべてのコントロール パネル項目\コンピューターの簡単操作センター\固定キー機能をセットアップします
195名無しさん@お腹いっぱい。:2012/05/30(水) 14:46:22.22 ID:Rgtj7Tvr0
書き忘れていました、XPのユーザー補助です。sethc.exeをアクセス禁止にしても無理でした

そんなにレアなケースではないかと思いましたが、AutoHotkeyを運用する上で
修飾キーを押しっぱなしにするような割り当て方は根本的に間違っているんですね
使い方を改めます。失礼しました
196名無しさん@お腹いっぱい。:2012/05/30(水) 15:12:31.66 ID:14FBcwg90
xp 固定キー でググる
197名無しさん@お腹いっぱい。:2012/05/30(水) 16:36:05.77 ID:1bFYrkYiP
>>195
XPでも7同様のコントロールパネルから設定できるよ。自分もXPでもそうしてたし。
もっとよく探せクソが。
198名無しさん@お腹いっぱい。:2012/05/30(水) 17:14:11.84 ID:bw7MHKGN0
口悪いなw
ショートカットキーを無効にして無いんじゃね
外さなきゃいけないチェックは一つじゃないよ
199名無しさん@お腹いっぱい。:2012/05/30(水) 17:32:01.71 ID:14FBcwg90
タダのツンデレです
200名無しさん@お腹いっぱい。:2012/05/30(水) 17:36:41.36 ID:bw7MHKGN0
ああそうか・・・修行が足りないな
201名無しさん@お腹いっぱい。:2012/05/30(水) 20:58:37.79 ID:Rgtj7Tvr0
>>197
伝わってないようですが、>>195のsethc.exeとはユーザー補助のオプションの事です

それはそうと割り当てをやめたら症状が出なくなったので少し実験をしてみたところ、
原因が特定できました

#a::
BlockInput, On
Sleep, 100
BlockInput, Off
return

こんな感じでBlockInputとSleepを併用してるものを修飾キーを使ったホットキーに割り当て、
それを3秒以上押下すると固定キーがオフからオンになってしまうようです
(BlockInputのみやSleepのみだと変化無し。ちなみに固定キーを解除するにはWinキーを2回押す)

バグなのか仕様なのかよくわかりませんが、ご報告まで
202名無しさん@お腹いっぱい。:2012/05/30(水) 21:33:33.82 ID:UZVTRKtw0
ユーザ補助の当該機能は機能をオフにできるし、皆そうしろと言ってるのが分からんのか
203名無しさん@お腹いっぱい。:2012/05/30(水) 21:45:16.18 ID:Rgtj7Tvr0
「オフからオンになってしまう」とはっきり書いたつもりですが、
どうも文意が伝わらないようですね
忘れてください
204名無しさん@お腹いっぱい。:2012/05/30(水) 21:51:15.32 ID:Up164/Hs0
まぁそう言うならもう忘れるよ
205名無しさん@お腹いっぱい。:2012/05/31(木) 02:55:56.47 ID:xn3ImWEN0
ゆとりって表現能力低いからまともにコミュできんのな
206名無しさん@お腹いっぱい。:2012/05/31(木) 04:13:33.28 ID:EVEZWg7g0
書かれた文を見落とすのはさすがに文盲としか言いようがない
207名無しさん@お腹いっぱい。:2012/05/31(木) 05:44:45.61 ID:iKd2pRv60
解決するしないはおいといて、質問者側に謙虚さがあれば協力してくれる人が多いんじゃなかろうか。
的はずれなレスだったにせよ、協力しようと思ってレスしてくれた方へのお礼の一言もなく、
逆にぷぎゃーするのはいただけない。
208189:2012/05/31(木) 06:38:53.29 ID:V43s8X0P0
>>190
>>191
SAPIって音声合成だけかと思ってました
でもやっぱりあんまり精度はよくないみたいですね
弄ってみます、ありがとうございました
209名無しさん@お腹いっぱい。:2012/05/31(木) 18:19:09.51 ID:5Z5ds/6u0
文章読まねえ奴をぷぎゃーするなはさすがに…
かなり我慢強く丁寧にレスしてたと思うよ
210名無しさん@お腹いっぱい。:2012/05/31(木) 18:19:10.20 ID:LnFutJ0b0
A算出したMD5をJane NGFiles用hash値に変換する
  nghash(MD5→NGFiles用hash値変換ツール)で変換すると楽です。
http://www6.atpages.jp/appsouko/souko/pkg/nghash.zip
  nghashの補助ツール(nghash GUI版) 【zipハケーン】
http://vamp.s9.xrea.com/updata2/3024.zip

このコードはAHKに移植できますか?
char配列の扱いやなどがよくわかりません、NumPutやNumGetを使うのでしょうか?
MD5はCrypt.ahkをそのまま、NGHASHはnghashclip.exeに引数渡してクリップボード経由とその場凌ぎの実装をしたのですが、処理に時間がかかってしまいます
VisualC++2010でnghash.dll作ろうとしたけどこちらもテストDLLがAHKから呼び出せずに諦めました
211名無しさん@お腹いっぱい。:2012/05/31(木) 19:31:26.66 ID:iKd2pRv60
>>209
丁寧なレスをしているからこそ各々のレスに対してお礼の一言すらないのが気になったんです。
あと、謙虚さとは書きましたが、我慢すればいいと書いた覚えはありません。
以後、Romります。
スレ違いなレスをして申し訳ありませんでした。
212名無しさん@お腹いっぱい。:2012/05/31(木) 20:42:51.96 ID:hWfTtsrW0
>>211
全員で間違った答えしか出して無いのに何をお礼しろとw
213名無しさん@お腹いっぱい。:2012/05/31(木) 21:51:33.32 ID:kJ1NE3+r0
固定状態のオンオフと
固定状態のオンオフの切り替えがshift連打でできる機能自体のオンオフが
混同されてるように見えるんだよね
指摘するまえに質問者がもういいって言い出したから指摘するの止めたけど
ほじくり返そうとしてるみたいだから言っておくけど
214名無しさん@お腹いっぱい。:2012/06/01(金) 03:56:54.22 ID:ht6LOIMf0
頑張ってはいたが意図が伝わってない感はあったな
ただまあ、正しくなかったにせよ親身になってレスしてたならお礼も言うだろうけど
回答者側が全員頭から質問者側のチョンボだと思い込んで
それ以外の回答を完全切り捨ててたからな
終始罵倒状態でトンチンカンレスを繰り返されたあげくお礼まで言わさせられるのは気の毒だ
215名無しさん@お腹いっぱい。:2012/06/01(金) 06:56:08.66 ID:4CZwmXdn0
終始罵倒?回答者がツンデレなだけじゃないかと。
質問者がそれを気に食わないからもういいですって流れになった感じがするんだけど。
216名無しさん@お腹いっぱい。:2012/06/01(金) 07:08:54.23 ID:TGSvQ7HD0
>>214
むしろ回答は一応正しかったと思う
ただ質問者が、shiftがロックされてるのは解除できるからこうすれば解除できるよって言われてると誤解してたように見えるのと、
(>>203のレスですでに説明したって言っているのとそれ以前の状況説明からしてそのように考える)
その誤解に回答者が気づかなかったのか、スルーしてたように思う
217名無しさん@お腹いっぱい。:2012/06/01(金) 10:16:22.10 ID:VNzd+6FO0
AutoHotkeyは悪くないのにAutoHotkeyの問題だと決めてかかり、
回答は正しいのに質問が理解されていないと決めてかかる。
こんなやつは一生Windowsの固定キー機能に悩まされてればいい。
218名無しさん@お腹いっぱい。:2012/06/01(金) 10:49:13.52 ID:OUQ439I90
めんどくせえ、基地外だとわかった時点でスルーしろよ
219名無しさん@お腹いっぱい。:2012/06/01(金) 11:06:32.07 ID:H57QeTjc0
だって質問者が勘違いしたまま自己擁護に舞い戻ってるんだもの
あんなアホな勘違いしてるのは本人ぐらいだからバレバレだよ
220名無しさん@お腹いっぱい。:2012/06/01(金) 11:22:31.09 ID:ht6LOIMf0
ただの自治厨なんだが自演認定されちったか
ツンデレもあんま回数重ねるとただの罵倒に見えますよって言いたかったんだが
質問者の説明が上手くなかったのはまあ事実だな
自分もどっちが勘違いしてるのかわかんなかったし
221名無しさん@お腹いっぱい。:2012/06/01(金) 13:40:47.08 ID:5NuAi+gL0
AutoHotkeyは悪くないって断言してるのはBlockInputとSleepでoffがonになるって話に
再現性がないのを確認したってことか?
みんなしてダラダラ引っ張ってんのはそこが気になってるからじゃねえの
222名無しさん@お腹いっぱい。:2012/06/01(金) 14:11:50.67 ID:gOmM+y0K0
いやいやいや、ちゃんと答えてただろ
勘違いしてるのは質問者
AHKは全く関係ない話

正しい回答に対しておかしなレスしてたから、面倒になりそうだなーっておもって眺めてたけど
やっぱりスルーが正しかったみたいだな
223名無しさん@お腹いっぱい。:2012/06/01(金) 17:40:07.99 ID:a4ONUO6H0
>>185
これの連打じゃなくて例えばAlt+XでX押す毎にスクロールして
Alt離すと決定みたいなのってできますか?
224名無しさん@お腹いっぱい。:2012/06/01(金) 19:07:59.95 ID:4CZwmXdn0
>>223
できるけど、先ずは自分で試して失敗したスクリプトを書き込んでみては?
225名無しさん@お腹いっぱい。:2012/06/01(金) 21:51:06.88 ID:e+OOLbaL0
人を利用することしか頭にない
226名無しさん@お腹いっぱい。:2012/06/01(金) 22:32:33.22 ID:iiD+dvl20
MButton & WheelUp::を使うと他のアプリで中クリックが使えなくなってしまうのは仕方ないんでしょうか
227名無しさん@お腹いっぱい。:2012/06/01(金) 22:49:28.42 ID:vqsNd4Ln0
~MButton & WheelUp::
228名無しさん@お腹いっぱい。:2012/06/02(土) 14:28:12.92 ID:hoomTLLR0
たとえばあるコマンドを実行中に他の特定のキーを押せなくする、みたいなことってきないでしょうか?

Space::
send,space}
#IfWinActive
229名無しさん@お腹いっぱい。:2012/06/02(土) 14:30:05.92 ID:hoomTLLR0
途中で書き込んでしまいました。すいません。
いま使ってるコマンドがこれで

Space::send,+{space}

これを実行中にはFキーを押せなくしたいんです。
230名無しさん@お腹いっぱい。:2012/06/02(土) 19:53:57.73 ID:EqeMuCyI0
>>228-229
テキストエディタ上ではこれでそれっぽく動くかもしれないけど、他アプリでは動かない可能性がある。
質問するときに具体的な環境やアプリ等を書かないと様々な環境を想定しないといけないから面倒くさくてレスつかないよ。

$space::
Hotkey,*f,f_Disable,on
Hotkey,*f up,f_Disable,on
send,{shift down}{space down}
while getkeystate("space","P")
sleep,20
send,{space up}{shift up}
Hotkey,*f,f_Disable,off
Hotkey,*f up,f_Disable,off
return

f_Disable:
return
231名無しさん@お腹いっぱい。:2012/06/03(日) 09:01:51.94 ID:J+Fr+ga80
>>230
説明不足ですいません。
フォトショップで頻繁に使うショートカットが+space(手のひらツールに切り替え)なんですが、これを押した状態で誤ってfキーを押してしまうと
+fの組み合わせでキーが押されてしまうのでそれをなんとかしたかったのです。

試してみましたが、問題なく動きました。ありがとうございました。
232名無しさん@お腹いっぱい。:2012/06/04(月) 13:32:58.68 ID:pHoM54QP0
非アクティブウィンドウの座標を取得する方法ってないでしょうか?
いまウィンドウのタイトルバー部分をミドルクリックして動かす下記のスクリプトを使っていますが、
if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)  
の部分を、非アクティブウィンドウのタイトルバー部分をミドルクリックしているときに残りのコマンドを実行する、という形にしたいのです。
今のままだと、一度マウスポインター下にある非アクティブウィンドウを左クリックしてアクティブ化しなくてはいけない状態なので
WinActivate, ahk_id %WindowUnderMouseID%が無意味になってしまっています。

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)
{
WinActivate, ahk_id %WindowUnderMouseID%
tooltip test
}
return
233名無しさん@お腹いっぱい。:2012/06/04(月) 19:15:12.17 ID:6FIa79sZ0
>>232
やりたいのはこういうことかな?

Mbutton::
CoordMode, Mouse, Screen
MouseGetPos, ClickX, ClickY, WindowUnderMouseID
WinGetPos, x, y, w, h, ahk_id %WindowUnderMouseID%
if ( ClickX > x and ClickX < x + w and ClickY > y and ClickY < y + 24) {
WinActivate, ahk_id %WindowUnderMouseID%
tooltip test
}
return


関数などが分かるなら、Mousegesture.ahk から MG_HitTest関数とMG_GetMousePosInfo関数を
自分のスクリプトにコピペして
If MG_HitTest()="Caption" ; マウスカーソルがタイトルバー上にあるか否かで分岐させる
234名無しさん@お腹いっぱい。:2012/06/06(水) 18:52:36.71 ID:o19H6JtG0
過去ログから
CoordMode,Mouse,Screen
MouseGetPos, x, y, h, c,
if (2 = DllCall("SendMessage",UInt,h,UInt,0x0084,UInt,0,UInt,x | y <<16,UInt) )
tooltip,test
return
235名無しさん@お腹いっぱい。:2012/06/07(木) 10:52:38.39 ID:3JLxSVod0
「テキストファイルから1行ずつ引数をもらって実行して、実行した行はもう実行しないようにする」って可能でしょうか?

FileReadLine に+1ずつしていくやり方だと、ahkスクリプトを実行する度に1行目からやり直しになってしまうので
引数をもらった行は削除とか出来ればいいのですが
236名無しさん@お腹いっぱい。:2012/06/07(木) 19:20:36.91 ID:GEnD96Eqi
読んだら消すか空にすりゃいいんじゃねーの

ちゃんとやるなら排他モード利用して
237名無しさん@お腹いっぱい。:2012/06/07(木) 20:19:23.67 ID:3JLxSVod0
>>236
すみません、実行中も他のProgramから、テキストが逐次追記されていくので、排他モードは無理です
FileReadLineで返ってくるのが空だったら、消すように分岐するってことですよね
そうすると追記とバッティングしちゃうかなと思うので、やはり行ごとに何かアクション出来ればいいのですが
238名無しさん@お腹いっぱい。:2012/06/07(木) 20:43:49.38 ID:EELC1y8O0
>>235
非常駐型なら処理行数をIniファイルに書き出して(IniWrite)
スクリプト実行時にIniファイルから読み込ませる(IniRead)とかは?
239名無しさん@お腹いっぱい。:2012/06/07(木) 21:55:01.56 ID:3JLxSVod0
>>238
なるほど、変数を共有させたい場合はiniファイルを使うんですね
勉強になりました、ありがとうございます

ahkからテキストの編集っていうのは考えない方がいいのですね
240名無しさん@お腹いっぱい。:2012/06/08(金) 03:22:45.12 ID:w2xkC2Be0
基点がA_WorkingDirの相対パスから、絶対パスに変換する簡単な方法ありますか?

A_WorkingDirがC:\www/xxx
相対パスが../../yyy/aaa.exe



C:\yyy\aaa.exe

って変換させたいです。
241名無しさん@お腹いっぱい。:2012/06/08(金) 05:16:18.73 ID:8ExnYqSl0
>>235
追記に使ってるソフトにもよるけど、こんな感じで書き込めるなら。

[引数1]
A=B
[引数2]
A=B

をiniに書き込む。
テキストファイルとして1行目を読み込んで[]を削除し、引数1を渡す。
そしてinideleateで[変数1]セクションを削除。
繰り返し。
でどないや。
242名無しさん@お腹いっぱい。:2012/06/08(金) 09:21:37.63 ID:THaNkOObi
>>240
shlwapi.dll の関数使えばいいじゃないかな
意味分からんなら別レス待つよろし
243名無しさん@お腹いっぱい。:2012/06/09(土) 02:47:29.28 ID:66+lees5i
素人丸出しの質問させてください
環境はwin7 64bit.ahk_lも64版です。
アクティブなアプリを再起動させるという事をしたくて、ttp://tobysoft.net/wiki/index.php?AutoHotKey%2F%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A4%CE%BA%C6%B5%AF%C6%B0%A4%F2%A4%B9%A4%EB%CA%FD%CB%A1
を参考にやっているのですがどうにも…
他に再起動、で検索してもなかなか原因が分からず… 今日二時間くらい詰めてやってみますが、ヒントなら教えてやるよ田吾作!という方がいましたら是非助けて欲しいです。
244名無しさん@お腹いっぱい。:2012/06/09(土) 03:35:06.25 ID:66+lees5i
ちなみにエラーは
Run,%Fullpath
というところみたいでした。
い、いまから調べてみます!
245名無しさん@お腹いっぱい。:2012/06/09(土) 13:59:05.84 ID:+mZT6A0D0
うーん
Run,%Fullpath
Run,%Fullpath%
Run,% Fullpath
この動作の違いはわかりますか?

それと、動作を確認するならrunをtooltipに書き換えるといいかも。
246名無しさん@お腹いっぱい。:2012/06/10(日) 03:59:00.36 ID:lSUpJWoR0
>>243
最近のはフルパスを取れるコマンドがあるから、関数の代わりにそっちを使うといいよ

;リスタート部分だけ
WinGet, pid, PID, A
WinGet, FullPath, ProcessPath, A
WinClose, A
Process, WaitClose,% pid
Run,% FullPath
247名無しさん@お腹いっぱい。:2012/06/10(日) 14:23:38.62 ID:MoTTUms80
突然の話題ですいません。
AutoHotkeyを流行らせるアップローダ跡地に発表してある
タスクバー上でホイールを回転するとタスクを切り替えるスクリプト115.zipを
AutoHotkeyのフォーラムで紹介させていただきました。
また,このスクリプトを次バージョンのMouseGestureL.ahkの中でも
設定例として掲載したいと考えております。
出典は明らかにして掲載しますが,作者の方の連絡先が分かりません。
この記事を読まれて問題等ございましたら,ご指摘ください。
Shirubadappuru
248名無しさん@お腹いっぱい。:2012/06/11(月) 19:40:10.93 ID:6BsQL3uU0
MouseGestureLで、たとえばブラウザのジェスチャとMouseGestureLで
設定したジェスチャ両方を有効にすることってできる
249名無しさん@お腹いっぱい。:2012/06/11(月) 19:40:55.64 ID:6BsQL3uU0
失礼
両方を有効にすることってできるやり方ある?
250名無しさん@お腹いっぱい。:2012/06/11(月) 21:41:04.97 ID:eB7Y9Aug0
ブラウザの方で使いたいジェスチャにMG_Abort()を割り当てる
251名無しさん@お腹いっぱい。:2012/06/11(月) 21:42:13.58 ID:wBSIQzVP0
MouseGestureLに一本化するんじゃだめなの?
俺はJaneやFirefoxにホットキーを設定してMouseGestureLからホットキーを送る方法で使ってるけど
252名無しさん@お腹いっぱい。:2012/06/11(月) 22:09:43.44 ID:6BsQL3uU0
>>250
いけました
でも右クリック↑だったら、RB_U じゃないとだめで RB_U_ だったら上手くいかないね
これが他のアプリで微妙に違和感

>>251
はじめはそれ考えたんだけど、ファイラでドラッグがうまくいかなかったり
自己完結できるほうが誤動作とかないからいいかなと思って

二人ともサンクスです
参考にしてもうちょい試してみる
253名無しさん@お腹いっぱい。:2012/06/11(月) 22:17:24.10 ID:B+8zXcxdP
右クリックのジェスチャをブラウザのものにして
第四以降のボタンのジェスチャをMousegesture.ahkで行うという手もある
254名無しさん@お腹いっぱい。:2012/06/14(木) 21:56:28.16 ID:Y9zqTYdL0
テキストを改行させて表示させたいんですがどうやったらいいですか?

^1::
s = a\r\nb
MsgBox %s%
return

これだと「a\r\nb」と表示されてしまいます。

a
b

と表示したいのですが。
255名無しさん@お腹いっぱい。:2012/06/14(木) 22:08:47.41 ID:n5a5stQC0
256名無しさん@お腹いっぱい。:2012/06/14(木) 22:25:16.51 ID:Y9zqTYdL0
>>255
助かりました。ありがとうございます。
257名無しさん@お腹いっぱい。:2012/06/15(金) 15:26:32.39 ID:g3nKJKju0
Guiでコントロールごとに色を変えることはできますか。
Gui,Colorで色を変えるとそのGui上のすべてのコントロールの色が変わってしまいます。
このボタンは赤で、となりのラベルの背景色は緑で、…と言ったことは無理なのでしょうか。
258名無しさん@お腹いっぱい。:2012/06/15(金) 19:35:31.65 ID:MbQASRWZ0
259名無しさん@お腹いっぱい。:2012/06/16(土) 15:58:11.56 ID:daIFj4Na0
アクティブなウィンドウを非表示にして、非表示にしたウィンドウの一覧を表示って、どう書きますか?

流行らせるページの「タスクトレイに最小化」が、ahkLだと上手く動かないことが多いので、似たスクリプトをとりあえず作りたいです
こちらif文とloop文が分かる程度のものですが
260名無しさん@お腹いっぱい。:2012/06/16(土) 16:05:01.42 ID:ucgxxl2yi
元ネタのスクリプトを理解して修正する方がずっと早いと思うが
261名無しさん@お腹いっぱい。:2012/06/16(土) 17:33:24.25 ID:WxSz6nW/0
>>258
ありがとうございます。難しそうだけどやってみます。
262名無しさん@お腹いっぱい。:2012/06/16(土) 18:10:40.43 ID:lVI9ZyNQ0
開いているタスクの一覧を表示して左クリックしたらプロセスをkillするにはどうすればいいですか?
263名無しさん@お腹いっぱい。:2012/06/16(土) 18:22:04.11 ID:8EooIcrt0
AutoHotkey_L用の「タスクトレイに最小化」って需要あるだろうから探せばどっかにあるのかと思ってたけどやっぱ無いの?
過去ログ見て文字化けは直したけど、最小化後しばらく放置して元に戻そうとすると落ちるという現象は相変わらず
修正版あるなら誰か恵んで
264名無しさん@お腹いっぱい。:2012/06/16(土) 21:04:19.69 ID:IWFImoey0
ttp://www1.axfc.net/uploader/File/so/80070
たすくとれいな。(ttp://www.vector.co.jp/magazine/softnews/041215/n0412154.html)のパクリスクリプトなら自分が作ったのがある
265名無しさん@お腹いっぱい。:2012/06/16(土) 21:52:37.11 ID:daIFj4Na0
>>260
起動して気づいたら動かなくなってる、という状况なので、自分にはデバッグの敷居が高すぎて、、

>>262
ttp://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2#content_1_4
作りかけのようですけど、これを少しいじったらできそう

>>264
おお、これは凄いスクリプトですね
使わせてもらいます
266名無しさん@お腹いっぱい。:2012/06/16(土) 22:16:33.91 ID:iZJC11iG0
「敷居が高い」を「ハードルが高い」のような意味で使うのは本来、誤用なんだぜ

敷居が高い(しきいがたかい)… 相手に不義理をしたり、また、面目がない
ことがあったりして、その人の家に行き難くなる。また、その人に会い難い状態。
267名無しさん@お腹いっぱい。:2012/06/17(日) 00:05:18.36 ID:k+n+N+JXP
↓以下、江戸時代あたりの誤用から始まってすっかり定着した言葉うんたらかんたら
268名無しさん@お腹いっぱい。:2012/06/17(日) 21:41:47.52 ID:G1C2hvjM0
しょぼい質問ですみません
#X::WinMinimize,A で最小化を実行するとデスクトップの左下にバーだけの小さいのが残ってしまうんですが
最小化ボタンを押した時のようにタスクバーに入れるにはどのようにすればいいのでしょうか?
269名無しさん@お腹いっぱい。:2012/06/17(日) 21:54:53.25 ID:YB5lVcwk0
>>268
PostMessage, 0x112, 0xF020,,, A, ; 0x112 = WM_SYSCOMMAND, 0xF020 = SC_MINIMIZE
270名無しさん@お腹いっぱい。:2012/06/19(火) 01:26:43.53 ID:IxgIuIdl0
>>269
遅くなってすみません。ありがとうございました
271名無しさん@お腹いっぱい。:2012/06/23(土) 15:34:07.76 ID:4/n2S9UX0
autohotkey_lを使っています
クリップボードに入っている画像をいったん別のところにおいて
cilpboard:="test"
のようにして更新したクリップボードの中身を貼り付けできるようにし、
処理が終わったら元の画像をクリップボードに格納するということはできますか?
272名無しさん@お腹いっぱい。:2012/06/23(土) 16:27:37.87 ID:qhCnUbYV0
>>271
ClipSaved := ClipboardAll
で退避しておいて、処理が終わったら
Clipboard := ClipSaved
で戻す
273名無しさん@お腹いっぱい。:2012/06/24(日) 19:52:55.93 ID:T5LAAjhk0
autohotkey_Lのドキュメント読んでて、menuのラベル指定に関数内ラベルが使えるってこと初めて知ったんだけど
これ昔からできたの?
274名無しさん@お腹いっぱい。:2012/06/25(月) 16:48:52.24 ID:CBUG1YTbi
うん割りと前から
275名無しさん@お腹いっぱい。:2012/06/25(月) 22:30:15.57 ID:pn/r7EUH0
関数内ラベルって?
276名無しさん@お腹いっぱい。:2012/06/26(火) 15:15:28.89 ID:GoRM1vkFP
windows7に乗り換えたんだけど
ウィンドウズキー使ってるホットキーが動作しない
わかる方いませんか
UACは無効、バージョンは最新でした
他の設定は動作してます
277名無しさん@お腹いっぱい。:2012/06/26(火) 16:29:48.91 ID:K3mD4LNG0
>>276
動かないときはまずコードを晒す、これ基本
OSのせいだと思ってるようだけど実際どうだか分からんし
278名無しさん@お腹いっぱい。:2012/06/26(火) 18:35:50.78 ID:Rj3qHREy0
Win+Lはトラップできなくなったよ
279名無しさん@お腹いっぱい。:2012/06/27(水) 11:02:16.21 ID:6TAWWk8HP
すみません
ソースです

#h::left ;Win+Hに←キーを割り当て
#j::down ;Win+Jに↓キーを割り当て
#k::up ;Win+Kに↑キーを割り当て
#l::right ;Win+Lに→キーを割り当て
280名無しさん@お腹いっぱい。:2012/06/27(水) 23:11:10.35 ID:9WacZMkz0
>>279
それ、文法的に意味成してないんじゃないか?
#h::Send, {Left}
これで試してみて
281名無しさん@お腹いっぱい。:2012/06/28(木) 00:03:18.01 ID:n8qy29CK0
ローカルのpage.htmlをAHKのGUI内にレンダリングすることってできませんよね?
282名無しさん@お腹いっぱい。:2012/06/28(木) 00:26:29.72 ID:foApyst3i
Lなら標準機能で出来るんじゃね
283名無しさん@お腹いっぱい。:2012/06/28(木) 18:26:58.45 ID:3LsB+Dbn0
コンパイルができない
AHK_Lでコンパイルなしでは問題なく動く状態

ソースは1000行超えしてるので端折ります
UTF-8で書いてるけど、コンパイルすると甚だしく文字化けしてたり、
foo("テキスト", "aaa")
みたいな関数で、「"aaa"" は変数じゃないよ!」とか言われるから
文字化けが全ての根本的な問題?

これってどういう原因が考えられるのかな
284名無しさん@お腹いっぱい。:2012/06/28(木) 18:38:10.40 ID:SVI8B1s60
>>283
ASCII部分が互換性のある文字コード同士でも
文字コードを間違えると隣のASCII文字を巻き込むことはあるから日本語がおかしくなるだけじゃすまないことはありえるのではないかと
285名無しさん@お腹いっぱい。:2012/06/28(木) 18:41:51.66 ID:3LsB+Dbn0
>>284
ありがとう。書いてすぐだけど自己解決してしまった。

文字コードをUTF-8にしてたつもりだけど、UTF-8(BOMなし)だった
全てのahkファイルをUTF-8(BOMあり)に変換したら問題なくコンパイルできた
Web系だとBOMなしの方がよく使うからつい思い込んでしまっていたよ
286名無しさん@お腹いっぱい。:2012/06/28(木) 21:27:22.37 ID:u0brfTX3P
質問です。
1::
MouseGetPos, prevX, PrevY
MouseClick, left, 0, 1200, 1, 0
MouseMove, prevX, prevY, 0
return
のように、1を押すと画面端をクリックして元のマウスカーソル位置に戻るものです。
ですがマウスを激しく動かして居る途中に1を押すと画面端をクリックした位置のまま
戻って来ないのですが、別の書式または何か解決策などありませんでしょうか?
win7-64でv1.0.48.05.L61を使っています。
287名無しさん@お腹いっぱい。:2012/06/28(木) 22:42:01.35 ID:P+LhrT4c0
waitを入れてみたら?
288名無しさん@お腹いっぱい。:2012/06/28(木) 23:14:26.74 ID:R3Op1JPIi
>>286
単純に考えると
BlockInput, MouseMove/MouseMoveOff
を使ってユーザ操作をブロックすればいい。
解除コマンド忘れるとえらいことになってパニクるので
コマンドリファレンスを熟読してからやること

面倒に考えると、
画面上の特定位置がツールバーのボタンだとしたら
キーを送ったり、ウィンドウメッセージを発行することで、
アプリに機能呼び出しを通知する
機能呼び出しの見つけ方(と諦め方)はアプリによって様々なのでコツが必要

労力は前者>>>>後者だけど、後者の方がスマート。

ただし座標クリックでしか機能呼び出しができないなら、
前者がファイナルアンサーとなる
289281:2012/06/29(金) 00:09:44.42 ID:sQxBPpZ50
>>282
AutoHotkeyJpをざっと眺めてみたのですが見当たりませんでした
どうか教えて頂けないでしょうか、お願いします
290名無しさん@お腹いっぱい。:2012/06/29(金) 00:37:35.82 ID:mMO0GBuhi
291名無しさん@お腹いっぱい。:2012/06/29(金) 01:13:49.66 ID:sQxBPpZ50
>>290
おお、こんな機能があったとは・・・ありがとうございます!
たまには本家も見ないと遅れてしまいますね
292名無しさん@お腹いっぱい。:2012/06/29(金) 05:00:03.73 ID:Wi+RmffP0
>>286
1::
KeyWait ;離されるまで待機
BlockInput, On ;全ての入力を無効化
Sleep, 100 ;Wクリックの暴発を防ぐ
MouseGetPos
MouseMove
MouseClick
KeyWait ;離されるまで待機(クリック系の直後に必ず入れておく)
Sleep ;Wクリックの暴発を防ぐ(クリック系の直後に必ず入れておく)
MouseMove ;元の位置に戻す
BlockInput, Off ; 全ての入力を有効化(忘れると何も出来なくなるが何かの同時押しで解除できたと思う多分)
return

これでマウスをガシガシ動かしつつボタンをカチカチしながら割り当てたキーをバシバシ連打しても平気になる
でもここまでやってもたまに誤爆する(お手上げ)
MouseClick→MouseClickDragの場合はスピードは2以上にしてないとよく空振りする
293名無しさん@お腹いっぱい。:2012/06/30(土) 11:30:25.96 ID:gDLUHMc70
>>137
次回のバージョンのヘルプで修正します。
ttp://www.autohotkey.com/community/viewtopic.php?f=13&t=83057&p=547230#p547230
MouseGestureL Configurationは
MouseGestureL 設定
としてください。
294名無しさん@お腹いっぱい。:2012/06/30(土) 17:07:59.96 ID:3EJQ4gAr0
Autohotkeyにショートカットキーを設定して
マイクをミュートにすることってできませんか?
(スカイプのマイクミュートにdeleteやPauseを設定できない)

たしか昔「これじゃないかな?」と思って、設定した覚えがあるのですが
ちょっと試して無理だったのでそのまま止めてしまいました。
今度はそのやり方さえ忘れてしまいました。
マイクミュートってできますか?
デバイスはサウンドブラスターを使っています。win7です。
よろしければおしえてください
295名無しさん@お腹いっぱい。:2012/07/01(日) 11:23:28.61 ID:8+t+SZDu0
z:: ; プレイヤーを5秒分巻き戻す
Send,^+d ; 巻き戻し開始
Sleep,2500 ; しばし待つ
Send,^p ; 巻き戻し解除&再生開始
return

というスクリプトでzを三連打すると同時に実行されてしまうんですが
多重起動させずキューイングして計15秒分巻き戻すようにするオプションみたいの無いですか
296名無しさん@お腹いっぱい。:2012/07/01(日) 13:34:28.15 ID:WAcFjs550
>>294
Skypeなど特定のアプリがアクティブのときにやりたいならImageSearchでも
WinGetPos, , , width, height, A
ImageSearch, x, y, 0, 0, width, height, <Skypeのマイクミュート画像>.bmp
MouseClick, LEFT, x, y, 1, 0

>>295
こんな感じとかで
z::
 if !(thereafterFlag) {
  thereafterFlag := 1
  startTime := A_TickCount
  endTime := startTime + 2500
  SetTimer, timeWatch, 100
  Send, ^+d
  return
 }
 endTime += 2500
 return
timeWatch:
 if (A_TickCount < endTime)
  return
 thereafterFlag =
 SetTimer, timeWatch, Off
 Send, ^p
 return
297名無しさん@お腹いっぱい。:2012/07/01(日) 13:36:26.43 ID:WAcFjs550
ということで疑問に答えたので質問です
#Include で特定のディレクトリ以下のファイルを全てインクルードする方法はないのかな?
298名無しさん@お腹いっぱい。:2012/07/01(日) 15:14:52.56 ID:X58f6qn20
#ついたコマンドはまず最初に読み込まれるから、スクリプトの中からは制御出来ない
あえてスクリプトの中でやるなら、最初にフォルダの中のahkファイルを検索して、スクリプトの中に#includeを書き込んでから一度だけリロードみたいな
299名無しさん@お腹いっぱい。:2012/07/01(日) 15:30:10.23 ID:WAcFjs550
>>298
ありがと。やっぱりあらかじめahk記述を書き込んでリロードしかないかな
起動時にタスクトレイをオフにしておいてリロード後のタスクトレイをオンにすれば
リロードの気持ち悪さもある程度は防げるけど
#Includeで単一ファイルじゃなくてディレクトリも指定できたらよかったんだけどな
300名無しさん@お腹いっぱい。:2012/07/01(日) 15:55:31.36 ID:uXQleqOU0
ディレクトリ内のファイルを#includeでズラズラと書きだすだけのスクリプト書けば?
それならスクリプト側では単一ファイルインクルードするだけだし
更新するのは#includeだけを記述したこのファイルだけで済む
301名無しさん@お腹いっぱい。:2012/07/01(日) 15:58:22.39 ID:uXQleqOU0
ってか、#includeで読み込んだファイル内の#includeって読めないんだっけ?
読んでくれないならごめん
302名無しさん@お腹いっぱい。:2012/07/01(日) 16:48:55.13 ID:WAcFjs550

#Include先のahkファイルに書いてある#Includeも読めるよ
けど、その#Includeをまとめて書いてあるahkファイルを読み込むには、やっぱり結局は全体をリロードするしかない

ディレクトリチェック用ahkスクリプトと本来ahkスクリプトを分離するっていう方法もなくはないけど

1.本体と独立したクッションahkスクリプトで先に#Include専用ahkファイルを作成
2.クッションahkから本体ahkをRunして、クッションahkを終了させる
3.すでに#Include専用ahkファイルが作成されているため、リロードなしにそのまま読み込める

けど結局は2度のプロセスを実行させることになってリロードするのと大差ない感じ
303名無しさん@お腹いっぱい。:2012/07/02(月) 12:16:29.50 ID:r1cT7Pm0i
面倒な二段構えよりファイル追加する毎に編集した方が早いとおもうけどな
includeの順序で挙動変わる場合はファイル名工夫したりせにゃならんし

個人的には関数やクラスにしてstaticで初期化処理書くのが楽かな
その際は #Include <ライブラリ名> でやる
304名無しさん@お腹いっぱい。:2012/07/02(月) 12:24:10.58 ID:WvHOvSFk0
変数aが空の値だったら、0とか1とか(とりあえず小さい数)を複数の変数へ代入ってどうやりますか?

a+=0 , b+=0 , c+=0 , d+=0 , e+=0

という書き方だと上手く行かなかったです

a+=0
b+=0
...........

という感じに書いてますが、変数が多いと長くなってしまうので、
出来れば数行で書きたいのですが
305名無しさん@お腹いっぱい。:2012/07/02(月) 13:36:54.44 ID:TEwtDVm40
それは加算代入(+=)な。代入は(:=)
まとめて書く場合はこう
a := b := c := d := e := 1
306名無しさん@お腹いっぱい。:2012/07/02(月) 14:39:49.84 ID:WvHOvSFk0
>>305
おお、「,」つかわなくてもこんな書き方があるのですね
変数が空かの判定が不用なので、0を加算してみたのですが、一行で代入出来るならif文と組み合わせて使わせてもらいます
307名無しさん@お腹いっぱい。:2012/07/02(月) 18:03:40.15 ID:fIDvRsIi0
画面描画とかはできるのかな?探してみたけど分からなかった
前面に線を表示させるような感じ
画面に格子上に線をUIとして入れてみたいんだ
どなたか教えて下さいませ
308名無しさん@お腹いっぱい。:2012/07/02(月) 19:17:16.08 ID:WvHOvSFk0
>>307
線を入れるだけなら、gui使ってこんな感じでは(colに好きな線の色を)

#Persistent
col=101010
Gui,Color,%col%,
Gui,+LastFound +0x02000000 -0x0CC00000 -Border +ToolWindow +AlwaysOnTop
s_width := A_ScreenWidth
s_height := A_ScreenHeight
hs_height := A_ScreenHeight //2
Gui,Show,y%hs_height% x0 H1 W%s_width%

格子状にしたいなら、ループ分を使うと楽かもです
例えば横線ならGui,Show〜の部分を以下に置き換えで(線の間隔をgridで指定してください)

grid=100

loop % A_ScreenHeight // grid
{
Gui %A_index%:Color,%col%,
Gui %A_index%:+LastFound +0x02000000 -0x0CC00000 -Border +ToolWindow +AlwaysOnTop
grid += 100
Gui %A_index%:Show,y%grid% x0 H1 W%s_width%
}
309名無しさん@お腹いっぱい。:2012/07/02(月) 20:11:50.80 ID:fIDvRsIi0
>>308
ありがとうございます
初歩的な内容な気がして仕方ないのですが質問をしてもいいですか?
Gui,+でオプションを変更するときに、ウィンドウスタイルを指定しているのですが、
このウィンドウスタイルの値はどのように見ればいいのでしょうか
https://sites.google.com/site/autohotkeyjp/reference/misc/Styles
0x02000000, 0x0CC00000の両方ともなかったためうむむとなりました
310名無しさん@お腹いっぱい。:2012/07/02(月) 22:11:52.98 ID:2Qqhddbz0
>>304
こう書けば1行で書けなくもない。
a:=a ? a : 0 , b:= b ? b : 0 , c:= c ? c : 0 ,
a+=0って正確にはa:= a + 0 って計算だから、変数が空だとエラーになる。
1行の式なら補完してくれるんだけど。
311名無しさん@お腹いっぱい。:2012/07/02(月) 23:20:22.06 ID:fzMuv1k90
>>309
定数のBIT-OR(要は合計)なんでばらして考える

>>304
+= は第二引数を取るんで(日付の単位とか)、
カンマ区切りだと、不明な単位が指定されてエラーで空白になる

てなわけで += -= *= /= に関してはカンマ区切りで並べるとうまく動かない

その他の式はカンマ区切りでガンガン書けるんで、
どうして一行にしたいんなら関数にすりゃいいかと

a =
b = 100

Func(a),Func(b)
MsgBox, % a "`n" b

Func(ByRef var) {
If var is not Number
var = 0
}


312304:2012/07/03(火) 07:19:19.89 ID:kbeJs+9X0
どちらも動きました!

>>310
おお、完全に一行で書けますね
これは凄い
?は難しくてあまり使ってなかったのでこれを機会に使わせてもらいます

>>311
なるほど、「,」とは相性悪いんですね
勉強になりました
Functionもさっぱりしてていいですね

>>308
16進数の数を32桁の2進数に直したのが元の数字なので、
32個のスイッチを持ってて、>>311さんの仰るとおり
1つ1つのスイッチを合計した値です
ただこれ面倒なので、他のウィンドウのスタイルを調べてコピペでいいんじゃないかなと
313名無しさん@お腹いっぱい。:2012/07/03(火) 10:36:15.48 ID:Am1wqq2r0
>>311 >>312
合計した値だと思って
0x02000000 → 0x02000000
0x0CC00000 → 0x04000000 + 0x08000000 + 0x00400000 + 0x00800000
という意味だと考えていました
けれどそれでも、0x02000000と0x04000000がウィンドウスタイルにないように見えるため
うーんとなってしまっていたりします
何か盛大に勘違いしてしまっているかものかもしれません
変な思い込みを指摘してもらえるとうれしいです
314名無しさん@お腹いっぱい。:2012/07/03(火) 11:22:42.51 ID:Sji29u5M0
WS_CLIPCHILDREN と WS_CLIPSIBLINGSだな
forced for GUI window WS_CLIPSIBLINGSってなってるのが関係あるんかな
確か流行らせるページ管理人さんの虫眼鏡スクリプトでも同じ指定されてた
そのスクリプトを改造してる時にこれいらなくね?思った
315名無しさん@お腹いっぱい。:2012/07/03(火) 12:49:07.99 ID:Am1wqq2r0
>>814
WS_CLIPCHILDRENとWS_CLIPSIBLINGSなんでしょうか
それも分かってないというのが正直なところ…
本家も確認したましたが分かりませんでした
http://www.autohotkey.com/docs/misc/Styles.htm
WS_CLIPCHILDREN はどこに記載があるのでしょうか?
また、WS_CLIPSIBLINGS はValueが空になっているのですが、どうやって判断するのでしょうか?
316名無しさん@お腹いっぱい。:2012/07/03(火) 14:04:57.56 ID:Sji29u5M0
ソース見てみたらこんなん書いてあった

// The styles DS_CENTER and DS_3DLOOK appear to be ineffectual in this case.
// Also note that WS_CLIPSIBLINGS winds up on the window even if unspecified, which is a strong hint
// that it should always be used for top level windows across all OSes. Usenet posts confirm this.
// Also, it seems safer to have WS_POPUP under a vague feeling that it seems to apply to dialog
// style windows such as this one, and the fact that it also allows the window's caption to be
// removed, which implies that POPUP windows are more flexible than OVERLAPPED windows.
, mStyle(WS_POPUP|WS_CLIPSIBLINGS|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX) // WS_CLIPCHILDREN (doesn't seem helpful currently)
317名無しさん@お腹いっぱい。:2012/07/03(火) 16:44:22.19 ID:yhFLF+630
>>311
そうなん?
例えばカンマ使わないこういう書き方でも、変数が空だと空のまま。
foo = (a+=0) * (b+=0) * (c+=0)
逆にカンマ入った加算代入式でも、変数に数値が入ってれば処理してくれるから、カンマはあんま関係ないんでない。

>>315
ああ、これがAHKの機能だと思ってるのかな。
スタイルはOS側の機能で、プログラミングで使うためのものだから、AHKのテキスト調べても詳しくはない。
ネットやプログラムのスレで調べたほうがいい。
318名無しさん@お腹いっぱい。:2012/07/03(火) 19:47:51.64 ID:NJxyf/p10
1::
send,{1}
hotkey,1,off
return
1 up:: hotkey,1,on

例えば↑のような感じに
ボタン押しっぱでも連続入力しないように定義してて
これだけなら問題ないんだが、コレ以降の行に
#ifwin〜〜系のコマンドを入れると 「1」を押した時にエラーが起こる。
理由が分からんです。
どなたか対処法を教えてください。
319名無しさん@お腹いっぱい。:2012/07/03(火) 22:15:49.45 ID:Am1wqq2r0
>>316
なるほど、スタイル指定はOS側のでしたか
思い込みを綺麗に突いてくださってありがたい限りです
すっかり納得。

>>318
こっちの環境では問題なく動作してしまいました
そのホットキーの記述ではなくて、#If以下にミスはないのかな
エラー文を記述したら誰かがいいアドバイスくれるかもです
320317:2012/07/03(火) 23:21:12.46 ID:5xs67ex/0
>>319
#If以下に何も記述しなくても、#Ifがあるだけで
『 nonexistent hotkey variant (ifwin)』のエラーが出てしまいます。
他の環境で正常に動いてるなら理由はなんだろ?
自分はwin7-64 AutoHotkey_L v1.1.07.03です。

とりあえず、こんな感じで自己解決しました
1::
if (!aaa){
aaa := 1
send,1
}
return
1 up:: aaa := 0
321名無しさん@お腹いっぱい。:2012/07/03(火) 23:43:10.98 ID:Am1wqq2r0

>>320
原因分かりました
そのホットキーが、#IfWinActive, ... 〜 #IfWinActive
で囲まれているんじゃないかな?

Hotkey, キー名, Off
みたいにHotkeyコマンドでホットキーラベルをオンオフしたりするとき、
もちろんすでに対象のホットキーラベルが存在しなきゃいけない
けれど、#If ... でホットキーラベルが囲んであると、Hotkeyでは探せない対象になる
それで、「存在しないよ!」ってエラーが出た

#If ... 系の中にホットキーラベルを記述していると
サブルーチンからホットキーラベルを探したり呼び出したりするときにはそれらは無視されるみたいです
322名無しさん@お腹いっぱい。:2012/07/04(水) 13:19:01.21 ID:PktQNYAC0
#If (式) 使ってるのに Hotkey コマンド併用するのが、俺的には意味分からん
ON/OFF 自体「式」でするもんだと思うんだが
323名無しさん@お腹いっぱい。:2012/07/04(水) 15:06:46.14 ID:LDCxRRKv0
>>322
変更するキーを変数で指定したいときはHotkeyコマンド併用せざるを得ないと思う
324名無しさん@お腹いっぱい。:2012/07/04(水) 21:51:47.03 ID:8qMJSjkq0
Numpadに再生ソフトの各キーを割り当ててるが よく使う一時停止とキャプチャソフト[fraps]
のスクリーンショットキーでしばらく作業してるとデスクトップのアイコンがドラッグ状態になって
explorer自体がおかしくなってしまうんだが 解決策は何かないか 
 OSは7 64bit 再生ソフトはどのソフトでも GOM PLAYERとか
325名無しさん@お腹いっぱい。:2012/07/04(水) 22:33:07.78 ID:G1ndbrVx0
スクリプト見ないと何とも言えないけど、ドラッグ状態になるって事は、左クリックor右クリックが常時押し下げ状態になってるんじゃないの
326名無しさん@お腹いっぱい。:2012/07/06(金) 16:52:16.94 ID:x8x2ANPo0
タスクトレイのAutohotkeyアイコンのメニューにあるEdit This Scriptを選んだ際に
terapadで開くようにする方法ってありますか?
327名無しさん@お腹いっぱい。:2012/07/06(金) 17:13:03.68 ID:ECrKCsJa0
レジストリ書き換えればいいんじゃないかな
多分ここにあるどっちか

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Edit\Command
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command
328名無しさん@お腹いっぱい。:2012/07/06(金) 17:44:10.72 ID:+UdhJ7Mi0
>>326
327さんが言ってくれてるようにレジストリ変更でもあり
けれども個人的にはAHKスクリプトでエディタを呼び出すほうがおすすめ

Run, <エディタのパス> <AHKスクリプトのパス>

好きなホットキーで呼び出せて、わざわざタスクトレイ右クリックしてとか煩わしい動作もなくなる
何より、そもそもAHKなのだからホットキーを利用したほうがいいよね
329名無しさん@お腹いっぱい。:2012/07/06(金) 18:18:21.49 ID:+UdhJ7Mi0
特定のウィンドウがアクティブになったときに
特定の動作を自動実行させることってできるかな

SetTimerでずっと監視させておくことくらいしか思いつかない
ずっとSetTimerを働かせておくのはどうも気持ち悪い気がしている
330名無しさん@お腹いっぱい。:2012/07/06(金) 18:21:04.50 ID:x8x2ANPo0
>>327
前者でできました
>>328
そちらも便利ですね

お二方ともありがとうございました
331名無しさん@お腹いっぱい。:2012/07/06(金) 19:29:06.24 ID:RDa9N8ly0
332名無しさん@お腹いっぱい。:2012/07/06(金) 19:44:12.56 ID:+UdhJ7Mi0
>>331
なるほどSetWInEventHookか
うまくいけたよ。参考になった。ありがとう
333名無しさん@お腹いっぱい。:2012/07/07(土) 11:52:22.03 ID:BErK9oZvP
ifWinActive ahk_class
に反応させて別のahkファイルを読み込ませたいのですが、
どのようにすればいいでしょうか?
334名無しさん@お腹いっぱい。:2012/07/07(土) 13:00:29.43 ID:URvtbPrc0
#Includeはスクリプト読み込み時に全て読み込まれるから
その#Includeに何らかの処理を絡ませることは無理

けれど、何らかの方法で対応できる場合もしばしば。
どのような状況でifで読み込ませるかどうか決めたいのか分からないけれど
#Includeでahkファイルをとりあえず読み込んで読み込み先のahkファイルでifやら絡ませて
実質的に読み込んでるかどうかを分岐させるという方法はいかが?
335名無しさん@お腹いっぱい。:2012/07/07(土) 14:00:52.83 ID:4/lKoPV30
>>331の方法、昔やったときはプログラム起動時とかに取得できなかったのに
今やったらちゃんと取得できたわ
windowsのバージョン上がったからかな
336名無しさん@お腹いっぱい。:2012/07/08(日) 12:56:50.12 ID:VMCyOW6d0
AHK_LでCapsLockにctrl割り当てる方法がやっと出来た
持ち運びたいからレジストリいじるのもアレだしで無理やり作った
単打にしか対応してないから、Ctrl+aのあとに続けてCtrl+bは押せない

#if capskey=1
~*a::return
~*b::return
~*c::return
~*d::return
~*e::return
~*f::return
~*g::return
~*h::return
~*i::return
~*j::return
~*k::return
~*l::return
~*m::return
~*n::return
~*o::return
;〜(略
#if
sc03a::
capskey=1
send,{ctrl down}
while a_thishotkey = "sc03a" {
sleep,50
}
send,{ctrl up}
capskey=0
return
337名無しさん@お腹いっぱい。:2012/07/08(日) 13:57:56.83 ID:HwUfg6Ei0
悪くはないけど、sleep, 50 のような処理はなるべく避けたほうがいいと思うの
あと、正直原因がよく分からないのだけど、こっちの環境ではうまく動作しなかった
記述としては間違っていないように見えるから、こっちのAHKスクリプトとどこかで干渉したからかもしれない

sleep, 50 のような監視は、ちょっと気持ち悪いだけじゃなくて実際に問題もちょっと起きるよ
例えば、テキストを入力していて、^s を送信してすぐにまた文章を入力する場合
sleep, 50 以内に次のキーを打ってしまうと、それに対してもCtrlを添加させてしまう
だから、次のキーが打たれたら強制的にCtrlをUpさせたほうがいいと思うよ

ついでに、Ctrl押し下げのキャンセルもできた方がいい
例えば、CapsLockをもう一度押し直すことでCtrl押し上げの挙動にしたりね

sc03A::
  If (ctrlDown) {
    ctrlDown =
  } else {
    ctrlDown := 1
  }
  return

#If ctrlDown
*a::
  Send, {Blind}^a
  ctrlDwon =
  return
*b::
  Send, {Blind}^b
  ctrlDwon =
  return
; ...
#If
338名無しさん@お腹いっぱい。:2012/07/08(日) 14:00:34.61 ID:HwUfg6Ei0
#If の中の変数代入はミス
× ctrlDwon =
○ ctrlDown =
339名無しさん@お腹いっぱい。:2012/07/08(日) 17:38:17.93 ID:qhEGaC+Z0
CapsLockの挙動は環境で割とまちまちだよ、たぶんBIOS依存とかあると思う
お手持ちのPCで動くものを使うのはいいが、出先で同じ動作を望むのは難しいんじゃね
340名無しさん@お腹いっぱい。:2012/07/08(日) 22:15:31.22 ID:v6koHN8Q0
CapsLockはAHKでは押し下げた瞬間のみ取得できる、ってのは環境による変化はないと思う
むしろそれ以外のパターンなんてあまりない気が
だからそれを想定して作っておけば、普通に同じ挙動をしてくれるはずだよ
341名無しさん@お腹いっぱい。:2012/07/09(月) 00:07:14.62 ID:VE+Dv2JT0
たぶん他のスクリプトとキーフックが干渉したんだろう
キー番号が違うとかはないよな、多分
342名無しさん@お腹いっぱい。:2012/07/09(月) 00:23:37.16 ID:ZjQE5K950
>340
うちの環境で前にKeyHistoryで確認した時は、押下げ、押上げの状態自体でたらめでだったよ
オルタネイトかモーメンタリかの問題以前に値が不定なので対処のしようがなかった
レジストリ変更しちゃってるから今は確認できないけど
343名無しさん@お腹いっぱい。:2012/07/09(月) 00:42:13.65 ID:dPozwEeo0
うーんちょっとよく分からない
「CapsLockは押し下げ瞬間時のみ取得できる」っていうことが環境によって本当に違うの?
それ以外のパターンなんてない気がするのだけど
押し下げ押し下げの状態、なんてものがそもそもCapsLock(sc03a)には存在しない
「押し下げた瞬間」しか検知できない
押し上げが全く検知できないから、押し下げ押し下げ状態がでたらめに動作しているように誤認しただけなのでは
344名無しさん@お腹いっぱい。:2012/07/09(月) 00:44:07.35 ID:dPozwEeo0
押し下げ押し下げって連呼しまったけど、押し下げ押し上げの間違い
345名無しさん@お腹いっぱい。:2012/07/09(月) 01:31:22.46 ID:ZjQE5K950
>押し上げが全く検知できないから、押し下げ押し下げ状態がでたらめに動作しているように誤認しただけなのでは
ああ、そういえば確かにそうだったかも
ただ、押し上げが検知できない(押しっぱなしになる)から、
2回目以降の「押し下げた瞬間」の検知も上手く行ってなかった気がする
346名無しさん@お腹いっぱい。:2012/07/09(月) 02:24:52.60 ID:5VcH/I1f0
なるほどね
capslockをautohotkeyでどうにかctrlのように振る舞えないかと前に悩んだことがあったけど
そもそも論として無理だったのか
347名無しさん@お腹いっぱい。:2012/07/09(月) 04:10:17.40 ID:G4VBgGARi
だからテンプレに載ってるのさ
348名無しさん@お腹いっぱい。:2012/07/09(月) 14:33:07.16 ID:ujt9Adgo0
一応、CapsLockで擬似的にCtrl-<key>を送信するならできるよ。一度だけね
上のスクリプトだと、CapsLockを押し下げた瞬間から、Ctrlがずっと押されっぱなしになっている
つまり、CapsLockが押し下げられているときにCtrlが押されている状態のような、本来の修飾キーの挙動になっていない
ただ実際には「CapsLockを押し下げている間だけCtrlをDownして、CapsLockを離したらCtrlをUpさせる」ことは本当は可能だよ
ただし単体入力だけ
CapsLock(Ctrl)を押し下げままaを押して次にbを押すといったように、CapsLockを押し下げたまま二度以上連続して入力することは無理
連続入力はできないけど単体入力ならできるから、それでもいいって人にならオッケーではある
上のスクリプトのCapsLock-Ctrlスワップ方法よりは利便性高いはずだけど、ニーズあるかは知らない
349名無しさん@お腹いっぱい。:2012/07/09(月) 15:21:00.29 ID:Xz7BUKJM0
ThumbRemap の x64 化に成功している人がいるかもしれないと思い、質問いたします。

下記は ThumbRemap を Synaptics タッチパッド専用にしたスクリプトの一部です。
タッチパッドに触れると TouchPad 変数に 1 が返され、普段 は #If, TouchPad で
拾って動的にキーバインドを変更しています。
(下記スクリプトではタッチパッドに触れるとメッセージボックスが出ます)

これは AHK_L x86 を使用していれば Windows が x86 でも x64 でも正常動作する
のですが、AHK_L x64 では動作しません。これを AHK_L x64 で動かす方法は
あるでしょうか。のどか (窓使いの憂鬱の派生版) では Synaptics タッチパッド
コントロールの x64 化に成功しているのですが、ソースコードを読んでもイマイチ
理解できませんでした…。
350349:2012/07/09(月) 15:21:55.75 ID:Xz7BUKJM0
#Persistent

TouchInit:
VarSetCapacity(IBuf, A_PtrSize * 4)
VarSetCapacity(OBuf, A_PtrSize * 2)
NumPut(0x01000000 | 10 , &IBuf)
NumPut(0x01000000 | 729, &IBuf + A_PtrSize)
NumPut(0, &IBuf + A_PtrSize * 2)
NumPut(~0 - 1, &IBuf + A_PtrSize * 3)
TouchPad := 0
SetTimer, TouchCheck, 10

TouchCheck:
hSynTP := DllCall("CreateFile", "Str", "\\.\SYNTP", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 80, "UInt", 0, "Ptr")
DllCall("DeviceIoControl", "Ptr", hSynTP, "UInt", 0x80006004, "Ptr", &IBuf, "UInt", A_PtrSize * 4, "Ptr", &OBuf, "UInt", A_PtrSize * 2, "UInt", 0, "UInt", 0, "Ptr")
DllCall("CloseHandle", "Ptr", hSynTP, "Ptr")
TouchPad := NumGet(&OBuf + A_PtrSize) & 0xFF
If TouchPad > 0
Msgbox, % TouchPad
Return
351名無しさん@お腹いっぱい。:2012/07/09(月) 21:38:58.61 ID:6DpMclmE0
選択範囲をGoogle翻訳してツールチップに表示する.ahkください
352名無しさん@お腹いっぱい。:2012/07/09(月) 21:45:53.83 ID:k7C/RoTm0
てめーで書けよカス
353名無しさん@お腹いっぱい。:2012/07/09(月) 22:37:56.34 ID:ujt9Adgo0
まあ質問が悪いからこれはおっしゃる通りだ
ていうか、検索結果をツールチップみたいな小さい範囲に表示してもうれしいことにはならないと思うが
354名無しさん@お腹いっぱい。:2012/07/09(月) 22:58:20.66 ID:G4VBgGARi
質問ならいいんだよ、例えどんなレベルであっても

クレクレは不要
355名無しさん@お腹いっぱい。:2012/07/09(月) 23:33:51.15 ID:VE+Dv2JT0
>>348
どんなのだろう?
色々試したけど、押し下げしか判定出来なかった
できるなら知りたい
356名無しさん@お腹いっぱい。:2012/07/10(火) 15:01:54.60 ID:EU9gvHJc0
ホットキーですが
押すたびに キー1 キー2 キー3 みたいに切り替えて入力させることってでいきますか?
1秒未満間隔で連続して押すと1、2、3と入力され
1秒以上の間隔で連続して押すと 1、1、1と入力される
357名無しさん@お腹いっぱい。:2012/07/10(火) 15:12:40.37 ID:cstXR8OM0
A_PriorHotkey と A_TimeSincePriorHotkey あたり
みてやりゃできんじゃね
358名無しさん@お腹いっぱい。:2012/07/10(火) 15:54:12.32 ID:jmmrmRsK0
>>356
はいよ

if ((A_TickCount < prevTime + 1000) && turn) {
  if (turn == 2) {
    ;Send, ここでキー2を送信
    turn := 3
  } else if (turn == 3) {
    ;Send, ここでキー3を送信
    turn =
  }
} else {
  ;Send, ここでキー1を送信
  turn := 2
}
prevTime := A_TickCount
return
359名無しさん@お腹いっぱい。:2012/07/10(火) 19:25:18.45 ID:EU9gvHJc0
>>358
素晴らしい!
全角スペースによるエラーで少々戸惑いましたが
思惑どうりの結果です
ありがとうございます
360名無しさん@お腹いっぱい。:2012/07/10(火) 19:48:46.01 ID:jmmrmRsK0
ここに書くには全角スペースじゃないとインデントできないしね
ここでの視認性を優先してたや
361名無しさん@お腹いっぱい。:2012/07/10(火) 22:21:11.42 ID:2gyzlX860
皆Lと1.0.48.05どっち使ってる?
俺1.0.48.05
362名無しさん@お腹いっぱい。:2012/07/10(火) 22:25:55.09 ID:I3Drwxbe0
両方
363名無しさん@お腹いっぱい。:2012/07/10(火) 22:37:50.16 ID:jmmrmRsK0
nonLじゃないと動かないスクリプト使ってるわけでもなければL一択だろうけどね

ところで質問
他ソフトを使ってマウスホイールでの加速スクロールを使ってるのだけど
例えばGVimでは加速が効かない。他の有名エディタではTeraPadとかでも
エキストエディタ側でスクロール量が固定になってる場合に加速が効いてない様子
AutoHotkeyでどうにかしてそういうエディタに対しても加速スクロールを対応することはできるのかな
364名無しさん@お腹いっぱい。:2012/07/10(火) 22:55:46.37 ID:VPvRW5tl0
自分で書いたくせに読み返す気力も起きないくらいアレな状態のスクリプトをL用に書き直すのが面倒だから無印
365名無しさん@お腹いっぱい。:2012/07/10(火) 23:50:39.59 ID:cstXR8OM0
自分も無印
描き途中で投げ出して、でも半端に使えるからIncludeしてるファイル群を
端からチェックする気力なし
366名無しさん@お腹いっぱい。:2012/07/11(水) 11:24:27.78 ID:64ogrOKx0
ここを見るとみんな活用してるみたいだけど、スクリプトを配布してる人って少ない気がする
実際どんなスクリプトを使ってたりしてる?
367名無しさん@お腹いっぱい。:2012/07/11(水) 14:37:31.43 ID:DULDvZh30
>>366
ググれば結構晒してる人多いだろ
ここなんかは、自分でスクリプト組むときの参考にもなった
http://www.donationcoder.com/Software/Skrommel/

ところで、ログインが必要なサイト(具体的にはGoogleBookmarks)
のページをローカルに落としてくるってのはAHKでは無理かな?
368名無しさん@お腹いっぱい。:2012/07/11(水) 15:05:18.70 ID:uJHzfreW0
日本の話じゃない?
英語フォーラムとか外国には色々あるしとか思うとちょっと晒しにくい

単発で簡単なスクリプト載せてるブログはあってもahkファイルを配布してるとこは
利用者数考えると少ない気がする
369名無しさん@お腹いっぱい。:2012/07/11(水) 21:03:11.99 ID:64ogrOKx0
数行、ないしはせいぜい数十行のような小ネタスクリプトを書いてる人も多そうだしね
ある程度の長さがあるコードじゃないとahkファイルで配布する気にならないのかも
一つのソフトウェア的に配布しててある程度の人が使ってるのって日本語圏ではかなり少ない
MouseGestureL.ahkとかDvorakJくらいじゃないかな
370名無しさん@お腹いっぱい。:2012/07/11(水) 22:29:36.59 ID:qFOEmtGh0
autohotkeyで作られた日本語対応スクリプト一覧でもあれば
たしかに便利かも
371名無しさん@お腹いっぱい。:2012/07/12(木) 00:21:14.62 ID:i0INlPnK0
むしろ日本語対応してないスクリプト一覧のほうが少ないんじゃないか
372名無しさん@お腹いっぱい。:2012/07/12(木) 00:51:28.39 ID:P4a5QrVI0
ChromeがアドレスバーでEnterキー→新しいタブで開きたいけど
Alt + Enterを押すのがどうしても慣れないので
AHKで実現できないかなぁ?
373名無しさん@お腹いっぱい。:2012/07/12(木) 00:55:58.06 ID:zdHk9xb90
Chrome Toolboxじゃいかんのか?
374名無しさん@お腹いっぱい。:2012/07/12(木) 01:01:29.60 ID:XExfHAOq0
AHKでも楽勝にできるけど拡張でできるなら拡張でやった方が自然
375名無しさん@お腹いっぱい。:2012/07/12(木) 01:23:07.03 ID:zdHk9xb90
Chromeで思い出したけどChromeでPostMessage使うと便利だよね。
ページエンコーディング変えたり、タブを移動を左右に移動させたりできる。

ttp://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/chrome_command_ids.h?view=markup
Shift+PageUp/PageDownでタブを左右に移動
+PgUp::PostMessage, 0x111, 34033, 0,, A
+PgDn::PostMessage, 0x111, 34032, 0,, A
376名無しさん@お腹いっぱい。:2012/07/12(木) 20:09:33.79 ID:G4AQ718k0
^n:: ;Ctrl+nに割り当て
DetectHiddenWindows,On ;非表示のウィンドウを対象に含めるようにする
ControlSend,,space,ahk_class GomPlayer1.x ;対象ウィンドウにspaceキーを送信
return

バックウィンドゥで再生中のGomPlayerを早送りしたり静止したりしたいのですがうまく機能しません
何が問題なのかわかる人教えてください 
そもそもgomだとだめなのかしら


377名無しさん@お腹いっぱい。:2012/07/12(木) 21:32:30.93 ID:pOHqzYY/i
{space} じゃないかな



; 個人的な意見だけど、コマンドを説明するコメントは冗長かと
378名無しさん@お腹いっぱい。:2012/07/12(木) 22:14:21.73 ID:tGb5ff2ai
>>374
楽勝にできるんですか ぜひ書いて頂けないでしょうか
379名無しさん@お腹いっぱい。:2012/07/12(木) 22:19:50.45 ID:ejDZ/+TM0
>>378
まず書いてみなよ
貼ってくれたら修正するよ
380名無しさん@お腹いっぱい。:2012/07/12(木) 22:24:10.43 ID:+5m5Bf/X0
>>376
Controlling media players from Logitech G35 headset ? AutoHotkey Community
http://www.autohotkey.com/community/viewtopic.php?t=66946
これを参考にするといいかも
(ただし未確認)
381名無しさん@お腹いっぱい。:2012/07/12(木) 23:00:37.25 ID:ZdXMDwUq0
>>378
自分で一度書いてみるのがいいよ、ホント
間違えまくっててもいいから書いてみるといい。そしたらきっと誰かが親切に直してくれるよ

>>376 >>380
DetectHiddenWindows, On
ControlSend, ahk_parent, {Space}, ahk_class GomPlayer1.x
return
これでGomへ正常に送信できたよ
けどahk_parentってのがよく分からない。何なんだろうかこれは
382376:2012/07/12(木) 23:32:38.43 ID:G4AQ718k0
>>377 だめでした。
>>380 やってみます。
>>381 いけました。
thank you!
383名無しさん@お腹いっぱい。:2012/07/13(金) 08:18:02.45 ID:7OfwHDqL0
v2使ってる人はどのくらいいるんだろ

とりあえずコマンド類を関数に変えて、見た目すっきりさせたけど
ウィンドウやファイル関係とかの関数だと、対象が見つからないと警告でるな
あとSuspendのPermitが効かない(仕様変わったんだっけ?)
384名無しさん@お腹いっぱい。:2012/07/13(金) 09:32:17.64 ID:hcMx7Z3N0
v2なんてあったのか
前にコマンド廃止するっていうのは見たけどずっと放置されてるものと思ってた
385名無しさん@お腹いっぱい。:2012/07/13(金) 11:21:57.35 ID:gPzl7sKP0
v2は使ってる人大分少ないと思うよ
Lが使ってる人も多くてかつ機能面もそこそこ使いやすいから
そこに落ち着いてる人が多いんじゃないかな
コマンド類が関数に変更されたのは初めて知ったけどそれはいいな
386名無しさん@お腹いっぱい。:2012/07/13(金) 12:17:20.46 ID:7OfwHDqL0
v2ってやっぱ少ないんかな、リファレンスも中途半端な感じだし
コマンド名や引数変更の詳しい説明が無いせいで、かなり詰んだ

関数は仕様変更と言うよりは、途中からコマンドとの併用が可能になったよ
ややこしいから全部書き換えたけど、Suspendだけコマンドで書かないと
Permitが効かないし、命令の最初に"Suspend"を書くのもダメ
未だ更新で直らないって事は、バグなのかな
387名無しさん@お腹いっぱい。:2012/07/13(金) 12:32:23.06 ID:7OfwHDqL0
読み返すとちょっと失礼な文だった
v2のくだりは>>385に向けたものです
388349:2012/07/13(金) 12:48:45.65 ID:4T1Mp1IL0
v2 使うには、まず該当フォーラムを見つけるところから始めないとだからなぁ。
まあアルファフェイズのうちは注目されないだろうね。
389378:2012/07/13(金) 18:06:16.18 ID:Pc1/qAH20
>>379 >>381
書いてみました!
マウスを上部付近に置いた時だけていうのが悲しいですが・・・

Enter::
IfWinActive, ahk_class Chrome_WidgetWin_1
{
MouseGetPos, , OutputVarY
If OutputVarY < 60
Send, !{Enter}
}
else Send, {Enter}
return
マウス関係なしにオムニバー上のEnter→Alt+Enterするようにはどうしたらいいでしょうか?
390名無しさん@お腹いっぱい。:2012/07/13(金) 18:23:34.50 ID:UUfOQwWJ0
リモートデスクトップを最大化した時に、AutoHotKeyのグローバルホットキーが利かないですが有効にする方法はあるでしょうか?
391名無しさん@お腹いっぱい。:2012/07/13(金) 18:24:56.07 ID:UUfOQwWJ0
>>390
リモートデスクトップではなくVMPlayerでした。
392名無しさん@お腹いっぱい。:2012/07/13(金) 18:45:24.36 ID:SotaslOO0
>>389
#IfWinActive ahk_class Chrome_WidgetWin_1
Enter::
ControlGetFocus, Focus, A
If (Focus == "Chrome_OmniboxView1")
  Send, !{Enter}
Else
  Send, {Enter}
Return

ControlGetFocusでアクティブなコントロールを取得すればいい。
あと、アプリ別の指定は#IfWinActiveを使った方がいいよ。
393名無しさん@お腹いっぱい。:2012/07/13(金) 19:07:37.87 ID:Pc1/qAH20
>>392
ほんとに有難うございます!
>あと、アプリ別の指定は#IfWinActiveを使った方がいいよ。
のはどうしてなんですか?

今までなんとなく全部IfWinActive〜式でやってましたが・・・
確かに#IfWinActiveのほうを良く見ます
メリット、デメリットあるのでしょうか?
394名無しさん@お腹いっぱい。:2012/07/13(金) 20:27:15.97 ID:7OfwHDqL0
>>386にちょっと間違いがあったので訂正

>命令の最初に"Suspend"を書くのもダメ
"Suspend()"または"Suspend("")"と関数風に書くのがダメ
あとSuspend("Permit")だけが使えない

>>393
アプリ毎に制御するのが一般的だからでは?
395名無しさん@お腹いっぱい。:2012/07/13(金) 20:48:41.83 ID:gPzl7sKP0
>>393
1.ホットキーラベル内でIfを使って条件付けする方法
2.ホットキーラベル外で#Ifを使って条件付けする方法
一般的には1の方が使われる大きな理由としては、その方がスクリプトが見やすくなること
・1の方法
#IfWinActive aaa
Enter::Send, a
#IfWinActive bbb
Enter::Send, b
#IfWinActive
・2の方法
Enter::
IfWinActive, aaa
 Send, a
IfWinActive, bbb
 Send, b
Else
 Send, {Blind}{Enter}
return
上記みたいに、対象アプリケーション毎に独立した記述できた方が明らかにメンテナンス性が増す
ホットキーラベルの数が増えれば増えるほど顕著になってくる
本当は他にも理由あるけど、複雑なスクリプトを組むときじゃないと全く関係して来ない
一般的なホットキーの使用としては気にするのはそれくらいでいいと思うよ

あと、上のスクリプトで書いたように、ChromeのURL入力コントロールがアクティブじゃなかった場合に
Send, {Enter}
としているけど
Send, {Blind}{Enter}
とした方がいいよ。一応
じゃなければChrome上で ^{Enter} や ^+{Enter} などを送信できない。そんなに使う機会ないけどね
396名無しさん@お腹いっぱい。:2012/07/13(金) 20:58:41.32 ID:Bw1MWjlhi
>>393
1) いつでもキーを乗っ取ることになるんで、
なにも変更したくないウィンドウの場合でも、
Send で再度送ってやらないといけない

2) 新たな定義加える場合、Else If をずらずら書く必要がある
#if だとブロック毎コピペでき、位置も余り気にしなくていい
397名無しさん@お腹いっぱい。:2012/07/13(金) 21:04:31.57 ID:RJIlCfc40
コンパイルした物をメインアイコンとトレイアイコンをオリジナルに変更する方法が知りたいので教えて下さい。
リファンスとか色々探しても未だわからないのでお願い致します><

menuとかそれっぽいのですがエラー出るし。。
アイコン変更した場合コンパイルするとアイコン画像はexe中に組み込まれるんでしょうか?
398名無しさん@お腹いっぱい。:2012/07/13(金) 21:32:46.87 ID:ULRroYgQP
v2が正式版になったら
autohotkeyjpの中の人はどこまで頑張れるだろうか
399名無しさん@お腹いっぱい。:2012/07/13(金) 21:41:00.63 ID:KIPsFRqo0
>>397
つResource Hacker
400名無しさん@お腹いっぱい。:2012/07/13(金) 21:43:30.25 ID:P+Dye16C0
400 get !
401名無しさん@お腹いっぱい。:2012/07/13(金) 21:49:53.02 ID:gPzl7sKP0
>>397
Menu, Tray, Icon, icon.ico
をスクリプトの中に書けばタスクトレイアイコン変更
コンパイルしたexeファイルのアイコンは、コンパイラを使ってコンパイルするときに指定できるよ
タスクトレイアイコンはexeに組み込まれないから注意ね

ちなみに、アイコンをつけるくらいのを作ってることになるけどどんなの作ってるのかな?
公開するならぜみ見てみたいところ
402名無しさん@お腹いっぱい。:2012/07/13(金) 22:03:46.61 ID:Pc1/qAH20
>>394-396
本当に有難うございます。目から鱗です
今までずっとIfWinActive方式でダラダラ書いてたので
これから#IfWinActive方式に直します

そういえば変な症状が・・・Excelのセル上でF2キーを押して、編集状態にして
Homeキーを押すと、普通は入力された文字列の先頭にカーソルが飛ぶはずなのに
そうならずに、なぜかセルが確定されてしまう奇妙な症状がおこってました
Excelを対象にしたIfWinActive文も、HOME::のホットキーも全く書いてないのに・・・不思議でした

Suspend Hotkeysすると正常な動作に戻るので
やはり何か間違いがあるんでしょう
ひょっとして(#)IfWinActive方式の違いに関係あるのかな
403名無しさん@お腹いっぱい。:2012/07/13(金) 23:52:46.63 ID:RJIlCfc40
>>401
あああ・・・構文悪いのかと思ったらそういう事だったんですか。

それ程大した技術も知識も無いので
単に特定ツールのキーマップ変更とかos全体でのランチャーユーティリティとか
マウスジェスチャーの強化とか
ツール単位でマウスとかのキーボードとかのコンビネーションの変化と
クリップボード関連の強化程度の簡単な物です。

基礎部分が既に出来ているので機能追加の実験でトレイにH並んだり
EXEアイコン有る方が区別付きやすいから付けたい程度です。
404名無しさん@お腹いっぱい。:2012/07/14(土) 10:41:38.75 ID:VdcnfWm20
>>403
なるほど、H並びすぎを防ぐためね
AHKを実行ファイルにしてまで配布してるところて
日本じゃ全然見ないから見てみたいなって思ってたや

>>402
誰も言及できないのは、結構判断に困る内容だからだったりします
少なくとも、(#)Ifの方式でそういう違いが出てくるということはまず間違いなくない
Home:: のホットキーが全くないということだけど
正直そうじゃないとAHKではフックされてないはずなのが難しいところ
だから、その説明からは原因が全然判断できない、というのが本音

AHKタスクトレイアイコンを右クリック→Open→ツールバーのView
から、Homeを押した時に何がAHKで起きているのかを確かめてみるといいよ
英語で意味不明だよー何言ってるのこれーってなったらまた質問してくださいませ
405名無しさん@お腹いっぱい。:2012/07/14(土) 13:58:38.65 ID:dUvRRMwt0
>>404
あとコア(機能として取り敢えず完成している部分)もH.exeだとアイコン諸々もやっぱりHでファイルとしても見にくいって所でもありますね。


キーマップ変更とかウィンドウ取得で制御奪えるのは普通に分かるんですが
少し変わった制御で制御されているタッチパネルのスワイプとかってahkって制御出来るものでしょうか?
やりたい事としては、まぁ逆なんですが
現状でTwitterアプリがTLでスワイプ対応している物が殆ど無いので
ウィンドウ取得してスワイプの制御取れるなら外から対応出来るんじゃないかと思うので。
やっぱり擬似的?にクリック→クリック無効的に→ドラッグで擬似的にスワイプ処理作ればいいんですかね。
正規の処理がタッチはどうやっているか知らないんでマウスジェスチャー的になら作れそうなんですが
普通?どうやるもんですか?
406名無しさん@お腹いっぱい。:2012/07/14(土) 19:29:55.79 ID:zC8NP81C0
WinMoveStep(XD,YD) {
WinGet,win_id,ID,A
WinGetPos,x,y,,,ahk_id %win_id%
Step := 22
x := x + (XD * Step)
y := y + (YD * Step)
WinMove,ahk_id %win_id%,,%x%,%y%
return
}
1::WinMoveStep(-1,0)
2:WinMoveStep(1,0)
3::WinMoveStep(0,-1)
4::WinMoveStep(0,1)

というキーボードでウインドウを移動させるスクリプトを発見して使ってみたのですが
タタタとスムーズに移動させたいところ タ、タタタとなってしまいます
初期の遅延をなくすにはどうしたらよいでしょうか
お知恵をください
407名無しさん@お腹いっぱい。:2012/07/14(土) 19:39:46.27 ID:QSiJUraH0
>>406
それはautohotkeyの問題じゃなくてキー押下一般の話だね
メモ帳で文字キーを長く押すとわかるだろうけど、キー入力がリピートし始めるまでの時間がネックになっている

じゃあどうすればいいかというと、
キーを押し下げている間は任意のリピートとsleepをさせる
loop,
{
WinMoveStep(-1,0)
sleep,100
}
こんな感じに
408名無しさん@お腹いっぱい。:2012/07/14(土) 21:23:46.24 ID:+3v00lH20
あとOSの設定でもなくせるから、せっかちさんなら全部そう言う動きに変えちゃってもいいかもね
409名無しさん@お腹いっぱい。:2012/07/14(土) 22:37:16.55 ID:zC8NP81C0
>>407
1::
loop,
{
WinMoveStep(-1,0)
sleep,100
}

と記入したところ、
押したら最後、どこまでも窓が移動してしまいます(;_;)

>>408
どうググったらよいでしょう?
410名無しさん@お腹いっぱい。:2012/07/14(土) 22:44:19.52 ID:GSWsaDYo0
あたりまえだろ
411名無しさん@お腹いっぱい。:2012/07/14(土) 22:46:55.69 ID:H3fOS7Ie0
1::
Loop {
  〜
} Until !GetKeyState("1", "P")
return

取りあえず日本語解説読めよ
412名無しさん@お腹いっぱい。:2012/07/15(日) 00:24:21.03 ID:ApDblI9Vi
Chromeといえば
ブックマークをLButtonのみで新しいタブで開く
というのはさすがにAHKでも実現不可能でしょうか?
これを実現してくれる拡張もないからあれば便利なのにな
413名無しさん@お腹いっぱい。:2012/07/15(日) 09:37:20.95 ID:eNyFW+V20
autohotkey_lの最新版の変更ログに
Fixed key-down/key-up hotkey pairs to suppress input correctly when only one hotkey in the pair is enabled.
こう書いてあるんだけど、これってどういうこと?
それと、
Changed the default script codepage to ANSI, as the previous behaviour was a common source of confusion.
これって日本語のスクリプトはansiだと必ず文字化けしてしまうのか、それともshift-jisを使えるの?
414名無しさん@お腹いっぱい。:2012/07/15(日) 09:40:00.04 ID:eNyFW+V20
>>412
chromeのブックマーク上にマウスカーソルがあるかどうか
判定できるような気はしないから、
たとえばchrome上でalt+shift+lbuttonを押すと
1.右クリック
2.open new tabの項目までカーソルキーでフォーカス移動
3.enter押下
こんな処理を書けばいいと思うよ
415名無しさん@お腹いっぱい。:2012/07/15(日) 10:54:14.53 ID:rlHk72/M0
>>412

413のようにカーソル動かす必要無いと思うけど?
ブックマークだけ出したいならそれが出来るだろうし
ブックマーク内の何かを開きたいならguiを作るか何か個別に作らないとムリだと思う

簡単なソース書ける簡単にミニマムテスト出来ると思うよ
newタブで新規タブ開かせてブックマークマネージャー開かせれば
新規タブにブックマーク表示させる事が出来る訳なので後はボタンをどう割り振るかだけの話だと思う。
ジェスチャー化するとか中クリック wクリックの亜種化で1ボタン化するとか
ショートカット化して1ボタン化とか。

兎に角カーソルで座標取る必要も無くショートカットキーとしてこの2つの機能が有るので
バッチ的にやるだけで実現出来ると思うよ?
やりたいこととしては違う???
416名無しさん@お腹いっぱい。:2012/07/15(日) 11:17:33.31 ID:CZrcwtG90
>>413
> Fixed ...
キーの押し下げ押し上げ時のペアの挙動をしているする時に
一方のホットキーしか定義していないと正しく動作しないことがあった
それを修正したよー
> Changed
デフォルトスクリプトの文字コードをANSIに変えたよ
前の状態は混乱の元だったからね

原文は今読んでないけど、基本的にUTF-8(BOMあり)でやった方が何かといい気がするよ
417名無しさん@お腹いっぱい。:2012/07/15(日) 11:23:31.50 ID:CZrcwtG90
>>412
そういういかにも拡張で実現できそうな機能はできる限り拡張でやった方がいいよ
https://chrome.google.com/webstore/search/BookmarksMenu?hl=ja
AHKでやろうと思うと結構めんどう
多分左クリック単発でやりたいんだよね?
もし左クリックにこだわらないのなら、デフォルトで中クリックで新しいタブで開けるよ

>>409
あまり記述をご存知ないっぽいのでみんなが冷たくなっちゃった感じです
Loopとかはものすごく基本的な構文だから、まずはそこからちゃんと勉強した方がいいよ
他の人のスクリプトコピペより、ちゃんと構文理解していったほうが本当は効率よかったりするからね
418名無しさん@お腹いっぱい。:2012/07/15(日) 13:33:24.10 ID:rlHk72/M0
完全に1クリックだと機能潰すからせめて1キーなら2アクション3アクションなどの
ダブルクリックとかにするなりしないと面倒かと。
←1クリックだと誤爆多いだろうし
→だとコンテキスト無くなってしまう。
419名無しさん@お腹いっぱい。:2012/07/15(日) 13:45:44.96 ID:rlHk72/M0
Send,^
Send,^+o

実際にこれで開く訳なんで
要はこれをキー割り振りするだけで変態的な何かしたいならその部分だけ考えればいいだけかと。
←1キーにしろ→1キーにしろ1キーで実用化するよりデメリットの方が大きいからマウスだけで何かしたいとしても
それ以外のチョイス取るべきだと思う。
420402:2012/07/16(月) 00:32:29.27 ID:eEwy8/IB0
>>404
有難うございます。
原因わかりました・・・
~F2::
IfWinActive〜〜〜
Else
{
  Suspend, On
  Send, {F2}
  Suspend, Off
}
return
という風に、二重にキーを送ってました
#式に変えればこういうプログラムのミスも起こりにくくなりますね。

それと、昔なんかの雑誌にElseの後は
  Suspend, On(Off)
しろよって書いてあったのでずっとそのとおり使ってたんですが
これも>>395教えてくれたとおり、Send, {Blind}{F2} 一行でいいのでしょうか?
意味はよく分かっていませんが・・
421名無しさん@お腹いっぱい。:2012/07/16(月) 02:39:19.16 ID:KgCAC9lGi
suspend 発行するのは、ahkで発行したキーを再度拾って
無限ループになるのを防ぐためだろうけど、スマートではない

キー定義にフック使えば再度拾われること考えなくてもいい
フックの確認/設定方法はマニュアル読むこと


そもそも ~ を使う「乗っ取らない」ホットキーで、キーを再送信するのが必要とする機能だとは思えないし
今後 #IfWin〜使うなら、ますます不要になる
422名無しさん@お腹いっぱい。:2012/07/16(月) 10:58:38.26 ID:hPAK4VIG0
キー押しで画像表示(アイコンサイズ程度)したい場合コマンド的にはSPLASHか何かですか?
423名無しさん@お腹いっぱい。:2012/07/16(月) 14:09:50.10 ID:ocB6eHSo0
XButton1::Send, {LButton}
XButton2::Send, {RButton}

初歩的なことで申し訳ないのですが、長押しもできる様にするにはどのように記述すればいいのでしょうか?
424名無しさん@お腹いっぱい。:2012/07/16(月) 14:56:21.02 ID:xd3tZ84h0
425名無しさん@お腹いっぱい。:2012/07/16(月) 15:02:52.79 ID:ocB6eHSo0
>>424
できました
ありがとうございます
426名無しさん@お腹いっぱい。:2012/07/17(火) 01:33:02.73 ID:74eG2LPK0
以下のサイトを参考にCtrlキーを無効にしようとしたのですがEnterキーが入力されてしまいます(returnキーだから?)
仕様変更があったのでしょうか?
ttps://sites.google.com/site/autohotkeyjp/reference/misc/Override
ttp://ahk.xrea.jp/KeyList.html

やってみたのは、
^::return
Ctrl::return
です
427名無しさん@お腹いっぱい。:2012/07/17(火) 01:57:29.99 ID:LdRpEg170
試したけどリターンするって症状は出ないな。ちなみにホットキーはそれだと無効にならんよ
ctrl::vk103d
こんな感じで適当な存在しないキーに置き換えるといいかも知れない
428名無しさん@お腹いっぱい。:2012/07/17(火) 02:17:39.94 ID:74eG2LPK0
>>427
無効になりました、ありがとうございます!

よく見たらEnterが入力されたのではなく無効化が効いてなかったようです
では何故Enterだと思ったのかと言うと、!F4::returnで無効化自体使えるのか試したときにEnterらしき動作をしたためCtrlもそうなのだろうと勘違いしてしまったのです(CtrlとEnterの動作が似てるソフトなので)
!F4::returnとCtrl::returnは似てこそいれど違う動作だったんですが……

もしよろしければこの疑問も解消してはいただけないでしょうか?
もしかしてこちらこそreturnキーとして機能していたのでしょうか
429名無しさん@お腹いっぱい。:2012/07/17(火) 03:40:44.17 ID:voBYCdgH0
タコススカード短いな
430名無しさん@お腹いっぱい。:2012/07/17(火) 09:45:25.25 ID:chzIl9BC0
>>428
!F4::returnとCtrl::returnは明確に意味が異なるよ
AHKではこの記述でのreturnは、通常キーと修飾キーで挙動が異なる

・通常のキー
!F4::return
→!F4無効化
・修飾キー
Ctrl::return
→Ctrl「単独キー」無効化。Ctrl-x のような2キー同時押しは無効化されない
→実質的に、何も無効化されていないのとほぼ同じ
→本当に「単独キー」での動作が無効になっているのかどうかは
 Winキーをreturnしてみれば確かめられるよ

だからCtrl::returnは期待したような動作をしてくれない
>>427さんの方法でも無効キーにできるけど、基本的にはおすすめしない
あとで見た時、訳わからんキーが記述されていてメンテナンス性が落ちるから
ということで、Ctrlを無効にしたいんだったらこう記述しよう
Ctrl::return
Ctrl Up::return

加えて、returnキーという言い方はちょっと変だよ
returnは無効キーにリマップすることを表しているんじゃなくて
単純にラベル内の処理を終了させることを表しているようなもの
さらに小言を言うなら、Ctrlはいったいなぜ無効にさせられるんだろうと思った
431名無しさん@お腹いっぱい。:2012/07/17(火) 09:56:41.87 ID:chzIl9BC0
>>420
・{Blind}について
Send, {Blind}{F2} と言ったけどそれは間違っていた
実際にはそこの記述では{Blind}しなくていい
{Blind}は修飾キーをそのままSendするための指定
https://sites.google.com/site/autohotkeyjp/reference/commands/Send

・Suspendについて
基本的には>>421さんが言ってくれている通りだけどイメージしにくいかもしれない
その雑誌が伝えようとしていたのは、以下の様な挙動を防ぐため
記述は以下のようにしているとする
F2::
If ~~~
Else
 Send, {F2}
return
もしElseの場合だったとすると、Send,{F2}を辿る
するとSend, {F2}で、F2を検知して再び上記のホットキーラベルに入ることになる
そして再び実行されたF2ラベルでまたSend, {F2}して、もう一度F2ラベル実行して…
というように無限ループに陥る

これはElseの場合に
「このホットキーを動作させた、元のホットキーラベルと同じ値をSendしているから」
このようなループに陥る
元のキーをSendするときにはこういう問題を何らかの方法で解消しなければならない

ただこの場合は、If~~~ をラベル内で使っているからこういう面倒な問題が発生しているわけ
だから、#Ifでもし囲んでおけば、そもそもElseで元のキーを送信する記述を必要としない

→#Ifで囲んでおけば元のキーをSendする必要がないため、Suspend不要
432名無しさん@お腹いっぱい。:2012/07/17(火) 15:58:03.48 ID:74eG2LPK0
>>430
えっと、Ctrl+〜ではなくCtrlを無効にしたかったので問題ありません
架空のキーについては横に説明でも書いておきます、ご忠告ありがとうございます

ReturnキーというのはEnterキーの別名(厳密には違うんでしょうが)だと聞いているので、そちらの意味でReturnキーと
433名無しさん@お腹いっぱい。:2012/07/17(火) 16:03:32.52 ID:YLeEmMnF0
すいません
「;」にホットキーを割り当てるにはどうすればいいんでしょうか
434名無しさん@お腹いっぱい。:2012/07/17(火) 16:10:44.13 ID:HHjctjl80
>>432
残念ながら両方共君の思い込みが激しく効いてる
435名無しさん@お腹いっぱい。:2012/07/17(火) 16:14:45.16 ID:UzD/xFGD0
>>432
なに訳のわからないことを
436名無しさん@お腹いっぱい。:2012/07/17(火) 16:40:35.52 ID:YLeEmMnF0
自己解決につき取り下げます
437名無しさん@お腹いっぱい。:2012/07/17(火) 17:43:07.28 ID:74eG2LPK0
>>434
それはどういう意味でしょう?
438名無しさん@お腹いっぱい。:2012/07/17(火) 21:02:02.70 ID:NF3eDv0Ui
Return キーと言うものはない

そう刻印されていて、全く同じ機能のあるキーボードを持った機種はある(った)けど、
AHKの中にはそういうものはないし、キーリストに載ってない

あくまで Return は復帰コマンド以上も以下もない
439名無しさん@お腹いっぱい。:2012/07/17(火) 21:05:17.23 ID:LdRpEg170
まあ、AHKは、

send,{return}

でしっかりエンターが送信されるけどな
440名無しさん@お腹いっぱい。:2012/07/17(火) 21:24:59.66 ID:74eG2LPK0
>>438
では何故return=Enterと処理されたんでしょうか?

returnと送ったらEnterを送ったのと同じ扱いを受けたので、「あぁ、EnterキーがReturnキーだった名残がここにも」と思ったのですが
441名無しさん@お腹いっぱい。:2012/07/17(火) 21:36:17.37 ID:BDqogjdW0
どうせスクリプトの書き方がおかしかったとか
試したときに押したキーがおかしかったとか
全く関係ない動作を、スクリプトでEnterが送信されたのと勘違いしたかだろ
442名無しさん@お腹いっぱい。:2012/07/17(火) 21:41:15.14 ID:m7Hlidwr0
ていうか、国産機以外でリターンキー付いてたPCなんてあったっけ?
海外産のAHKには最初から関係ないキーだと思ってたけど
443名無しさん@お腹いっぱい。:2012/07/17(火) 21:44:02.28 ID:o9X/EBfW0
存在しないキーを指定する方法に固執する意味も分からん
Ctrl::return
Ctrl up::return
って言ってるだろうに
質問してそれに対する回答を耳から通り抜けさせる不思議
444名無しさん@お腹いっぱい。:2012/07/17(火) 21:45:08.76 ID:74eG2LPK0
>>441
こんなですが
Alt+F4くらいミスタッチしませんよ
!F4::return以外正常に動作しています

#ifWinActive, ahk_class TTVPWindowForm

a::Send,{left}
c::Send,{Home}
d::Send,{down}
f::Send,{right}
j::Send,{left}
k::Send,{down}
l::Send,{up}
m::Send,{Home}
s::Send,{up}
`;::Send,{right}
ctrl::vk103d
!F4::return
445名無しさん@お腹いっぱい。:2012/07/17(火) 21:54:53.57 ID:74eG2LPK0
>>443
Ctrlの話はもう終わりましたが>>432
446名無しさん@お腹いっぱい。:2012/07/17(火) 21:58:20.69 ID:SMqmXgLr0
> Ctrlの話はもう終わりましたが
だからそれがお前の思い込みだって言われるだろ
そんな訳分からん返しされても笑えない

さらに言えば上のように記述しても普通にreturnで無効キー扱いされてる
その記述の中以外が腐ってるから!F4にも影響してるとしか思えない
447名無しさん@お腹いっぱい。:2012/07/17(火) 22:00:56.73 ID:LdRpEg170
ああ、一個見つけた
!F4::!return
って書き方だと、altf4でReturnする
>>444のスクリプトはこっちじゃしっかり動いてるから、そう言うことじゃないかね

後ろで見てでもしなきゃ正確なところは分からんし、誰もはっきりしたことは言えてないんだろうよ
AHKのバージョンも書いてないし
AHKはReturnがダブルミーニングされてるから、、紛らわしい使わないほうが吉かもってことで

>>443
固執してるか?
さっきから!F4 !F4連呼してるように見えるが
448名無しさん@お腹いっぱい。:2012/07/17(火) 22:05:01.83 ID:LdRpEg170
正確には送られるのはAlt+Returnだな

ついでに一個見つけた
F12::~*Return みたいな書き方だと、~と*とEnterがSendされたみたいなことになる、Returnは別のキーでもいいけど
さすがAHK、隠しコマンドもばっちりだ
449名無しさん@お腹いっぱい。:2012/07/17(火) 22:09:41.50 ID:ITSCji2y0
>>447
存在しないキーを指定しなくてもいいのに
わざわざそのキーを指定しちゃう方法取るとか頭湧いてるってことだろうよ
まああなたは自分が出した方法だから受け入れたいのか知らないけど
教えられる側の性格問題ってこうも重要なんだなって思った
450名無しさん@お腹いっぱい。:2012/07/17(火) 22:13:08.67 ID:74eG2LPK0
>>446
思い込みと言うより、現状の架空のキー方式で間に合ってるので辞退してるだけです
それとも教わったからにはそれを採用しなければいけないんでしょうか?
それは少し押し付けが過ぎると思います

あと>>444の.ahkはそれしか書いていないテスト環境です

>>447さんも!returnじゃないと再現しないそうですからうちの環境のせいですかね
ちなみにvista 32bit でv1.1.07.03です
(単発の方が多いようですが)歓迎もされてないようですし諦めます
みなさんお付き合いいただきありがとうございました
451名無しさん@お腹いっぱい。:2012/07/17(火) 22:18:26.28 ID:m7Hlidwr0
TTVPWindowFormって何のアプリのClassだっけ?

とりあえず #ifWinActive〜だけ削除して窓全域で動かしてみたが
!F4::return も !F4::!return もちゃんとキー無効になったよ、Enter挿入なし
XP / AHK 無印 1.0.48.5
まあおそらく皆はAHK_L 基準で話してるだろうから、L固有のバグだったり?
452402:2012/07/17(火) 22:20:27.31 ID:slyimChx0
>>431 >>421
分かりやすい説明ありがとうございます!
一応、無限ループ防止のためフック使うようにしたほうがいいと思い
ホットキーの先頭に#UseHook入れましたよ。問題なく動いてます

#Ifに書き直したらホントにすっきり爽快ですね
453名無しさん@お腹いっぱい。:2012/07/17(火) 22:28:08.83 ID:BDqogjdW0
>>450
>もしよろしければこの疑問も解消してはいただけないでしょうか?
って言うからいくつかの可能性を考えてやってんだろうが。
歓迎されてないのは、後出し情報で質問してるくせに
自分の納得する答え以外に対して、「そんなことわかってますよ」的な態度だからだ。
454名無しさん@お腹いっぱい。:2012/07/17(火) 23:11:39.99 ID:8+GHgn8W0
いきなりお前の不手際だろと決め付けるのもどうかと思うけどね
455名無しさん@お腹いっぱい。:2012/07/17(火) 23:36:06.54 ID:5ukHskCo0
いいぞバッドエナジーが満ち溢れておるわ
456名無しさん@お腹いっぱい。:2012/07/18(水) 07:45:48.26 ID:eneJ9i3q0
#IfWinActive でウインドウ(アプリケーション)の指定の方法で、変な混同がないように
きちんと指定する方法ってありますか?

現在 window_spy でトップに表示される
ahk_class クラスネーム かあるいは そのままタイトルバーの文字
のみを#IfWinActiveのあとに書いているのですが、これでいいのでしょうか?

PCゲームのValve社のゲームなどはすべてahk_class Valve001みたいなので
タイトルの文字だけで指定してやるしかないっぽいのですが、
「Counter-Strike」と「Counter-Strike Source」があって
どちらとも別々にしたいので、僕はタイトルの文字だけで#IfWinActiveで
バインドを分けていて、いまのところ上手く行ってる気がするのですが
なにか不安です。うしろにSourceが付いているか否かだけですし
なにかの拍子でほかの方面にも不具合が出そうでなんか怖いです。
Window Title と WinText しかパラメーターがなくて第三以降のパラメーターが
指定できないっぽいですし。

初心者なので簡単なことしかわかりませんが、なにかいい方法ありませんか?
おしえてください。現状のタイトルバーの文字だけをただ書いて指定する簡単な
方法でいいのでしょうか?
457名無しさん@お腹いっぱい。:2012/07/18(水) 08:20:08.41 ID:dyxDG8uB0
ahk_exeをフルパス指定で使えばいいよ
458名無しさん@お腹いっぱい。:2012/07/18(水) 08:22:04.42 ID:KoDRr2iC0
タイトル指定の方法を確認してみるといいよ
前方一致、中間一致、完全一致とかね
https://sites.google.com/site/autohotkeyjp/reference/commands/SetTitleMatchMode
459名無しさん@お腹いっぱい。:2012/07/18(水) 10:55:55.11 ID:eneJ9i3q0
>>457
これでできたのかな・?
わかりませんが、とりあえず一回動作確認できました。まじっすか。こんなことできるんですね。
WinGet, , Processpathってのもそんなに知られていない便利な機能みたいですね。
どうやるかわかりませんが。ありがとうございました。いまのところ出来た気がします

>>458
SetTitleMatchMode とかよくみるのですが、この文字列をどこに置いたらいいのか
わからないんですよね。IFwinactiveからみてどこにおいたらいいのか
ググってサンプルを見ればいいって話になるかもしれませんが。
レスありがとうございました。ぐぐってみます。
460名無しさん@お腹いっぱい。:2012/07/18(水) 11:48:43.34 ID:wlTizaZa0
コマンドが実行されればどこでもいいよ
一番最初の行rとか
461名無しさん@お腹いっぱい。:2012/07/18(水) 14:06:24.34 ID:WfwhUAGa0
ahk_exeなんて知らなかったよw
WinGetしないで
#IfWinActive ahk_exe firefox.exeみたいに使うのかな?
462名無しさん@お腹いっぱい。:2012/07/18(水) 14:17:04.96 ID:+HTRREjQ0
日本語解説には載ってないんだよね。
463名無しさん@お腹いっぱい。:2012/07/18(水) 15:04:30.83 ID:+9r/1Ykf0
あれ?ahk_exeってもしかしてGetProcessModuleNameEx使わなくていいのか
464名無しさん@お腹いっぱい。:2012/07/18(水) 17:12:58.25 ID:kcCb0DWE0
確か前スレでもahk_exeって出てきてたのにw

便利だから日本語サイトにも載ってるといいんだけど
もう更新されてない?
465名無しさん@お腹いっぱい。:2012/07/18(水) 17:19:44.02 ID:OriTgRoM0
知らなかった
クラスが起動毎に変わるアプリとかを指定するのに便利そうだね
466名無しさん@お腹いっぱい。:2012/07/18(水) 17:21:52.90 ID:+9r/1Ykf0
なんてこった
スクリプト書き換えてこよう
467名無しさん@お腹いっぱい。:2012/07/18(水) 17:29:42.50 ID:+9r/1Ykf0
勘違いしてた
別にAHK単体でプロセスのフルパスを取得できるわけじゃないんだ
468名無しさん@お腹いっぱい。:2012/07/18(水) 17:42:38.68 ID:wlTizaZa0
出来るよ
469名無しさん@お腹いっぱい。:2012/07/18(水) 19:07:24.50 ID:eneJ9i3q0
Autohotkey_L だけに実装されてる機能だっけ?
Lのほうが総合的にみていいのかな。
470名無しさん@お腹いっぱい。:2012/07/18(水) 19:18:29.70 ID:wlTizaZa0
総合的に見なくても悪いところはないんじゃないかな?
旧版ローカルなスクリプトを抱えてる人がまだ使ってるだけで
471名無しさん@お腹いっぱい。:2012/07/18(水) 21:46:31.56 ID:NXUCajxS0
autohotkeyにあってautohotkey_Lに無い機能は無いよ
autohotkey+アルファがautohotkey_L
472名無しさん@お腹いっぱい。:2012/07/18(水) 22:35:20.14 ID:wbJDD/Dy0
互換性の問題は普通にあった気がするけど
無印向けに作られたものでLで動かないスクリプトも普通にあったような
473名無しさん@お腹いっぱい。:2012/07/18(水) 22:45:39.69 ID:l/1wrU2k0
基本は上位互換だけど
unicodeとかx64とか対応あたりで互換性に問題が出るスクリプト多数
って話じゃなかったかな
474名無しさん@お腹いっぱい。:2012/07/18(水) 22:49:10.72 ID:WfwhUAGa0
皆さんて元々C言語とか使えるプログラマーなのですか?
文系がこういうのを自在に操れるようになるにはどういう勉強をしたらいいんですか?
475名無しさん@お腹いっぱい。:2012/07/18(水) 22:56:37.72 ID:P24I/uqC0
つまりももいろクローバーとももいろクローバーZみたいなものか
476名無しさん@お腹いっぱい。:2012/07/18(水) 23:01:53.06 ID:wlTizaZa0
>>474
スクリプト言語とプログラム言語の違いをまず分かるといいかも
AHKscriptはスクリプト言語の初級レベルなので文系でも大丈夫だと思う

autohotkey.jpをじっくり読みながら、人の描いたスクリプトを読み取っていくのが基本で、
あとは自分の使いやすいように改造してみればすぐ覚えられるんじゃないかな
477名無しさん@お腹いっぱい。:2012/07/18(水) 23:03:16.60 ID:l/1wrU2k0
文系理系ゆうのは日本だけ
己の不得手分野を肯定してシャットアウトするのに都合のいい区分けなだけ
って、どっかの誰かが言ってた

AHKは日本語解説わりと充実してるしまずは一通り読み込んでみるといい
あとは気合でなんとかする
478名無しさん@お腹いっぱい。:2012/07/18(水) 23:04:49.89 ID:T/gjnzoh0
>>474
既存のスクリプトをコピペして自分に合うように改造していったら自然に書けるようになるよ
479名無しさん@お腹いっぱい。:2012/07/18(水) 23:26:43.07 ID:WfwhUAGa0
>>476>>478
そうです!コピペから始めてだいぶ自分の思うような事ができるようになりました
AHKを弄ってて楽しいと感じているので
違う言語とか書けるようになったらさらに楽しいだろうな〜と少し思ったので聞いてみました

>スクリプト言語とプログラム言語の違い
というのもさっぱり分かりませんが
ようはAHKなんかプログラミング以前でC言語とかはるかに難しいという事ですかね^^;

AHKで何かしたいと思ったら、流行らせるページかautohotkey.jpに行ってコピペして
パラメータ変えるだけで結構実現できますよね
Windows、C言語のプログラミングもそういうサイトがあって、コピペして
パラメータ変えるだけで結構いろんなソフトが作れたりするんですか?
子供電話相談室みたいですみません
480名無しさん@お腹いっぱい。:2012/07/18(水) 23:58:25.25 ID:ACWldH8k0
うーん実現したい程度の問題だと思う
AHKは一行リマップスクリプトでも実用的な記述にできたりするけど
複雑なスクリプトを自分で描く場合は、コピペとかでは全く無理
言語に限らずコピペで可能な範囲は相当限られてるよ
481名無しさん@お腹いっぱい。:2012/07/19(木) 00:06:19.22 ID:eUBAyMjl0
>>479
参考
http://www.mwsoft.jp/column/program_top10.html
AHKがナメック星到着時のクリリンなら、C言語は第二形態フリーザ
482名無しさん@お腹いっぱい。:2012/07/19(木) 00:48:14.14 ID:eHKctBJW0
>>480-481
凄く参考になりました
クリリンとフリーザだともう生物として別物だねw
やっぱり相当な差があるのですね
プログラムを書いていれば幸せかぁ・・・うらやましいです
483名無しさん@お腹いっぱい。:2012/07/19(木) 09:17:47.29 ID:efpXG3tg0
ahkもプログラムも良くわからないけど
ahkはバッチに近いですよね
基本的に単行実行出来るけど複雑になると把握出来ていないと動かない

プログラムの場合単行実行する方法自体が元々無いと思う
リマップとかみたな事をするにはプログラムでは複数行必ず必要でしょうし
どれかのプログラムだけでって事になるともっと複雑かと
自分はAHK勉強中でコピペで済ませたいとは思いますが
コピペと言うより似た動きのソースからどう動くのか割り出して作り出さないと
動きにくいなーとかって思いましたね。
結局意味分かってないとコピペじゃムリだと思います。

書くのが面倒だからコピペしているだけで分からないからコピペしているではoutかと。
484名無しさん@お腹いっぱい。:2012/07/19(木) 10:36:15.46 ID:efpXG3tg0
複数アプリで同述リマップ使う為の方法教えて下さい。
例えばこれが元で hoge1 2 3と増やせば一応同じですが
#IfWinActive,ahk_class hoge1
down:: send,i

ソース肥大と汚いのでグループ化したいのですが

GroupAdd,hoge,ahk_class ToolList
#IfWinActive,ahk_class hoge
down:: send,i

だと反応しないようなんですが
多分使い方間違っているんだとは思いますが・・・どうすればいいんでしょうか?



485名無しさん@お腹いっぱい。:2012/07/19(木) 11:19:07.80 ID:DUFdqd+00
ahk_groupはアクティブ系のコマンドでしか使えなかったような
#IfWinActive ahk_group wingroup
という表現では利用できないはず
https://sites.google.com/site/autohotkeyjp/reference/commands/GroupAdd

複数ウィンドウを条件にする方法は色々あるよ

#If WinActive(wintitle1) or WinActive(wintitle2)

のように#IfWinActiveではなく#Ifを使って条件式を書くとか
SetTitleMatchMode, RegEx でウィンドウ一致条件を正規表現にして

#IfWinActive (wintitle1|wintitle2)

のように記述するとか
正規表現が嫌いなら上の方法がいいかもね
486名無しさん@お腹いっぱい。:2012/07/19(木) 17:48:31.31 ID:pvKghfCT0
いや普通にできるんじゃない?
グループ化したwindowの指定はahk_classじゃなくてahk_groupを使うのでそこの間違いを訂正する
それで動かなければ毎度おなじみのAuto-executeセクションの問題な気がする
487名無しさん@お腹いっぱい。:2012/07/19(木) 19:11:53.58 ID:ZxpWQcfk0
話蒸し返すようで悪いけどreturnキーついてるキーボード見つけたw

TK600
http://www.amazon.co.jp/gp/aw/d/B005EN6VOW/ref=mp_s_a_1?qid=1342692623&sr=8-1

こちらはreturn(enter)キー
TK710
http://www.amazon.co.jp/gp/aw/d/B008DM3UXQ/ref=mp_s_a_1?qid=1342692657&sr=8-1

Logicoolはなに考えてんのかね
488名無しさん@お腹いっぱい。:2012/07/19(木) 20:46:01.47 ID:ct+9FxtH0
>>485-486

サンクス
ミニマム状態でもテスト出来る内容なので簡単試せるんですが
ちょっと今から出る関係で試せないですが、何となくイメージは掴めたので
帰ってきたら試してみます。
489名無しさん@お腹いっぱい。:2012/07/19(木) 20:48:40.63 ID:ct+9FxtH0
出る前に一瞬試したら反応したのでahk_groupで反応するみたいです。
ちょい動作変な部分があるので後は帰ってきてからで・・・。
490名無しさん@お腹いっぱい。:2012/07/19(木) 21:20:50.74 ID:DUFdqd+00
本当だ
ahk_groupで試してみたら問題なく動いた。失礼
491名無しさん@お腹いっぱい。:2012/07/19(木) 21:31:16.77 ID:eHKctBJW0
#IfWinActive, ahk_class Chrome_WidgetWin_1
LButton::Send, ^{LButton}
とか
LButton::return
などとしても普通の左クリックが送られてしまうのですがどうしたらいいですか?
他のキーは完全に乗っ取ってくれるのですが・・
492名無しさん@お腹いっぱい。:2012/07/19(木) 22:11:00.22 ID:ESq1VkzU0
LButton::Send, {Ctrl Down}{LButton}{Ctrl Up}
これでできるかも
493名無しさん@お腹いっぱい。:2012/07/19(木) 22:24:46.82 ID:eHKctBJW0
サンクスです!でもダメでした
やっぱりLButtonだけは乗っ取れないみたいです。
二重にキーが送られてしまいます
LButton::
 IfWinActive, ahk_class 〜
と書けばできそうですがスマートじゃないみたいだし…
494名無しさん@お腹いっぱい。:2012/07/19(木) 22:44:07.95 ID:ct+9FxtH0
ahk_groupで動くのは間違いないのですが
出る前に変だと思った部分はどうもキー複数実行すると元にキーマップが一時的に復活するみたですね。
複数行でウィンドウフックしているとキーは完全のっとれているので何かやり方が有るのか

変数みたいに差し込むような方法あるんでしょうかね?
取り敢えず自分の無知もあるので調べて改善してみます。
495名無しさん@お腹いっぱい。:2012/07/19(木) 23:19:15.19 ID:ct+9FxtH0
解決しました単行キーでは問題ないようですが複数行キーの場合
そのキーひとまとまりとして最後にリターン仕込まないと元のキーを最後に打つみたいですね。
ケアレスの気もしますが
複数で個別にフックしている時はリターン無しでも元のキー打たなかったので分かりませんでした。

普通リマップで複数行書く場合は最後にリターンする物なんでしょうか?
まぁキー抑制出来ているから当面それでいい話でもあるですが。。
496名無しさん@お腹いっぱい。:2012/07/19(木) 23:19:39.17 ID:eHKctBJW0
#IfWinActive, ahk_class Chrome_WidgetWin_1
 LButton::
#IfWinActive
 ~LButton & MButton::
↑こう書いていたのが原因でした
~LButton & MButton::のスレッドを消したらうまく動くようになりました!
この場合にLButton & MButton::のホットキーも生かすようにするにはどうしたらいいのですか?
「~」を取ってLButton & MButton::と書いたら、すべてのアプリケーションで
左クリックが無効になってしまいました
497名無しさん@お腹いっぱい。:2012/07/19(木) 23:21:33.11 ID:yPs7ri130
まずリファレンス読んだ方がいいような気がする
498名無しさん@お腹いっぱい。:2012/07/19(木) 23:36:57.86 ID:eUBAyMjl0
>>496
「 up」
499名無しさん@お腹いっぱい。:2012/07/19(木) 23:49:30.79 ID:eHKctBJW0
すみませんもう少しヒントお願いします
500名無しさん@お腹いっぱい。:2012/07/20(金) 00:01:50.36 ID:9w6WQrw20
501名無しさん@お腹いっぱい。:2012/07/20(金) 00:18:36.52 ID:UXQt4YJZ0
LButton & MButton:: の部分を
LButton Up & MButton::にすると
Error: Invalid hotkey が出てしまいますが話がずれてますか?
502名無しさん@お腹いっぱい。:2012/07/20(金) 00:29:03.45 ID:2xdJaJOLi
コンビネーション(同時押し)キーなのに key up が定義できるわけがない


というか、スクリプトを断片的に貼るのは構わんけど、
「どういう動作をさせたいのか」をまず述べるのが先じゃね?



あと、マウスはアクティブ窓かどうかだけで判断するのは非常に危険
一個下にあるブラウザのリンクを非アクティブなままクリックするってことはよくあるケースだし
↑のケースに対応するには #If のサンプルコードを読むといい
503名無しさん@お腹いっぱい。:2012/07/20(金) 00:30:50.31 ID:jn5tDwVG0
http://www.autohotkey.net/paste/
このサービスを積極的に使うといいと思うよ
504名無しさん@お腹いっぱい。:2012/07/20(金) 00:31:55.44 ID:Rc4ETWaP0
~の意味は分かってるかな?
何気にみんなが行き詰るコンビネーションキーの罠にハマってる気がする
同じ問題に引っかかった、あるいは諦めた人って他にもいそうだ
個人的には>>498のupの意図はよく分からないけど
505名無しさん@お腹いっぱい。:2012/07/20(金) 01:18:17.37 ID:UXQt4YJZ0
~の意味・・システムにスルーする事だと思いますがアヤフヤです
> コンビネーションキーの罠
コンビネーションキーだからダメだったのでしょうか
#IfWinActive, ahk_class Chrome_WidgetWin_1
 LButton::return
#IfWinActive
 ~LButton::Tooltip, LButton
確かにコンビネーションキーやめてこう書くと思い通り
Chromeのウィンドウでクリックを乗っ取ってくれるようになりました

> どういう動作をさせたいのか
Chromeのウィンドウでブックマークバーをクリックした時だけCtrl+クリックに置き換えたいのと
LButton & MButton::のコンビネーションキーをできれば生かしたいという事です
506名無しさん@お腹いっぱい。:2012/07/20(金) 09:46:22.58 ID:ggUpg6T80
マウスフック関係は扱い難しいんだよ、コンビネーション絡みなら余計
運用方法を見直して、違和感の少ない代替手段を探したほうがいい

ブラウザの共通標準動作として中クリックが新しいタブなんだけどそれじゃとダメなの?
ダメだ譲れないってことなら、コンビネーション側のトリガを変えて代用

LButton Up & MButton::
  ↓
MButton & LButton::
507名無しさん@お腹いっぱい。:2012/07/20(金) 10:03:56.63 ID:ulVazoQL0
マウスフックとコンビネーション絡みはなんとかしたとして
けど本当はChromeのブックマークバーを検知するのが最も面倒なのでは
上で話してる実現したい動作は一応書ける
けど、マウス下にブックマークバーがあるかどうかを検知するいい方法が思いつかない
もしそれだけが目的なら素直にChrome拡張で
ブックマークを新しいタブで開く拡張を探すか
>>506さんが言ってくれているように中クリックを使うか
508名無しさん@お腹いっぱい。:2012/07/20(金) 11:49:01.25 ID:UXQt4YJZ0
>>506-507
有難うございます
> マウスフック関係は扱い難しいんだよ、コンビネーション絡みなら余計
よく分かりました。両立は不可という事でどちらかのホットキーは諦めたほうがいいんですね。

> けど本当はChromeのブックマークバーを検知するのが最も面倒なのでは
仰るとおりです。そこまで深く考えずに始めてしまいましたが
とりあえずバーの位置だけは決まっているので
MouseGetPos,,yして75 < y < 100だったらCtrl+クリックを送るなどで
様子を見ようと思っていました(フォルダの場合は使えない)
せめてマウスオーバーしたときに色が変わってくれればあり難いんですが
それも無理みたいです
509名無しさん@お腹いっぱい。:2012/07/20(金) 12:52:46.99 ID:ulVazoQL0
>両立は不可
いや、実際にはできるよ。ただしコンビネーションキーを使って実現するのは多分無理

フォルダじゃなくてブックマークバーにそのまま置いてあるの限定でいいのかな
というと、固定的なブックマークでそうしたいんだろうか
もしそうならやっぱりChromeで解決できる
googleへのブックマークを新しいタブで開きたいなら、そのブックマークのURLを以下に編集
javascript:window.open("http://www.google.com/")
510名無しさん@お腹いっぱい。:2012/07/20(金) 16:46:12.36 ID:7yjOA4mXi
>あと、マウスはアクティブ窓かどうかだけで判断するのは非常に危険
>一個下にあるブラウザのリンクを非アクティブなままクリックするってことはよくあるケースだし

確かにあるよね。てことはマウスだけは#IfWinActive(個別)に書かないで
#IfWinActive(条件無し)でマウス下ウィンドウを調べて条件作ったほうがいいってこと?
511名無しさん@お腹いっぱい。:2012/07/20(金) 21:30:18.01 ID:2xdJaJOLi
>>510
引用部分の下の行も嫁
512名無しさん@お腹いっぱい。:2012/07/20(金) 22:24:45.82 ID:UXQt4YJZ0
>>509
有難う〜
いざとなったらブックマークをエクスポートしてエディタで置き換えればいいですね
513名無しさん@お腹いっぱい。:2012/07/20(金) 22:26:56.26 ID:fLHzGh7O0
>>509ってChrome拡張スレでも言われてたよね、試さなかったの?
514名無しさん@お腹いっぱい。:2012/07/20(金) 23:24:04.61 ID:S8jPRFu9i
#IfてLだけ?
いまいち違いが分からん
515名無しさん@お腹いっぱい。:2012/07/21(土) 01:08:08.09 ID:fiI3pp0d0
外部で設定INI持つ方法誰か教えて下さい。
IniRead, OutputVar, Filename, Section, Key , Defaultで制御するんだとは思うのですが。
構文エラー出ているので動かない感じに・・。
IniRead, 代替, INIのファイル, INIファイル内の設定名, ini内でのキー名
っていう認識で
ahk
IniFile := A_ScriptDir . "\ini.ini"
IniRead, CUP1,%IniFile%,CONFIG,CUP
Up:: %CUP1%
ini
[CONFIG]
cup=P

で駄目なんですが何が不味いのでしょう?
iniで制御出来ると後で楽なので知りたいんです。。
516名無しさん@お腹いっぱい。:2012/07/21(土) 01:14:51.16 ID:Wgq0gF990
CUPの大文字小文字は?
あと、ahkの方のIniReadの記述をどこに書いているかも気になる
構文エラーがなんて出るかもここに書くといいよ
そのためのエラー表示だから
517名無しさん@お腹いっぱい。:2012/07/21(土) 01:45:49.95 ID:SjsZXWZr0
>>515
リマップに変数は使えなかった気がするから、
Up:: %CUP1%
この部分をHotkeyコマンドでやってみたらどうだろう
Hotkey, Up, Key1
Key1:
Send, %CUP1%
Return
518名無しさん@お腹いっぱい。:2012/07/21(土) 01:48:24.95 ID:NE+99Wfhi
1. リマップはスクリプトファイルの読み込み時に解釈されて、
Sendを用いた数行のスクリプトとしてロードされる

2. スクリプトの文法が正しいかが完了したら、ホットキー等の準備を行う

3. autoexec を実行する

4. キー入力イベントでSendコマンドが実行される


(1)でこけてるわけで、文法違反

リマップは定義はスクリプトロード時のマクロみたいなものなんで変数などは使えない
#IfWin〜で変数が使えないのと同じ理由(2 の部分だけど)

って訳なんで、実行時に変数参照したいならリマップは諦めてSend でチマチマやればいい

もっと楽なのは #Include で定義を外部ファイルにしてやれば(1)の段階で解釈してくれる
INIの「=」と、AHKの「::」くらいしか違いがないわけだし




519名無しさん@お腹いっぱい。:2012/07/21(土) 03:17:56.90 ID:37lhk7Nx0
>>516
スクリプトは殆どこのままの状態ですね
だから順番も順番

>>517-518
サンクス
知識足りないので即分かったとは言えないですが
試してみます。
520名無しさん@お腹いっぱい。:2012/07/21(土) 03:25:16.64 ID:37lhk7Nx0
>>517
試しでコピペでどうなんだろうで試したらサックリ動きました
なるほど直接キーマップにsendに変数は与えられないけど
hotkeyとして文字列となった物になら変数も受け入れられると言う事なんですね。

この部分の差が構文エラーとなっていた訳ですか納得しました。
521名無しさん@お腹いっぱい。:2012/07/21(土) 09:16:20.46 ID:nuVfIlK60
スクリプトがこのままということはやっぱりAutoExecを考慮していない
ちゃんとリファレンス読もうよ
あと、そこでHotkeyコマンドする意味は正直よく分からない
普通に Up::Send, %cup% で問題ないはず
522名無しさん@お腹いっぱい。:2012/07/21(土) 09:34:40.07 ID:37lhk7Nx0
問題無いはず出はなく問題無いならそれで通っているはずで
hotkeyを使う理由は518が答えてくれていると思います。
若しくは518さんの言うとおり#Include使うかのような気がします。

いずれにしろ通っている案方が正しい訳で
Up::Send, %cup% だと構文エラーなのでその時点で問題かと
実際に組んでエラーが出ないと言うなら又話が変わると思いますが・・・。
523名無しさん@お腹いっぱい。:2012/07/21(土) 09:40:49.92 ID:nuVfIlK60
いや普通に一文Sendで動いてるけど。あとエラー内容は?
Hotkeyを使った理由を知りたい
ていうかAutoExecは一応ちゃんとしておいた方がいいよ
ということでリファレンス読もう
524名無しさん@お腹いっぱい。:2012/07/21(土) 09:52:52.13 ID:nuVfIlK60
Hotkeyコマンド使った理由は自分の言葉でってことね
少なくとも>>520の説明は正しくない。キーリマップとSendをごっちゃにしてる
よく分からんけどコピペでなんだか動いたはなるべく避けたほうがいいよ
とりあえず動いたなら難しいこと考えたくないーならまあそれでもいいかもしれない
525名無しさん@お腹いっぱい。:2012/07/21(土) 10:24:40.25 ID:78uALa+a0
動けば正義という意味ならたしかに間違いじゃないが
変数まずいのはリマップだけなので、

Hotkey, Up, %CUP1%

Up:: Send, %CUP1%

でいいと思う。>517がわざわざ分割した意味がよくわからん
526名無しさん@お腹いっぱい。:2012/07/21(土) 10:29:33.02 ID:78uALa+a0
ごめん勘違いしてたわ
Hotkey, Up, %CUP1%
は結局 %CUP1%内のラベルに飛ぶからダメだった
動的に飛び先変えたい時以外はあんま意味ない
527名無しさん@お腹いっぱい。:2012/07/21(土) 17:11:10.23 ID:37lhk7Nx0
Up:: Send, %CUP1%
あ・・・というか元の奴まで遡ったらsend打ってないポカやってますね。
失礼><

遠回りしましたが勉強にはなりました。
528名無しさん@お腹いっぱい。:2012/07/21(土) 18:04:10.75 ID:8rEiHAgQ0
勉強に近道などない
529名無しさん@お腹いっぱい。:2012/07/24(火) 23:11:02.78 ID:lh5iq0+0i
L公式サイトが404
トップだけでなく中も同じ

さて
530名無しさん@お腹いっぱい。:2012/07/25(水) 01:18:13.09 ID:jkEkcjpl0
あ、本当だ
531名無しさん@お腹いっぱい。:2012/07/25(水) 08:03:31.57 ID:KDzIV3vB0
ドイツ語のページはアクセス出来るみたいだね。
http://de.autohotkey.com/download/index.htm
532名無しさん@お腹いっぱい。:2012/07/26(木) 10:59:09.81 ID:iz32BFrC0
>>529
今は普通にアクセスできるよ
533名無しさん@お腹いっぱい。:2012/07/26(木) 21:00:43.02 ID:7txpP8Kpi
ディスク障害でも起きてデータぶっ飛んだのかもな
いまだにバイナリ版が落とせなかったりするし
534名無しさん@お腹いっぱい。:2012/07/26(木) 23:03:35.13 ID:02uUNlUv0
サーバーが悪意ある攻撃を受けたらしい
今のところ過去のバージョンはぶっ飛んでて手に入らなくなってる
535名無しさん@お腹いっぱい。:2012/07/26(木) 23:31:51.43 ID:ccLBf9sv0
まじか
536名無しさん@お腹いっぱい。:2012/07/27(金) 23:39:36.21 ID:Qzmr9xQu0
本家AHKを使ってます。
今、特定のアプリAがアクティブなときに、
別の特定のウィンドウが存在している場合、
F1を押すとTooltip A、別の特定のウィンドウが存在していないときにF1を押すとTooltip Bとなるようにしたいのですが

#ifwinactive ahk_class A
ifwinexist ahk_class A
F1::tooltip A
else
F1::tooltip B
return

これだとduplicateのエラーがでてしまいます。原因は何でしょうか?
537名無しさん@お腹いっぱい。:2012/07/27(金) 23:50:13.64 ID:Isawx6fb0
#ifwinactive ahk_class A
ifwinexist ahk_class A
F1::
tooltip A
else
tooltip B
return

こうか?
538名無しさん@お腹いっぱい。:2012/07/28(土) 00:20:30.01 ID:T6GqA+8W0
いやIfWinExistはF1::のあとでしょ
539名無しさん@お腹いっぱい。:2012/07/28(土) 00:43:52.30 ID:raXC0V7j0
■ 超初期のAHK版

F1::
 IfWinActive, XXX
 {
  IfWinExist, YYY
   Tooltip, A
  Else
   Tooltip, B
 }
 Else
  Send, {F1}
 Return

■ #IfWin〜版

#IfWinActive, XXX
F1::
 IfWinExist, YYY
  Tooltip, A
  Else
  Tooltip, B
 Return
#IfWinActive

■ AhkL版

#If WinActive("XXX") && WinExist("YYY")
F1::Tooltip, A
#If WinActive("XXX") && !WinExist("YYY")
F1::Tooltip, B
#If
540名無しさん@お腹いっぱい。:2012/07/28(土) 01:00:45.47 ID:MKYfvABA0
これはわかりやすい
541名無しさん@お腹いっぱい。:2012/07/28(土) 01:53:47.11 ID:gv3xYNLa0
回答ありがとうございました。
F1のあとにIf分岐を入れたらできました。

あともう一つ質問なんですが
ADOBE社のAfter EffrectsとPremiereのフローティングウィンドウのクラスが両方共
ahk_class DroverLord - Window Class
になってまして、クラスからだと区別が付けられないので質問したような分岐をつけたんですが
こういった場合、質問したような分岐を設ける以外にAfter EffectsとPremiereのフローティングウィンドウのアクティブ判定を別々にさせることなんて無理ですよね?

今使っているスクリプトはこんなかんじです。
#ifwinactive ahk_class DroverLord - Window Class
Xbutton1 & wheeldown::
ifwinexist ahk_group AfterEffects
send,{Pgup}
else
send,{Left}
return
542名無しさん@お腹いっぱい。:2012/07/28(土) 03:15:38.01 ID:zUPwF33t0
WinGetのProcessNameはどうかな
543名無しさん@お腹いっぱい。:2012/07/28(土) 10:43:17.52 ID:P2X2zuzB0
Lならahk_exe
少し前に出てた話題な気がするが
544名無しさん@お腹いっぱい。:2012/07/28(土) 22:01:59.19 ID:GJ1yDRNL0
>>539
わかりやすくていいね
545名無しさん@お腹いっぱい。:2012/07/28(土) 23:10:55.19 ID:gv3xYNLa0
>>542
それでやってみましたがうまくいきました。どうもです。
>>543
それも便利そうですね。Lが自力で使えるようになったら試してみます。
546名無しさん@お腹いっぱい。:2012/07/28(土) 23:24:20.53 ID:gv3xYNLa0
一応変更したスクリプト書いておきます。else if はただのelseでもいいんですけどわかりやすいんで。
どうもでした。

#ifwinactive ahk_class DroverLord - Window Class
Xbutton1 & wheeldown::
WinGet, AEAP_Floating, ProcessName, A

if (AEAP_Floating = "AfterFX.exe")
send,{Pgup}

else if (AEAP_Floating = "Adobe Premiere Pro.exe")
send,{Left}

return
547名無しさん@お腹いっぱい。:2012/07/29(日) 02:19:47.19 ID:3isWafeE0
TTBaseというソフトのプラグインのsnc.dllを使っていて
同梱のsample.cを参考につくったのですがどうにも動きません
教えてください
548名無しさん@お腹いっぱい。:2012/07/29(日) 02:53:14.84 ID:BhJGOYra0
テキスト中RegExMatch()でヒットした箇所を処理し、
それから続けてRegExMatch()でヒットした箇所を処理し、、、と
RegExMatch()を複数回繰り返しながら処理を進めていくことはできますか?
例を出すと↑のテキストで"Reg"にヒットしたら変数xを1ずつインクリメントする、というようなものです
549名無しさん@お腹いっぱい。:2012/07/29(日) 03:16:49.34 ID:DzrLFgos0
ie = %A_ProgramFiles%/Internet Explorer/iexplore.exe

Gui, Add, Edit, vValue x4 y8 w440 h24
Gui, Add, Button, Default x450 y8 w46 h24 , G O
Gui, Show, xCenter yCenter h39 w500

ButtonGO:
Gui,submit
test = %Value%
Run, %test%

入力フォームに入れた変数で起動するランチャを作ろうと思ったのですが、うまく行きません。
%ie%と入力してGOを押しても変数が展開せずそのまま"%ie%"を起動しようとします
(ゆくゆくはieと入力して起動するようにしたいのですが、ここでつまづきました)
Run, %A_ProgramFiles%/Internet Explorer/iexplore.exe
のようにするにはどうすればいいのでしょうか?
レベルの低い質問ですが、どうかよろしくお願いします
550名無しさん@お腹いっぱい。:2012/07/29(日) 05:11:40.06 ID:qmlyXt2j0
>>549
こんなかんじでいかが

ie = %A_ProgramFiles%/Internet Explorer/iexplore.exe

Gui, Add, Edit, vValue x4 y8 w440 h24
Gui, Add, Button, Default x450 y8 w46 h24 , G O
Gui, Show, xCenter yCenter h39 w500

ButtonGO:
Gui,submit
test = %Value%
StringReplace,test,test,`%,,All
Run, % %test%
551547:2012/07/29(日) 09:02:33.99 ID:3isWafeE0
スクリプトはこんな感じです

WinGet,hwnd,id,Snarl
VarSetCapacity(cd,(512+260+32+1)*4)
str:="/title=a /text=b /timeout=5 /icon= /soundfile="
InsertInteger(0x100,cd)
InsertInteger((StrLen(str)+1)*2,cd)

続く
552547:2012/07/29(日) 09:05:10.17 ID:3isWafeE0
InsertInteger(&str,cd)
SendMessage,0x4A,0,&cd,,ahk_id %hwnd%
Return

InsertInteger()はヘルプのDllCall()項に記載されてるもの
553名無しさん@お腹いっぱい。:2012/07/29(日) 10:56:42.37 ID:L0JnlvZQ0
strやVarSetCapacityで確保された領域は、他のプロセスからはアクセスできないので、
VirtualAllocExを使ってTTBase上にメモリを確保しないとダメよ
554名無しさん@お腹いっぱい。:2012/07/29(日) 12:11:53.58 ID:kd6Zl5qG0
呼び出し先DLLの機能をスレで聞くのはお門違いなんで、汎用的なことだけ

・ x64, x32の区別は付いているか?
  ポインタ引き渡すところで精度きにしているか?
  Ahk x 64 → Dll x32 とかしてないか?
・ 引き渡す文字はANSIかUnicodeか調べてあるのか?
・ 凄く昔の関数の Insert〜 つかうより NumPut/Get使うべきでないのか?
555名無しさん@お腹いっぱい。:2012/07/29(日) 14:14:08.98 ID:DzrLFgos0
>>550
StringReplaceを使えば変数を展開してくれるんですね
実際に使用する時は引数SearchTextも空でいけそうですね
本当にありがとうございました
556名無しさん@お腹いっぱい。:2012/07/29(日) 14:24:29.09 ID:DzrLFgos0
引数SearchTextは空にするとエラー出るのか
そのまま入れておきます
557名無しさん@お腹いっぱい。:2012/07/29(日) 14:48:09.24 ID:qmlyXt2j0
>>555
StringReplaceは「%」が邪魔なので外しただけですね
「%ie%」じゃなくて「ie」だけで起動できますよ
その場合StringReplaceは有ってもなくてもどちらでも
空でも動かすような構造にしてるなら、if文で分岐させたりしてみてください

if(test) {
ここに処理内容
}
558名無しさん@お腹いっぱい。:2012/07/29(日) 17:29:27.88 ID:NZ2+oILN0
ボタンに画像を表示させたいのですが
↓だと,カーソルを持って行ったときに画像が消えてしまいます。
ツールチップが出るか文字の他は透過で,画像はそのまま表示の方法を教えてください。
Gui, Add, Button, x150 y150 w64 h64 ghoge, Chrome
Gui, Add, Picture, x150 y150 w64 h64 , C:\Program Files\Google\Chrome\Application\chrome.exe
559名無しさん@お腹いっぱい。:2012/07/29(日) 18:26:35.70 ID:NZ2+oILN0
解決しました。
Gui, Add, Picture, x150 y150 w64 h64 ghoge, C:\Program Files\Google\Chrome\Application\chrome.exe
Gui, Add, Text , x150 y150 w64 h64 BackgroundTrans, Chrome
560名無しさん@お腹いっぱい。:2012/07/30(月) 15:10:14.05 ID:TVLx1wNt0
簡易的なマウスジェスチャを作りたい関係でソース改変で作っているんですが↓の奴で
http://d.hatena.ne.jp/ka8823ge/20060219

二つ分からないんですが
{
mg_active=1
で{が閉じられていないってどういう理由でしょうか?
MouseClick,R,,,,,U 
の,,,,って部分って何を意味しているんでしょう??

どうも{のせいで書き足すと構文エラー出す気がしているので理由と意図が分かれば何とか出来そうだとは思うので。。。
561名無しさん@お腹いっぱい。:2012/07/30(月) 16:15:07.70 ID:tubz5g9S0
>>560
106行目の}で閉じてます。
MouseClick,R,,,,,D の意味は
ttps://sites.google.com/site/autohotkeyjp/reference/commands/MouseClick
マウスジェスチャならすでにあるmousegesture.ahkやmousegestureL.ahk
を使う手もあります。
562名無しさん@お腹いっぱい。:2012/07/30(月) 20:30:53.86 ID:TVLx1wNt0
4〜106でひとまとまりだったって事ですか。なるほど。

マウスジェスチャーではあるんですがキーボードとのコンビネーションジェスチャーに改変しているので
マウスのみだとちょっと違うのと機能足して作っている関係でジェスチャー機能だけシンプルな奴が欲しかった関係で
これを改変しています。
普通はマウスのみの方が操作が軽いんでしょうけどツールでショートカット使う状態での使用設計なので
キーボード乗っ取る方が負担少ないんで・・・
mousegesture.ahkとかからソース抜き出そうとしたんですが面倒だったというだけでも有りますが・・・。。。

,,,,,って単にオプション空欄って事ですかね?
もうちょっと色々試してみます。
563名無しさん@お腹いっぱい。:2012/07/30(月) 21:09:32.87 ID:CMyqfH/n0
したらこんなのは?

簡易マウスジェスチャ関数
https://sites.google.com/site/agkh6mze/scripts#TOC--
564名無しさん@お腹いっぱい。:2012/07/30(月) 22:03:29.69 ID:M2lGMJ520
>>562
MouseGesture.ahkなら設定の「新規ボタン定義」でキーボードのキーを追加することは出来るよ
L版は使ったことがないから出来るかどうかわからんけど
565名無しさん@お腹いっぱい。:2012/08/01(水) 23:06:08.53 ID:z9QZXl7G0
アクティブウィンドウをキャプチャしたいんですが
Send, ^{PrintScreen}
Send, {Ctrl Down}{PrintScreen}{Ctrol Up}

いずれもモニタ全体のキャプチャしかしてくれません。
どのようにしたらいいんでしょうか?
566名無しさん@お腹いっぱい。:2012/08/01(水) 23:14:04.07 ID:ZPIK2PMD0
CtrlじゃなくてAltじゃね?
567名無しさん@お腹いっぱい。:2012/08/01(水) 23:14:37.32 ID:X9icKZ1t0
CtrlじゃなくてAltじゃなかったけ?
568名無しさん@お腹いっぱい。:2012/08/01(水) 23:18:19.21 ID:z9QZXl7G0
>>566-567
有難うございます
これは恥ずかしい
仰るとおりSend, !{PrintScreen}で動きました

569名無しさん@お腹いっぱい。:2012/08/01(水) 23:46:19.25 ID:asgV4z1k0
>>566>>567
なんかすげぇ
570名無しさん@お腹いっぱい。:2012/08/02(木) 00:31:24.61 ID:ezcCeaJS0
AHKerにはよくあること
571名無しさん@お腹いっぱい。:2012/08/02(木) 15:49:04.69 ID:/HWYw/5p0
「変数が空の場合」というのを表現するには
If (Var == "") でいいのかな
一応動いたんですがもっとちゃんとした表現があるのかなと思って・・・
572名無しさん@お腹いっぱい。:2012/08/02(木) 16:05:56.48 ID:2p52/DVE0
あるウィンドウをマウス操作を一切受け付けないようにすることはできますか?
"PlayedTopWindow."というソフトにはその機能があるんですが、
ちょっと取り回しが悪いのでできたらahk内の機能のみで実行したいんです
573名無しさん@お腹いっぱい。:2012/08/02(木) 18:15:03.43 ID:2p52/DVE0
もう1つ

WinGetTextでクラス名を指定する方法はありますか?
音楽再生ソフトの再生中の曲の項目だけ抜き出してツールチップで表示したいのですが
574名無しさん@お腹いっぱい。:2012/08/02(木) 18:33:37.09 ID:LRFXrvMa0
if Var =
でも動くかも
575名無しさん@お腹いっぱい。:2012/08/02(木) 23:23:33.57 ID:EA3rZw7wi
>>572
WinSet を熟読
>>573
ControlGetText を熟読
576名無しさん@お腹いっぱい。:2012/08/02(木) 23:47:54.17 ID:2p52/DVE0
>>575
一応読んだつもりだったんですが。

操作を一切受け付けないのではなく、マウス操作を受け付けない方法です
ちなみに例に上げたソフトでは、前面にマウス操作を受付ないウィンドウがあった場合
その下のウィンドウをマウス操作できます。マウスの透過?

controlsendeのようにwintitleの他にclassを指定したいんです

質問の意図が伝わっていて尚載っていたならすみません
577575:2012/08/03(金) 00:39:59.11 ID:o/jf6lFP0
>>576 ほれ

Run, notepad.exe,,,pid
WinWait, ahk_class Notepad ahk_pid %pid%
WinSet, TopMost
WinSet, ExStyle, +0x00080020
578名無しさん@お腹いっぱい。:2012/08/03(金) 02:14:12.51 ID:z5KMN/jx0
>>572
アクティブウィンドウでCtrl+q押して対象ウィンドウを指定

^q::
WinGet, Wnd, ID, A
Return
#If (Mouse() = Wnd)
RButton::
LButton::
Mbutton::
XButton1::
XButton2::
Return
#If
Mouse() {
CoordMode, Mouse, Screen
MouseGetPos, , , hwnd
Return hwnd
}
579名無しさん@お腹いっぱい。:2012/08/03(金) 06:08:35.40 ID:njTmGH5X0
やっぱり空を表現するのって""でいいのかな
よくわからず慣習的にやってるけど
580576:2012/08/03(金) 09:56:31.39 ID:eqHNgnf20
>>577
ありがとうございます
望んでいた動作になりました
しかしウィンドウスタイルも見ていたのですが、探し方が足りなかったのかな
0x00080020で検索してもかからないし……

>>578
試しみましたが、後半部分がどういうことなんだろ
マウスカーソルがどこにもない時(?)スクリーン上での絶対座標のウィンドウハンドルを取得して
Return hwnd……すみません。ちょっと理解できませんでしたが、ありがとうございました

知識が足りない、探し方が粗いみたいなので自分でも試行錯誤してみますが、
よろしかったら引き続きウィンドウとそのウィンドウの中のClassNNを指定してテキストを抜き出す方法をお願いします
581名無しさん@お腹いっぱい。:2012/08/03(金) 09:58:44.32 ID:1Uc7UOS90
画像表示したいんですが
SplashImage, C:\tool\JPN.BMP,B,,,tiptitle1
こいつだとは思うんですけど直指定では無くスクリプトのルートか以下に入れるって表記的にどうするんでしょう?
別口の方法が有るならそれはそれで知りたい所です。

後、後々の可能性として知りたい事なんですけどこの画像に対してボタン反応って付けられる物ですか?
(ボタンランチャーみたいな事ですね)
582580:2012/08/03(金) 11:29:19.24 ID:eqHNgnf20
^q::
if toggle_state = 1
{
toggle_state = 2
SetTimer, Ttip, 1000
}
else
{
toggle_state = 1
SetTimer, Ttip, Off
ToolTip,
}
return

Ttip:
WinGetText, musicnumber, ahk_class iTunes
CoordMode, ToolTip, Screen
ToolTip, %musicnumber%, 1000, 0
return


とりあえずこんな感じで1秒毎にテキスト拾ってきて画面右上にツールチップで再描画するようにしているんですが
これだとメニューバーの中身からボタンからツールチップから何から何まで拾ってきて画面が埋まっちゃうんですよね
ClassNN:Static11、Static12、Static15にそれぞれ残り時間、経過時間、曲名があるのでそれだけを抜き出したいんです
583名無しさん@お腹いっぱい。:2012/08/03(金) 12:45:30.98 ID:xi2j0zmV0
>>579
動けば気にする必要ないと思うけど、なんとなく文字数少ない方がいいってことなら
If !Var
MsgBox, 何も入ってないよ
とか

>>581
ttps://sites.google.com/site/autohotkeyjp/reference/Variables#ScriptDir
%A_ScriptDir%\JPN.BMP
みたいな感じ

ttps://sites.google.com/site/autohotkeyjp/reference/commands/Gui_Add_Picture
Gでサブルーチンラベル名を指定する

>>582
>>575がControlGetTextを教えてくれてるんだからそっち使おうよ
584名無しさん@お腹いっぱい。:2012/08/03(金) 12:49:01.40 ID:1Uc7UOS90
SplashImageってwinset使って透明付けた後に半透明処理とか出来ないんですか?
多分出来るとは踏んでるのですが半透明かけると透明切れるのですが何か方法ってありますか?
585580:2012/08/03(金) 14:00:32.68 ID:eqHNgnf20
>>583
すみません。WinGetTextと思い込んでたので指摘に気付きませんでした

>>575
ありがとうございました
586名無しさん@お腹いっぱい。:2012/08/03(金) 15:03:58.15 ID:1Uc7UOS90
>>583
ああ・・・あれそのまま記入すると良いんですか成る程
guiコマンド使うのか・・・頑張って気長に組みます^^;;

色々できますなぁ・・コレ。
587名無しさん@お腹いっぱい。:2012/08/03(金) 18:03:39.34 ID:bVRcpHk/0
なんて優しいスレッド
588名無しさん@お腹いっぱい。:2012/08/03(金) 18:05:42.47 ID:gJElowHo0
最近みんな優しいね
ほかのスレに比べてここは見てるだけでも楽園だ、心が洗われるよ
589名無しさん@お腹いっぱい。:2012/08/03(金) 20:31:05.10 ID:q2cNd8foi
AHK便利ですよね。
これがなかったらWindowsなんか捨ててやる
590名無しさん@お腹いっぱい。:2012/08/03(金) 21:08:43.35 ID:DTfNYWKG0
> If !Var

これだと、Varに0が入ってても通るから注意
591名無しさん@お腹いっぱい。:2012/08/03(金) 21:09:41.48 ID:kyjYWZ6B0
ウィザード級プログラマの私もこのスレには助けられています
592名無しさん@お腹いっぱい。:2012/08/03(金) 21:29:04.03 ID:1Uc7UOS90
多分探していたのこっちだった・・・%A_ScriptDir%
これだと多分スクリプトの位置に追従すると思うので。
593名無しさん@お腹いっぱい。:2012/08/03(金) 21:53:43.60 ID:BA4zM99m0
そう回答されてるように思うんだが
594名無しさん@お腹いっぱい。:2012/08/04(土) 00:25:56.25 ID:9F4nz14d0
は・・・本当だ・。。
何いってんだ俺。。。申し訳ない。。。
595名無しさん@お腹いっぱい。:2012/08/04(土) 12:31:20.20 ID:fjTpl9jN0
何かで見た事有る気がするんですけど

カナキーって正常動作しないぽいんですか?
自前改変ソースなんで絶対正しいとは思わないんですが
他のキーだと動作するソースキーマップだけ変えてみると多分誤動作しているぽい

多分キーダウンしたままの状態?
まぁ今は使わなければいいだけなので興味本位の方が大きい疑問です。
596名無しさん@お腹いっぱい。:2012/08/04(土) 14:02:09.70 ID:Uf0KPqKs0
そんなバカな、と思ってやってみたら確かに取れないわ
無変換/変換はupキー取れるけど、半/全とカナ/かな キーはダメだわ
XP 32bit AHK無印 1.0.48.05
597名無しさん@お腹いっぱい。:2012/08/04(土) 14:15:27.41 ID:SAz02Ug40
Up取れないのはどの環境でも共通
といってもそれだけだから大抵は大した問題にならない
598名無しさん@お腹いっぱい。:2012/08/04(土) 15:35:04.41 ID:i+sURm2g0
「どこか」も何も、毎スレのテンプレに載ってるという...
599名無しさん@お腹いっぱい。:2012/08/04(土) 16:09:35.36 ID:Uf0KPqKs0
あー、半/全 や かなキーもLock系分類なのか
600名無しさん@お腹いっぱい。:2012/08/04(土) 18:50:56.58 ID:fjTpl9jN0
>>597
やっぱまんまそう言う事だったんですか。納得。

別口の話の質問なんですが
(今はguiでbmp展開したいのですがやり方が分からないから取り敢えずSPLASH使っている)

ahkによってSPLASHを開いて(bmp)その開いた物を他のアプリが有る時だけ開いて最小化したら一緒に最小化するような事ってどうやればいいんでしょう?
例えば電卓が有る時だけ画面に表示させるような感じです。
最小化で画面からは消えるウィンドウ化で又出現
601名無しさん@お腹いっぱい。:2012/08/04(土) 19:03:21.84 ID:8p8/hUsD0
タイマーで電卓の状態監視して、最小化してたらSPLASHウィンドウに最小化命令
上級者向けにイベントフックでやるやり方はスレ内検索
602名無しさん@お腹いっぱい。:2012/08/04(土) 20:40:48.87 ID:fjTpl9jN0
成る程
試してみます。
603名無しさん@お腹いっぱい。:2012/08/04(土) 23:40:59.01 ID:mjGGOafgI
似たような動作を何百回も繰り返すにはどうしたら楽ですか?
ブラウザで、とあるURLを開かせ、ページ内のボタンを押させ、今度はそれとは別のURLを開かせ・・・
という動作を250回ぐらい繰り返させたいのですが、
全ての動作をiniに書きまくる以外にそうさせる方法はないですかね?
32bit xp, autohotkey v1.0.48.05です
604名無しさん@お腹いっぱい。:2012/08/05(日) 03:54:47.50 ID:tR3HzIH/0
処理内容がある程度固定なら、データクラスとその処理関数作って、それを配列にするとか?リスト処理的な
605604:2012/08/05(日) 03:56:08.75 ID:tR3HzIH/0
データクラス → データ配列 (Lでないなら)
606名無しさん@お腹いっぱい。:2012/08/05(日) 08:05:33.86 ID:Fn3jcVhS0
>>603
/*
その手のツールを作るということは、
本人の意図はどうであれ、DoS攻撃ツールを作っているということになる。
*/

似たようなってのをパターン化して、パターン内違いを変数化すればいいだけ
250回あって250パターンになるか、50パターンになるかは腕しだい
(正規化すりゃいいだけだけど...)
607名無しさん@お腹いっぱい。:2012/08/05(日) 20:02:47.94 ID:Fn3jcVhS0
1.1.08.01 - August 3, 2012

Debugger: Fixed max_depth being either half the intended limit or unlimited.
608名無しさん@お腹いっぱい。:2012/08/06(月) 04:39:34.68 ID:dJ70NaWJ0
>>604-606
処理内容は全く同じでURLが別々という感じです。
仰られている内容について全然知識がないのでまずそれについて調べてみます。
どうもありがとうございました!
609名無しさん@お腹いっぱい。:2012/08/06(月) 11:21:08.74 ID:EsLdN4p20
250回も同じ事するのはサイト管理者側からすれば迷惑でしかないはずだけど
というか250回も同じ事をしたいとかいうその思考から直したほうがいいのでは
別の対処方があるとしか思えない
610名無しさん@お腹いっぱい。:2012/08/06(月) 12:25:16.41 ID:57OA+SF60
皆厳しいね。たった250回じゃないの。そんなにやかましく言うような事でもないと思うんだが
611名無しさん@お腹いっぱい。:2012/08/06(月) 12:28:06.13 ID:RzPKINuS0
というかその250回が同じサイトと誰か言ったか
612名無しさん@お腹いっぱい。:2012/08/06(月) 13:42:41.26 ID:I4IxHadZ0
思慮が足りてなさそうな感じだったから釘さしてるだけでしょ
悪意のない人間の迷惑行為ってたちが悪いし

デリケートに反応されるような内容だって自覚がある人間なら
質問の仕方ももっと慎重になってるはず、疚しい目的じゃないなら尚更
613名無しさん@お腹いっぱい。:2012/08/06(月) 13:51:12.01 ID:L25VpZU10
でもまぁ不確定因子がいたほうがかえって免疫力がつくと言いますし
614名無しさん@お腹いっぱい。:2012/08/06(月) 13:54:15.83 ID:vXJOIdEo0
ブラウザの自動化はuwscの方がいいんじゃねぇの?
615名無しさん@お腹いっぱい。:2012/08/06(月) 14:00:53.12 ID:D7VE53Bk0
webページだとかボタンだとかならiMacros楽だよ
それ自体は制御構文持たないから、なにかプログラミング言語を使えないと駄目だけど
AHKでやるこたないだろとは思う
616名無しさん@お腹いっぱい。:2012/08/06(月) 18:28:10.71 ID:/937uhMii
ie オブジェクト操作するならahkでも何でも変わらんように思えるけど

まぁ、個人でデータぶっこ抜く程度ならいいけど、配布はするなよ
サーバ攻撃ツール配布したって訴えられる可能性が無いとは言えんので
617名無しさん@お腹いっぱい。:2012/08/07(火) 14:21:27.35 ID:kP8z+Ixg0
リザイズ不可能なウィンドウをリサイズ可能にすることは出来るでしょうか?
618名無しさん@お腹いっぱい。:2012/08/07(火) 14:41:54.99 ID:/koLg3hO0
ウィンドウシェードでも作ってる?
可能な場合もあればアプリケーション側でなにかやってる場合
リージョンも使えない場合があるから
どっちとも言えない

少なくとも通常は大きさ変えられないダイアログなんかも
リサイズはできている
619名無しさん@お腹いっぱい。:2012/08/07(火) 23:07:43.42 ID:XJO7bJik0
可能ってことだからMouseでD&Dしてリサイズ出来るようにってことじゃない
全部が全部じゃないけどウィンドウスタイルいじれば出来ると思う
620名無しさん@お腹いっぱい。:2012/08/07(火) 23:40:30.06 ID:vowsVijv0
http://blog.mogya.com/2011/07/capslockctrl.html
autohotkeyだけでcapslockをctrlにするやり方が書いてある
621名無しさん@お腹いっぱい。:2012/08/07(火) 23:58:15.37 ID:+Kv5OtA30
んなあほな
と思いながら見たらやっぱり嘘だった
そのブログの人もそれを乗せるあなたも、人に言う前にまず自分でよく確認しようね
622名無しさん@お腹いっぱい。:2012/08/08(水) 00:14:13.18 ID:ey9wceoS0
>>617
WinMoveでWidthとHeight指定すればいいよ

#Up::  Resize(0,-50)
#down:: Resize(0, 50)
#Left:: Resize(-50,0)
#right::Resize( 50,0)

Resize(W,H) {
  WinGet,work,MinMax,A
  IfNotEqual work,0, return
  WinGetPos,x,y,width,height,A
  WinMove,A,,,,% width+W,% height+H
}
623名無しさん@お腹いっぱい。:2012/08/08(水) 00:21:22.84 ID:OAFjsekb0
>>621
うちの環境では動作するけどね。たぶん環境依存なんだろう
624名無しさん@お腹いっぱい。:2012/08/08(水) 00:28:02.39 ID:j05HJQKu0
そういうのはレジストリでやるもんだと思ってた
625名無しさん@お腹いっぱい。:2012/08/08(水) 00:28:49.65 ID:E5ZjMOF50
>>623
うそーまじでか
散々言われているようにLock系のキーはUpを取得できないはずだけど
Upを取得できないのは物理キーボードでなくOS側の問題なのだから
正直そこで環境の違いがあるとは思えないんだけどなあ
まあうまくいったならうそつけーと言っても仕方ないし良かったねという話だけど
626名無しさん@お腹いっぱい。:2012/08/08(水) 00:41:44.42 ID:KdUWsHRi0
仮に出来る環境が有ったとしても
大多数がngなら出来てよかったねって位かと。。。。

まぁそれはそれとして
ウィンドウの通常状態と最小化状態ってどうやって調べるんだろう。
627名無しさん@お腹いっぱい。:2012/08/08(水) 00:56:48.40 ID:OAFjsekb0
>>625
キーヒストリを眺めてみたら、CapsLockの場合は押し下げ状態(d)のみ取得できるけど、リマップでCtrlを割り当てると、Up/Down両方ともに取得出来てるね
628名無しさん@お腹いっぱい。:2012/08/08(水) 00:58:38.19 ID:KdUWsHRi0
WinWaitActive系使えばいいのかな・・・
あとで組んでみよう。

やっぱ色々出来て飽きないな
バッチとかvbsより日常を改善出来る分こっち方が面白い。
629名無しさん@お腹いっぱい。:2012/08/08(水) 01:11:36.39 ID:lH7UuypJ0
>>626
普通にwingetじゃなくて?
630名無しさん@お腹いっぱい。:2012/08/08(水) 12:08:02.21 ID:KdUWsHRi0
winget 調べたらMinMaxて有りますね応用します〜。

settimerとかで監視を何とか使えるようにはなったんですが
例えばですがsend,2送るコマンド入れ込んだとして

+時間与えると 時間/回与えますけど-時間だと一回

プロセスIDで同種を種類判別した場合だと同アプリ(複数起動出来るカルクとか)
だと-時間でIDごとに一回に出来ますが
同IDを最小/最大化化等した場合で最大化した時毎回timer/1回出すようなのってどんなイメージで作ればいいんですかね。


簡単に書けば
カルク監視してを最小化してアクティブにするたびに「2」を送り込むって事ですね。


631名無しさん@お腹いっぱい。:2012/08/08(水) 13:39:10.35 ID:C6MbXRqf0
日本語入力状態がなんであれ、半角の英数字を入力したいのですが、
全角半角の状態を判断ってできますか?

クリップボードを汚したくないので、クリップボード経由は考えていません。
632名無しさん@お腹いっぱい。:2012/08/08(水) 16:14:02.20 ID:KdUWsHRi0
autohotkeyじゃないけどgoogle imeの裏機能使えばいいよ・・・

多分goolgeimeの内部仕様が実際打鍵されたキーを格納して使うみたい形取っているから
候補の一部にダイレクトに打鍵されたキーも候補に有ると思うんだよね
たまたまそのダイレクトに打鍵されたキー変換する設定見つけたから使っているよ。

半角のつもりで全角打ってしまった時とか
全角の中で半角英文混ぜる時継ぎ目無く打てるから便利かな
同時に google GOOGLEみたいに変換かませば全角になるし
便利だと思うんだけど誰も知らないぽいんだよね・・・ベータの頃から有る機能なんだけど
ずっと無くならない所を見ると仕様ぽいし

googleimeでしか出来ないようなので結果的に離れられなくなってしまった。
633名無しさん@お腹いっぱい。:2012/08/08(水) 17:33:59.19 ID:T7Zw8/5K0
acc.ahkとcom.ahkってのがあると色々便利なことが出来そうなんだけど、
ぐぐってもみんな 404 Not Found で見つからない。
ミラーURLを知ってる or 手元に持ってる人が居たら教えてもらえませんか?
634名無しさん@お腹いっぱい。:2012/08/08(水) 17:41:09.42 ID:ey9wceoS0
ID:KdUWsHRi0
落ち着けよ、何言ってんだかさっぱりわからんわ
変換途中でのカナかな全半切り替えなんて大抵のIMEはファンクションキーで切り替えられるだろ
ていうか相手の使用環境もわからん状態で固定IME前提での説明すな

>>631
IME.ahkでIMEのON/OFF状態チェックとセットが可能
http://www6.atwiki.jp/_pub/eamat/MyScript/IME20091203.zip
635名無しさん@お腹いっぱい。:2012/08/08(水) 18:31:21.06 ID:tJA6Ss3H0
まあ確かに何言ってんのか分かんない
とはいえGoogle日本語入力は十分メジャーIMEだしこういう方法もあるよという話するのはいいと思うよ
ただやっぱり何を言いたいのかは俺も読み取れない
636名無しさん@お腹いっぱい。:2012/08/08(水) 18:41:17.69 ID:j05HJQKu0
レスの調子を見るに教える側に回れる人じゃないと思う
637名無しさん@お腹いっぱい。:2012/08/08(水) 19:27:45.57 ID:KdUWsHRi0
落ち着けよな別にこれを使えって訳ではなくそう言う方法も有るってだけだ
これはかなり不思議な仕様だから実際どういう物か見ないと意味は多分分からないとは思うけど
と言うか素で直ぐ分かる人間なんて居ないのは分かるが。

googleimeだと変換前の状態であるなら全角で表示している状態と違う
打鍵された半角に変換出来る方法が標準機能で有るって事だよ。
googleime使える環境なら別にスクリプト組む必要も無いかも知れないだけって話

まぁ別に教える側じゃないそうだから別にそれ以上なんも言わないけど。


638名無しさん@お腹いっぱい。:2012/08/08(水) 19:29:23.32 ID:GxiDLCAg0
モスバーガーの食い方か
639名無しさん@お腹いっぱい。:2012/08/08(水) 19:37:43.69 ID:SGqV14Nd0
それって、MS-IMEでファンクションキーで変換するのとなんか違うのか?
640名無しさん@お腹いっぱい。:2012/08/08(水) 19:42:30.85 ID:j05HJQKu0
キーボードショートカットでも出来るやつのことでは?

ていうか具体的な操作法書いてないから何の話してるのか分からん
641名無しさん@お腹いっぱい。:2012/08/08(水) 22:16:30.94 ID:tJA6Ss3H0
>>637
具体的に、入力中にこのキーを押したりするとこうなる、というように流れで言うと
みんなにとって分かりやすいと思うよ
642名無しさん@お腹いっぱい。:2012/08/08(水) 22:24:24.05 ID:ey9wceoS0
スペース押したときの変換候補内に全半英数もあるよっていいたいんかと解釈したがちがうんかね
だとしたらimeのon/off状態も不明な前提で、変換候補の何番目にあるのかもわからん半角英数を
どうやってahkで選ぶつもりなのか皆目わからん

トグルじゃないIME Offのショートカット設定しておいて事前にsendで投げるとか、F9だかF10だかを
送っとくって話しならまだわかるが
643名無しさん@お腹いっぱい。:2012/08/08(水) 23:20:54.16 ID:AVUZQl9W0
自分なら、imeでテンキー経由の数値を半角で表示するように設定しておいて、
numpad1とかを発行するようにするな
644名無しさん@お腹いっぱい。:2012/08/08(水) 23:27:21.36 ID:435T6XLBi
みんな >>630の意味がわからないんだぜ、きっと。

ime on/off のタイプミスなら againtyper でも使うといいよ

on 時に半角入力にしたいなら、なにかキー押す手間考えてもF9, F10 使う方が妥当かな

自前で作るなら結構面倒で、imm や tsf の状態監視したり
現窓やキャレットの有無、無操作時間とかも考慮しないと、
使い物にならないと思う。
それには標準コマンドじゃ到底できなくて、dllと構造体ゴリゴリいじって、
何語で書いてるのか分からんなぁ、って感じになるはず。
645名無しさん@お腹いっぱい。:2012/08/08(水) 23:30:04.44 ID:+e7bM0Du0
mousegestureLでジェスチャの割り当てRB_LB__RB__ってできないんですね。
なぜなのか教えてください。詳しい人。
646名無しさん@お腹いっぱい。:2012/08/09(木) 00:08:32.92 ID:EGh9E9/g0
>>644
つか、質問者(>631)の意図としてはAHKで半角英数任意文字列を
自動で投げたいってことだろうし
AHK使わなくてもGoogleIMEなら手動でも打ち直ししなくて平気だよ!
ってレスは明らかに的が外れてると思う
647名無しさん@お腹いっぱい。:2012/08/09(木) 00:56:34.45 ID:5Jhecov10
ちょっと前に居た彼のことを思い出してしまうな
648名無しさん@お腹いっぱい。:2012/08/09(木) 01:21:38.70 ID:5iJqYEHp0
まあIME.ahkでFA
数少ない日本語で分かるスクリプトだし
649名無しさん@お腹いっぱい。:2012/08/09(木) 09:05:27.58 ID:ebHjJVA90
>>645 RB_LB__RB__は出来ないがRB_LB__X1B__ならできます。
ただ,RB_LB__の動作の後にRB_LB__X1B__が実行される形になります。
本来の動作が優先される仕様になってせいだと思います。
条件式を駆使して作れるかもしれないけれど恐らく使いにくいのでは。
650名無しさん@お腹いっぱい。:2012/08/09(木) 09:38:38.15 ID:bJZ6m/vu0
>>649さん
おーありがとうございます。
>RB_LB__の動作の後にRB_LB__X1B__が実行される形
RB_LB__になにも登録して無ければ問題ないですよね

>本来の動作が優先される仕様
これはRB_LB__RB__ができない理由ですか?本来の動作ってなんなんでしょ。。
651名無しさん@お腹いっぱい。:2012/08/09(木) 09:53:06.79 ID:ebHjJVA90
RB__はコンテキストメニュー表示です。
LB__についてはマウス操作が出来なくなる恐れがあるのでこの辺は
あまりお勧めしません。
652名無しさん@お腹いっぱい。:2012/08/09(木) 10:09:55.25 ID:gOrnUuS20
>>632
ちなみにどうやるのかな?
653名無しさん@お腹いっぱい。:2012/08/09(木) 10:31:21.57 ID:bJZ6m/vu0
>>651
単一押し下げは使おうと思ってませんよー
RB__のコンテキストだってmousegestureLでトリガ与えれば問題ないですよね
たとえばLB_RB__は機能するのに。RB_LB__RB__はなんで機能しないのかの理由がよくわかりません。。
654名無しさん@お腹いっぱい。:2012/08/09(木) 11:37:03.74 ID:ebHjJVA90
>>653
RB_LB__RB__とすると実際は
RB_LB_★_★_RB__
★のところでキーが2つ離され
MG_Timer(ms) やMG_Wait(ms=0) が
そこを待機させるコマンドになっていないということでは。
655名無しさん@お腹いっぱい。:2012/08/09(木) 12:12:33.38 ID:bJZ6m/vu0
うーん
リアルナビで動作見ててRB_LB__までは行くんだけどその後右クリックしても反応してくれないって感じなんですよー
途中で両方離さないから待機は必要ないと思います。
RB押し下げLB押し下げRB押し上げまではちゃんと動くんだけど、その後RB押し下げが反応しない。。
656名無しさん@お腹いっぱい。:2012/08/09(木) 13:44:56.81 ID:ebHjJVA90
調整していないので動くというだけですが
認識が打ち切られるまでの待ち時間2000ms
ダブルジェスチャの受付許容時間2000ms
[RB_LB__]
G=RB_LB__
Default=mg_wait(1500)
[RB_LB___]
G=RB_LB___
Default=mg_wait(1500)
[RB_LB___RB__]
G=RB_LB___RB__
Default=msgbox,,,★★★,3
あと,X1B_,X2B_に関しては単独で色々使えます。
ttp://www.autohotkey.com/community/viewtopic.php?f=13&t=83057&sid=9f2cd4c3ea942b1cdb3640a95c22962f&start=60#p557352
657名無しさん@お腹いっぱい。:2012/08/09(木) 23:01:16.80 ID:zFYgWTDt0
>>645
基本的にMouseGestureLは最初に押し下げたキー(今回はRB)が離された時点でジェスチャ認識を打ち切る仕様だから。
RBが離された時点でジェスチャの認識が終わり、ジェスチャとしては「RB_LB__」までしか認識しない。
この時、RB_LB__に該当するジェスチャ設定がないときは右クリックを再現する。

>>649の言うとおり、タイマーやらなんやら使えば対応できると思うけど面倒くさい上に使いにくくなると思う。
658名無しさん@お腹いっぱい。:2012/08/09(木) 23:02:13.46 ID:zFYgWTDt0
つか、MouseGestureL.ahkの話題はスレ違い?
659名無しさん@お腹いっぱい。:2012/08/09(木) 23:14:15.29 ID:uD7OJsdO0
いや、ここでいいんじゃないか
AHKくくりで問題ないし、それまで分化してしまうとただひたすらここが過疎化してしまう
まあ公開されてるAHKスクリプトで、ある程度使ってる人いるのはこれくらいしかなさそうだけど
660名無しさん@お腹いっぱい。:2012/08/10(金) 00:08:04.74 ID:316EFVp50
>>657さん
645です。なるほどーと思って試してみましたが、
RB_LB__Lとやった時には
RB押してLB押して「RBのみ離して」左にスクロールするジェスチャで動作するみたいです。
これってRB離されてもジェスチャ認識されるってことですよね。。

しつこくってすみません。
661名無しさん@お腹いっぱい。:2012/08/10(金) 10:17:27.67 ID:yt2L5R+O0
右クリを押しながらカーソルで円を描いたら自作の関数呼びたいんですが
それを検出するコードってないですか?
必要としてるのはこの機能だけなんでフルセットなMouseGestureL.ahkは出来れば使わずに済ませたいです。
(すでに別のジェスチャツールを使っているので)
662名無しさん@お腹いっぱい。:2012/08/10(金) 10:42:19.55 ID:e7DkKktA0
くるくるスクロールが参考になるんでね?
あぷろだ跡地にまだある模様
http://lukewarm.s101.xrea.com/up/
663名無しさん@お腹いっぱい。:2012/08/10(金) 11:11:24.53 ID:8nUmrxxj0
40,42行目がくるくるを検知した時に実行してる内容だから
その変に気をつけて手を加えれば多分すぐできるよ
664名無しさん@お腹いっぱい。:2012/08/10(金) 20:18:36.06 ID:E64ljzb40
>>660
ほんとだ、上下左右へのドラッグは認識するけど、RBは認識しないね・・・

ウソ言った代わりじゃないけど、解決する方法を考えてみた。
ジェスチャ登録はRB_LB__にして、動作設定で最後のRB入力を待つようにしてみればどうかな。
「keywait,Rbutton,t1 d」でRBの入力を待ち、
ErrorLevelで判定して本来の動作設定、って感じで。
665名無しさん@お腹いっぱい。:2012/08/10(金) 21:48:04.15 ID:egXiEJMZ0
テンキーの「=」「(」「)」ってホットキーを割り当てることって出来ないのかな
=()をそのままホットキーラベルにしてもやっぱりできなかった
666名無しさん@お腹いっぱい。:2012/08/10(金) 22:28:57.01 ID:316EFVp50
>>664
そっかーありがとうございます。不思議ですねえ。コード見てみるしかないですかねw
wait系は個人的にあまり好きじゃないので他のジェスチャで代用します。
RB_LB__LB__のジェスチャがリズミカルで好きなんでRB_LB__RB__も登録したかった。。
667名無しさん@お腹いっぱい。:2012/08/11(土) 06:51:39.25 ID:cbJEgane0
>>665
keyhistory
668名無しさん@お腹いっぱい。:2012/08/11(土) 11:10:03.47 ID:Y0/E090t0
KeyHistory見てもよく分からないんだよね
NumLock→Alt+Numpad6→Alt+Numpad1→Numlock
てな感じ。もはや普通のキーじゃなかった
669名無しさん@お腹いっぱい。:2012/08/11(土) 12:45:46.30 ID:DLpujj1j0
バックグラウンドにあるアプリにキーイベントが送れません
例えば、Win+R でバックグラウンドにある Firefox に F5 を送信しようと、
以下のように書いてみましたが、F5(ページ再読み込み)は効きませんでした
ControlSend を MsgBox に変えるとメッセージが出るので実行はされてるようですが、
キーイベントを送るにはどうすればいいでしょうか?

#r::
 IfWinExist, ahk_class MozillaWindowClass
  ControlSend, , {F5}
 Return

上以外にも例えば以下のようなのも試してみましたがダメでした

WinGet, hwnd, ID, ahk_class MozillaWindowClass
ControlSend, , {F5}, ahk_id %hwnd%
670649:2012/08/11(土) 14:14:26.83 ID:zkAPXQNJ0
>>666
656のは設定項目の変更は必要なくmg_wait()も,
もう少し小さい値でも動くみたいです。
これも作りかけで,mg_wait()を使いますが
RB_LB__LB__の対のLB_RB__RB__です。
[RB__]
G=RB__
Default=Mg_wait(300)
[LB_RB__RB__]
G=RB__RB__
Default=if (GetKeyState("LButton", "P")) {【TAB】;LB_RB__RB__の時の動作 【TAB】msgbox,,,★★★,2【TAB】}else if !(MG_Executed>1){【TAB】Send,{RButton}【TAB】}
671名無しさん@お腹いっぱい。:2012/08/11(土) 15:51:17.81 ID:Y0/E090t0
>>669
IfWinExist, ahk_class MozillaWindowClass
  ControlSend, , {F5}
この記述でも、
WinGet, hwnd, ID, ahk_class MozillaWindowClass
ControlSend, , {F5}, ahk_id %hwnd%
この記述でも、書き方としては間違っていなく、本来は正しく動作するはずです(実際に動作確認もできた)
ということで、MozillaWindowsClassが他のウィンドウと被っている可能性はいかが?
例えばThunderbirdを利用していると、Thunderbirdでも全く同じウィンドウクラスが使われているため注意が必要
672名無しさん@お腹いっぱい。:2012/08/11(土) 18:47:50.23 ID:nCAcL9T50
Control系は動いたらラッキーって感じのコマンドだったような

1.ClassNN省略
2.ClassNNを指定
3.ahk_id %hwnd%の代わりに %Controlhwnd%を指定する

1<2<3 の順で成功率は上がる、ハンドル取得が面倒だけど3が一番確実
673名無しさん@お腹いっぱい。:2012/08/12(日) 07:10:54.91 ID:vI91cr7a0
>>672
AutoIT3 Window Spyを使えば ahk_idは分かるけど
Controlhwndはどうやって取得するの?
674名無しさん@お腹いっぱい。:2012/08/12(日) 10:40:14.04 ID:PvRnd6kZ0
>>671-672
ありがとうございます。
Thunderbird 等 Mozilla 系アプリは他に使ってないのですが、
再確認したところ、>>669 のままで動きました。
もしかしたら何か凡ミスをしていたのかもしれません。すみません。

しかし、>>669 と同様のスクリプトでも Leeyes だとうまく動きません
具体的には、フォルダモード(Ctrl+N)でフォルダを開いてる状態で、
そのフォルダに画像ファイルを移動しても、自動更新が無効だと反映されませんが、
これをバックグラウンドのまま、手動で反映させるために、以下のようにすると、

#r::
 IfWinExist, Leeyes -
  ControlSend, , {F5}
 Return

Leeyes がバックグランドだと、Win+R しても F5 が効かず、
Leeyes がフォアグラウンドだと、Win+R すると、F5 が効きます
ControlSend を WinMove, , , 10, 20, 380, 380 に変えると WinMove するので、
他のウィンドウに命令が行ってることもないと思います
675名無しさん@お腹いっぱい。:2012/08/12(日) 10:42:03.95 ID:PvRnd6kZ0
>>674
ちなみに、自動更新を有効にすればいいと思うかもしれませんが、
それだと移動したファイルが一覧の最後尾に追加され、自動ソートされないので、
AHKで他の操作と同時に F5 を呼び出したいと思ってます
676名無しさん@お腹いっぱい。:2012/08/12(日) 13:23:31.88 ID:hPX2pKyw0
フォアグラウンドじゃないと効かないアプリは割とある
対象を特定することで動く場合もあるが
アプリ側で非アクティブ時は無視するように作ってるとしたらどうにもならない気がする

>>673
MouseGetPosとかWinGetとか Dllcall()でハンドル取得API呼び出しとか
一手間ニ手間かける必要あり
面倒って書いたのはそういう意味
677名無しさん@お腹いっぱい。:2012/08/12(日) 13:29:45.78 ID:k7sHpJWV0
>>674
凡ミスが原因の可能性あり
Leeyesのウィンドウタイトルをよく確認してみるといいよ
Leeyes<space>-<space> (半角スペースを<space>と記述した)
ではなく、
Leeyes<space><space>-<space><space>
が正しいLeeyesのウィンドウタイトル
少なくともこちらの環境ではそれで問題なく動作した
678名無しさん@お腹いっぱい。:2012/08/12(日) 13:32:43.87 ID:caE3pX7c0
流れに乗って質問。
ControlSend,ahk_parent, {F5}, ahk_id %hwnd%
っていう記述をたまに見かけるんだけど、ahk_Parentなんてどっかに説明あったっけ?


>>673
流行らせるページより
>コントロールのウィンドウハンドルは、MouseGetPos、WinGet、ControlGetコマンドや、DllCall()関数による各種APIの呼び出しによって取得できる。

679名無しさん@お腹いっぱい。:2012/08/12(日) 13:37:10.92 ID:k7sHpJWV0
>>678
AHKLドキュメントに書いてあるよ
http://l.autohotkey.net/docs/commands/ControlSend.htm
680名無しさん@お腹いっぱい。:2012/08/12(日) 13:49:59.98 ID:caE3pX7c0
>>679
Lの方か。ありがとう!
681名無しさん@お腹いっぱい。:2012/08/12(日) 15:28:01.28 ID:7oFywhQz0
モディファイアキー(シフト類)+アルファベット+アルファベットなど
トリプルコンビネーションキーっていまでも使用できませんか?

過去質問したときに5行ぐらいのスクリプト書いていただいたんですが、
それを設定すると、それに含まれる二つのコンビネーションが潰れるので
結局わがままながら使用しなかったという記憶があるのですが。
682名無しさん@お腹いっぱい。:2012/08/12(日) 15:54:43.66 ID:D4ruI4EF0
>>680
Lじゃないほうの英語ヘルプにも書いてある
683名無しさん@お腹いっぱい。:2012/08/12(日) 16:25:21.00 ID:PvRnd6kZ0
>>677
確認し直しましたが、うちの Leeyes Ver 2.6.1 はスペース1個でした
実際、「Leeyes<space>-」で WinMove できてますし、
「Leeyes<space><space>-」だと WinMove できませんでした

>>676
> アプリ側で非アクティブ時は無視するように作ってるとしたら
この可能性も考えましたが、結果的には、
ControlSend, TAcvTreeView1, {F5}
とすることで、うまくいきました

>>673 に関連して、解決に至った過程をメモしておくと、
下のようにして、全コントロールに F5 を送信して、
TAcvTreeView1 に送ればいいことがわかりました

WinGet, cList, ControlList
Loop, Parse, cList, `n
{
 MsgBox, 4,, Control #%a_index% is "%A_LoopField%". Continue?
 IfMsgBox, No
  Break
 ControlSend, %A_LoopField%, {F5}
}
MsgBox, %cList%
684名無しさん@お腹いっぱい。:2012/08/12(日) 17:01:10.02 ID:k7sHpJWV0
>>683
なるほど確かに。WinMoveできていたんだったね。誤ったアドバイスをしてしまったすまない
どのControlを対象にしたほうがいいのかはこれまでも悩ましい問題だったから
そのチェック方法は様々な場面で使えて便利そうだ
685名無しさん@お腹いっぱい。:2012/08/13(月) 12:33:22.06 ID:gVs13cQx0
PC買い替えで64bit版AHK_Lに移行中なんだけど
秀丸上でIME_GET()の値が取れなくなっちゃった
DllCall("GetGUIThreadInfo") で値が取れなくなってるっぽい

ControlGetで取得したコントロールハンドル突っ込んだら一応解決したけど
64bit版でGUIThreadInfoを取得する方法はないのかしらん
686名無しさん@お腹いっぱい。:2012/08/13(月) 13:12:02.55 ID:M8RHQRqb0
lp〜はポインタ構造体だからx64だとポインタ変数の示す領域に8バイト確保されてないと
687名無しさん@お腹いっぱい。:2012/08/13(月) 13:44:32.50 ID:WdYXeTKa0
便乗して質問します
autohotkeyにしか触れたことがなくて
ポインタとかいまいちピンとこないのですが、
どういうものを読めばそのポインタを自在に使えるようになるでしょうか
688名無しさん@お腹いっぱい。:2012/08/13(月) 18:09:24.34 ID:P7QNSdO30
>>687
ポインタ自体はC言語勉強したらいいんだけど、API叩くとなるとWindowsプログラミングの作法的なものも知らないといけないから
真面目に勉強しだすと泥沼にハマるかもw
689名無しさん@お腹いっぱい。:2012/08/13(月) 21:46:15.44 ID:gmxmV8iP0
>>688
JAVAもC#も意図的にポインタ隠蔽してるんだし
もう変数の住所みたいな表面的な理解でいいような気がする
690名無しさん@お腹いっぱい。:2012/08/13(月) 23:38:22.77 ID:gVs13cQx0
>>686
d
HANDLE(4バイト) → Ptr(8バイト)になるってことか
明日から旅行なんで帰ってからじっくり取り込むわ
691名無しさん@お腹いっぱい。:2012/08/14(火) 07:59:05.36 ID:AZSrdq0j0
ポインタは int(32bit)と書いてあるテキトーなサイトもあるので注意
まぁ、32ビットの世界じゃ間違いじゃないんだけどx64だと大違いなんで

個人的偏見でいうと、hspとかvbの解説しているサイトで多い感じ
692名無しさん@お腹いっぱい。:2012/08/14(火) 13:30:41.78 ID:UVTxMy1z0
任意のタイトルバーが変わった時に、指定の文字の場合、そのウィンドウを全面表示させるスクリプトを考えています。

基本できているのですが、「任意のタイトルバーが変わった時」はタイマーをしかけています。

もっとクールな方法をといろいろ探して以下のサイトに出会いましたが、
タイトルバーが変わった時のイベントが分からなかったので断念しました。

なにかいい方法はないでしょうか?
693名無しさん@お腹いっぱい。:2012/08/14(火) 14:02:08.97 ID:FXbPdIzq0
監視をAutohotkey(SetTimer や Loop 等)でするか、
他で監視するかの違いだけなんじゃないの?
そこまで気にする必要はないんじゃないかと思うのはオレだけですか。
694名無しさん@お腹いっぱい。:2012/08/14(火) 14:03:21.43 ID:b4zK/Luh0
以下のサイトって?
695名無しさん@お腹いっぱい。:2012/08/14(火) 14:22:45.07 ID:UVTxMy1z0
696名無しさん@お腹いっぱい。:2012/08/14(火) 20:16:59.60 ID:NeOlPDaj0
hogeさんとこか
windowsのイベントフック呼び出してるだけだしタイトルバー変更通知とかはないんじゃないかね
あったとしても RegisterCallback()でゴニョゴニョするのはSetTimerよりよっぽど面倒だと思うよ

ぶっちゃけタイトルチェックなんてポーリングで十分だし、Coolなやり方とやらに
変にこだわってないでできる方法でやったらいいと思う
697名無しさん@お腹いっぱい。:2012/08/15(水) 17:03:06.88 ID:JC+bAskW0
WinGetText, Output
StringSplit, Var, Output, `r`n, %A_Space%

Var0が要素数ですが、要素数から2を減じた要素を指定したい場合は
どうすればいいのでしょうか?
例)Var0が20のとき、Var18を指定したい
698名無しさん@お腹いっぱい。:2012/08/15(水) 17:58:59.97 ID:uiouLGl40
temp=Var0
temp:=temp-2
msgbox, % Var%temp%
699名無しさん@お腹いっぱい。:2012/08/15(水) 21:39:48.80 ID:1FcGRQzP0
StringSplit も RegExMatch() の O オプションのように、(疑似ではない)配列で返してくんないもんかねぇ
分割した要素の分だけしか上書きしないんで気持ち悪い

str = あ|い|う|え|お
StringSplit, arr, str, |
MsgBox, %arr0%`n%arr5%

str = あ|い|う
StringSplit, arr, str, |
MsgBox, %arr0%`n%arr5%
700名無しさん@お腹いっぱい。:2012/08/15(水) 21:59:37.84 ID:JC+bAskW0
>>698
ありがとうございます<(_ _)>
701名無しさん@お腹いっぱい。:2012/08/18(土) 22:11:07.92 ID:CGVNT7rs0
メインキーボードに既にテンキーが存在して、それとは別にUSBテンキーのみにキーを割り当てることってできますか?
702名無しさん@お腹いっぱい。:2012/08/18(土) 22:19:46.64 ID:CGVNT7rs0
すまん自己解決できないのね
703名無しさん@お腹いっぱい。:2012/08/18(土) 22:31:14.52 ID:pTNAl4hN0
すでに言ってるように基本的にはできないけれど
NumLockオンオフで使い分ければ数字キーのみ別に割り当てられる
あとテンキーに割り当てたいだけならDresskeyが使いやすい(AHK製)
http://ahk.wktk.so/
704名無しさん@お腹いっぱい。:2012/08/19(日) 03:32:03.96 ID:b1FRRrNs0
どうやってもaltを組み合わせたsendが実行できないアプリがあるんですがなんとか動かす方法無いですかね?
Toon Boom Animateというアプリなんですが、これがどうやっても

Lwin::send {Alt}{Ctrl}

のキー操作をうけつけてくれないんです。
アプリ側でaltの処理が特殊な設定になってるらしくて、Toon Boom側が制御しているキーボードショートカットの変更ですら
デフォルトでaltを組み合わせて使うキーボードショートカットは変更できないという謎仕様です。
こういう変なアプリをAutohotkeyで制御したことがあるという人はいませんかね。
705名無しさん@お腹いっぱい。:2012/08/19(日) 11:08:57.26 ID:vgyb9gzy0
その何とかってソフトはまったくわからんが、

その書き方だと、

  Send, {Alt Down}{Alt Up}
  Send, {Ctrl Down}{Ctrl Up}

ってなるけど意図通りなんだろうか
706名無しさん@お腹いっぱい。:2012/08/19(日) 11:52:12.76 ID:ccjyqaz8P
すみません

loop
{

}
return

でループさせた場合、特定のキー押下でループ停止(blake?)する方法を教えて下さい
707名無しさん@お腹いっぱい。:2012/08/19(日) 12:10:50.71 ID:zRiZrP6r0
loop
{
  if (GetKeyState(特定のキー))
    Break
}
return
708名無しさん@お腹いっぱい。:2012/08/19(日) 12:11:17.75 ID:vgyb9gzy0
LoopX:=True
While(LoopX) {
 Tooltip, %A_Index%
 Sleep, 250
}

#If (LoopX)
Space::LoopX:=False
#If
709名無しさん@お腹いっぱい。:2012/08/19(日) 12:12:35.33 ID:vgyb9gzy0
>>707 だと GetKeyState 以外の処理に時間がかかる場合にキーを拾えない可能性がある
710名無しさん@お腹いっぱい。:2012/08/19(日) 12:17:04.76 ID:zRiZrP6r0
補足
前判定でいい場合は Loopよりwhile 使うほうがスマート

while GetKeyState("特定のキー")
{

}
return
711名無しさん@お腹いっぱい。:2012/08/19(日) 12:25:16.65 ID:zRiZrP6r0
おっとリロってなかった
タイミング重視だと708のほうがいいね

ただ人力手動キー押しだと最短でも300msくらい
また、キャンセル処理など意図的に止めたい場合は自然長押しか連打になるので
用途によっては可視性優先でも問題ない場合もある
その辺は使い分けで
712名無しさん@お腹いっぱい。:2012/08/19(日) 12:36:13.00 ID:ccjyqaz8P
ありがとうございます。
少し足りませんでした。

^z::
loop
{
send, a
sleep 100000
send, [Enter]
}
return

実際とは違いますが内容はこのような感じです。
これをスリープ中問わず指定したキー押下でスクリプトを停止させたいです。
713名無しさん@お腹いっぱい。:2012/08/19(日) 13:15:22.17 ID:zRiZrP6r0
Sleep中は時間立つまで戻ってこれないからその書き方で即時Abortは無理

sleep,100を1000回繰り返して都度Breakチェック
2重ループにするかタイマーで別スレッドにするかはお好みで

スリープ復帰後キャンセルで取りこぼしさえ防げればいいのなら>708方式で
Sleep直後の行にBreak判定を突っ込めばおk
714名無しさん@お腹いっぱい。:2012/08/19(日) 15:39:35.91 ID:5Fk7cV7f0
かつてのMouseGesture使わせてもらっているのですが
L(ANSI)にしたらやはりおかしな事に。
設定ウィンドウが崩れてしまいます
715名無しさん@お腹いっぱい。:2012/08/19(日) 15:42:47.00 ID:zVAkwFXv0
なんでANSIにしたの
716名無しさん@お腹いっぱい。:2012/08/19(日) 15:48:06.18 ID:5Fk7cV7f0
なんとなく互換性が高そうと思ってw
717名無しさん@お腹いっぱい。:2012/08/19(日) 21:35:24.68 ID:vgyb9gzy0
>>712
遅レスだがキー押下と同時にスリープやめるなら、以下のようにやれば二重ループは不要。
100秒間キー押下を待つったけど結局押されなかった(ErrorLevel := 1)になって再度ループ。

ErrorLevel := 1
While(ErrorLevel) {
 Tooltip, %A_Index%
 KeyWait, Space, D T100 ; 単位は秒
}
MsgBox, Abort!
718名無しさん@お腹いっぱい。:2012/08/19(日) 21:45:18.09 ID:3KDIq61+0
ErrorLevelに代入とかもうね
719名無しさん@お腹いっぱい。:2012/08/19(日) 23:37:28.95 ID:vgyb9gzy0
ん?変なことしてるかな?
突っ込みどころがあったら教えてくれ
720名無しさん@お腹いっぱい。:2012/08/20(月) 00:50:10.93 ID:saE3cduw0
>>705
書き方おかしかったですかね。
alt down、ctrl down と
alt up 、ctrl up
と分けて書いたらうまくいきました。どうもです。
721名無しさん@お腹いっぱい。:2012/08/20(月) 00:52:29.92 ID:LfIFsn2O0
本当にそのレベルだったのかよ!
722名無しさん@お腹いっぱい。:2012/08/20(月) 19:20:34.00 ID:wrOHkGCL0
複数のahkファイルを起動中にタスクトレイアイコンがその数だけ表示されるのを1つにまとめられない?
何個もあるの鬱陶しくて
723名無しさん@お腹いっぱい。:2012/08/20(月) 19:40:08.62 ID:A9b1SQ5d0
メインの一つ以外notoray付けて、メインのトレイアイコン右クリックでahk.exe一覧表示とか
724名無しさん@お腹いっぱい。:2012/08/20(月) 20:58:01.41 ID:wrOHkGCL0
右クリックメニューに一覧表示させるのをそのメインの.ahkファイルに書くってことですかね

めんどくさいので全部#NoTrayIcon付けてEverythingで検索することにしました
どうせReloadかEditくらいしかやってないんだしこれでいいやぁー
725名無しさん@お腹いっぱい。:2012/08/20(月) 23:58:40.93 ID:zsbKuBhzi
任意のウィンドウ(ahk_class XXXX)で
ホットキーを全て無効にするにはどうすればいいですか?
すべてのホットキーを#IfWinNotActive ahk_class XXXXにまとめるぐらいしか思いつきませんでした
もっとスマートな方法ないかな
726名無しさん@お腹いっぱい。:2012/08/21(火) 00:04:33.12 ID:ygQmOJqJ0
任意のウィンドウがactiveならsuspendを使い、
そうじゃなければsuspendを解除する、
というのを100ミリ秒毎にloopで回せばよさげ、と思いついた
727名無しさん@お腹いっぱい。:2012/08/21(火) 11:45:03.59 ID:doY0IceN0
アクティブウィンドウが切り替わったときを検地する方法とか
https://sites.google.com/site/agkh6mze/howto/winevent
728名無しさん@お腹いっぱい。:2012/08/21(火) 17:55:45.59 ID:z0FciWEpP
>>717
遅レスで申し訳ない。
sleepをkeywaitに置き換えてwhileで停止できるのを確認。

ErrorLevel := 1
While(ErrorLevel) {
send, a
KeyWait, Space, D T100 ;
send, [Enter]
}
return

さんくす。
729名無しさん@お腹いっぱい。:2012/08/21(火) 22:47:45.71 ID:POVBg38B0
^i::KeyMap:=!KeyMap
!down::Send, % KeyMap ? "{down 5}" : A_Thishotkey
このコードをIEやIronで実行すると、Ctrl二連打で呼び出しにしているOrchisが出てくるんですが何故でしょう?
↓を離してからすぐにAltを離さなければ出てこないのですが……コードにCtrl入ってませんよね
730名無しさん@お腹いっぱい。:2012/08/21(火) 23:17:48.73 ID:wA041djCi
#MenuMaskKey を熟読、過去レスも検索
731名無しさん@お腹いっぱい。:2012/08/21(火) 23:28:36.91 ID:POVBg38B0
半分くらいしか理屈が分かりませんがとりあえず問題解決できました
誘導ありがとうございます
732名無しさん@お腹いっぱい。:2012/08/23(木) 02:52:56.63 ID:sHA/lmEA0
{Blind}について質問です
下記(1)のようなカーソル移動の場合、{Blind}がなくてもカーソル移動が可能ですがなぜつけるのでしょうか?修飾キーの自動復元の説明が難しくてわかりません。
{Blind}が無いとカーソル移動が出来ない場合があるのでしょうか?今、(2)のようなキーボードのリマップをしているのですが、関連がありそう気になります
(1)sc07B & I::Send, {Blind}{Up}
733名無しさん@お腹いっぱい。:2012/08/23(木) 07:53:38.66 ID:yEzhzEvT0
{Blind} のあるなしのスクリプトの双方で、
{Shift} も同時押ししながら無変換使ったカーソル移動してみれ

そういうこと
734名無しさん@お腹いっぱい。:2012/08/23(木) 12:58:17.70 ID:sHA/lmEA0
>>733
違いがわかりました。ご丁寧にありがとうございます。下記が(2)になのですが、※修正後→Send, {Blind}{)}
PgDn & F12::
modifiers := get_modifiers()
Send, %modifiers%{)}
Return
get_modifiers() {
modifiers := ""
if (GetKeyState("Shift", "P")){
modifiers = %modifiers%+
}
return %modifiers%
}
735名無しさん@お腹いっぱい。:2012/08/23(木) 14:06:02.03 ID:UImyNIcr0
一つのホットキーで実行中の3つのahkファイルをサスペンド(トグル)するのは無理でしょうか?
736名無しさん@お腹いっぱい。:2012/08/23(木) 14:26:13.67 ID:0P+sPx4F0
~付きでやればあるいは
737名無しさん@お腹いっぱい。:2012/08/23(木) 14:36:45.52 ID:gcuEyL/g0
1つのahkのホットキーから2つ目以降のサスペンド用キーを送信すれ
738名無しさん@お腹いっぱい。:2012/08/23(木) 14:59:56.36 ID:FnpTFVO40
指定時間内に設定したキーAを複数回入力されたら設定したキー入力Bを返す、この時キーAの入力はPC上には反映されない

といった感じのスクリプトを作ることは可能でしょうか?
具体的にはNum1を1秒以内に2回入力すると数字キーの1を返す、この時Num1の入力はPC上に反映されない、みたいな挙動です
ホットスリングのBオプションのようなBackspaceでキーAの入力削除、といった形ではなく入力自体を無効化したいのですが、そのような方法が見つかりませんでした
739名無しさん@お腹いっぱい。:2012/08/23(木) 15:38:06.36 ID:0P+sPx4F0
$Numpad1::return
でフルキーボードの横についてるテンキーとかなら普通は無効化されるはず

独立テンキーだと最近はNumLock非連動タイプのものが多いので
Numpadと違うコード吐いてる可能性あり
= () , 00 000 などの普通のテンキーにはない拡張キーは
複数キー(Alt+十進テンキーコード)を組み合わせて投げてくる
まずは KeyHistoryで確認してみ
740名無しさん@お腹いっぱい。:2012/08/23(木) 17:26:08.15 ID:7lp4qqBW0
なぜわざわざ複数のahkファイルに分割するんだろうか
単一にまとめればいいのに
741名無しさん@お腹いっぱい。:2012/08/23(木) 17:39:24.63 ID:xZZwgK8+0
単一にまとめると相互干渉するんだが、解決出来ないので分割してる
742名無しさん@お腹いっぱい。:2012/08/23(木) 20:20:58.11 ID:UImyNIcr0
同じですw
>>736-737
有難うございました
743名無しさん@お腹いっぱい。:2012/08/23(木) 22:42:49.75 ID:7lp4qqBW0
ということは公開されてるahkファイルでも使ってるんかね
みんなは何を使ってるんだろう
744名無しさん@お腹いっぱい。:2012/08/24(金) 12:56:42.75 ID:gXkvDP9j0
autohotkeyのデザインをあしらった壁紙ってのありませんか?
ごちゃごちゃしてギトギトした色のものは嫌なのですが、
シンプルで見やすいのが希望なのです。
745名無しさん@お腹いっぱい。:2012/08/24(金) 22:46:59.78 ID:mczPv+6e0
基本的に闇雲にコピペしない派なんで、干渉しなようにいじっているうちに原型を無くし、
最終的にはアイデアだけもらったライブラリとなり lib フォルダに放り込まれる

746名無しさん@お腹いっぱい。:2012/08/24(金) 23:54:36.44 ID:OrGaliTe0
壁紙てw
747名無しさん@お腹いっぱい。:2012/08/25(土) 00:07:32.49 ID:ZsJLWeiI0
748名無しさん@お腹いっぱい。:2012/08/25(土) 14:24:40.71 ID:uMvdyalY0
分割してても干渉するんですが……
ウィンドウ指定はちゃんとしてるんだけどなぁ……
749名無しさん@お腹いっぱい。:2012/08/25(土) 22:44:24.00 ID:UuSDnLyQ0
分割して干渉しないのは、変数やサブルーチンくらいなもんだ

統合して、ホットキー定義が重複して動かないってのなら分割したまま複数動かしても
あまり意味がない
750名無しさん@お腹いっぱい。:2012/08/26(日) 18:49:51.24 ID:aeb1ZppO0
AutoHotKey_Lである特定の条件でアンダースコア出力が \ に化けて困っています。
やりたいことは単に"_yyyy_MMdd"という文字を出力するのみ。
 WinXP SP3端末では正常動作。
 WinXP-(RDP接続)->Win7(32bit)も正常。
 WinXP-(RDP接続)->Win7(64bit)のケースで、"\2012\0826"のように化けてしまいます。
(長すぎるそうで、、続く)
751名無しさん@お腹いっぱい。:2012/08/26(日) 18:53:37.14 ID:aeb1ZppO0
>>750です。(つづき)

仮想キーやスキャンコード指定など試しましたが、NGでした。
直接問題のWin7(64bit)機にAHKLを導入して試したところ、こちらは問題ないようです。
解決策があれば教えていただけるとありがたいです。
752名無しさん@お腹いっぱい。:2012/08/26(日) 19:12:34.76 ID:UKHjzTRV0
事象はわかるけど、
何をやろうとして、どこにAHKがあってしてどんなスクリプトを動かしているかがまったく書いてない
753名無しさん@お腹いっぱい。:2012/08/26(日) 19:35:18.89 ID:aeb1ZppO0
>>752さん。Replyどうもです。
すみません。
目的は単にファイル名に年月日情報を付けるといったものですが
RDP接続経由で渡らないキーがあるということに困っています。

AHKLは、WinXP機(RPDのClient側)のみで動かします。
Host側はWin7(32bit機と64bit機の2台)です。
754名無しさん@お腹いっぱい。:2012/08/26(日) 19:39:19.54 ID:aeb1ZppO0
(つづき)
::_td::
FormatTime, CurrentDateTime,,_yyyy_MMdd
SendInput %CurrentDateTime%
(以下、略)
return

どうもキーのシフト側は渡らないようです。
"(ddd)"という書式は、8日9 と出力されてしまいます。
※64bit機へのRDP経由でなければ発生しません。
755名無しさん@お腹いっぱい。:2012/08/27(月) 02:10:22.34 ID:CFqZxwZA0
L ってひとくくりに言われても、A32.exe / U32.exe / U64.exe の3種ある
x64 OSではどれでも動くから何を使ってんのか書かないと判別できない

特に文字化け問題なら、ANSI版とUNICODE版どっち使ってんのか、
スクリプトのファイル形式がS-JIS(ANSI)とUTF-8どっちなのか、そこはっきりさせないと

あとAHK_Lのバージョンもわからない
756名無しさん@お腹いっぱい。:2012/08/27(月) 02:15:12.28 ID:CFqZxwZA0
AHK乗ってるのはXP機か、てことは書いてないけどたぶん32bit版か
なら A32.exe / U32.exe のどっち使ってんのか書いて
757名無しさん@お腹いっぱい。:2012/08/27(月) 09:58:04.73 ID:++NJigEb0
>>750,754です
---------------------
AHKL v1.1.08.01 (Helpより)
HKCR\AutoHotkeyScript\Shell\Open\Command
"C:\Program Files\AutoHotkey_L\AutoHotkey.exe" "%1" %*
---------------------
(つづき)
758名無しさん@お腹いっぱい。:2012/08/27(月) 10:12:45.32 ID:++NJigEb0
(つづき)
これまで本家AHKを使用してきましたが、これを機にAHKLに切替えようと、U32を
意識し導入したつもりですが、関連付は上記exeのようです。
ScriptはUTF8に書き換えました。日付書式(ddd)は正しく漢字を返すようです。
759名無しさん@お腹いっぱい。:2012/08/27(月) 18:28:45.43 ID:V5XUWOfJ0
キーマップの状態によってカーソルの色を変更することは出来るのでしょうか?
検索かけても「カーソル位置の色を拾う」の方が引っ掛かるし、リファレンスにも見当たらなかったです
しかし何でも出来るAHKの事だから手があるのではないかと思っています
760名無しさん@お腹いっぱい。:2012/08/27(月) 21:24:44.39 ID:zauDQsdT0
簡単ではないし完璧でもないことを踏まえた上で、
なまずIME のソースを読むとヒントあり

読む気がないなら諦める
761名無しさん@お腹いっぱい。:2012/08/27(月) 21:34:13.94 ID:BDdFOMM+0
SetCaretColorね…
あれは、XP時代に活用してた。
762名無しさん@お腹いっぱい。:2012/08/27(月) 21:48:07.18 ID:V5XUWOfJ0
パッと見で努力と見返りが(当方にとっては)釣り合ってなさそうと感じました……やめときます
情報ありがとうございます
763名無しさん@お腹いっぱい。:2012/08/28(火) 10:35:15.56 ID:mIWBGEDT0
64bit環境でThumbRemapを試している方が前々スレ辺りから居ますが、
ALPSで試している方居ますか?

Win7、LIFEBOOK SH76(ALPS製pad)、AHKVer1.0.48、ApntEx.exe起動済 で下記エラー

a label must not point to a function.
Line#
---> 001:{

改変するにも勝負の土俵にすら立てていないのが悔しい
心当たりのある方、アドバイスをもらえませんか
764名無しさん@お腹いっぱい。:2012/08/28(火) 10:36:22.63 ID:iPTChszV0
何でも出来るなんていうからできるまでゴリゴリやる覚悟かと思ったら、あっさり諦めててワロタ

>>758
Lは A32/U32/U64のうち、インストール時に選択したタイプが AutoHotkey.exeとしてコピーされるぽい
インストールフォルダ開いて、exeのファイルサイズや更新日時の比較でどれが導入されてるか判別可能

XP機1台、Win7x64機2台あったから試してみた
AHKL v1.1.8.1
RDP v 6.1.7600.16722 (C:\WINDOWS\system32\mstsc.exe)
 ・XP SP3 x86 (ThinkPad W500) → (RDP) → Win7 x64 (AsRock Z77 PRO4-m)
 ・XP SP3 x86 (ThinkPad W500) → (RDP) → Win7 x64 (ThinPad x230T)

>754のスクリプトを ANSI / UTF-8(BOM付) / UTF-8(BOMなし) でそれぞれ保存して
XP機のAutoHotkeyA32.exe / AutoHotkeyU32.exe にドロップして実行
(実行前に全PCの常駐AHKは終了済。また直前試行スクリプトの常駐状態も必ず確認し終了させ
他スクリプトの影響は完全回避)

スプリクト3種*exe2種 の 6系統すべてホストx1、クライアントx2 で正常に動作したよ
ちなみにx64機上で直接AHK起動した場合はどうなるの?
AHKはインストールしなくても動くから、XP機のAHKフォルダコピーしてきてU32.exeにスクリプトドラッグして試してみ
765名無しさん@お腹いっぱい。:2012/08/28(火) 12:02:09.66 ID:4Ync7u+p0
>>761
SetCaretColorってVista以上では使えなかったっけ?
それとも今は代替案使ってるんだろうか
766名無しさん@お腹いっぱい。:2012/08/28(火) 12:48:37.89 ID:Sll5woe40
>>750,758です
FileStamp確認しました。U32ですね。
AHKL v1.1.8.1
RDP v 6.0.6001.18589 (C:\WINDOWS\system32\mstsc.exe)
 ・XP SP3 x86 (ThinkPad SL510) → (RDP) → Win7 SP1 x64 (ThinkStationS10)
うちのはRDPがちょっと古いですね。
>>751 であげた通り、x64機での直接起動では問題ないです。
>>764さんの環境では動くんですね。う〜ん何がいけないんでしょう?
767名無しさん@お腹いっぱい。:2012/08/28(火) 17:40:04.62 ID:U1cSA9II0
>>763 Alps は DllCall のポインタを直すと動きます。
768名無しさん@お腹いっぱい。:2012/08/28(火) 22:31:30.63 ID:te5o9sez0
>>765
使えるけど、独自キャレットが増えて、用途が狭くなった感じ。
XPってより、他アプリの環境により使わなくなった。
起動してても問題ないけど、汎用性が低くなったから・・・

類似ソフトあるけど、SetCareColorほど使い勝手が良くないから使ってないかな。
769名無しさん@お腹いっぱい。:2012/08/29(水) 00:55:53.95 ID:WbxWLFec0
>>767
アドバイスに合わせ直してみていますが、
(何故か)エラーは出なくなったものの、ウンともスンとも反応無いです

DllCall("C:\Windows\System32\Vxdif.dll\IOCTL_SetMouseMonitor","UInt",myhwnd,"UInt",1,"UInt",0,"UInt",0xBCD,"UInt")

ちなみにNewtonPadも動かないのですが、
このパソコンだとそもそもが動かないなんてことは無いでしょうか?
770名無しさん@お腹いっぱい。:2012/08/29(水) 02:50:45.83 ID:j/lX32K80
hwnd は ptr
771名無しさん@お腹いっぱい。:2012/08/29(水) 09:54:34.55 ID:OckDW1v/0
起動しているすべてのAHKにメッセージ送るとき、
下記のようなスクリプトにしてるんだけど、
PostMessage, 0xCC99,,,, ahk_ class AutoHotkey
だと、自AHKにしか送られて来ないんだけど、何故かわからん。
スマートなスクリプトにしようとしたら、はまってしもうた…

DetectHiddenWindows, On

WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop,%ahk_id_list%{
list := ahk_id_list%A_index%
PostMessage,0xCC99,,,,ahk_id %list%
}

DetectHiddenWindows, Off
772767:2012/08/29(水) 12:15:25.94 ID:drwxfVcD0
>>769
DllCall("vxdif.dll\IOCTL_SetMouseMonitor", "Ptr", myhwnd, "UInt", 1, "UInt", 0, "UInt", 0xBCD, "Ptr")
773763:2012/08/30(木) 01:11:11.60 ID:as/L5gcR0
>>770,772
本当にありがとうございます

まず、指摘の通り書き換え → 従前のエラー(a label must〜)復活

なので、ThumbRemap.ahkの、Thumb_Init_Driver()呼び出し(初期処理)の直後にThumb_ALPS.ahkの内容をコピペ
→ エラーは出なくなったが、キーの反応無しorz

Apoint.exe、ApntEx.exeは動いているし、Vxdif.dllもフルパスで書いてみましたが同様
コードを1行ずつ読んでいますが、問題は無いように思っています
774名無しさん@お腹いっぱい。:2012/08/30(木) 07:37:41.86 ID:jD7ZlBhGi
- Dll・関数がみつかったか、引数・戻値の型はあってるのかは、ErrorLevel
- 引数の値が妥当なものかどうかは、A_LastError
を見りゃある程度わかるんだから「あってると思う」なんて曖昧な書き方すんな
775名無しさん@お腹いっぱい。:2012/08/30(木) 23:36:45.27 ID:as/L5gcR0
>>774
確かに
ごめんなさい、親切に甘えてました
問題点の切り分けくらいは自分でやってきます
776名無しさん@お腹いっぱい。:2012/08/30(木) 23:46:42.46 ID:QOtf/6ZH0
>>771
自己レス。完全なる勘違いか。

> WinTitleに「ahk_id 0xFFFF」を指定すると、存在する全てのウィンドウにメッセージを送信する
この一文から、条件に一致するウィンドウ全てにメッセージを送るものだと勘違いしてた。
1つだけに送るんだね。
777名無しさん@お腹いっぱい。:2012/08/31(金) 04:33:19.03 ID:tmLSAz6Y0
キーマップ切り替えの一番冴えたやり方募集中
確実で(AとB、どっちなのか間違えない)、押しやすくて(ホームポジションに近く、使う指も少ない)、覚えやすい(印象的で、タッチ数が少ない)と良いです

目下考えてるのは、
一、Vimのノーマルモード、挿入モードの如くiとEsc
一、空いてる二つのCtrl+〜にAとBをそれぞれ割り当て
一、特定のキーでトグル
一、特定のキーを2ストロークキーの始動キーにしてAとBに分岐

ちなみに変換/無変換はIMEの切り替えに使用中です
778名無しさん@お腹いっぱい。:2012/08/31(金) 08:07:48.54 ID:JFDq2MCIi
切り替え方式は好みと慣れじゃないかね

無変換のdown中しかキーマップ変えない
キーを離したらデフォルトに戻るので間違うことがないため
押下状態に至るまでの連打の回数でキーマップ変えてる
押す回数に応じた音階変えたBeepならしてる
779名無しさん@お腹いっぱい。:2012/08/31(金) 08:21:50.24 ID:G9bawIYB0
>>750,766で、64bit機へのRDP経由でHotStringが渡らない現象で質問したものです。
まだ解決していないのですが、AHKLに変更してから別の現象が発生しています。
#IfWinActive, .* - 受信ボックス - Lotus Notes
(中略)
return
#IfWinActive
タイトルに日本語を含んでいると反応しなくなってしまいました。何か見落としているのでしょうか?
780名無しさん@お腹いっぱい。:2012/08/31(金) 08:31:00.78 ID:JFDq2MCIi
そのスクリプトで、
MsgBox, 受信ボックス
とかやってみたかえ?
781名無しさん@お腹いっぱい。:2012/08/31(金) 09:07:37.95 ID:r1d53pKH0
A_TitleMatchMode 、A_TitleMatchModeSpeed
あたりをチェック

自分も最近移行組なんで未検証なんだが
Unicode版だと RegExもダメ文字完全対応なんだっけ? 「`」 とかも
782名無しさん@お腹いっぱい。:2012/08/31(金) 09:13:42.80 ID:G9bawIYB0
>>750,779です
Script(UTF-8) ------------------------
::mymsg::
Msgbox,TestMessage
Msgbox,受信ボックス
return

Result ------------------------------
TestMessage
(虫腕)嶺ソ。(糸間)(小奥)ャ(糸雲)ッ(糸雲)ケ
** ()内は2byte文字、カタカナは半角

予想通りの結果ですが、どう対処していいのかわかりません。(本家では動いていたのに)
ご教示お願いします。
783名無しさん@お腹いっぱい。:2012/08/31(金) 09:28:59.53 ID:JFDq2MCIi
取り合えずテンプレ全部読め

>>781
ダメ文字は無い。
ただ、文字エスケープは別の話と分かってる上での話だが
784名無しさん@お腹いっぱい。:2012/08/31(金) 09:33:45.43 ID:G9bawIYB0
>>781さん
A_TitleMatchMode=RegEx
A_TitleMatchModeSpeed=Fast

Slowに変えてみましたが変わらずです。
785名無しさん@お腹いっぱい。:2012/08/31(金) 09:42:15.27 ID:dw3xINT60
>>782
utfにbomをつけてる?
最新のバージョンではbomなしだと文字化けした気がする
786名無しさん@お腹いっぱい。:2012/08/31(金) 09:53:28.80 ID:G9bawIYB0
>>785さん、皆さん
お手間とらせてすみませんでした。 BOMというものを知りませんでした。
普通に秀丸のSaveDialogにありました。(お恥ずかしい)
ありがとうございます。

あとは、64bit機 RDP越えの問題が解決すればいいのですが、、、
787名無しさん@お腹いっぱい。:2012/08/31(金) 09:53:54.52 ID:RX5vM1jF0
SJISで普通に文字化けせず、UTFだと文字化けしてしまう罠
788名無しさん@お腹いっぱい。:2012/08/31(金) 11:09:43.42 ID:IQG16zqR0
>>777
というかどういうタイミングでキーマップを切り替えたくなるんだろう
大量にキーバインドを使いたいエディタ上ならそれこそVimやら使えばいいし
それ以外の場面なら普通にちょこちょこホットキー付与するだけで十分な気がするが
789名無しさん@お腹いっぱい。:2012/08/31(金) 22:43:48.09 ID:1A/AUP7h0
>>788
えーとですね、両手が使える状態のキーバインドと左手のみでフルコントロール出来るキーバインドを用意してるんです
今どっちなのか分からないと誤操作であらぬ画面に行ってしまったりするもので……
790名無しさん@お腹いっぱい。:2012/09/01(土) 12:39:42.29 ID:M52DXwTq0
左手フルコントロールはさすがにその考えを改めたほうがベターな気がするけど
左手のみでもある程度の操作ができるようにしたいだけなら左手デバイスでも素直に使ったら
Dresskeyでテンキー使うとか
791名無しさん@お腹いっぱい。:2012/09/01(土) 13:43:44.84 ID:6LpG+s4g0
オナニー用途か…
792名無しさん@お腹いっぱい。:2012/09/01(土) 22:13:15.17 ID:ylhd+eSF0
>>789
今どっちかわからないなら、
どちらかのモードに変更するキーをそれぞれ設けておいて
(toggleするキーを用意しないってこと)
それを癖のようにおせばいいと思うよ
793名無しさん@お腹いっぱい。:2012/09/01(土) 23:20:13.59 ID:QLR8FZNy0
>>792
二番目ですね
切り替えだけに二つ取られるのもなんですが確かにそれが最適かもしれません
794名無しさん@お腹いっぱい。:2012/09/02(日) 01:28:24.93 ID:nzVwX+uh0
>>4
このChangekey使ったやり方、神だな。まじでほんとにすばらしくいいわ。
795名無しさん@お腹いっぱい。:2012/09/02(日) 10:47:29.24 ID:LzHRL/wd0
hCur:=DllCall("LoadCursorFromFile",Str, "my.cur")
DllCall("SetSystemCursor", Uint, hCur, Int, 32512)

上のようにカーソールを変更した後
元の標準矢印のカーソールに戻したいのですが
どうすればよいでしょうか? よろしくお願いします。
796名無しさん@お腹いっぱい。:2012/09/02(日) 13:49:30.21 ID:PLXgRR7k0
元のを再指定すりゃいいんじゃない

元のは何とかは聞かず自分で調べること
797名無しさん@お腹いっぱい。:2012/09/03(月) 23:44:19.99 ID:r+kfFL5t0
バイナリファイルを読み込んで正規検索、ひっかかったらルールに則って書き換え
ってのを繰り返すマクロ組もうと思ってるんだけど

Autohotkeyでバイナリファイルを編集するにはどうすればいいんだ?
798名無しさん@お腹いっぱい。:2012/09/03(月) 23:58:10.73 ID:/tccRr9K0
pythonでよくね?
799名無しさん@お腹いっぱい。:2012/09/03(月) 23:59:26.71 ID:r+kfFL5t0
pythonさわったことないよ!
800名無しさん@お腹いっぱい。:2012/09/04(火) 00:35:55.31 ID:gzZVUfuK0
FileOpen でバイナリモードで開いて、ごにょごにょすればいい
ちなみに正規検索ってのが正規表現検索のことなら、バイト単位での処理はできないと思ったほうがいい(Unicode版の場合)

AHKだとファイル処理は面倒くさい割りにできることが少ないんで、
他の慣れた処理系があるならそっちで書いて呼んでやればいいかと
801名無しさん@お腹いっぱい。:2012/09/04(火) 06:06:44.20 ID:dluQ9THb0
MouseGestureLで軌跡有効時に
中クリックをMG_Abort()でスルーさせてドラッグしてるときだけ
軌跡を無効にすることってできるんでしょうか?
802名無しさん@お腹いっぱい。:2012/09/04(火) 07:17:05.11 ID:yGnWwCMo0
MB_始動のジェスチャが無ければナビ・軌跡は表示されません。
有ればMB_Hoge_の最初にMG_StopTrail()を割り当てれば軌跡を
一時的に非表示にできる。
MG_NaviEnabled := 0 , 1でナビ表示切り替えも可能。
803名無しさん@お腹いっぱい。:2012/09/04(火) 08:56:33.22 ID:hKYFVV7S0
>>791
オレは左手派
右でマウス
804763:2012/09/04(火) 18:01:04.02 ID:h/YIs6JO0
>>774さんのアドバイスに合わせ調査しました

DllCall直後の ErrorLevel 及び A_LastError
ErrorLevel -3/A_LastError 0 でした
vxdif.dllのフルパスを入れてもアクセスが上手く行かず
805続き:2012/09/04(火) 18:06:03.27 ID:h/YIs6JO0
vxdif.dllの中身にIOCTL_SetMouseMonitorがあること、
myhwndに中身が入っていることは確認しているので、
このドライバに正しくアクセスさえできれば問題解決しそうなのですが、
これはもはやスレ違いでしょうか
806名無しさん@お腹いっぱい。:2012/09/04(火) 18:46:37.88 ID:nK0MORTi0
AHK_L x64 を使ってるんだよね?
807763:2012/09/04(火) 23:30:16.19 ID:vQcoC/UB0
無駄にスレを流してしまいました

>>806
素のAHKをずっと使っていました(StrPとPtrの違いがわからずポインタの意味も不明でした)
指摘を受けAHK_Lのリファレンスを見てPtrを理解、改めてAHK_Lで試したら正常動作しました

大変失礼いたしました Resくださった方ありがとうございます
808名無しさん@お腹いっぱい。:2012/09/06(木) 17:41:10.58 ID:/3tNkuft0
誘導されてきました。

CapsLock→大文字・小文字切り替え
Shift+CapsLock→無反応

のPCを使っています。これを、

CapsLock→ランチャ(bluewind)の起動
Shift+CapsLock→大文字・小文字切り替え

こう動作するように変えたいのです。CapsLockを
無効にするだけなら簡単なのですが。何か方法はないでしょうか?

以下、自分で試してみた結果です。
レジストリ変更でCapsLock→F1
bluewindの呼び出しキーをF1に
ahkでShift+F1→Send,{CapsLock}

これをやってみたところ、ランチャの呼び出しはできますが、Shift+CapsLockをしても
日本語入力が有効になるだけでした。
何かうまい方法が無いでしょうかね。
809名無しさん@お腹いっぱい。:2012/09/06(木) 18:09:48.56 ID:2jgXCe+60
+f1::
if GetkeyState("CapsLock", "T")
SetScrollLockState, AlwaysOff
else
SetScrollLockState, AlwaysOn
return
810名無しさん@お腹いっぱい。:2012/09/06(木) 19:14:30.40 ID:PkKk/F4V0
CaspLockキーの押し下げ状態がいらないならわざわざレジストリ変更する必要はない
sc03A::
; send, {bluewind hotkey}
return


+sc03A::
if getkeystate("capslock", "T")
setcapslockstate, off
else
setcapslockstate, on
return
811名無しさん@お腹いっぱい。:2012/09/08(土) 14:06:48.74 ID:MQSKlhSV0
あらかじめ指定した座標の範囲をキャプチャ(クリップボードにコピーするだけで可)するのは
AHKでは無理でしょうか?
812名無しさん@お腹いっぱい。:2012/09/08(土) 14:48:39.72 ID:HhznqSSG0
>>811
Screen clipping.ahkというのを利用すれば
たぶん出来る。
813名無しさん@お腹いっぱい。:2012/09/08(土) 16:56:47.10 ID:MQSKlhSV0
>>812
有難うございます。
http://www.autohotkey.com/community/viewtopic.php?t=49950
でも複雑すぎて何がなんだか・・・

シンプルにあらかじめ決められた座標をコピーするだけでいいのですが
X1=100 Y1=100〜X2=400 Y2=400までをキャプチャするにはどうしたらいいのでしょうか?
814名無しさん@お腹いっぱい。:2012/09/08(土) 17:22:37.27 ID:HhznqSSG0
使ってないけどScreen clipping.ahkは
http://www.autohotkey.com/community/viewtopic.php?t=50813
のDownload:
- Radial menu v4.zip (portable application)
の中のRadial menu v4\Utilitiesにあります。
Screen clipping.ahkこれを起動して見れば分かると思うけど,
Ctrlを押しながら座標を指定するスクリプトを作れば
コピーできます。1から作るにはScreen clipping.ahkを研究すれば出来ると思います。
815名無しさん@お腹いっぱい。:2012/09/08(土) 18:23:43.95 ID:kKuGmRF40
>>813
>>812が紹介してるのとは違うけど、↓これとかは色々できて便利
ScreenCapture.ahk
http://code.google.com/p/woomla/source/browse/trunk/AutoHotKey/Other/ScreenCapture.ahk?r=92

希望の動作はこんな感じでできるはず
#s::CaptureScreen("100, 100, 400, 400", False, 0)
816名無しさん@お腹いっぱい。:2012/09/08(土) 18:39:01.61 ID:C+k7ggAz0
GUIで透明なフォーム作って X1=100 Y1=100〜X2=400 Y2=400 に配置して
Send,!{PrintScreen} とか?

または

1.Send,{PrintScreen}
2.クリップボードから画像取り出し
3.任意範囲のみトリミング
4.クリップボードに書き戻し
2〜4の間はコマンドラインでパラメータ指定できる画像編集ソフトに投げる。
ImageMagickとか探せば結構あるんじゃね?
(ImageMagickがクリップボードの画像に対して操作できるのかは知らないが)
817名無しさん@お腹いっぱい。:2012/09/08(土) 20:52:27.33 ID:MQSKlhSV0
>>814
有難うございます。凄いですねこれ。
でもなぜか私の環境L(v1.1.08.01) Win7 64bitではCtrl+マウス→緑色で範囲選択できるのですが何度やってもクリップボードは空でした・・・
>>815
有難うございます。良さそうなのですがこれもクリップボードは空でした #s::CaptureScreen("100, 100, 400, 400", False, 0)
??私の環境がおかしいのかも。皆さんの環境では動くのでしょうか
>>816
なるほど!超賢いですね。アイデア有難うございます。やってみます

想定している用途はブラウザのウィンドウ内の特定の場所をコピーするという物なので相対座標です
818名無しさん@お腹いっぱい。:2012/09/08(土) 23:48:57.42 ID:+TiY4muV0
Gui, Show, X100 Y100 W300 H300
WinSet, Transparent, 0, ahk_class AutoHotkeyGUI
Send !{PrintScreen}

とやってみたら、透明化にならないGUIがキャプチャされてしまいました(^^;)
モニタ上では透明になっています。
Altなしの Send {PrintScreen}を送るとちゃんと透明になっていますが・・・
どうすれば透明なままキャプチャできますか?
819名無しさん@お腹いっぱい。:2012/09/10(月) 20:53:56.38 ID:jC3ps+XM0
Alt+PrintScr はアクティブ窓の内容をクリップボードにいれるんで、
透明GUI撮っても下のレイヤーは取得できないよ

ライブラリ使うのが面倒or動かないならスクリーンショットユーティリティ叩けばいい
自分は似たような用途ではirfanviewをコマンドラインで呼んでる
820名無しさん@お腹いっぱい。:2012/09/11(火) 19:35:45.70 ID:V2SwrCLI0
>>817
>>815をAHKLで動かす場合、DllCallやNumputを書き換えないと使えないと思う
無印だと問題無く動くよ
821名無しさん@お腹いっぱい。:2012/09/11(火) 23:21:26.53 ID:aB2Unrge0
ヘルプ読みながらアプリの操作したいのにヘルプウィンドウが邪魔なんで背面に送りたい。

ヘルプウィンドウ(hh.exe?)がアプリの前面に出しゃばって邪魔なアプリ(例: Flexible Renamer)を
http://goo.gl/2BHz1 を参考にして「ahk_class HH Parent」を指定したスクリプトを作ってみたのですが
変化なしでした。AlwaysOnTop は多分OS全体での最前面表示なんだろな。
zオーダーがヘルプ・アプリの順で固定なのを解除したいです。アドバイスお願いします
822名無しさん@お腹いっぱい。:2012/09/11(火) 23:42:11.19 ID:69rOE3f2i
F1やメニューからヘルプ呼ぶんじゃなくて、
exeのあるフォルダの .chm 直接起動すればいいじゃないかな
823821:2012/09/12(水) 00:46:11.60 ID:azcPIRsl0
>>822
その発想はなかった。完璧です。ありがとうございます。
824名無しさん@お腹いっぱい。:2012/09/12(水) 13:51:07.41 ID:fit+XEaNO
クラスを使いたいのですが
https://sites.google.com/site/autohotkeyjp/
で調べてもクラスのことが全然出てきません
継承とかやり方がわかりません。
なぜクラスの解説がないのでしょうか?
825名無しさん@お腹いっぱい。:2012/09/12(水) 13:59:11.63 ID:PfNnv0e50
826名無しさん@お腹いっぱい。:2012/09/12(水) 14:39:38.73 ID:fit+XEaNO
>>825
Classでございます
827名無しさん@お腹いっぱい。:2012/09/12(水) 20:32:28.42 ID:jsuIIc480
ウィンドウのクラス名のことなら↓の全部(リンク先含む)に目を通してみては?
俺は解らないあったらとりあえずリファレンスを全て見直してた。
面倒くさいけどそれが一番確実。
https://sites.google.com/site/autohotkeyjp/reference/Window
https://sites.google.com/site/autohotkeyjp/reference/commands/WinGet
828名無しさん@お腹いっぱい。:2012/09/12(水) 20:37:54.41 ID:X4L9M5q/0
Classそのものはサポートしてないと思うが。
functionやオブジェクトで一部それっぽいのがあるだけで
829名無しさん@お腹いっぱい。:2012/09/12(水) 20:40:18.74 ID:gcJC3e6X0
これの翻訳を追記して欲しいってことでしょ
http://l.autohotkey.net/docs/Objects.htm#Custom_Objects
830名無しさん@お腹いっぱい。:2012/09/12(水) 22:53:39.89 ID:qtiRgsyT0
>>829
へー、AHKLにclassの機能が追加されていたんだ
知らなかった
831名無しさん@お腹いっぱい。:2012/09/12(水) 22:55:12.35 ID:oYxIo6S80
クラスはあるいけど、
クラス定義=振る舞いを定義するインスタンス生成ってことを分からないと罠に嵌まる

コンストラクタもどきはあるけど、あくまでインスタンスのクローン
クラスの継承って概念はなく、基準(base)オブジェクトの振る舞いを利用するって感じ
なのでメンバ変数を弄ってるつもりが、基準オブジェクトを操作してることになったりする

構文的にはjava系統っぽいけど、挙動はjavascriptに近い印象
832名無しさん@お腹いっぱい。:2012/09/12(水) 23:01:58.79 ID:oYxIo6S80
ついでに言うと、オブジェクトの機能はクラス定義のできる前から進歩していない
結局は関数に自分自身と引数を並べて invoke してるのは同じで
メソッド用の関数を用意する手間が省けるくらい
(とはいっても省ける手間は膨大だけど)
833名無しさん@お腹いっぱい。:2012/09/14(金) 21:43:38.32 ID:v+jtKif6O
みなさん、オブジェクトとかCOMを
ふだん活用できていますか?
834名無しさん@お腹いっぱい。:2012/09/15(土) 02:15:55.46 ID:COoqJWeN0
aからzに長押し時に大文字になるようにしたいのですがkeywaitだと2つのキーをほぼ同時押しすると後に押したキーが先にsendされます なにかアドバイスが欲しいです
835名無しさん@お腹いっぱい。:2012/09/15(土) 17:23:38.47 ID:Xn6b+EP8i
同時押しするとキー状態変化待ちのスレッドが複数できる
>>7 みればわかるが、同時に動くスレッドは1個で
あとから始まったスレッドの処理が優先されるからそうなる

これを解決するのは結構面倒で、
長押しの判定方法とキー発行タイミングによってやりかたが変わってくる

キーdownとupにホットキーを設置してdown時の時間記録し、
up時に時間を評価してキー発行するのが妥当だろうけど、
キーリピートのことを考慮する必要があって中々面倒

キーup前でも一定時間たてばキー発行するケース(keywaitのTオプション利用)だと、
一定時間経過したかどうかの判定をスレッド止めずに行うにはタイマーが必要で、
対象のキーが多いとなると、これもまた厄介

上記以外でもコマンド数個でシンプルにとはいかないだろう








836名無しさん@お腹いっぱい。:2012/09/15(土) 20:00:22.77 ID:COoqJWeN0
>>835
dさんの長押しime起動2を使用したのですが、
dさんはahkと相性が悪くて自作しようと思いました。

キーup前でも一定時間たてばキー発行したいのですが、やはり複雑そうですね、、


837名無しさん@お腹いっぱい。:2012/09/16(日) 11:36:00.49 ID:Ah/692xO0
指定キーを押すと
「Aキーを送る、1秒待つ、Bキーを送る、1秒待つ」 という動作を繰り返し
もう一度指定キーを押すと繰り返しをやめる

そんなスクリプトがあれば教えてください
838名無しさん@お腹いっぱい。:2012/09/16(日) 12:21:53.82 ID:xQP8glVw0
人を利用することしか頭にない
839名無しさん@お腹いっぱい。:2012/09/16(日) 14:49:51.53 ID:EkiZaClc0
そのまんま置き換えればいいだけ
840名無しさん@お腹いっぱい。:2012/09/16(日) 16:48:25.42 ID:wF8/Z8t30
>>837
c::
keywait, %A_Thishotkey%
flag := flag = 1 ? "off" : "1"
settimer, ab, %flag%
return

ab:
send, a
sleep, 1000
if flag = off
return
send, b
sleep, 1000
return

esc::exitapp
841名無しさん@お腹いっぱい。:2012/09/16(日) 22:24:31.35 ID:Ah/692xO0
>>840
どうもありがとうございます
842名無しさん@お腹いっぱい。:2012/09/16(日) 22:54:03.54 ID:rcoA5JNu0
2点教えていただけますか?
1) 以外すべてのキーを表現する方法
a::
Send,a
Return
b::
Send,b
Retnrn
<ab以外なんでも>::
Send,x
Return

<ab以外なんでも>の部分の指定の方法が分かりません。

2) 文字列の選択を解除する方法
C-cを押したとき、選択された文字列をClipboardに入れ、その後選択を解除したいのですが、
その方法が分かりません。Esc以外の方法(Escで解除されないソフト対応方法)を知りたいと
思っています。

以上、よろしくお願いします。
843名無しさん@お腹いっぱい。:2012/09/16(日) 23:18:23.84 ID:wF8/Z8t30
>1) 以外すべてのキーを表現する方法
全部記述するか
loop, n
Hotkey, スキャンコード or 仮想キーコード(16進数で指定)Label

>2) 文字列の選択を解除する方法
カーソルキーをSendすればいいんじゃね
844名無しさん@お腹いっぱい。:2012/09/17(月) 08:13:45.09 ID:86AjBN5P0
回答ありがとうございます。
1)はやはり簡単な方法はないんですかね。loopのやり方は理解できていないので、
全記述を検討します。
2)はこの方法も考えたのですが、カーソルの位置が変わります。右行って戻すのも
考えたけど、カーソルが行末にあると使えない。DllCall()を使えばできるのかなぁ
と思っていますが、WindowsのAPIが分からず、さっぱりです。
845名無しさん@お腹いっぱい。:2012/09/17(月) 17:29:00.96 ID:GQXTUuyA0
選択範囲の解除だけど、汎用的な方法は無いよ

まずは、地道にウィンドウ毎・入力欄毎にキー操作で解除する方法を調べて、
その結果通りになるように処理分岐をチマチマ書いていくだけ

その過程でウィンドウやコントロールのクラス名である程度挙動がグルーピングできると思うんで、
効率のいいor保守性の高いコードに変えるのも手
846名無しさん@お腹いっぱい。:2012/09/17(月) 17:38:13.70 ID:GQXTUuyA0
大抵はキー入力(←→)で解除できるけど、
解除後のキャレット位置はエディタによって結構違う
コピー後の選択を解除するオプションを持つものもある
vi系など全く思想が異なるものもある

どれを対象にしてもいくつかのキーやコマンドで事足りるんだろうけど、
それを調べる&検証するのがもっとも時間がかかるし、恐らく終わりがない
(アプリのver upであっさり動かないってこともザラ)

ちなみに dllcall は魔法の呪文ではないよ
847名無しさん@お腹いっぱい。:2012/09/18(火) 07:15:48.15 ID:sKfHwDJO0
>>845
>>846
なかなか難しいもんですね。アドバイスありがとうございました。
848名無しさん@お腹いっぱい。:2012/09/21(金) 20:18:41.75 ID:EUwYH3/X0
「半角/全角」キーを押し下げている間だけ、マウスカーソルを特定の位置(600,0あたり)に持っていき、
離した瞬間もとの位置に戻る・・・というスクリプトを書きたいんですが、
この「押し下げてる間だけ」というのはどう表記すればいいんでしょう。

押した瞬間::MouseGetPos,hogeX,hogeY
押し下げてる間::mousemove,600,0,0
押し上げたら::mousemove,hogeX,hogeY

――って感じになるんじゃないかと考えたのですが
849名無しさん@お腹いっぱい。:2012/09/21(金) 20:30:59.24 ID:B1aZYgPx0
>>848
a::
MouseGetPos,hogeX,hogeY
mousemove,600,0,0
keywait, %A_Thishotkey%
mousemove,hogeX,hogeY
return

通常のキー(aなどのLock系以外のキー)なら↑でいいけど
半角/全角キーは >>4 のQ1にあるようにF13とかに置き換えないと無理
850名無しさん@お腹いっぱい。:2012/09/21(金) 23:19:35.08 ID:EUwYH3/X0
>>849
すばやい返答ありがとうございます、無事できました!
a_thishotkeyというのは直前キーの変数なんですね、勉強になります

後段については、すでに「変換」キーを「半角/全角」いて、それを押したいので、
>>4の方法は難しそうですね
そこまでこだわりがあったわけではないので、適当に他のキーにマッピングしたいと思います

ちなみにこの関数の用途は、押してる間だけ上置きのタスクバーを表示させる・・・です
851名無しさん@お腹いっぱい。:2012/09/22(土) 12:59:22.74 ID:tuFABEvo0
長押しと通常押しの区別ってどうやるの?

Esc::
KeyWait,Esc,T0.5
if (ErrorLevel=1){
動作1
}else{
send,{Esc}
}
return

って書くとescapeがループするお;
852名無しさん@お腹いっぱい。:2012/09/22(土) 13:04:14.43 ID:JE6dWnjo0
$Esc::
853名無しさん@お腹いっぱい。:2012/09/22(土) 13:04:54.73 ID:tv92OwyE0
例えば
F1キーを押して放し、1秒以内にAキーを押すと、Ctrl+Rが入力できるような
スクリプトはどうすればできるのでしょうか?
854名無しさん@お腹いっぱい。:2012/09/22(土) 13:32:27.59 ID:JE6dWnjo0
F1::
Hotkey, a, MyLabel, On
Sleep, 1000
Hotkey, a, Off
Return

MyLabel:
Send, ^r
Return

こんな感じ?
1秒以内にAが押されなかった場合に1秒遅れでF1をSendする必要があるならその処理を追加記述
855名無しさん@お腹いっぱい。:2012/09/22(土) 13:38:12.91 ID:BQDbcw5J0
F1::
KeyWait, {F1}
Input, , T1, a
If ErrorLevel != Timeout
Send, ^r
Return
856名無しさん@お腹いっぱい。:2012/09/22(土) 13:47:01.32 ID:tuFABEvo0
>>852
できますた
どうしてこうなるのかよくわからんのでフックというものを勉強してきます
857名無しさん@お腹いっぱい。:2012/09/22(土) 13:48:55.46 ID:wLU8ktgG0
やりようがいくらでもあるのが悩ましいところだな
タイマーと#If組み合わせたりする手もあるな
フラグ使って時限キーマップみたいな感じ
複数キーを一括設定できるのと、スレッドが止まらんのがメリットかな
858名無しさん@お腹いっぱい。:2012/09/22(土) 18:54:46.13 ID:tv92OwyE0
>>854,855,857?
どうもありがとう
859名無しさん@お腹いっぱい。:2012/09/22(土) 21:33:46.25 ID:njRGf1Xs0
Windows7でのロック状態(アプリを起動したままログオフ)を検知したいんだが良い方法が見つからない!
ImageSearchで出来そうだけど出来れば使いたくないし・・・
お願いします、なにか良い方法無いですか
860名無しさん@お腹いっぱい。:2012/09/23(日) 11:38:52.19 ID:/UlIQ70R0
サイトのURLをゲットするにはどうしたらいいでしょう?
タイトルならWinGetTitleとかでいいみたいだけど、WinGetUrlみたいなのはないんでしょうか?
861860:2012/09/23(日) 12:09:07.60 ID:/UlIQ70R0
自己解決しますた
862名無しさん@お腹いっぱい。:2012/09/23(日) 12:21:03.01 ID:NjkvYQ/60
どうやって解決したの?
863名無しさん@お腹いっぱい。:2012/09/23(日) 12:32:48.51 ID:usD0nk2M0
簡単に考えればCtrl+L→Ctrl+Cだけど
864名無しさん@お腹いっぱい。:2012/09/23(日) 12:39:30.87 ID:/UlIQ70R0
その通りww
865名無しさん@お腹いっぱい。:2012/09/23(日) 14:51:50.21 ID:lxALxNOJ0
IEとChromeならControlGetTextでとれた気がする
866862:2012/09/23(日) 21:18:36.92 ID:NjkvYQ/60
なるほど
867名無しさん@お腹いっぱい。:2012/09/24(月) 09:59:44.45 ID:LkQN2LbE0
>>854とか>>855を応用すればダブルクリックの挙動をもっと簡単にできるかと思ったら無理だった
ホワイ?
868名無しさん@お腹いっぱい。:2012/09/24(月) 12:25:24.09 ID:shVtfwQ10
コードを書きましょう
そしたらきっと適切なアドバイスがくる
869名無しさん@お腹いっぱい。:2012/09/24(月) 12:56:51.40 ID:LkQN2LbE0
>>854だとこうかな?
LButton押してから1秒以内にLButtonでミドルクリック

LButton::
Hotkey, LButton, MyLabel, On
Sleep, 1000
Hotkey, LButton, MyLabel, Off
Return

MyLabel:
Send,{MButton}
Return

通常のクリックが乗っ取られるのは仕方ないとして、なんでダブルクリックも無反応なんだろう
870名無しさん@お腹いっぱい。:2012/09/24(月) 20:55:52.84 ID:BcKBHcr70
HotkeyはラベルをOn/Offするコマンドじゃなくホットキーを割り当てる設定なので、

Hotkey, LButton, MyLabel, Off

ではなく

Hotkey, LButton, LButton, On

じゃないかと

でもってSleep中はホットキー(LButton)自体が動かなくなる仕様なので[要検証]、
MyLabelが実行されることは無い

と推理
871名無しさん@お腹いっぱい。:2012/09/24(月) 22:22:42.16 ID:CZHEdsXX0
LButtonにはすでに「LButton::」が割り当てられてるんだから
重ねて別のラベル割り当てても動かないよ

「LButton::」を使わず普通のラベルにして最初にHotkeyコマンドで割り当て、
「MyLabel」をOnにする前に最初のラベルをOffにする。→MyLabelの中で戻す。
もしくは>>857の言うようにタイマーとフラグを使うべし。
872名無しさん@お腹いっぱい。:2012/09/24(月) 22:27:28.47 ID:CZHEdsXX0
>>871 訂正します

LButtonにはすでに「LButton::」が割り当てられてるんだから
重ねて別のラベル割り当てても動かないよ

>>857の言うようにタイマーとフラグを使うべし。
873名無しさん@お腹いっぱい。:2012/09/25(火) 19:11:45.03 ID:VQjhC5Jg0
ダブルクリックは結構めんどいよ
とくに、シングルクリックやドラッグ殺さず、
かつダブルクリックのみ乗っ取り置換となると
874名無しさん@お腹いっぱい。:2012/09/27(木) 00:45:34.49 ID:y+055xpR0
Q-Dir_Portable_Unicode 5.36においてキーリマップをしようとしたのですが一部Sendコマンドが効きません。
効くものと効かないもので差が分からないのですが原因はなにが考えられるでしょうか?

当方の環境はVista x86 v1.1.08.01です。
こちらにahkファイルをうpしてありますので確認お願いします。右側にコメントアウトでダメって書いてあるのが効かないコマンドです。
ttp://www1.axfc.net/uploader/File/so/83980
875名無しさん@お腹いっぱい。:2012/09/28(金) 04:36:54.48 ID:gTfbpGu/0
エクスプローラの表示切替ボタン(下記スクショの赤枠部)を^iで押したいんですがどう取得したらいいんでしょう?
WindowSpyで見ても座標でしかいけそうにないと思うのですが、ウィンドウを最大化すると時折下記スクショのようにタイトルバーが消失することがありy軸が確定できません
座標でやる場合タイトルバーの有無の取得をどう考えたら良いのやら……
今こんな↓です

^i::
WinGet, Size, MinMax
if(Size=1) ;最大なら
{
ControlClick x116 y80
Send,{Tab} ;フォーカスをファイルに戻す
}else{ ;違うなら
ControlClick x116 y110
Send,{Tab}
}
return

ttp://i.imgur.com/WEK55.jpg
876名無しさん@お腹いっぱい。:2012/09/28(金) 05:15:13.29 ID:vQC+EZLv0
>>875
エクスプローラーのショートカットキーを送るのはダメかな?
"表示"を出すショートカットキーは ALT+v だから、例えば表示設定を"詳細"に切り替える手順は
ALT + v → d
877名無しさん@お腹いっぱい。:2012/09/28(金) 07:20:33.20 ID:dryESq5e0
>>874
autohotkey.exeを管理者としてみては?
方法は「管理者として実行」でググる。
878名無しさん@お腹いっぱい。:2012/09/28(金) 08:28:25.82 ID:gTfbpGu/0
>>876
どうもです
トグルで切り替えたいのでその方法は避けたいですね

でも^iを押す度送るキーを切り替えれば良いかな? ちょっとそっちでも検討してみます
879名無しさん@お腹いっぱい。:2012/09/28(金) 14:41:40.69 ID:85PdRV570
>>875
AHK_L 用

; 詳細とアイコンを交互に切り替えてみる
^i::
viewMode := Shell_GetCurrentViewMode()
; FVM_ICON = 1, FVM_DETAILS = 4 他は FOLDERVIEWMODE で検索
v := viewMode == 4 ? 1 : 4
Shell_SetCurrentViewMode(v)
Return

; 表示状態を取得する。hWnd に指定が無い場合は、アクティブなエスクスプローラ
Shell_GetCurrentViewMode(hWnd = 0)
{
  If (hWnd <> 0 || (hWnd := WinActive("ahk_class CabinetWClass")) <> 0)
  {
    win := ComObjCreate("Shell.Application").Windows
    Loop,% win.Count
    {
      ie := win.Item[A_Index - 1]
      If (ie.HWND = hWnd)
       Return ie.Document.CurrentViewMode
    }
  }
}

下に続く
880名無しさん@お腹いっぱい。:2012/09/28(金) 14:42:42.33 ID:85PdRV570
続き

; 表示状態を変更する。viewMode = 表示状態、iconSize = アイコンサイズ、デフォルトは-1(変更なし)
Shell_SetCurrentViewMode(viewMode, iconSize = -1, hWnd = 0)
{
  If (hWnd <> 0 || (hWnd := WinActive("ahk_class CabinetWClass")) <> 0)
  {
    win := ComObjCreate("Shell.Application").Windows
    Loop,% win.Count
    {
      ie := win.Item[A_Index - 1]
      If (ie.HWND = hWnd)
      {
        ie.Document.CurrentViewMode := viewMode
        If (iconSize != -1)
          ie.Document.IconSize := iconSize
        Return
      }
    }
  }
}
全角スペースでインデントしてるので、コピペするときに半角スペースに置き換えてね
881名無しさん@お腹いっぱい。:2012/09/28(金) 21:28:40.51 ID:gTfbpGu/0
おぉぅ、シェルからいくわけですね
自分では絶対これは書けませんです……感謝です

FVM_THUMBNAILとFVM_LISTのアイコンサイズが共用のようで辛いですね
882名無しさん@お腹いっぱい。:2012/09/28(金) 22:52:26.56 ID:F6G+N1jH0
ふむ、勉強になった
ahk的引数にするなら hwnd でなく WinTitle がいいかもしれん
883名無しさん@お腹いっぱい。:2012/09/28(金) 23:48:04.20 ID:sNZlk/CTP
特定のキーを押したら、50回上方向のスクロールする方法ってありませんか?

Space::
Loop,50
{
MouseClick, WheelUp
}

これだとLoopにならず、押している間だけ上スクロールとなります。
884名無しさん@お腹いっぱい。:2012/09/29(土) 00:13:15.01 ID:dn5iFt/20
>>883
loop内にsleepを入れていないから、押している間だけスクロールしている、ように見えるのでは?
885名無しさん@お腹いっぱい。:2012/09/29(土) 00:46:19.82 ID:yK9BASp5P
おおう・・・忘れてた、ちょっと恥ずかしいw
さんくす
無事解決w
886名無しさん@お腹いっぱい。:2012/09/29(土) 01:33:46.65 ID:4xC20J2i0
>>877
ダメっぽいです。キー自体は送られてるようなんですが……
aがよくてwがダメってなんなんでしょうね
887名無しさん@お腹いっぱい。:2012/09/29(土) 03:01:57.34 ID:pel432Ya0
ホットキーでSkypeのログイン状態を変更したいのですが良い方法はないでしょうか
888名無しさん@お腹いっぱい。:2012/09/29(土) 11:22:13.06 ID:ZuYbCV0G0
Aを押すと1が入力され
もう一度Aを押すと2が入力され
もう一度Aを押すと3が入力され
もう一度Aを押すと1が入力され(初めに戻って繰り返し)

るスクリプトはどう書けばよろしいのでしょうか?
889名無しさん@お腹いっぱい。:2012/09/29(土) 11:37:27.51 ID:PZCumRJj0
a::
if hoge < 3
hoge++
else
hoge = 1
tooltip, %hoge%
return
890名無しさん@お腹いっぱい。:2012/09/29(土) 12:57:35.38 ID:ZuYbCV0G0
>>889
ありがとうございます
そして申し訳ございません
誤解が生じるような記述をしたようなのでもう一度書き直します

Xを押すとCtrl+Aが送られ
もう一度Xを押すとCtrl+Bが送られ
もう一度Xを押すとCtrl+Cが送られ
もう一度Xを押すとCtrl+Aが送られ(初めに戻って繰り返し)

るスクリプトはどう書けばよろしいのでしょうか?
891名無しさん@お腹いっぱい。:2012/09/29(土) 13:13:53.37 ID:PZCumRJj0
x::
  hoge++
  if hoge = 1
    send, ^a
  else if hoge = 2
    send, ^b
  else if ( hoge = 3 ) {
    send, ^c
    hoge = 0
  }
  keywait, %A_Thishotkey%
return
892名無しさん@お腹いっぱい。:2012/09/29(土) 16:16:15.13 ID:dBopwDQC0
ヒント無視して丸ごとよこせつってるようなバカ相手にすることないのに
893名無しさん@お腹いっぱい。:2012/09/29(土) 16:17:21.69 ID:b3jflq3y0
さすがにこれはひどいな
894名無しさん@お腹いっぱい。:2012/09/29(土) 17:25:01.57 ID:w+WbbGYa0
馬鹿そのものよりもそれの相手をする奴の方が害悪って事か
895名無しさん@お腹いっぱい。:2012/09/29(土) 17:29:26.37 ID:XtOymdfZ0
あとからあとからわいてきちゃうからな
896名無しさん@お腹いっぱい。:2012/09/29(土) 17:39:36.08 ID:5ieRFVon0
>>894
害悪というのは言い過ぎだよ。
ただ、気を付けてくれるとありがたいというのはある。
897名無しさん@お腹いっぱい。:2012/09/29(土) 18:03:05.60 ID:g1CNCRGv0
さすがにPZCumRJj0を罵るのは筋違いじゃないか?
クレクレが鬱陶しいなら無視すれば済む話
898名無しさん@お腹いっぱい。:2012/09/29(土) 19:02:26.75 ID:ZcBa3YSU0
過去にクレクレしたのに書いてもらえなかった奴が嫉妬してるんだろw
899名無しさん@お腹いっぱい。:2012/09/29(土) 20:33:15.45 ID:ZuYbCV0G0
>>891
わざわざ二度もお手数掛けましてどうもです
900名無しさん@お腹いっぱい。:2012/09/29(土) 20:47:10.95 ID:x6c9mfWF0
おう、もうくんなよ
901名無しさん@お腹いっぱい。:2012/09/30(日) 16:55:20.18 ID:mf1nunLy0
割りとシグマさんは最強の名を関するだけはあるんじゃないか
902名無しさん@お腹いっぱい。:2012/09/30(日) 16:56:15.52 ID:mf1nunLy0
ミスしました
903名無しさん@お腹いっぱい。:2012/09/30(日) 17:02:54.89 ID:paD7NLJM0
何かしらキーが押された時に反応して、処理を実行させたいのだけれども、
全てのキーにホットキーを割り当てるのは、野暮ったいので出来れば避けたい。
一括して定義する方法は無いでしょうか?
904名無しさん@お腹いっぱい。:2012/09/30(日) 17:14:24.50 ID:YHOVbPrA0
Inputで拾える文字も限られてるし、ホットキー羅列以外に無いよ

羅列がいやなら、LLHookか直接入力拾うかだけど羅列と同等
905名無しさん@お腹いっぱい。:2012/09/30(日) 17:36:37.31 ID:paD7NLJM0
やはり、難しいのか…
地道に羅列でやってみようと思います。
参考になりました。サンクスです。
906名無しさん@お腹いっぱい。:2012/09/30(日) 19:23:01.34 ID:9ulJr2AF0
あんまり詳しくないから見当違いのこと言ってたらごめんね
loopで仮想キーコードを格納しまくって、入力した文字がそのうちのどれかなら始動とかはできないかな?
907名無しさん@お腹いっぱい。:2012/09/30(日) 19:56:48.42 ID:YHOVbPrA0
だからそのキーコードを拾えるイベントって何よって話で、
全キー拾えるようなイベントはどうすべきかって話だろうに
908名無しさん@お腹いっぱい。:2012/09/30(日) 20:46:11.13 ID:y7Jj7Opb0
>843の方法でLoopで順繰りにHotkey指定すりゃいいんじゃないの?
やってることは羅列と変わらんけど
909名無しさん@お腹いっぱい。:2012/09/30(日) 21:27:46.52 ID:viVz2Jqk0
ZeniSynthはWin7-64bitでも[Ctrl]と[Caps]を入れ替えできるみたい 仁義偉王のブログ/ウェブリブログ
http://jinblog.at.webry.info/201101/article_9.html
このdllを使えばautohotkeyでもcaps lockを自由に操作できるようになりそう
autohotkeyだけでこれと同じことができればいいのだが。
910名無しさん@お腹いっぱい。:2012/09/30(日) 22:10:22.93 ID:mf1nunLy0
dllをahkから呼び出せて使うだけでいいのならいいんだが
レジストリ変更して別dllを指定しているのなら需要は残念ながらないだろう
CapsLock -> F13 、と実質的な違いがあまりない(というかkbjpn.dll置き換えこそ通常は抵抗があるだろう)
911名無しさん@お腹いっぱい。:2012/09/30(日) 22:28:36.37 ID:viVz2Jqk0
なるほど、そりゃそうだな
912名無しさん@お腹いっぱい。:2012/10/01(月) 02:33:50.33 ID:KlSP7lEq0
>>903
A_TimeIdlePhysicalは?
913名無しさん@お腹いっぱい。:2012/10/01(月) 04:23:24.46 ID:KlSP7lEq0
Inputの説明のページにWait for the user to press any key.ってサンプルがあった。
Input一度も使った事が無かったw
914名無しさん@お腹いっぱい。:2012/10/01(月) 16:29:25.44 ID:cP8HdF8l0
特定のソフトの背景色を変えたり出来ませんか?
例えばエクスプローラを黒板的配色にしたり
915名無しさん@お腹いっぱい。:2012/10/01(月) 19:13:30.47 ID:+yPMiaEy0
1.5に対応した正規表現で検索できるアドオンはあるでしょうか?
916名無しさん@お腹いっぱい。:2012/10/01(月) 21:52:41.16 ID:rhzJn68Gi
>>914
そういうコマンドはないね
エクスプローラとかOSの設定変える方が確実

>>915
誤爆かぇ?
917名無しさん@お腹いっぱい。:2012/10/03(水) 00:14:09.77 ID:8pMGM6QS0
アクティブウインドウを、横幅そのままに、
縦をディスプレイ最大サイズにしたいんだけど、
そういうスクリプトは可能かな?

TTBaseのWindowTateMaxっていうのを入れて同じことやってたんだけど、
AHK内で完結させたいなと思って。
918名無しさん@お腹いっぱい。:2012/10/03(水) 00:22:02.27 ID:WXfbILIx0
WinMoveとA_ScreenHeight
919名無しさん@お腹いっぱい。:2012/10/03(水) 00:38:26.24 ID:8pMGM6QS0
どうもありがとう!
920名無しさん@お腹いっぱい。:2012/10/03(水) 16:57:34.07 ID:EGuRnLqt0
ahkと.NET、どっちが実行速度速いですか?
921名無しさん@お腹いっぱい。:2012/10/03(水) 17:41:41.63 ID:yiW9wS4Y0
Youtubeのプレイヤー部分のコントロールの座標と縦と横のサイズを拾いたくて
MouseGetPosでコントロールのウィンドウハンドル取得→ControlGetPosで座標とサイズ取得
ってゆうふうにしてたんだけど最近うまく座標を拾えなくなった(サイズはOK)

AHKのバージョンは変わってないからブラウザ側の仕様変更っぽい(ブラウザによっては拾えることもある。IEは×DonutQは○)

(サイズはOKだからないとは思うけど)ウィンドウハンドルがちゃんと拾えてないのかと疑って
流行らせるページのMouseGetPosのとこに載ってたより確実に取得する方法も試したけどそれも駄目

どうしようもなくなってるんだけど、同じような症状の人or対応策知ってる人いない?
922名無しさん@お腹いっぱい。:2012/10/04(木) 12:37:40.93 ID:moCWA34v0
環境が書いてないから何が何やら・・・
最近はGPU支援がついたりでFLASHも色々変わってきてる

WnGetでコントロール一覧取得して、お目当てのがないなら
AHKじゃとれないんじゃないのかね

IEならCOMつかってDOM解析して色々やれば出来るかもしれんし、そうでないかもしれん
923名無しさん@お腹いっぱい。:2012/10/04(木) 18:38:18.61 ID:NYCcoq320
すまそ
環境は
OSはWindows Vista Service Pack 2 (x86)
AHKは1.1.08.00と1.1.08.01
ブラウザはIE9、Chrome、Iron、DonutQそれぞれ最終更新版(昨日の時点)

んで、教えてもらったWnGetでコントロール一覧取得試してたら気付いたんだが
@コントロールのウィンドウハンドル、クラス名はちゃんと取れてる
AControlGetPosで取得したサイズは一定のピクセル量ズレた値が取得される(ズレ幅はソフトによって異なる?)
っていうことみたいなんで、あとはソフト毎にズレ幅修正するように対策してみる
ありがとう
924名無しさん@お腹いっぱい。:2012/10/04(木) 22:50:04.06 ID:moCWA34v0
一定ピクセルのずれなら非クライアント領域ではないかと
タイトルバーとかウィンドウ枠とか(昔ながらの)メニューたかの

ならSysGetで得た値のオフセット計算するか
DllCallでClientToScreen叩くかするといい

http://msdn.microsoft.com/ja-jp/library/cc428312.aspx
925名無しさん@お腹いっぱい。:2012/10/05(金) 07:25:07.97 ID:phK1yLIl0
AHKを使って本命の作業の作業時間を軽減しようとしてるのに
AHKばかりに時間を費やしてる始末。目的と手段が。。
926名無しさん@お腹いっぱい。:2012/10/05(金) 08:41:40.32 ID:xfCRSbTo0
だがそれがいい
927名無しさん@お腹いっぱい。:2012/10/05(金) 10:16:39.15 ID:jBdtVWsw0
任意日付の3ヶ月後の日付を算出したいのですが、
EnvAddでは月の計算ができずうまくいきません。
任意日付が2012/10/5なら2013/1/5、
任意日付が2012/11/30なら2013/2/28(対応する日がなければ末日)、
のように算出したいです。よい方法はないでしょうか。

たとえば特定日付が存在するかチェックできれば、プラス3ヶ月した後に存在する日まで戻せば良いのですが
チェックする方法がわかりません。
928名無しさん@お腹いっぱい。:2012/10/05(金) 11:14:36.54 ID:qwUZ/SRG0
>>927
>たとえば特定日付が存在するかチェックできれば、プラス3ヶ月した後に存在する日まで戻せば良いのですが
>チェックする方法がわかりません。

FormatTimeの"間違った部分を含む部分は出力されない"ていう特性を利用するのはどうかな?
FormatTime, TimeString, 20130115, yyyyMMdd
StringLen, length, TimeString
OutputDebug, %TimeString%:%length%

FormatTime, TimeString, 20130230, yyyyMMdd
StringLen, length, TimeString
OutputDebug, %TimeString%:%length%
929名無しさん@お腹いっぱい。:2012/10/05(金) 12:29:46.62 ID:jBdtVWsw0
>>928
こんな方法があるとは気づきませんでした。
これでうまくいきそうです。ありがとうございました。
930名無しさん@お腹いっぱい。:2012/10/05(金) 22:01:12.52 ID:u6a8FEfc0
Gui表示でグループボックス内の背景色を変更したい時には、
どうすればいいのでしょうか?
多分、Gui,Colorを使えば出来そうな気がするんだけど、
AutoHotkeyJpの説明を眺めてても使い方がイマイチ分からない。
コントロールの背景色を指定するだけじゃ駄目なん?
931名無しさん@お腹いっぱい。:2012/10/05(金) 22:21:03.99 ID:gFJ88r0E0
%キーを割り当てようと思い
エスケープシーケンスを使って下のように書きましたがうまくいきません
どうしたら良いのでしょうか

+sc006::`%
932名無しさん@お腹いっぱい。:2012/10/05(金) 22:30:45.85 ID:4B9Yu6Mb0
send,% "%"
でよくね?
933名無しさん@お腹いっぱい。:2012/10/05(金) 22:44:25.09 ID:gFJ88r0E0
>>932
ありがとうございます
試してみます
934名無しさん@お腹いっぱい。:2012/10/06(土) 03:19:18.04 ID:OTNfqHDJ0
セミコロンをsticky shiftに割り当ててらっしゃる方は、
セミコロン自体をどこに割り当ててるのでしょうか?
935名無しさん@お腹いっぱい。:2012/10/06(土) 06:51:20.18 ID:OmkTHoJ10
>>934
sticky shift autohotkey
でググる
936名無しさん@お腹いっぱい。:2012/10/06(土) 10:21:54.57 ID:6+/FxQ700
無変換を押している間はAlt+Spaceが押され続けるという設定にしてるんですが

vk1Dsc07B::
SendInput {alt down}{Space down}
keywait, vk1Dsc07B
SendInput {alt up}{Space up}
return

これを無変換キーを押しているときにCtrlが押されたら
AltとSpaceを押し上げ、更にCtrlが押し続けられる、という動作に変更したいのですが
何か良い方法はないでしょうか?

例えばAキーとBキーを同時している最中にCキーを押すとその時点でAキーとBキーの押し上げ判定が発生し、
Cキーを押すのをやめない限りはCキー押し下げ判定は続く、という動作をさせたいのです。
937名無しさん@お腹いっぱい。:2012/10/06(土) 10:34:19.57 ID:OmkTHoJ10
vk1Dsc07B::
SendInput {alt down}{Space down}
while getkeystate("vk1Dsc07B", "P") && !getkeystate("ctrl", "P")
sleep, 50
SendInput {alt up}{Space up}
return
938名無しさん@お腹いっぱい。:2012/10/06(土) 12:41:14.73 ID:6+/FxQ700
>>937
動きました。ありがとうございました。

あと一つ質問なんですけど、ペンタブレットのサイドスイッチみたいな、キーボードマウス以外のボタンをAHKで制御することってできますかね?
ペンタブレットのドライバ制御だと割り当てられるボタンが少なすぎて不便なんですよね。
939名無しさん@お腹いっぱい。:2012/10/06(土) 13:00:32.20 ID:WG82Ja9h0
割り当てられるボタンが少ないというのは
ペンタブ側ソフトだと登録可能なショートカットキーが少ないということだろうか
AHKでホットキーを設定するのはペンタブのボタンでは無理
使わないキー(Ctrl+Shift+Alt+A など)をペンタブ側のソフトで登録しておいて
AHKではそのキーが押された時の詳しい挙動を指定しておけばいいのでは
^+!a::function()
940名無しさん@お腹いっぱい。:2012/10/06(土) 13:23:13.33 ID:6+/FxQ700
>>939
できないですか。具体的にやりたいことがペンタブのペンのサイドスイッチに無変換キーを割り当てて、
無変換キーの中に>>937の人に教えてもらったものを入れたいんですけど、ペンのボタンを押しているだけなんでgetkeystateもkeywaitも機能しなくなってしまうわけです。
なのでペンタブのボタンのキーステイトがとれたら、もしくはペンタブのサイドスイッチに直接ショートカットが割り当てられないかなと思ったんですが。
941名無しさん@お腹いっぱい。:2012/10/06(土) 14:41:22.50 ID:OmkTHoJ10
最初からペンタブでやりたいことを全て書くようにしたほうがいいよ。
それとペンタブにも出来るものと出来ないものがあるかもしれないので隠したり後出しにせず、最初から全て書く。
答える方もエスパーしないといけないので面倒になってレスがつかなくなるし、二度手間にならずに済む。
以下、Wacomのペンタブの場合。
他のメーカーのは持ってないので判らん。

f12::f13

を記述したスクリプトを実行し、ペンタブ設定でのサイドボタンのキーストロークの割り当てで
F12を押すと {F13} となるので名前を適当に付けて登録する。
あとはスクリプトに↓に書き換え(または追加)。

f13::
SendInput {alt down}{Space down}
while getkeystate("f13") && !getkeystate("ctrl", "P")
sleep, 50
SendInput {alt up}{Space up}
return
942名無しさん@お腹いっぱい。:2012/10/06(土) 15:06:28.59 ID:OmkTHoJ10
raonicはすごい勢いでランキング上げてるやん
これはやばいかもしれん
943名無しさん@お腹いっぱい。:2012/10/06(土) 15:07:04.37 ID:OmkTHoJ10
ごめんなさい、まちがえました
944名無しさん@お腹いっぱい。:2012/10/06(土) 15:35:54.30 ID:6+/FxQ700
>>941
すいません。やりたいことが違いました。
今現在サイドスイッチにCtrlを割り当て使ってるんですけどこの状態だとサイドスイッチを押してもキーボードのCtrlを押した時のようにCtrlのキーステイトがとれないので
>>937で教えてもらったスクリプトが使えない状態でした。ペンタブのサイドスイッチをキーボードのCtrlキーと同じように動作させることは不可能でしょうか?
使っているペンタブはワコムのものです。
945名無しさん@お腹いっぱい。:2012/10/06(土) 15:46:37.36 ID:OmkTHoJ10
946名無しさん@お腹いっぱい。:2012/10/06(土) 17:20:44.55 ID:70TiZwub0
※ 実機持ってないから、適当な事を書く

デバイスのユーティリティでキーアサインしたキーをAHKで拾えるかどうか確かめる
具体的にはCtrl に割り当てたなら、AHKで「Ctrl::MsgBox」とかしてダイアログが出れば拾えてる
拾えない場合は、AHKでは無理なので諦める

次に、デバイスのボタンDOWNとUPに同期してキーDOWN,UPが発行されるか確かめる
上の例だと「Ctrl Up::MsgBox UP!!」みたいなホットキーがボタンUPで動けばOK
これが動かないと押し下げ中のキーステート管理は無理なので諦める

上記の両方がOKならあとはAHKでお好きなように


※ どうしても諦められない場合・・・玄人用

ツールのキーアサインをしないで、直接入力を使ってデバイスの信号を解析すれば実現できるかもしれない
デバイスマネージャでがHID系と登録されていればおそらくいける
ただデバイスがどのクラス(UsagePage,Usage)に属していてどんな信号が流れているかは分からないので、
やる場合は根気が必要

ヒントは WinAPIの RegisterRawInputDevices と WM_INPUT、
AHKでは DllCall と OnMessage、NumGet/Put、VarSetCapacity


ただ、
この手の機種依存情報は汎用スクリプトを語るこのスレよりも、
デバイスのスレやブログやまとめサイトなどに情報が集約されていてることも多いということを言っておく
947名無しさん@お腹いっぱい。:2012/10/06(土) 17:37:41.64 ID:JiloCMKU0
6+/FxQ700には無理だろw
948名無しさん@お腹いっぱい。:2012/10/06(土) 18:24:45.68 ID:OmkTHoJ10
>>937>>941 の違いをよく見て、>>945 のリンク先を参考に >>937 をちょこっと修正すればいけるんだけど
それすら出来ないならAutohotkeyで弄るのは諦めたほうがいいと思う
949名無しさん@お腹いっぱい。:2012/10/06(土) 20:09:48.37 ID:0qmKxIrw0
スレチかも知れないけど
autohotkey的なものをubuntuで使うとしたら何がいい?
wineだとだめだ
950名無しさん@お腹いっぱい。:2012/10/06(土) 21:10:49.32 ID:k70YyhEU0
autohotkey的なものの定義によるだろうね
キーリマップはcommon lispベースのアプリがあった気がする
951名無しさん@お腹いっぱい。:2012/10/06(土) 21:31:01.91 ID:0qmKxIrw0
>>950
スキャンコードから文字へのリマップができたらいいと思ってる
そのままahkスクリプトつかえるIronAHKってどうやって使うの
952名無しさん@お腹いっぱい。:2012/10/06(土) 22:45:08.57 ID:9VpwmPBZ0
単純なリマップだけでいいのならxmodmapがいいんじゃないかね
IronAHKは使ったことないから分からない
修飾キー付きのキーをリマップを簡単にしたいならAutoKeyが使いやすかったよ
953名無しさん@お腹いっぱい。:2012/10/06(土) 23:00:58.19 ID:9VpwmPBZ0
上記のペンタブについて、興味湧いたから調べてみた
手元にあったWacom Bamboo CTH-460で調べてみたが、普通にペンボタンのUpを問題なく取得できた
試してないがBambooでできるのならIntuosでもさすがにできるだろう

試した手順
1.ペンボタンにF12を割り当て
2.AHKで「F12」、「F12 up」にそれぞれホットキー割り当て
3.両方共問題なく反応した
つまりF13やらをペンボタンに割り当てればそれでおしまい
つまり >>946 さんの紹介したややハードな方法はやらなくてよい様子
954名無しさん@お腹いっぱい。:2012/10/07(日) 01:19:21.71 ID:m0HOG3XZ0
このスレの住人は本当にいい人が多いなぁ
955名無しさん@お腹いっぱい。:2012/10/07(日) 01:33:15.04 ID:2cSdQJ9x0
ありがとうございます
956名無しさん@お腹いっぱい。:2012/10/07(日) 01:36:56.52 ID:M+fFJvvN0
昔は紫切断が頻繁にやっている人が多くて
偽装緑が増えてバッファしまくりになってたことあるんだよ
んで、やっと偽緑についての解説サイトができて
解消されたんだよ
957名無しさん@お腹いっぱい。:2012/10/07(日) 01:37:52.26 ID:M+fFJvvN0
ごばく
958名無しさん@お腹いっぱい。:2012/10/07(日) 09:49:29.09 ID:mWuS3qCu0
>>944ですがペンタブのサイドスイッチのキーステイトが取得できないのでうまくいきません。

vk1Dsc07B::
Send {alt down}{Space down}
loop
{
Sleep, 15
Getkeystate, Aclick, vk1Dsc07B, p
Getkeystate, Bclick, ctrl
If Aclick = u
break
Else if Bclick = d
break
}
Send {alt up}{Space up}

return

無変換キーを押している間はAlt+Spaceでツール一時切り替えし(Clip Studio Proのズームツールです。)、
無変換キーを押している最中にCtrlキーを押すとズームツール切り替えを停止して、Ctrlキーの消しゴム一時切り替えツールに変更させたいのですが。
ワコムのペンタブのサイドスイッチにCtrlキーを割り当てた状態で無変換キーを押したままサイドスイッチを押した場合はbreakされない状態です。
キーボードのCtrlキーを押した場合はbreakされます。サイドスイッチに割り当てたCtrlをキーボードのCtrlと同じように動作させることはできないでしょうか?
959名無しさん@お腹いっぱい。:2012/10/07(日) 10:41:35.88 ID:hzei1wjL0
>946も言ってるが押下情報拾えないならAHKの基本機能では無理じゃね

以前、CG用補助入力総合スレで 入力装置の制御用ツールが話題になってた
AHKより楽かつ柔軟に制御できるつって紹介されてたから試してみたら?
たぶんこれ
http://toro.2ch.net/test/read.cgi/cg/1330719719/9
960名無しさん@お腹いっぱい。:2012/10/07(日) 10:57:06.28 ID:6YSHSpmc0
ほぅ、便利そうなツール&情報だな

普段使わない F12〜F24とかにマッピングして、#InputLevel で制御すれば
(多重キーマップみたくなるけど)もっとスマートに設定できそう
961名無しさん@お腹いっぱい。:2012/10/07(日) 11:11:32.66 ID:oxD8gGBn0
Hid Macrosでできるのか?
ともあれキワモノ設定は使用感を上げることには基本的にならないから
そろそろもっとシンプル(あるいは常識的、なおかつまとも)な設定にすべき
なぜ無変換を押したまま別ボタンでCtrlを押し下げしたいのか分からない。かなり分からない

そしてkeystateが取れないのなら、取らなくてもいいようにスクリプトの変更をまず考えるのが当然
ペンボタン→F13
F13::(Alt押し上げ、Space押し上げ、そしてCtrl押し下げ)
手にしたい挙動が分からないからこれを求めているのかは知らないが
962名無しさん@お腹いっぱい。:2012/10/07(日) 11:20:58.88 ID:6NSGqO4q0
昔HidMacros使ってたけど最新ドライバのペンタブには一切反応しないよ
ドライバを610あたりまで戻せるなら、ペンタブからのキー入力は
仮想HIDキーボードデバイスとして動作してたからHidMacrosに限らず何でもいけた
ただ610はWin7が出る前のドライバだから7で使うには不具合満載
963名無しさん@お腹いっぱい。:2012/10/07(日) 11:39:12.68 ID:QRQbx73z0
Clip Studio Pro を持ってないので、とりあえずPhotoshopで試したらいけた方法を。
但し、キーボードのCtrlの場合、Ctrlを離すとキーを何も押していない状態になる。
サイドボタンを押して離した場合は無変換キーを押していた状態に戻る。
特殊な使い方なのでもっと試行錯誤すればどちらを押しても同じ挙動にすることができるかもしれない。
ちなみにSaiでは動かず(SaiがAhkよりもOSに近いところでキーを取得するためahkで乗っ取れないキーや組み合わせがあるため)

サイドボタンに F13 を割り当てる( >>941 参照)

vk1Dsc07B::
Send {alt down}{Space down}
loop
{
Sleep, 15
Getkeystate, Aclick, vk1Dsc07B, p
Getkeystate, Bclick, ctrl, p
Getkeystate, Cclick, f13
If ( Aclick = "u" || Bclick = "d" || Cclick = "d" )
break
}
Send {alt up}{Space up}
if ( Cclick = "d" ) {
send, {ctrl down}
keywait, f13, L
send, {ctrl up}
}
return
964名無しさん@お腹いっぱい。:2012/10/07(日) 11:53:06.81 ID:mWuS3qCu0
>>959
ちょっと調べてみますどうもです。

>>961
ペンタブサイドスイッチにF13を割り当て
F13::
send {alt up}{space up}{ctrl down}
return
としてみましたがダメでした。

説明すると長くなるんですけど、自分の手癖でボタンの切り替え時に不具合がでるので今の設定にしたいんです。
965名無しさん@お腹いっぱい。:2012/10/07(日) 11:53:22.29 ID:QRQbx73z0
これでキーボードのCtrlとサイドボタンの挙動が一緒にはなった

vk1Dsc07B::
Send {alt down}{Space down}
loop
{
Sleep, 15
Getkeystate, Aclick, vk1Dsc07B, p
Getkeystate, Bclick, ctrl, p
Getkeystate, Cclick, f13
If ( Aclick = "u" || Bclick = "d" || Cclick = "d" )
break
}
Send {alt up}{Space up}
if ( Cclick = "d" ) {
send, {ctrl down}
keywait, f13, L
send, {ctrl up}
}
if getkeystate("vk1Dsc07B", "P") {
keywait, ctrl, p
gosub, vk1Dsc07B
}
return
966名無しさん@お腹いっぱい。:2012/10/07(日) 11:55:39.00 ID:mWuS3qCu0
>>963
それでClip paint studioでも動きましたが、この設定はF13に
f13::
SendInput {alt down}{Space down}
while getkeystate("f13") && !getkeystate("ctrl", "P")
sleep, 50
SendInput {alt up}{Space up}
return
を入れないとダメですよね?最初におかしな質問してしまった自分が悪いんですけど
サイドスイッチにはCtrlキーを割り当てておきたいんです。サイドスイッチにCtrlを割り当てたままでは無理ですかね?
967名無しさん@お腹いっぱい。:2012/10/07(日) 12:03:39.85 ID:mWuS3qCu0
>>965
すいません。
f13::send {ctrl down}
f13 up::send {ctrl up}
にしてそのスクリプトを使ってみましたが問題なく動きました。F13の設定はこの設定で良かったんでしょうか?

ありがとうございます。これでやっと絵がかけます。
968名無しさん@お腹いっぱい。:2012/10/07(日) 12:12:19.11 ID:oxD8gGBn0
結局keystate取れてるじゃないか。もう何が何だか
F13::Ctrl
969名無しさん@お腹いっぱい。:2012/10/07(日) 12:23:28.90 ID:mWuS3qCu0
>>968
リマップだとダメでした。Ctrlを押し続ける判定がこないんでだめみたいです。
サイドスイッチにCtrlを割り当てたときはキーステイトとれませんでした。
970名無しさん@お腹いっぱい。:2012/10/07(日) 12:38:03.79 ID:QRQbx73z0
>>967

>F13の設定はこの設定で良かったんでしょうか?
挙動に問題がなければいいんじゃないかと。

gosub, vk1Dsc07B
の部分は戻ってくる必要がないので
goto, vk1Dsc07B
の方がいいかも。
体感出来るほどの差は感じられないのでどっちでもいいんだけどね。
971名無しさん@お腹いっぱい。:2012/10/07(日) 13:09:30.18 ID:mWuS3qCu0
>>970
そうですか。どうもありがとうございました。
972名無しさん@お腹いっぱい。:2012/10/07(日) 16:27:17.98 ID:2y7254qm0
ツールチップのx座標指定でツールチップの左端ではなく、
右端の座標を指定するにはどうすればいいのでしょうか?
973名無しさん@お腹いっぱい。:2012/10/07(日) 17:06:04.44 ID:sL3nGk1s0
>>952
xmodmapでできた
感謝
でも装飾キー付きのができないのが難点だな
974名無しさん@お腹いっぱい。:2012/10/07(日) 18:57:42.54 ID:QRQbx73z0
>>972
一旦、Tooltipを表示して横幅を取得し、移動させればいいんじゃない

tooltip, hoge
WinGetPos, x, y, w, , ahk_class tooltips_class32
winmove, ahk_class tooltips_class32, , 300-w, 300
;ToolTip, hoge, 300-w, 300 ; でもいいけど
975名無しさん@お腹いっぱい。:2012/10/07(日) 20:32:23.65 ID:zXiRpWfd0
特定のアプリでホイールを操作した時だけ別のキーコードを送りたい場合どうすれば良いのでしょうか?

$WheelDown:: ;ループしないように$を付けてみた
;$WheelUp:: ;DownとUpを共通のスクリプトで行いたいが出来ないためコメントアウト
WinGetActiveTitle, OutputVar
if (%Outputvar% = hoge hoge) ;hogeとhogeの間のスペースでエラー
MouseClick, Right
else
MouseClick, WheelDown,, A_EventInfo ;フックしていないかのような動作を行いたい
976名無しさん@お腹いっぱい。:2012/10/07(日) 20:45:48.27 ID:KhxdagiG0
>>975
#IfWinActive
977名無しさん@お腹いっぱい。:2012/10/08(月) 00:05:46.27 ID:YuacZDD90
>>974
なるほど。大変参考になりました
ありがとうございます
978名無しさん@お腹いっぱい。:2012/10/08(月) 12:57:28.64 ID:WWaArRPY0
>>976
こんなそのものズバリな方法があったんですね
勉強になります

ありがとうございました
979名無しさん@お腹いっぱい。:2012/10/08(月) 14:25:11.45 ID:WsRQLv7u0
マウス系の操作なんで #If のサンプルも読んでおけ
980名無しさん@お腹いっぱい。:2012/10/09(火) 04:05:07.50 ID:K+QgA1wq0
ソウカ
死・ね
ソウカ
死・ね 
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね 
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね 
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
ソウカ
死・ね
981名無しさん@お腹いっぱい。:2012/10/09(火) 07:39:00.59 ID:0UFoq/QY0
次スレ
AutoHotkey スレッド part15
http://anago.2ch.net/test/read.cgi/software/1349735581/
982名無しさん@お腹いっぱい。:2012/10/09(火) 12:16:54.72 ID:rl+j4LkQi
>>981 おつ

週末はスレが進むな
983名無しさん@お腹いっぱい。:2012/10/10(水) 03:33:30.02 ID:wuic37gVO
ドットネットとAHKどっちが簡単ですか?
984名無しさん@お腹いっぱい。:2012/10/10(水) 05:35:41.34 ID:Hevp0aC+0
何をしたいのかにもよる
985名無しさん@お腹いっぱい。:2012/10/10(水) 17:28:07.73 ID:Jb0Y678M0
AutohotkeyLでCloseボタンを非表示にしたいのですが
Gui , +ToolWindow で表示したタイトルバーにボタンが表示されないウィンドウを
GUI, Minimize で最小化させると 画面左下に小さい長方形のタイトルバーが残ります。
PostMessage, 0x0112, 0xF020,,,A でも同じでした。
Gui , -Caption や Gui , +ToolWindow を外したGui だと正常に最小化されます。
Gui , -Caption の他に回避方法は無いでしょうか。
986名無しさん@お腹いっぱい。:2012/10/10(水) 18:59:32.10 ID:7zSNUVdp0
コンビネーションキーの機能を多用しているのですが、モディファイアキー(?)に
使っているキーのみの動作に若干でも支障がでていないか不安です。
ゲームでも使用しているので気になります。

チルダを使えば万事なんの問題もないのでしょうか?
たとえば x & F1 みたいにxをモディファイア的な動作にしたいのですが、
1.チルダさえつけておけばxのみの動作にまったく問題ないのでしょうか?
2.後のキーのF1のほうはチルダなどなんの手当もしなくてもOKなのでしょうか?
おしえてください。
987名無しさん@お腹いっぱい。:2012/10/10(水) 19:24:08.06 ID:r9ED18Cpi
>>986
1&2は問題ないけど、別の問題がある

3. 乗っ取らないので第一キーを押した段階で普通にキーが発行される
x を第一キーにしたら x が出力されるし、キーリピートもする

4. チルダを外したらキーUpまでキー発行は遅延されるし、キーリピートは発生しない
※ キーUpの直前まで第二キーが押されたかどうか監視するため

無変換などの非文字キーなら支障は限定的だけど、通常の文字キーだと反応性が悪くて辟易するはず

988名無しさん@お腹いっぱい。:2012/10/10(水) 20:19:53.03 ID:7zSNUVdp0
>>987
なるほど、ありがとうございます。
3について、そういえばそうでした。
最後の文にあるように非文字なら限定的ならうまくいくっぽいですね。
4はなるほど遅延の意味はこうだったのか。
そうかそうか3があるかぁ・・。そう考えるとすげー限られるなぁ。
逆にファンクションキーをモディファイアにするか。それでも意図しない
ファンクションキーの操作が発生するんだろうけど。
ありがとうございました。
989名無しさん@お腹いっぱい。:2012/10/11(木) 00:26:01.20 ID:qYCsXWrZ0
>>985

閉じるボタンとかはOSが描画するところだからなぁ、左上のアイコンも消えていいなら↓

Gui, -0x00080000 ; WS_SYSMENU
Gui, Add, Button,, Close
Gui, Add, Button, x+10 yp+0, Exit
Gui, Show
Exit
ButtonMinimize:
WinMinimize
Return
ButtonExit:
ExitApp
990985:2012/10/11(木) 07:46:42.52 ID:UkkmrnVc0
>>989 有難うございました。
希望通りの動作になりました。
991名無しさん@お腹いっぱい。
とりあえずここを使い切ろう