AutoHotkey スレッド part16

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
■配布元
http://www.autohotkey.com/
本家Autohotkeyは事実上開発停止で、派生のAutoHotkey_L(AHKL)が主流。
新規利用者には日本語の扱いで不具合の無いAHKLのユニコード版の利用を推奨。

■前スレ
AutoHotkey スレッド part14
http://anago.2ch.net/test/read.cgi/software/1333372506/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
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/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/
http://www.autohotkey.net/paste/ ※31日で削除されます。

■派生版
IronAhk (.NET製、クロスプラットフォーム)
http://www.ironahk.net/
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.net/~tinku99/ahkdll/

テンプレ>>2-10
2名無しさん@お腹いっぱい。:2013/05/05(日) 12:48:51.58 ID:QdZjR4QB0
■重要事項
オリジナルである、本家 "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名無しさん@お腹いっぱい。:2013/05/05(日) 12:50:34.80 ID:QdZjR4QB0
■過去スレ
@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/ Mhttp://anago.2ch.net/test/read.cgi/software/1333372506/
Nhttp://anago.2ch.net/test/read.cgi/software/1349735581/

以下FAQ等

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

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

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名無しさん@お腹いっぱい。:2013/05/05(日) 12:54:00.03 ID:QdZjR4QB0
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名無しさん@お腹いっぱい。:2013/05/05(日) 12:56:57.30 ID:QdZjR4QB0
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/pages/17.html の「IME.ahk」を使いましょう。
7名無しさん@お腹いっぱい。:2013/05/05(日) 12:57:39.65 ID:QdZjR4QB0
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)

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

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

Q3:GUI作るのめんどくせ〜〜
A3:公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。

Q4:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
  > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
  > → 実行中、 …:割り込み終了待ち
  > 元スレッド   →→→→→→……………………………………→→→→
  >                  ★割込                ↑再開
  > 割り込みスレ          →→→→…………→→→→→→END
  >                        ◆割込 ↑再開
  > 更に割り込み                →→→END
 ※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。
8名無しさん@お腹いっぱい。:2013/05/05(日) 12:58:51.34 ID:QdZjR4QB0
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名無しさん@お腹いっぱい。:2013/05/06(月) 08:35:17.27 ID:rnk4I97w0
>>1 乙

前スレはこれね。
AutoHotkey スレッド part15
http://anago.2ch.net/test/read.cgi/software/1349735581/
10名無しさん@お腹いっぱい。:2013/05/06(月) 12:31:03.64 ID:67MLjgt/0
>>1
AutoHotkey.dllが404だしもう開発してなさそうやね
次から削ったほうがいいかも
11名無しさん@お腹いっぱい。:2013/05/06(月) 14:12:04.77 ID:iL+HEkij0
>>10
AutoHotkey.dll
ttp://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-dll-txt.html

AutoHotkey_H
ttp://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html
AutoHotkey_H needs to be installed manually.
AutoHotkey.exe
AutoHotkey.dll
AutoHotkeySC.bin
AutoHotkeyMini.dll

AutoHotkey Version 1.1 2013/04/19
AutoHotkey2 Alpha    2013/04/19


> AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
AutoHotkey_H was invented by tinku99 and enhanced by HotKeyIt. It is a custom build of AutoHotkey_L (ttp://l.autohotkey.net/ by Lexikos)
AHK_H includes all AHK_L features and some new features as well.
12名無しさん@お腹いっぱい。:2013/05/06(月) 14:22:15.54 ID:/9iowbRk0
AHKportableは採用外?
13名無しさん@お腹いっぱい。:2013/05/07(火) 01:57:16.17 ID:LATw00FG0
今autohotkeyもどきを描いてて
スクリプト(ユーザーが書く部分)を scala によって scala または java のコードに自動変換してそれをコンパイルするというフローで進めてるんですが
ベターな案ってあります?
14名無しさん@お腹いっぱい。:2013/05/07(火) 02:37:05.60 ID:jBOWI75r0
>>13
スクリプトを直接コンパイル
15名無しさん@お腹いっぱい。:2013/05/07(火) 02:40:39.11 ID:T62Z+97Q0
>>14
コンパイラそのものを書くことになり大変なので勘弁
16980:2013/05/07(火) 05:15:59.39 ID:IV6ZnMW00
前スレの>>980です。コード貼ってくれた方ありがとうございましたー
貼られたのを元にいろいろ見てたのですが、やっぱ自分にはできそうもないので一旦諦めます><
このソフトが自由自在に使える人が羨ましいですほんと・・・
17名無しさん@お腹いっぱい。:2013/05/07(火) 06:04:06.83 ID:jBOWI75r0
>>15
コンパイラが用意されてる言語をスクリプトとして利用する。
追加機能はプリプロセッサで処理。
プリプロセッサを作るだけならそんな大変でもない。
18名無しさん@お腹いっぱい。:2013/05/07(火) 12:30:48.36 ID:LATw00FG0
>>17
そうですね
プリプロセッサみたいなものを作る方向なんです
そのものになるかはちょっと微妙ですが
19AHK_another (仮称) 開発者:2013/05/07(火) 20:59:21.60 ID:LATw00FG0
AHKをつくるにあたって
こういうところがAHKを使っていて不足、みたいなところがあったら聞かせていただけないでしょうか?

今考えていることの一つは if文で } の位置 を行末におけるとか 一文にに命令かけるとか、普通のプログラミング言語っぽくしたほうが使いやすいかな、というところです
20名無しさん@お腹いっぱい。:2013/05/07(火) 21:06:33.47 ID:bTm3l9Co0
一行いいね
いっそ全部JavaScript互換で
21名無しさん@お腹いっぱい。:2013/05/07(火) 22:14:39.90 ID:uMyMH1JG0
AHKで一番のクソ仕様は&でコンボキーにした場合修飾キーが死ぬってとこだと思う
しかもwinactiveでくくっても死んだままが続くっていう。

だから前スレ915でスペースで殺さない方法としてワンショットモデファイヤする場合冗長なスクリプトになっちゃってるんじゃないかな
22名無しさん@お腹いっぱい。:2013/05/07(火) 22:40:29.24 ID:p/9A0hbn0
>>21
え、どういうこと?
23名無しさん@お腹いっぱい。:2013/05/07(火) 22:52:38.35 ID:uMyMH1JG0
たとえばaを修飾キーにして、Bで何らかの動作をさせると

a & b::send,なんちゃら

ってかくじゃん?
この場合aが修飾キーになって、入力を受け付けなくなる。
a up::send,aで回避できるといえばそうなんだけど(実際ワンショットモデファイヤってそういうものだし)
これ#ifwinactiveでくくった先でも&のほうが優先されて、押しっぱなしは入力を受け付けない。

ソフトによってはサスペンドさせないと致命的な動作をする。
たとえばアクションゲームとか、押しっぱなしで移動を行うもの。
コレを回避するにはAHKファイルを2個走らせるとかいう力技もあるんだけど動作が不安定で、ワンショットモデファイヤのサンプルスクリプト書いてる人はだいたいコレをプログラマブルに回避してるっぽい。

毎回サスペンドさせればいいっちゃそれでもいいけどなかなかスマートにはいかないね
24名無しさん@お腹いっぱい。:2013/05/07(火) 23:56:42.41 ID:BgXliEGK0
#ifだと多分大丈夫
25名無しさん@お腹いっぱい。:2013/05/08(水) 00:03:57.97 ID:MvVzCznJ0
#If GetKeyState("a")
b::send, c
#If
定義が冗長っちゃ冗長だが
26名無しさん@お腹いっぱい。:2013/05/08(水) 10:51:12.24 ID:42UEiFaW0
キーリピートも擬似的に再現してるってのが結構キツイね

downとupを書き込まずにキー本来の動作をさせるってどうすれば出来るんだろう。
27名無しさん@お腹いっぱい。:2013/05/09(木) 12:24:25.60 ID:EUQaxLeJ0
いや、キーリピートがあるのが本来の動作なわけだが
28名無しさん@お腹いっぱい。:2013/05/09(木) 12:36:03.32 ID:QB3U+2Fa0
AHKのキーリピートは内部で連打処理してるんじゃなかったっけ
見た目的には同じ動作だけど
29名無しさん@お腹いっぱい。:2013/05/10(金) 11:52:30.24 ID:h1Bh3FtB0
ゲームで
Esc & h :: Send, {right } 動作の
押しっぱなしが効かなかったことがあるそのへんかね
30名無しさん@お腹いっぱい。:2013/05/11(土) 11:55:02.47 ID:NX7B9RFo0
本来の動作させないとゲーム関係はめちゃくちゃな動きするな
ロックマンっぽい横スクロールゲームとかダッシュ連発して動けなかった。

指定キーdown、指定キーupでうまく動いたけど
31名無しさん@お腹いっぱい。:2013/05/12(日) 12:09:27.76 ID:p08Zl6y+0
"名前を付けて保存" ダイアログを出しているアプリケーションなどを
特定する方法ってないですか?

Chromeの出した"名前を付けて保存"ダイアログだったら 〜を実行
のように処理を分けたいのですが。
32名無しさん@お腹いっぱい。:2013/05/12(日) 16:43:29.97 ID:BTHeMZYr0
WinGet, OutputVar , ProcessName, 名前を付けて保存
33名無しさん@お腹いっぱい。:2013/05/12(日) 22:24:42.38 ID:p08Zl6y+0
>>32
ありがとう
34名無しさん@お腹いっぱい。:2013/05/14(火) 20:17:37.05 ID:KcsD5OQR0
autohotkey は内部的にreg だか dll使ってるけど
このコマンドを使うと〜みたいな記述を本家でつい先日見かけたんですが
場所がわからなくなってしまいました
心当たりある人いますか?
35名無しさん@お腹いっぱい。:2013/05/14(火) 23:32:32.46 ID:Pde2ubu40
左手入力の配列って皆どうしてるんだ
さっぱり思いつかない
36名無しさん@お腹いっぱい。:2013/05/15(水) 13:16:35.10 ID:RcGNVaBf0
前スレ後半でちょっと話題になってたが、鏡面反転がよさげだ
37名無しさん@お腹いっぱい。:2013/05/15(水) 13:39:45.04 ID:+wmfhYuT0
スクリプト中でマウス使って範囲を指定するのですが、
エクスプローラ上でマウス使って範囲選択するときのように
該当範囲を点線(実線でもいい)で表示したいです。
何か良い案か関数かコマンドありませんか?

今のとこ位置合わせに使ってる下のを流用するつもりなんですが、
重いしスマートじゃないしで。
そもそもAHKって描画機能はないよね?
普通は外部ツールと連携してるんでしょうか
久々に更新履歴見たらGUIが作りやすくなってるねー

CoordMode, Mouse, Screen
SetTimer, beam, 1000
beam:
MouseGetPos, msX, msY
If( msX+1=mnX AND msY+1=mnY ) ;マウスが動いてない時
Return
mnX:=msX+1
mnY:=msY+1
ToolTip,% "x= " mnX "`n" "y= " mnY
Gui, 3:+LastFound -Border +ToolWindow +AlwaysOnTop -Caption +0x02000000 -0x0CC00000 +E0x00080020
Gui, 3:Color, 0x00FF00
WinSet, Transparent, 255
WinSet, Region, 0-%msY% 0-%mnY% %msX%-%mnY% %msX%-800 %mnX%-800 %mnX%-%mnY% 1280-%mnY% 1280-%msY% %mnX%-%msY% %mnX%-0 %msX%-0 %msX%-%msY%
Gui, 3:Show, NA x0 y0 w1280 h800
Return
38名無しさん@お腹いっぱい。:2013/05/15(水) 13:43:20.46 ID:RcGNVaBf0
AHKに描画機能ってのは、どうなんだろ?
マウスジェスチャーでは線引けるけど、あれはどういう処理してるか分解したことないからわからない
39名無しさん@お腹いっぱい。:2013/05/15(水) 14:04:52.51 ID:+wmfhYuT0
マウスジェスチャーで軌跡が描かれるって感じですか?
流行らせるページの人のだよね。API使ってそうだ見てみます
40名無しさん@お腹いっぱい。:2013/05/15(水) 15:18:36.74 ID:+wmfhYuT0
線じゃねーじゃんw
gdi.dllで文字取り出してるのはすごいんだけど、
表示させ方がAHKのGUIっていう同じ方法でした。
41名無しさん@お腹いっぱい。:2013/05/15(水) 15:39:29.42 ID:BHu5nIoa0
長方形なら、Region より TransColor でボーダー以外を透過するほうが軽そうな気がする。

Gui, Color, Red
Gui, +LastFound
WinSet, TransColor, Red
Gui, -Caption +Border
Gui, Show, NA h100 w100


Gdip.ahk ってのを使えば簡単にいろいろ描画できるらしいが、詳しくは知らない。
42名無しさん@お腹いっぱい。:2013/05/15(水) 17:37:18.30 ID:ARs5ecKW0
慣れてくるとキーボードカスタム楽しいな
常駐ソフトもかなり減ったし
43名無しさん@お腹いっぱい。:2013/05/15(水) 23:35:35.84 ID:+wmfhYuT0
>>41
すばらしいアイデアをありがとう

Gdip.ahk色々便利に使えそう、そのうち使おう。
最終的な表示方法は同じみたいだから
今回は41使いますサンクス
44名無しさん@お腹いっぱい。:2013/05/17(金) 15:58:27.97 ID:VgDerb0W0
Autohotkeyってgosubで引数に式入れてサブルーチンに渡すことって出来る?
ググり方が悪いのかもしれないけど調べても具体例がなかった
45名無しさん@お腹いっぱい。:2013/05/17(金) 17:12:05.19 ID:8F6yBHbz0
素直に関数じゃアカンの?
46名無しさん@お腹いっぱい。:2013/05/17(金) 17:21:41.22 ID:6iiycOG50
つーかまんま関数じゃないのかソレ
47名無しさん@お腹いっぱい。:2013/05/17(金) 18:58:48.80 ID:6iiycOG50
もしかして複数行の式を渡そうとしてるのかな
48名無しさん@お腹いっぱい。:2013/05/19(日) 08:57:21.24 ID:Jvufv/nW0
MouseGestureL で、 AutoHotKey で定義してあるキー入力を
発生させることって出来る?

要は、あるマウスジェスチャーをしたら Ctrl+R を発生させるようにして、
その Ctrl+R を AutoHotKey に拾わせる(AutoHotKey に設定してある Ctrl+R の動作をさせる)
という具合。

普通に書くと AutoHotKey は反応せず、そのまま Ctrl+R が送られるようで・・・

おんなじマクロを AutoHotKey と MouseGestureL に書くのがめんどいのです。
49名無しさん@お腹いっぱい。:2013/05/19(日) 09:54:45.89 ID:1MjqNKXo0
>>48
デキルヨー
MG_Userのとこがスッカラカンだから好きに書き込めばいい。
もしくはあたらしくインクルードでahkファイルを追加してやればいい。
ただし、上位に来ない記入をしないとマウスジェスチャー側が機能しなくなる
50名無しさん@お腹いっぱい。:2013/05/19(日) 09:59:16.48 ID:1MjqNKXo0
ついでにgosubでくくればマウスジェスチャーのほうでも普通に読みこんでくれる。
慣性ホイールとかはマウスジェスチャーに組み込んでおくと捗る
51名無しさん@お腹いっぱい。:2013/05/19(日) 11:01:17.17 ID:Jvufv/nW0
>>49
レスありがとう

教えていただいたのって、マクロの使い回しですよね?

キーの使い回し(なんか表現がおかしい・・・)はできないもんですかね?
52名無しさん@お腹いっぱい。:2013/05/19(日) 12:07:39.87 ID:/epFYzl60
#includeでも別プロセスでもキーボードだったら仮想キー発行でホットキーラベルには飛べるはずだけど

$^r:: ってやってるなら$はずす

control-r はダミーで実はマウスX1なんですとかだったら知らん
53名無しさん@お腹いっぱい。:2013/05/19(日) 12:58:04.98 ID:Jvufv/nW0
>>52
指摘ありがと

自分の説明が絶望的にダメだったことに気がついた

MouseGestureL で、
RB_L に

Send, ^r

と記述しておいて、上記イベント発生時にAutoHotKey の

^r::run, hogehoge

の行に書いてある run を実行したい、ということです
54名無しさん@お腹いっぱい。:2013/05/19(日) 13:03:26.25 ID:1MjqNKXo0
それはGosubじゃだめ?

RB_Lの条件内にgosub,Ctrl_r

^r::gosub,Ctrl_r

Ctrl_r:
run, hogehoge
return

で出来るんじゃないの?
55名無しさん@お腹いっぱい。:2013/05/19(日) 13:13:36.74 ID:4uOz+4+B0
Ctrl+r を拾う側がキーボードフックを使っていなければ >>52 も言っているように飛べる。
キーボードフックを使っている場合、SendLevel と #InputLevel を調整すればいい。

SendLevel, 1
Send, ^r
56名無しさん@お腹いっぱい。:2013/05/19(日) 15:03:21.67 ID:Jvufv/nW0
>>55

SendLevel, 1
を使って希望通りの動作をさせることができました。
ありがとう



>>54
AutoHotKey 側の処理はもう書いちゃってて、あとから MouseGestureL を使い始めたので、
gosub だと都合が悪かったです。

でも、参考になりました。
ありがとう
57名無しさん@お腹いっぱい。:2013/05/19(日) 16:22:22.00 ID:2Ory+5vu0
同じような質問ですが、
サイドボタンの戻る/進む暴発防止のために
autohotkey上でXButton1にScrollLock等無難なキーをリマップして、
MouseGesture.ahk上でScrollLockを新規ボタンに設定して、そのキーを使った動作定義を作りたいのですがうまく動作しません。
XButton1を押せばScrollLockキーが押された状態になるのですが、
XButton1を押しながらマウスジェスチャをしても設定した動作が発動しない感じです

上のレスを参考にして、autohotkeyのAuto-executeセクションにSendLevel, 1を設定したのですが同じでした
どうすればいいのでしょうか
58名無しさん@お腹いっぱい。:2013/05/19(日) 17:30:45.08 ID:/epFYzl60
>4
59名無しさん@お腹いっぱい。:2013/05/19(日) 18:33:24.73 ID:4uOz+4+B0
>>57
SendLevel - AutoHotkey Wiki
ttp://ahkwiki.net/SendLevel
>すべての新たに開始したホットキーまたはホットストリングスレッドではホットキーまたはホットストリングのInputLevelに等しいSendLevelを開始する。

ということなので、Auto-execute セクションで SendLevel を指定しても無駄で、
#InputLevel を設定すればいいらしい。面倒くさい仕様だね。

InputLevel を変えたくない場合は、
 SendLevel, 1
 Send, {ScrollLock down}

 SendLevel, 1
 Send, {ScrollLock up}
に分ければいいんじゃないかな。
60名無しさん@お腹いっぱい。:2013/05/19(日) 19:23:33.76 ID:2Ory+5vu0
>>59
うまくいきました!

これでマウスユーティリティソフトに頼らなくていいので
USB環境でもMouseGesture.ahkを使えるようになりました
本当にありがとうございました
61名無しさん@お腹いっぱい。:2013/05/20(月) 00:05:14.48 ID:XgcPbxYC0
s::a
a::
Send {Enter}nn{Enter}
return

sを押した時に、nnではなくaを入力させるにはどう修正すればいいですか?
6261:2013/05/20(月) 00:06:19.36 ID:XgcPbxYC0
解決したから無しで
63名無しさん@お腹いっぱい。:2013/05/20(月) 21:12:40.81 ID:+Ub9413+0
今関数で1つのキーをダブルクリックした時にsendで送るルーチンかいてるんですがエラーが出て読み込んでくれません。
何が足りないんでしょう・・・?

Doubleclick2(double, single, keypush){

Global WClick

if(A_TickCount<WClick){
sendinput % double
WClick = 0
}else{
WClick:=A_TickCount+300
keywait,%A_thishotkey%,T0.4
if(errorlevel==0){
sendinput % keypush
}else{
sendinput % single
keywait,%A_thishotkey%
}
64名無しさん@お腹いっぱい。:2013/05/20(月) 21:28:50.26 ID:+Ub9413+0
ああ、自己解決しました。

関数閉じ忘れてた
65名無しさん@お腹いっぱい。:2013/05/21(火) 00:49:54.23 ID:XfEsNhB20
関数ライブラリスクリプトを使っているのですが
あるahkファイルが参照するライブラリディレクトリを指定するにはどうすればいいのでしょうか
保存場所が離れている複数のahkファイルで1つのライブラリディレクトリを使いたいので。

usbに入れて出先で使うことを想定しているので、ライブラリディレクトリをマイドキュメントに置けないし
ahkファイル毎に置いて煩雑になるのも避けたいのです
66名無しさん@お腹いっぱい。:2013/05/21(火) 00:52:57.42 ID:Hcm+XlIT0
#Include *i %A_ScriptDir%\

インクルードとスクリプト本体のいる場所からの相対パスの合わせ技でポータブル環境でも無敵
67名無しさん@お腹いっぱい。:2013/05/21(火) 01:01:53.21 ID:XfEsNhB20
#Includeも一応試したつもりだったんですが
もう一度試してみます
68名無しさん@お腹いっぱい。:2013/05/21(火) 01:14:15.89 ID:XfEsNhB20
試した感じでは
#Include "ディレクトリパス" では#Includeを記述する際の基準ディレクトリを変えることはできても
ライブラリディレクトリを指定することはできなかったです
69名無しさん@お腹いっぱい。:2013/05/21(火) 01:24:06.30 ID:Hcm+XlIT0
ライブラリまで持ち歩きたいのならAUtohotkeyportableをDLしたほうが早いと思う。
batでポータブルexeに引数で渡せばいいよ。
70名無しさん@お腹いっぱい。:2013/05/21(火) 09:35:55.35 ID:VGxH12Zp0
大規模規制発動中なのでオープン2chにahkスレを立ててみた
http://anago.open2ch.net/test/read.cgi/software/1368920317/
71名無しさん@お腹いっぱい。:2013/05/21(火) 10:57:02.17 ID:Lvr6RAlcP
転載自由ってなんだ
まとめサイト用ってことか
72名無しさん@お腹いっぱい。:2013/05/21(火) 12:40:37.21 ID:dLI1GzYO0
関数作ったんですけど渡す変数が多くてこんがらがりそうです。

たとえば
a::kansuu("","","","","",)
みたいな事になってます。

これって"",で空欄の関数渡すところにコメントアウトで目印付けられませんか?
73名無しさん@お腹いっぱい。:2013/05/21(火) 15:04:41.39 ID:XfEsNhB20
>>69
ありがとうございました
74名無しさん@お腹いっぱい。:2013/05/21(火) 16:48:36.94 ID:pvmA3qNv0
>>72
a::kansuu("" ;コメント1
,"" ;コメント2
,"") ;コメント3
ならできるけど
kansuu("" /*コメント1*/,"" /*コメント2*/,"" /*コメント3*/)
kansuu("" ;コメント1,"" ;コメント2,"" ;コメント3)
はできない
75名無しさん@お腹いっぱい。:2013/05/21(火) 16:59:35.39 ID:XfEsNhB20
a::kansuu("","","","","",)
;kansuu("コメント1","コメント2","コメント3","コメント4","コメント5",)

とかは?
76名無しさん@お腹いっぱい。:2013/05/21(火) 17:03:06.83 ID:Jn6vjh2t0
>>71
書き込めない人用だから、書ける人がこっちへ転載してくれって意味かと
つか立てるなら避難スレってスレタイに書いといてほしかった


>>72
行バラせばできる。長くなるけど
kansuu(""  ;引数1
     ,""  ;引数2
     ,""  ;引数3
     ,"")  ;引数4

あとは関数側で必須の因数以外は省略可能にしておくといいと思う
kansuu(x, y, w="", h="",WinTitle="A",WinText="") {
  WinMove WinTitle, WinText, x, y, w, h
}
77名無しさん@お腹いっぱい。:2013/05/21(火) 17:48:59.00 ID:Hcm+XlIT0
>>75
俺はコレだな。
あとは関数そのものを分解して減らすか
78名無しさん@お腹いっぱい。:2013/05/21(火) 18:29:03.53 ID:cuFkgron0
func(arg1,/**/ arg2,/**/...)
この書き方って仮に可能だとしても、そのうち邪魔に感じると思うw
79名無しさん@お腹いっぱい。:2013/05/21(火) 18:41:20.57 ID:qggjrUsU0
過去ログにあった以下のスクリプトを実行すると、以下のエラーを吐いて機能しません

ttp://hibari.2ch.net/test/read.cgi/software/1280482227/913
>■ エクスプローラで選択中のファイルのフルパスをコピー
>  COMをりようしているので、特殊フォルダがあってもOK
>
>SetTitleMatchMode, RegEx
>#IfWinActive, ahk_class CabinetWClass|ExploreWClass
>#c::
> FileList:=
> For window in ComObjCreate("Shell.Application").Windows
>  If ( window.hwnd == WinExist() ){
>   For item in window.document.SelectedItems
>    FileList .= item.path "`n"
>   Break
>  }
> Clipboard:=FileList, window:=item:=
> Return

Error:0x80008045
Source:(null)
description:(null)
HelpFile:(null)
HelpContect:(null)
Specifically: hwnd
→  If ( window.hwnd == WinExist() ){
Continu runnning the script ?

Windows Vista Service Pack 2 (x86)
AutoHotKeyL v1.1.10.01
80名無しさん@お腹いっぱい。:2013/05/21(火) 18:42:10.18 ID:qggjrUsU0
MSDNなどを調べて、windowがShellWindows objectらしくて
hwndやdocumentといったメソッドやプロパティ?は持たない、という所まではわかったんですが
そこから先に進めません

どのように修正すれば・・・・・
というか、そもそもどこが悪いんでしょうか?
81名無しさん@お腹いっぱい。:2013/05/21(火) 20:01:22.11 ID:XXoQMdyh0
これじゃだめ?
F1::
send,^c
ClipWait 2
MsgBox % Clipboard
Return
82名無しさん@お腹いっぱい。:2013/05/21(火) 22:27:21.84 ID:qggjrUsU0
>>81
ありがとうございます。それで行けました

>>79の特殊フォルダがあってもOK、の部分が惜しい気がしましたが
ふだん使っているフォルダを幾つか試してどれも大丈夫だったので
これを使わせていただきます

にしてもすごいシンプルになったな・・
83名無しさん@お腹いっぱい。:2013/05/21(火) 22:31:08.10 ID:wCDNmVNI0
google 日本語入力で ひらがなを入力中かどうかの検出ってできます?
アルファベットを打ちたいのに ひらがなをうっちゃたときにF9で売ってしまったものを英字にしつつ
英字入力モードに直したいのです
84名無しさん@お腹いっぱい。:2013/05/21(火) 22:39:30.79 ID:Hcm+XlIT0
IMEfunk.ahkってのとはまた違うのか

a::
Send,^+{Left}
Backup := ClipboardAll
Clipboard =
Send,^x{vkF4sc029}
ClipWait,1
Send,%Clipboard%
Clipboard := Backup
Return

っていうのがそのまま使えるんじゃね
85名無しさん@お腹いっぱい。:2013/05/22(水) 00:35:44.11 ID:kp9IJWvR0
駄目だ思いつかない。
キー二連打に動作を割り当てたら、最初の1打目は絶対実行されるよね
ダブルクリックした時は最初のキー命令を破棄することって出来るのかな

もしくは

1打目からタイム計測してタイムアウトで1打目、タイムアウト前に2連打してたらダブルクリック動作

ていうふうにしたいんだけど書き方が思いつかない
86名無しさん@お腹いっぱい。:2013/05/22(水) 00:46:41.83 ID:KRvfrW3U0
87名無しさん@お腹いっぱい。:2013/05/22(水) 00:49:20.94 ID:lVYPqFTz0
A_TimeSinceThisHotkey
A_TimeSinceThisHotkey
A_TickCount

あたりを適当に組み合わせればおk
88名無しさん@お腹いっぱい。:2013/05/22(水) 21:58:21.87 ID:noBwVxu80
ahkでrunでアプリを起動するとそのアプリの作業ディレクトリ?がahkのあるところになってしまって
アプリで相対パス指定したものがわやになってしまうんですが解決する方法はありますか
89名無しさん@お腹いっぱい。:2013/05/22(水) 22:05:43.02 ID:FQOT+2w+0
>>88
Runコマンドの第2引数で作業ディレクトリ指定できないか?
90名無しさん@お腹いっぱい。:2013/05/23(木) 00:15:10.55 ID:+SHnznm+0
見落としてました
ありがとうございましたm(_ _)m
91名無しさん@お腹いっぱい。:2013/05/23(木) 19:09:21.51 ID:5asu3fYk0
前スレのワンショットモデファイヤを好きに作り替えていいって話だったので大改造した。
スペースと変換キー以外にも修飾キーを自由に設定できるように変更。
とりあえず4つ修飾キー作れるようにしたのと、関数導入でキーコン楽にしたよ。

ttp://ux.getuploader.com/autohotkeyl/download/14/OSM%E5%A4%A7%E6%94%B9%E9%80%A0.zip
92名無しさん@お腹いっぱい。:2013/05/23(木) 22:20:02.41 ID:5asu3fYk0
ttp://ux.getuploader.com/autohotkeyl/download/15/OSM%E5%A4%A7%E6%94%B9%E9%80%A0.zip

無意味なファイルが入ってたので削除して上げ直し
チョット表記ミスも直してますのでお手数ですがDLした人はもう一度お願いします
93名無しさん@お腹いっぱい。:2013/05/24(金) 07:00:55.86 ID:htUv0BZb0
MouseGestureL の、設定画面をマウスジェスチャで表示させたいのですが、
どんなコマンドを発行すれば良いのでしょう?

教えていただけませんか?
94名無しさん@お腹いっぱい。:2013/05/24(金) 07:14:15.10 ID:gzA+HVs40
>>93
GoSub,MG_Edit

どっちかっていうと、こっちのスレの話題
http://anago.2ch.net/test/read.cgi/software/1355047203/
95名無しさん@お腹いっぱい。:2013/05/24(金) 16:30:30.79 ID:RrAuM9S/0
他のプログラムでは可能なんですが、IEだけ

ahk_exe 【プロセス名】

でウィンドウ指定ができないのは仕様でしょうか
(例)、 WinActivate, ahk_exe iexplore.exe

Process, Exist, iexplore.exe とかだとうまく行くのでプロセス名が間違っているということはないと思います
96名無しさん@お腹いっぱい。:2013/05/24(金) 17:29:49.10 ID:zGeaqcgv0
Window Spyを起動した状態でWinActivate実行してみ
97名無しさん@お腹いっぱい。:2013/05/24(金) 17:48:34.07 ID:P6YcPAEU0
>>95
タスクマネージャー見ると分かると思うが
IEの場合互換性の為?に x32 と x64 の同名プロセスが同時に起動する
WinActivateで使ってない方のIEを最前面にしてるから効いてないように見えるだけ
そういう場合は 絶対パス または ahk_class で確実に指定した方がいい

○WinActivate, ahk_exe C:\Program Files\Internet Explorer\iexplore.exe
×WinActivate, ahk_exe C:\Program Files (x86)\Internet Explorer\iexplore.exe
98名無しさん@お腹いっぱい。:2013/05/24(金) 19:23:00.06 ID:vEPTBXd80
>>97
32bitプラグイン使ってたら即32bitIEに切り替える仕様だからな> 64bitIE
99名無しさん@お腹いっぱい。:2013/05/24(金) 21:35:11.94 ID:b37iBdMN0
遊び心でゲームとか作った人いる?
100名無しさん@お腹いっぱい。:2013/05/24(金) 22:32:09.83 ID:sAQId5tL0
http://ux.getuploader.com/autohotkeyl/download/16/mousemove.ahk

NUmlockoffの時にテンキーをマウスにしてしまうahk出来ました。

昨日うpった大改造OSMの中で一番納得いってなかったマウス移動の関数化にひらめいたので。
簡単なものですけど組み込めるようになったので配布します。
101名無しさん@お腹いっぱい。:2013/05/25(土) 01:17:58.14 ID:6vDBUQxM0
>>96
>>97
遅くなってすみません
そういうことでしたか。ありがとうございました
102名無しさん@お腹いっぱい。:2013/05/25(土) 10:44:34.33 ID:5zMkQ6By0
>>100
ああ、こういうの欲しかったんだよ。ありがたくもらっとくわ

あと、拡張子にk抜けてんぞ
103名無しさん@お腹いっぱい。:2013/05/25(土) 15:53:59.08 ID:Tr6NIydz0
エクスプローラでファイル名、フォルダ名をワンキーでをググりたいんですけど
https://sites.google.com/site/autohotkeyjp/reference/commands/SplitPath ここをみて

x::
cb=%ClipboardAll%
Clipboard=
Send,^c
ClipWait,0.1
SplitPath,clipboard,OutNameNoExt
If !ErrorLevel
Run, http://www.google.com/search?q=%OutNameNoExt%
Clipboard=%cb%
cb=
return

にしたんですけど フォルダはできたんですけど、ファイルが拡張子ついちゃうんです
参照先の下部をみて OutNameNoExt を name_no_ext にしてもダメでした
ahk_lでU64、win7なんですけどmどうしたらいいでしょうか?
104名無しさん@お腹いっぱい。:2013/05/25(土) 15:57:36.73 ID:Tr6NIydz0
OutExtension でもダメなのを追記です

というか3つの差がまずわからないです
105名無しさん@お腹いっぱい。:2013/05/25(土) 16:52:39.06 ID:3X2F3PpR0
>>103
SplitPath, InputVar , OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
変数の名前で認識してるわけじゃないんだから、この順番に従わないと…
SplitPath,clipboard,,,,OutNameNoExt
これでやってみ
106名無しさん@お腹いっぱい。:2013/05/25(土) 17:01:19.12 ID:Tr6NIydz0
できましたできました、ありがとうございます

このパターンは空にすべきか、を略すか昔迷った記憶がありましたわ
107名無しさん@お腹いっぱい。:2013/05/25(土) 17:03:57.61 ID:6vDBUQxM0
InputVar, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDriveとかは変数だからそれをただ指定しても意味ないよ
何番目の引数かが問題

そのサイトでは
SplitPath, 第1引数, 第2, 第3, 第4, 第5, 第6
の例えば第一引数に変数名InputVarを分かりやすくするために仮に当ててるだけ。変数名は基本何でも良し

x::
cb=%ClipboardAll%
Clipboard=
Send,^c
ClipWait,0.1

;SplitPath,clipboard,OutNameNoExt
;5番目の引数なら名前は何でもいい
SplitPath,clipboard, , , , OutNameNoExt

;If !ErrorLevel
;ErrorLevel関係ない
If OutNameNoExt <>

;Run, http://www.google.com/search?q=%OutNameNoExt%
;文字化け防止の為""で囲む
Run, "http://www.google.com/search?q=%OutNameNoExt%"
Clipboard=%cb%
cb=
return
108名無しさん@お腹いっぱい。:2013/05/25(土) 17:09:01.39 ID:Tr6NIydz0
でしたね 変数名は勝手に決めていいもんでしたね
頭が固かったです、cbっていう変数は自分で決めたのにそれに気づけませんでした
ありがとうございます
109名無しさん@お腹いっぱい。:2013/05/25(土) 17:15:43.63 ID:pV0P5OgW0
x::
cb = %ClipboardAll%

Clipboard =

Send,^c
ClipWait,0.1
SplitPath,clipboard,,,,OutNameNoExt

If (ErrorLevel == 0)
Run, http://www.google.com/search?q=%OutNameNoExt%

Clipboard = %cb%
cb=
return

コレで動いたぞ
110名無しさん@お腹いっぱい。:2013/05/25(土) 17:16:29.96 ID:pV0P5OgW0
あ、すまん。もう解決してたか。リロードしてなかったわ
111名無しさん@お腹いっぱい。:2013/05/25(土) 17:17:09.01 ID:Tr6NIydz0
いえいえ、ありがとうございます
112名無しさん@お腹いっぱい。:2013/05/25(土) 20:56:02.18 ID:8i7zBn9N0
正規表現ってマッチするかを最短で検索してると思ってたけどどんな仕組みになってるの?
例えば、IfにRegExMatchを入れてマッチした文字列の取得ができた場合の分岐を作った時、マッチの条件が複雑だと
単純なマッチ条件のRegExMatchを前に挟んだ方が処理が速い時があるんだが。

If (RegExMatch(A, "(.*)あ(.*)い$", String)) より
If (RegExMatch(A, "い$") && RegExMatch(A, "(.*)あ(.*)い$", String)) の方が速いみたいなこと言ってます。
113名無しさん@お腹いっぱい。:2013/05/25(土) 22:40:19.73 ID:pV0P5OgW0
タスクトレイアイコンって2つに増やせられないのかな
増やすにはahkファイルもう一つ走らせなきゃいけないんだろうか

まぁ要するに、

If (GetKeyState("NumLock","T") == 0)
Menu,Tray,icon,%A_ScriptDir%\Numlockicon\shutdown.ico
else
Menu,Tray,icon,%A_ScriptDir%\Numlockicon\shutdown_colour.ico
return


NumLock::
If(GetKeyState("NumLock","T") == 0)
{
Menu,Tray,icon,%A_ScriptDir%\Numlockicon\shutdown_colour.ico
TrayTip , , NumLock On, 10 ,1
SoundPlay,*64
SetNumLockState, on
}else{
Menu,Tray,icon,%A_ScriptDir%\Numlockicon\shutdown.ico
TrayTip , , NumLock Off, 10 ,1
SoundPlay,*16
SetNumLockState, off
}
return

でNumlockキーの状態をタスクトレイに通知したいんよ。
でもコレだとAHKファイル2コ消さなくちゃいけなくて二度手間なんよね・・・
114名無しさん@お腹いっぱい。:2013/05/25(土) 23:15:01.90 ID:Hx1YELan0
MinimizeTo1Tray.ahkがトレイアイコン2個表示してたな
115名無しさん@お腹いっぱい。:2013/05/25(土) 23:37:18.95 ID:pV0P5OgW0
>>114
DLして調べてみるよ。ありがとう
116名無しさん@お腹いっぱい。:2013/05/25(土) 23:44:37.16 ID:Hx1YELan0
>>115
ttp://www1.axfc.net/uploader/so/1091946

"MinimizeTo1Tray"でググらないと出てこなかったので一応
117名無しさん@お腹いっぱい。:2013/05/25(土) 23:45:20.57 ID:8i7zBn9N0
忘れてましたが、>>112は何回も繰り返しマッチ確認して、マッチしないパターンが多い時ほど処理が速いと言ってます。
正規表現の検索も実際はもっと複雑に入れてます。
118名無しさん@お腹いっぱい。:2013/05/26(日) 00:12:35.38 ID:/pOt1/DU0
119名無しさん@お腹いっぱい。:2013/05/26(日) 01:10:24.23 ID:CbBu4H3P0
>>118
んー正規表現の検索の問題だと思うので多分違います。
少し長いですが分り易く書きます。もし初歩的な事でしたら悪いです。

例えば、一万行あるテキストを一行ずつ巡回し、巡回行に特定の条件を満たす文字列が含まれていれば、
改行区切りで変数に格納していく下記の様なスクリプトを書いたとします。
(以下の正規表現部分の"複雑な検索"は複雑な検索パターンがあると見なして下さい)


Var := ""
LoopRead, Test.txt
{
If (RegExMatch(A_LoopReadLine, "複雑な検索", String))
{
Var .= String[1] . "`n"
}
}
MsgBox, % Var


仮にRegExMatchでマッチしたのが100行あったとします。
すると残りの9900行はマッチしてない訳ですが、このマッチしてない判定が最短で行われていない時があります。

例えば"複雑な検索"の最後に"あ$"があったします。
すると末尾が"あ"であるかの単純なチェックを先に行わず、いきなり複雑な検索パターンのマッチ確認に入り、結果的にマッチしないパターンの判定に時間が掛っている気がします。

なので下記のようにした方がマッチしないパターンが多い場合は処理が速くなるのですが、この辺りは皆さんも意識しておられるのでしょうか?

If (RegExMatch(A_LoopReadLine, "複雑な検索", String))

If (RegExMatch(A_LoopReadLine, "あ$") && RegExMatch(A_LoopReadLine, "複雑な検索", String))
120名無しさん@お腹いっぱい。:2013/05/26(日) 01:32:10.51 ID:bdY44mtB0
正規表現はその名のとおり検索パターンの表現方法であって、
最短でマッチングするという保障はないんじゃないの。

そもそも、パターン文字列をパースしてってのは結構なコストのかかる処理でなんで、
決まりきったパターンで最速でやりたいなら自前ロジック組んだほうが速いこともしばしば。
(ただAHKはインタプリタなんで速くはない)

あと、* や + などのはデフォルトで「貪欲」にいくんで最長マッチで行くはずなんで、
こいつらも遅くしている要因のひとつかと。
121名無しさん@お腹いっぱい。:2013/05/26(日) 02:16:25.30 ID:5llNKbDF0
>>112
「い」が末尾に付く文字列以外の場合、後者のIf文はまず末尾の一文字調べるだけで却下されるからじゃないか
122名無しさん@お腹いっぱい。:2013/05/26(日) 02:31:48.91 ID:5llNKbDF0
あ、もう>>119で結論出てたのか。スレ読んでなかった

まぁ、検索でもなんでも「一度に多条件で絞込み」するよりも「一条件で絞込みを繰り返し」にした方が探索コストかからんよね
一度目で棄却されれば二度目以降の絞込み処理がカットされるわけだから
123名無しさん@お腹いっぱい。:2013/05/26(日) 03:13:17.80 ID:2ViRE1400
エンジン側で最適化してくれるかどうかって話でしょ
詳しい訳じゃないが正規表現は前から順々に評価するだけだろ(a|bと[ab]程度の差異は吸収してるだろうが)
ワンライナー縛りがなくて速度気にするなら、先読みで効果があったとしても分けるのが普通で確実じゃないの
124名無しさん@お腹いっぱい。:2013/05/26(日) 14:28:27.45 ID:CbBu4H3P0
>>120-123
ありがとうございました。

正規表現の説明はとても参考になりました。
書き方が冗長的というかスマートな方法があるのかなと気になってましたが、
そういうものなんですね。

回答からして、この様な書き方で速度を面を気にする事が余り無いようにお見受けしたというか
ちょっと意外でしたが、ロジックの組み方の違いと言うよりは、やる機会がそんなに無い?って感じでしょうかね。
自前ロジックの回答があったのでこの限りではないかもしれませんが。
125名無しさん@お腹いっぱい。:2013/05/26(日) 20:20:11.96 ID:rIbYB5LQ0
スマートな方法かどうか分からないけど
自分なら比較的高速なgrep探してきて
grep "単純な検索" 対象のテキスト.txt | grep "複雑な検索"
みたいに絞り込んでからパースだけAHKでやる。
パースしやすい形式に置換で対応できるならついでにgrepで置換。
126名無しさん@お腹いっぱい。:2013/05/26(日) 23:34:31.02 ID:ErCR9aJ30
もう解決してるっぽいけど。
複雑な検索は後からちょっと変えたいときとかにも困るから、
なるべく小分けにするのが普通かも

あと、正規表現は 「前から順に」 検索してく。貪欲に。
この感覚をしっかり持たずに長い正規表現書くとミスマッチする
127名無しさん@お腹いっぱい。:2013/05/26(日) 23:39:30.63 ID:ErCR9aJ30
"あうお$" って正規表現は、
行末が"お"で、その前の文字が"う"で、その前の文字が"あ"
って感覚だと思うけど、

実際は
最初の文字が"あ"で、次の文字が"い"で、次の文字が"う"で、行末
と検索される。

この感覚の違い
128名無しさん@お腹いっぱい。:2013/05/26(日) 23:40:29.02 ID:ErCR9aJ30
2段目"あ"、"い"、"う"じゃなくて"あ"、"う"、"お"でした。
129名無しさん@お腹いっぱい。:2013/05/26(日) 23:44:28.28 ID:ErCR9aJ30
なんかもう削除したいw


"あうお$" って正規表現は、
行末が"お"で、その前の文字が"う"で、その前の文字が"あ"
って感覚だと思うけど、

実際は
文字"あ"から始まって、次の文字が"う"で、次の文字が"お"で、次の文字が"\r\n"
と検索される。

この感覚の違い
130名無しさん@お腹いっぱい。:2013/05/27(月) 01:30:10.44 ID:UvrZE5bl0
遅くなりました。

>>125
なるほど、正規表現に別のツール使う発想ですか。
grep名前だけ知ってましたが、今度使ってみようかと思います。

>>126-129
細かい説明有り難うございます。
どちらにせよ、複雑な検索は小分けする方が良いようですね。
131名無しさん@お腹いっぱい。:2013/05/27(月) 21:11:27.75 ID:Wp7RpgP90
F1 & F2::
のF1のように1回でもホットキーで修飾キーにしたものは無効になり使えなくなりますが、
a & F1::
!F1::
のように前に何らかの修飾キーをつけた場合にはそのホットキーは普通に使えるようになります
ところが修飾キーがctrlとshiftの時だけは使えるようになりません
この例で言うと^F1::、+F1::が機能するようにするにはどうしたらいいですか
132名無しさん@お腹いっぱい。:2013/05/27(月) 22:07:52.82 ID:EVkpNFL/0
分かり難い文だなwこういうことか?
× Ctrl + Shift + Alt + F1
○ Ctrl + F1
○ Shift + F1
○ Alt + F1

!a::
^a::
+a::
MsgBox
Return

キーラベルの仕様
http://ahkwiki.net/Hotkeys#.E3.82.AD.E3.83.BC.E3.83.A9.E3.83.99.E3.83.AB.E3.81.AE.E4.BB.95.E6.A7.98
133名無しさん@お腹いっぱい。:2013/05/27(月) 22:10:56.07 ID:EVkpNFL/0
おおっと a:: は F1:: に直してください
134名無しさん@お腹いっぱい。:2013/05/27(月) 22:50:45.52 ID:uF4uOxRH0
そのキーには皆苦しめられてるんよね
135名無しさん@お腹いっぱい。:2013/05/27(月) 22:57:05.56 ID:Wp7RpgP90
>>133
違います

ahkでF1::のキーラベルを登録した状態
(キーとして認識される→○、されない×)
× F1
× Ctrl + F1
× Shift + F1
○ (元々修飾キーじゃないキー) + F1
○ alt + F1
という状況なのを

○ Ctrl + F1
○ Shift + F1
にするにはどうすればいいのか、ということです。
136名無しさん@お腹いっぱい。:2013/05/27(月) 23:03:43.87 ID:uF4uOxRH0
強いて言うならF1&という書き方を使わないこと。

#If(getkeystate("F1","P"))
F2::なんたらかんたら
#If

か、どこぞにあるワンショットホットキー用AHKで設定をし直す

のどちらじゃないかな
137名無しさん@お腹いっぱい。:2013/05/27(月) 23:33:08.72 ID:EVkpNFL/0
F1
Ctrl + F1
Shift + F1
↑押した時だけ反応して他のキーと同時押ししたときには無視させたいって事か。
138名無しさん@お腹いっぱい。:2013/05/27(月) 23:35:21.37 ID:Wp7RpgP90
やっぱりそうですか…根本的な解決法はないんですね
F2::〜

F1 & F2::
F3 & F2::
Send,{Blind}{F2}
      return
みたいにしているので大丈夫っちゃあ大丈夫なんですが、
上述の通り修飾キーの中でaltだけキーの通り方が違うので修飾+ファンクションキーを多用するテキストエディター使う時に面倒くさいんですよね
1モディア〜の人みたいにしようにも、F1からF8まで同様のことしているので逆にしんどそうです…
慣れるしか無いか

>>133,136 ありがとうございました
139名無しさん@お腹いっぱい。:2013/05/27(月) 23:57:44.34 ID:Wp7RpgP90
>>137説明下手ですみません。ホットキー云々言ったのがややこしかったですね……

ahkでF1+F2でキーラベルを作った場合、
(F1を押す→当然何も押されてないことになる)
ctrl+F1を押す→ctrlだけ押されたことになる(F1認識しない)
shift+F1を押す→shiftだけ押されたことになる(F1認識しない)
alt+F1を押す→[alt+F1]が押されたことになる

ctrl、shiftの時にもalt+F1の時みたいにしたいということでした。
140名無しさん@お腹いっぱい。:2013/05/28(火) 00:11:01.37 ID:CLOS3fHv0
なるほどそういうことかスレ汚し失礼しました。
141名無しさん@お腹いっぱい。:2013/05/28(火) 10:49:35.10 ID:3MI4uzfS0
ついでに言うと、キーの機能が残るものと残らないものは、押し込んだ時じゃなくて離した時に動作するかどうか。

win、shift、alt、ctrl、まぁ要するに最初から修飾キーになってるものは押しっぱなしじゃなくて離した時に初めて機能するから、これらは&でくくっても機能が死なない。

&でくくるとキー機能が死ぬのはキーリピートするキーね。
142名無しさん@お腹いっぱい。:2013/05/29(水) 01:10:27.48 ID:aDcCj3j20
ttp://ux.getuploader.com/autohotkeyl/download/17/mousemove.ahk
ちょっと機能強化したテンキーマウス化ファイルおいておきますね
具体的には押しっぱなしでマウスカーソル加速。多分使いやすくなった
143名無しさん@お腹いっぱい。:2013/05/29(水) 10:59:03.78 ID:Lz2SmOaP0
>>142


だいぶ使いやすくなってるよ。
144名無しさん@お腹いっぱい。:2013/05/29(水) 12:15:26.54 ID:aJeSRyD20
>>142
これとか前スレ>951、実行してみたけどエラーが出たりホットキーが効かなかったりします
UTF-8にBOMついてないのが原因のようでファイル保存し直したら動きました。
win7 x86 ahk_L v1.1.10.01

これからスクリプト上げてくださる人は↓のどれかに留意してもらえるとありがたい
わかってしまえばなんてことないんだけどハマると混乱するんだわ
・UTF-8 BOM付きで保存する or includeファイル、ラベル、変数等に日本語名称を避ける
・動作環境(スクリプト作成時のAHKバージョン)を記載

AutoHotkey_L のスクリプトの文字コードを utf-8 にするときは BOM を必ずつけるようになった
http://blechmusik.hatenablog.jp/entry/20120718/1342540247
145名無しさん@お腹いっぱい。:2013/05/29(水) 16:42:03.49 ID:aDcCj3j20
>>144
ありゃ、すみません。わかりやすいかなと思って日本語ラベルにしてたのが裏目に出ちゃったようで
次の機会があればSJISでいけるように英文字ラベルでうpります
146名無しさん@お腹いっぱい。:2013/05/30(木) 12:39:54.56 ID:0sV94Dff0
>>144
情報ありがとう
DLしたAHKファイルをUTF-8BOMにサクラエディタで別名保存したらきっちり動いた

Numlockとか何に使うのんってなってたからすげー楽になった。これはいいわ。

てかラベルに日本語使えたんだな。初めて知ったよ
それとdelキーが無効化されてたけどもったいないから

Numpaddel::
Cliptemp := ClipboardAll
Clipboard =
Send,^c
ClipWait,1
SplitPath,clipboard,,,,OutNameNoExt
TrayTip , ,次のワードをGoogle検索します`n%OutNameNoExt%, 10 ,1
Run, http://www.google.com/search?q=%OutNameNoExt%
Clipboard := Cliptemp
return

で、選択範囲をGoogle検索にかけるようにしてみた
147名無しさん@お腹いっぱい。:2013/05/31(金) 01:35:15.64 ID:CBuYuZ6s0
うーん、スレッドの順位付けってどうすればいいんでしょうか。
例えばmenu,addでサブメニューを作った時、その他の操作が効かなくなるんですけど、
Thread, Priority,nでどうにかできるんでしょうか

あとこれは範囲指定はどうすれば出来ますか?
148名無しさん@お腹いっぱい。:2013/05/31(金) 06:53:21.21 ID:Zov+X+TP0
AutoHotKey で、MouseGestureL みたいにカーソルの形状(指の形とか)を
判別する方法ってある?

やりたいのは、ブラウザでリンクの上にカーソルがあるかの判別がしたい。

誰か、わかる人いたらおねがいします。
149名無しさん@お腹いっぱい。:2013/05/31(金) 08:50:14.59 ID:Y6UZjfoC0
>>148
A_Cursor
通常は Arrow, 手の形は Unknown
150名無しさん@お腹いっぱい。:2013/05/31(金) 09:08:59.92 ID:K6g9+bLR0
>>147
AHKではmenu,addで作ったメニューが表示されてる間は他の操作は効かない
メニュー上で右クリックした場合のイベントを拾いたい、とかは同一スクリプト内ではできないので
スプリクト分けて別プロセスでやってやる必要がある
151名無しさん@お腹いっぱい。:2013/05/31(金) 09:30:53.22 ID:CBuYuZ6s0
>>150
うへぇ、そんなことになってたのか。了解です。ありがとうございました。
152名無しさん@お腹いっぱい。:2013/05/31(金) 15:07:52.77 ID:nDzv4QoA0
AutoHotkey_LPortableイミフすぎる('A`)
runでAutoHotkey_LPortable.exe動かしても引数受け取ってくれない。強制的にData内部AutoHotkey.ahk起動しやがる
153名無しさん@お腹いっぱい。:2013/05/31(金) 15:33:48.48 ID:TSfysY660
portable版って通常版と何が違うん?
154名無しさん@お腹いっぱい。:2013/05/31(金) 15:54:26.85 ID:nDzv4QoA0
あ、書き方間違えてるだけだった・・・(´・ω・`)
お騒がせしてすみません
>>153
勝手に64OSか32OSか判断してくれる以外違いは無さそう。
155名無しさん@お腹いっぱい。:2013/05/31(金) 16:13:57.03 ID:Y6UZjfoC0
AutoHotkey_LPortable.exeってもしかしてPortableApps.comのやつ?
公式ページで配布されいるzip版のほうがバージョン新しいよ。
156名無しさん@お腹いっぱい。:2013/05/31(金) 16:18:09.53 ID:nDzv4QoA0
APPフォルダ内のexeは公式の奴を入れてるんで多分そのへんは最新です
157名無しさん@お腹いっぱい。:2013/05/31(金) 17:57:36.71 ID:SeTvUcfv0
アクティブウィンドウのプロセスフルパスはどうやって取得することができるでしょうか?
158名無しさん@お腹いっぱい。:2013/05/31(金) 18:20:34.98 ID:TSfysY660
>>154
そうなんか
ありがと
159名無しさん@お腹いっぱい。:2013/05/31(金) 18:26:58.59 ID:IhOFxX5l0
160名無しさん@お腹いっぱい。:2013/05/31(金) 21:17:58.10 ID:CBuYuZ6s0
menuaddの件で聞いたものですが、ahkを分解してメインのahkからサブメニューのahkを呼び出すことは出来るようになりました

ただ、これってサブの処理が終わってもタスクトレイに溜まっていくんですけど、処理を終えたら呼び出したahkそのものを終わらせるっていうのは出来ないんでしょうか?
161名無しさん@お腹いっぱい。:2013/05/31(金) 21:48:09.38 ID:TSfysY660
消したい方にExitAppのホットキー設定して、もう一方でそのキーを送るか
process, closeで無理やり消す?
162名無しさん@お腹いっぱい。:2013/05/31(金) 21:57:53.46 ID:CBuYuZ6s0
あ、そうか。スクリプトの最後をreturnじゃなくてexitappで消せばいいのか。やってみます
163名無しさん@お腹いっぱい。:2013/05/31(金) 23:02:55.39 ID:Zov+X+TP0
>>149

ありがとう
164名無しさん@お腹いっぱい。:2013/06/01(土) 22:41:15.46 ID:OkO9nQnj0
なんとなく作った。IMEの状態を間違えて打った時に、入力文字の削除、IMEの切り替え、再入力をキー一発で行う

;10秒以内のキーログを変数UsrInputに記録し続ける。10秒毎に上書き
;指定したキー(カーソル移動系+再入力ホットキー)を押す度にタイマー、変数の中身リセット
Loop
{
Input, UserInput, V I T10, {LButton}{Tab}{UP}{Down}{Left}{Right}{Pgup}{Pgdn}{Enter}{RShift} ;{Space}(必要に応じて)
}

;UserInputを元に直近で入力した文字をIMEを切り替えて打ち直す
>+BS::
;入力した文字数取得
KeyInpLen := StrLen(UserInput)
WinGet, hWindow, ID, A
;IME ONの時
if cf_IMEState(hWindow)
;指定したウィンドウのIMEの状態を取得。ONの時 1、OFFの時 0を返す
{
Send, {ESC}{vkF3sc029}%UserInput%
}
;IME OFFの時
else
{
;入力文字数分BackSpace。"Ctrl+shift+←+BS"だと記号が混じってた時にそこで止まるため
Send, {BS %KeyInpLen%}{vkF3sc029}%UserInput%
}
return
165名無しさん@お腹いっぱい。:2013/06/01(土) 22:41:47.49 ID:OkO9nQnj0
cf_IMEState(hWindow)
;指定したウィンドウのIMEの状態を取得。ONの時 1、OFFの時 0を返す
{
; WM_IME_CONTROL = 0x0283
; IMC_GETOPENSTATUS = 0x0005
bufCurrentDetectMode := A_DetectHiddenWindows
DetectHiddenWindows, On
buf := DllCall("user32.dll\SendMessageA", "UInt", DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint",hWindow), "UInt", 0x0283, "Int", 0x0005, "Int", 0)
DetectHiddenWindows, %bufCurrentDetectMode%
Return buf
}
166名無しさん@お腹いっぱい。:2013/06/03(月) 00:22:08.53 ID:uL9EquS30
guiでフォルダ参照って出来ないですか?
ファイルダウンロードとかで小窓出ますよね、あんな感じで。

今相対パス取得関数を使って指定フォルダと指定ファイルの相対パスを取得できるguiを考えてるんですがここでつまづいてしまって
167名無しさん@お腹いっぱい。:2013/06/03(月) 00:29:49.16 ID:jmZG5QjG0
>>166
FileSelectFolderとFileSelectFile
168名無しさん@お腹いっぱい。:2013/06/03(月) 00:30:05.16 ID:LRqWrj240
FileSelectFolder じゃ駄目なの?
ttp://ahkwiki.net/FileSelectFolder
169名無しさん@お腹いっぱい。:2013/06/03(月) 00:32:27.97 ID:uL9EquS30
おおお、素早い回答有り難うございます!

チョット組み込んでみます。
170名無しさん@お腹いっぱい。:2013/06/03(月) 16:09:44.84 ID:gIiyR5z50
>>167
>>168
おかげで出来ました。
感謝も込めて相対パス生成ファイル置いときマス
http://ux.getuploader.com/autohotkeyl/download/18/soutai.ahk
171名無しさん@お腹いっぱい。:2013/06/04(火) 01:31:03.41 ID:hIKadkcp0
ゲームのキーボードコンフィグが出来なかったんでAHKを使ってみたいと思ったんですけど、何から始めればいいんでしょう?
172名無しさん@お腹いっぱい。:2013/06/04(火) 01:44:16.53 ID:odlqWDMr0
wikiとかきちんと読めば分かると思う。
読み飛ばすと余計時間かかるかとw
ttp://ahkwiki.net/
173名無しさん@お腹いっぱい。:2013/06/04(火) 14:35:01.88 ID:U8cKggOV0
ウィンドウをきっちりばっちりモニタにあわせて四隅や半分にできる関数作ったけどwin7では標準搭載されてるのに作った後気がついて凹んだ
174名無しさん@お腹いっぱい。:2013/06/04(火) 19:02:15.54 ID:hefClJA80
Win7標準だとそこまで細かくは出来ないでしょ?
好きなようにやりたいと思ったらやはりスクリプト書かねば

まあDivvyっていう優秀なソフトもあるけと
175名無しさん@お腹いっぱい。:2013/06/04(火) 20:45:46.15 ID:kZNEMApQ0
EIZO系モニタ使ってたらEIZO ScreenSlicerとか使える
http://www.eizo.co.jp/products/lcd/screenslicer/
Divvyもいいけどアプリ毎にウィンドウ位置の記憶とかはできなさそう
AHKならその変も自由にできるし俺も自分で書いた
176名無しさん@お腹いっぱい。:2013/06/05(水) 00:58:14.63 ID:f130/Fcs0
Win7のそのショートカットだけど、なんかいつの間にか死んでるんだよね俺。
いつの間にか使えなくなってた。ahk終わらせてても出来ないからたぶんレジストリレベルで変なことしたんだと思う

だからahkでWin7のショートカットをもう一度作りなおすはめになったんだよな・・・
177名無しさん@お腹いっぱい。:2013/06/05(水) 13:26:22.00 ID:pTus8O5Y0
>>176
エアロスナップ レジストリ
あたりで検索すれば、該当キーが見つかると思う
178名無しさん@お腹いっぱい。:2013/06/05(水) 16:02:57.18 ID:LpsIxe2x0
win7のエアロスナップは低解像度マシンだとストレスにしかならないので切ったわ
179名無しさん@お腹いっぱい。:2013/06/05(水) 17:20:04.63 ID:f130/Fcs0
>>177
サンクス。治った。
だけど結局やっぱりAHKで書いたスクリプトを使うことになった

四隅に4分の1に出来れば神機能だったとおもう。
180名無しさん@お腹いっぱい。:2013/06/05(水) 17:57:09.53 ID:mkp+6f0t0
Gui,Editで作った入力欄に打ち込んだ文字数が欄一杯になったらGuiウィンドウと入力欄を自動で
大きくしたいんだけどどうしたらいいかな
Gオプションで入力欄の文字をその都度取得、再描画ってところまでは来たんだけど
文字数は計上できてもその文字の幅を図る方法が分からなくって……
文字数*xで計算しようにも、半角、全角、アルファベット、平仮名、漢字で文字の幅はまちまちだし

もっとスマートな方法ないですか?
181名無しさん@お腹いっぱい。:2013/06/05(水) 18:08:13.52 ID:3IDahbEq0
AHKを長年使ってきてwin8の64bitにしたらAHKLというものがあることを知った
日本語を含む文字列の取り扱いが断然便利とあるが煽りでもなんでもなく想定が思いつかないので例を2、3教えてほしい
182名無しさん@お腹いっぱい。:2013/06/05(水) 18:11:44.81 ID:8+vEkBla0
183名無しさん@お腹いっぱい。:2013/06/05(水) 18:15:11.62 ID:f130/Fcs0
>>181
変数やラベルに2バイト文字が使えるから日本語でgosubとか”%変数%”とかできる
だから日本人には視認性が良くなる。
まぁ、使い道はそんなもん。もちろん下位互換はない。あと注意点としてはUTF-8BOM形式で保存すること。

機能的にLで追加されたのは配列くらいじゃないかなー
184名無しさん@お腹いっぱい。:2013/06/05(水) 18:41:22.00 ID:wvtGdFbS0
全角カナを半角カナに変換する方法なんてありますか?
185名無しさん@お腹いっぱい。:2013/06/05(水) 18:52:19.07 ID:4W8g1teU0
186名無しさん@お腹いっぱい。:2013/06/05(水) 18:59:47.03 ID:LpsIxe2x0
>>181-183
スクリプト内部で日本語ラベルはそうそう使わんが、二バイト文字列を扱う機会はままあるよ
RegExでWinTitle判定する時とか、FileLoopで日本語パスが交じる時とか
メッセージ出す時に`(0x60)を含む語をエスケープが必要だったのがなくなった

msgbox,チ`ェック完了
とか、それまではやってたけど
187名無しさん@お腹いっぱい。:2013/06/05(水) 19:26:59.87 ID:8+vEkBla0
>>180
文字列分解して文字種類ごとに違う幅を足し算していくとか?
188名無しさん@お腹いっぱい。:2013/06/05(水) 19:42:28.09 ID:hQERVYnO0
>>180
Editの右端をPixelSearchして黒見つけたら延ばせばいいんじゃない
189名無しさん@お腹いっぱい。:2013/06/05(水) 20:15:35.47 ID:cZjcR1Jj0
つい最近同じような処理をしたくて考えた汚い方法。
幅を調べたい文字列だけからなるコントロールを作成し、その幅を取得している。


MsgBox, % StringWidth("num は既存の GUI 番号と被らない値を指定すること")

StringWidth(string, num=99)
{
 Gui, %num%:Add, Text, HwndHandle, %string%
 GuiControlGet, out, %num%:Pos, %Handle%
 Gui, %num%:Destroy
 return outW
}
190名無しさん@お腹いっぱい。:2013/06/05(水) 20:28:17.74 ID:8+vEkBla0
>>189
なるほど確かに汚いw(褒め言葉
191名無しさん@お腹いっぱい。:2013/06/05(水) 20:55:20.36 ID:mkp+6f0t0
>>187-189
ありがとうございます。
色々なアプローチの仕方があるなー
参考になります

>>189
成る程。幅指定なしで新しくGui作って自動調整されたところで、コントロールの幅自体を取得か
今回はこれをお借りしようと思います。
192名無しさん@お腹いっぱい。:2013/06/05(水) 21:41:05.92 ID:mkp+6f0t0
>>189
ちょっと返させてもらってGui,Fontのオプションも指定できるようにしました

おかげでうまくいきました。入力文字幅に入力欄、ウィドウ幅がぴったし追従できるようになりました

文字幅と入力欄幅ぴったりでも入力欄幅の調整の必要がある位置で日本語入力(変換前)→決定だとか、
貼り付けだとかで複数文字が一気に入力欄に入る動作をするとスクロールがずれて前の方が隠れてしまいますが、
まぁこれは仕様でどうしようもないでしょう。Home押してやると文字列の頭から尻までキチン表示されてるし

ありがとうございました
193181:2013/06/06(木) 06:30:38.30 ID:JnIUwoeP0
なるほど!合点がいきました
みなさんありがとうございました
194名無しさん@お腹いっぱい。:2013/06/08(土) 13:56:28.82 ID:NQecXOZl0
マウスオーバーでマウスカーソルが合ったウィンドをアクティブにしたいんですけど、そういうサンプルスクリプトないですかね?
195名無しさん@お腹いっぱい。:2013/06/08(土) 15:47:10.57 ID:PYyVsNOX0
196名無しさん@お腹いっぱい。:2013/06/09(日) 22:14:08.01 ID:aMQf5+wY0
ControlClick, X100 Y100, ahk_id WinTitle

X100 Y100の部分を定数ではなく
変数をしていするにはどうすればいいんでしょうか?
197名無しさん@お腹いっぱい。:2013/06/09(日) 22:23:16.78 ID:hQUgMtXc0
ControlClick, X%変数名% Y%変数名%, ahk_id WinTitle
でおk
198名無しさん@お腹いっぱい。:2013/06/09(日) 22:31:00.80 ID:aMQf5+wY0
>>197
ありがとうございます<(_ _)>
199名無しさん@お腹いっぱい。:2013/06/10(月) 00:02:51.29 ID:aMQf5+wY0
アクティブなウィンドウの指定位置のコントロールを取得するのは

DllCall("WindowFromPoint", Int, X, Int, Y,Ptr)
でいけると思いますが

そのウィンドウが後ろに隠れている場合に
うまく取得する方法はないですか?
200名無しさん@お腹いっぱい。:2013/06/11(火) 13:48:24.51 ID:jPWg3+h+0
Windows7の64bitでSend,{Volume_Up}だとボリュームコントロールできないのですが、WindowsXPとなにか違うのでしょうか?
201名無しさん@お腹いっぱい。:2013/06/11(火) 14:03:08.70 ID:lNjpi6SO0
>>200
なくなった。
send,{Blind}{Volume_up}
ならいける。
202名無しさん@お腹いっぱい。:2013/06/11(火) 14:18:51.80 ID:soCUAs6w0
そういや Sound コマンドが少し前に Vista 以降でも使えるようになったね
1.1.10.00 - May 11, 2013
Revised SoundSet, SoundGet and 'WaveVolume commands to better support Windows Vista and later.
203名無しさん@お腹いっぱい。:2013/06/11(火) 18:11:09.72 ID:SwCEOg190
>>200
>Send,{Volume_Up}

Windows7 pro 64bit AutoHotkey_L Ver1.1.10.01
で問題なくメインボリューム上がった、キーボードフックも関係なし
Versionの問題じゃない?
204名無しさん@お腹いっぱい。:2013/06/11(火) 18:58:17.28 ID:qYMZXIDC0
自分の環境でも Send,{Volume_Up} で音量変更出来ている。
Win7 Home Premium SP1 64bit
AutoHotkey_L v1.1.10.01

Sound 系のコマンドが使えるようになったのは今日知った。かなりうれしい。
205名無しさん@お腹いっぱい。:2013/06/12(水) 14:52:47.11 ID:z5n+srdR0
タスクバーの常駐通知アイコンを変更する方法ってありますか?
(他のアプリケーションのアイコンではなく、ahk本体のアイコン)
複数のahkファイルを同時に開いた時にわかりやすいようにしたいのですが
206名無しさん@お腹いっぱい。:2013/06/12(水) 15:13:11.69 ID:V8GM4CvA0
Menu,Tray,icon,
207205:2013/06/12(水) 15:51:56.91 ID:z5n+srdR0
>>206
ありがとうございます!
208名無しさん@お腹いっぱい。:2013/06/12(水) 16:44:34.98 ID:CIiHLu8E0
コマンドラインで実行が成功する「echo aaa | clip」をAutoHotKeyでやるとどうも動作しない感じです。
どこが悪いのでしょうか?

Run, echo aaa | clip, , Hide
Run, "echo aaa | clip", , Hide
209名無しさん@お腹いっぱい。:2013/06/12(水) 16:57:50.78 ID:5b6K6LeG0
cmd.exe
210名無しさん@お腹いっぱい。:2013/06/12(水) 16:58:53.61 ID:dRg52DHq0
cmd /c echo aaa | clip
211名無しさん@お腹いっぱい。:2013/06/12(水) 17:30:31.81 ID:CIiHLu8E0
>>209
>>210
おっと!!!!

面目ねえっす…
212名無しさん@お腹いっぱい。:2013/06/13(木) 10:33:01.23 ID:eM7yPTT00
コマンドプロンプトはSpyのNow Under Mouse Cursorでマウス直下のクラスが見れないのですが、なぜでしょうか?
213名無しさん@お腹いっぱい。:2013/06/13(木) 11:18:07.71 ID:CsEF8GkJ0
子クラスが存在しないから
214名無しさん@お腹いっぱい。:2013/06/13(木) 11:27:08.17 ID:eM7yPTT00
>>213
なるほど、ありがとうございます。

3ペインにわかれているアプリがあって、カーソル下のコントロールをとって、
そのコントロールにスクロールキーを送ることによって、
マウス下のペインにフォーカスがあたってなくてもスクロールさせる処理をしているのですが、
このアプローチだと出来ないってことですよね。

どうしたものか…
215名無しさん@お腹いっぱい。:2013/06/13(木) 13:07:16.90 ID:CsEF8GkJ0
RedirectWheelをやりたいってことかな?
ペインそのものがないんだからWindowに直接送っちゃえばいいよ
ControlSendがダメなら、PostMessageでWM_MOUSEWHELLかWM_VSCROLL送ってやればいい
216名無しさん@お腹いっぱい。:2013/06/13(木) 21:46:44.26 ID:5EeecrAM0
面白いautohotkeyのスクリプトや
読んでためになるスクリプトはありますか?
217名無しさん@お腹いっぱい。:2013/06/14(金) 12:29:02.88 ID:TWS0SB2j0
ttp://www.donationcoder.com/Software/Skrommel/
ここに結構面白いスクリプトあるよ。古いけど。

お気に入りは DetachVideo。
マウスカーソル下にあるコントロールを新規 GUI に表示するスクリプト。
Flash Video などに使用してブラウザを多窓しなくてすむようにするのが
メインだけど、Flash 以外にも使えるので使い道は色々。

任意のウィンドウにツールバーを追加する Barnacle が最近気になっている。
218名無しさん@お腹いっぱい。:2013/06/14(金) 22:06:08.02 ID:C+QhGWdLP
WinGetPos, , , width1, , ahk_id %window1%
If (width1 < 300)
    〜〜〜
WinGetPos, , , width2, , ahk_id %window2%
If (width2 < 300)
    〜〜〜
WinGetPos, , , width3, , ahk_id %window3%
If (width3 < 300)
    〜〜〜

これを数多く10や20まで繰り返す場合に
Loopとかで処理する方法もあるんでしょうか?
219名無しさん@お腹いっぱい。:2013/06/14(金) 22:29:59.23 ID:6TUuvikH0
>>218
A_Index で繰り返し回数カウントすればいい
ttp://ahkwiki.net/Loop

Loop,20
{
window = window%A_Index%
WinGetPos, , , width%A_Index%, , ahk_id %window%
If (width%A_Index% < 300)
}
220名無しさん@お腹いっぱい。:2013/06/14(金) 23:51:23.68 ID:C+QhGWdLP
>>219
ありがとうございます。
width%A_Index%のほうはそのまま使えるけれど
window%A_Index%はそのままでは使えないんですね
221216:2013/06/15(土) 00:11:45.60 ID:hIFLltr70
>>217
ありがとう
detachvideo、これはすごいね
勉強してみます
222名無しさん@お腹いっぱい。:2013/06/15(土) 02:36:23.97 ID:llhOxHJ10
>>217
ここのLabelControlがちょっと気になった
FireFoxのVimperatorのヒントモードとかKeySnailのHoKみたいなものをFireFox以外にも適用したいところだが
AHKでのその可能性を感じた
なんとかできないかな
223名無しさん@お腹いっぱい。:2013/06/16(日) 17:13:54.71 ID:O69y3x7Y0
sc028 & E::
sc028 & S::
sc028 & D::
sc028 & F::
While (GetKeyState("sc028 ", "P"))
{
MoveX := 0, MoveY := 0
MoveY += GetKeyState("E", "P") ? -8 : 0
MoveX += GetKeyState("S", "P") ? -8 : 0
MoveY += GetKeyState("D", "P") ? 8 : 0
MoveX += GetKeyState("F", "P") ? 8 : 0
Sleep, 10
MouseMove, %MoveX%, %MoveY%, 1, R
}
Return
 
斜め左上、左下だけうまく動かないんですが
うまく動く方法を教えてください
224名無しさん@お腹いっぱい。:2013/06/16(日) 17:25:14.73 ID:uaVv01Wl0
225名無しさん@お腹いっぱい。:2013/06/16(日) 19:24:01.80 ID:VVJgw3U00
マウス操作はこのスレのアップローダにあるからソレ参考にしてみればいいんじゃね
226名無しさん@お腹いっぱい。:2013/06/16(日) 21:35:33.19 ID:MCYnAVJE0
横レスだけど>>224のサイトっていつ出来たの?
227名無しさん@お腹いっぱい。:2013/06/16(日) 21:38:06.97 ID:KV3Z0w+a0
年末か年始くらいだっけ
このスレにも報告に来てたぞ
228名無しさん@お腹いっぱい。:2013/06/16(日) 23:42:49.59 ID:ZMb4CDpY0
>>223
迷ったら公式フォーラム覗いて見るのがいいよ
キーボードマウスのスクリプトなんて10個近く作られてる

http://www.autohotkey.com/board/topic/79150-numpadmouse-draw-v2/?hl=numpad+mouse
とか
http://www.autohotkey.com/board/topic/25412-yet-another-keypad-mouse-script/
とか
229名無しさん@お腹いっぱい。:2013/06/17(月) 14:33:48.98 ID:onGiwNyB0
ちょいと質問

ウィンドウの移動をタイマーで監視して自動で定位置に戻すスクリプトを走らせてるが、一つ問題が
モニタの電源OFF時は監視の必要がないんで、先頭でreturnしたいが電源のオンオフ状態を取得する方法が関数にないことに気付いた

MSDNも見たが、GetDevicePowerStateは引数にディスプレイハンドルが必要で今度はそっちの取得方法が大変でよく分からず投げた
もし簡単にモニタの電源状態を取得できる方法あったら教えて欲しい。検索してもありそうで無いな、ちょっとびっくり
230名無しさん@お腹いっぱい。:2013/06/17(月) 22:38:07.82 ID:wGFbVKVI0
>>227
なるほど見逃していた
231名無しさん@お腹いっぱい。:2013/06/17(月) 22:41:38.71 ID:wGFbVKVI0
>>229
それは厳しいかもねってレスがstackoverflow.comにあった
c++ - How to Get Monitor Info with Autohotkey? - Stack Overflow
http://stackoverflow.com/questions/14110086/how-to-get-monitor-info-with-autohotkey
232229:2013/06/17(月) 23:32:46.62 ID:onGiwNyB0
>>231
ふむ……簡単にはできそうにないか。あれば後々何かに使えそうだったが……
とりあえず退席時の判別はA_TimeIdlePhysicalで間に合わせることにした。レスthx
233名無しさん@お腹いっぱい。:2013/06/18(火) 02:14:51.87 ID:Zn6C+3nN0
>>229
https://code.google.com/p/automatedme/source/browse/AutoHotKey/Screen+Off+Event.ahk
これのWM_POWERBROADCAST関数内でタイマーのOn/Offを切り替えるとか
234名無しさん@お腹いっぱい。:2013/06/18(火) 02:27:24.16 ID:7hC1Gbj+0
モニター電源と監視のon offを同じアクションで行えば?と思ったけど
モニタ電源のソフトスイッチってあるんかね
235229:2013/06/18(火) 17:05:35.24 ID:rVBhisZf0
>>234
AHKでモニタ電源落とすことはできるけど、自分はハードスイッチ派だしなぁ

>>233
おぉ、すごいなコレ。電源オンオフメッセージを感知して動くのか
しかし、やはりハードスイッチでのオンオフは認識しない模様。電気代ほぼ変わらんし、もうスイッチ押すのやめた方がいいのかな
236名無しさん@お腹いっぱい。:2013/06/18(火) 17:51:55.51 ID:T1tf3gyeP
マルチモニタ環境で全部じゃなくて任意のモニタの電源を落とすことは可能?
ウィンドウズの仕様で無理なんでしょうか
237名無しさん@お腹いっぱい。:2013/06/18(火) 18:26:51.42 ID:Zn6C+3nN0
>>235
ディスプレイの主電源切ったらPCからは未接続状態に見えるんじゃね?
WMIのWin32_DesktopMonitorでモニタ情報取得して接続されてるかの判別をするとか
238229:2013/06/18(火) 20:57:42.95 ID:rVBhisZf0
>>237
だめだ、モニタの電源切ってみたが28のパラメータすべて変化なし
(怪しそうなStatus、Availabilityもともに「OK」、「3」の値のまま動かん)

俺のモニタ(LCD-MF234XNR)固有の問題かも知れない
まぁでも>>233の方法がかなり使いやすいからソフトスイッチに切り替えるわ、情報d
239名無しさん@お腹いっぱい。:2013/06/18(火) 21:30:55.20 ID:rVBhisZf0
>>236
デュアルならこれでいいのでは
ttp://tipszone.jp/20101219_dual_display_on_off/
240236:2013/06/18(火) 21:49:38.57 ID:T1tf3gyeP
サンクスです〜
スレチな質問ですみませんでした
241名無しさん@お腹いっぱい。:2013/06/23(日) 15:34:16.01 ID:cVWFHqol0
標準入出力を使う外部ソフトウェアtest.exeに
autohotkeyから値を渡し
その結果をautohtkeyの変数に格納するにはどうすればいいですか
242名無しさん@お腹いっぱい。:2013/06/23(日) 22:16:47.73 ID:TOIdE1wH0
123
243名無しさん@お腹いっぱい。:2013/06/23(日) 22:31:54.44 ID:9+yQV1/r0
漏れメモ
特定アプリ用スペシャル設定は#IfWinActiveすればいいのか
AU3Spy.exeはこういうとき使うのね
244名無しさん@お腹いっぱい。:2013/06/23(日) 23:06:25.86 ID:HEuMs0so0
>>241
俺ならAHKでWSHを呼び出す

command := "test.exe"
exec := ComObjCreate("WScript.Shell").Exec(command)
While !exec.Status
Sleep 100
return exec.StdOut.ReadAll()
245名無しさん@お腹いっぱい。:2013/06/23(日) 23:15:52.47 ID:3xHcpeip0
>>241
RunWait,cmd.exe /C test.exe param > output.txt
FileRead, OutputVar, output.txt
FileDelete, output.txt
msgbox, %OutputVar%

本格的に入出力制御したいならこの辺り?ググっただけで中身見てないけど
http://www.autohotkey.com/board/topic/31575-using-standard-inputoutput/
246名無しさん@お腹いっぱい。:2013/06/23(日) 23:59:25.20 ID:HEuMs0so0
>>229だがもう一つ質問

「二次元画像詳細検索」ってなエロ画像管理ご用達サイトで情報収集してるがその効率化に知恵を貸して欲しい
画像が大量すぎてちまちま検索してられんから、自前サーバに一瞬画像上げてAHKでURL一斉POST → 自前GUIに表示、としてるがもはや上げるのすらだるくなってきた

てなわけでPOSTメッセージに直接画像を貼付したいがWinHttpRequestだとどこに画像データ埋め込むのかわからん
HTTP解析の基礎のような気もするが……なぜか検索しても出てこない。知ってる人いたらぜひ
247名無しさん@お腹いっぱい。:2013/06/24(月) 00:10:54.80 ID:GlFy7zoW0
>>246
それ以前に、一斉にやり過ぎて鯖アタックするなよ。

岡崎市立中央図書館事件
ttps://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6
248名無しさん@お腹いっぱい。:2013/06/24(月) 00:22:25.05 ID:oDFJPhIw0
>>247
無論Loop末端にSleep置いてる
ISPにも睨まれたくはない
249名無しさん@お腹いっぱい。:2013/06/24(月) 11:16:04.13 ID:smTZyTq80
CoordMode, Mouse, Screen

あとから
CoordMode, Mouse, Window
に切り替えたいんですがそういうことってできないもんですかね?
自分でこんなかんじに書いてみたんですが動きません。

F1::
CoordMode, Mouse, Screen
MouseGetPos, ClickX2, ClickY2, MP

if ( ClickX2 < A_ScreenWidth and ClickX2 > A_ScreenWidth - 200 and ClickY2 < A_ScreenHeight and ClickY2 > A_ScreenHeight-50 )
{
msgbox screen
return
}

else
{
CoordMode, Mouse, Window
MouseGetPos, ClickX, ClickY, MP
WinGetPos, x, y, w, h, ahk_id %TEST%
WinActivate, ahk_id %TEST%

if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)
{
msgbox window
return
}
return
}
250名無しさん@お腹いっぱい。:2013/06/24(月) 11:27:01.27 ID:1xnMVaVn0
251名無しさん@お腹いっぱい。:2013/06/24(月) 12:20:37.43 ID:smTZyTq80
>>250
気付きませんでした ただrelativeになおしてもmsgboxは表示されません。やっぱり途中で切り替えるのは無理なんでしょうか。
252名無しさん@お腹いっぱい。:2013/06/24(月) 12:56:55.36 ID:1xnMVaVn0
普通に途中で切り替えできるよ

if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)
で指定している範囲がディスプレイの左上で且つ、
対象ウィンドウの上部だけっていう極めて狭い範囲が指定されているから、
対象ウィンドウが画面左上に表示されてるとtrueにならない。
変数の値が分岐の条件式で合っているかどうかをifで分岐させる前に確認してみるといい

前略
msgbox, %ClickX% %ClickY% %ClickY% %ClickX%
if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)
後略
253名無しさん@お腹いっぱい。:2013/06/24(月) 13:08:36.85 ID:1xnMVaVn0
前半の分岐すっ飛ばして説明してたわ
なので>>252は忘れて

何れにしても、途中で切り替えは出来るよ
if文を書く前に、msgboxやtooltipを使って変数の中身(値)を確認したほうがいいよ
254名無しさん@お腹いっぱい。:2013/06/24(月) 14:02:30.65 ID:oDFJPhIw0
>>249
勝手読みだけど多分こうだと思う

CoordMode, Mouse, Window
WinActivate, ahk_id %TEST%
MouseGetPos, ClickX, ClickY, MP
WinGetPos, x, y, w, h, ahk_id %TEST%
255名無しさん@お腹いっぱい。:2013/06/24(月) 21:28:39.17 ID:fwLao8R/0
>>244-245
ありがとうございます。どちらもokです。
ただ、コンソール画面が一瞬表示されてしまうのですが、それを抑える方法はありませんか。
256名無しさん@お腹いっぱい。:2013/06/24(月) 21:42:53.23 ID:xzROgl/A0
257名無しさん@お腹いっぱい。:2013/06/25(火) 06:07:57.76 ID:hDgb5ChY0
>>246
そのスクリプトおもしろそうだから見たい
特に「自前GUIに表示」をちょっと流用したいなw

自鯖にあげるのがめんどいってのはどういう状況なんだ
公開フォルダにハードリンクかシンボリックリンク作るだけじゃだめなの?
盛大に勘違いしてたらすまん
258名無しさん@お腹いっぱい。:2013/06/25(火) 06:35:45.38 ID:YPiJCPez0
Windows7にてAutoHotkey_L 64bit(Unicode)版 v1.1.11.0 を使っています。

Windows Vista以降ではアプリケーション毎に個別の音量設定が可能ですが、
AutoHotkeyのスクリプトでAutoHotkey.exe自身の音量を変更するにはどうすれば良いのでしょうか?
SoundSetWaveVolumeを使うとスピーカーデバイスの音量(いわゆるマスター音量?)が
変更されてしまい、スピーカーと全てのアプリケーションの音量が変更されてしまいました。
SoundSetで行うべきものかと思いいろいろやってみましたが、
MASTERやWAVEを指定しても結果は同じとなり、他に何を指定すべきかわかりませんでした…
解決法がありましたら教えてもらえませんでしょうか。
259名無しさん@お腹いっぱい。:2013/06/25(火) 19:13:29.57 ID:DsTb4ypf0
>>258
Win7 だったら、

SoundSet, 50 ; AutoHotkeyボリューム50%

とかでダメ?

私は逆に AutoHotkey のボリュームだけ変わっちゃって、困ったことがあるくらい。
260名無しさん@お腹いっぱい。:2013/06/25(火) 22:18:48.60 ID:8FZrk9MQ0
>>253
>>254
どうもです。もうすこしいじってみます。
261名無しさん@お腹いっぱい。:2013/06/26(水) 04:42:13.75 ID:R4XZtPpu0
>>259
レスありがとうございます。
引数のComponentTypeを略すとデフォルトでMASTERを指定したことになってしまうので
スピーカー&全アプリケーションのボリュームが変わってしまいますね…

過去ログを見る限り、Vista/7のサウンド周りに対応していなかった頃の
かなり古いバージョンのAutoHotkeyであれば
自アプリケーション(AutoHotkey,exeのみ)の音量が変わっていたようですが、
現バージョンでそれを実現する方法が未だにわからない状況で…
262246:2013/06/26(水) 04:43:24.67 ID:7MAD5nkU0
>>257
ほい、こんな感じ
http://ux.getuploader.com/autohotkeyl/download/20/2013-06-26_040223.jpg
超スパゲティなんで流用はきついと思うが……いるならソースうpするよ

鯖は外部にあるんだ
自宅鯖に公開も考えたが、ものがものだけに抵抗あるしまず>>246の方法を試そうと思ったって訳
まぁ、現状ちょい無理そうだけど。やっぱ自宅でやるかなぁ……
263246:2013/06/26(水) 04:52:53.85 ID:7MAD5nkU0
264名無しさん@お腹いっぱい。:2013/06/26(水) 16:43:35.67 ID:9QjiL5q10
>>261
最新版でもマスターボリュームではなく各アプリケーション音量変更はまだ対応してないんじゃない?
外部ライブラリの Vista Audio Control Functions でも出来るかどうか分からないが試してみれば?
ttp://www.autohotkey.com/board/topic/21984-vista-audio-control-functions/
265名無しさん@お腹いっぱい。:2013/06/26(水) 22:47:31.52 ID:g5I+0CML0
マウスジェスチャー、ワンショットモデファイヤ、プログラムランチャ、大概の事は出来たけどなんかまだ面白いスクリプトが欲しい
266名無しさん@お腹いっぱい。:2013/06/26(水) 23:35:10.52 ID:9QjiL5q10
無いなら自分で作りましょう。
267名無しさん@お腹いっぱい。:2013/06/26(水) 23:44:09.36 ID:g5I+0CML0
>>266
アイディアがなー・・・
なんかこう、実用面ではすでに満たされてるんだけど、まだなんか欲しいって気分、わかんない?
268名無しさん@お腹いっぱい。:2013/06/27(木) 00:23:31.85 ID:WcJUHPBw0
DialogSetterやTTBaseプラグインを移植しようと躍起になってた頃もあったな
今にしてみりゃわざわざAHKでやることもなかったんだけど
269名無しさん@お腹いっぱい。:2013/06/27(木) 00:51:25.63 ID:tpAsAoXy0
ちょっとわかる
アイディアもないし困ってもないんだけどなんかまだ出来るんじゃないだろうかという変な飢えがある
270名無しさん@お腹いっぱい。:2013/06/27(木) 01:14:43.80 ID:lJmHiFpy0
>>265
有用そうなマイスクリプトでも公開すればいいかと
便乗して誰か上げてくるかもよ
271名無しさん@お腹いっぱい。:2013/06/27(木) 14:53:24.84 ID:SvJe4sQ/0
最近mousegestureL.ahkを導入したんですが、
これ使うと普段設定用のAHKとこれ用のAHKの2つのプロセスができてしまうんですが、
これは正しい動作ですか?
272名無しさん@お腹いっぱい。:2013/06/27(木) 14:57:23.02 ID:ztjL/cl90
環境をまず書いて
ポータブルかインストールか
すでに別のAHKファイルは走ってるのかどうかとか
273名無しさん@お腹いっぱい。:2013/06/27(木) 16:30:24.67 ID:WcJUHPBw0
普段設定用のAHKにincludeしないで別々に起動してりゃ別プロセスになる
274名無しさん@お腹いっぱい。:2013/06/27(木) 16:38:00.68 ID:SvJe4sQ/0
>>272
すみません、インストールで、デフォルトのahkファイルが走ってる状態で、
それとは別途mousegestureL.ahkを関連付け起動する感じです

>>273
まさにそういうかんじです。別プロセスになるのが普通なのですね、ありがとうございました


include使う場合フォルダ構成変えることになりそうなのでこのままでやってみます、ありがとうございました
275名無しさん@お腹いっぱい。:2013/06/28(金) 11:17:19.77 ID:wISaUtQN0
マウス直下のウィンドウをアクティブにするのにこれを使ってるんですけれど
https://github.com/jixiuf/my_autohotkey_scripts/blob/master/ahk_scripts/tools/lib/MouseActivate.ahk
アクティブになったウィンドウが最前面に来てしまうのをそのままにしたいのですがどうしたらいいでしょうか?
276名無しさん@お腹いっぱい。:2013/06/28(金) 12:04:33.42 ID:TOrd5Rj00
ImageSearchはモニタに表示されている画像しか検索できないとのことですが
仮想デスクトップ等使った場合
モニタ外でも手前に表示させていれば検索に引っかかるでしょうか

もしくはモニタを圧迫せずに極力裏に近い状態で
画像検索のマクロを働かせる方法はありませんか

現状隅っこにウィンドウを小さくして走らせてるがやはり気になる
画面を広々と使いたい
277名無しさん@お腹いっぱい。:2013/06/28(金) 18:14:50.07 ID:Trr+/bBI0
現在アクティブなコントロールって取得できる? 
278名無しさん@お腹いっぱい。:2013/06/28(金) 18:26:01.09 ID:0IfFLqCb0
>>263
楽するために苦労する典型わろち
スパゲティーは要らないw

自分のですらソース読む気にならん
機能追加する毎に新しい実装したりでぐちゃぐちゃ
279名無しさん@お腹いっぱい。:2013/06/28(金) 18:28:00.56 ID:0IfFLqCb0
>>267
クリップボード管理おすすめ
履歴管理、パスワード挿入、メモ機能に、
コピー文字列を数値計算、連番挿入、
google、HDD検索、正規表現用にエスケープ、
ファイルパスをファイルコピーの状態へ、
とか。
280名無しさん@お腹いっぱい。:2013/06/28(金) 19:52:20.83 ID:Hx23d+ZN0
フォルダ構成を維持したままテキストにあるファイル(ワイルドカード含む)をコピーしたいって聞いたらこのソフトで出来るって言われたんで
DLして早速試してるんだけどよく分からねーのです
雛形みたいなものないですか?
281名無しさん@お腹いっぱい。:2013/06/28(金) 20:25:58.78 ID:44XLkhKx0
>>276
仮想デスクトップで反応するかは、ソフト次第だからやらなきゃ分からない。

>>277
コマンド一覧よく見よう。
http://ahkwiki.net/ControlGetFocus

>>280
これは自分でコマンド組み立てて動作させるソフト
学習する気が無いなら他のソフト探したら?
282名無しさん@お腹いっぱい。:2013/06/28(金) 21:03:30.81 ID:Trr+/bBI0
>>281
どうも
283名無しさん@お腹いっぱい。:2013/06/28(金) 21:15:21.61 ID:ob9IWNNz0
>>279
正規表現面白そうだけど書き方がさっぱりわからんたい
284名無しさん@お腹いっぱい。:2013/06/29(土) 00:00:07.20 ID:FfcedZNn0
>>281
この意味のないレス何?w
285名無しさん@お腹いっぱい。:2013/06/29(土) 00:11:16.73 ID:98JBlXLq0
>>284
(´∀`)<オマエガナー)
286名無しさん@お腹いっぱい。:2013/06/29(土) 00:40:18.02 ID:qkBXcDyQ0
>>278
そか。まぁ楽すると言うより、自作の関数→関数ってのが多すぎて階層辿るのに苦労するって意味だけどね

亀になるが>>246は自己解決。画像のMD5投げれば詳細は取得できることに気付いたからPOSTする必要すらなくなった
一応報告まで
287名無しさん@お腹いっぱい。:2013/06/29(土) 00:48:17.15 ID:98JBlXLq0
>>286
鯖にも優しいしGJ
288275:2013/06/29(土) 06:12:27.05 ID:tunUwd120
しくしく(/_;)
289名無しさん@お腹いっぱい。:2013/06/29(土) 19:48:52.16 ID:98JBlXLq0
>>288
対象のウィンドウを階層を変えずにアクティブにして操作したいって事だよね?
ウィンドウをアクティブ=最前面 これはOS仕様なのでどうしようもないから。
WinGet + WinSet で対象より上の階層のウィンドウを常に最前面表示にすれば行けるんじゃないかな?
290名無しさん@お腹いっぱい。:2013/06/29(土) 22:53:54.67 ID:qkBXcDyQ0
ウィンドウのZオーダーを変更しないアクティブ化はできないこともない
が、標準操作ではどうしようもない。直接API呼び出してオプションを指定する必要がある。面倒だからアクティブ化関数だけ

_WinActivateNoZOrder(WinTitle) {

; 対象ウィンドウのハンドルを取得
WinGet, hwnd, ID, %WinTitle%

; Zオーダーの変更指定(不要)
hWndInsertAfter := NULL

; 位置・サイズの指定(不要)
X := NULL, Y := NULL, Width := NULL, Height := NULL

; オプションの指定。値は SWP_NOSIZE 0x01 | SWP_NOMOVE 0x02 | SWP_NOZORDER 0x04 の論理和(サイズ変更なし、位置変更なし、ウィンドウ順序変更なし)
uFlags := 0x07

; ウィンドウのアクティブ化実行
DllCall("SetWindowPos", "UInt", hwnd, "Int", hWndInsertAfter, "Int", X, "Int", Y, "Int", Width, "Int", Height, "Int", uFlags)

}
291名無しさん@お腹いっぱい。:2013/06/29(土) 23:19:33.25 ID:98JBlXLq0
なるほどー参考になります。
Win32API関数とウィンドウメッセージも一通り覚えておかないと駄目ですねw
292名無しさん@お腹いっぱい。:2013/07/03(水) 23:01:38.29 ID:4WT25on20
常駐しないAHKスクリプトが起動しているかの状態取得はどうすればできますか?

リファレンスのウィンドウ指定辺りを調べたのですがわかりませんでした…
すみませんが教えてください
293名無しさん@お腹いっぱい。:2013/07/04(木) 08:32:53.00 ID:/xou4Ygk0
DetectHiddenWindowsかな
294名無しさん@お腹いっぱい。:2013/07/11(木) 18:02:07.75 ID:bdH6xbXo0
win8のAlt+Tab関連の問題は解決しました?
検索してもうまいこと出てこないんですけれど
295名無しさん@お腹いっぱい。:2013/07/11(木) 19:24:44.63 ID:D3+C5VcQ0
296名無しさん@お腹いっぱい。:2013/07/14(日) 17:17:32.43 ID:AgM4GGCd0
お尋ねします。
Process, Close, で指定したアプリを終了した場合
終了したアプリのアイコンが、タスクトレイに残ってしまいます。
アイコンが残らないように終了させる事は出来ますでしょうか?
よろしくお願いします。
297名無しさん@お腹いっぱい。:2013/07/14(日) 21:56:09.19 ID:AgM4GGCd0
お騒がせです。
WinCloseを代替案とし、無事解決しました。
298名無しさん@お腹いっぱい。:2013/07/18(木) 18:51:20.85 ID:Y13lsdmh0
Multimonmanというスクリプトなのですが、そのままではすぐにフリーズしてしまい、
使い物になりません。
>> DllCall("MoveToEx",UInt,hdc_target_%pmonitor%,Int,markx-4,Int,marky,Str,0)
という部分を
>> DllCall("MoveToEx",UInt,hdc_target_%pmonitor%,Int,markx-4,Int,marky)
に書き換えると正常?に動作するようです。
Windows APIに詳しくないので、なぜこうなるのかよく分かりません。
このあたりに詳しい方はいらっしゃいますか?
299名無しさん@お腹いっぱい。:2013/07/18(木) 20:48:43.91 ID:lr0QIZ+p0
StrでNULL指定は出来ないからPtrにすればどうかな
DllCall("MoveToEx",UInt,hdc_target_%pmonitor%,Int,markx-4,Int,marky,Ptr,0)
300名無しさん@お腹いっぱい。:2013/07/18(木) 22:27:40.31 ID:Y13lsdmh0
markyで終わりにして、引数2個省略しても一応動くようですが、
これだと何か副作用があるんでしょうか?
あと不思議なのは、このスクリプトが公開されているってことは、
日本以外のWindowsではそのままで動くんでしょうか? 
AHKのコンパイラのバージョンの違い?
301名無しさん@お腹いっぱい。:2013/07/18(木) 22:30:03.42 ID:Y13lsdmh0
> DllCall("MoveToEx",UInt,hdc_target_%pmonitor%,Int,markx-4,Int,marky,Ptr,0)
で上手くいくことは確認しました。どうもありがとうございます。
302名無しさん@お腹いっぱい。:2013/07/19(金) 08:17:47.96 ID:54CIKKfo0
>>300
>これだと何か副作用があるんでしょうか?
たまたま動いていただけで、戻り値も取得出来ていたかどうか怪しいよ
303名無しさん@お腹いっぱい。:2013/07/19(金) 09:11:30.68 ID:e105tNZ00
>>300
そのスクリプト1 Hour Softwareのだよね?
AHK無印製だからAHKLのユニコード版だと正常に動かない事があるよ
AHK無印かAHKLのANSI版なら普通に動作すると思う

DllCallの無印からLへの書き換えの仕方、どっかにまとめてる人がいたけどどこだったか忘れたな
304名無しさん@お腹いっぱい。:2013/07/19(金) 15:32:02.24 ID:Cf+DhMQ90
>>302
戻り値は使わないのでどうでもいいのですが、
何か予想外のところに値が書き込まれたりして誤動作すると困りますね。
Ptrの代わりに0を指定しても動くことは動くのですが、
0はNULLの意味になりますか?
305名無しさん@お腹いっぱい。:2013/07/19(金) 16:22:37.49 ID:Cf+DhMQ90
>>303
Ahk2Exe.exeしか使わないのでよく分からないのですが、
AutoHotkeySC.binのサイズから考えて、Unicode 32-bit.binが
EXEファイルに組み込まれているようです。
ANSI 32-bit.binを一時的にAutoHotkeySC.binにRENAMEして
コンパイルすればいいんでしょうか?
306名無しさん@お腹いっぱい。:2013/07/19(金) 18:00:15.57 ID:e105tNZ00
>>305
わざわざRENAMEしなくても
Ahk2Exe.exeはコンパイルに使うbin選べたと思うよ
307名無しさん@お腹いっぱい。:2013/07/19(金) 19:32:57.45 ID:Cf+DhMQ90
>>306
引数付けずに起動するとメニューがでるんですね。初めて知りました。
アイコンの変更なんかもソースファイルの中に書くのではなく、
ここで指定することもできるんですね。便利だ。
308名無しさん@お腹いっぱい。:2013/07/21(日) 23:58:33.23 ID:XScIf/k+0
autohotkeyとjoytokeyがコンフリクトしてるようなんですけど併用してる人どうしてます?
309名無しさん@お腹いっぱい。:2013/07/22(月) 01:25:33.90 ID:9CdsLqVK0
コンフリクトってホットキー被ってるだけじゃないの?
joytokeyで設定してるjoyボタンはAHK側で触らなきゃいいんじゃね
310名無しさん@お腹いっぱい。:2013/07/23(火) 23:48:26.69 ID:I2A3AtsX0
変換キーを押しながらマウスポインターを動かすことはできないのかな?
CADでミドルクリックを使うから使わない「変換」に割り当てて
マウスレスで使いたいんだけどなー

変換を押しながらポインタを動かそうとしても、途中でロック?されて動かせなくなる・・・
(Windows8環境)
311名無しさん@お腹いっぱい。:2013/07/24(水) 00:00:00.56 ID:Nas+x8yh0
>>310
スクリプト書かないと推理しか出来ないのだが?
KeyWait 入れて無くて連打してるのが原因じゃないのか?
312名無しさん@お腹いっぱい。:2013/07/24(水) 00:08:22.82 ID:IC1+if5d0
元のキー::割り当てキー
という超シンプルなものです

alt,Ctrl,windowsキー,Alt
以外のキーを押しながらポインタを動かそうとすると同じ症状になる
ということは仕様なのかぁ・・・
313名無しさん@お腹いっぱい。:2013/07/24(水) 00:23:51.64 ID:mZODPf5W0
キーリピート殺してないからじゃね
314名無しさん@お腹いっぱい。:2013/07/24(水) 23:42:40.50 ID:TiXZtHGjP
MButton::
m := GetKeyState("MButton")
Msgbox, GetKeyState(MButton)=%m%

と書くとマウスホイールを押したままの状態でも
常に0が返ってくるのはどうしてですか?
315名無しさん@お腹いっぱい。:2013/07/25(木) 02:45:54.68 ID:Ve+LnV9S0
>>314
"P"プログラムが生成する仮想的な押し下げ状態を無視し、物理的な押し下げ状態を判定する。
ttp://ahkwiki.net/GetKeyState-

MButton::
m := GetKeyState("MButton","P")
Msgbox % m
Return
316名無しさん@お腹いっぱい。:2013/07/25(木) 16:21:50.97 ID:azHLWEWmP
>>315
有難うございます
317名無しさん@お腹いっぱい。:2013/07/26(金) 13:31:56.22 ID:W7r2Wdzl0
すみません。
文章(半角も含む)を打つときはCapslockをON
それ以外はCapslockをOFFにしたいのですが、
AutoHotkeyで自動にするにはどうしたらよいでしょうか・・・?
318名無しさん@お腹いっぱい。:2013/07/26(金) 16:58:48.29 ID:pDLO2Jhk0
>>317
>4
319名無しさん@お腹いっぱい。:2013/07/26(金) 18:00:38.90 ID:bUysJ0FZ0
>>317
文章を打つ時っていう条件があまりに漠然とした状況ではないかと・・・。

メモ帳やエディタなんかで入力している時だけが文章?
ブラウザでコメントを入力してる時は?名前入力とコメント入力ってどうやって判断するの?
ブラウザのURLの所にだって、URLだけじゃなくて検索用の文章を入力することもあるよね。

それとも、別の判断で例えば5文字以上の入力ならそれを文章ってことにして、その段階で
CAPSをONにしてみる?それとも、入力スタートしたところからCAPSオンと判断して再入力?

適当に、メモ帳やエディタの時だけって考えて、メモ帳かエディタがアクティブウィンドーの時には
>>4を参考にしてCAPSをONにして、他がアクティブなときは、CAPSをOFFにする。
CAPSのコントロールに関しては、IMECTRLだっけ。そんな感じのスクリプトを参考にして。

つか、CAPSキー押せばいいだろうと思った
320名無しさん@お腹いっぱい。:2013/07/26(金) 19:47:03.92 ID:W7r2Wdzl0
一文字でもなにか入力したらCAPSオン、マウスを動かし始めたらオフにしたいんですよ
確かにCAPSキー押せばいいんですが、自動でできないかなと思いまして…
321名無しさん@お腹いっぱい。:2013/07/26(金) 20:14:54.66 ID:1Js/9gA+0
ならマウス側のカーソル位置をトリガーにして組んでみたら?
mousegetposとsettimer使えば出来そうな予感

あ、おれは作らないからね?
322名無しさん@お腹いっぱい。:2013/07/26(金) 20:30:52.09 ID:bUysJ0FZ0
>>320
・・・・・
文字入力時には、CAPSオンで、マウス移動時にはCAPSオフってこと??
文字入力って、キーボード入力ってことだよね。
俺の理解力が足らないのかもしれないけど、CAPS押しっぱなしでいいんじゃないのかな。
マウス移動時にキーボード入力がないならCAPSオフでもCAPSオンでも関係ない気がする。

マウス移動のときにCAPSオフにしたいってのなら、
SetTimerで定期的にマウス位置をMouseGetPosで取得して、前回の取得位置と異なっていれば
CAPSをオフにする(>>4参考)ようなスクリプトを作ればいい。

文字入力時に強制的にCAPSオンのほうは思いつかんわw
アルファベットキーの26文字だけだから、全キーにホットキーとして割り振っておくか?
323名無しさん@お腹いっぱい。:2013/07/26(金) 21:14:55.48 ID:hx5drw2j0
>>320
文字入力を感知したいなら "Input" を使えばいいと思う。

Capslock の状態取得は "GetKeyState"、状態切り替えは "SetCapsLockState" で可能。
>>4 の方法はリマップ・ホットキーの話だから、今回は関係ないのでは?
324名無しさん@お腹いっぱい。:2013/07/26(金) 23:25:30.75 ID:RPSXPdUb0
CapslockをOFFにする理由が知りたいな
325名無しさん@お腹いっぱい。:2013/07/27(土) 00:03:55.54 ID:9NbGG/+00
>>320
自分で答え出してるじゃん

キー入力を検知してオン
マウス移動を検知してオフ

CAPSオフにしておかないといけない理由を教えて。
326名無しさん@お腹いっぱい。:2013/07/27(土) 01:27:32.56 ID:+ORtMnVQ0
質問だけど#IfWinActive で複数のアプリを指定したい場合どうするの?

#IfWinActive a
r::e
#IfWinActive b
r::e

としてしまうとr::eを二度書かないといけないので困ってる
327名無しさん@お腹いっぱい。:2013/07/27(土) 02:19:01.22 ID:YJxzsNEd0
>>326
#If WinActive("a") or WinActive("b")
r::e
#If
328名無しさん@お腹いっぱい。:2013/07/27(土) 10:31:25.90 ID:xNl+9day0
#Ifというのがahklにはあるから後は普通のif文

もしautohotkey.jpとか〜流行らせるサイトを使ってるなら情報が古いから
wikiを参照した方がいい
329名無しさん@お腹いっぱい。:2013/07/27(土) 14:36:16.09 ID:gSHZh2OsP
AutoHotkeyJpて情報古かったんだ
330326:2013/07/27(土) 18:49:21.26 ID:+ORtMnVQ0
当方AHK使用者なので
何度やってもうまくいかないのは>>327がAHK-L用という罠かしら

>>328
AHK-Lのことだね
AHKでは不可なら使ってみるよ

二人有難う
331名無しさん@お腹いっぱい。:2013/07/27(土) 19:03:44.00 ID:ADBQX7Z/P
ahkでもグループ化すればいけるんじゃね
332名無しさん@お腹いっぱい。:2013/07/27(土) 19:25:57.70 ID:XbZLYQqO0
ahklがデフォって>>1に書いてある
333名無しさん@お腹いっぱい。:2013/07/27(土) 20:17:46.53 ID:uXJ7Do3L0
>>329
Jpの方は古くないって。そんな事言ったらあのwikiもほとんど更新されてないし、本家参照しろって事になる
334名無しさん@お腹いっぱい。:2013/07/27(土) 20:25:10.23 ID:ILYeSDBQ0
古くはないけど書いてないことも多いなと

SoundSetについて言及はあったっけ?
335名無しさん@お腹いっぱい。:2013/07/27(土) 20:30:48.12 ID:uXJ7Do3L0
>>334
vista以降対応の話ならたぶん無いだろうね。更新されてないわけだし
336名無しさん@お腹いっぱい。:2013/07/27(土) 22:46:25.69 ID:wTxjAkzj0
wikiって管理人の編集履歴が表示されてないだけであちこち更新されてるぞw
337名無しさん@お腹いっぱい。:2013/07/28(日) 00:21:55.16 ID:VsIAqr6O0
チョット知恵を貸してくれませんか

wasdでゲームキャラを移動させるとして、aが押されてる間にdが押されたらaの判定を消す、wが押されてる時にsが押されたらwの判定を消す

aが押されてる間にdが押されたらsを優先してaの判定を消し
aを押したままdを離すとaが押されたことに戻す

この条件付けが思いつきません

十字キーって基本的に上下左右同時押しは出来ないじゃないですかアレを再現したいんです
338名無しさん@お腹いっぱい。:2013/07/28(日) 00:46:42.61 ID:VsIAqr6O0
あ、出来ました。失礼しました。スルーでお願いします
339名無しさん@お腹いっぱい。:2013/07/28(日) 03:17:46.05 ID:SjRkHWqD0
先日>>310にて質問させて頂いた者です。

タッチパッドのドライバがsynapticsということで、smartsenceの項目が
オンになっていると同様の症状が発生するという記事を見て設定しなおしたが改善されず。

alt,ctrl,function,windows等の一部のキーを押しながらの場合はポインタを動かせるので
スクリプト次第でなんとかなるのかなと思いまして調べてみましたが、スクリプトについて無知ですので迷走状態です。
どなかたご教授頂けないでしょうか?

sc079::MButton の後にどのようにwaitkeyを挿入すればよいのかわからないです。
340名無しさん@お腹いっぱい。:2013/07/28(日) 06:52:24.56 ID:Bd4vjtEa0
>>326
亀レスだけど、SetTitleMatchMode で RegEx を指定すればAHK(ノーマル)でも出来るよ

SetTitleMatchMode, RegEx ; この一行はAutoexecセクションに記述
#IfWinActive a|b
341名無しさん@お腹いっぱい。:2013/07/29(月) 20:24:17.54 ID:iQ8+smJo0
>>339
Win7でもキー押しながらだとタッチパッド効かないな。
Windows 7 Home Premium SP1 64bit
Synaptics PS/2 Port TouchPad

KeyWaitの問題ではない思う。

レジストリをいじって「変換」キーを使っていない特殊キー(RAltなど)に割り当て
(>>4 を参照)、AutoHotkeyで RAlt::MButton としたら動くのかな。

操作性は少し変わるが「変換」キーを押すたびにMButtonの押し下げ状態を切り替える
やり方なら問題なく動作した。
(例)
sc079::
 if(!GetKeyState("MButton"))
  Send,{MButton Down}
 else
  Send,{MButton Up}
return
342名無しさん@お腹いっぱい。:2013/07/30(火) 00:25:21.29 ID:mDCw0vj10
タッチパッドドライバのパームチェックでキーボード操作中はポインタ無効にされちゃうってことか
何言ってるのかさっぱりわからなかったがようやっと合点がいった

AHK側でどうにかできる問題じゃないからレジストリでキー割り当て変えるしかないんじゃね
343名無しさん@お腹いっぱい。:2013/07/30(火) 23:48:24.76 ID:NU4qt1T20
MouseGestureLを常駐させておくとWhiteBrowserというソフトのサムネイル上で右クリックしただけで
「405ミリ秒以内に2001回のホットキーを受信しました 続けますか?」
というメッセージが出て
はい・いいえどちらのボタンを押してもWindowsごと不安定になります

MouseGestureLにはWhiteBrowserのジェスチャは全く登録していません
何が原因なんでしょうか?

AHK_L最新64bit@Win7
344名無しさん@お腹いっぱい。:2013/07/31(水) 00:02:24.17 ID:2LTdv9L50
>>343
>>5
> Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
> A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
>   先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
>
>   #UseHookで全部にキーボードフックを適応する方法でも可。
345名無しさん@お腹いっぱい。:2013/07/31(水) 00:24:07.17 ID:FeT/aTtM0
>>344
ありがとうございます
先頭に#UseHook書いても変わらず同じ症状が出ます
ホットキーの前に$を書こうにもホットキーらしき行::が見当たりません
MouseGestureLのどこに書いたらいいんでしょうか?
346名無しさん@お腹いっぱい。:2013/07/31(水) 01:46:30.46 ID:3gcMMuN10
#Includeで特定のもの以外の変数が使えない仕様になってるのって何で?
素人考えだけど、仕組み的にできないわけはないだろうからわざとそうしてると思うんだけど
ini読み込ませたりする時にA_ScriptNameとかが使えないのが地味に不便
347名無しさん@お腹いっぱい。:2013/07/31(水) 01:50:58.49 ID:2LTdv9L50
345>>
基本から分かってないようなので
同梱のヘルプドキュメントとwikiを読みましょう。

> 同梱のヘルプドキュメント
5.2.6.「XX hotkeys have been received in the last XXXXms.」エラーの対処方法(XXは環境による)
348名無しさん@お腹いっぱい。:2013/07/31(水) 02:16:13.51 ID:FeT/aTtM0
>>347
ありがとうございます
ヘルプに書いてあったんですね失礼しました

ですが・・・
#HotkeyInterval 2000
#MaxHotkeysPerInterval 3000
「初期化処理」の中に記述してもやはりエラーが出ます
WU_とWD_はジャスチャ定義に登録していません

他に回避できる方法ないでしょうか?
349名無しさん@お腹いっぱい。:2013/07/31(水) 11:33:36.82 ID:e+LwabE/0
テンキーでマウスを動かしたいんですがどうすればいいでしょう?
他のフリーソフトは常駐が増えて嫌なのです
350名無しさん@お腹いっぱい。:2013/07/31(水) 12:18:26.80 ID:Kn5TBH/A0
テンキーのキー入力をフックしてmousemove
351名無しさん@お腹いっぱい。:2013/07/31(水) 12:22:01.65 ID:85LVl2RPP
ahkのLじゃない初代を使っています。ini操作でハマっています。

スクリプトの設定をiniで保管してるのですが、
iniを操作している途中で停電してPCが強制切断すると、
iniファイルにヌル0x00が混入するようです。

混入した後は、

・前半のiniは読めるし書ける
・途中に出てきた0x00以降に存在する項目は読めないし書けないがエラーも出ない

という状態になって、気づくのがずいぶん遅れたりします。

そこで、指定したファイルに、0x00が含まれているかどうかをチェックしたいのですが、
この用途にちょうどよい方法はありますでしょうか。
352名無しさん@お腹いっぱい。:2013/07/31(水) 13:26:55.72 ID:ZNGfc+tL0
>>351
適当に返事してみよ。
どういう処理で読みだしてるのかわからないからあれだけど・・って
IniRead使ってるのか。

その条件(0x00が混ざりこむ)のが正しいなら一番面倒くさくないのは
Iniファイルを一度全部バイナリモードでバッファに読み込んで、0x00をなくして
もう一度Iniファイルに書き戻してから、IniファイルをIniReadで読み込んで解釈
するのが一番楽かね。ダーティハックってのは理解してるw


でも、不正終了で混ざりこむのは0x00だけじゃないと思うし、停電する環境をなんとか
するか、、不正落ちしたときには、不正落ちしたことを認識して前回の異常でない場合
のIniファイルを読み込むように作り直すことだと思うぞ
353名無しさん@お腹いっぱい。:2013/07/31(水) 13:44:18.80 ID:ZNGfc+tL0
>>352
ああ、Lじゃないと0x00を判断しづらいのか。
バッファに読み込んだファイル内容を StringLen で長さをバイト単位で求めて
それをiniファイルのファイルサイズと比べて、違ってたら変な文字の混入が判断
できるんじゃね?
354名無しさん@お腹いっぱい。:2013/07/31(水) 14:08:33.45 ID:85LVl2RPP
>>353
早速ありがとうございます。

ふだんは安定して全く困らないのですが、毎年この時期だけ、
落雷でこの現象にはまります。

そうですinireadでチマチマやっています。
StringLenとfilegetsizeで比べて、おかしかったら警告を出すようにします。
355名無しさん@お腹いっぱい。:2013/07/31(水) 18:46:58.67 ID:ZNGfc+tL0
>>354
>>353方式はあまりにダーティすぎる(しかも、StringLenの仕様を知らずに適当に書いてた)から
もうちょいまともな方法で

iniファイルの書き出しを始めるときに、どこかにテンポラリのファイル(たとえば、マイドキュメントのの myahk.lck)とか
を作って、書き出しを終了したときに、そのファイルを削除する。
でもって、起動時にそのファイルがあったら、iniファイルを開いたままで落ちた証拠だから、警告を出して
そのロックファイルを削除して終了する。

のほうが、変な仕様の狭間に落ち込まないし、一般的な方法でわかりやすいと思う。
356名無しさん@お腹いっぱい。:2013/07/31(水) 20:14:17.41 ID:85LVl2RPP
>>355
ありがとうございます。一連の流れを関数にして実装してみます。
357名無しさん@お腹いっぱい。:2013/08/01(木) 00:09:58.00 ID:wP81S9II0
その前に無停電電源装置(UPS)を導入することを激しくオススメする。
358名無しさん@お腹いっぱい。:2013/08/01(木) 00:16:51.08 ID:slNGLXz00
落雷多い地域だとUPSくらいじゃどうにもならないんじゃね
前に宇都宮の某工場にメンテで行ったことあるけど、デカイの来ると
UPSルームごと落ちるっつってたっけ
359名無しさん@お腹いっぱい。:2013/08/01(木) 00:28:08.48 ID:wP81S9II0
お前の家は工場規模なのか?w
360名無しさん@お腹いっぱい。:2013/08/01(木) 13:05:25.05 ID:Xpz78igg0
スタートアップでfoo.ahkを実行させた後にfoo.ahkのGUIをカスタマイズするbar.ahk実行したい場合、
どうやるのがオススメですか?
361名無しさん@お腹いっぱい。:2013/08/01(木) 13:16:42.47 ID:mLIA2fXkP
foo.ahkのGUIをカスタマイズするbar.ahkを、なぜ別体にしなければならないのか、
詳細を書かない限り誰もわからない
362名無しさん@お腹いっぱい。:2013/08/01(木) 13:33:37.89 ID:Xpz78igg0
bar.ahkは単体で別の物に適用することもあるからです
363名無しさん@お腹いっぱい。:2013/08/01(木) 14:17:57.07 ID:BnjRwzV90
ファイルの中身を言ってくれないと
364名無しさん@お腹いっぱい。:2013/08/01(木) 19:38:07.21 ID:whuVUqIW0
SetClipboardData(hBitmap)
{
DllCall("GetObject", "Uint", hBitmap, "int", VarSetCapacity(oi,84,0), "Uint", &oi)
hDIB := DllCall("GlobalAlloc", "Uint", 2, "Uint", 40+NumGet(oi,44))
pDIB := DllCall("GlobalLock", "Uint", hDIB)
DllCall("RtlMoveMemory", "Uint", pDIB, "Uint", &oi+24, "Uint", 40)
DllCall("RtlMoveMemory", "Uint", pDIB+40, "Uint", NumGet(oi,20), "Uint", NumGet(oi,44))
DllCall("GlobalUnlock", "Uint", hDIB)
DllCall("DeleteObject", "Uint", hBitmap)
DllCall("OpenClipboard", "Uint", 0)
DllCall("EmptyClipboard")
DllCall("SetClipboardData", "Uint", 8, "Uint", hDIB)
DllCall("CloseClipboard")
}
これが64ビット版AHKLで動かないんだけど(32ビットでは動きます)
どこ直せばいいんだ?
365名無しさん@お腹いっぱい。:2013/08/01(木) 19:43:13.22 ID:wP81S9II0
>>364
説明無しで丸投げはお断りします。
366名無しさん@お腹いっぱい。:2013/08/01(木) 20:51:53.13 ID:Xpz78igg0
>>363
ただ単に複数のスクリプトの起動順を制御したいだけなんですが・・・
367名無しさん@お腹いっぱい。:2013/08/01(木) 20:59:20.46 ID:BnjRwzV90
>>366
それならrunはさんで順番にでいいんじゃないの?
早すぎたらsleepかませてさ
368名無しさん@お腹いっぱい。:2013/08/02(金) 12:57:27.38 ID:6wlnHjdD0
>>364
このソースを見て説明なしって思う人は・・・

放置されてるのか、誰も返事ないのはかわいそうだからエスパーしておくと
(unsigned) intとポインタとは別物だっていう昔からのルールに引っかかってるだけじゃない?

ハンドルの型は、普通ポインタだと思うんだ。AHKだとPtr型っていうのかね。
369名無しさん@お腹いっぱい。:2013/08/02(金) 13:12:45.43 ID:3WhsYSQbP
つまり個人個人でレベル差があり、それを考慮しない質問は
レベル範囲外の人にとっては雑音でしか無く、印象が悪くなり、
せっかく書いてもムダ弾で終わる確率が上がるってこと。
370名無しさん@お腹いっぱい。:2013/08/02(金) 13:25:52.62 ID:rSeKqUXR0
すまんなDllCallとかいうのがあるのすら今はじめて知った
371名無しさん@お腹いっぱい。:2013/08/02(金) 13:44:16.71 ID:6wlnHjdD0
すまん、>>368の最初のほうは言いすぎた。
よその夏を見ていてちょっとイラついてた。
372名無しさん@お腹いっぱい。:2013/08/02(金) 20:55:01.49 ID:oZEYWoG+0
質問する時にレベル範囲外の人間を考慮してどうするんだ・・・
373名無しさん@お腹いっぱい。:2013/08/02(金) 21:18:34.87 ID:3WhsYSQbP
>>372
レベルがわかる見出しをつけるかどうか
374名無しさん@お腹いっぱい。:2013/08/03(土) 00:08:17.62 ID:0vGj0uqB0
説明が必要かどうかよりコピペ丸投げすんなって話じゃないの

dllcallのUnicode&64bitポインタ修正関連は自分もハマったけど
この辺は何度も書き込みあるから過去ログ漁ればヒントになるんじゃね
375名無しさん@お腹いっぱい。:2013/08/03(土) 15:31:25.83 ID:akz0fYPZ0
アホかw 答えたくないか答えられなければ答えなければいいだけ
376名無しさん@お腹いっぱい。:2013/08/05(月) 15:06:34.26 ID:OYwPNuW10
マウス変えたとたん
XButton1 & RButtonのコンビネーションが効かなくなったよ 対策ないかな?
マウスのメーカーは違うけど両方ともドライバはWindowsなんだが・・・
こういうコンビネーションてあんまり使うべきじゃないのかな
377名無しさん@お腹いっぱい。:2013/08/05(月) 19:30:48.76 ID:wWjpVwZz0
Win8にて%windir%\explorer.exe shell:::{3080F90E-D7AD-11D9-BD98-0000947B0257}
を使いたいんだが
http://ahk.xrea.jp/misc/CLSID.htmlに記載無しだから使えない?エラーが出る
378名無しさん@お腹いっぱい。:2013/08/05(月) 21:08:56.97 ID:WBf5O90j0
>>376
マウスジェスチャーL使ってみ?
379377:2013/08/06(火) 13:03:19.09 ID:kRO5DUyj0
自己解決しました
runしたらできました
380名無しさん@お腹いっぱい。:2013/08/07(水) 15:14:39.18 ID:YIofwqTw0
コードリフレクションって無理?

reflection, blurblurblur(100)

で blurblurblur(100)  を実行、みたいな
381名無しさん@お腹いっぱい。:2013/08/07(水) 20:41:37.50 ID:J5INVSkE0
左Windowsキー単独押下はなかったことにして、
左Windowsキー+左Altキーが押された時に左Windowsキーの
役割をさせたいのですが、うまくいきません。
どのように設定をかいたらよいでしょうか?
382名無しさん@お腹いっぱい。:2013/08/07(水) 21:46:11.12 ID:D6+20bx50
>>380

・方法1
自分で構文解析し、
 %functionName%(param)
のようにする。引数の個数が不定の場合は困る。

・方法2
別のスクリプトファイルに書き出してそれを実行する。
ライブラリに入っている関数ならこの方法が簡単。
グローバル変数などを使っている場合は面倒。
383名無しさん@お腹いっぱい。:2013/08/07(水) 22:09:43.13 ID:2x1l7afS0
>>381
Lwin up::return
Lalt&Lwin::Lwin

でいけるんじゃね?
384名無しさん@お腹いっぱい。:2013/08/08(木) 00:53:03.89 ID:ToOe0jZF0
質問です

メルティブラッド買ってきたんですけどコレゲームパッドでしか1Pできないんですよね
キーボードでやりたくてwasdにjoyXjoyYを設定したいんですけどどうすればいいんでしょうか?
385名無しさん@お腹いっぱい。:2013/08/08(木) 09:33:45.92 ID:NXplh44S0
joy系コマンドってSendで出力できるんだっけ?
できるならwasdに割り当ててやればいいし、できないならキーコード投げてやればいいんじゃね
どっちにしてもキーリピートぎこちなくなるからゲームの操作性は悪くなると思うけど

http://ahkwiki.net/Hotkeys
http://ahkwiki.net/KeyList
386名無しさん@お腹いっぱい。:2013/08/08(木) 19:54:04.50 ID:Hh7FI2pq0
>>384
autohotkeyじゃ出来ないのでppjoyでやればいいよ
387名無しさん@お腹いっぱい。:2013/08/08(木) 21:34:37.49 ID:070Zn6Vj0
用済みになった常駐スクリプトを一度に落とす方法を探していたら
おあつらえ向きのものが過去ログに埋もれていた
ttp://www.logsoku.com/r/software/1253888736/123
388名無しさん@お腹いっぱい。:2013/08/09(金) 21:04:54.17 ID:V7J/R1Rm0
質問があります。

vk1Csc079 &amp; K::Return
vk1Csc079 &amp; S::TwoKeyPlus("K","sc00C")
TwoKeyPlus(InBase,HE){
if GetKeyState(InBase,"P")
Send, % "{Blind}{" . HE . "}"
}

とし、変換キー+K+S としても何も打ち込まれません。
SをA,D,Fのいずれかに変えると"-"が打ち込まれます。
KをJ,Lのいずれに変えてもS同様打ち込まれませんが、U,H,Mの
いずれかに変えると"-"が打ち込まれます。
アルファベットのキーの違いで動作が異なるのでしょうか?
389名無しさん@お腹いっぱい。:2013/08/09(金) 21:33:58.89 ID:uHH3OZFw0
>>388
キーボードの性能の問題
安物だと3キー同時押しが認識しない、部位によっても挙動が違う。
貼り付けミスだと思うが文字参照が混じってる。

2.4 キーボードの同時押しが認識しない。
ttp://ahkwiki.net/Faqs
390名無しさん@お腹いっぱい。:2013/08/09(金) 23:07:36.53 ID:V7J/R1Rm0
>>389
答えていただきありがとうございます。
いろいろと調べてみます。
391名無しさん@お腹いっぱい。:2013/08/10(土) 23:53:27.67 ID:tq9L/r+z0
デバイスの専用ドライバがドラッグロック非対応で困ってるんだけど(ロジクールのt650)、

ahkでなんとかできるかな?



ダブルクリックの2回目で、長押しかつちょっと動いたら、

→左ボタン押し下げ固定

→もう一度クリックで押し下げ固定解除



って感じだと、普通のダブルクリックでの誤爆が制御できなさそうで……

もっとうまい方法ないかな?
392名無しさん@お腹いっぱい。:2013/08/11(日) 00:28:44.02 ID:6MMvF2rd0
ちょうどクリックロックなら前作ったのがあった。
単クリック長押しでドラッグモード。

Lbutton::
If(dandd == 1){
dandd := 0
sendinput,{Blind}{Lbutton up}
TrayTip , , 左クリックのロックを解除, 10 ,1
keywait,%A_thishotkey%
}else{
sendinput,{Blind}{Lbutton down}
keywait,%A_thishotkey%,T0.75
If(ErrorLevel == 1){
dandd := 1
TrayTip , , 左クリックのロック, 10 ,1
keywait,%A_thishotkey%
}else{
sendinput,{Blind}{Lbutton up}
}
}
return

マウスジェスチャーに仕込むならgosubとかに変形させればいけると思う
393名無しさん@お腹いっぱい。:2013/08/11(日) 00:29:19.24 ID:6MMvF2rd0
こっちはクリックロック中に右ボタン押したら解除。

Rbutton::
If(dandd == 1){
dandd := 0
sendinput,{Blind}{Lbutton up}
TrayTip , , 左クリックのロックを解除, 10 ,1
}
sendinput,{Blind}{Rbutton}
keywait,%A_thishotkey%
return
394名無しさん@お腹いっぱい。:2013/08/11(日) 10:17:47.10 ID:1MEV54cA0
クリックロックってOS標準でついてなかったっけ?
手元に7と8しかないんで確証ないが、たしかXP以前にもついてたような
395名無しさん@お腹いっぱい。:2013/08/11(日) 13:17:23.24 ID:6MMvF2rd0
>>394
え、まじで?それは知らなかった
あんまり作った意味なかったかなぁ
396名無しさん@お腹いっぱい。:2013/08/16(金) 22:44:56.00 ID:tcWRH6My0
最近のマウスにはボタンがいろいろ付いてるけど
Xボタン2以上のボタンを指定するにはどうしたらいいんすか?
標準でタスク切り替えになるボタンをカスタマイズしたい・・・
397名無しさん@お腹いっぱい。:2013/08/16(金) 23:03:45.04 ID:Il8d/MiB0
alttabとかshiftalttabをつかえばいいよ

でも挙動怪しいから自分で打ち込んだほうがいいかもしれないけど
398名無しさん@お腹いっぱい。:2013/08/17(土) 00:48:07.26 ID:d9Jno0+00
サンクス
ホットキーみたいなのはないんですね
399名無しさん@お腹いっぱい。:2013/08/17(土) 17:06:07.53 ID:otGiSVcJ0
ボタン1を押すとマウスカーソルを操作し続け、ボタン2を押すと止めるというスクリプトを書いたんですけど
もし、ボタンが認識されなくなったり、スクリプトを改造したときうっかり止めるコマンドを無効化してしまった場合
どうやってスクリプトを止めたらいいんでしょうか


joy1::
 SetTimer,auto,100
return

joy2::
 SetTimer,auto,off
return

auto:
 MouseClick,left,100,100
return
400名無しさん@お腹いっぱい。:2013/08/17(土) 17:21:38.76 ID:2jplf0+W0
WheelrightとWheelleftってもしかして動かない?
401名無しさん@お腹いっぱい。:2013/08/17(土) 17:44:28.43 ID:qhPZtCko0
vista以降なら動くはず
402名無しさん@お腹いっぱい。:2013/08/17(土) 18:29:04.53 ID:XLV8CY0W0
>>399
Suspend、Exit 等をホットキーに設定し忘れた場合
マウスが動くなら通知領域のアイコンから終了。
無理なら Ctrl+Alt+Del 押すとスクリプトは一時停止するので
タスクマネージャー、ログオフ、再起動で停止させるしかない。
403名無しさん@お腹いっぱい。:2013/08/18(日) 17:15:26.47 ID:5ByqEfTj0
>>402
ありがと
とりあえず先頭に esc::Pause を入れとくことにしたよ
あと、Suspend使うと止めるボタン効かなくなるからみんな注意しろよな
404名無しさん@お腹いっぱい。:2013/08/19(月) 09:23:10.14 ID:4RM237Gp0
asd
405名無しさん@お腹いっぱい。:2013/08/20(火) 17:03:03.09 ID:YmnlwscB0
時代遅れなアプリケーションで
デュアルモニタ環境で 座標値がマイナス値になる場所にウィンドウを置くと
スクロールが出来なくなるソフトがあるんですが
AHKを使用してスクロールを可能にするアイデアないでしょうか?
406名無しさん@お腹いっぱい。:2013/08/20(火) 18:04:51.38 ID:/TxglOyi0
リダイレクトホイールの要領でSendMessegeで直接 WM_MOUSEWHELL投げる
マウスの座標は適当に正の値にかきかえてやればいい
407名無しさん@お腹いっぱい。:2013/08/20(火) 18:51:57.31 ID:YmnlwscB0
>>406
ありがとう〜
CoordMode,Mouse,Screen
MouseGetPos,m_x,m_y
htarget := DllCall("WindowFromPoint","int",m_x,"int",m_y)
WheelDown::
SendMessage, 0x20A, -120 << 16, ( m_y << 16 )|m_x,, ahk_id %htarget%
というように書いてみましたがこのままではマイナス値で動きません・・・
> マウスの座標は適当に正の値にかきかえてやればいい
というのはどういうことでしょうか?
408名無しさん@お腹いっぱい。:2013/08/20(火) 21:31:56.34 ID:x3ilWYkfP
座標書き換えたらそれこそ動かないんじゃね
409名無しさん@お腹いっぱい。:2013/08/21(水) 00:31:03.35 ID:l+MWFYnJ0
>>407
アプリにもよるけど案外ホイールスクロール時はマウス座標は見てない場合が多かったりする
100,100とか適当に固定値入れてみて試してみ
410405:2013/08/21(水) 01:16:18.56 ID:PqN5Ln+x0
>>409
サンクスです
SendMessage, 0x20A, -120 << 16, ( 100 << 16 )|100,, ahk_id %htarget%
座標を無視してくれるアプリの場合↑これでも動くはずだということですよね?

無理でした・・・これだともう打つ手なしですか
411名無しさん@お腹いっぱい。:2013/08/21(水) 07:16:41.41 ID:l+MWFYnJ0
スクロールできればいいなら WM_MOUSEWHELLの代わりにWM_VSCROLL(0x115)投げるとか

あと>407
AHKなしの環境でも動かないなら多分意味ないかもだが
WM_MOUSEWHELLのマイナスXY座標値はバッファサイズの問題で変換が必要だった

; lParam: XY座標
CoordMode,Mouse,Screen
MouseGetPos,mx,my,hwnd,ctrl,3
my += (my < 0) ? 0xFFFF : 0
mx += (mx < 0) ? 0xFFFF : 0
lpalam := (my << 16) | mx

WindowFromPoint使う場合はわからんけど、POINT構造体はLONG型だからやっぱ変換の必要があるのでは
412名無しさん@お腹いっぱい。:2013/08/22(木) 02:11:22.55 ID:4LPgchEe0
>>411
遅れて申し訳ない・・・
週末ちゃんと取り組んでみます
ホントに有難うございます
413名無しさん@お腹いっぱい。:2013/08/23(金) 02:27:20.35 ID:+gqza4BW0
AHK_L+MG_Lでマルチタッチのピンチイン/ピンチアウトに動作割り当てしたいんですが
そもそもマルチタッチ自体を判定できないからどうやっても無理なんでしょうか?
414名無しさん@お腹いっぱい。:2013/08/24(土) 15:44:31.89 ID:cNQA4occ0
マルチタッチ判定は無理じゃないかな
415名無しさん@お腹いっぱい。:2013/08/26(月) 16:14:33.62 ID:Wrx5R3nL0
どうすればマウスオーバーでマウスカーソル下のウィンドウをアクティブに出来るだろう?
windowsの設定でもそりゃできるけど、環境をポータブル化したいからwindowsの機能に頼るのはちょっと都合が悪い
416名無しさん@お腹いっぱい。:2013/08/26(月) 16:25:20.60 ID:wxCHLsE30
>>415
MouseGetPos、WinActivate
どんなコマンドがあるか一通り読めばわかるはず。
ttp://ahkwiki.net/Commands_Category
417名無しさん@お腹いっぱい。:2013/08/26(月) 18:09:48.77 ID:uVgcNRQL0
#Persistent
SetTimer, WatchCursor, 100
Return

WatchCursor:
MouseGetPos, , , id, control
WinGetTitle, title, ahk_id %id%
;ToolTip, prev%prevtitle%`nnow%title%
If(title != prevtitle){
prevtitle := title
SetTimer, WindowActivate, -500
}
Return

WindowActivate:
MouseGetPos, , , id, control
WinGetTitle, title, ahk_id %id%
WinActivate,%title%
return


勉強がてらマウスオーバーでウィンドウアクティブの基本動作作ってみた。あとは任せた
418名無しさん@お腹いっぱい。:2013/08/26(月) 19:22:27.86 ID:oGwM78bd0
OSの設定を簡単にOn/Offできるようにするのが楽なんじゃないかな
419名無しさん@お腹いっぱい。:2013/08/26(月) 23:21:53.14 ID:ZPYzTFLX0
AHKで静的変数はどうやって作れるのでしょうか?
420名無しさん@お腹いっぱい。:2013/08/26(月) 23:25:18.52 ID:uVgcNRQL0
関数文{
static,変数名


こんなかんじで行けたはず。てか関数内部の変数はglobal書かないと勝手にスタティックになるんじゃねーっけ
421名無しさん@お腹いっぱい。:2013/08/26(月) 23:44:36.74 ID:ZPYzTFLX0
勝手にスタティックになるんですか
それはいいですね
422名無しさん@お腹いっぱい。:2013/08/27(火) 00:17:34.41 ID:ZBJPecSQ0
ならないよ
関数内のデフォルトはlocalだ
423名無しさん@お腹いっぱい。:2013/08/28(水) 18:25:41.63 ID:L7iRWF+P0
便利だなーAHK
424名無しさん@お腹いっぱい。:2013/08/30(金) 13:21:58.98 ID:VfQRvmWL0
FirefoxやInternet Explorerで表示するhtmlページ中で、マウスがテキストボックス上にある場合を判断したいのですが、スパイで見てもコントロールクラスが表示されません。

他の方法でマウスがテキストボックス上にある場合を判断することは出来ないでしょうか?
425名無しさん@お腹いっぱい。:2013/08/30(金) 20:26:44.84 ID:nmRvKytA0
無理だなあ
グリースモンキーでやったほうがいいんじゃない
426名無しさん@お腹いっぱい。:2013/08/30(金) 20:57:22.80 ID:Kq8gd9900
俺も四苦八苦試してみたけどそもそもテキストボックスを認識できない様子。
ダイアログまでしか取得できなかった
427名無しさん@お腹いっぱい。:2013/08/30(金) 23:36:47.27 ID:DO1l+NwR0
やりたいことにもよるけど
ブラウザ操作は、AHKとVimperator(とそのプラグイン)を組み合わせるのが融通きく印象
428名無しさん@お腹いっぱい。:2013/08/30(金) 23:47:34.12 ID:+DDmmih60
というかFirefoxならVimperatorなりKeySnailなりだけで充分な気ガス
IEは……
429名無しさん@お腹いっぱい。:2013/08/30(金) 23:52:24.84 ID:Kq8gd9900
Vimperator側でhotkeyつくってAHKで呼び出すとか?
その発想はなんでなかったんだ俺
430名無しさん@お腹いっぱい。:2013/08/31(土) 01:59:55.69 ID:5c3f7Ko/0
内部のことは内部で判定させて処理を外に投げるのがいいな
幸いFirefoxは柔軟に内部状態を判定できるし、Vimperatorだと複数キーストロークも扱いが簡単でいいな
例えば、ghで左モニタ、giで右モニタにウィンドウを移動させてる
431名無しさん@お腹いっぱい。:2013/08/31(土) 02:00:41.02 ID:5c3f7Ko/0
訂正 glで右モニタ
432名無しさん@お腹いっぱい。:2013/08/31(土) 02:02:24.33 ID:KFmeRKf40
>Firefoxは柔軟に内部状態を判定できる
どうやるのかくわしく教えて
433名無しさん@お腹いっぱい。:2013/08/31(土) 02:09:05.08 ID:5c3f7Ko/0
「マウス座標取得」とかで調べてみたら?
434名無しさん@お腹いっぱい。:2013/09/01(日) 00:02:10.37 ID:Zh/fipKtP
Win7でスタートボタンだけ消すって出来ないのかなぁ
WinHide,ahk_class Shell_TrayWnd
WinHide,スタート ahk_class Button(タスクバーだけ消すとボタンが残るので)
って書いたら消せるけどタスクバーは残したいからスタートの方だけにしたら消えてくれない
435名無しさん@お腹いっぱい。:2013/09/01(日) 00:41:49.95 ID:Ro7Yaky+0
>>434
WinHide,ahk_class Shell_TrayWnd
WinHide,スタート ahk_class Button
sleep, 1000
Winshow,ahk_class Shell_TrayWnd

ってやったらWin7のスタートボタンだけが消えた。
というか Winshow,スタート ahk_class Button を実行しても
スタートボタンが出てこなくなった。
Windows再起動したら復活すると思うけど。
436名無しさん@お腹いっぱい。:2013/09/01(日) 00:59:03.54 ID:Zh/fipKtP
こっちだと消えない…ボタンがちょっと縮んだ感じになって残っちゃう
ボタン消したいのは自分の我侭だから素直にタスクバーを完全に消しちゃおう
>>435ありがとー
437名無しさん@お腹いっぱい。:2013/09/01(日) 01:09:11.17 ID:RdYkudaa0
基本タスクトレイは左において自動的に隠してる。
これが意外と便利なんだ
438435:2013/09/01(日) 08:17:43.04 ID:Ro7Yaky+0
>>436
いつもは「タスクバーを自動的に隠す」を有効にしている状態だからなのか
>>435 でスタートボタンが消えたけど(カーソルをタスクトレイがあるところに近づけるとタスクトレイだけが表示される)
無効にしてから試してみたら消えなかった。
439名無しさん@お腹いっぱい。:2013/09/01(日) 13:28:02.98 ID:RdYkudaa0
んー?
send,{%A_thishotkey% down}
でもキーリピートしない。なんでや
440名無しさん@お腹いっぱい。:2013/09/01(日) 14:06:17.86 ID:/gH2/QrZ0
AHKって変数内容をスクリプト文として解釈させるってできましたっけ?

help_nara = 鹿せんべい
help_kyoto = 生八つ橋

addr = kyoto
tooltip help_%addr% ; <=コレを help_kyoto変数と解釈させて"生八つ橋"を表示させたい

キー押下時に、最前面プロセス名でtooltipのヒント内容を変えたいのですが、
スマートに出来ないかなと…
441名無しさん@お腹いっぱい。:2013/09/01(日) 14:10:42.31 ID:RdYkudaa0
スクリプトにラベルはりつけて

if (islabel(labelcheck))
gosub % labelcheck
else
send % labelcheck

みたいにすれば? ラベルがあるならgosub,でラベル内の処理をする
442名無しさん@お腹いっぱい。:2013/09/01(日) 14:12:29.88 ID:cHRogWCw0
%help_%addr%

とかじゃないの?
443名無しさん@お腹いっぱい。:2013/09/01(日) 14:47:27.56 ID:NIHaILJS0
hoge := help_%addr%
tooltip %hoge%
444440:2013/09/01(日) 15:07:19.89 ID:/gH2/QrZ0
>>441
ラベルなら直接変数化できるのか
ところで 例中の単発の % はどういう風に使うモンなんでしょう?

>>443
なんかトリッキーですが出来てますね
ありがとうございました。
445名無しさん@お腹いっぱい。:2013/09/01(日) 15:26:22.22 ID:RdYkudaa0
446440:2013/09/01(日) 15:50:50.86 ID:/gH2/QrZ0
>>445
ありがとうございます。
447名無しさん@お腹いっぱい。:2013/09/01(日) 16:14:14.28 ID:D3iJeYwS0
tooltip % help_%addr%
これでいいよ
448名無しさん@お腹いっぱい。:2013/09/01(日) 17:55:55.75 ID:xJ/oE3qH0
最大化⇔元に戻す
これを一つのキーで実行できますか?
449名無しさん@お腹いっぱい。:2013/09/01(日) 17:59:51.56 ID:RdYkudaa0
できるよ

Maximize:
WinGetActiveTitle, Title
WinGet MX, MinMax, A
If MX
WinRestore, A
Else
WinMaximize, A
return
450名無しさん@お腹いっぱい。:2013/09/01(日) 18:12:06.52 ID:xJ/oE3qH0
>>449
丁寧で迅速な対応に満足しております。
機会があればまたお願いします。
この度はありがとうございました。
451名無しさん@お腹いっぱい。:2013/09/01(日) 18:18:28.55 ID:f0y1T+Ka0
なんか。サポートセンター思い出しちゃったよ
452名無しさん@お腹いっぱい。:2013/09/01(日) 18:55:09.50 ID:NIHaILJS0
ヤフオクw
453名無しさん@お腹いっぱい。:2013/09/01(日) 21:45:10.61 ID:D3iJeYwS0
おめでとうございます!! 450さんから「非常に良い」と評価されました。
454名無しさん@お腹いっぱい。:2013/09/02(月) 00:00:45.56 ID:rG5K1m1O0
1.1.13.00 - August 27, 2013

Ported StrSplit() from v2 alpha.
455名無しさん@お腹いっぱい。:2013/09/02(月) 03:43:35.18 ID:alfTrg1p0
GUI作成についてお助け下さい
以下のスクリプトの、上下の間隔を空けたいのですが、どうすればよろしいでしょうか?
よろしくお願いします

Gui, +AlwaysOnTop
Gui, Show, h100 w100, てすと
GUI, Add, Text,,
(
あいうえお
かきくけこ
さしすせそ
)
return
456名無しさん@お腹いっぱい。:2013/09/02(月) 04:34:33.17 ID:ceprgIDX0
>>455
説明足らないから、どっちのこと言ってるのか分からんが。
文字を改行したときの間隔の事ならオプション見当たらないから行ごとに分割してる。
単純にテキスト全体の位置変えたいならXY軸指定。 GUI, Add, Text, x?? y??,
ttp://ahkwiki.net/Gui,Add
457名無しさん@お腹いっぱい。:2013/09/02(月) 04:57:29.51 ID:alfTrg1p0
>>456
言葉足らずに申し訳ありません。
複数行テキスト改行時の間隔設定をお聞きしたかったのです。
やはり分割でXY指定しか出来ないのですね。
今まで通りXY指定で作成します、有難うございました。
458名無しさん@お腹いっぱい。:2013/09/02(月) 05:04:51.69 ID:O6D6YMTnT
「行間」って言葉があってね
一行ごとに小さな空白フォントを挿入とかでも出来るかな
459名無しさん@お腹いっぱい。:2013/09/02(月) 09:27:50.70 ID:rY4k/R4o0
`n使えないのか
460名無しさん@お腹いっぱい。:2013/09/02(月) 15:59:32.28 ID:SDD4HYOv0
非アクティブウィンドウにCtrlSendでキーを送ると
そのウィンドウがアクティブになってしまうんですが
非アクティブにしたままキーを送る方法ってありませんか?
461名無しさん@お腹いっぱい。:2013/09/02(月) 16:03:21.11 ID:diV+U4bc0
アクティブにならないよ
そのアプリ側の仕様か記述方法が悪いかのどちらかじゃね
462名無しさん@お腹いっぱい。:2013/09/02(月) 16:19:52.45 ID:SDD4HYOv0
すみません
確かめてみたらアプリ側のせいでした
ありがとうございました
463名無しさん@お腹いっぱい。:2013/09/03(火) 00:37:40.53 ID:2DLaVrsF0
以下のコードに、ローカルに保存されたhtmlを表示させる事は出来ますでしょうか?
よろしくお願いします

Gui, Add, ActiveX, w500 h500 x0 y0 vdoc, browser
doc.silent := true
ComObjConnect(doc,"IE_")
IE_DocumentComplete(doc) {
doc.Document.Body.Style.Overflow := "hidden"
}
Gui, Show, w500 h500 Center, HTML Gui
return

GuiClose:
Gui, Destroy
ExitApp
464名無しさん@お腹いっぱい。:2013/09/04(水) 05:38:43.19 ID:8zJf0KaG0
>>463
Gui, Add, ActiveX, w500 h500 x0 y0 vdoc, HTMLfile
FileRead, html, Z:\foo.html
doc.write(html)

Gui, Show, w500 h500 Center, HTML Gui
return

GuiClose:
Gui, Destroy
ExitApp
465名無しさん@お腹いっぱい。:2013/09/04(水) 17:20:06.22 ID:5ZDxYAJL0
質問です

現在マウスオーバーで最前面に出てるプログラムにマウスが乗っかったら隠すって処理を書いてるんですが、タイトルが全部入っちゃうとタイトルが少しでも変化するとプログラムが動かなくなります
例えばfoobar2000なら2000の部分だけタイトルを抜き出すことはできませんか?

今こういう処理をしています


MouseGetPos, , , id, control
WinGetclass, window, ahk_id %id%
WinGettitle, title, ahk_id %id%

class = %title% ahk_class %window% ;対象ウィンドウのウィンドウクラス名
WinActivate,%class%
SysGet,titlehigh,4
466名無しさん@お腹いっぱい。:2013/09/04(水) 17:37:10.25 ID:P9QV+/zb0
ウィンドウ指定の方法ぐらいは読んだの?
467名無しさん@お腹いっぱい。:2013/09/04(水) 17:43:35.49 ID:5ZDxYAJL0
読みました
タイトルマッチモードは設定してあります
要するに変わったタイトルと前のタイトルの一部がマッチしてればという動きをさせたいんです
468名無しさん@お腹いっぱい。:2013/09/04(水) 17:44:13.58 ID:Py4Wtbhv0
>>465
このスクリプトだとタイトル指定関係なく目的の動作しないと思いますが・・・。
469名無しさん@お腹いっぱい。:2013/09/04(水) 17:49:23.62 ID:5ZDxYAJL0
全部書くと長いと思うし落ちてたスクリプトを改変してたので気が引けたんですが、全部書いたほうがいいのかな・・・?
SetTitleMatchMode,2
#WinActivateForce
#SingleInstance FORCE
TrayTip , , マウスオーバーで隠す, 10 ,1

MouseGetPos, , , id, control
WinGetclass, window, ahk_id %id%
WinGettitle, title, ahk_id %id%
class = %title% ahk_class %window% ;対象ウィンドウのウィンドウクラス名
WinActivate,%class%
SysGet,titlehigh,4

#Persistent

;初期設定
WinGetActiveTitle, lastATitle
WinActivate, %class%
WinSet, AlwaysOnTop, ON, %class%
WinActivate, %lastATitle%
flag = 0

SetTimer, OverHide, 100 ;100ms毎にマウス位置をチェックし、ウィンドウを隠すか判断。
return

OverHide:
WinGetPos, x, y, w, h, %class%
x1 := x + w
y1 := y + h
y += %titlehigh% ;タイトルバーをマウスオーバー判定から除く。
470名無しさん@お腹いっぱい。:2013/09/04(水) 17:49:57.64 ID:5ZDxYAJL0
;対象ウィンドウがなくなってれば即終了。
IfWinNotExist, %class%
ExitApp
CoordMode,Mouse,Screen
MouseGetPos, xPos, yPos
If xPos between %x% and %x1%
If yPos between %y% and %y1%
{
WinSet, AlwaysOnTop, OFF, %class%
WinSet, Bottom, , %class%
flag = 1
}
else
gosub RestoreOnTop
else
gosub RestoreOnTop
return

RestoreOnTop:
If flag = 1
{
WinGetActiveTitle, lastATitle
WinActivate, %class%
WinSet, AlwaysOnTop, ON, %class%
WinActivate, %lastATitle%
flag = 0
}
return
471名無しさん@お腹いっぱい。:2013/09/04(水) 17:52:19.17 ID:Py4Wtbhv0
SetTitleMatchMode を正規表現にすればいいだけじゃない?
ttp://ahkwiki.net/SetTitleMatchMode
472名無しさん@お腹いっぱい。:2013/09/04(水) 18:01:49.50 ID:5ZDxYAJL0
うーん、もうちょっと悩んでみます。
ありがとうございました
473名無しさん@お腹いっぱい。:2013/09/04(水) 18:52:37.09 ID:cdcWgDCz0
想定している状況がよく分からんが、タイトルを使わずにクラスだけで指定するか、
ID または PID を使うわけにはいかないのかな。
474名無しさん@お腹いっぱい。:2013/09/04(水) 19:03:29.21 ID:5ZDxYAJL0
PIDですか、試してみます。

想定してるのは動画なんかを最前面表示にしておいて、作業するかんじです
マウスカーソルが動画本体に触ると、最前面から消えます。
ウィンドウタイトル部分だけつかめるようにしています。さわれなさすぎても不便なので。

1:ほかのランチャからこのahkファイルをホットキーで呼び出す
2:マウス下のウィンドウをまずアクティブにして最前面に持ってくる
3:監視開始、マウスカーソルが触ると消える
4:ウィンドウタイトルやウィンドウクラスが消えると、処理終了
475名無しさん@お腹いっぱい。:2013/09/04(水) 19:13:32.56 ID:5ZDxYAJL0
あ、そうか、Ifでクラスだけか、特定タイトルでタイトルコミで判定するか分ければいいだけのことか・・・

すみません解決しました。ありがとうございました
476名無しさん@お腹いっぱい。:2013/09/05(木) 00:16:20.90 ID:fohX0OQs0
便利なのか不便なのかわからんスクリプトだな
477名無しさん@お腹いっぱい。:2013/09/05(木) 01:07:48.17 ID:yUZf2q4l0
>>464
嬉しい素晴らし過ぎます!
本当に有難うございます!!!!!
478名無しさん@お腹いっぱい。:2013/09/05(木) 16:24:11.61 ID:Yo10QKZo0
run,AutoHotkey.exe パス名.ahk,,,pid

でrunコマンドでahkファイルを呼び出してpidをとってきても

process,close,%pid%

だと呼び出したahkスクリプト消せないのね
呼び出した先のプロセスどうやって消そう
479名無しさん@お腹いっぱい。:2013/09/05(木) 17:48:05.48 ID:fohX0OQs0
呼び出した先のahkのほうがキーフックは優先されるっぽい
つまり、呼び出した先でExitAppのホットキーつくればそれでいい

マウスジェスチャーとかで停止命令は俺もわからん
480名無しさん@お腹いっぱい。:2013/09/05(木) 18:19:25.58 ID:NGvvj+yv0
ahkwiki、ウィンドウ指定の方法より参照
process,close,ahk_pid %pid%
481名無しさん@お腹いっぱい。:2013/09/05(木) 18:37:04.40 ID:gz95KIqo0
Processコマンドでウインドウの指定はできないだろ
482名無しさん@お腹いっぱい。:2013/09/05(木) 23:30:02.25 ID:TzWLJOW30
>>478
消せるよ。スクリプトが間違っているか、何かが干渉しているんじゃない?

;-- 例
Run %A_AhkPath% fuga.ahk, , , pid
Sleep, 3000
Process, Close, %pid%


;-- fuga.ahkの中身
Loop {
 ToolTip, %A_Index%
 Sleep, 100
}
483名無しさん@お腹いっぱい。:2013/09/06(金) 14:23:46.91 ID:jVONuxBz0
GUI作成についてお助け下さい
一つのスクリプトに、複数のGUIをホットキーに設定して呼び出したいのですが
GuiClose:やButtonOK:が重複してしまいます。
解決策をご教示下さい。
484名無しさん@お腹いっぱい。:2013/09/06(金) 14:26:50.69 ID:w/jBxh8u0
基本的にGUIとかはいくつかのahkとして別にしたほうが不具合ないぞ

サブメニューとか常駐ものは骨になるahkファイル内部に書き込むよりahkファイルを別にしておけばキーフックも生きるし、処理後にexit処理かけばいい。

要するにahkを呼び出すのを階層化するといい。おれはこうしてる
485名無しさん@お腹いっぱい。:2013/09/06(金) 14:37:35.54 ID:wabqUGvR0
>>483
こんな風に、Guiごとにラベルを付ける
Gui, 1:New, +LabelHoge
Gui, 2:New, +LabelFuga
そうするとこんな風に特殊ラベルも変化する
HogeClose:
FugaClose:
486名無しさん@お腹いっぱい。:2013/09/06(金) 14:40:56.32 ID:wabqUGvR0
ちなみに、ラベル付けなくても
2GuiClose:
みたいにGui番号で区別されてたはず
487名無しさん@お腹いっぱい。:2013/09/06(金) 15:58:05.66 ID:jVONuxBz0
>>484
そうなんですよね、今までは不具合無くその方法で運用していました。
ですが最近、一つのスクリプトに結合した方がスリムかな?、と思い質問させて頂きました。

>>485
有難うございます。
今からチャレンジしてみます。
488名無しさん@お腹いっぱい。:2013/09/06(金) 23:35:29.95 ID:jVONuxBz0
>>485
遅ればせながら、無事出来ました。
アドバイス有難うございました。
489名無しさん@お腹いっぱい。:2013/09/07(土) 15:14:41.30 ID:ar7rqb+50
Firefoxみたいにxhtmlの要素をXPathで指定したいんだけどいい方法ない?
下のやつ試したけど厳密にXML構文に則っていないxhtmlは無理みたい

http://www.autohotkey.com/board/topic/16137-xpath-v3-read-and-write-xml-documents-with-xpath-syntax/
490名無しさん@お腹いっぱい。:2013/09/07(土) 17:18:19.04 ID:9GiTreMA0
Chrome AuraだとOmniboxのコントロールの取得が出来なくなってる
Chromeのことは拡張でやれってことか…
491名無しさん@お腹いっぱい。:2013/09/07(土) 17:23:24.74 ID:Rp1soZzV0
guiに文字を表示する時に文字列中の「&」がうまく表示されないのはなんででしょうか?
例えば
Gui, Add, Text, , &
だと何も表示されません

Gui, Add, Text, , &&&&&
というように&を重ねれば&の数÷2個表示されます。この場合「&&」

URLを表示したい時等に地味に困るので指定したそのまま表示したいのですが
どうすればいいんでしょうか
492名無しさん@お腹いっぱい。:2013/09/07(土) 17:31:31.58 ID:Rp1soZzV0
すみません。自己解決しました
wiki呼んでアクセスキー指定のためだと分かりました
そういう仕様だと正式に分かったので(&&は絶対に&になる)予め文字列を置換してから表示するようにします
493名無しさん@お腹いっぱい。:2013/09/07(土) 18:51:50.72 ID:a0szadwY0
>>492
こっちの方がコピーも出来るし面倒無いかも。
Gui, Add, Edit, ReadOnly, &&&&&
494名無しさん@お腹いっぱい。:2013/09/07(土) 19:34:42.29 ID:ktnKjFbR0
みんなAHKファイルごとに変数を渡すのってどうやってる?
一度クリップボード経由で別のahkファイルに渡すのはできたんだけどこれはスマートなのか・・・?
495名無しさん@お腹いっぱい。:2013/09/07(土) 20:43:31.61 ID:Vr5MW7ex0
最初に一発渡せばいいなら起動時のパラメータで指定
やりとりあるならOnMessage使えばいいんでね
496名無しさん@お腹いっぱい。:2013/09/08(日) 00:28:41.60 ID:LFUvCWhw0
AHK_LにてMPC-HCにグローバルホットキー機能をつけてやりたいんですが、
何故かアクティブなウィンドウに送ってしまいます
バックグラウンドのウィンドウにSendするにはどうすればいいんで?

Alt+Sでいつでも再生/一時停止したいです
497名無しさん@お腹いっぱい。:2013/09/08(日) 00:51:28.28 ID:cIJjjsN20
>>496
非表示検出をONにしてControlSendで対象指定する。
ttp://ahkwiki.net/DetectHiddenWindows
ttp://ahkwiki.net/ControlSend

;--[Alt+S] MediaPlayerClassic 再生/一時停止--
!s::
DetectHiddenWindows,On
ControlSend,,{Space},ahk_class MediaPlayerClassicW
Return
498名無しさん@お腹いっぱい。:2013/09/08(日) 01:24:04.45 ID:LFUvCWhw0
>>497
おおなるほど!
DetectHiddenWindowsの使い方初めて知りました、ありがとうございます!

厚かましいですがもう少しお教え願います
#ifWinExist ahk_class MediaPlayerClassicW以下にそのように記述したら
アクティブなときに無視されることがしばしば
処理が追い付いてないとかですか?
499名無しさん@お腹いっぱい。:2013/09/08(日) 01:47:57.15 ID:cIJjjsN20
>>498
スクリプト書いてくれないと推理しか出来ないが
たぶんAuto-executeセクションでDetectHiddenWindows指定してないから?

;--[Alt+S] MediaPlayerClassic 再生/一時停止--
DetectHiddenWindows,On

#ifWinExist ahk_class MediaPlayerClassicW
!s::
ControlSend,,{Space},ahk_class MediaPlayerClassicW
#ifWinExist
Return
500名無しさん@お腹いっぱい。:2013/09/08(日) 05:52:18.02 ID:1TgMqjb60
スクリプト内に記述すると、スクリプトのエラー表示を一切出さなくする事って出来ますか?
501名無しさん@お腹いっぱい。:2013/09/08(日) 05:56:06.88 ID:1TgMqjb60
#ErrorStdOut
すみません、これで正しいでしょうか?
502名無しさん@お腹いっぱい。:2013/09/08(日) 09:04:55.50 ID:Jb2C+bNF0
既に設置済みのEditボックスに、変数の内容を反映するコマンドがあったら教えて下さい。
Gui, Add, Edit [, Options, Text]で、TEXTに変数を指定してみましたが
この方法では新たにEditボックスを設置してしまうため、望みの挙動にはなりませんでした。
503名無しさん@お腹いっぱい。:2013/09/08(日) 10:18:04.50 ID:cIJjjsN20
>>501
#ErrorStdOutは文法エラーだけ、他の警告ダイアログは出る。
コマンドラインオプションで警告ダイアログを出さずに、強制的に起動出来る。
ttp://ahkwiki.net/Usage#AutoHotkey.exe.E3.81.AE.E5.AE.9F.E8.A1.8C

>>502
明らかに解説読んでない間違え
めんどくさがらないでコマンド全部確認。
ttp://ahkwiki.net/GuiControl

Gui,Add,Edit,w123 v変更,デフォルト
Gui,Show
Return

;F1押すとエディットボックス変更
F1::GuiControl,,変更,もう少しがんばりましょう。
504名無しさん@お腹いっぱい。:2013/09/08(日) 21:00:04.83 ID:uRKz0X2T0
WinMinimizeで最小化してもそのウィンドウがアクティブのままの時がたまにあります
ウィンドウを確実に非アクティブにするにはどうすればいいのでしょうか
505435:2013/09/08(日) 21:10:54.55 ID:5KfimBXf0
もしかして、古いk-lite codec packをインストールしている状態で
LAV Splitter単体をインストールしたなら再生できなくなるよ
その場合はk-liteとLAVの両方をアンインストールしてから
最新版のk-lite codec packをインストールね。
とここまで書いて思ったんだけどvlcで見れないなら関係ないか・・・
506名無しさん@お腹いっぱい。:2013/09/08(日) 21:11:29.44 ID:5KfimBXf0
間違えました
507名無しさん@お腹いっぱい。:2013/09/08(日) 21:40:28.38 ID:1TgMqjb60
常駐中のスクリプトに設定したホットキーを、別の常駐中のスクリプトからSENDしたいのですが、どうも上手くいきません。
Sendする別のスクリプトの記述例ですが
DetectHiddenWindows, On
ControlSend, ahk_parent, {m}, sample.ahk - AutoHotkey
これや
DetectHiddenWindows, On
ControlSend, , {m}, sample.ahk - AutoHotkey ahk_class AutoHotkey
これもダメです。
何か記述が間違っているのでしょうか?
508名無しさん@お腹いっぱい。:2013/09/08(日) 22:30:03.70 ID:Jb2C+bNF0
>>503
ありがとうございまし。
おかげでほああがああああああああああああ
509名無しさん@お腹いっぱい。:2013/09/08(日) 22:42:55.55 ID:sEhg0X7L0
>>503はどうやら目覚めてはいけないものを起こしてしまったらしい
510名無しさん@お腹いっぱい。:2013/09/08(日) 22:48:28.61 ID:cIJjjsN20
ワロタw
511名無しさん@お腹いっぱい。:2013/09/08(日) 22:51:07.03 ID:lTaxyh4N0
なんだこのながれw
512名無しさん@お腹いっぱい。:2013/09/08(日) 22:51:43.53 ID:5KfimBXf0
>>507
OnMessage と PostMessage を使った方法がいいんじゃないかな
http://unkar.org/r/software/1243005818/290
513名無しさん@お腹いっぱい。:2013/09/08(日) 23:15:52.64 ID:1TgMqjb60
有難うございます
試してみます!
514名無しさん@お腹いっぱい。:2013/09/09(月) 07:10:45.26 ID:wC/5eVMu0
複雑なやりとりをしたい場合には OnMessage, PostMessage は便利かもしれないけど,
ホットキーラベルを実行したいだけなら単に Send すればいいと思う.
Send しても認識してくれないならたぶんキーボードフックが原因.
>>48, 52, 55 あたり参照.
515名無しさん@お腹いっぱい。:2013/09/09(月) 16:27:45.68 ID:tL4r3qHI0
>>514
有難うございます!。
OnMessage と PostMessageは私には難し過ぎて、少し挫折していたのですが
#UseHookを無効にした所、あっさりと出来ました!。
皆さん、これからもよろしくお願いします。
516名無しさん@お腹いっぱい。:2013/09/09(月) 16:47:09.27 ID:fVqTdi400
OnMessageは俺もよくわからんのだけど、

例のOnMessage(0x5555,"MsgHandler")
のばあい、

0x5555にMsgHandlerの中の関数を格納して他に渡すって解釈でいいの?
てことは0x5555はたとえば0x1234や0x9876でもいいの?
517名無しさん@お腹いっぱい。:2013/09/09(月) 19:33:01.63 ID:OQotEqNo0
>>516
PostMessageが送る側
OnMessageは受け側(PostMessageが送ったものを受け取る側)

0x5555の部分は送る側と受ける側を同じ値にすれば送受信できるので
0x1234や0x9876でもOK。

PostMessageで送ったデータをOnMessageが受けたら、
OnMessageの第2引数で指定している関数が実行される。

つまり、>>512のリンク先のサンプルは
F12を押すと、receiver.ahk のトレイアイコンに
PostMessage で指定した値が表示される。

TryaTipの部分をTooltipやMsgboxに変更し、
PostMessageの各引数の値を変えて試すといい。
518名無しさん@お腹いっぱい。:2013/09/09(月) 20:32:23.22 ID:m1Ziz6XG0
へぇ〜

>>512のリンク先に
>文字列の受け渡しになるとちょいと面倒になるけど
ってあるけど、wParamとlParamに文字列入れるだけじゃ無理なの?
519名無しさん@お腹いっぱい。:2013/09/09(月) 22:22:45.15 ID:HNm+9wKs0
「カタカナ」キーを「Ctrl」に割当てたいのですが、

vkF2sc070 :: Ctrl

にすると、
Ctrlキーがいつまでたっても押しっぱなしの状態になってしまいます。
何か良い方法はありませんでしょうか?
520名無しさん@お腹いっぱい。:2013/09/09(月) 22:28:54.50 ID:OQotEqNo0
>>518
試してみるといい

>>519
>>4のQ1
521名無しさん@お腹いっぱい。:2013/09/09(月) 23:08:02.18 ID:H9mvzBMp0
横レスだけれど>>518の言うとおりにやってみた
PostMessage / SendMessage
http://l.autohotkey.net/docs/commands/PostMessage.htm
;; sender.ahk
F12::
NewTitle:="foooo"
SetTitleMatchMode 2
DetectHiddenWindows On
;; PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
PostMessage, 0x5555, 0, &NewTitle, , receiver.ahk ahk_class AutoHotkey
return
これで38274912が表示されるのは何故なんだろう
522名無しさん@お腹いっぱい。:2013/09/10(火) 02:08:55.18 ID:7c1RmMqd0
文字のやり取りはこういう風にしてる

---- send.ahk ----
SendText("hoge", "recv.ahk")

SendText(text, script) {
 DetectHiddenWindows, On
 SetTitleMatchMode, 2
 IfWinExist, %script% ahk_class AutoHotkey
 {
  ControlSetText, Edit1, % text
  PostMessage, 0x5555
 }
}

---- recv.ahk ----
OnMessage(0x5555, "MsgListener")
MsgListener() {
 DetectHiddenWindows, On
 ControlGetText, value, Edit1, ahk_id %A_ScriptHwnd%
 ; これ以降で受け取った文字を処理
 MsgBox, % value
}
523名無しさん@お腹いっぱい。:2013/09/10(火) 05:17:05.86 ID:kc+AVoHk0
>>520
返信ありがとうございます。
カタカナキーは押しっぱなしにしていると、
その間何回もDownコマンドが送信されているんですね。

F2070 d 0.03 not found
F2 070 d 0.03 not found
F2 070 d 0.03 not found
F2 070 d 0.03 not found

また、キーを離してもUpが送信されていないため
押しっぱなしの状態になると言う事が理解できました。
524名無しさん@お腹いっぱい。:2013/09/10(火) 05:19:22.49 ID:kc+AVoHk0
書き途中で送信してしまった・・・。

キー自体を変更することは盲点でした。
やってみます。ありがとうございました。
525名無しさん@お腹いっぱい。:2013/09/10(火) 11:52:33.84 ID:XlzKzqAx0
エクスプローラーとかで、ファイル名をfirefoxで検索するキーを作れます?
526名無しさん@お腹いっぱい。:2013/09/10(火) 12:00:12.88 ID:Tatkse++0
>>525
wikiに載ってるぞ

>2.1 選択した文章、アイコン名で即座に検索
ttp://ahkwiki.net/SampleCodes
527名無しさん@お腹いっぱい。:2013/09/10(火) 12:48:52.57 ID:XlzKzqAx0
>>526
迅速な対応にありがとうございました。
機会があればまたお願いします。
528名無しさん@お腹いっぱい。:2013/09/10(火) 16:21:34.08 ID:9kPYLmlD0
Gui, 2: +LastFound +Owner1 +OwnDialogs +AlwaysOnTop -Caption +E0x80000

;↑な感じにGUIを作成して、Gdip.ahkで画像を一枚表示
;↓な感じにドラッグ可能にしています

OnMessage(0x201, "WM_LBUTTONDOWN")
WM_LBUTTONDOWN()
{
If (A_Gui = 2) {
PostMessage, 0xA1, 2
}
}
;元のコードは、Gdip.ahk(ttp://www.autohotkey.com/board/topic/29449-gdi-standard-library-145-by-tic/page-1?hl=gdip.ahk
;のExample 7(ttp://www.autohotkey.net/~tic/Gdip.Tutorial.7-Draw.draggable.rounded.rectangle.ahk


この状態でGUIのウィンドウをドラッグすると、デスクトップの下左右には、はみ出すことができるんですが
デスクトップの上に、はみ出すことはできません

デスクトップの上辺にも、はみ出せるウィンドウを作るにはどうしたらいいんでしょうか?
529名無しさん@お腹いっぱい。:2013/09/10(火) 16:25:50.77 ID:9kPYLmlD0
追記

自分で試した範囲だと、
デスクトップの上辺にも、はみ出せるソフトとしては、Massigra(ver 0.45)を知っていたので
そのウィンドウスタイルとウィンドウEXスタイルをコピーしてGUIに適用してみたのですが、だめでした
530521:2013/09/10(火) 21:57:26.68 ID:zTWKrrZr0
>>522
なるほどそうやって文字列を受け渡すのか
勉強になったよありがとう
531名無しさん@お腹いっぱい。:2013/09/11(水) 01:05:11.99 ID:854mw22r0
ゲーミングマウスのボタンはさすがに認識できないよね・・・
scとかで取れたら夢が広がりまくりングだけど
532名無しさん@お腹いっぱい。:2013/09/11(水) 01:31:11.22 ID:gz8EUxQh0
>>531
マウスのドライバユーティリティ(SetPoint等)の設定がAutohotkeyより先に認識するので
「使わないキー」か「F13〜F24」などの仮想キーに割り当ててから、それに対してAutoHotkeyで割り当てすればいい。

2.2 マウスのサイドボタン3個目以降にもホットキー割り当てたい。
ttp://ahkwiki.net/Faqs
533名無しさん@お腹いっぱい。:2013/09/11(水) 01:36:44.83 ID:854mw22r0
マジか、ザックリググったけど見つからなかった・・・
考える人は考えるもんだなぁ
ありがとうやってみる
534名無しさん@お腹いっぱい。:2013/09/11(水) 07:09:56.55 ID:no20wlxT0
レジストリを変更しない方法で
無変換キーにAltを割当てないのですが、うまくいきません。

vk1Dsc07B::lAlt

にすると

1D 07B s d 8.63 not found
1D 07B h u 0.16 not found
A4 038 i u 0.03 LAlt

のように、無変換キーがUpされたタイミングで、
AltもUpされてしまう動作しかしないのですが、
これを解決できる方法はありますでしょうか?
535名無しさん@お腹いっぱい。:2013/09/11(水) 09:25:10.99 ID:854mw22r0
vk1Dsc07B::send,{Lalt down}
vk1Dsc07B up::send,{Lalt up}

でどうじゃろうか
536名無しさん@お腹いっぱい。:2013/09/11(水) 11:41:31.64 ID:ZVMVhCIw0
動画編集ソフトでテンキーショットカット使いたくて設定してみたんだけど、
押しっぱなしで誤作動しちゃう

下の例だと、
NumpadPgUp:: SendInput,+^{PgDn} ;
これで最初は前に進むんだけど、押し続けてるうちに逆に戻っていってしまいます

指南いただけんでしょうか

#IfWinActive ahk_class TClipEditForm.UnicodeClass

#NoEnv ;
SendMode Input ;
SetWorkingDir %A_ScriptDir% ;
SetTitleMatchMode,2
#InstallKeybdHook
#UseHook

NumpadUp:: SendInput,+^{PgUp} ;
NumpadPgUp:: SendInput,+^{PgDn} ;

#IfWinActive
537名無しさん@お腹いっぱい。:2013/09/11(水) 11:53:53.73 ID:Gbvm4IX00
Inputやめてみるんだ。判定が速すぎて誤作動起こすことがある。
538名無しさん@お腹いっぱい。:2013/09/11(水) 13:22:51.45 ID:eknQOFJE0
ファイラーなどで、選択したファイルを指定のexeに送るコマンドを
教えていただけませんか?
539名無しさん@お腹いっぱい。:2013/09/11(水) 13:25:38.63 ID:NiTyA/z90
ファイラーのヘルプ見ろ
540名無しさん@お腹いっぱい。:2013/09/11(水) 14:15:49.10 ID:ZVMVhCIw0
>>537
ども。結局Send外して
【NumpadUp:: +^PgUp ;】
のように戻したら解決しました。

ただ、元々Sendを付けた理由が>>6の『CtrlとShiftが押しっぱなしになる』の対策というものでした
単体で押すときは起こらないんですが、
数秒押しっぱなしの時なんかは高確率でロックが発生してしまいます
Win7の固定キー機能とかテンキーマウスは無効です

#InstallKeybdHook付ければAHK側の原因が解消されるということは、
それ以外に何か原因があると考えていいんでしょうか?
541名無しさん@お腹いっぱい。:2013/09/11(水) 14:18:08.23 ID:Y/cmGuRF0
>>538
新規IDの入札はお断りします
542名無しさん@お腹いっぱい。:2013/09/11(水) 19:52:21.08 ID:Dk9ucyJD0
>>540
原因は>>537が既に答えている。

突っ込みどころ一覧
*いらない設定が多い
*記述の順序が変
*SendModeの違いを理解していない
*行末の謎の;不要

;--初期設定(Auto-executeセクション)--
#NoEnv
#InstallKeybdHook ;修飾キー付きのホットキーではないなら不要かも

;--ホットキー--
#IfWinActive ahk_class TClipEditForm.UnicodeClass
NumpadUp::+^{PgUp}
NumpadPgUp::+^{PgDn}
#IfWinActive
543名無しさん@お腹いっぱい。:2013/09/11(水) 21:43:33.70 ID:SdPVi9ME0
Auto-executeで思ったんだけれど
autohotkeyの動作を安定させる設定としてどういうものがある?
544名無しさん@お腹いっぱい。:2013/09/11(水) 21:47:50.74 ID:8EAZSNut0
104キーボードを使用中なのですが、
`をAlt+`に、
Alt+`を`に入れ替えたいのですがどうしたらいいでしょうか。

`::Send, !`
で前半はできたのですが、後半ができません。
545名無しさん@お腹いっぱい。:2013/09/11(水) 21:53:52.00 ID:854mw22r0
Process, Priority,, High
SetTitleMatchMode,2
AutoTrim,off
SetWorkingDir,%A_ScriptDir%
#MaxHotkeysPerInterval 2000
#UseHook
#NoEnv
#InstallKeybdHook
#SingleInstance FORCE

あたりじゃない?
546名無しさん@お腹いっぱい。:2013/09/11(水) 22:08:01.73 ID:SdPVi9ME0
>>545
ほうほう
AutoTrimは見逃していたよ
参考になりました
547名無しさん@お腹いっぱい。:2013/09/11(水) 23:23:16.25 ID:Dk9ucyJD0
>>544
前半も間違ってない?
108キーボーの場合こうなる

エスケープ文字
ttp://ahkwiki.net/Scripts

`::Send, !`` ;「`」→「Alt + `」
!@::Send,`` ;「Alt + `」→「`」
548名無しさん@お腹いっぱい。:2013/09/11(水) 23:23:57.05 ID:RQijOnxj0
autotrim設定の効果って= 系の時だけだよな
コマンドによって引数の前後空白扱いがマチマチなのが少し気持ち悪い
549名無しさん@お腹いっぱい。:2013/09/11(水) 23:44:59.15 ID:8EAZSNut0
>>547
104キーボードだとなんかおかしな挙動してます。

Suspend Hotkeysだと`が入力されますが、
解除すると空のスクリプトでも必ずIMEのON/OFFになって上書きできません。
LのUnicode 32bit版 v1.1.13.00です。

VK SC Type Up/Dn Elapsed Key Window
-------------------------------------------------------------------------------------------------------------
F3 029 i d 4.26 not found
F3 029 i u 0.00 not found
550名無しさん@お腹いっぱい。:2013/09/11(水) 23:53:28.93 ID:Dk9ucyJD0
>>549
ごめんキーボードフック使ってた。
常用してたから失念。

#UseHook
`::Send, !`` ;「`」→「Alt + `」
!@::Send,`` ;「Alt + `」→「`」
551名無しさん@お腹いっぱい。:2013/09/12(木) 00:24:12.41 ID:K0kw8tsH0
>>550
やはり変わりません。
思い当たるところといえば終了させてますがYAMYをインストール済みであること、
USBキーボードなのでドライバが標準HIDキーボードなことくらいです。
552名無しさん@お腹いっぱい。:2013/09/12(木) 00:28:46.73 ID:Z4TIwim90
>>542
どもども
早速、そちらの内容に変更してみました
結果、残念ながらロックは再発してしまいました

他にも+^を使ったキー(文法同じ)が多数あるんですが、
そちらをガチャガチャやってると数秒で発生するようです

NumpadClear:: Left ;
このキーはコマ送りのキーなんですが、
+^のロックがかかっていると先頭に戻ってしまいます

ロックしてしまったときに自動的に外すような方法、
あるいは、
ロックになっていても同じ動作ができるような書き方はないでしょうか?
553名無しさん@お腹いっぱい。:2013/09/12(木) 00:37:23.84 ID:wiOiI5NG0
NumpadUp:: Send,{Lshift down}{Lctrl down}{PgUp}
NumpadUp up:: Send,{Lshift up}{Lctrl up}

これでもだめなら

NumpadUp::
while(GetKeyState(A_thishotkey, "P"){
send,Send,{Lshift down}{Lctrl down}{PgUp}
}
Send,{Lshift up}{Lctrl up}
return

とか、やりようはいくつかある
もしかしたら優先度の問題かもな
554名無しさん@お腹いっぱい。:2013/09/12(木) 00:40:15.04 ID:wiOiI5NG0
NumpadUp::
Send,{Lshift down}{Lctrl down}
while(GetKeyState(A_thishotkey, "P"){
Send,{PgUp}
}
Send,{Lshift up}{Lctrl up}
return

もしかしたらこのほうがいいかも。
555名無しさん@お腹いっぱい。:2013/09/12(木) 01:07:58.75 ID:Zgc/4ZkG0
>>551
OSが日本語配列として認識してるんじゃない?
ttp://calcurio.com/wordpress/?p=144
556名無しさん@お腹いっぱい。:2013/09/12(木) 03:16:18.39 ID:K0kw8tsH0
>>555
確認してみます。
557名無しさん@お腹いっぱい。:2013/09/12(木) 04:11:15.73 ID:Z4TIwim90
>>553-554
どもども
3つ試しましたが、いずれも押しっぱなしにすると1秒くらいで変になります
前進⇒前進⇒前進⇒後退⇒別の誤作動⇒ストップ

見たところ、Sendで入れると処理が追いつかなくなって別の処理が起きてしまう、
a;:Upの形式で入れると表面的には問題ないがロックが発生してしまう、という感じのようです

ポン、ポンと押す分にはどちらも動くんですけど、
押しっぱなしだとおかしくなります
ううむ。。。
558名無しさん@お腹いっぱい。:2013/09/12(木) 04:40:23.92 ID:Zgc/4ZkG0
>>557
もちろんキーボードフックは使ってるよな?
後はこれ試せばいいんじゃない?

*Send処理を速くする
SetKeyDelay,-1
SendMode,Input

*割り込み禁止にする
Critical

*スレッドの優先順位を付ける
Thread, Priority, 数値
559名無しさん@お腹いっぱい。:2013/09/12(木) 05:04:16.89 ID:Z4TIwim90
>>558
SetKeyDelay,-1 SendMode,Input
こちらを冒頭に入れ、

Critical
こっちを関数の最初に組み込みました

ボタン押した瞬間にループみたいになってAHK終了しないと操作できなくなりました・・・
560名無しさん@お腹いっぱい。:2013/09/12(木) 05:32:14.20 ID:Zgc/4ZkG0
>>559
キーリピートが早くてCriticalでせき止められていたスレッドが一気になだれ込んだんだなw
561名無しさん@お腹いっぱい。:2013/09/12(木) 07:19:01.80 ID:8ZWdAkMy0
>>535
ありがとうございます!
しかしやはりうまく動作しませんね。
あきらめてレジストリをいじることにします!
562名無しさん@お腹いっぱい。:2013/09/12(木) 17:43:02.49 ID:MWV8ikHC0
大量のウインドウグループに対して、複数のホットキーを割り当てているのですが
ホットキー毎ににウインドウグループを記述しているので、スクリプトが肥大化してしまいます。
もっとスマートな方法があれば教えて下さい。
よろしくお願いします。
563名無しさん@お腹いっぱい。:2013/09/12(木) 17:45:50.65 ID:Z4TIwim90
>>560
ロックかかった状態でも普通に作業行えればとりあえずいいんですけど、
a::b を、+^や^付きの状態でも常にbで出力する方法は無いもんでしょうか?
*a::bではだめでした
564名無しさん@お腹いっぱい。:2013/09/12(木) 19:19:30.82 ID:8ZWdAkMy0
AutoHotkeyに適してるキーボードってなんだろ
スペースバーが短くて親指でいろんなキー押せるやつかな
565名無しさん@お腹いっぱい。:2013/09/12(木) 19:24:08.96 ID:JgqDOiDj0
プログラマブルキーボードとか
F13〜F20が余分についてるだけでも大分捗るだろうね
566名無しさん@お腹いっぱい。:2013/09/12(木) 19:34:47.03 ID:wiOiI5NG0
最下段全部ワンショットモデファイヤ化しちゃう感じでつかってる
567名無しさん@お腹いっぱい。:2013/09/12(木) 21:10:47.49 ID:0KrbfEvF0
>>566
詳しく
568名無しさん@お腹いっぱい。:2013/09/12(木) 21:56:27.86 ID:wiOiI5NG0
このスレのアップローダーにあったOSMを俺なりに改造したもの使ってる。
Space単推しは判定させずに、上げた時反応するようにしてる
仕組みだけ書くわ
俺が使ってるのはコレに連打でキーリピート発生させるとかごちゃっててここには書ききれそうにない
569名無しさん@お腹いっぱい。:2013/09/12(木) 21:58:17.88 ID:wiOiI5NG0
#MaxHotkeysPerInterval 2000
#UseHook
#InstallKeybdHook

Space::
keywait,%A_thishotkey%, T0.5
if ErrorLevel
flag := 1
return

Space up::
If(flag = 1)
flag := 0
else
send,{Space}
return

w::Spacedown("{Up}")
a::Spacedown("{left}")
s::Spacedown("{down}")
d::Spacedown("{right}")

Spacedown(key){
Global flag
If (GetKeyState("Space", "P")){
send,%key%
flag:=1
}else
send,{%A_ThisHotkey%}
}
570名無しさん@お腹いっぱい。:2013/09/12(木) 22:22:34.66 ID:8ZWdAkMy0
>>565
Functionキーはホームポジションを崩さないと押せない位置にあるし、
親指で押せないから、やはり暇してる親指に仕事させるためにも
無変換、変換がついた日本語キーボードがいいかな。
571名無しさん@お腹いっぱい。:2013/09/12(木) 22:29:53.00 ID:TkQYvz2q0
>>570
そこを考えてHHKBJP Pro買った
572名無しさん@お腹いっぱい。:2013/09/12(木) 23:49:08.26 ID:G/xWw8c70
>>562
外部関数にして、ホットキーの発動検出以外は全て外に逃すとか。
573名無しさん@お腹いっぱい。:2013/09/12(木) 23:53:43.79 ID:G/xWw8c70
ちなみに俺のは、関数で逃しても、メインの発動部分+αで20000行になってるw
あまりに長すぎるので、なんかおかしくなって、参照したいときは、

 調べたいキー::

で検索して、F3を何回か押して、該当箇所を見つけて編集してる。
574名無しさん@お腹いっぱい。:2013/09/13(金) 00:35:15.64 ID:RL7zmh8r0
>>572
返信有難うございます
結局代案として、ウインドウグループのみを記述したスクリプトを用意し
それを#IncludeAgainで別のスクリプトに送る事にしました。
575名無しさん@お腹いっぱい。:2013/09/13(金) 01:36:28.34 ID:opY+NSHx0
>>573
どんな設定をするならそこまで増えるんだろう?
576名無しさん@お腹いっぱい。:2013/09/13(金) 06:47:29.30 ID:vAha5LOy0
まだ使い始めたばっかりなので、
 無変換 & N;; Send, {Del} ・・・のような使い方しかしてない
私にはショートカットの代替的な使い方しか思いつかないんだけど、
みんなや>>572氏は他にもどのようなスクリプトを書いてるの?
WSHでやることもAHKに任せる感じ?
577名無しさん@お腹いっぱい。:2013/09/13(金) 06:48:12.14 ID:vAha5LOy0
>>576
失礼。>>573氏に訂正
578名無しさん@お腹いっぱい。:2013/09/13(金) 07:33:36.33 ID:QEqlBjj70
2万行か…もし消えたら軽く死ねるなw
579名無しさん@お腹いっぱい。:2013/09/13(金) 07:36:04.79 ID:rM3m7Jcq0
関数合わせても1000行ないわw
580名無しさん@お腹いっぱい。:2013/09/13(金) 07:43:19.18 ID:QEqlBjj70
調べたら700行ちょっとだったわ
小物ツール類を合わせても1000行に届かないw
581名無しさん@お腹いっぱい。:2013/09/13(金) 08:30:21.74 ID:cGRPUgDV0
メインだけで二万とかスパゲティ過ぎて絶対メンテしたくないレベルw
うちは常駐ahkは#includeと\LIB全部足しても6000行程度だな、うち半分はコメント行

>>576
簡易プログラミング的なことやバッチ処理は単体ahkでやっちゃう事が多いわ
GUIも一応作れるしexe化もできるから小物作るには便利
WSHはオブジェクト回りがよく分からなくてほとんど使わないなあ
582名無しさん@お腹いっぱい。:2013/09/13(金) 10:21:12.85 ID:+VO4KJo50
一番長いであろうサブルーチン用まとめファイル見てきたらぴったり900行だった
583名無しさん@お腹いっぱい。:2013/09/13(金) 10:55:20.72 ID:t4nfJq000
コピペックスがwindows7、64bitで使えなくなってたからコレで作りたいんだが、テキスト文章をドラッグして選択時っていう条件が認識できるんだろうか・・・
ちょっと調べたけどなかったんで質問です
584名無しさん@お腹いっぱい。:2013/09/13(金) 11:17:38.09 ID:Y/RzFFhR0
>>583
コピペックスでググってもなんだかわからん。
条件の前にとりあえず何したいかぐらい書けよ。
585名無しさん@お腹いっぱい。:2013/09/13(金) 11:25:08.22 ID:t4nfJq000
ああ、ごめん説明足らずだった

テキストを選択してワンクリックでクリップボードに選択テキスト文を送るソフトで、その名前がcopipex
ところがコレがwindows7で使えないから、ahkで作ろうと思ったんだ

やりたいこと:選択テキストを自動コピーする

で、今躓いてるのが、マウスでドラッグした部分のテキスト選択

単純にドラッグ後フラグを立ててワンクリックでctrl+cだとファイルとかまでクリップボードに送ってしまうから、どうなのかなって
586名無しさん@お腹いっぱい。:2013/09/13(金) 11:43:18.80 ID:Y/RzFFhR0
>>585
組み込み変数Clipboardでテキストだけ選択出来る。
ttp://ahkwiki.net/Clipboard

F1::
Send,^c
MsgBox % Clipboard
Return
587名無しさん@お腹いっぱい。:2013/09/13(金) 11:57:19.93 ID:t4nfJq000
>>586
あ、クリップボードだけで行けたんだ・・・
ありがとうなんかできそうな感じ
588名無しさん@お腹いっぱい。:2013/09/13(金) 12:00:42.43 ID:h8GmCdg00
そういうソフトってctrl+cを送ってるだけだから、意外と単純なもん
589名無しさん@お腹いっぱい。:2013/09/15(日) 22:49:29.96 ID:t7cnIgJP0
すみません、お尋ねします。
Reloadコマンドを、別の起動中のスクリプトに送信する事は可能でしょうか?
よろしくお願いします。
590名無しさん@お腹いっぱい。:2013/09/15(日) 22:52:50.38 ID:ClBgNv070
できるよ、方法はいくらでも
591名無しさん@お腹いっぱい。:2013/09/15(日) 23:20:06.15 ID:9Encg7HJ0
reloadコマンドそのものを送信するということ?
sendmessageで数値を送って、受け取り側でreloadを実行すればいいと思う
sendmessageの使い方はすぐ上のレスに出ているよ
592名無しさん@お腹いっぱい。:2013/09/15(日) 23:25:30.75 ID:IV41yenJ0
リロードメッセージを送るか、#SingleInstance FORCE
593名無しさん@お腹いっぱい。:2013/09/15(日) 23:59:57.52 ID:Kg1oImVo0
ディスプレイ画面の左端にマウスカーソルが行った時に
runで実行させる方法教えて頂けないでしょうか
594名無しさん@お腹いっぱい。:2013/09/16(月) 00:03:42.08 ID:fuUv0Z890
Mousegetpos

SysGet, Monitor, MonitorWorkArea

でなんとかならんだろうか。もしくはマウスジェスチャーのコーナー設定
595名無しさん@お腹いっぱい。:2013/09/16(月) 00:54:16.01 ID:mNl43OPh0
>>593
死ねカス座標トレボケアホカス自分がやりたいことを理論的に過剰してみろよウンコウジ虫
596名無しさん@お腹いっぱい。:2013/09/16(月) 04:30:23.25 ID:rvHKxRGJ0
>>591>>592
返信有難うございます、どうやら深く考え過ぎていただけでした。
単純にホットキー設定したReloadコマンドの送信で解決しました。
お騒がせしました。
597名無しさん@お腹いっぱい。:2013/09/17(火) 02:52:12.56 ID:evteRNKV0
>>489だけどFirefox風のXPathの使い方わかる人いません?
598名無しさん@お腹いっぱい。:2013/09/17(火) 22:13:37.35 ID:o1nR6kla0
単語選択はマウスダブルクリックで可能ですが、
これをキーボードだけで行いう場合、
どのように実装するのでしょうか?

単純にクリック2回でSendしても、
キャレット位置でのダブルクリックにならず、
今マウスがある場所でのダブルクリックになってしまいます。
599名無しさん@お腹いっぱい。:2013/09/17(火) 22:21:05.48 ID:Cu9FCOxL0
キーボードショートカットで調べてみればいいよ
600名無しさん@お腹いっぱい。:2013/09/18(水) 01:04:17.23 ID:pGfUmZI40
send,{Ctrl down}{left}{shift down}{right}{Ctrl up}{Shift Up}


で単語選択
やってることは見ての通り。単語先頭にカーソル移動してシフトで単語末尾まで選択
601名無しさん@お腹いっぱい。:2013/09/18(水) 02:29:45.56 ID:XHWe2NNJ0
エディターでの話なのかブラウザとかのテキストの話なのか
602名無しさん@お腹いっぱい。:2013/09/18(水) 03:52:19.25 ID:XwSk0UVl0
>>599-601
ありがとうございます!
なるほどー。アプリに設定されている
ショートカットキーを利用すればよかったのですね
んでプロセスIDごとにそのキーを変更しろと。
603598:2013/09/18(水) 04:18:24.38 ID:XwSk0UVl0
結局、単語選択のショートカットがないアプリでもやりたかったため、
以下のように実現しました。かなり強引ですが・・・

F13 & w::
 CoordMode,Mouse,Screen
 CoordMode,Caret,Screen
 MouseMove, %A_CaretX%, %A_CaretY%
 Send, {LButton 2}
return
604名無しさん@お腹いっぱい。:2013/09/18(水) 10:55:55.80 ID:rncqTwLl0
そもそもダブルクリックで単語選択ってのもアプリ側で用意してる機能だから、
いずれにしろ汎用性はないわな
605名無しさん@お腹いっぱい。:2013/09/18(水) 11:10:38.63 ID:pRR6gfbi0
どっちも採用すればいいんじゃない?
#Ifwinactiveあるんだし
606名無しさん@お腹いっぱい。:2013/09/20(金) 13:05:39.09 ID:5xWKvZna0
"next ero video!"と叫ぶとd:\ero\からランダムにファイルを開くスクリプトお願いします
607名無しさん@お腹いっぱい。:2013/09/20(金) 13:12:06.76 ID:s8dBMyUX0
夏休み終わってるのに…とおもったら、後期開講前で暇なのか?

>>606
もし作るとしても、近所中に響き渡るような大声でないと認識できないようにするわな。
しかも発音チェックが厳しくて(r入ってるし)何度も叫ばないといけないとか…。

windowsって音声認識ソフトが無料で入ってたような気がするけど勘違いだったっけ?
608名無しさん@お腹いっぱい。:2013/09/20(金) 15:35:07.94 ID:HTM5ChDS0
>>606
ここ添削スレだから
まずお前が作れ
609名無しさん@お腹いっぱい。:2013/09/20(金) 21:42:49.23 ID:7BqDs55x0
テキストのコピーとペーストをGUIのボタンでやりたいのですが、
単純にSend,^cとやると当然ですが、GUI上なのでできません
直前のウィンドウを取得するにはどうすればよいでしょうか?
610名無しさん@お腹いっぱい。:2013/09/20(金) 23:38:03.96 ID:+KjlLKt70
タブ付きのGUIで、起動する時に指定したタブを表示させる事は出来ますか?
611名無しさん@お腹いっぱい。:2013/09/21(土) 00:48:26.25 ID:DLmqRWdV0
>>609
コピー、ウィンドウを取得 してからGUIを表示させればいいかと

>>610
AutoHotkeyのGUIならTab2オプション ttp://ahkwiki.net/Gui,Add,Tab2
その他の事言っているならControlSendやImageSearchなどでタブを指定/特定すればいい
612名無しさん@お腹いっぱい。:2013/09/21(土) 01:10:07.92 ID:v3ADuliY0
>>611
|を2つ追加で無事出来ました
有難うございました
613名無しさん@お腹いっぱい。:2013/09/21(土) 05:40:09.55 ID:d2RkS6Gr0
AI的に、入力した文字列が日本語っぽくなら自動的に全角モード
に切り替える、いわゆる「りかなー」の賢いバージョンを考えるひとが
いませんか。
614名無しさん@お腹いっぱい。:2013/09/21(土) 08:00:22.11 ID:ADDQ92Y30
半角文字をIMEオンにして打ち直しするスクリプトは過去ログ探せばある
あとはお前がトリガになる日本語っぽいかどうかを判断する部分を書いて足せばおk
615名無しさん@お腹いっぱい。:2013/09/21(土) 08:07:15.57 ID:CkNK7VAT0
どなたか、わかる方がいたら教えて頂きたいのですが、

F12::
retVal := functionA()
if(retVal == "hoge") {
;; なんかの処理
return
}
;; 違った場合の処理
return

この時、既に functionA を実行中だったら、functionA は実行しないで、
処理を終了するといった排他は出来るでしょうか?

functionA では、Clipwait を使っているため、時間がかかる場合があり
functionA を実行中に F12 を押して、functionA に入るとどうも処理が正常に
行われないまま、返ってくるようでして・・・
2回目の(functionA が実行中に実行された)プロセスでは、functionAが正しい値を
返さないようなのです。
616名無しさん@お腹いっぱい。:2013/09/21(土) 08:31:25.82 ID:ADDQ92Y30
functionAの中で処理中フラグ立てる

functionA() {
  static busyflg
  if (busyflg)
    return -1
  else
    busyflg=1

  ;内部処理

  busyflg=0
  return 戻り値
}

staticにしちゃったけど関数実行前に知りたいならbusyflgはglobalにしておく
617名無しさん@お腹いっぱい。:2013/09/21(土) 10:15:59.18 ID:tUcUzKTP0
>>615
なんていうか、排他処理の魔界にようこそ って感じだけどw

説明書こうとしたら、>>616がほぼ同じこと書いてた。
static busyflag := 0 で初期化しておかないとだめだと思う。

実用レベルでは、>>616の方法で問題ないんだけど、ごくクリティカルなタイミングでfunctionA実行中に
度functionAが実行される場合があります。
排他処理に直接的に対処する方法は、AHKだけでは見つけられませんでした。
Win32APIのCreateMutex()あたりを使えばよさそうですが、詳しくは知りません。

代用として、スレッドの優先順位を上げて、functionA実行中はキーボードからのスレッド割り込みを
無視させる方法です。functionA実行中のホットキーを全て無視してなかったことにしてしまうので
副作用が大きいかもしれません。
functionA() {
Thread, Priority, 1
;; なんか処理
Thread, Priority, 0
return "なんか"
}

次は、一番まともそうな方法で、functionAの間は割り込みを保留させます。
ただし、この方法は2回目のfunctionAも実行してしまいます。しかし、正常に動作するはずです。
functionA() {
Thread, Interrupt, -1 ;; 割り込み禁止
;; なんか処理
Thread, Interrupt, 15, 1000 ;; 割り込みを標準状態に戻す
return "なんか"
}
618名無しさん@お腹いっぱい。:2013/09/21(土) 10:34:05.85 ID:d8zMveSF0
Criticalではいかんのか
619名無しさん@お腹いっぱい。:2013/09/21(土) 10:41:28.02 ID:tUcUzKTP0
>>618
Critical使っても、Thread, Interruptと同様で2回目も実行しちゃうのよね。
けど、Thread Interruptよりわかりやすいな。
620名無しさん@お腹いっぱい。:2013/09/21(土) 10:43:42.09 ID:UixuJtRy0
長い処理なら外部スクリプトにしてRunで実行
#SingleInstance, Ignore
で排他制御
621名無しさん@お腹いっぱい。:2013/09/21(土) 13:38:13.96 ID:CkNK7VAT0
>>616
>>617

ありがとう。
やっぱり排他フラグ使うのがいいんだね
関数が汎用で他の箇所では排他いらないから(なぜかはよくわかんない)
ちょっと工夫してやってみます。

ちなみに、やってるのは Chrome の URL取得なんだけど、
Ctrl+L で、URL入力欄(?)にフォーカス移して、Ctrl+C でクリップボードに取得してから
値を返してる。
URL入力欄からフォーカスを戻すのがうまくいかないけど、Tabを何回か送ることで調整してます。

他にいい(URL取得する)方法って無いかな?
622609:2013/09/21(土) 15:20:41.50 ID:xaxPWIKl0
>611
ありがとうございます
コピー、ウィンドウを取得もGUIのボタンクリックでやりたいのです……
623名無しさん@お腹いっぱい。:2013/09/21(土) 17:06:10.24 ID:ADDQ92Y30
Alt+Tabでフォーカス戻せば?
624名無しさん@お腹いっぱい。:2013/09/21(土) 17:39:14.50 ID:DLmqRWdV0
>>622
どういう処理をさせたいかまとめて書いてほしいな。
わざわざめんどくさい方法でやろうとしてる場合あるし。
625名無しさん@お腹いっぱい。:2013/09/21(土) 22:16:58.90 ID:LaYZQuAA0
>>621
Ironを使っているけれどアドレスバーにマウスカーソルをあわせて
Window Spyを動かすと
>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN: Chrome_OmniboxView1
こうなった
Chromeでもこれを使えばいいんじゃない?
626名無しさん@お腹いっぱい。:2013/09/21(土) 22:50:02.88 ID:CkNK7VAT0
>>625
レスありがと。

でもそれだと、今開いてるページのURLって取得できないよね?
というか、説明が悪かったね、ごめん
627名無しさん@お腹いっぱい。:2013/09/21(土) 22:53:02.62 ID:RVEwprSP0
操作を記録して自動でスクリプトに置き換える事できる?
628609:2013/09/21(土) 23:38:32.21 ID:8LRTHYfb0
>>623
やはりAlt+Tabしかないですかね
Atomでやると処理が追いつかなくてSleepをかなり取ってやんないといけないのでもうちょっとスマートな方法があればと思い質問しました

>>624
わかりにくくてすみません

エディタやブラウザ等で選択した文字列をホットキーではなく、GUIのボタンを押してコピーやペーストをしたいのです
ボタンを押すとGUIがアクティブになってしまうので、GUIがアクティブになる直前のウインドウが取得できればいいなと思っての質問でした
629名無しさん@お腹いっぱい。:2013/09/22(日) 01:06:36.12 ID:Pi4i3bFz0
>>628
とりあえずこれでうまくいくはず。

;例1--GUI(テスト)以外の一番上のウインドウを取得--
SetTitleMatchMode,RegEx
WinGetTitle,WinTitle,[^テスト|スタート]
以下略

;例2--GUIを一瞬消してコピペ--
Gui,Add,Button,,Copy
Gui,Add,Button,,Paste
Gui,Show,,テスト
Return

ButtonCopy:
WinHide,テスト
Send,^c
WinShow,テスト
ToolTip % Clipboard
Return

ButtonPaste:
WinHide,テスト
Send,^v
WinShow,テスト
Return

Esc::
ExitApp
630名無しさん@お腹いっぱい。:2013/09/22(日) 03:52:23.39 ID:NRIoGLef0
>>628
俺も似たようなの使ってるわ
ボタンじゃなくてホットキーだけど
ペースト先はguiでいいのかな?分からんからとりあえずguiに

#ifwinexist("guiのタイトル")

;お好きなのを
^c::
;+c::
;^+c::
temp = %ClipBoard%
ClipBoard =
Send, ^c
ClipWait, 1
if ErrorLevel{
ClipBoard = %temp%
SoundPlay, *16
}else{
;ペースト作業
Send, ^v
}
return

#if
631名無しさん@お腹いっぱい。:2013/09/22(日) 11:03:03.00 ID:+YTJf53V0
>>629
ありがとうございます!
ご掲示が無ければ決して到達できていなかった答えです
二つとも近い所まではいけてたんですが遠回りばかりしていました
まさに目から鱗でした
とても参考になりました

>>630
ありがとうございます
632609:2013/09/22(日) 12:02:38.22 ID:GOYh0/mR0
>>631は私です

>>629
もしよろしければ補足で教えて頂きたいんですが、
[^テスト|スタート]
って「テスト」もしくは「スタート」でないを意味すると思うんですが(きちんとその通り動作しますし)、
正規表現の[}は文字クラスなのに文字列にマッチしてるのは何故でしょうか?

スレチならすみません
AHK独自の正規表現かもと思い質問させて頂きます
633名無しさん@お腹いっぱい。:2013/09/22(日) 13:38:28.82 ID:SQgb0KJW0
その通り動作してないはずだぞ
634名無しさん@お腹いっぱい。:2013/09/22(日) 13:48:08.13 ID:V4Wqfg9D0
>>632
とりあえず [^テスト|スタート] は「テ」「ス」「ト」「|」「ス」「タ」「ー」「ト」でないって意味だよ

「テスト」もしくは「スタート」でないなら !(RegExMatch("テ ス ト ま た は ス タ ー ト", "(テスト|スタート)") とかかな
文字「列」の否定系マッチって正規表現だけだとできないよね?
635名無しさん@お腹いっぱい。:2013/09/22(日) 14:10:01.42 ID:SQgb0KJW0
否定先読み
636名無しさん@お腹いっぱい。:2013/09/22(日) 14:42:35.70 ID:Pi4i3bFz0
>>632
正規表現間違ってますねwお恥ずかしい限りです。
637名無しさん@お腹いっぱい。:2013/09/22(日) 15:49:31.13 ID:Pi4i3bFz0
>>632
>>635さんに教えてもらったこれで大丈夫なはず?

SetTitleMatchMode,RegEx
WinGetTitle,WinTitle,^(?!テスト$|スタート$).+$
638609:2013/09/22(日) 17:52:44.49 ID:Jjf6FiNn0
>>633-637
みなさんありがとうございます
テストの段階でうまくいっていたので不思議だったので質問しました
その後も色々テストするとよくわからない動作をしますね

左がGUIのタイトル、右が[^テスト|スタート]の「テスト」部分で、下にあるウインドウタイトルが「テスト」として
テスト、テス→GUI
テス、テスト→直前のウインドウ
がそれぞれマッチします

まあ期待通りに動いているんで気にしないことにします
本当にありがとうございました
639名無しさん@お腹いっぱい。:2013/09/22(日) 21:07:21.42 ID:V4Wqfg9D0
>>635
>>否定先読み
俺も初めて知ったわありがと
640名無しさん@お腹いっぱい。:2013/09/25(水) 00:52:09.04 ID:XDB9zXAs0
スレチかも知れませんが教えて下さい。
AutohotkeyのProcess, WaitClose,コマンドは100ミリ間隔でチェックしますが
コマンドプロンプトのstart /waitコマンドの場合だと、何ミリ間隔でチェックしているのでしょうか?。
よろしくお願いします。
641名無しさん@お腹いっぱい。:2013/09/25(水) 21:48:21.17 ID:YAzwl9yO0
http://hoge/foo.asp

というページのテキストボックス(NAME="w") に、
クリップボード内の文字列を入力し、
送信ボタン(VALUE="送信")をクリックするスクリプトを考えています

Run, http://hoge/foo.asp
Send, 〜・・・・

とやると、ページの読み込み時間やフォーカスにより処理がうまくいきません。
そこで、URLだけで実現したいと考えたのですが、可能でしょうか?

http://hoge/foo.asp?w=%Clipboard%&SUBMIT=送信

では、テキストボックスにfooとはいるだけで、
送信ボタンまで押されませんでした。
642名無しさん@お腹いっぱい。:2013/09/25(水) 21:52:52.77 ID:Y0/8kisu0
ブラウザ限定の処理であること、読み込み済みやフォーカスの判定、送信ボタンのクリックetc.
あらゆる点でJavaScriptでやったほうがよさげ
643名無しさん@お腹いっぱい。:2013/09/25(水) 22:57:06.33 ID:Q8jJ92960
やること自体は初歩的なんですけど質問させてください

#IfWinActive, でソフトごとに同じ入力信号を違う挙動を変えたいと思ってます

基本構造は単純に 

Explorer1を別に設定して
・#IfWinActive ahk_group Explorer1 でまとめて複数ソフトで Aという挙動

・#IfWinActive ahk_class X でxというソフトでのみ Bという挙動

・#IfWinNotActive を使って、上の「Explorer1とソフトa以外」で Cという挙動

という風に分けたいのですが、何かNotActiveで重複否定みたいに
「これとこれのソフトでない時」とうまくやれないんですかね?
多分、Explorer1を構成してるソフト群とソフトxを合わせて新たにExplorer2を設定して、
それを上記のNotActiveすれば確実なのは分かるんですが
確認する上で重複否定のほうが確認修正がしやすいかなと思いまして
644名無しさん@お腹いっぱい。:2013/09/25(水) 23:18:18.55 ID:vfLbSgN60
>>643
これでできないかな
#If WinActive("ahk_group Explorer1")
A
#If WinActive("ahk_class X")
B
#If !WinActive("ahk_group Explorer1") && !WinActive("ahk_class a")
C
#If
645名無しさん@お腹いっぱい。:2013/09/25(水) 23:23:21.59 ID:Q8jJ92960
>>644
ありがとうございます 

試行はまだなのですがミスが有ったので訂正します、大したものではないですが


Explorer1を別に設定して
・#IfWinActive ahk_group Explorer1 でまとめて複数ソフトで Aという挙動

・#IfWinActive ahk_class X でxというソフトでのみ Bという挙動

・#IfWinNotActive を使って、上の「Explorer1とソフトx以外」で Cという挙動
646名無しさん@お腹いっぱい。:2013/09/25(水) 23:25:48.68 ID:aZmX4IpX0
#If winactive外に書けばいいんじゃないの?
全体に適応されるよ
647名無しさん@お腹いっぱい。:2013/09/25(水) 23:32:24.89 ID:p+4qjFug0
#IfWinActive ahk_group Explorer1
 A

#IfWinActive ahk_class X
 B

#IfWinActive
 C
648名無しさん@お腹いっぱい。:2013/09/25(水) 23:33:36.90 ID:aZmX4IpX0
C

#IfWinActive ahk_group Explorer1
 A

#IfWinActive ahk_class X
 B
649名無しさん@お腹いっぱい。:2013/09/25(水) 23:38:10.57 ID:Q8jJ92960
>>646
なんとなくおっしゃってることは理解できます
ただうまく噛み砕いて言葉に出来ないというか・・・

>>647
上から優先して判断されていくから

#IfWinActive ahk_group Explorer1
 A

#IfWinActive ahk_class X
 B
(ココ)
#IfWinActive
 C

↑ココのところまで進んだのなら

#IfWinActive の時点で自動的に Explorer1とahk_class Xは弾かれたという、自動的にNotActiveという理屈ですか?
650名無しさん@お腹いっぱい。:2013/09/25(水) 23:49:05.79 ID:Q8jJ92960
649の最後の発言は忘れてくださいw
出来ました>>644 >>646-647 ありがとうございました
651名無しさん@お腹いっぱい。:2013/09/26(木) 06:59:57.43 ID:+isaQJS+0
>>642
配布し複数人が使うことを想定していますので、
何か方法はないかと考え、URLを思いついた次第ですが、
JavaScript(ブックマークレット)という技術があるのですね。
ありがとうございます。参考になりました。
652名無しさん@お腹いっぱい。:2013/09/26(木) 08:40:16.46 ID:vzrbSiRx0
h["無題 - メモ帳 ahk_class Notepad"] := 1
みたいなハッシュってないですか
653名無しさん@お腹いっぱい。:2013/09/26(木) 10:16:41.07 ID:s21IOEvy0
AutohotkeyL64版です。Gui,Add,Pictureでまず背景画像を配置し、その上からPNGを透過で配置します。
この上のPNGをGuiControl,Moveで動かすと、背景を引き連れて動いてしまいます。

この背景の左上に
123
456
789

この画像を載せると
透透
絵絵

こうなりますが、この上の画像を右に動かすと
123
絵絵6
789

こうなってしまうということです。
112
4絵絵
789

解決法はありますでしょうか。
654名無しさん@お腹いっぱい。:2013/09/26(木) 11:34:27.98 ID:2nPFaZKF0
>>651
ブックマークレットはJavaScriptの1つの使用形態
ブラウザが限定されるけどGreaseMonkey(GM)とかでもできる
GM側でキーバインド付与してahkから呼び出すこともできる
ただURLにしろGMにしろページ固有の動作なのでahkから呼び出すのは向いてないかな
655名無しさん@お腹いっぱい。:2013/09/26(木) 21:53:39.05 ID:+isaQJS+0
>>654
ブックマークレットみたいな感じで、
URLにJavaScriptを記述できると勘違いしてました・・・。
GMでは使用者のブラウザに依存しますし・・・・
URLパラメータで渡せないサーバーサイドで動くサイトの結果表示を
AHKでやるのは困難みたいですね・・・。
AHKのexeを配布して、「はい終わり」とシンプルにやりたかったのですが。
656名無しさん@お腹いっぱい。:2013/09/26(木) 22:03:12.31 ID:rk+kkeW30
サーバーサイドならパラメータ渡せばいいでしょ。
なんで諦めたのかよくわからんが。
657名無しさん@お腹いっぱい。:2013/09/26(木) 22:30:10.00 ID:2nPFaZKF0
>>655
ahkはあくまでWindowsのユーティリティだからな
ブラウザ依存は嫌だからとブラウザ介さず直接サーバとPOST通信するだけならまだしも
HTML解析までするのはちょっとahkの管轄外かと
そういうことならC#とかPythonとかお好きな汎用言語でやればいいよ
658名無しさん@お腹いっぱい。:2013/09/27(金) 00:09:20.88 ID:yUU1ah4V0
IfExistでは、1つのファイルの存在を確認出来ますが
これをの複数の指定したファイルの存在を確認する事は出来ますか?
659名無しさん@お腹いっぱい。:2013/09/27(金) 00:41:20.62 ID:ATwW81Nk0
ワイルドカードつかえるから複数のファイルも一応対象だよ
パターンマッチに共通項のないファイルは無理
if文+FileExist関数使えばいいんでね

if FileExist("hoge") || FileExist("hage") || FileExist("haga") みたいな
660名無しさん@お腹いっぱい。:2013/09/27(金) 01:03:07.10 ID:yUU1ah4V0
>>659
早速試してみましたけど、これ素晴らしいです!
スクリプトの行数も減り、非常にスマートになりました。
有難うございます。
661名無しさん@お腹いっぱい。:2013/09/27(金) 02:12:36.62 ID:TCqlP3cH0
>>642
IE限定でいいなら、IEオブジェクト作ればいい。

ie := ComObjCreate("InternetExplorer.Application")
ie.Visible := true
ie.Navigate( "http://www.yahoo.co.jp/" )
While ( ie.Busy )
Sleep, 50
MsgBox, ページロード完了
ie.document.getElementById("srchtxt").value := "Autohotkey"
MsgBox, これで検索実行します
ie.document.getElementById("srchtxt").form.submit()
While ( ie.Busy )
Sleep, 50
MsgBox, 検索結果がみえてますか?
ie.Quit()


あとはWSHのJScript 丸ごと使える script.controll とか
662名無しさん@お腹いっぱい。:2013/09/27(金) 18:11:26.82 ID:2X4R1Z9n0
マウス中ボタンと右ボタンでAltTabMenu開いてるんですが、左クリックではなく誤ってキーボードを押してしまって閉じると、Altが押しっぱなしになってしまいます。
何かいい方法はありませんか?

~MButton & RButton::AltTabMenu

#IfWinExist ahk_class TaskSwitcherWnd

~!LButton::
WinWaitClose, ahk_class TaskSwitcherWnd
Send, {Alt Up}
Return
663名無しさん@お腹いっぱい。:2013/09/27(金) 20:28:56.26 ID:xfWNn9d80
>>662
自分も前にAltTabMenuの罠にはまったなw
OSがVista以降なら「Ctrl + Alt + Tab」でメニューが常駐できるショートカットキーが追加されたのでAltTabMenuが必要なくなった。

~MButton & RButton::Send,^!{Tab}
664名無しさん@お腹いっぱい。:2013/09/27(金) 20:32:30.39 ID:mZwTU31g0
Autohotkey備え付けのAlttab関係は信用ならんからな
665名無しさん@お腹いっぱい。:2013/09/27(金) 20:41:34.55 ID:xfWNn9d80
試しにXPでAltTabMenu使ってみたがやっぱり挙動おかしいな
666名無しさん@お腹いっぱい。:2013/09/27(金) 20:53:52.06 ID:2X4R1Z9n0
>>663
ありがとうございます!
こんなに便利なショートカットキーが追加されていたんですね!知らなかった…orz
667名無しさん@お腹いっぱい。:2013/09/27(金) 20:54:40.97 ID:mZwTU31g0
Taskchange(key){
global TaskFlag
If (TaskFlag == 0){
sendinput,{Blind}{Alt Down}{tab}
TaskFlag := 1
}else
sendinput,{Blind}{%key%}
}

で、押しっぱなしのキー開放時に
TaskFlag:=0
送ってやってフラグ初期化って形で俺はやってる
!^{tab}とかも試したけど俺の環境じゃちゃんと動いてくれなかった
668名無しさん@お腹いっぱい。:2013/09/27(金) 21:11:27.92 ID:yyus+9K10
AHKでパスワード自動入力とかしたいけど、
ソース見たらバレバレ。何か良い方法ないかしら?
669名無しさん@お腹いっぱい。:2013/09/27(金) 21:14:45.15 ID:M/GUulnm0
パスワードをtxtにして暗号化圧縮
スクリプト起動時に解凍パスワード入力
回答したテキストを読み込んで変数に収納
テキスト消去

パスワード入力やろうとしてこんなん組んだ
変数見られたらバレるけど
670名無しさん@お腹いっぱい。:2013/09/27(金) 21:38:49.44 ID:2X4R1Z9n0
>>667
上手く動かないこともあるんですね
ちょっと勉強してみます!
671名無しさん@お腹いっぱい。:2013/09/27(金) 22:18:25.25 ID:yyus+9K10
>>669
なるほど!暗号化圧縮ファイルを使う手ですか
とても参考になりました。
672名無しさん@お腹いっぱい。:2013/09/28(土) 16:21:28.43 ID:SXX1SHbg0
指定したキーの無効化する方法でお尋ねします。
a::returnにするとaを無効化出来ますが、この方法以外でもキーを無効に出来ますでしょうか?
出来ればif文で分岐しながら、指定キーを無効化してみたいです。
よろしくお願いします。
673名無しさん@お腹いっぱい。:2013/09/28(土) 16:27:49.58 ID:l+4iqLsb0
どういう分岐するのかしらんけどもa::で式を書き始めた時点でもとのaという機能は失われるよ。
674名無しさん@お腹いっぱい。:2013/09/28(土) 16:35:16.40 ID:SXX1SHbg0
例えばinireadから得た値が1を返したらaを無効
2を返したらbを無効みたいな感じ何ですけども...
675名無しさん@お腹いっぱい。:2013/09/28(土) 16:50:36.59 ID:l+4iqLsb0
a::
If(変数==1)
return
else
send,a
return

b::
If(変数==2)
return
else
send,b
return

みたいなかんじ?
676名無しさん@お腹いっぱい。:2013/09/28(土) 16:55:01.16 ID:Dvn94Wtf0
>>674
AHK_Lなら #If を使えばいい。
ttp://ahkwiki.net/-If

;--テスト用--
F1::INI = 1
F2::INI = 2
F3::INI =
;-----------

#If INI = 1
a::Return

#If INI = 2
b::Return
#If
677名無しさん@お腹いっぱい。:2013/09/28(土) 17:14:50.51 ID:SXX1SHbg0
>>675>>676
出来ました〜〜正にこれです!!!
ちょっと改変して目的の動作を確認しました!!
感謝しますありがとうございます!!!
678名無しさん@お腹いっぱい。:2013/10/01(火) 16:21:08.00 ID:xxSrBmrQ0
実行中のスレッドを一時停止(Pause)ではなく終了するにはどうすればいいのでしょう。
F1で実行中のスレッドをESCでストップしたい場合、

ESC::
停止フラグ=True
Return

F1::
処理1
IF (停止フラグ)
 Return
処理2
IF (停止フラグ)
 Return
処理3
IF (停止フラグ)
 Return
Return

とすれば出来るのはわかりますがあまりに冗長です。
679名無しさん@お腹いっぱい。:2013/10/01(火) 17:47:13.50 ID:3qq0+o1w0
exit
680名無しさん@お腹いっぱい。:2013/10/01(火) 22:02:50.16 ID:h/5aeaWv0
>>678
IF (停止フラグ)
 Return

を関数にして呼び出せば1行で済むじゃん。そうじゃなくて?
681名無しさん@お腹いっぱい。:2013/10/01(火) 23:25:46.31 ID:YvE/rAJf0
>>680
判定を所々に差し込むのがスマートじゃないって事

>>678
スクリプト落としてもかまわないなら Reload ExitApp
特定のスレッドを停止は判定差し込まないと無理かと?
682名無しさん@お腹いっぱい。:2013/10/01(火) 23:34:05.12 ID:YvE/rAJf0
>>681
訂正
Reload× 以降の行の実行を続けるので。
683名無しさん@お腹いっぱい。:2013/10/02(水) 07:21:28.74 ID:X4fRaCjn0
現在フォーカスしているブラウザのURLを取得する方法って何があるでしょうか?
今はURLにTAB移動してCtrl+Cでやっているのですが、
もっとスマートな方法があれば・・・
684名無しさん@お腹いっぱい。:2013/10/02(水) 07:31:57.12 ID:aFrHMKk60
>>683
どのブラウザ使ってるか分からないけど、例えばChromeならCtrl+Lで[アドレスバーに移動]ってショートカットがある
それとCtrl+Cを組み合わせる
それかブラウザによっては、「URLをコピー」ってショートカットキーが設定されてるから、それをそのまま利用する
[タイトルとURLをコピー]ってのもあるから、使ってるブラウザで確認してみるといい
Chromeにはなかったかもしれないけど、拡張を入れればできるようなものがあったと思う
685名無しさん@お腹いっぱい。:2013/10/02(水) 21:04:28.27 ID:Puo1DFS20
ちょっと前にも同じような質問があったような気がする
686名無しさん@お腹いっぱい。:2013/10/02(水) 22:04:09.24 ID:X4fRaCjn0
>>684
今使ってるブラウザはFirefoxで、実はこいつも
Ctl+Lでアドレバーに飛べるんで、それで移動してコピーしてます。
でも、その操作だとページ内のテキストボックスからフォーカスが移動しちゃって・・・・

要はブラウザのURLを読み込んで、
テキストボックスにIDとパスワードを入れる。
っていうスクリプト作ろうと考えてます。

>>685
ありがとうございます。ちょっと探してみます。
687名無しさん@お腹いっぱい。:2013/10/02(水) 22:29:27.97 ID:UvE9VNBu0
こいつか
ID:CkNK7VAT0
688名無しさん@お腹いっぱい。:2013/10/03(木) 00:41:36.52 ID:So1EFxfy0
>>686
Firefoxならcustomize_titlebar_v2等でタイトルバーにURL表示させるとかは?
689名無しさん@お腹いっぱい。:2013/10/03(木) 01:14:18.29 ID:qQ83zI9S0
>>686
少し前と同じ質問っていうか、同一人物だと思ってたんだけど違うの?

AHKだけだと、どうもできそうにない(というか向いていない)から、greasemonkeyあたりでスクリプトを組んで
それを呼び出すためにAHKを使えば? って話になったと思う。

IE限定でIEオブジェクトをどうのこうのっていう方法も誰か書いてた気がする。
690名無しさん@お腹いっぱい。:2013/10/03(木) 12:27:03.01 ID:6GiEAbCn0
Mousegesture_Lにチャタリング防止を組み込むことってできますか?
外部のソフトだとチャタリング防止が効きすぎてマウスジェスチャーが誤動作するんで
691名無しさん@お腹いっぱい。:2013/10/03(木) 12:51:12.29 ID:cUhdOH0s0
不可能ではないと思うが、誰もやってないので、あんたが作る必要がある
692名無しさん@お腹いっぱい。:2013/10/03(木) 13:02:21.92 ID:VnOqT+E3P
>>690
直接聞いてみたら?
AutoHotkey Community が、最近、表示がおかしいけどね…
別の所に掲示板作ってほすい
693名無しさん@お腹いっぱい。:2013/10/03(木) 18:16:34.30 ID:x+Esp4gE0
経験的に言ってチャタリング起こったらさっさと買い換えたほうが精神衛生上よろしい
694名無しさん@お腹いっぱい。:2013/10/03(木) 20:30:03.68 ID:RGMWokwf0
Windows7 で、タスクトレイのタスクバー上に表示されていない、
▲マークを押すと出てくる状態にあるアイコンを(わかりにくいかな?)、
「右クリックして"A"キーを押す」という動作をしたいんだけど、
出来ないのかな?

AutoHotkeyを流行らせるページ → My Scripts の、
タスクトレイアイコン操作 を使って
http://blechmusik.hatenablog.jp/entry/20100711/1278782713
ここを参考にして、プロセス名を取得しようとしても、取得できない。

やり方知ってる人いたら教えてー
695名無しさん@お腹いっぱい。:2013/10/04(金) 10:53:45.73 ID:Gp2uXqZZ0
実行中のflashから表示されてるテキストを引っこ抜くみたいなのって出来ますか?
それに応じて何かさせたりとかしたいんですが

あるいは画面キャプチャ->OCR的なものを通す->テキスト取得->それに応じて何かする
みたいなフレームワークがあったら教えて下さい
696名無しさん@お腹いっぱい。:2013/10/04(金) 10:55:24.51 ID:q/Lhuo7I0
autohotkeyよりjavaじゃないかなそう言うのは
697名無しさん@お腹いっぱい。:2013/10/04(金) 12:28:57.63 ID:328Ag9eI0
AHKの標準コマンドでは荷が重そうな、込み入った処理をしたいとき、
キーの入力処理だけAHKに担当させて、
実際の処理はコンソールで動くJavaを呼び出したく、調べてみました。
ahk java で、唯一出てきたのが、この動画でした。

http://www.youtube.com/watch?v=EX0iT0NTTjw

Javaソースを用意して、AHKの変数に入れて、javacを呼び出して、
sleep750msecの後に、java.exeでclassを実行しているようです。

上記は、runを2度経由して実装していますが、この方法以外に、
dllなどをつかって、なにか便利な呼び出し方法ってありますか?
698名無しさん@お腹いっぱい。:2013/10/04(金) 12:41:04.70 ID:328Ag9eI0
補足です。
上記の方法で試したところ、Javaが実行されるまで2秒かかりました。
これを、もうちょっと短縮したいです。

私のAHKで培った知恵では、前回コンパイルしたタイムスタンプをみて、
既存のclassがあればコンパイルを省いて時間節約、くらいしか思いつきませんでした。
699名無しさん@お腹いっぱい。:2013/10/04(金) 14:21:57.98 ID:1SEms5kB0
>>697
どういう作業を想定してるのかわからないから、どの方法がいいのかわからないんだけど

1.複雑な作業部分を(例えばperlの)スクリプトかプログラムで実行させる。(楽だけど多分遅い)
2.複雑な部分は別言語(C#あたりとか?)で dll を作成して dllcallで処理(おすすめだけど、要知識)
3.本当にAHKで作る必要があるのか考え直す

ってとこじゃないのかな。
1のほうは、ttp://www.hirax.net/diaryweb/2009/10/14.html#8421あたりを参考に
(他に参考になるページもあると思うけど、これだけあれば大丈夫でしょ)
700名無しさん@お腹いっぱい。:2013/10/04(金) 21:45:41.62 ID:328Ag9eI0
>>699
ありがとうございます。やりたいことは1でした。
紹介していただいたURLの方法で、標準入出力でデータのやりとりをして、
コンパイルについては、>>698で書いた方法で実装してみます。
701名無しさん@お腹いっぱい。:2013/10/04(金) 22:22:03.53 ID:1Vgg4NhG0
横からレスをして申し訳ないのですが
>>699の2を使えるようになるには何を読めばよいのでしょう?
702名無しさん@お腹いっぱい。:2013/10/05(土) 05:17:41.26 ID:WoDKru260
>>701
DLLを作成するための言語が使えるとして、一番参考になりそうなページは

ttps://sites.google.com/site/agkh6mze/howto/dllcall
AHKから外部dllの呼び出し方を細かく説明してくれてます。

dll自体の作り方は、適当にググると色々出てきます。

あとは、ttp://ahkwiki.net/DllCall() とか、MSDNとか。

まとまった情報ってのはあんまりなさそうだし、情報自体不正確なことも多いから
しばらくはトライ&エラーになるとは思う。
703名無しさん@お腹いっぱい。:2013/10/05(土) 05:58:14.55 ID:qrL82qpn0
>>699,701
dllcallの実装知らないけど、単にLoadLibrary呼んでるだけなら、C#でふつうに作ったDLLはCのとは違うから呼び出せないよ。
COM化するか、あるいは逆P/Invokeの一手間がかかるはず。
それほど難しくはないけど、おすすめはしない。
704名無しさん@お腹いっぱい。:2013/10/06(日) 02:29:28.13 ID:Fp2DC8oX0
いろいろやってみたのですが思ったような動作を得られないので
伺いたいのですが

ControlClick x120 y155 R

上記の命令で該当箇所を右クリックしたいのですが
どう書いても左クリックになってしまいます
,を入れたりRightにしてみたりしましたがお手上げです
どうにか右クリックを動作させる方法をご教示ください
705名無しさん@お腹いっぱい。:2013/10/06(日) 02:57:07.33 ID:re01jRln0
>>704
まずWikiなどのリファレンスを 全部 読む。

,が抜けている
>コマンド名の直後は、空白文字で区切れば、カンマを省略してもよい。(第1引数に空白を指定する場合を除く)
○ ControlClick ***, ***, ・・・
○ ControlClick, ***, ***, ・・・
× ControlClick *** *** ・・・

コマンドのオプションが抜けてる、指定の必要が無い場合は,だけ書いておく
ウィンドウ指定の方法参照 ttp://ahkwiki.net/Window
ControlClick, x120 y155, WinTitle,, R
706名無しさん@お腹いっぱい。:2013/10/06(日) 03:11:57.53 ID:Fp2DC8oX0
>>705
ありがとうございました!
wintitleの指定をきちんとしてやることによって
右クリックで無事動作するようになりました

こんな時間に回答いただき感謝しておりますm(_ _)m
707名無しさん@お腹いっぱい。:2013/10/06(日) 10:37:51.34 ID:wZYqdQef0
これってもしかして、コンパイルしないと引数は渡せない?
メッセージとか面倒なことはしたくないのだけれども…
708名無しさん@お腹いっぱい。:2013/10/06(日) 11:02:00.96 ID:4RpnLAHK0
引数はまったく問題なく渡せる

「メッセージとか面倒なこと」になる状況が書いてないので、
これくらいしか答えられないな
709名無しさん@お腹いっぱい。:2013/10/06(日) 11:55:12.71 ID:wZYqdQef0
例えば下のスクリプトを test.ahk だとして

arg = %1%
Msgbox, % arg
Return

コマンドプロンプトで test.ahk hoge と入力しても
コンパイルしない限りは"hoge"てメッセージ出力されないんだけども
710名無しさん@お腹いっぱい。:2013/10/06(日) 12:00:45.97 ID:WNEuaWbY0
関連付けが壊れてんじゃないの?
再インストールしてみたら?
711名無しさん@お腹いっぱい。:2013/10/06(日) 12:10:11.58 ID:48oKniWZ0
autohotkey.exe test.ahk hoge
712名無しさん@お腹いっぱい。:2013/10/06(日) 12:24:19.36 ID:wZYqdQef0
>>710
さんくす
インストーラ使用の環境と自分の環境でレジストリの差分とってみたら
自分の環境
HKEY_CLASSES_ROOT\AutoHotkeyScript\shell\open
"C:\bin\AutoHotkey\AutoHotkey.exe" "%1"

インストーラで書き込まれる関連付け
HKEY_CLASSES_ROOT\AutoHotkeyScript\shell\open
"C:\bin\AutoHotkey\AutoHotkey.exe" "%1" %*

だったので %* を追加したら引数を受け取ってくれました
713名無しさん@お腹いっぱい。:2013/10/06(日) 14:56:27.50 ID:KSnw7UKU0
Gui,Add,DropDownListでお聞きします
inireadの変数を取得して、それを起動したDropDownListに反映するにはどうすればよろしいでしょうか?
よろしくお願いします
714名無しさん@お腹いっぱい。:2013/10/06(日) 16:27:23.07 ID:KSnw7UKU0
すいません、何とか解決したみたいです。
715素人者:2013/10/07(月) 06:42:12.30 ID:JGplrY450
; AutoHotKeyのパージョンは、1.1.13.00です。
; OSは、Windows7です。
; デスクトップの画面を表示した時にWindowsClassが3つも存在するのです。
; 以下のように、#IfWinActiveの右に3つ書くとエラーになってしまいます?。どのような書き方
をすればエラーが出なくなりますか?

sc001 &amp; sc07B:: ; Escキー &amp; 無変換 キー
#IfWinActive,ahk_class Progman,ahk_class #32770,ahk_class WorkerW
return
#IfWinActive
716名無しさん@お腹いっぱい。:2013/10/07(月) 07:28:03.66 ID:2tmxu+RY0
方法1: Auto-Executeセクションで SetTitleMatchMode を正規表現に指定してORでマッチさせる
 IfWinActive,ahk_class (Progman | #32770 | WorkerW)

方法2: GroupAddでウィンドウグループにまとめる

http://ahkwiki.net/Scripts
http://ahkwiki.net/SetTitleMatchMode
http://ahkwiki.net/RegEx
http://ahkwiki.net/Window
http://ahkwiki.net/GroupAdd


あとその順番でホットキー後にif判定させるなら#つけたらダメ、
IfWinActiveにするか、#IfWinActiveの中に sc001 & sc07B:: 入れるかする
http://ahkwiki.net/-IfWinActive
717名無しさん@お腹いっぱい。:2013/10/07(月) 16:00:20.85 ID:EuuiDXxl0
みんなはいつどうやってAHKに出会った?
718名無しさん@お腹いっぱい。:2013/10/07(月) 16:09:44.59 ID:HgQz8/ni0
>>717
CTRL+CAPSを入れ替えるのに、altimeを使ってたんだけど、altimeが何かのプログラムと衝突して
不具合が出た(なにだったかは覚えてない)ときに、これにたどり着いた。

窓使いの憂鬱もなんか微妙にダメだったんだけど、その理由は全く覚えてない。
長い間英字キーボード使ってたから、その関連で何か嫌な点があったのかも。
719名無しさん@お腹いっぱい。:2013/10/07(月) 17:03:57.46 ID:AqFyDkcV0
>>715
コマンドの置く位置と引数が間違ってる ,は次の引数指定
このコマンドは2個しかないのに,3つ目指定してるからエラーがでる。
#IfWinActive [, WinTitle, WinText]

複数条件指定は>>716の通り

#IfWinActive, WinTitle, WinText
ホットキー::
・・・・
#IfWinActive
720名無しさん@お腹いっぱい。:2013/10/07(月) 17:04:18.80 ID:8k6N12Ar0
ゲームのキーコンフィグができなくて
721名無しさん@お腹いっぱい。:2013/10/07(月) 17:16:21.63 ID:LlDrixpn0
確かVistaでマスタ音量の調整がしたくて入れたような
XPで使ってたソフトがVistaで使えなかったんで

最初にAHKの存在を知ったのはNewtonPadだったかな
722名無しさん@お腹いっぱい。:2013/10/07(月) 18:39:51.35 ID:rXU1W1dz0
半角/全角キーが遠すぎて小指が引きつったので無変換に割り当てたのが最初だった気がする
いま思えば他にもキーカスタマイズソフトなんて山ほどあったろうに
どうしてAHKにしたのかな・・・
723名無しさん@お腹いっぱい。:2013/10/07(月) 19:20:38.97 ID:JGplrY450
3つある引数を何とか1行に納めたいと、色々いじくりまわしている内にこんな状態にになってしまいま
した。

仕方ないので、

#IfWinActive,ahk_class #32770 ;
#IfWinActive,ahk_class Program Manager ;
#IfWinActive,ahk_class WorkerW
sc01c &amp; sc02E ; Enter &amp; C キー
msgbox OK
Return
#IfWinActive ; デスクトップ限定解除

複数指定の方は分からないので、上のスクリプトで良いとしました。

こんな書き方でも、文法的には間違っていないものなのでしょうか?

回答くださって有難うございました。
724名無しさん@お腹いっぱい。:2013/10/07(月) 19:24:05.69 ID:8k6N12Ar0
複数指定するなら#Ifだ

んでこういう風に書く

#If WinActive("ahk_class #32770") and WinActive("ahk_class Program Manager") and WinActive("ahk_class WorkerW")

処理むにゃむにゃ

#If
return
725名無しさん@お腹いっぱい。:2013/10/07(月) 19:25:25.92 ID:8k6N12Ar0
あ、違うわ。orだ(・ω<)てへぺろ
726素人者:2013/10/07(月) 19:50:06.51 ID:JGplrY450
#If WinActive("ahk_class #32770") or WinActive("ahk_class Program Manager") or WinActive("ahk_class WorkerW")

return
#If WinActive

andの文字をorに変えて、最後の2行を上の用に変更したら、正常に動作をしました。

2CHには、「名無しの お腹いっぱい」さんみたい人がいて助かりました。散々苦労したのが、アッと言う間に解決してしまいました。

本当に有難うございました。
727名無しさん@お腹いっぱい。:2013/10/07(月) 21:15:09.54 ID:JGplrY450
; AutoHotKeyのパージョンは、1.1.13.00です。
; OSは、Windows7です。
;マッチキーの書き方が間違っているのは分かるのですが、どのような書き方をすれば正常に動作
をするでしょうか?

sc001 &amp; sc07B:: ; Escキー &amp; 無変換 キー
Input,格納変数名,T1,{sc079},enter ; 引数のマッチキーを受け付けない?
;以下省略
728名無しさん@お腹いっぱい。:2013/10/07(月) 22:19:46.83 ID:AqFyDkcV0
>>727
解説と例文をよく読みましょう。
ttp://ahkwiki.net/Input
729名無しさん@お腹いっぱい。:2013/10/08(火) 06:10:58.42 ID:JA+ajZGf0
>>688
タイトル取得しかできないのなら、タイトルをURLにすればいいじゃない!
素晴らしいです。私にはまったくそのような発想は出てきませんでした・・・。
これでやりたい事が実現できそうです。
ありがとうございました。
730名無しさん@お腹いっぱい。:2013/10/08(火) 06:20:44.75 ID:Jd4hkV2w0
;Inputコマンドの第4引数であるマッチキーは、A〜Zキーのみ可能なのですか?Enterキーを書いた
ら受け付けず、タイムアウトの処理されてしまいます。こう言う場合どう書くのでしょうか?

sc001 &amp; sc07B:: ; Esc &amp; 無変換 キー 練習用
Input,格納変数名,T1,{sc079},Enter ; Enterキーを受け付けず、Timeアウト処理される?
IfInString, ErrorLevel,EndKey: ;
{ msgbox,エンドキー
Return
} If ErrorLevel=Match
{ msgbox マッチキー;
Return
} If ErrorLevel=Timeout
{ msgbox,Timeout
} return
731名無しさん@お腹いっぱい。:2013/10/08(火) 08:15:18.20 ID:RJlRG/yY0
Input の解説を読むと、第4引数はどう見てもマッチキーではなくマッチリストな件
732名無しさん@お腹いっぱい。:2013/10/08(火) 11:01:08.71 ID:Bo0HSjJ20
>>730
コマンド解説読み直せ

Input,格納変数名,T1,{sc079},Enter
意味:
1秒以内にE n t e r と文字キーを入力する。(Enterキーではない)
終了キー {sc079}
733名無しさん@お腹いっぱい。:2013/10/08(火) 12:43:02.87 ID:Jd4hkV2w0
すいません書き間違えました。マッチキーじゃなくてマッチリストでした。

画面に書いてあるスクリプトを実行すると、

Esc &amp; 無変換キーを押してすぐ変換キーを押すと「エンドキー」表示され、Enterキーを押した場合キー
入力を受け付けず結果的に1秒経過して、「Timeout」と表示されてしまいしまいます。

3分岐したのに2分岐しか出来ないのです。
734名無しさん@お腹いっぱい。:2013/10/08(火) 13:34:12.35 ID:Bo0HSjJ20
>>733
>>731は書き間違えじゃなくて間違って理解してる事を指摘してるんだよ・・・。
さっさとコマンド解説読み直せ ttp://ahkwiki.net/Input

Input , OutputVar, Options, EndKeys, MatchList
EndKeys 入力を終了させる「キー」
MatchList 入力を終了させる「文字列」
735名無しさん@お腹いっぱい。:2013/10/08(火) 18:02:24.82 ID:Jd4hkV2w0
リファレンスを見直してみました。
OutputVar 入力されたテキストを格納する変数名。
EnterキーはLF(`n)として記録され、そのほかの非文字キーは無視される。
っと、書いてありました。

これを指摘しているのすか?

だけど、If文で比較しているのは、ErrorLevelとMatcを比較しているのであって、OutputVarと比
較しているのとは違うように思えます。

すいません。素人の浅はかさでした。申し訳ありません。
736名無しさん@お腹いっぱい。:2013/10/08(火) 21:47:49.27 ID:AEJeVi160
Internet ExplorerってUserCSSを一つしか用意できなくて
しかもドメインごとに指定できないじゃないですか
なので、

^r押すとそのページのドメイン(できればサブまで)を取得して
そのページ用のCSSを用意していたらそれをIEで指定したファイル名(default.css)にリネームして再読み込みさせる

という風にしてみようかと思ってるんですが、
もっと良い方法ってなにか無いですか?
737名無しさん@お腹いっぱい。:2013/10/08(火) 21:58:23.69 ID:ls4CGPRt0
IEをつかわn…
738名無しさん@お腹いっぱい。:2013/10/08(火) 22:14:28.81 ID:AEJeVi160
今メインで使ってるFirefox24と比べてメモリ消費がダンチなもので……
セーフモードでもIE11には太刀打ちできませんよ
739名無しさん@お腹いっぱい。:2013/10/08(火) 22:25:15.62 ID:FsaDE7Un0
Proxomitronでも使えばいいんじゃね?
740名無しさん@お腹いっぱい。:2013/10/08(火) 23:16:27.50 ID:iFl0/rEx0
今時メモリなんてFirefoxに1GBぐらい使わせてやっても特に困らんだろ
741名無しさん@お腹いっぱい。:2013/10/08(火) 23:46:17.74 ID:AEJeVi160
>>739
Windows8.1だからかAdd to BlockFileにURL入力しても消えちゃうんですよね……
これから類似ソフト試すより>>736の方が勝手も分かってるし楽だろうと思いまして
>>740
1GBしかないんで……
742名無しさん@お腹いっぱい。:2013/10/09(水) 01:45:15.80 ID:NTW8MFMU0
ユーザcssで「@-moz-document url/domain」相当のことやりたいんだろうけど、
ローカル取得が出来たら出来たで、クロスドメイン問題とか更なる色々問題が起きるよ。

オミトロンを Program Files に入れててUAC効いちゃってるだけってオチなら、
インスコフォルダを %Userprofile% の直下にでも置けばいい。

それよりもStylish 使える FX や Chrome 使うのが一番だと思う。


あ、ahkのこと全然書いてない。
無理やりやるなら、COMオブジェクト作ってIE起動するスクリプトで、
ページロードとロード完了を検知して、DOM操作してbodyタグにclass設定してやるのと、
ユーザスタイルシートロードするようにインターネットオプション設定するってところかな。
CSSはbodyタグのclassで親子セレクタで何とかすれば
「@-moz-document url/domain」みたく出来なくもない。

でもやっぱりスレチかな
743名無しさん@お腹いっぱい。:2013/10/09(水) 01:54:37.35 ID:W2dRoqrf0
>>742
741ですが全く分からないので736を突き詰めてみたいと思います

みなさま相談に乗っていただきありがとうございましたm(_ _)m
744名無しさん@お腹いっぱい。:2013/10/09(水) 18:14:12.92 ID:IBxc0UYn0
OSの種類 Windows7 64ビット版
AutoHotkeyのバージョン1.1.13.00

Input,格納変数名,T1,{sc079},`;
MatchListのキーにエスケープの文字`を書いてもセミコロンキーを受け付けてくれません?
どういう書き方をすればMatchListで設定したセミコロンキーを受け付けるんですか?
745名無しさん@お腹いっぱい。:2013/10/09(水) 19:09:37.86 ID:FLE4yQR60
いいから君はリファレンスを上から順にきちんと読み込んで咀嚼して基礎体力つけてからおいで
今の状態じゃ解答もらってもチンプンカンプンで理解できてないでしょ
答える側としてもそれなりに考えて解答してるんだから
>723,733,735みたいな返答されると心が挫けるんだよ

セミコロンの件はエスケープしなきゃいいだけの話だが
Inputみたいな入力横取りコマンドは扱いも難しい
初心者自認してる人間がいきなり使おうとしてもハマるだけだと思う
746名無しさん@お腹いっぱい。:2013/10/09(水) 19:58:48.13 ID:IBxc0UYn0
リファレンスを読んでいても途中で挫折しまいそうな状態です。
基礎体力が付いたらまたやってくることにします。
有難うございました。
747名無しさん@お腹いっぱい。:2013/10/09(水) 20:44:23.42 ID:vJ/V/58J0
Input, key, T1, {sc079}, `;
または
Input,key,T1,{sc079},;
が正解。どっちにするかは、書き方の好みの問題かね(カンマの後ろに半角空白付けたいかどうか)


ちなみに>>744の何処が不味いかは、Wikiの、Inputの説明の所じゃなくて、エスケープ文字の説明の所に書いてあるよ
リファレンスを読む時は、関係ありそうなページを片っ端から読むくらいの気持ちで頑張って
748名無しさん@お腹いっぱい。:2013/10/09(水) 21:02:59.87 ID:CfuF353P0
,`;
と書いても別に問題なく動作するんだけど
749名無しさん@お腹いっぱい。:2013/10/10(木) 05:18:39.26 ID:ExImmAja0
もう質問はしないと思っていましたが、たまたま回答を見たらあったので試してみましたら、なんと正
常に動作をしました?。こう回答が有るとリファレンスを読む気が増してきます。
有難うございました。 有難うございました。
750名無しさん@お腹いっぱい。:2013/10/10(木) 07:59:33.74 ID:Ve3oINrA0
>>748
エスケープ必要ない所でカンマ付けても無視されるんだっけか
なんで>>744は失敗したんだ
751名無しさん@お腹いっぱい。:2013/10/10(木) 11:21:03.55 ID:4XFy8HoN0
セミコロンに関しては空白なしでエスケープつけたらダメじゃね、うちでも動かなかったよ
win7 AHK_L 1.1.08.01
752名無しさん@お腹いっぱい。:2013/10/10(木) 14:36:05.67 ID:bN/1avQ00
スペース; 以外は全て動作する。
753名無しさん@お腹いっぱい。:2013/10/10(木) 17:37:58.74 ID:ExImmAja0
回答をもらって試す時に、今まで試していた;Input,・・・・ ;や";"やsc027や"sc027"が4行位書
いてありまして、これを消して試したら正常に動作をしました。
まさかこんな事が原因で、正常に動作をしないとは全く知り得ませんでした。
結果的に回答を頂いたおかげで正常に動作するようになりました。
有難うございました。
754名無しさん@お腹いっぱい。:2013/10/10(木) 20:55:09.31 ID:X0IWPgTP0
ウインドウグループのプロセス版みたいなのって作れないですよね?
複数のプロセス監視したいです...
755名無しさん@お腹いっぱい。:2013/10/11(金) 00:16:11.90 ID:STG+5wLS0
プロセスの有無で何したいのかによるな

キー定義変えたいなら、非表示窓含めて#IfWin~使えばいいし

無いなら起動するとか、有るなら殺すとかなら
タイマーつかってシコシコifかけばいい

ただし、複数監視でwait系のものは避けた方がいい
756名無しさん@お腹いっぱい。:2013/10/13(日) 00:38:03.03 ID:FSeU7N/Ti
>>741
そもそもWindows 8ってメモリ1Gで動くのか

・・・と思って調べてみたら、最低要件がx86で1GB、x64で2GBか。
ギリギリのタイトロープで勝負するより出来るならメモリ増設した方が良くないか?
それだけ貧弱ならスワップしまくってイライラしないかなぁ
757名無しさん@お腹いっぱい。:2013/10/13(日) 11:43:16.39 ID:GaWBkt5j0
質問者は仮想環境じゃね
758名無しさん@お腹いっぱい。:2013/10/13(日) 12:47:33.43 ID:kh6TzsLS0
Win7だって、メモリ256MBでも起動はするぞ
インストールの時は384MBくらいにしないとダメだったが
759名無しさん@お腹いっぱい。:2013/10/13(日) 13:02:33.39 ID:i9ptPyVE0
VISTA以降なら1Gとか絶対嫌だわ
つーかXpでも嫌
760名無しさん@お腹いっぱい。:2013/10/14(月) 19:04:08.87 ID:Ab+CKije0
全角空白を半角%E3%80%80に置き換えたいんだけどどうやればできる?
Stringreplaceでそのまま%E3%80%80って入れたらエラーになるし、
変数に放り込んでからStringreplace使っても同じ。
A_SPACEみたいな特殊関数ないんでしょうか?
761名無しさん@お腹いっぱい。:2013/10/14(月) 19:04:56.53 ID:eY1zafmJ0
AHKとちょっとずれた質問だけど、改行込みの長文の読み書き削除させる時は一つのiniファイルでセクション沢山作るよりもテキスト毎に分けた方が効率がいいかな?
762名無しさん@お腹いっぱい。:2013/10/14(月) 19:09:42.33 ID:eY1zafmJ0
↑の補足ですがテキストビューア的なものを想定しています
763名無しさん@お腹いっぱい。:2013/10/14(月) 19:31:09.19 ID:wwmV4VN20
>>761
適当にエスパーしておくと、一つの実行ファイル(か、それに相当するahkファイル群)に対しては
一つのiniファイルを使うべき。
C言語用の設定ファイルを Clang.ini、単純なテクストファイルを txtfile.ini とかなんかにするのは
やめたほうがいい。

超エスパーだけど、これ正しい解釈なのか?w
764名無しさん@お腹いっぱい。:2013/10/14(月) 19:34:33.79 ID:/cIBhH9U0
これでリロード出来ないのですが、どうすれば良いでしょうか?
Reload, .\sample\sample.ahk
765名無しさん@お腹いっぱい。:2013/10/14(月) 19:52:14.41 ID:eY1zafmJ0
>>763
ありがとうございます。

頂いた回答ですと、これが単純なテキストファイル扱いになるのか判断できませんので補足します。

扱うものは文章群ですが、そのスクリプト内でだけ使う事が目的で他のテキストファイルと互換性は要りません。
そのスクリプト内で文章をツリー状に管理して、文章の追加・読込・更新・削除・並び替え的なことをしたいのですが、
この場合は一つのiniで全ての文章情報を記録するのは好ましくないでしょうか?
またはこれ以外の管理でお勧めはありますか(当方素人なのでむずかしい事はできませんが)?
766名無しさん@お腹いっぱい。:2013/10/14(月) 19:56:54.00 ID:jckqKE5w0
>>760
%E3%80%80って文字列に置換するってこと?
%はそのまま記述できないから、エスケープ文字の`をつけて
`%E3`%80`%80

>>764
reloadは引数なしで自分自身をリロードするから引数いらない
sample.ahkってのを実行したいなら、runコマンドを使う
767名無しさん@お腹いっぱい。:2013/10/14(月) 20:10:59.19 ID:/cIBhH9U0
>>766
返信ありがとうございます
Reload対象のスクリプトが#SingleInstance Ignoreなので、Runコマンドは使えないのです。
何かいい方法は無いでしょうか?
768名無しさん@お腹いっぱい。:2013/10/14(月) 20:32:31.08 ID:wwmV4VN20
>>765
何をしたいのかが多分わかった。
アイデアプロセッサか、アウトラインエディタみたいなことをしたいわけね。

構造がツリー型だと仮定していいんだったら

自分だったら、一つの文章群をプロジェクトとでもいう単位にして、そのプロジェクトに含まれる各文章は
文章ごとにファイルにする。で、プロジェクトに含まれるファイルをすべて同一のフォルダーに入れておいて
、各文章のつながり方を、project1.struct と名前の付けたファイルに保存しておく。

起動時にproject1.structの構造を読みだしてから、編集作業を行って
データ構造が変化したときや終了時にに、project1.structに書き出す。

てな感じでメイン部分は実装すると思うけど、xmlじゃだめ?
正直AHKには荷が重いような気がしたり…
769名無しさん@お腹いっぱい。:2013/10/14(月) 20:46:00.35 ID:eY1zafmJ0
>>768
はい、大体その通りです。

iniファイルで纏めるくらいならファイルは分けたほうがいいんですね。
xmlは使った事ないので良さそうなら調べてみるつもりですが、この様な処理の場合はどんな面で有利なのでしょうか?
770名無しさん@お腹いっぱい。:2013/10/14(月) 21:06:07.28 ID:wwmV4VN20
>>769
今の単純な仕様でいいなら、xmlなんてわざわざ勉強してややこしくする必要はないけど
将来もう少し拡張した機能を付けたいとか、何かと統合したいっていうなら、標準仕様に
乗っかったほうが楽。

その辺は自分の目標とプログラム技術の兼ね合いかな。
771名無しさん@お腹いっぱい。:2013/10/14(月) 21:11:26.62 ID:eY1zafmJ0
>>770
分かりました。いい機会なのでxmlを勉強するところから始めて考えを纏め直してみます。
772名無しさん@お腹いっぱい。:2013/10/14(月) 23:23:18.78 ID:jckqKE5w0
>>767
同時実行を1個にするためにだけ Ignore にしているなら
#SingleInstance Force にして Run する

どーしても、Ignoreじゃないとダメっていうなら、対象スクリプトをKillしてRunとか
PostMessage/OnMessage使ってIgnoreしてるスクリプト自身がReloadするとか?
でなんとかする
773名無しさん@お腹いっぱい。:2013/10/15(火) 00:05:09.55 ID:tHxBIvW10
>>766
ありがとう。
思い出してやってみたけど、やっぱり%25%E3ってなってしまう。
""付きと無しでやってみたんだけど同じ。
774名無しさん@お腹いっぱい。:2013/10/15(火) 00:07:11.11 ID:tHxBIvW10
ごめんなさい
%25E3%2580%2580
こうなってしまう。の間違いでした。
775名無しさん@お腹いっぱい。:2013/10/15(火) 00:46:48.87 ID:tHxBIvW10
ごめんなさい。
OperaVer17のバグで全角空白とかの日本語処理が駄目駄目なだけでした。
失礼しました。
776名無しさん@お腹いっぱい。:2013/10/15(火) 02:53:57.83 ID:oTuA2r0U0
>>766>>772
ありがとうございます!。
外部スクリプトから、以下のコマンド送信で出来ました!。
PostMessage, 0x112, 0xF060,,, sample ;sample.ahkにalt+f4を送信
Run, autohotkey.exe sample.ahk ;sample.ahkを再起動
Ignoreなら、終了してからRunするだけで良いんですよね。
こんな単純な事なのに、全く気が付かないとか自分が馬鹿過ぎました。
お騒がせしました。
777名無しさん@お腹いっぱい。:2013/10/15(火) 03:12:51.38 ID:oTuA2r0U0
本家スレ探していたら、Reloadコマンド送信ありました。
DetectHiddenWindows, On
SetTitleMatchMode 2
PostMessage, 0x111, 65303,,, sample.ahk - AutoHotkey
こちらで運用してみようと思います。
ありがとうございました。
778名無しさん@お腹いっぱい。:2013/10/15(火) 14:14:17.20 ID:d6tOO9u80
AHKを数年使い込み、キーマクロ、ファイル一括操作、画像監視&認識、
文字列処理系の小物スクリプトなら、思った通りに「とりあえず問題なく動く」レベルに
作れるようになった。速度も問題なし。

この状態で、過去に挫折した言語(C・Java)を再開したところ、
自分でも驚くほど理解が早くなってた。
AHKのおかげで、やりたいことをプログラムに置き換える作業に慣れたからだと思う。

と同時に、他言語の switch case を使ったときの「ソースの可読性」がとても良く感じた。
AHKでif〜elseifの羅列をなくしたいのだけど、なんかいい記述方法ありますか?
779名無しさん@お腹いっぱい。:2013/10/15(火) 14:18:24.74 ID:iLqGe/k00
数式に置き換えるのならなんだっけ?三項演算子だっけ?
あれはahkでも使えたと思う。俺はまだ使いこなせてないけど
780名無しさん@お腹いっぱい。:2013/10/15(火) 19:14:07.22 ID:FFBrU1TY0
(a == 1)? 0 : 1
↑これのこと?
781名無しさん@お腹いっぱい。:2013/10/15(火) 19:15:40.12 ID:iLqGe/k00
>>780
それのこと
782名無しさん@お腹いっぱい。:2013/10/15(火) 21:54:36.72 ID:O3m6FE360
>>778
処理を関数にして、かつhashにいれる
(またはclass化)
で、名前呼びだしすれば代替出来る

てかhash(dict,map,assoc-array)有る処理系ならどれでもできる
javaが一番面倒そう(クラスとインスタンス作らなきゃいけないんで)
783名無しさん@お腹いっぱい。:2013/10/15(火) 22:16:35.19 ID:v7+lIwKs0
autohotkeyのソースに変換するプログラムでも導入しないかぎり
switchは使えないでしょう
lispのマクロのようなものが使えれば一番よさそうだけれど
784名無しさん@お腹いっぱい。:2013/10/16(水) 02:07:51.98 ID:EHe7MrD10
マウスジェスチャーの方で非アクティブウィンドウを掴んで移動っていうのが面白そうだったのでやってみたけどなんかコレじゃない

windowmove:
WinGet,hw,ID,A
MouseGetPos,x1,y1,Mc
CoordMode,Mouse,Screen
If(hw <> Mc){
hw := Mc
}
While GetKeyState("LButton","P") = 1{
MouseGetPos,x2,y2
WinMove ahk_id %hw%,,x2 - x1, y2 - y1
}
return

ちょっとマウスジェスチャーLで使えないか頑張ってみたが、残念ながら挙動が怪しす
非アクティブウィンドウ選択して動かそうとしたらアクティブウィンドウの左上に一旦ウィンドウ合わせてから動きやがる・・・
どうしたもんかアイディアください
785名無しさん@お腹いっぱい。:2013/10/16(水) 02:54:20.51 ID:oSULTBH80
ttp://code.google.com/p/mousegesturel/downloads/list
MGL.ahkでウインドウを掴んで移動なら既にプラグインであるよ
786名無しさん@お腹いっぱい。:2013/10/16(水) 12:51:45.12 ID:EHe7MrD10
それちょっと試したんだけどちょい望む挙動が違う
非アクティブをアクティブウィンドウにせずに動かしてみたいんです
動かすのはできたんだけど最前面アクティブウィンドウを基準に座標とっちゃうみたいなんですよね
wingetposで取得したほうがいいのかな
787名無しさん@お腹いっぱい。:2013/10/16(水) 22:05:24.13 ID:pHkPEEkL0
AHK で打鍵カウンターを作成したいと考えています。
GetKeyState コマンド/関数が検知できるのは指定したキーのみです。
英数キーのいずれかが押下されたことを検知させるにはどうしたら良いでしょうか。
788名無しさん@お腹いっぱい。:2013/10/16(水) 22:51:01.45 ID:XQvDH8YS0
~*1::
~*2::
(中略)
~*0::
~*a::
~*b::
(中略)
~*z::
count++
Return

Pause::MsgBox,, %count%
789名無しさん@お腹いっぱい。:2013/10/16(水) 22:51:54.73 ID:OrGeSi6a0
メーカー独自のマウスの拡張ボタンをホットキーに使いたいんですが
ホットキー名はどのように調べればいいですか?
押すとAltTabメニューが出てくるボタンに別な事をさせたいです
!Tab::だと不可でした・・・
790名無しさん@お腹いっぱい。:2013/10/16(水) 22:57:32.21 ID:q2kltwve0
>>789
メーカー名を書かないと無理

書いても無理な場合が多い
791名無しさん@お腹いっぱい。:2013/10/16(水) 23:15:51.81 ID:CheHTPZJ0
>>789
2.13 特殊なボタンなんだけど、どうやってキーコード調べればいいの?
http://ahkwiki.net/Faqs

#InstallMouseHook マウスフックを使用するスクリプト実行

AutoHotkey.exeのメインウィンドウ

Key history and script info

押されたキーをホットキーにする
792名無しさん@お腹いっぱい。:2013/10/16(水) 23:31:22.85 ID:OrGeSi6a0
>>790-791
ありがとうございます<(_ _)>
793名無しさん@お腹いっぱい。:2013/10/16(水) 23:35:26.79 ID:rcFb43SS0
>>787
英数だけなら Input コマンドでいいんじゃない?特殊キーは無理だけど。
常時監視する場合の負荷とかはわからん。
794名無しさん@お腹いっぱい。:2013/10/17(木) 00:58:30.76 ID:Ygmv7o4r0
GUIボタンを作ってWinGetActiveTitle でマウス下のウィンドウを取得して
その後キーを送出しているのですが
アプリによっては引っかかる感じがあったりします
なにかキー送出したらGUIボタンからフォーカスをパージするようなコマンド有りますか?
795名無しさん@お腹いっぱい。:2013/10/17(木) 01:09:47.31 ID:ltSl07qB0
そんなピンポイントの機能は無いよ

Alt+Tab発行してからキー送出すりゃいんじゃない
796名無しさん@お腹いっぱい。:2013/10/17(木) 03:49:00.29 ID:Ygmv7o4r0
いろいろ試したけど
ムリでした〜
キーは送れているしまぁもうちょい勉強します
797名無しさん@お腹いっぱい。:2013/10/17(木) 09:18:39.07 ID:/n+6ww790
かざぐるマウスが死んだからユーザーが増えそうですね。
798名無しさん@お腹いっぱい。:2013/10/17(木) 09:45:24.92 ID:bmPIuH8s0
>>797
こっちに多く流れてくるようならMGL.ahkスレを建てた方がいいかもね
799名無しさん@お腹いっぱい。:2013/10/17(木) 13:35:19.18 ID:PKxf5+nd0
脳弱の受け皿が決壊したか……
800名無しさん@お腹いっぱい。:2013/10/17(木) 14:44:44.25 ID:PhbOpGXx0
auのIS04が発売されたときのAndroid板みたいな雰囲気になることに期待
801名無しさん@お腹いっぱい。:2013/10/17(木) 15:56:54.24 ID:PKxf5+nd0
>>800
docomoのT-01Cは大丈夫だったの?
802名無しさん@お腹いっぱい。:2013/10/17(木) 17:36:44.65 ID:8BOUVlz10
かざぐるマウスに何があったんだ?
調べる気もないけど
803名無しさん@お腹いっぱい。:2013/10/17(木) 20:44:28.33 ID:X5TFQdYI0
サイトごとお亡くなり
窓の杜からも削除された模様

受け皿はマウ筋だと思うけどな
804名無しさん@お腹いっぱい。:2013/10/18(金) 03:09:59.38 ID:V3aMHZjv0
現状だとOpenMauSujiかな
805名無しさん@お腹いっぱい。:2013/10/18(金) 10:05:58.71 ID:Wt7FgBu40
windows8の動作が怪しいとユーザーから指摘を受けていったってどこかでみた>かざぐる
その対応に疲れてしまったのかな
806名無しさん@お腹いっぱい。:2013/10/18(金) 11:09:55.41 ID:ajcuYpEb0
本業が忙しくて8に対応できるだけの余力がなくなったんでしょ
807名無しさん@お腹いっぱい。:2013/10/18(金) 11:20:08.77 ID:sNJDXLQ20
かざぐるを使ってないから知らんけど、だからって消さなくてもよかったのに。
win8はクソだから一生対応する気はありません って書けば済んだ。

プログラマってまじめな人が多いけど、消す選択って究極だな。
808名無しさん@お腹いっぱい。:2013/10/18(金) 11:27:53.01 ID:xcItTkQW0
消さないとこれからずーっと
「Win8以降対応してください!!!!」
「はよ対応せいやコラ、こっちは困っとるんじゃ」
「ユーザー見捨ててとんずらとか許せない!」
みたいな書き込みをされる

何様
809名無しさん@お腹いっぱい。:2013/10/18(金) 13:05:32.05 ID:Wql+u68r0
愛用のStrokeItが話題にもあがらない悲しさ
マウスボタンはAHK、ジェスチャはStrokeIt、ボタン型ランチャはClaunchでマウス派最強セットと思ってたのに
810名無しさん@お腹いっぱい。:2013/10/18(金) 13:21:31.90 ID:t9M5YVVq0
なんもかんもひとまとめAHKファイルでスッキリ
ある程度わかってくるとやっぱソース書くほうが楽しいね
811名無しさん@お腹いっぱい。:2013/10/18(金) 13:29:33.58 ID:ViQDpQqj0
もうすぐデュアル環境になるからちょい暇な時間があるとそれ専用のahk構想を練ってる
実際にやり始めるとただの作業だけど構想の段階って楽しいよね
812名無しさん@お腹いっぱい。:2013/10/18(金) 13:31:03.56 ID:t9M5YVVq0
ワンクリックで俺環境、みたいなの作るの楽しいよね
813名無しさん@お腹いっぱい。:2013/10/18(金) 17:22:59.87 ID:NZta9NYb0
動画を見る時にVLCメディアプレイヤーを使ってるんですが
VLCが起動してる状態で動画ファイルをダブルクリックしてもVLCが前面に出てこなので
ファイルが渡された時にアクティブになるようにAHKで出来ないでしょうか?
814名無しさん@お腹いっぱい。:2013/10/18(金) 20:26:48.23 ID:ccBwxOBd0
>>813
ソフト側の問題
1つだけ実行を許可 のチェックを外せばいい
815名無しさん@お腹いっぱい。:2013/10/19(土) 01:09:24.87 ID:9e39S7xD0
Autohotkeyで指定したフォルダを開けなくする事って出来ますか?
816名無しさん@お腹いっぱい。:2013/10/19(土) 01:41:58.60 ID:LqpKEtRw0
#If GetKeyState("vk1Dsc07B","P")
*f::LButton
....省略.....
#If
という具合に無変換キー+【f】でマウスの左ボタンを割り当てたんだけど、fキーの設定をさらに分岐させたい
*f::
if GetKeyState("Space","P"){
Send,{Blind}{4}
}Else{
Send,{Blind}{LButton}
}
return
前者だとドラッグできるんだけど、後者だとキーリピートが働いてクリック連打になる
どのようにしたら前者と同じような挙動になるか分かる?
817名無しさん@お腹いっぱい。:2013/10/19(土) 01:45:53.02 ID:MC7fnGpS0
}else{
Send,{Blind}{LButton down}
keywait,%A_ThisHotkey%
Send,{Blind}{LButton up}
}
的な
818816:2013/10/19(土) 02:10:41.39 ID:LqpKEtRw0
>>817
そのままじゃ動かなかったけど、
*f::
if GetKeyState("Space","P"){
Send,{Blind}{4}
}Else{
Send,{Blind}{LButton down}
keywait,f←ココを変えたらうまく行った
Send,{Blind}{LButton up}
}
return
}

これで寝れる! ほんと有り難う!
819名無しさん@お腹いっぱい。:2013/10/19(土) 02:41:33.73 ID:BWI2OSAU0
>>815
できる
820名無しさん@お腹いっぱい。:2013/10/19(土) 11:42:34.60 ID:P3BetduK0
ttp://s18.postimg.org/n71zzuyy1/GAZO.png

↑このフロートしたツールボックスの位置を変えたいのですが
Window Spyで見てもウィンドウタイトルは親ウィンドウのペイントです
WinMoveなどで場所を変更できないんでしょうか?
821名無しさん@お腹いっぱい。:2013/10/19(土) 11:44:10.90 ID:AitPU9x80
タイトル指定で行けない?
822名無しさん@お腹いっぱい。:2013/10/19(土) 12:08:10.49 ID:P3BetduK0
マウスで選択してもタイトルは「無題 - ペイント」のままなんです
昔のオフィス製品もこんなかんじで・・・

マウスで移動することは出来るのですが
AHKから場所を移動したいです
823名無しさん@お腹いっぱい。:2013/10/19(土) 12:49:08.24 ID:/qaIbQGn0
>>820
*Window Spy でウインドウ探す
*表示タイトルで認識するか試す 今回は「ツール」
*PixelSearch ImageSearch で探す 今回は「ImageSearch」
824名無しさん@お腹いっぱい。:2013/10/20(日) 00:14:38.70 ID:U1l+gkTB0
フォルダのサイズを取得したいんですが、一度に取れるコマンドってありましたっけ?
地道にfile-loop回帰処理でfilegetsizeで1ファイルづつ足し込みするのがいいのかな
825名無しさん@お腹いっぱい。:2013/10/20(日) 00:18:28.08 ID:MGa6PjS60
>>824
俺はそれでやってる。
ファイルが10000個以内なら、1秒以内に結果が出る。
826名無しさん@お腹いっぱい。:2013/10/20(日) 00:50:01.91 ID:qxBp/6b30
フォルダサイズの取得はFileSystemObjectのGetFolderでも出来るみたいだけど
うちの環境じゃシステム関連のフォルダでエラーが出る

UACは無効にしてるし所有権の問題かな?
827名無しさん@お腹いっぱい。:2013/10/20(日) 02:44:07.92 ID:U1l+gkTB0
>>825-826
d
素直に回すのが良さそうですね
4G超えてないかの判定用なんでサイズ超過した段階でループ抜けるようにして時短してみます
828名無しさん@お腹いっぱい。:2013/10/20(日) 07:05:17.69 ID:3hCLnsrN0
Autohotkeyで「BearMouse」で言うところの、
マウスカーソルを指定の場所(ボタン)へ移動させる、
「アシスト」または「オートクリック」
のようなこと再現できないっすかね?

実際にボタンを押す必要はなく、移動だけ出来れば満足なんすよ。
829名無しさん@お腹いっぱい。:2013/10/20(日) 08:25:04.38 ID:U1l+gkTB0
いわゆるチューチューマウス機能かな、今はOSの標準機能にもあるけど
マウスのプロパティ - ポインタオプション - ポインタを自動的に既定のボタン上に移動する

ahkでやるなら、タイマーかWinWaitActiveで ahk_class #32770ダイアログが出るのを待って
ControlGetPosでフォーカスのあるコントロール位置取得してMouseMoveかな
830名無しさん@お腹いっぱい。:2013/10/20(日) 15:00:07.10 ID:3hCLnsrN0
>>829
ヒントをありがとう。

>マウスのプロパティ - ポインタオプション - ポインタを自動的に既定のボタン上に移動する
これがダイアログによっては移動しないので困ってる。
気になり調べてみたら、そういうダイアログに限って
ボタンなどのControlが取得出来ないことが分かった。

一応、ダイアログの「Title」、「Class」、「Position」、「Size」は
取得できるので、ポインタを指定のボタンまで相対移動させるようにすれば
希望の動作を達成出来そうなので、ガンバッてみるよ。
831名無しさん@お腹いっぱい。:2013/10/21(月) 08:28:25.91 ID:7ULw8PQE0
if ErrorLevel <> 0の演算子<>は等値の==とは違うのでしょうか
検索してもなかなかわからないので教えて頂けると助かります
832名無しさん@お腹いっぱい。:2013/10/21(月) 08:49:15.89 ID:tvZ3E+By0
違うというか魔逆
<> は !=
833名無しさん@お腹いっぱい。:2013/10/21(月) 09:01:37.53 ID:7ULw8PQE0
>>832
勘違いしてました…リファレンスの非等値をよく読んでおきます
すばやい回答ありがとうございました
834名無しさん@お腹いっぱい。:2013/10/21(月) 21:11:10.55 ID:d9li5QIC0
指定したフォルダ以下のファイルとフォルダをコピーしたいのですが
そのときに特定の拡張子のファイルを除外するということはできますか?
835名無しさん@お腹いっぱい。:2013/10/21(月) 21:28:00.85 ID:07H2z6F60
そういうのはもういっそ他のソフトを使ってしまうほうがお手軽で正確かも
realsyncやfastcopyでoptionを設定してそれをAHK上でrunして走らせるとかのほうが速いと思う
836名無しさん@お腹いっぱい。:2013/10/21(月) 22:51:31.57 ID:vXYtXz9K0
.ahkの拡張子のファイルを開いている時にF5キーを押すと上書きしてリロード、というのをやりたいんですが
#IfWinActive,*.ahk
F5::
Send,^s
reload
#IfWinActive
return

ではダメなようです。ワイルドカードの指定に問題があると思うのですが、どう記述すればよいのでしょうか。
837名無しさん@お腹いっぱい。:2013/10/21(月) 23:09:43.11 ID:gZiiTQu40
>>834
fileloopで、まずはリストとしてフォルダ内ファイルを全部読み取って、
条件フィルタを作って、該当する不要品は飛ばし、引っかからないファイルだけ処理する。

>>835の方法でもいいけど、俺は、この手の小細工は全部ahkでやってる。
なんだかんだで作業中にいろいろ出る細かすぎる条件指定が、
一度作っておけば、自分の裁量で、いくらでも追加できる。
838名無しさん@お腹いっぱい。:2013/10/21(月) 23:11:41.95 ID:wBBKaaHj0
ControlGetFocus, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]
を使うにあたり、SetTitleMatchMode, 3でahk_id *****を指定できるのですが、
ウインドウの誤爆回避として「ウインドウタイトル」と「ahk_id *****」同時指定したいのですが
一気に指定することできますか?
やはり、一つ一つ的を絞って行くしかないですかね?
839名無しさん@お腹いっぱい。:2013/10/21(月) 23:28:23.98 ID:CIjZ1wRs0
ahk_id ならIDなので一意なんで複数条件指定する必要は無いかと

ahk_class なら分からんでもないが
840名無しさん@お腹いっぱい。:2013/10/21(月) 23:46:03.80 ID:wBBKaaHj0
>>839
ご指摘ありがとうございました。まったくもってその通りです。
コピペばっかりしてたので、「ahk_id」か「ahk_class」かなんて確認してませんでした。
841名無しさん@お腹いっぱい。:2013/10/21(月) 23:55:31.91 ID:wBBKaaHj0
ちなみに、「ahk_class *****」を使う場合、>>838の質問どうなりますか?
842834:2013/10/22(火) 00:03:38.34 ID:wy4a26ms0
>>835 >>837
なるほど、他のソフトと連携させるという手もありますね
試してみたらfileloopでなんとかいけそうなのでやってみます
ありがとうございました
843名無しさん@お腹いっぱい。:2013/10/22(火) 00:25:08.87 ID:kCocJAl50
風呂で顔洗ってるうちに自己解決しました。
F5:: ;ahkが開いている時は、F5キーで上書き保存後にリロード
SetTitleMatchMode,RegEX
#IfWinActive,* .ahk
Send,^s
reload
#IfWinActive
return

これで動きました。
844名無しさん@お腹いっぱい。:2013/10/22(火) 01:25:06.72 ID:+0D5Zu5o0
>>843
解決したようだけど一応書いておく。
ウィンドウ指定ではワイルドカードは使えない。
設定変更して正規表現が使える。
845名無しさん@お腹いっぱい。:2013/10/22(火) 02:45:26.59 ID:ZsTM5otb0
どうでもいいけどそのコードだと常駐ahkと違うスクリプトの編集中も誤爆しない?
%A_ScriptName% に限定したほうがいい気がする
ああでもそうすると#includeファイル変更後のリロードができなくなるか

個人的には編集中ファイルのスクリプト実行はエディタに登録したほうが無難な気はする
自分は常駐以外の小物ahkもちょこちょこ作るので秀丸のF5押下にスプリクト起動を割り当ててる
846名無しさん@お腹いっぱい。:2013/10/22(火) 03:08:44.02 ID:kCocJAl50
>>845
あんま大物つくらないんでメモ帳で作ってたけど、そろそろエディタ入れたほうがいいかな。
誤爆については、むしろ常駐以外を編集してる時に適用したかったのでこれでいいのです。
常駐のみの時は
#IfWinActive,常駐.ahk
Send,^s
reload
#IfWinActive
return
でやっていたので。
847名無しさん@お腹いっぱい。:2013/10/22(火) 03:27:05.92 ID:ZsTM5otb0
いや、>843の例では常駐ahkがリロードされるだけで編集中のahkの実行には
ならないと思うんだけど、それでいいの?
848名無しさん@お腹いっぱい。:2013/10/22(火) 06:37:26.15 ID:LZmvaHAK0
>>844
その説明では多分わかってないよこの子
>>843ではワイルドカードのまんまの表記であって
正規表現ではちゃんと動かないといってあげないと

そもそもホットキーラベル以降に#IfWinActiveやSetTitleMacthModeしてること自体おかしいんだけど
849名無しさん@お腹いっぱい。:2013/10/22(火) 14:22:32.25 ID:q8koXane0
関数の引数が多いときに改行で見やすくすることはできませんか?
何か工夫の余地がないでしょうか
850名無しさん@お腹いっぱい。:2013/10/22(火) 15:48:56.76 ID:SlotYu+H0
>>849
そういう質問をする場合は、どんな引数を与えてるのかを書いた方がいい。
いまのコードを全部晒せば、引数ではなく別の受け渡し方法で解決できるかもしれないから。
851名無しさん@お腹いっぱい。:2013/10/22(火) 16:10:44.36 ID:MWOn8y/z0
それぞれ独立して常駐で動くいくつかの*.ahkを、
どれか一つに複数#Includeしてまとめること簡単に出来ます?
また、それぞれでトレイアイコン右クリックメニューに
1〜2行独自メニュー追加してるのでそれぞれちゃんと表示させたいです。
(位置はとりあえずどうでもいいです)

今はその複数の*.ahkを一つ(A.ahk)を除き、
全て別スクリプトとしてまとめたものを新しく作成(BCD.ahk)、
A.ahk内でBCD.ahkを#Includeしてやり過ごしてるんだけど、
個別に#Includeできるんならそうしたいと思ってるんです。
852名無しさん@お腹いっぱい。:2013/10/22(火) 18:11:43.90 ID:+0D5Zu5o0
>>849
2.1 コマンド・式の分割
ttp://ahkwiki.net/Scripts

個人的には改行するとスクリプト長くなって余計見にくい。
ソースコードエディタの機能シンタックスハイライトで色分けするのが一番いい。
ttp://ahkwiki.net/Tools
853名無しさん@お腹いっぱい。:2013/10/22(火) 18:53:34.31 ID:08HxP1s80
>>851
質問の意図がよく分かんないけど
1つずつIncludeしたらいいんじゃないの?
右クリメニューも再現されるだろ
初期化処理のところで躓いてるならIncludeする各ahkファイルでGoto 文末
854名無しさん@お腹いっぱい。:2013/10/22(火) 19:21:23.02 ID:ZsTM5otb0
>>851
現在すでにA+BCD で動いているならコンフリクトの問題はないってことだろうから
手間なく移行できるんじゃね
問題になるのはたぶん個別ファイル冒頭の初期化処理部分
それぞれinitルーチン化して、A.ahkの頭で呼んでやればいい
855名無しさん@お腹いっぱい。:2013/10/22(火) 20:51:19.38 ID:4BCg2wSW0
質問があります。
2バイト全角文字の変数から多分岐しているのですが、AHKでは一般的ではないでしょうか?。
暫く使用してみた感じでは、特に不具合等はないみたいなのですが、環境次第で問題あったりしますか?
よろしくお願いします。
856名無しさん@お腹いっぱい。:2013/10/22(火) 21:05:07.66 ID:ye5gJjr30
バージョンによっては2バイトで変数名書いたりしたらダメ
あとUTF-8とBOMつけて保存しないと文字化け起こす
857名無しさん@お腹いっぱい。:2013/10/22(火) 21:24:35.59 ID:4BCg2wSW0
>>856
使用しているバージョンはAutohotkey_L 1.1.13.0でした。
これからはUTF-8でBOM付きで保存するように気をつけます。
有難うございました。
858名無しさん@お腹いっぱい。:2013/10/22(火) 21:34:01.80 ID:MWOn8y/z0
>>853-854
サンクス。
なるほど、各スクリプトの冒頭部分が肝心のようですね。
もうちょっとtry & errorでガムバッテみます。

各スクリプトの中身をを晒そうかと思いましたが、
例え一部でもかなりの行数になるのでやめときました。
859名無しさん@お腹いっぱい。:2013/10/22(火) 21:35:09.22 ID:4BCg2wSW0
すみません、もう1つだけ質問があります。
エスケープキャラ(`)を違うものに変更したいのですが、どの記号がいいでしょうか?
ついこの前までは(?)を使用していたのですが、スクリプトを追加している内に
(?)を使用するスクリプトがある為、使えなくなってしまいました。
よろしくお願いします。
860名無しさん@お腹いっぱい。:2013/10/22(火) 22:07:57.66 ID:+0D5Zu5o0
>>859
多言語と同じように「\」等に変更するなら分かるが
それ以外なら変更する必要性がない
よく使われる記号にするのはデメリットしかない。
861名無しさん@お腹いっぱい。:2013/10/22(火) 22:14:13.45 ID:ye5gJjr30
記号は使わない。
ただ、自分で決めたルールが使えないと何やってるかわかんないとかいうことにならないためにコメントアウトでメモ書いとくのが一番わかり易いと思う。;これな
862名無しさん@お腹いっぱい。:2013/10/22(火) 22:26:26.32 ID:4BCg2wSW0
エスケープキャラの件、納得しました。
皆さん返信有難うございました。
863名無しさん@お腹いっぱい。:2013/10/22(火) 22:37:54.18 ID:08HxP1s80
>>858
テンプレにある専用アプロダにプラグイン形式のahkがあるから参考にしたらいいよ
まだあるか分からないけどワンショットモディファイアキーの奴とか
864名無しさん@お腹いっぱい。:2013/10/23(水) 21:47:16.15 ID:bCYYmm8h0
>>863
とても参考になった、サンクス。

try & errorを繰り返した末、とりあえず納得行くモノが完成したよ。
>>853>>854>>863、ご協力ありがとう。
865名無しさん@お腹いっぱい。:2013/10/23(水) 22:37:35.10 ID:X7KduWrz0
常駐ではなく、一度だけ有効なホットキーは作成出来ますか?
866名無しさん@お腹いっぱい。:2013/10/23(水) 22:49:47.96 ID:5tUCFr1n0
>>865
できます
867名無しさん@お腹いっぱい。:2013/10/24(木) 20:06:18.41 ID:JZhyDuiY0
変数の扱いで何時も填ってしまうのだが、
誰か、バカなワタシでも分かるように説明して下さい。

「=」とか「:=」とか「hoge」とか「%hoge%」とか、
同一スクリプトに混在してると、訳分からん状態に陥ってしまう。

ところで、このautohotkeyってautoitと同じプロジェクトチームで作ったんだよね?
なんでautoitと同じスクリプトの仕様で作らなかったのか不思議だ。
と言うより、何でどちらかに仕様統一して作らなかったのかが不思議だよ。
868名無しさん@お腹いっぱい。:2013/10/24(木) 20:12:44.95 ID:dDp5KK7Z0
ifとかの条件文では=は等しいを表す
:=は変数の中身を渡す。
hogeは変数名。%hoge%は変数の中身を使う

hogeという箱に10という数字が入ってる場合

%hoge%では10
hogeではhoge

になる

Aにhogeを:=したら10が入る
Aに%hoge%を=しても10が入る
Aにhogeを=したらhogeが入る

って認識だけどあってるよね?
869名無しさん@お腹いっぱい。:2013/10/24(木) 20:16:04.20 ID:D7B8v1Wf0
きっとautoitの書式を改良しようと思ったんだろ
870名無しさん@お腹いっぱい。:2013/10/24(木) 20:27:42.39 ID:nk7aUFqG0
何処かで見た記憶では、autohotkeyはautoitの分派だったような気がする。
871名無しさん@お腹いっぱい。:2013/10/24(木) 20:35:11.11 ID:lYfSYjLI0
WikipediaのAutoHotkeyの記事を見てくるといいと思うよ
872名無しさん@お腹いっぱい。:2013/10/24(木) 20:46:29.48 ID:JZhyDuiY0
>>868
説明ありがとう。
っていうか、その説明をもっとかみ砕いて欲しかった…
例えば、「こういう場面ではこの表記しかできない…」とかね^^(情報後出しすまない)
いつの間にか「あれっ?どうだったっけ?」となるもんで^^

>>869-870
なるほど
873名無しさん@お腹いっぱい。:2013/10/24(木) 20:47:34.88 ID:s0WgRv3E0
>>868
見にくすぎるので解説だけ書いておく
答え合わせは自分でしてくれ。
------------------------------------
=  文字列の代入 変数は展開されない

:=  式の代入(計算結果) 変数は展開される

%文字列%  変数展開
------------------------------------
Ver = %AAA% ;同じ意味
Ver := AAA ;同じ意味

Ver = 1 + 2 ;結果「1 + 2」
Ver := 1 + 2 ;結果「3」

AAA = 1
Ver = %AAA% + 2 ;結果「1 + 2」
Ver := AAA + 2 ;結果「3」
874名無しさん@お腹いっぱい。:2013/10/24(木) 20:50:00.04 ID:s0WgRv3E0
どうでもいい訂正w
Ver× Var○
875名無しさん@お腹いっぱい。:2013/10/24(木) 21:01:48.73 ID:s0WgRv3E0
間違えやすい部分 関数に関して
関数の呼び出しでは()内は式として扱われる
文字列として扱う場合は ”” で囲う必要がある

Add(AAA,"AAA") ;変数展開 と 文字列
876名無しさん@お腹いっぱい。:2013/10/24(木) 21:18:58.81 ID:dDp5KK7Z0
>>873
あ、サンクス、そうか:=じゃないと計算適応されなかったんだ・・・
877名無しさん@お腹いっぱい。:2013/10/24(木) 21:31:40.88 ID:JZhyDuiY0
>>873-874
ありがとう。

つまり、
関数1("AAA")

hensu := "AAA"
関数1(%hensu%)
は同じで、
hensu = AAA
関数1(%hensu%)
と表記しても良い。

逆に、
関数1(hensu)
という表記は間違い。

で、合ってます?
878名無しさん@お腹いっぱい。:2013/10/24(木) 21:51:55.38 ID:JZhyDuiY0
すいません、間違ってました。

hensu = 123 + 456
msgbox %hensu% ;「123 + 456」と表示

hensu := 123 + 456
msgbox %hensu% ;「579」と表示

kansu("AAA") ;「AAA」と表示

hensu := "AAA"
kansu(%hensu%) ;空白表示(間違った記述)

hensu = AAA
kansu(%hensu%) ;空白表示(間違った記述)

hensu := "AAA"
kansu(hensu) ;「AAA」と表示

hensu = AAA
kansu(hensu) ;「AAA」と表示

kansu(string)
{
msgbox %string%
}

これが正解ですよね。
879名無しさん@お腹いっぱい。:2013/10/24(木) 21:59:50.16 ID:s0WgRv3E0
>>877
正解だが補足がある。
式でも %Var% による展開は有効なので二回展開することになる。
間違った記述というわけではない。

Add(Var){
Return Var
}
BBB = 二重展開
AAA := "BBB"
MsgBox % Add(%AAA%)
880名無しさん@お腹いっぱい。:2013/10/24(木) 22:00:54.61 ID:s0WgRv3E0
訂正 >>878
881名無しさん@お腹いっぱい。:2013/10/24(木) 22:03:40.09 ID:s0WgRv3E0
間違えまくりw
訂正

Add(Var){
Return Var
}
BBB = 二重展開
AAA = BBB
MsgBox % Add(%AAA%)
882名無しさん@お腹いっぱい。:2013/10/24(木) 22:43:45.08 ID:JZhyDuiY0
>>879
あれ?()の中で「%付き(%AAA%)」使えるの?
う〜む、複雑すぎてもう限界かも…
他にif文でも同じ意味なのに数種類の表記方法有るみたいだし…

あー、autoitにartohotkeyメイン機能のkeyremap機能有れば最高だったのになぁ…
883名無しさん@お腹いっぱい。:2013/10/24(木) 23:28:10.00 ID:h2YGK7dk0
代入に = と:= どっちも使えるから最初は分かりにくいのかもね
だったらしばらく:=だけ使えばいいよ。関数の引数の記述でも迷わないで済むし

     文字列リテラル               変数
=    ""で括らずそのまま記述 %%で括る or 頭に%「半角スペース」
:= ""で括る                    変数名をそのまま記述

こんだけ理解してりゃ弄ってる内に覚えるけどね
884名無しさん@お腹いっぱい。:2013/10/24(木) 23:29:20.29 ID:riSXEzb90
>878の例でいうと

AAA = BBB
hensu = AAA
kansu(%hensu%) ;「BBB」と表示


%hensu% が展開されて

kansu(AAA)

と書いたことになってさらに変数AAAが展開されて「BBB」と表示される
885名無しさん@お腹いっぱい。:2013/10/24(木) 23:36:44.32 ID:h2YGK7dk0
>>879
関数Addに変数AAAの中身を渡している→Add("BBB")

で% (%「半角スペース」)はまた別で、その後の式を展開しますよ〜ってものなんで
関数Addの返り値、変数「Var」を展開したBBBがMsgboxで表示される
886名無しさん@お腹いっぱい。:2013/10/25(金) 00:12:18.23 ID:QeOGckb30
>>883
すまないが、もう一度同じレス希望。
887名無しさん@お腹いっぱい。:2013/10/25(金) 00:43:00.08 ID:lkLcAdrX0
>>886
イミフ
888名無しさん@お腹いっぱい。:2013/10/25(金) 01:15:00.10 ID:QeOGckb30
>>883の中段のレスが分かり難いから、
書き方を変えてもう一度レス欲しい、
という意味。
889名無しさん@お腹いっぱい。:2013/10/25(金) 01:22:58.78 ID:lkLcAdrX0
上から目線で書き直せかよw
890名無しさん@お腹いっぱい。:2013/10/25(金) 01:36:36.14 ID:9P5SCcXx0
hensu%hensu2% := 1 + 1
とか使えるようになると楽しくなるよね
891名無しさん@お腹いっぱい。:2013/10/25(金) 02:29:17.43 ID:79HbbEjQ0
連想配列のほうがいいとは思うが

hensu[hensu2] := 1 + 1
892名無しさん@お腹いっぱい。:2013/10/25(金) 07:33:43.00 ID:j5djMaiI0
hensu%hensu2%の方が記述は楽でわかりやすいんだけど
hensu[hensu2]は% (%「半角スペース」)でも使えるしForループ使えるし汎用性高いんだよな
悩みながら併用してるわ
893名無しさん@お腹いっぱい。:2013/10/25(金) 10:36:40.00 ID:dyUyLkUE0
Left::
   CoordMode,Mouse,Screen
   MouseGetPos,X,Y
   CoordMode,Mouse,Relative
   MouseClick,LEFT,100,150,,0  ;X100 Y150をクリック
   CoordMode,Mouse,Screen
   MouseMove,X,Y,0
   return
Right::
   CoordMode,Mouse,Screen
   MouseGetPos,X,Y
   CoordMode,Mouse,Relative
   MouseClick,LEFT,200,150,,0  ;X200 Y150をクリック
   CoordMode,Mouse,Screen
   MouseMove,X,Y,0
   return

こういうコードを作りました。対象はゲームです。
ですが、LeftとRightを高速で連打してると、いつの間にか
マウスがX100 Y150またはX200 Y150の位置に居座り
元の位置に帰って来ないようになります。
確実に元の位置に戻すにはどう工夫すればいいのでしょうか?
894名無しさん@お腹いっぱい。:2013/10/25(金) 11:25:59.55 ID:NTgBtw/p0
ああ、視点変更をキーでやりたいのかなコレは

いつの間にかってことはその前に何かの操作を挟んで割り込みが発生してるとかそういうのじゃないかな
ログ確認してみてはどう?
895名無しさん@お腹いっぱい。:2013/10/25(金) 11:58:56.97 ID:dyUyLkUE0
>>894
ありがとう
Left(Right)キーで任意の座標をクリックして、元の座標に戻るという単純なことをしたいです
ログを確認すると
MouseClick,left,100,150,,0 (0.03) のあと
   CoordMode,Mouse,Screen
   MouseMove,X,Y,0
   return
が実行されずにRightキーのスレッドが始まってる箇所がありました
高速に連打すると、一つのスレッドが終わるまえに次のホットキーを押すと
途中でもそのスレッドが終わってしまうんでしょうか
896名無しさん@お腹いっぱい。:2013/10/25(金) 12:57:21.13 ID:QeOGckb30
ヒントになるかどうか分からないが…

「MouseGestureL.ahk」Helpより

>4.3.4.カーソル移動の発生
>「MG_Move()」関数を使用すると、マウスカーソルを指定座標に移動できます。
>引数に横・縦の座標を指定するとその座標に、引数を省略するとジェスチャ開始位置に移動します。
>
>「RB_L」のようにカーソルを移動するごとに繰り返し発生するジェスチャは、
>連続して実行し続けるといずれ画面端に到達してしまうため、連続実行できる数に限りが有ります。
>しかし、動作の後に「MG_Move()」を付ければ、動作が実行される度にカーソル位置が元に戻るため、
>ボタンを押したままいくらでも繰り返し実行できます。

【MouseGestureL.ahkの1810行目から】
--------------------------------------------------
MG_Move(x=-1,y=-1){
global
CoordMode,Mouse,Screen
SetMouseDelay,-1
if(x=-1){
x:=MG_X
}
if(y=-1){
y:=MG_Y
}
BlockInput,On
MouseMove,%x%,%y%,0
BlockInput,Off
}
--------------------------------------------------
897名無しさん@お腹いっぱい。:2013/10/25(金) 13:08:04.84 ID:NTgBtw/p0
Blockinput

なるほどそういうのもあるのか
898名無しさん@お腹いっぱい。:2013/10/25(金) 16:15:32.40 ID:c5Vrmgjx0
Gui, Destroyについてお聞きします。
以下のスクリプトで、Gui, Destroyをした場合、Newで作成したGuiがDestroyされず困っています。
解決策をご教示下さい、お願いします。

a::
Gui, Destroy
Gui, Add, text, w200 h200,sample1
Gui, Show

Gui, New
Gui, Add, text, w100 h100,sample2
Gui, Show
return
899名無しさん@お腹いっぱい。:2013/10/25(金) 17:24:52.57 ID:dyUyLkUE0
>>896
ありがとうございます!なるほど

今回のケースではSuspendでもいいのかな?と思いましたが
BlockInputとの使い分け(というか違い)がいまいちよく分かっていません^^;
900名無しさん@お腹いっぱい。:2013/10/25(金) 20:06:43.99 ID:lkLcAdrX0
>>898
3通りやり方がある

;--Gui, New を利用した場合--
F3::
Gui, Destroy
Gui, Add, text, w200 h200,sample1
Gui, Show

Gui, ラベル:Destroy
Gui, ラベル:New
Gui, Add, text, w100 h100,sample2
Gui, Show
Return

;--その他 1--
F4::
Gui, Destroy
Gui, Add, text, w200 h200,sample1
Gui, Show

Gui, ラベル:Destroy
Gui, ラベル:Add, text, w100 h100,sample2
Gui, ラベル:Show
Return
901名無しさん@お腹いっぱい。:2013/10/25(金) 20:07:29.41 ID:lkLcAdrX0
;--その他 2--
F5::
Gui, Destroy
Gui, Add, text, w200 h200,sample1
Gui, Show

Gui, ラベル:Default
Gui, Destroy
Gui, Add, text, w100 h100,sample2
Gui, Show
Return
902名無しさん@お腹いっぱい。:2013/10/25(金) 20:44:54.38 ID:QeOGckb30
>>899
Suspendはよく分からないけど、BlockInputは文字通り
入力装置からの入力をブロックする機能だよ。

つまり、BlockInput,OnとBlockInput,Offに挟まれた区間は、
マウスやキーボードからの入力が出来なくなるから、
人間の不注意で起こりうる"誤爆"を防止できる。(C-A-Dのみ有効だったと思う)
903名無しさん@お腹いっぱい。:2013/10/25(金) 22:06:54.29 ID:C0oF/CVD0
>>900>>901
なるほど、ラベルを付けて別GUIとして処理するのですね。
結局Newにラベル付けする事で、無事解決しました。
有難うございます、今後ともよろしくお願いします。
904名無しさん@お腹いっぱい。:2013/10/25(金) 22:58:05.91 ID:dyUyLkUE0
>>902
ありがとうございます!
よく理解できました
905名無しさん@お腹いっぱい。:2013/10/26(土) 00:31:19.62 ID:Clsf+Y8x0
Array := Object()
array[1] := "abcd"
array[2] := "wxyz"

Loop % array.MaxIndex()
MsgBox % array[A_Index]

For index, value in array
MsgBox % "Item " index " is '" value "'"

↑は問題ないんだけど、
↓の場合、「Loop」と「For」の部分はどう書いたらいいでうか?
helpには見あたらないのです。

array[1, 1] := "11"
array[1, 2] := "12"
array[1, 3] := "13"
array[2, 1] := "21"
array[2, 2] := "22"
array[2, 3] := "23"

とりあえず、直接以下のように指定すれば問題なく見れます。
MsgBox % array[1][2]
MsgBox % array[2][3]
906名無しさん@お腹いっぱい。:2013/10/26(土) 00:53:22.28 ID:jYLp/q480
ループを二重にすればいいんじゃないの
ただA_Indexは内側のしか取れないから外側のを参照するために保存しとかないとダメだね
Forの方がいいかもね

For, i in array
For, j in array[i]
msgbox, % array[i,j]
907名無しさん@お腹いっぱい。:2013/10/26(土) 02:02:53.00 ID:KRpugKqA0
Loopで表示させた項目を無効化(選択不能に)させることってできる?
これだとDisableのせいでエラーになっちゃうんだけど

Menu, test, Add, Test
Menu, test, Add
   Loop, parse, var, `n, `r
   {
      Menu, test, Add, %A_LoopField%, LoopTest
      Menu, test, Disable, %A_LoopField%
   }
Menu, test, Show
908名無しさん@お腹いっぱい。:2013/10/26(土) 11:41:21.77 ID:4NXTHFcy0
guicontrol?
909名無しさん@お腹いっぱい。:2013/10/26(土) 12:12:24.59 ID:Clsf+Y8x0
>>906
なるほど分かりました、ありがとう。
とりあえず、j のMaxIndex取得する関数も作ってみました。2次元配列専用ですけど。

test_Array := Object()
test_Array[1, 1] := "11"
test_Array[1][2] := "12"
test_Array[2][1] := "21"
test_Array[2, 2] := "22"

MaxIndex_i := test_Array.MaxIndex()
MaxIndex_j := Get_MaxIndex_j(test_Array)
MsgBox, test_Array[i, j] の i と j のMaxIndexは: %MaxIndex_i% , %MaxIndex_j%

For i in test_array
For j in test_array[i]
msgbox, % "test_Array[" i ", " j "]は: " test_array[i,j]

Get_MaxIndex_j(array)
{
j := 0
For i in array
For j in array[i]
if i = 1
j += 1
if i > 1
return j
}

array[i][j]とarray[i, j]両方使えるみたいだけど、どう使い分けるんだろ?
910名無しさん@お腹いっぱい。:2013/10/26(土) 13:28:23.94 ID:Clsf+Y8x0
>>909
Get_MaxIndex_j()関数が
何か間違ってるような気がするので
手直しお願いできますか?
911名無しさん@お腹いっぱい。:2013/10/26(土) 19:29:50.55 ID:Clsf+Y8x0
何で結果が違うんでしょうか?

Get_MaxIndex_j(array)
{
Index_j := 0
For i in array
For j in array[i]
if i = 1
Index_j += 1
if i > 1
return Index_j
}



Get_MaxIndex_j(array)
{
Index_j := 0
For i in array
if i > 1
return Index_j
For j in array[i]
if i = 1
Index_j += 1
}
912名無しさん@お腹いっぱい。:2013/10/26(土) 23:26:41.34 ID:pToxjc1l0
自分で考えろうぜぇ
913名無しさん@お腹いっぱい。:2013/10/28(月) 19:26:51.21 ID:fv4Tu7mS0
xboxコントローラーのガイドキーにコマンドを割り当てることは可能ですか?
可能ならjoytokeyをやめてautohotkeyで設定しようとおもうんですが、このページを見る限り難しいでしょうか
http://www.autohotkey.com/board/topic/96738-capturing-guide-button/
914名無しさん@お腹いっぱい。:2013/10/28(月) 20:01:31.32 ID:alJcCjXi0
>>913
使えるかどうかは自分で調べればいい

#InstallKeybdHook フックを有効にしたスクリプトで KeyHistory で押されたキーを調べる。
調べたキー名/仮想キーコード/スキャンコードで割り当て

割り当てても動作しない/見つからない場合
joytokeyで「F13〜F24」などの仮想キーに割り当て、それに対してAutoHotkeyで割り当てれば良い。
915名無しさん@お腹いっぱい。:2013/10/28(月) 20:19:04.73 ID:K2Pp8SLS0
joytokeyで上下左右を十字キーに割り当ててもそれはNumpadupとかのテンキー側みたい(´・ω・`)
誤動作起こすのどうにかしたいな・・・
916名無しさん@お腹いっぱい。:2013/10/28(月) 22:25:36.70 ID:AK+EQmug0
「Xbox 360 ワイヤレス コントローラー用デバイス ドライバ」を併用して
×ボタンも問題なく使えてる。
917名無しさん@お腹いっぱい。:2013/10/29(火) 04:37:48.21 ID:j6mMn9Rr0
マウスドラッグでAuto copyしてくれるようなものはあるでしょうか?
918名無しさん@お腹いっぱい。:2013/10/29(火) 04:48:27.69 ID:owy9nhhX0
>>917
このソフトは自分でスクリプト書くのがメインだぞ
できるできないでいえば、できる
919名無しさん@お腹いっぱい。:2013/10/29(火) 12:10:47.48 ID:wS8oivm30
つくってみたことはあるけどドバドバクリップボードにコピーして使いにくかったから結局ミドルクリックでコピーに落ち着いた

ヒントだけ書くとLbutton down、Lbutton up
それぞれMousegetposしてXY座標を比較してドラッグかどうかを判定、分岐してクリップボードにコピーすればできる
920名無しさん@お腹いっぱい。:2013/10/29(火) 16:39:09.37 ID:x/3LoeWF0
マウスホイールでChromeのタブ切り替えをしたいです
PostMessage, 0x111, 34016
PostMessage, 0x111, 34017

で以前切り替えできていたのがChromeのバージョンが変わり
できなくなってしまいました

Send,^{Tab}ではなくて
非アクティブ状態でもタブ切り替えできるようにするにはどう書けばいいんでしょうか?
921名無しさん@お腹いっぱい。:2013/10/29(火) 16:45:06.88 ID:ROoSp2Dr0
Controlsendをつかおう。
922名無しさん@お腹いっぱい。:2013/10/29(火) 22:35:00.02 ID:x/3LoeWF0
ありがとうございます!
923920:2013/10/30(水) 01:31:53.46 ID:6Pa6N45j0
MouseGetPos,,,window
ControlSend,ahk_parent,^{Tab},ahk_id %window%

これで動かないのですが・・・どこが間違えてるんでしょうか?
924名無しさん@お腹いっぱい。:2013/10/30(水) 01:45:51.35 ID:fVgtm4t00
>>923
アプリによって挙動が違うから
ahk_parent 有り無しで試せばいい。
925名無しさん@お腹いっぱい。:2013/10/30(水) 08:17:21.47 ID:PmZRugdv0
ControSend使うなら該当Controlをちゃんと指定した方がいいよ
926名無しさん@お腹いっぱい。:2013/10/30(水) 09:46:13.74 ID:6Pa6N45j0
>>924
ahk_parent無しでも動きませんでした
>>925
該当Controlはどのように取得できるのでしょうか?
WindowSpyで見るとタブ部分のClassNNは空欄になっています
927名無しさん@お腹いっぱい。:2013/10/30(水) 12:11:16.70 ID:PmZRugdv0
Forcusのありそうなコントロール(ブラウザだったらブラウズ描画画面)を当たりつけて試してみたら?
もしくはMouseGetposでコントロールのhWnd取得して直指定するか
928名無しさん@お腹いっぱい。:2013/10/30(水) 12:13:03.92 ID:PmZRugdv0
×Forcus
○Focus
929名無しさん@お腹いっぱい。:2013/10/30(水) 12:16:23.80 ID:qENe/ViY0
Menu, MenuName, Add , MenuItemName, Label
loop, 0
{
Label:
MsgBox, OK
return
}
〜〜〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜〜〜
Gosub,Label

Menu、HotkeyやSetTimerでは上のようにループ囲いのラベル割り当ては問題ない
けど同じようにGotoかGosubにラベルを割り当てると「Error: A Goto/Gosub must not jump into a bleck that doesn't enclose it.」ってエラーになる

なぜGotoとGosubだけこんな仕様なんだろうかわからん
930名無しさん@お腹いっぱい。:2013/10/30(水) 13:16:40.83 ID:dI7zjDAS0
ローカルラベル扱いなんじゃないの?
むしろループの中に飛べる方が本来はおかしいしできたとしてもやるべきじゃない
931名無しさん@お腹いっぱい。:2013/10/30(水) 13:55:13.20 ID:hx0u5Jd30
どうしてもloopさせたいならgotoやsettimerを組み合わせてループさせる方が安全かもな
932名無しさん@お腹いっぱい。:2013/10/30(水) 17:54:45.00 ID:fVgtm4t00
>>926
改めて確認しても全く問題なく動く
余計なコードが混ざってる等の単純なミスかそっちの環境書いてみれば?
------------------------------------------
Win7 x64
AutoHotkey AutoHotkey_L Ver1.1.13.01 Unicode
Google Chrome 30.0.1599.101
------------------------------------------
F1::
MouseGetPos,,,window
ControlSend,,^{Tab},ahk_id %window%
Return
933名無しさん@お腹いっぱい。:2013/10/30(水) 18:18:37.57 ID:6Pa6N45j0
>>932
ありがとうございます
環境については全く同じです(※AHKLは32ビット版です)

↓だけ書いたahkファイルを新規作成してこれだけ実行してみました
--------------------------------------------------------------------
#IfWinActive, ahk_class Chrome_WidgetWin_1
F1::
MouseGetPos,,,window
ControlSend,,^{Tab},ahk_id %window%
Return
--------------------------------------------------------------------
F1を押すと{Tab}は送られているらしくリンクを順番に選択していきますが
やはりタブ切り替えにはなりません・・・
手動でキーを押すと切り替えはできます

Ctrlが送られてないんですかね^^;
試しに
ControlSend,,^f,ahk_id %window% ;ページ内検索
と書いてみたんですがやはり何も起こりません
どういう原因が考えられるんでしょうか
934名無しさん@お腹いっぱい。:2013/10/30(水) 18:41:00.36 ID:fVgtm4t00
>>933
別のキーボードショートカットを試してみては?(Ctrl+PageDown)
Ctrl+Tab だとカーソル選択位置によっては画面内のフォーカス移動をしていたので
以下のスクリプト方が安定して動作した。
----------------------------------------------------
Ctrl+Tab または Ctrl+PageDown - 次のタブに切り替えます。
ttps://support.google.com/chrome/answer/157179?hl=ja
----------------------------------------------------
#IfWinActive, ahk_class Chrome_WidgetWin_1
F3::
MouseGetPos,,,window
ControlSend,,^{PgDn},ahk_id %window%
Return
935名無しさん@お腹いっぱい。:2013/10/30(水) 18:43:29.89 ID:fVgtm4t00
あとはSetKeyDelayの問題かも?
936名無しさん@お腹いっぱい。:2013/10/30(水) 18:56:03.98 ID:6Pa6N45j0
>>934
本当にありがとう
やはり手動でCtrl+PageDownを押すとタブ切り替えできるのに
AHKLだと単なるPageDownになってしまいます

---------------------------------
#IfWinActive, ahk_class Notepad
F1::
MouseGetPos,,,window
ControlSend,,^p,ahk_id %window%
return
---------------------------------
メモ帳にF1を何回か押していると 「p」というテキストが入力される場合と
たまに印刷ダイアログが出てくる場合が混在します
937名無しさん@お腹いっぱい。:2013/10/30(水) 19:12:36.81 ID:fVgtm4t00
>>936
;SetKeyDelay,10,-1 ;反応しないなら遅くする(初期値)
#IfWinActive, ahk_class Notepad
F1::
MouseGetPos,,,window
ControlSend,,{Ctrl Down}p{Ctrl Up},ahk_id %window%
Return
#IfWinActive
938名無しさん@お腹いっぱい。:2013/10/30(水) 19:32:56.81 ID:fVgtm4t00
あとは #InstallKeybdHook でフックを使う
939名無しさん@お腹いっぱい。:2013/10/30(水) 19:38:10.00 ID:6Pa6N45j0
>>937
まさにそれでした!
2番目のパラメーターを10にしたら完全に動くようになりました
ディレイを入れてる分 若干カクカクするように感じますがこれで行くことにします

環境が同じなのに
ディレイを入れなくても問題ないケースと
ディレイを入れないと問題が出るケースもありうるんですね

ホントにほんとにありがとうございました!
940名無しさん@お腹いっぱい。:2013/10/30(水) 20:42:18.33 ID:qENe/ViY0
>>931>>931
別言語だとラベルにもローカルとかグローバルとかあるんか・・・
ループをさせたいわけじゃなくて、MenuとかGUIとかでラベルを使う時すぐ下にあった方が個人的に書きやすい
でそこのラベルを別のとこからちょっとGosubで使いたいな、って時に使えなかったってだけ

でもなんか別のやり方を見つけたほうがよさそうだな
941名無しさん@お腹いっぱい。:2013/10/30(水) 22:56:51.73 ID:DzStl3Rj0
>>940
ホットキーラベルの直後とかにラベル貼っつけるのは可能よ
んでそれをほかから呼び出すのも可能
関数だと競合を避けるためローカル変数に強制的になるから一度globalコマンドでどれをグローバル変数とするか書かないいといけない

loop内部にラベルはさすがにやったことねーっす
942名無しさん@お腹いっぱい。:2013/10/31(木) 00:08:45.13 ID:ijxCkC1k0
>>940
他言語のことは知らんけどahkの場合、関数内ラベルは
ローカル扱いだったはず
ahkのgotoはgosubコマンドがサポートされる前の名残で、
あんま積極的に使うコマンドじゃないと思ってる
エラー発生時点で終了処理後abortしたいときは関数の尻の方にexitラベルつけてgotoしたりもするけど
見境なくジャンプすると処理体系追えなくなるしバグの元になりやすい
943名無しさん@お腹いっぱい。:2013/10/31(木) 11:48:17.27 ID:G8+bTxP20
>>940
貴様・・・ウディタリアンだな!?
944名無しさん@お腹いっぱい。:2013/10/31(木) 13:18:40.05 ID:sja73j/90
別のスクリプトから、起動中のスクリプトの指定ラベルに飛びたいんですけど
良い方法ないですかね?
945名無しさん@お腹いっぱい。:2013/10/31(木) 13:50:46.91 ID:u8Nc4muO0
指定ラベルを「実行」したいだけならば、
なんらかのアクションを伝えればできる。

ウインドウメッセージで送るとか、
特定のファイルを常時監視しておき、片方から指示命令を書き出して、
戻り値が必要なら、その値をファイルに書き出して終わらせるとか
946名無しさん@お腹いっぱい。:2013/10/31(木) 14:47:04.59 ID:dS38ZNxf0
Pidからexeのフルパスって取得できませんか?
947名無しさん@お腹いっぱい。:2013/10/31(木) 15:19:53.42 ID:nR24qSts0
できるよ
948名無しさん@お腹いっぱい。:2013/10/31(木) 19:54:08.91 ID:hwGpwtIT0
LButton & WheelDown:: 〜処理

のように、同時多しリマップを1つ書いただけで、
LButton が単体の動作をしなくなってしまいました・・・。

クリックしながらホイールダウンでウィンドウ最小化 を
実現しようとしているのですが、
やはり、F13以上の普段使用しないキーを使う以外の方法はないのでしょうか?
949名無しさん@お腹いっぱい。:2013/10/31(木) 20:50:25.41 ID:Lex8sW3D0
マウスジェスチャーツール総合スレで質問したら誘導されてこっちに来ました。

質問です。
MGL.ahkにpluginスクリプトを追加して使ってるのですが、
pluginスクリプトを複数入れる場合、それぞれのスクリプトで変数名が
ダブらない名前にしないとそれぞれのスクリプトがまともに動かなくなります。
関数の引数に於いても同様なので手直しが面倒です。
こういうのはどうしようもないのですか?
950名無しさん@お腹いっぱい。:2013/10/31(木) 21:37:59.75 ID:p52CQ+1T0
>>949
引数ってのは実引数を指してるのかね?
何れにしろプラグインでサブルーチンじゃなく、関数を使って
グローバル変数を使わないように書けばいい
もちろん関数名とかラベルは被っちゃダメだけどな
951名無しさん@お腹いっぱい。:2013/10/31(木) 21:46:39.81 ID:1sfExYBQ0
プラグインならできるだけ関数内で処理を終わらせるってのと

変数名_スクリプト名(プラグイン名)

みたいな書き方で統一すると自作プラグインとか拾い物プラグインで競合しなくていいよ
かなり冗長にはなってしまうけど、どうせエディターの入力補助使うだろうし
952名無しさん@お腹いっぱい。:2013/10/31(木) 22:14:18.06 ID:Lex8sW3D0
>>950-951
サンクス。
大変参考になりました。
953名無しさん@お腹いっぱい。:2013/10/31(木) 23:16:52.92 ID:rANQyHVJ0
>>948
LButtonを最初に持ってくるのが良くないんじゃね
ホイール動作は、Ctrl+Tab や Ctrl+Alt+Tab 、音量調整とかに使うのが一般的だと思う
ウィンドウ最小化は通常のジェスチャーに組み込めばいいじゃん
自分は8方向だから少数派だと思うけど、右+/down でウィンドウ最小化
右+/up で最大化・元に戻すのトグル、右左+/down で全てのウィンドウを最小化って感じ
954名無しさん@お腹いっぱい。:2013/11/01(金) 01:07:53.02 ID:2/bHBSXe0
>>948
コンビネーションキーの場合、一つ目のキー自体のもともとの機能は無効化される。
4.2 コンビネーションキー ttp://ahkwiki.net/Hotkeys

通常の修飾キー以外とWheel系を組み合わせるのはやめた方がいいかも
GetKeyStateで入力がうまく取れないから(自分の環境だけ?)
↓動くけどスクロールが若干ぎこちないかも。

WheelDown::
If GetKeyState("LButton","P")
   Send,#d
Else
   Send,{WheelDown}
Sleep,40 ;キーリピート調整
Return

※インデント全角スペースなので注意
955名無しさん@お腹いっぱい。:2013/11/01(金) 01:08:35.46 ID:5bgy22O10
~LButton & WheelDown::
956名無しさん@お腹いっぱい。:2013/11/01(金) 01:10:48.39 ID:2/bHBSXe0
>>955
なるほどw
余計なことしてたw
957名無しさん@お腹いっぱい。:2013/11/01(金) 07:04:41.18 ID:4I5JmmKl0
>>953, 954, 955
皆様ありがとうございました。
>>955さんの書き方で解決できそうです。
~とか、こんなに使える修飾を今初めて知りました・・・w
958名無しさん@お腹いっぱい。:2013/11/01(金) 15:16:50.78 ID:t/Q7qez30
MGL.ahkで「マウス下のウィンドウにスクロールを送る」という機能を
実現するにはどうすればいいですか

今まではWheelAccel使ってましたが加速は要らないので・・・
959名無しさん@お腹いっぱい。:2013/11/01(金) 15:44:52.37 ID:5bgy22O10
WheelAccelの加速部削って移植したらいいんじゃね

簡易でいいならPostMessageでWM_MOUSEWHELLをマウス下のコントロールに投げればいい
FireFoxとか制御が独特のアプリでは動かなくなるけど

流行らせるページ跡地 WheelRedirect
http://ahk.xrea.jp/myscripts/WheelRedirect.zip
960名無しさん@お腹いっぱい。:2013/11/01(金) 17:23:03.56 ID:t/Q7qez30
>>959
ありがとうございます
WheelRedirectがWheelAccelの加速部なし版と考えていいんですね
961名無しさん@お腹いっぱい。:2013/11/01(金) 17:35:11.17 ID:5bgy22O10
違うけど
拡張全部そぎ落として一番のコア部分がそれ
先に書いたように行儀の悪い一部のソフトで動かなかったりマルチディスプレイで問題が出たりする
962名無しさん@お腹いっぱい。:2013/11/01(金) 17:41:07.36 ID:t/Q7qez30
行儀の悪い一部のソフトでもマルチディスプレイでもちゃんと動くようにするなら
WheelAccelをカスタマイズするのがいいんですかね
963名無しさん@お腹いっぱい。:2013/11/01(金) 17:45:17.69 ID:htAm90tE0
>>960
つか、MGLのヘルプの4.3.3に載ってるんだが…
もっとも、この方法も跡地のスクリプトも、どっちも満足できなかったけどね。環境のせいかもしれんが
スクリプト書けないから何を修正すればいいかはさっぱり分からんのだけどさw
ホイールリダイレクトのソフトはたくさんあるけど、結構複雑なんだろうなーという感想しか出ないw
964名無しさん@お腹いっぱい。:2013/11/01(金) 19:56:28.95 ID:vxpVQSIX0
ahk付属のテキストエディタSciTEは他のエディタ使うより何かと便利なので重宝してるんだけど、
InternalAHK.exeとかいう曲者のせいか起動が非常に遅く、たまにイラッと来ること有る。

そこで、このInternalAHKをSciTEから切り離したい。
と言うか、とにかくこの起動の遅さを何とかしたいんだけど、何か手はある?
965名無しさん@お腹いっぱい。:2013/11/01(金) 21:02:25.65 ID:vxpVQSIX0
>>964に追加
今、ahkでツールチップだけ表示するスクリプトをexe化してInternalAHK.exeと入れ替えてみたんだが、
起動のスピードはさほど変わらなかった…この遅さは何が原因なんだろ?
966名無しさん@お腹いっぱい。:2013/11/01(金) 21:31:01.67 ID:t/Q7qez30
>>963
ありがとうございます。
やはり専用ソフトでホイールリダイレクトしたほうがいいと思うのですが
ウィンドウごとの細かいカスタマイズができるAHKはやはり便利ですよね
優れたAHKスクリプトが公開されるといいのですが・・・
967名無しさん@お腹いっぱい。:2013/11/01(金) 22:13:28.41 ID:2/bHBSXe0
>>966
無いものは作ればいい
むしろ作る事が楽しいと思うのだがw
968名無しさん@お腹いっぱい。:2013/11/01(金) 22:39:09.30 ID:l5KuKhvC0
>>966
ヘルプの3.14の中に設定があるよ
ホイール操作をターゲットコントロールにリダイレクト
969名無しさん@お腹いっぱい。:2013/11/01(金) 22:42:02.29 ID:hMrIP4Lx0
サイト見ながら作ってみたんですがインプットボックスでキャンセル押してもwikiに飛んでしまいます
どこが間違ってるのか教えて頂けないでしょうか

vk1Dsc07B & W
InputBox, UserInput, Wikipedia Search, Please enter a keyword, , 200, 100
If ErrorLevel<>0
Run, "C:\Program Files (x86)\Firefox\firefox.exe" "http://ja.wikipedia.org/wiki/Special:Search?sourceid=Mozilla-search&search=%UserInput%" ;ブラウザを起動する
else
MsgBox, CANCEL was pressed
return
970名無しさん@お腹いっぱい。:2013/11/01(金) 22:47:39.32 ID:HD8Tm7iI0
キャンセル押されるとErrorLevelに「1」が格納されるから
971名無しさん@お腹いっぱい。:2013/11/01(金) 22:53:45.63 ID:hMrIP4Lx0
>>970
ありがとうございます 理解できました
972名無しさん@お腹いっぱい。:2013/11/01(金) 23:04:13.77 ID:t/Q7qez30
>>967-968
やってみたらできました・・本当にありがとうございます
Firefoxも問題なくスクロールできています
973名無しさん@お腹いっぱい。:2013/11/02(土) 06:23:36.59 ID:KVXP/kwo0
マウス直下にあるウィンドウに
Windows7のショートカット(縦に最大化 Win + Shift + ↑)を
送る処理を書いたのですがうまく動きません。

MouseGetPos, , , WinHdl, ,
ControlSend, , #+{Up}, ahk_id %WinHdl%

どうも#キーとの同時押しができないみたいです。
上記の場合、{Up} キーが送信できていません。

#+{Up} を +{Up} にした場合、正常に動作します。
この動作はAHKの仕様でしょうか?
974名無しさん@お腹いっぱい。:2013/11/02(土) 08:13:43.26 ID:V1fxFKiH0
>>973
>937
975名無しさん@お腹いっぱい。:2013/11/02(土) 11:59:03.82 ID:LgZDMlJy0
sub_hoge:
 for 〜
  for 〜
   if hage
    return
   }
  }
 }
return

こんな感じでforで二重にループしてる中で
条件hageによりループ途中でreturnしてるんだけど、
問題有るとしたら、どんなことがあり得るんでしょう?
今のところ問題なく動いてるから知らんぷりしても良い?
976名無しさん@お腹いっぱい。:2013/11/02(土) 12:09:14.58 ID:FXSymEzZ0
昔の言語だとスタックが溜まりっぱなしなことがあったけど、
いまはガベージとして破棄するとかで大丈夫なんじゃね?

途中で抜ける関数を100万回くらい呼ぶサンプルコードを作って、
メモリ消費量が右肩上がりで増えるかどうかを確認してみたら?

俺も結果を知りたいからテストしたら結果を書いてもらえると助かる。
977名無しさん@お腹いっぱい。:2013/11/02(土) 12:54:50.62 ID:5tGSb6nO0
Gui, Buttonについてお聞きします。
ボタンにSendを割り当てたとして、GUIボタンをクリック押し込みするとキーは送信されず
クリックを離した時点でキーを送信しますが
クリック押し込み状態でも、キーを押した状態とするにはどのような処理をすれば良いでしょうか?
よろしくお願いします。
978名無しさん@お腹いっぱい。:2013/11/02(土) 13:03:14.70 ID:LgZDMlJy0
レスありがとう。
大丈夫と言う意見戴きました。

うう、サンプルコード…
素人にはそっちの方が大変だ。期待に添えなくて申し訳ないっす。

とりあえず今動かしてる分にはメモリ使用量が突然高くなるなどの
現象は起きてないようなのでこのまま様子を見るつもりす。
979名無しさん@お腹いっぱい。:2013/11/02(土) 13:19:46.93 ID:zylXQwGu0
>>975
別に問題ないよ
returnの代わりにgotoでサブルーチン外に出て戻ってこないとかだと問題だが
980名無しさん@お腹いっぱい。:2013/11/02(土) 14:08:57.59 ID:LgZDMlJy0
979氏、レスありがとう。
問題ないと言う、976氏と同意見なのでとても安心っす。
981名無しさん@お腹いっぱい。:2013/11/02(土) 14:28:21.72 ID:9EsYuvl00
MouseGestureLの無効にしたい対象「Disable」に登録しても
http://s22.postimg.org/63joypl0x/MGL.png のような画面が出てしまい
はい・いいえ どちらを押してもキー入力が不安定になります
対象のNGアプリだったらすぐに処理を終了するように特別にカスタマイズできないでしょうか?
982名無しさん@お腹いっぱい。:2013/11/02(土) 14:38:58.69 ID:JUvNDV+80
>>981
種別を色々変えてもそうなるの?
ウィンドウクラスでダメなら実行ファイル名にするとか
983名無しさん@お腹いっぱい。:2013/11/02(土) 15:32:34.00 ID:p/ZhsekP0
>>977

Button だとおそらく無理なので Text や Picture などでボタンを作ればいい
今回は画像用意するのめんどくさいのでText

F1::
Gui,Add,Text,w100 h38 Center Border gTextButton,`nButton
Gui,Show
Return

TextButton:
ToolTip
ToolTip % A_GuiEvent
If A_GuiEvent = DoubleClick
ToolTip % A_GuiEvent
Return
984名無しさん@お腹いっぱい。:2013/11/02(土) 15:55:25.14 ID:V1fxFKiH0
MouseGestureLの設定方法に関してはマウスジェスチャスレのほうでやってもらったほうが良くないか
ここに作者いないしサポート求められても正直困る

自分でプラグイン書きたい人のコード添削なんかはここでいいと思うけど
985名無しさん@お腹いっぱい。:2013/11/02(土) 16:41:35.99 ID:5tGSb6nO0
>>983
なるほど、ボタンでは出来ないんですね。
サンプルコードまで書いて頂きまして有難うございました。
986名無しさん@お腹いっぱい。:2013/11/02(土) 17:33:06.35 ID:h5sjW8CN0
>>981
他のマウス系ツールと併用していてたりしない?
例えばトラックボール+Wheel Ball+Autohotkeyスクリプト
という組み合わせの時に擬似マウスホイール操作
(トラックボールのボタンを押しながらボールを回転)すると
頻繁にそのエラーが出てたので

#HotkeyInterval 6000
#MaxHotkeysPerInterval 300

というように設定してた。
エラーの状況からして #MaxHotkeysPerInterval の値を
もっと増やさないといけないだろうけど。

ちなみに現在はTW.ahk(本来はトラックポイント用)を改造して
Wheel Ballと同等な操作感にしたものを使っているけど
#HotkeyInterval と #MaxHotkeysPerInterval を記述しなくていいようになった。
987名無しさん@お腹いっぱい。:2013/11/02(土) 18:36:05.67 ID:9EsYuvl00
>>982
実行ファイル名で登録しても駄目です
notepadなどでもテストしてみて問題なく登録は出来ていると思います。

>>986
#HotkeyInterval 6000
#MaxHotkeysPerInterval 300
にしても変わりませんでした

常駐ソフトも全部終了させてMouseGestureLだけにしても同じです。

問題が起きるソフトとはWhiteBrowserだけです
このアプリでサムネイル上で右クリックすると、こうなります。
このソフト、なんか他にも挙動がおかしい部分があり、たぶんこのソフトに原因があると思いますが・・
988名無しさん@お腹いっぱい。:2013/11/02(土) 18:54:28.60 ID:h5sjW8CN0
>>987
>>5のQ4はどう?

それと #MaxHotkeysPerInterval を3000〜20000くらいにしてみたら?
(負荷的にどうなのかわからんけど、たまに99999指定しているスクリプト見かけるたりする)

それでもダメそうならWhiteBrowserの開発者さんに聞いたほうがいいかもね


ついでに次スレ
AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383384464/
989名無しさん@お腹いっぱい。:2013/11/02(土) 19:23:23.11 ID:9EsYuvl00
>>988
サンクスです。
#UseHook
#HotkeyInterval 6000
#MaxHotkeysPerInterval 20000
にしてみました
5回中3回は2秒ぐらい遅れますが右クリック成功
後の2回は>>981と同じ症状が出る感じで安定しません

この対象アプリだけ右クリック(RB_)を感知したらすぐにスレッドを終了させるようにすれば行けるかも?
と思ったのですがどこを弄ればいいのか分かりません。
MG_Abort()
MG_Cancel()
をこのアプリに割り当てても駄目です
990名無しさん@お腹いっぱい。:2013/11/02(土) 19:33:36.85 ID:h5sjW8CN0
>>981は0.374秒の間に2001回の異常なキー入力が有ったので中断しているってこと。
つまり、WhiteBrowserを右クリックするとWhiteBrowserが異常な仮想キー操作を行っている可能性がある。
なので作者さんに聞いた方が解決するんじゃないかな。
991名無しさん@お腹いっぱい。:2013/11/02(土) 19:41:03.65 ID:p/ZhsekP0
ここはAutoHotkeyのスレであって
アプリ(MouseGestureL)の質問されても困るのだが・・・。
ここの住人が全員使ってるわけでもないし。
992名無しさん@お腹いっぱい。:2013/11/02(土) 19:43:39.54 ID:h5sjW8CN0
全く関係ないわけじゃないし別にいいんじゃないの?
2,3日で1スレ埋まるようなスレでもないし
993名無しさん@お腹いっぱい。:2013/11/02(土) 20:49:08.08 ID:9EsYuvl00
>>990
微妙にスレ違いですみません サンクスです。
MouseGestureLを切ると 右クリックも問題ないため
MouseGestureLだけで解決できるかと思っていましたが難しそうですね
作者氏に聞くかWhiteBrowser使用を止めたいと思います。
他にも挙動がおかしな所がありますし
994名無しさん@お腹いっぱい。:2013/11/03(日) 06:25:40.98 ID:tEX6SY+g0
>>974
ありがとうございます。
アドバイスを参考に似たコードで試してみました

F13 & z::
 SetKeyDelay, 1000, 1000
 MouseGetPos, , , window
 ControlSend, , {Ctrl Down}{p Down}{p Up}{Ctrl Up}, ahk_id %window%
return

やはり動きません。
Ctrlは押されて離されるのですが、Pが送信できていないようです。
AHKのKeyHistoryを確認してみましたが、ログがありませんでした。
(ControlSendの入力はログに残らない?)
995名無しさん@お腹いっぱい。:2013/11/03(日) 09:10:44.68 ID:yX//yUux0
>>994
違うショートカットキーを試して何をしたいのかよくわからんけど
setkeydelayのそれぞれの値は50〜100くらいにすれば概ね動くようになるよ
1000(1秒)とかにしたら動作がもたつくだけ

それはおいといて縦に最大化させたいだけなら↓でもいける

MouseGetPos, , , window
wingetpos, x, , w, , ahk_id %window%
winmove, ahk_id %window%, , x, 0, w, A_ScreenHeight
996名無しさん@お腹いっぱい。:2013/11/03(日) 15:44:07.49 ID:AXvXkEvx0
AHKでアプリごとに設定したショートカットがいい加減覚えきれなくなってきたんだけど
.ahkファイルを読み取ってショートカットやコメントを読みやすい
HTMLの一覧表にコンバートしてくれるツールってないですか?
997名無しさん@お腹いっぱい。:2013/11/03(日) 15:56:55.38 ID:r/31SuUG0
ahkで自作したまえ
RegExもFileRead/Apendもサポートされている
998名無しさん@お腹いっぱい。:2013/11/03(日) 18:37:54.55 ID:Scj1Pn+G0
>>994
ControlSendの入力はControlに直接送っているのでログに残らない

ショートカットに関しては根本的なところが間違っている
Windows7のショートカット(縦に最大化 Win + Shift + ↑)
これはOSの機能であって対象Controlの機能ではない
直接対象に入力しても送り先が間違っているので機能するわけがない。

ショートカットを実行したいだけなら Send,#+{Up}
マウス下のウインドを対象にしたいなら >>995 のように機能自体を書く
999名無しさん@お腹いっぱい。:2013/11/04(月) 10:35:59.65 ID:WpkoLKWY0
MGL使ってるんだけど、pluginのscript内で「menu, tray, icon, 〜」したiconを
MGL本体のtray iconとは別に独立したtray iconとして表示させる事出来ます?
(プロセスがMGLの一つに対し、tray iconを二つにする、という意味)

今の状態だと、MGL本体のtray iconがpluginのscriptで
記述したiconに変わってしまうので宜しくないんですよ。
1000名無しさん@お腹いっぱい。:2013/11/04(月) 10:39:31.60 ID:WpkoLKWY0
あああ、もうこのスレも終了なので新スレの方でもう一度質問書かせて下さい。

どうぞ皆様お願いします。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。