AutoHotkey スレッド part17

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

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

■日本語解説等
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/

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

テンプレ>>2-10
2名無しさん@お腹いっぱい。:2013/11/02(土) 18:35:15.19 ID:h5sjW8CN0
■重要事項
オリジナルである、本家 "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://hp.vector.co.jp/authors/VA018351/mglahk.html
http://code.google.com/p/mousegesturel/

※ACC.ahkとCOM.ahkはフォーラムのリンク先にファイルが存在しません。
 >>1のAutohotkey専用うpろだにうpされています。

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

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

以下FAQ等

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

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

Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( http://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、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/11/02(土) 18:37:50.27 ID:h5sjW8CN0
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/11/02(土) 18:38:23.76 ID:h5sjW8CN0
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/11/02(土) 18:38:58.31 ID:h5sjW8CN0
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/11/02(土) 18:39:51.27 ID:h5sjW8CN0
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/11/02(土) 21:13:02.87 ID:LgZDMlJy0
前スレが終了しそうなのと、別の話題で盛り上がってるようなので新スレに質問を書きます。
別に急ぎませんので、前スレが終わってからお願いします。

ダイアログウインドウのボタンにMouseMoveしたいと思ってます。
条件として、デフォルトボタンかフォーカスがあるボタンへです。

そこで「ControlGetFocus」や「ControlGetPos」を使おうと思ったのですが、
「ControlGetFocus」はボタンにフォーカスがあればclass名は取得できますが、
ボタンの位置は取得できませんし、ボタンにフォーカスがなければ何も取得できません。
「ControlGetPos」はボタンのclass名が分からないとボタンの位置が取得できません。

何か良い方法無いでしょうか?
そもそもデフォルトボタンって取得できマスかね?
10名無しさん@お腹いっぱい。:2013/11/02(土) 23:36:23.30 ID:LgZDMlJy0
>>1
スレ立て乙でした。
ごめんなさい、言い忘れてました。
11名無しさん@お腹いっぱい。:2013/11/03(日) 09:58:21.06 ID:r/31SuUG0
ダイアログの確認ボタンてフォーカス当たってる場合が殆どかと思ってたけど違うのもあるんか
デフォルトボタンの取得方法はわからんが

・「OK」「はい」「再試行」「続行」あたりで適当にあたりつけて取得してみる
 (Control指定はClassNNの代わりにラベルテキスト文字も使える)
・WinGet ControlListでZオーダーの一番若いButtonコントロールを探しだす
・特殊なダイアログは諦めて個別に決め打ちで対応させる

あたりかな
12名無しさん@お腹いっぱい。:2013/11/03(日) 16:30:12.75 ID:5F74xtIW0
>>11
レスありがとうございます。
それと、前スレまだ終わってないのに答えていただき恐縮です。

なるほどー、色々とやり方有るんですね、勉強になります。
リファレンス改めてよく読むと、タイトルなどの除外指定も有るようで、
autohotkeyってかなーり奥が深いんですね。
逆にその分自分にとっては複雑&難解になってしまう訳ですが・・・
13名無しさん@お腹いっぱい。:2013/11/04(月) 10:48:38.05 ID:WpkoLKWY0
あのー、pert16終了寸前に質問したものです。
そこでお断りしたようにもう一度質問書かせていただきます。(コピペします)

AutoHotkey スレッド part16
http://anago.2ch.net/test/read.cgi/software/1367725658/999-1000
>999 :名無しさん@お腹いっぱい。[sage]: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に変わってしまうので宜しくないんですよ。

これ↑お願いします。
14名無しさん@お腹いっぱい。:2013/11/04(月) 10:53:08.52 ID:zPNC5Eqx0
アイコン2つは多分できないんじゃないかな
プラグイン側のアイコン変更を切るんじゃ駄目なの?
15名無しさん@お腹いっぱい。:2013/11/04(月) 11:16:08.93 ID:WpkoLKWY0
>>14
ありがと、そーかー無理みたいですか。

実は、icon二つ表示したい理由言い忘れたんで書こうとしたら
レスついてたので情報後出しっぽくてあれだけど、
それぞれのiconをindicator代わりにしたかったんですよ。

無理してpluginにするより、独立して起動させるのが無難…と言うより、それしかないか。
16名無しさん@お腹いっぱい。:2013/11/04(月) 13:15:20.52 ID:yGBFVwB30
やりかたとしては

ahkを2つ走らせる、お互いのプロセスを監視する、監視でどちらかが消えたら自分も終わらせる

とする感じくらいしか思い浮かばない
17名無しさん@お腹いっぱい。:2013/11/04(月) 14:06:10.94 ID:XXUXbFXe0
↓ここにある タスクトレイに最小化でahk機能に頼らないタスクトレイアイコン作成のサンプルがある
ただし古いソースなのでANSI版のみ、unicde & x64版でそのままでは動かない
http://ahk.xrea.jp/myscripts/index.html
18名無しさん@お腹いっぱい。:2013/11/04(月) 16:02:15.53 ID:WpkoLKWY0
>>16-17
レスありがと。
色んなツール(機能)をMGL一本に集中出来れば最高だったんですけど、そう簡単には行きませんね。
19名無しさん@お腹いっぱい。:2013/11/04(月) 17:13:01.04 ID:eIOqTGVv0
>>18
プラグインから別の場所にあるahkをRunすれば起動は同期できる
pluginsフォルダにサブフォルダ作って入れとくとかね
20名無しさん@お腹いっぱい。:2013/11/04(月) 18:57:43.59 ID:WpkoLKWY0
>>19
ありがとう。

>>19含め>>16-17
あの…とても言いにくいので黙ってたんですけど、
自分がやりたかったのは、ただ単に、"複数ツールの常駐をMGL一本の常駐で賄うこと"だったんです。
でも、>>13での質問と>>15での理由説明、更に>>18でいい加減なレスと、皆様に誤解を生ませてしまいました。
大変申し訳ありませんでした。

あと各々の貴重なレスは今後の参考にさせていただきます。
21名無しさん@お腹いっぱい。:2013/11/04(月) 21:32:20.79 ID:XXUXbFXe0
要はinclude でまとめたいってことだろうがMGLが組み込み対応になってるかとか知らんし面倒な予感しかしないね

MGLで質問です
  ↓
住民が詳しすぎるレス
  ↓
すいませんわかんないんで諦めます

ここんとここんなんが多い気がする
ahk全般の汎用解答してもMGLでの応用方法がわからんので結局解決に至れないし
MGL使用者同士で噛み砕いてのレスの応酬されるのも正直ね
スレ消費早くないからいいじゃんてのも違うと思う

で提案なんだが重複スレのほうをMGL専用として活用してはどうか
AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383489925/

前スレには詳しいMGL使いもいたから解答はつくだろうし
質問者も変にこっちで難解レスもらうよりいいでしょ
22名無しさん@お腹いっぱい。:2013/11/04(月) 21:37:50.81 ID:QszsJMvd0
あっちこっち視るのが増えるだけで面倒だし、こっちだけでいいよ
何故そんなに分けたがるのかわからん
フォーラム形式なら分けたほうがいいってのは分かるけど
23名無しさん@お腹いっぱい。:2013/11/05(火) 00:07:56.81 ID:aAuEnmE40
MGLのプラグインいじり回すのはAHKの勉強にもなるんでこっちでいいとおもうな
俺は現にMGLにincludeで機能増やしていってるタイプで、そのほうが機能のコンフリクトとか気にしなくていいもの

ただそのためにMGLをAHKファイルとして理解していく必要はあるけど、わかってくるとなかなか楽しいもんよ
24名無しさん@お腹いっぱい。:2013/11/05(火) 01:10:26.70 ID:MjDHj0bL0
んまあ、確かにAHKのスレで、MGL専門の話を繰り広げるってのは、perlのスレでperlで書かれた
特定のソフトウェアの設定・改良について話が行われているような違和感を覚えるのは確か。

本筋としては、MGLの話題はAHKのスレではスレチだからよそのスレにどうぞ。ってことになるんだろう
けど、よそのスレでMGLのAHKスクリプトの話をしてもろくに理解もしてもらえないだろう。
それならこのスレでMGLの話をしてもいいんじゃないかな。

AHKを使ってる人もわざわざここ以外のスレを覗きに行くのは面倒だと思うしね。


って、長文書いたけどさ、自治なんて面倒だし適当でいいんでない?
25名無しさん@お腹いっぱい。:2013/11/05(火) 01:18:05.29 ID:UyI0Jkoe0
>23みたいにMGLは入口でahkに興味出た、スプリクト覚えたいて姿勢の人ならいいと思うけど
殆どの人間はカスタマイズがちょっと難解なマウスユーティリティてな認識で使ってるっぽくない?

ここはahkで作ったツールの使い方を聞くスレではないと思うし、このままズルズルサポート拠点にされるのは嫌だな
あっちこっち見るの大変ていうけど、MGL使ってない人間からしたらそもそもが見る必要ないレスなわけだし
26名無しさん@お腹いっぱい。:2013/11/05(火) 14:43:49.77 ID:wJKxtgjw0
autohotkeyのスクリプトがかなり長くなってしまったので適度に分割しようと思うのですが、
そうするとこれまで一つのスクリプトでやっていたことを複数のスクリプト間で行わなくてはなりません
そこで
a.ahkからb.ahkにデータを渡して
データを処理したb.ahkがa.ahkに処理済のデータを返す
こういうことを考えたのですがFileAppendでテキストに書き出してやりとりをする以外に何かいい手はありますか?
27名無しさん@お腹いっぱい。:2013/11/05(火) 14:47:32.14 ID:1WSJIIB30
管理するだけならそれこそincludeでいいんじゃないだろうか
28名無しさん@お腹いっぱい。:2013/11/05(火) 15:26:01.71 ID:vtjmO1MN0
「AutoHotkeyを流行らせるページ」でDLした、「システムモニタ用関数群」
http://ahk.xrea.jp/myscripts/SystemMonitor.zip の「sample.ahk」
というスクリプトを元に進行状況を表すプログレスバー作ってるのですが、
プログレスバーに反映しないデータがあり、ここで行き詰まっています。
どうしたら反映するんでしょうか?

また、できればこれを関数化したいとも思ってるのですが、
頭が混乱して右往左往しています。

とりあえず、次レスにtestスクリプト晒しますので、
ご協力お願いいたします。
2926:2013/11/05(火) 15:27:23.88 ID:wJKxtgjw0
説明不足ですみません
はい#includeは使ってきました
ですがそれを多用するよりもできるだけincludeを使わない方法で保守管理しやすくする方法はないかと思ったのです
30名無しさん@お腹いっぱい。:2013/11/05(火) 15:29:07.87 ID:vtjmO1MN0
col=200 ;barの表示場所左位置
Color=0000ff ;texstとbarの色
BG=000000 ;背景色(透明色)
Gui,Color,%BG%,%Color%
Gui,Font,C%Color% S36,ms gothic
Gui,Margin,2,2
Gui,+LastFound +0x02000000 -0x0CC00000 -Border +ToolWindow +AlwaysOnTop

Gui,Add,Text,x0 y200,進行 %count%`%
Gui,Add,Progress,x%col% yp+0 BackGround%BG% C%Color% vMyProgress w900 h48

Control,ExStyle,0x00000000,msctls_progress321

WinSet,TransColor,%BG% 180 ;透明度

Gui,Show

SetTimer,DrawPerf,1000

DrawPerf:
if count > 100
count := 0
count += 10
GuiControl,,MyProgress,%count% ;barの変化を反映させる(?)
return

フォントが巨大だったり、色が気味悪いとか色々とありますが、test中なのでご勘弁を・・・
31名無しさん@お腹いっぱい。:2013/11/05(火) 15:32:51.85 ID:vtjmO1MN0
肝心なこと書き忘れました。
>Gui,Add,Text,x0 y200,進行 %count%`%
の%count%が空っぽで何も表示されません。

「MyProgress」は反映してるのに私には理解できませんでした。
32名無しさん@お腹いっぱい。:2013/11/05(火) 17:21:07.60 ID:XisEoPDs0
>>31
%count% が空で表示されないのは Gui,Add,Text の時点では
count に値が設定されていないから。

count を変更してもテキストに反映されないのは DrawPerf:
の中でテキストを更新する処理を行っていないから。


後者を修正するには例えば次のようにすればよい
・Gui,Add,Text において v オプションで変数を割り当てる(例:vProgressText)
・GuiControl,,MyProgress,%count% の行の直前か直後に次の行を入れる
GuiControl,,ProgressText,%count%`%
33名無しさん@お腹いっぱい。:2013/11/05(火) 18:38:03.85 ID:TUF3n1lj0
WinSet,Top,,ahk_id %w%

これが動作しません・・・(Bottomのほうは動作するのですが)

ヘルプには「システムの設定によっては動作しない。」と書いてありますが
動作するように出来るのでしょうか?
Win7 x64
AHKL 最新
34名無しさん@お腹いっぱい。:2013/11/05(火) 18:42:13.58 ID:vtjmO1MN0
>>32
ありがとうございます。

Gui,Add,Text,x0 y200,進行 %count%`% の行を
      ↓
Gui,Add,Text,x0 y200 w200 vProgressText

GuiControl,,MyProgress,%count% の行を
      ↓
GuiControl,,ProgressText,進行 %count%`%

と変更して希望どうり、進行状況の%表示がされるようになりました。

これで関数化に向けて落ち着いて考えられそうです。
35名無しさん@お腹いっぱい。:2013/11/05(火) 18:47:53.60 ID:vtjmO1MN0
>>34 の訂正です。(ああ、未だ頭が混乱してるかも)
中段の
GuiControl,,MyProgress,%count% の行を
      ↓
GuiControl,,ProgressText,進行 %count%`%

これは、
GuiControl,,MyProgress,%count% 行の下に
GuiControl,,ProgressText,進行 %count%`% 行を追加
が正しいです。

お騒がせしました。
36名無しさん@お腹いっぱい。:2013/11/05(火) 18:52:49.57 ID:A12X5On40
>>33
AlwaysOnTop ON/OFFすればいい
困ったときは公式ドキュメントも確認しよう。
ttp://l.autohotkey.net/docs/commands/WinSet.htm
37名無しさん@お腹いっぱい。:2013/11/05(火) 20:59:21.34 ID:Ad7w0w9P0
テンキー0の横の . ←点を変えたくてwindow spyで見て
vk6Esc053にしてみたんですが変わらないみたいで間違ってますか?
38名無しさん@お腹いっぱい。:2013/11/05(火) 21:02:19.78 ID:aAuEnmE40
Numpaddot::

を使えばいい。てかAHKのキー一覧がググれば出てくるんでそれを参考にするといい
39名無しさん@お腹いっぱい。:2013/11/05(火) 21:04:17.15 ID:Ad7w0w9P0
>>38
ありがとう一覧探してみます
40名無しさん@お腹いっぱい。:2013/11/05(火) 21:14:23.69 ID:TUF3n1lj0
>>36
ありがとうございます!
AHK凄い36さん凄い
41名無しさん@お腹いっぱい。:2013/11/06(水) 08:14:11.61 ID:luw6m4wR0
>>29
関数でどうよ
関数ライブラリ機能使えば楽よー
42名無しさん@お腹いっぱい。:2013/11/06(水) 12:13:21.65 ID:RSrnMLVy0
素朴な疑問。
MouseGestureL使ってる人、これexe化してる?ahkそのまま?

それと、exe化して使う場合のメリット/デメリット
ahkそのままでのメリット/デメリット
どんなのがある?
43名無しさん@お腹いっぱい。:2013/11/06(水) 12:16:36.07 ID:eG5fQhI30
ahkのままでつかってる。
ahkのままだとahk本体が必要
exeにすると本体不要

でもメンテとかだとahkファイルのままのほうがいいし、ahk本体も持ち運べるからそんなに重要じゃない。引数わたしとか関連付けて走らせなきゃいけないけれど

exeは関連付けとか引数渡しとかそういう手間がない。全く拡張せず、完全にツールとしてしまうならexeのほうがお手軽
44名無しさん@お腹いっぱい。:2013/11/07(木) 08:21:35.59 ID:49NZfEsm0
exe化しても、設定変えるごとに再exe化が必要になるから
実質使い物にならんよ
45名無しさん@お腹いっぱい。:2013/11/07(木) 08:28:24.18 ID:XVY/Bs2E0
ahkを知らない他人が使う場合にexe化して渡してる
自分が自分のPCでしか使わない場合はahkのまま使ってる
46名無しさん@お腹いっぱい。:2013/11/07(木) 11:07:39.26 ID:EvraCXzB0
>>44
iniファイルの読み書きできるし、パラメーター的な設定変更なら再EXE化の必要はないよ
47名無しさん@お腹いっぱい。:2013/11/07(木) 12:02:55.09 ID:fZozRp2a0
exeで渡したらahkに出コンパイル可能?
48名無しさん@お腹いっぱい。:2013/11/07(木) 12:15:07.05 ID:VCo37QmK0
デコンパイル不可のオプションつけてなければ戻せる。
コメントやインデントルールまで再現してくれたかは覚えてないが

自分で使う場合も常駐ahkに組み込むもの以外はわりとexe化してるな、設定はini読み
コマンドラインで動かすものはahkのままだとパラメータの受け渡しが面倒だし
GUI作ったものは普通のツールアプリと変わらんのでexe化したほうがランチャー起動も楽
49名無しさん@お腹いっぱい。:2013/11/07(木) 12:19:40.73 ID:MheHlEV90
ようは人によるってことよね

AHKをランチャにして使ってる場合AHK上から子AHKファイルを読み出すときはRun,%A_AhkPath%とか使えばいいわけで、他のランチャからならexe化してたほうが楽
50名無しさん@お腹いっぱい。:2013/11/07(木) 13:17:49.37 ID:yJQH34AN0
ループ中にキーを押されたらスレッドから即座に抜けるようにしたいんですけど可能でしょうか?

スレッド内に判定を書くとそこまで待たなければならないため
別のスレッドを割り込ませてExitやExitAppをやってみたんですけど
Exitは元のスレッドに戻るだけ、ExitAppはスクリプトの常駐自体も解除されてしまうためうまくいきませんでした
51名無しさん@お腹いっぱい。:2013/11/07(木) 13:35:05.71 ID:TY9PY+/s0
Continuetu 使ったら?
52名無しさん@お腹いっぱい。:2013/11/07(木) 14:12:39.84 ID:yJQH34AN0
>>51
今やってみましたがContinuetuを別のスレッドで単独で記述するとコンパイルエラーで弾かれるみたいです
53名無しさん@お腹いっぱい。:2013/11/07(木) 14:14:04.78 ID:o/nlozLH0
Whileで書いて、Getkeystateが1でない間にするとか
54名無しさん@お腹いっぱい。:2013/11/07(木) 14:39:51.46 ID:yJQH34AN0
>>53
whileも判定は即座にやるわけではないので変わらないと思います
ちなみに現在のコードは
#1::
Loop{
処理1
GetKeyState, state, Esc
if state = D
break
処理2
}
return
で、処理1,2が長いためifで判定するまでキーを押したまま待つ状況です
55名無しさん@お腹いっぱい。:2013/11/07(木) 14:56:49.64 ID:MheHlEV90
If (Getkeystate("Esc","P")) = 1
break
56名無しさん@お腹いっぱい。:2013/11/07(木) 15:16:18.72 ID:dXbI1xB40
知らないから適当なこと書くけど、AutoHotkey.dllならフレッドを途中で終了させるのも可能なんじゃないかな?
57名無しさん@お腹いっぱい。:2013/11/07(木) 15:24:23.75 ID:yJQH34AN0
>>55
記述を変更してみましたが表面上の動作は同じみたいです

>>56
これからバイトなので帰ってきたら調べてみます
58名無しさん@お腹いっぱい。:2013/11/07(木) 15:24:25.64 ID:gc30trcW0
フレッド君は志半ばにしてこの世を去るか……
59名無しさん@お腹いっぱい。:2013/11/07(木) 15:28:45.08 ID:dXbI1xB40
なんというタイポ、これは恥ずかしい
60名無しさん@お腹いっぱい。:2013/11/07(木) 17:23:34.91 ID:VCo37QmK0
処理1、2の内容が分からんので何とも言えんが
WinWait,WinTitle, WinText, 10 とかやってるなら

Loop 10
{
 if GetKeyState("ESC") {
   アボート処理
   Break
 }
 WinWait,WinTitle, WinText, 0.1
}
Until ErrorLevel=0

みたいに数行にばらして処理時間を細切れにするとか
61名無しさん@お腹いっぱい。:2013/11/08(金) 19:34:43.04 ID:8yijMNAQ0
>>46
仕組みを理解してないようだな
設定は全てMG_Config.ahkに書き出されてそれをincludeする方法だから
設定変えたら再exe化が必要になるのだよ
62名無しさん@お腹いっぱい。:2013/11/08(金) 21:28:16.46 ID:UWFJxr4P0
そんな頻繁に内容書き換えるんならわざわざコンパイルせんでも。
MouseGesture.ahkの導入ページに書いてある、
AutoHotKey.exeをリネームして、同名、同ディレクトリのahkファイルを読み込むようにする方法じゃあかんの?
63名無しさん@お腹いっぱい。:2013/11/08(金) 22:03:29.05 ID:pMVDeGc+0
>>42 のexe化の話ってMouseGestureL.ahk"だけ"exe化する話じゃなかったのか?
全てのahkファイルをexe化するなんて発想はなかったよ、>>61 みたいに。
64名無しさん@お腹いっぱい。:2013/11/08(金) 22:11:06.66 ID:pMVDeGc+0
>>63
あ、俺勘違いしてた。
>>61 ホントすまんかった、適当なこと言って。
65名無しさん@お腹いっぱい。:2013/11/09(土) 10:54:54.01 ID:r70LfzOH0
ttp://l.autohotkey.net/docs/misc/Threads.htm

ここを読むとGUIイベント(GUIのサブルーチンラベル)でも新しいスレッドが発生するらしいけど
そのスレッドの割り込み優先度を設定する方法ってある?

それともGUIを呼び出したスレッドの優先度が引き継がれるのかね
66名無しさん@お腹いっぱい。:2013/11/09(土) 16:15:40.19 ID:JduWIw5T0
menu, tray, add, menu&1, menu_1
menu, tray, add, menu&2, menu_2

menu1とmenu2を一つのサブメニュー(submenu)内に入れようと
あれこれやってやっとエラー無く起動したコードがこれなんだけど
やりたいこととは違う。

Menu, &submenu, add, menu_1
Menu, tray, add, &menu1, :&submenu
Menu, &submenu, add, menu_2
Menu, tray, add, menu&2, :&submenu

何がおかしい?どこを直せば良い?
67名無しさん@お腹いっぱい。:2013/11/09(土) 16:23:33.45 ID:Dskn8qlD0
もしAが起動したらBを閉じて、起動していなければBを開く
Process,Exist,A.exe
If ErrorLevel<>0
Process,Close,B.exe
else
Run,..\..\B.exe

じゃダメなの?難しい
68名無しさん@お腹いっぱい。:2013/11/09(土) 17:01:13.15 ID:JduWIw5T0
>>67
こういうことしたい?
Process,Exist,notepad.exe
If ErrorLevel=0
Process,Exist,wordpad.exe
if ErrorLevel=0
Run,wordpad.exe
else
Process,Exist,wordpad.exe
If ErrorLevel<>0
Process,Close,wordpad.exe
69名無しさん@お腹いっぱい。:2013/11/09(土) 17:09:52.81 ID:JduWIw5T0
>>68
ちなみに
Process,Exist,notepad.exe
If ErrorLevel<>0
Process,Exist,wordpad.exe
If ErrorLevel<>0
Process,Close,wordpad.exe
else
Process,Exist,wordpad.exe
if ErrorLevel=0
Run,wordpad.exe


だと
notepad.exe が起動中にも関わらずwordpad.exe が起動してしまうね、何故か。
70名無しさん@お腹いっぱい。:2013/11/09(土) 17:41:23.45 ID:PcXU61XN0
>>66
やりたいことがよくわからんがこういうこと?
Menu, &submenu, add, menu_1
Menu, &submenu, add, menu_2
Menu, tray, add, &submenu, :&submenu
あと>68-69
慣れないうちはif〜else使う時は全部 { }で囲ったほうがいいよ

>>67
IfとElseどっちが上手く行ってないんだかわからんが、後者だとすると相対パスが怪しい
>Run,..\..\B.exe
A_WorkingDirはどうなってる? 条件分岐なしで起動してちゃんと開けるか確認してみ
71名無しさん@お腹いっぱい。:2013/11/09(土) 18:42:45.05 ID:JduWIw5T0
>>70
どうもありがとう。

>>66でも書いてるけど、単純に
>menu1とmenu2を一つのサブメニュー(submenu)内に入れようと
なので、
Menu, &submenu, add, menu&1, menu_1
Menu, &submenu, add, menu&2, menu_2
Menu, tray, add, &submenu, :&submenu

これでサブメニュー化成功したよ。
それから、質問分かり難くてすまぬ。

>>68-69 の件、{}で括り忘れてた。
ご指摘ありがとう。
72名無しさん@お腹いっぱい。:2013/11/09(土) 19:13:31.67 ID:VKMWxPBd0
>>65
Thread を書けばいい
ttp://ahkwiki.net/Thread
73名無しさん@お腹いっぱい。:2013/11/09(土) 19:15:14.32 ID:Dskn8qlD0
>>68-70
ありがとう 初めてで何もわからない状態だったから助かった
#Persistent
SetTimer,OnTimer,2000
return

OnTimer:
Process,Exist,A.exe
If ErrorLevel=0
Process,Exist,B.exe
if ErrorLevel=0
Run,..\..\B.exe
else
Process,Exist,A.exe
If ErrorLevel<>0
Process,Exist,B.exe
If ErrorLevel<>0
Process,Close,B.exe
return
で思い通りに動作した 勝手に定期的に実行してくれるわけじゃないのね
色々自動化出来る気がしてきたから頑張ってみる
74名無しさん@お腹いっぱい。:2013/11/09(土) 19:31:54.21 ID:JduWIw5T0
>>73
>>71
>慣れないうちはif〜else使う時は全部 { }で囲ったほうがいいよ
と指摘されてるように(自分が^^)

If 〜
{
 処理1
 処理2
}
else
{
 処理3
}

な感じにしないと思うような結果が得られない場合があるから注意した方が良いよ
75名無しさん@お腹いっぱい。:2013/11/09(土) 20:21:05.43 ID:JAsitH9B0
If 〜
{
 処理
}



If 〜 {
 処理
}

だと行数が減る分
下の方がわずかに読み込みが早かったりするのかな
76名無しさん@お腹いっぱい。:2013/11/09(土) 21:09:58.17 ID:JduWIw5T0
>>75
ご指摘ありがとう。
今までは、そういう風にするとエラー出るんで長ったらしく記述してたよ。
んで、改めて他作者スクリプトを良く見てみると、( )付いてるか否かの違いに気付いた。
ということで、
If ( 〜 ){
 処理1
}else if ( 〜 ){
 処理2
}else{
 処理3
}
こう記述すと効率が良いってことかな?
77名無しさん@お腹いっぱい。:2013/11/09(土) 21:12:38.72 ID:VKMWxPBd0
        ____
        /     \
     /   ⌒  ⌒ \   何言ってんだこいつ
   /    (●)  (●) \
    |   、" ゙)(__人__)"  )    ___________
   \      。` ⌒゚:j´ ,/ j゙~~| | |             |
__/          \  |__| | |             |
| | /   ,              \n||  | |             |
| | /   /         r.  ( こ) | |             |
| | | ⌒ ーnnn        |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二  _|_|__|_
78名無しさん@お腹いっぱい。:2013/11/09(土) 22:11:16.50 ID:2JOYU1ck0
変数名もできるだけ短くした方がいいぞ
79名無しさん@お腹いっぱい。:2013/11/09(土) 22:25:51.34 ID:PcXU61XN0
AHKは昔 if (式) が使えなかった
進化の仮定で (式)が加わり、)で明示的に式の終わりを指定できるようになったため
改行前の{ も有効になった。
今でも()なしifやLoopなんかは改行しないとエラーになるものもある

改行するしないはプログラム上はCRLFの2バイト挿入されるだけで速度にはほとんど影響ない
むしろ↓のようにスペースやコメント文字を入れするほうがバイト数的には増えてることもある
if (Expression)   {   ; ○○の時は△△する

単純に自分が視認しやすい方でよいと思う
80名無しさん@お腹いっぱい。:2013/11/09(土) 22:45:52.08 ID:JAsitH9B0
>>79
わざわざ直す必要はないみたいだね
ありがとう
81名無しさん@お腹いっぱい。:2013/11/09(土) 22:45:53.05 ID:/kjb4T9e0
そんなことより>>68とか、最初のifがfalseだったとき次どこいくと思ってんのかな
82名無しさん@お腹いっぱい。:2013/11/09(土) 23:14:04.13 ID:E6QyIEbp0
式は{}使えっていつも言ってんだろー!!
83名無しさん@お腹いっぱい。:2013/11/09(土) 23:29:53.31 ID:s8rJVbwc0
>>81
インデントがスペース一個で、しかも専ブラで見ると、インデント不明すぎるなw
せめて2スペでないと流し読みするから構文ミス見逃すわ
よく気付いたな…
84名無しさん@お腹いっぱい。:2013/11/09(土) 23:58:17.17 ID:JduWIw5T0
>>68 なんだけど、弁解じゃないけど一応
>>68は元々以下の感じでインデントしてたのを貼り付けた。
(下のは全角スペースで疑似インデント)
Process,Exist,notepad.exe
If ErrorLevel=0
 Process,Exist,wordpad.exe
 if ErrorLevel=0
  Run,wordpad.exe
else
 Process,Exist,wordpad.exe
 If ErrorLevel<>0
  Process,Close,wordpad.exe

で、これは>>70で指摘された通り、{ }で括り忘れてるので間違ってることは認識してる。(>>69についても同じ)

いい加減うざいよね、スマン。
85名無しさん@お腹いっぱい。:2013/11/10(日) 09:14:56.06 ID:uDdR3jCo0
いやそれはわかってる
スペース一個じゃインデントしてても見づらいよって話
自分は4タブ(タブ押しでスペース4個分インデント)だが
2タブ、4タブあたりの人が多いんじゃないかね
86名無しさん@お腹いっぱい。:2013/11/10(日) 09:15:50.43 ID:OuL0Jpyr0
AHKで設定したホットキーが、Window7では正常に動作したのにWindows8では
機能しないことがあります。たとえば、タスクマネージャーがアクティブなとき、
Win+F1を押すと、AHKで設定したものではなく、「Windows ヘルプとサポート」
が立ち上がり、Win+zなどの設定もまったく機能しません。どうしてなんでしょう?
87名無しさん@お腹いっぱい。:2013/11/10(日) 09:47:44.93 ID:OuL0Jpyr0
スクリプトを管理者として実行する必要があるんですね。分かりました。
88名無しさん@お腹いっぱい。:2013/11/10(日) 10:33:04.15 ID:iru0aH2t0
>>72
サブルーチンに入ってからThread, Priority,n指定しても割り込まれるだけじゃないかと思ってた

Thread, Interrupt, Duration [, LineCount]と併用するのね。ありがとー


>>87
Windows8だとそんなめんどくさいことになってるのか・・・
89名無しさん@お腹いっぱい。:2013/11/10(日) 13:21:21.09 ID:ahi6Vsgq0
ブロックでくくるのは1行だろうとやってるな

どういう式なのか視認しやすいから
90名無しさん@お腹いっぱい。:2013/11/10(日) 14:01:05.86 ID:CJr4mQyO0
このスレは行頭に半角空白とタブ付いてると、
それが削除されるからコード見ずらくなるよな。
書き込むだけなら全角使っても良いけど
コピペして使う方は一手間いるから、そこがなあ。

全板、全スレそうなのかな?
91名無しさん@お腹いっぱい。:2013/11/10(日) 14:19:25.55 ID:QQRdwQ7U0
スレというかhtmlの表示ルールがそうなんでないかと
AAもそれ前提に作られてるから専ブラの表示も合わせてあるのが多い
92名無しさん@お腹いっぱい。:2013/11/10(日) 17:04:51.43 ID:/7GhoBz90
> 変数名もできるだけ短くした方がいいぞ

て本当? 処理がわずかでも早くなる?
今まで気ままに付けてた
日曜プログラマーにマジレスお願いします
93名無しさん@お腹いっぱい。:2013/11/10(日) 17:07:11.02 ID:CJr4mQyO0
ところで、AutoHotkeyに付属してるSciTE4AutoHotkeyで
TABキー1回押しで半角空白4個挿入するにはどうすんの?

それこそスクリプト書けって言われるのが落ち?
94名無しさん@お腹いっぱい。:2013/11/10(日) 17:20:58.92 ID:Wsob4QVh0
簡単やから書いちまえ
IME関数でIME状態記録して半角にしてからsend,でスペース4回、その後IMEの状態をもとの書式形態に戻せばいいだけだから
95名無しさん@お腹いっぱい。:2013/11/10(日) 17:22:41.51 ID:tboc7JFs0
janedoe view使いだけど、別にTABだろうとスペースだろうと
ポップアップ表示させればインデント正確に表示されるから気にしてないな
96名無しさん@お腹いっぱい。:2013/11/10(日) 17:27:13.63 ID:Q7AykSK80
>>94
確かにそれは>>93の希望の動作だけど、>>93の求める動作はきっとそれとは違うw
97名無しさん@お腹いっぱい。:2013/11/10(日) 20:25:57.27 ID:CJr4mQyO0
>>94
どうもです。ヒントまで書いてくれて。
エディタ側に設定する所ないなら、そういうスクリプト書くしか無さそうだね。

>>96
エディタ側の設定で出来ればベストなんだけどね。
98名無しさん@お腹いっぱい。:2013/11/10(日) 21:08:11.30 ID:SvuwF5o10
>>92
コメントも極力書かないようにな
99名無しさん@お腹いっぱい。:2013/11/10(日) 21:28:11.23 ID:SKyuhMaS0
>>97
そのエディタを使ったことは無いけど、ソースコード編集用エディタでタブをスペースに
置き換える機能がないということは考え難いので、探せば設定項目があると思う

軽く調べた感じでは use.tabs が怪しい
100名無しさん@お腹いっぱい。:2013/11/10(日) 21:48:36.67 ID:OuL0Jpyr0
>>87
Windows8では、あるプログラムを「管理者が起動する」のと、
「管理者が管理者として起動する」のでは違うんだそうです。
101名無しさん@お腹いっぱい。:2013/11/10(日) 21:51:26.75 ID:OuL0Jpyr0
Windows7でもこの違いはあったようですが、
デフォールトの設定で問題が生じなかったので、
気に留めたことがありませんでした。
102名無しさん@お腹いっぱい。:2013/11/10(日) 22:54:35.79 ID:CJr4mQyO0
>>99
わざわざ調べてくれてありがとう。
webサイトの方に細かいこと書かれてたので、それ参考にいじってみるよ。

なんか、『質問する前に調べろよ、ドアホ』ってみんなから言われそうだけど、勘弁してくれ。
103名無しさん@お腹いっぱい。:2013/11/10(日) 23:00:18.49 ID:rKrXT9cD0
次から気をつけるならいいよ
104名無しさん@お腹いっぱい。:2013/11/11(月) 01:17:57.60 ID:igGN+y/w0
>>92
振り回されすぎ

>>98
振り回しすぎ
105名無しさん@お腹いっぱい。:2013/11/11(月) 01:53:19.76 ID:j8vopFcs0
大昔のリソースが潤沢じゃなかった時代は、実際にそういうことやってメモリ稼いだりとかはあったが
今は見やすさ重視で書くヨロシ
見難いコード書いたせいでバグ誘発したり、メンテナンスに掛かる時間のほうがよほど無駄

カッコのつけ方は一貫性あればいいと思うが
一行で省略できる場合でも、個人的には常につけるべきだと思っている
あとで処理を付け足したりしたくなった場合の変更に臨機応変に対応できるのと
変更した時にカッコの付け忘れでのバグ防止、ブロックを明確にするなど
メリットのほうが大きいと考える
106名無しさん@お腹いっぱい。:2013/11/11(月) 01:57:09.28 ID:rT6KkNEF0
てーかきれいなGUIとか昨日過多とか裏でわけわかんないもの走らせない限りは他のexeに比べて圧倒的に軽いんだからあんま気にすることでもないと思う
107名無しさん@お腹いっぱい。:2013/11/11(月) 01:58:48.44 ID:j8vopFcs0
あと、今更ってカンジだけどよく言われるのが、
コメントがなくても分かるコードを書け。とか
コメントを信じるな。とか

コメントに書いてあることが仕様変更に追従してない場合もあるからな
綺麗なコードはコメントなくても文章のように読める・・・はず
108名無しさん@お腹いっぱい。:2013/11/11(月) 15:28:26.33 ID:0W7UPHuM0
一行で省略できる場合でもカッコ使ったほうがいいんですね
真似してみます

If(ahk){
 xxx
}

If(ahk)
{
 xxx
}
はどちらがメジャー?
109名無しさん@お腹いっぱい。:2013/11/11(月) 15:35:26.31 ID:uNURXBw20
俺上使ってる

まぁ、そんなことよりsakuraエディタにAHK色変えプロファイルをインストールすべき
110名無しさん@お腹いっぱい。:2013/11/11(月) 16:15:54.62 ID:aO9uH+Y50
>>109
んなの、[AutoHotkeyフォルダ]\Extras\Editors\[各種エディタ]
内のキーワードファイルからキーワード移植すれば良いだろ?
...\Extras\Editors\EmEditor\ahk.esy
辺りが移植しやすいんじゃないか?
正規表現使いたい場合は自分で作成するしかないかもしれないけどね。
111名無しさん@お腹いっぱい。:2013/11/11(月) 16:31:40.73 ID:aO9uH+Y50
例えば、If WinExist( … )とかじゃなく
IfWinExist, … の場合は、{ } はどうしたらいい?
112名無しさん@お腹いっぱい。:2013/11/11(月) 16:44:46.44 ID:2yW1lBYX0
>>110
情報古すぎ、AutoHotkey_Lにはキーワードファイルは付いていません。

そんなことよりいつまで括弧の話題引っ張る気だよ
書き方なんて個人の好みでやればいいだけだろ。
113名無しさん@お腹いっぱい。:2013/11/11(月) 18:31:12.20 ID:aO9uH+Y50
>>109 >>112
捜したら有ったぞ。
直リンはしないからね。
http://ahkwiki.net/Tools
114名無しさん@お腹いっぱい。:2013/11/11(月) 18:43:42.47 ID:2yW1lBYX0
>>113
付属していませんと指摘したんだが。
同一人物だと思うが国語が残念な人、もう少し文章よく読んだら?
115名無しさん@お腹いっぱい。:2013/11/11(月) 19:07:56.38 ID:5hyh3Jpc0
wikiにこういうのあったのか
Mery用に使わせてもらうわさんきゅー
116名無しさん@お腹いっぱい。:2013/11/11(月) 19:21:58.62 ID:9keEvpOM0
会話噛み合ってないなぁwとは思ったがそんなキレんでも
あとIDというものをご存知か
117名無しさん@お腹いっぱい。:2013/11/11(月) 19:32:49.20 ID:2yW1lBYX0
>>116
時々スレに書き込んでる人で会話にならないのがいる。
少し上にも特徴的なのが・・・。
118名無しさん@お腹いっぱい。:2013/11/11(月) 19:40:59.11 ID:9keEvpOM0
!?オレもキレられるんだw
同ID相手にわざわざ
>同一人物だと思うが
とか言うからもしかしたら知らないのかなぁと思ったんだけど

もし「仮に」、
>会話噛み合ってないなぁw
の方に突っかかってオコなんだったら、それこそ国語が……
119名無しさん@お腹いっぱい。:2013/11/11(月) 19:46:35.21 ID:o5+fta200
どっちもどっちにしか見えないけどな
付属してないって言われて、今ある場所を見つけてきたんだから
間違いを指摘するだけよりもよっぽど有意義だと思うよ
120名無しさん@お腹いっぱい。:2013/11/11(月) 19:57:23.09 ID:2yW1lBYX0
>>118
ああ誤解させちゃったごめんなさいww ID:JduWIw5T0です。
名指しするのもアレだから曖昧に書いたのが失敗だった。
スレ汚し失礼しました。
121名無しさん@お腹いっぱい。:2013/11/11(月) 20:25:48.06 ID:64SiAhDR0
アンカーミスが混乱をうんでる
122名無しさん@お腹いっぱい。:2013/11/11(月) 20:29:25.85 ID:3Ouxq7Pu0
誰も彼も混乱してら
123名無しさん@お腹いっぱい。:2013/11/11(月) 20:41:04.23 ID:u9ftSiTp0
蛇足が多すぎ
括弧の話題の方がまだ建設的だ
124名無しさん@お腹いっぱい。:2013/11/11(月) 22:24:17.09 ID:2eN3Ej5Z0
>>125
ホラ
力抜けばそれだけ楽になるでしょ?
125名無しさん@お腹いっぱい。:2013/11/11(月) 22:27:29.02 ID:/X1j4cqa0
>>111
普通はこう
IfWinExist, , , ,
{
}

邪道だけどこういう書き方ができなくもない(最後の , はIfWinExistとは関係ない)
IfWinExist, , , , , {
}
126名無しさん@お腹いっぱい。:2013/11/11(月) 22:46:17.24 ID:aO9uH+Y50
>>125
なるほどサンキュー、勉強になるよ。




おやすみ(´・ω・`)
127名無しさん@お腹いっぱい。:2013/11/12(火) 18:46:02.31 ID:UAyBMDZq0
マウス(カーソル)の位置じゃなくて
カーソルの位置(?)を取得するにはどうすればいいんでしょうか?

たとえばブラウザのアドレスバーに何かタイプしてENTERするとき
カーソルがアドレスバーの位置にあればALT+ENTERにしたいです
128名無しさん@お腹いっぱい。:2013/11/12(火) 21:11:11.93 ID:Yc1HB9nl0
>>127
A_CaretX と A_CaretY かな
ただし、Wiki に
>一部のウィンドウではキャレット座標が実際の位置と異なるものを返す場合がある。
>FireFoxなど独自描画を行っているものはキャレット位置を取得できない事がある。
とあるので、使っているブラウザによってはダメかもしれない
http://ahkwiki.net/Variables
129名無しさん@お腹いっぱい。:2013/11/12(火) 21:58:10.41 ID:UAyBMDZq0
ありがとうございます<(_ _)>
確かにFirefoxでは無理でした Chromeでも正確な値は取得できないみたいです
130名無しさん@お腹いっぱい。:2013/11/13(水) 10:15:27.62 ID:f+Nw+fu90
カーソル(キャレット)の位置より
アクティブな(≒その位置にカーソルがある)コントロールのクラス名で判断するのがいいんじゃないかね
やったことないけど
131名無しさん@お腹いっぱい。:2013/11/13(水) 11:01:15.53 ID:Kqgc6YmM0
そのアイデアだと
日本語入力→変換→ENTER でもALT付きになるじゃないか
132名無しさん@お腹いっぱい。:2013/11/13(水) 12:39:11.95 ID:b8f6krUA0
うーん、firefoxを一度RAMディスクに書き出してから起動したいんですが書き出し処理の終了を待たずにfirefoxが起動してしまいます

run,RAMdisk.ffs_batch ;DropboxからRAMに書き出し。外部アプリケーション
SetTitleMatchMode 2
DetectHiddenWindows On
Process,WaitClose,FreeFileSync_x64.exe   ←どうもこれをすっ飛ばして起動処理に入るようなんです
Run,firefox起動処理
Process, Priority, %NewPID%, AboveNormal

なにか間違ってますでしょうか
133名無しさん@お腹いっぱい。:2013/11/13(水) 12:39:30.36 ID:GKnPy8OAi
MouseGestureL.ahk の専用スレ立てたので、一応お知らせ。

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
http://anago.2ch.net/test/read.cgi/software/1384313234/
134名無しさん@お腹いっぱい。:2013/11/13(水) 14:29:55.78 ID:wCIurgL70
>>132
1行目でRunした後、2-4行目は一瞬だからFreeFileSync_x64.exeが起動する前に4行目が実行されてるんじゃない?
4行目の前に適当にSleep入れるか↓追加でどう?
Process,Wait, FreeFileSync_x64.exe
135名無しさん@お腹いっぱい。:2013/11/13(水) 16:00:59.94 ID:b8f6krUA0
>>134
お、うまくいきましたありがとうございます
136名無しさん@お腹いっぱい。:2013/11/13(水) 16:49:13.23 ID:wCIurgL70
>>135
書き忘れてたけど、RunWaitでうまく処理終了が待てるならそっちの方がいいかも
137名無しさん@お腹いっぱい。:2013/11/14(木) 14:46:14.34 ID:70uZZmDc0
upボタンを連続して押して特定のアイテムを上に持って行こうとしましたができませんでした
ボタンを1回押したらlistviewのアイテムをクリックしないとupボタンが動作しましせん
ボタンを押したあと選択箇所が移動しないのもその原因だと思うのですがよくわかりません
どこを修正すればいいのでしょうか

Gui, Add, ListView, r10, index|number
loop, 10
{
Random, rand, 1, 10
LV_Add(, A_Index, rand)
}
Gui, Add, Button, gUp, Up!
Gui, Show
return

Up:
Gui, Submit, NoHide
below:=LV_GetNext(, "F"), above:=below- 1
LV_GetText(t1,below,2), LV_GetText(t2,above,2)
LV_Modify(below,-Select, ,t2), LV_Modify(above,Select, ,t1)
return
138名無しさん@お腹いっぱい。:2013/11/14(木) 19:17:27.10 ID:fSUAmxD/0
>>137
後もう少しで完成する、問題点は以下の通りがんばれ〜。

*関数なのでオプション名を "" で文字列にしないと変数参照になっている
*オプション Focus が足りない
*一番上になった場合何もしない処理が足りない

LV_Modify(below,"-Select -Focus", ,t2), LV_Modify(above,"Select Focus", ,t1)
139名無しさん@お腹いっぱい。:2013/11/15(金) 13:15:09.73 ID:HLAQQ9P90
環境が変わってもIEを起動したいんですけど
%ProgramFiles%だとファイルが見つからないと言われます
おとなしく絶対パス指定しないとダメなんでしょうか?
140名無しさん@お腹いっぱい。:2013/11/15(金) 13:51:00.01 ID:PErdqdg50
>>139
Run, iexplore.exe
これだけでOKだと思うけど
141名無しさん@お腹いっぱい。:2013/11/15(金) 15:03:29.90 ID:HLAQQ9P90
>>140
マジデスカ
142名無しさん@お腹いっぱい。:2013/11/15(金) 15:06:25.52 ID:HLAQQ9P90
マジデスタ

ありがとうございます助かりました
143名無しさん@お腹いっぱい。:2013/11/15(金) 15:53:10.45 ID:ar/doy2G0
>>138
できました!感謝です!
144名無しさん@お腹いっぱい。:2013/11/15(金) 16:44:40.43 ID:ZpjJqT760
64bitOSに変えた?
俺も同じ状態になったからとりあえず
%A_ProgramFiles% (x86) で代用してるわ
"C:\Program Files (x86)"を直で指定する組み込み環境変数ってあるんかな
145名無しさん@お腹いっぱい。:2013/11/15(金) 17:45:23.62 ID:ZlJjRCAZ0
ifexist,%systemroot%\syswow64
{
64bitOSで走らせる処理
}
else
{
32bitOSで走らせる処理
}
で分岐はできるぞ。
要するにsyswow64が存在するかどうかをチェックしてやればいいわけで
これで64bit、32bitそれぞれに分かれてるプログラムの自動起動もできるようになる
146名無しさん@お腹いっぱい。:2013/11/15(金) 18:14:46.33 ID:z0tVrYIF0
>>145
組み込み変数追加されてるぞ
A_Is64bitOS (OSが64-bitなら「1」、32-bitなら「0」)
ttp://ahkwiki.net/Variables
147名無しさん@お腹いっぱい。:2013/11/15(金) 18:20:23.78 ID:ZlJjRCAZ0
なん、だと・・・

ありがたく使わせてもらいます。ありがとう!
148名無しさん@お腹いっぱい。:2013/11/15(金) 20:57:10.67 ID:AqO+XN+s0
なんかのアプリで編集しようとしてnotepad.exeで開こうとしたら
サクラエディタに変更させるようなことはできないですか?
149名無しさん@お腹いっぱい。:2013/11/15(金) 21:01:25.11 ID:ZlJjRCAZ0
http://www.crystal-creation.com/software/tool/system/auto-hot-key/setup/

このへんどぞー
困らないならahkファイルをそのまま関連付けて、Runコマンドでahkpassを指定して引数でahkファイル選択して云々とかでもいいとは思う
150名無しさん@お腹いっぱい。:2013/11/15(金) 21:08:11.85 ID:fT/a9cih0
これはTerapadの方法だけど、こういうことをやりたいってことでしょ?
http://okwave.jp/qa/q3936777.html
リンク先に書かれている tp.ini の中身を他のエディタ(サクラエディタ)のパスに書き換えれば
サクラエディタが起動するようにも出来るんだけどね。

話はそれたけど、ahkで同じようなラッパーを作ってnotepad.exeと入れ替えれば出来るよ
151名無しさん@お腹いっぱい。:2013/11/15(金) 21:16:40.99 ID:z0tVrYIF0
>>148
サクラエディタの関連付け変更すればいい
152名無しさん@お腹いっぱい。:2013/11/15(金) 23:37:40.72 ID:QdLf00QQ0
今日から使い始めてまだ全然使いこなせてないが、
これしゅっごいね
世界が変わったわ
153名無しさん@お腹いっぱい。:2013/11/16(土) 04:09:07.76 ID:XVNmzA0x0
Windows 8.1にしたら
Send,!{Tab}
とか
Send,{Alt Down}{Tab}{Alt Up}
なんかが効かなくなったんだけど使えてる人いる?
管理者権限で実行してもダメなんだけど
154名無しさん@お腹いっぱい。:2013/11/16(土) 04:15:11.74 ID:/DSb0fi40
>>153
解決したいなら環境ぐらい全部書こうや
155名無しさん@お腹いっぱい。:2013/11/16(土) 07:52:21.20 ID:XVNmzA0x0
>>154
いや8.1で使えてる人がいるかどうかだけ聞きたいんだ
他の人が使えてるならこっちの問題だからあれこれ試してみるけど、
8.1で非対応になっちゃったのなら時間の無駄だからね
ちなみに他のキーストロークのSnedは正常動作している
Alt絡みでもね
156名無しさん@お腹いっぱい。:2013/11/16(土) 08:55:12.96 ID:SGeYgS4w0
いやあのね、そうあからさまに自分だけ良ければいいって言われても…
これから8.1にしようとしてる人もいるだろうし他の人の参考にもなるんだから
ちゃんと情報だそうや
せめてAHKのバージョンくらい書くのが礼儀でしょ
157名無しさん@お腹いっぱい。:2013/11/16(土) 11:12:33.29 ID:XVNmzA0x0
もう面倒だから自分で調べたわ
8.1 というかWin8だとAlt+Tabは効かないらしい
解決策としてAutoHotkey_L作者が作った↓のスクリプトで
AutoHotkey.exe自体にパッチを当てると使えるようになる
http://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/

ってことで試したら確かに直ったよ
他にも管理者権限のウィンドウも操作出来たり、SendPlayが
使えるようになったりするらしい
ただしAutoHotkey.exeはProgram FilesとかのOSが信頼する
場所に置かないと効果が出ない
158名無しさん@お腹いっぱい。:2013/11/16(土) 19:17:21.97 ID:/DSb0fi40
UACをOFFにすればいいだけじゃないか?
159名無しさん@お腹いっぱい。:2013/11/16(土) 21:36:52.37 ID:9zWik5h40
UACオフとかないわー
ひくわー
160名無しさん@お腹いっぱい。:2013/11/17(日) 08:49:13.81 ID:O37TPfeO0
そりゃUAC OFFにすりゃAHK以外でも色んな問題が解決するわなw
自分がそれで良いと思うならそうすりゃ良いよ
だが人には勧めんな
161名無しさん@お腹いっぱい。:2013/11/17(日) 10:08:04.14 ID:37z1dVEm0
firewallとhipsで管理すりゃ
UACとかいらなくね
162名無しさん@お腹いっぱい。:2013/11/17(日) 10:53:15.63 ID:spOsTE5/0
Windows8の問題っていうより、Vista以降の仕様じゃね
163名無しさん@お腹いっぱい。:2013/11/17(日) 13:19:12.84 ID:nP8Zxfpa0
え?みんなUACとかどういう設定にしてる?
当たり前のようにオフにしてたわ
164名無しさん@お腹いっぱい。:2013/11/17(日) 13:25:18.19 ID:6vjG/kgD0
AHK使う上でどうにもならなくてUACは切ることにした
>>157のパッチは初めて知ったけど、バージョン上がるごとにパッチあてるんじゃめんどいし
このままOFFでいいかな
165名無しさん@お腹いっぱい。:2013/11/17(日) 14:53:11.38 ID:kQ6OtSac0
NortonUACェ……
166名無しさん@お腹いっぱい。:2013/11/17(日) 17:53:58.67 ID:dM2lh/9X0
UACって肝心のセキュリティー性能が低い上に弊害を多発させるからそのまま使う奴の気が知れない。
他のセキュリティーソフトの方が性能良い、弊害無いから普通はそっち使うよなw
自分はCOMODO(Firewall+HIPS フリーソフト)使用。
167名無しさん@お腹いっぱい。:2013/11/17(日) 18:09:39.38 ID:k7PszIJ60
そもそも自分だけのPCの場合は邪魔だしな
でも家族で使うとか会社で使うなら切るべきものじゃない
168名無しさん@お腹いっぱい。:2013/11/17(日) 19:09:25.72 ID:u1WcORIm0
まあ脱初心者したくらいでみんな通る道かもね>UAC OFF
169名無しさん@お腹いっぱい。:2013/11/17(日) 19:56:40.55 ID:sFdMuGQe0
AHKに関連して語るならまだしも、On/Offに伴うセキュリティ的な話題とかならよそでやれ
170名無しさん@お腹いっぱい。:2013/11/17(日) 21:33:44.99 ID:fhX8uY3m0
firewall と UAC は同列に話すようなもんじゃないが
171名無しさん@お腹いっぱい。:2013/11/17(日) 21:38:08.02 ID:KDQ403jh0
そういえばUACを回避するパッチをlexikosがフォーラムに出していなかった?
172名無しさん@お腹いっぱい。:2013/11/17(日) 21:39:24.65 ID:una8jQOX0
話を元に戻そう

ポータブルユーザー向けに「相対パス起動バッチ」を作れるAHKを作ろうと思うが、需要あるかな?

まぁ、まだ考えてる途中なんだけども
173名無しさん@お腹いっぱい。:2013/11/17(日) 21:55:44.22 ID:k7PszIJ60
>>172
ニーズ狭いなオイ
174名無しさん@お腹いっぱい。:2013/11/17(日) 22:27:31.40 ID:OKOOTUfZ0
狭いニッチを埋めるのこそAHKが適してると思うけどね
175名無しさん@お腹いっぱい。:2013/11/18(月) 01:15:03.95 ID:q7SDJwhc0
ホットキー追加したら何時の間にか古いホットキーが動かなくなってたりするのは仕様なんだろうか
どっかで奪ってるのかなぁ
176名無しさん@お腹いっぱい。:2013/11/18(月) 12:29:29.97 ID:Lu28XJXP0
>>172
自分も色々トラブった。例えばMouseGestureL.ahkでahk関連付けなしだと
1MouseGestureL.ahk をコンパイルしたMouseGesureL.exe ⇒ 当然駄目
2Autohotkey.exe 直下のAutohotkey.ini に#include MGL.ahk ⇒ 駄目
3Run "%A_ScriptDir%\MGL.ahk" ⇒ (行けると思ったけど)駄目

4結局、MGL.ahkのアイコンをAutohotkey.exe に食わせてしのいでる。
>>172 需要あるからインスコ・関連付けなしにどうにかできるやつ作ってくれ
177名無しさん@お腹いっぱい。:2013/11/18(月) 15:05:38.93 ID:44Zvdgh/0
意外と躓いてる人いるのかな?簡単にメモ書いとく

MouseGesture.bat
↓書いてること
start ..\AutoHotkey_LPortable.exe MouseGestureL.ahk

実際のところこういう行を書いたbatがあれば使える
batがあるフォルダの一つ上の階層のAutoHotkey_LPortable.exeにbatがあるトコと一緒のフォルダに入ってるMouseGestureL.ahkを送って起動する

ポータブルAppsにAutoHotkey_LPortable.exeはある
アップデートはApp\AutoHotKey_Lの中にAutoHotkey.exe、AutoHotkey64.exeがあって、バージョンアップは本家サイトからDLしたものを直に上書きすればok
64はリネームでおk

これでbatを起動すれば関連付けもドライブレターも関係なしでahkがうごかせる
178名無しさん@お腹いっぱい。:2013/11/18(月) 19:37:08.56 ID:m/oJB8p00
ポータブル環境でやる場合はいくつか方法がある。
どれが最適なのかは各自の環境で判断してほしい。

--exeから起動--
 使用したいスクリプトと同じフォルダ内にAutoHotkey.exeを同名にリネーム(MouseGestureL.ahkの場合)
AutoHotkey.exe → MouseGestureL.exe(.ahkと同じ場所に保存)

--RunでAutoHotkey.exe指定--
 Run,"C:\〜省略〜\AutoHotkey.exe" "C:\〜省略〜\MouseGestureL\MouseGestureL.ahk"

--バッチファイル(.bat)から起動--
テキストファイル(.txt)に以下のコマンドを書いて拡張子を変更(.bat)
 start "C:\〜省略〜\AutoHotkey.exe" "C:\〜省略〜\MouseGestureL\MouseGestureL.ahk"
179名無しさん@お腹いっぱい。:2013/11/18(月) 19:45:23.43 ID:Xr6kemFF0
>>176-177
横からだけど、怒らず聞いて欲しい初心者っぽい疑問だけど、
MouseGestureL.ahkのフォルダにAutoHotkey.exeをコピーして、
そのexeを「MouseGestureL.exe」にリネームし、それを起動する。

これでも駄目ってこと?
180名無しさん@お腹いっぱい。:2013/11/18(月) 19:47:13.21 ID:Xr6kemFF0
先に書かれてしまった…(´・ω・`)ショボーン
181名無しさん@お腹いっぱい。:2013/11/18(月) 20:10:59.26 ID:m/oJB8p00
追加、おそらくこれで全部

--スクリプトの実行ファイル化--
 **.ahk を ahk2exe.exeを使いスクリプトを実行ファイル化

--AutoHotkey.exeにドラッグ&ドロップ--
 **.ahk を AutoHotkey.exeにドラッグ&ドロップ
182名無しさん@お腹いっぱい。:2013/11/18(月) 20:12:35.00 ID:fX+rdGjS0
>>178
exeからの起動の例ってもしかして
autohotkey.exeがリネームされていたらその名前.ahkを実行できるってこと?
かなり便利な機能なのに知らなかった
183名無しさん@お腹いっぱい。:2013/11/18(月) 22:02:23.25 ID:Xr6kemFF0
相対パスで思い出したけど、AutoHotkey.exeフォルダ配下に
名前を「include」にしたフォルダを配置すると
そこに置いた(関数などの)ahkファイルをインクルードする時に
#Include を相対パス指定できるとかの特権はないの?

やるとしたら、
#Include %A_AhkPath%\include\kansu.ahk
これしかない?まあ、これでも文句はないけど。
184名無しさん@お腹いっぱい。:2013/11/18(月) 22:14:01.45 ID:hRoSj7CU0
Lib
185名無しさん@お腹いっぱい。:2013/11/18(月) 22:49:31.47 ID:Xr6kemFF0
>>184
おう「Lib」とな。
しかも#Includeの記述さえ不要とは…
教えてくれてありがとう。
186名無しさん@お腹いっぱい。:2013/11/19(火) 08:25:04.45 ID:7L3k8gzn0
#Includeなしでいけるのは関数だけじゃなかったっけ?
なんにしろLibフォルダからの相対パス指定で#Includeはいけたハズ
187名無しさん@お腹いっぱい。:2013/11/19(火) 10:29:37.07 ID:Lh9KvNx10
知りたいことがあったらまずwikiで該当項目見なさいよ
こんなに情報が充実しているフリーソフトなんて珍しいというのに
188名無しさん@お腹いっぱい。:2013/11/19(火) 12:30:41.05 ID:fM0m1mZj0
#include %A_ScriptDir%
#include ..\MyScript\hogehoge.ahk

で相対指定できてるが
189名無しさん@お腹いっぱい。:2013/11/19(火) 12:45:15.59 ID:Rhk1Izc70
とりあえず魔法の言葉SetWorkingDir,%A_ScriptDir%をおぼえればいい
Menu,Tray,icon,%A_ScriptDir%..\..\..\Icon\Icon_169.ico
あとこれはアイコンの場所指定なんだけども、この行を見てもらえれば相対パスはイケることがおわかりいただけると思う
190名無しさん@お腹いっぱい。:2013/11/19(火) 19:53:02.46 ID:wNIYddS70
気になってたんだが
>>172の相対パス云々っていったい何をするためのパッチなん?
191名無しさん@お腹いっぱい。:2013/11/19(火) 20:51:04.25 ID:isr4byqx0
もしかしてスレ違いになるかもだけど、「..\」とか「\..」(の意味や書き方)がよく分かんない。
192名無しさん@お腹いっぱい。:2013/11/19(火) 20:57:04.18 ID:61RbzuhO0
>>191
PCのパス指定の基本なのでググって勉強してらっしゃい。
検索ワード:絶対パス 相対パス フルパス
193176:2013/11/20(水) 23:07:21.26 ID:IViM/TQQ0
>>172
私のせいで変な方向に話がそれたとしたらごめんなさい。
>>177-182
解決しました.ありがとう
194名無しさん@お腹いっぱい。:2013/11/20(水) 23:19:56.96 ID:xBePS8Uv0
SHIFTキーを押されるまで処理を待つ方法なんてありますか?
大量のローカルログをOperaで表示させようとしています。
今まではローカルログをOperaで事前に一つづつ表示させておくスクリプトを
AHKで書いていて、多機能マウスの戻るボタンで戻って表示させていたのですが、
ページ数が多すぎてだんだんと遅くなってくるようになってしまいました。

そこでスクリプトを開始した後は、SHIFTキーとCtrlキーが同時に押されている間は
ログページを順番に表示させ、押されていない間は待つなんてことができるのでしたら、
やり方を教えて下さい。

今現在押されているキーなんて解る方法はありますか?
195名無しさん@お腹いっぱい。:2013/11/20(水) 23:38:23.77 ID:+i0au6Rz0
autohotkey_Lの一番新しいバージョンを使っています
こういうスクリプトを作ったらエラーになりました
test()
return

test(){
Run, www.autohotkey.com
}
クラスが登録されていません、と出るのですがどこがおかしいのでしょう
196名無しさん@お腹いっぱい。:2013/11/20(水) 23:40:59.28 ID:OofHMdcO0
>>194
keywaitのオプションつかってエラーレベルで判定
もしくはgetkeystateでいけんじゃないかなー?
197名無しさん@お腹いっぱい。:2013/11/20(水) 23:42:33.55 ID:IpEjnz5u0
>>194
GetKeyState + Loop か SetTimer でキー監視したらいいんじゃない?

やりたいことが決まったら該当しそうなコマンドがあるのか確認。
むしろ今後のためにも全て目を通した方がいい。
ttp://ahkwiki.net/Commands_Category
198195:2013/11/20(水) 23:52:58.72 ID:+i0au6Rz0
ブラウザ側の設定を変更したらエラーメッセージが消えました
スレ汚し失礼しました
199名無しさん@お腹いっぱい。:2013/11/21(木) 11:19:28.43 ID:dWWNh+SH0
ネトゲのXGENCODEってマクロ・チート対策に引っかかるようになってしまった
マクロも使ってないしpause sprictしても落とされる もうやめるわ
ネトゲを
200名無しさん@お腹いっぱい。:2013/11/21(木) 11:37:32.13 ID:o/8Ro1rc0
>>199
よく言った!それでこそ生粋のホモルーデンスだよ!
201名無しさん@お腹いっぱい。:2013/11/21(木) 12:50:41.93 ID:9zUhsSJq0
>>199
最近、ゲームでAutohotkeyを利用している動画が山ほどツベに載せられてるから
どこもかしこも対策に動き出してるのかもしれん。
202名無しさん@お腹いっぱい。:2013/11/21(木) 14:30:35.51 ID:sABHiha50
autohotkeyのforumにゲーム用のカテゴリが設けられたぐらいだしね
203名無しさん@お腹いっぱい。:2013/11/21(木) 15:02:01.94 ID:HN7FYLf30
格ゲーも規制されちゃうんかね・・・
キーボードゲーマーなんでHitbox配列作ったんだけどこれも規制されちゃうとこまるなぁ
204名無しさん@お腹いっぱい。:2013/11/21(木) 20:19:43.77 ID:V+B1gFkC0
PCで格ゲーって言うほど盛り上がってなさそうだけど
205名無しさん@お腹いっぱい。:2013/11/21(木) 22:10:38.53 ID:HN7FYLf30
左右のボタンが押されてる時ニュートラルにするスクリプト便利なんよ
ヨガフレイムコマンドの精度あがるんよ
206名無しさん@お腹いっぱい。:2013/11/22(金) 10:15:08.40 ID:wWYPEutH0
使えなくするなら代わりの物を教えてほしいよね
対策に引っかかる常駐ソフトをゲーム起動時に落とす為にAutohotkey使ってたのに、本末転倒
けどAutohotkeyの便利さがすごいからやめられない止まらない
207名無しさん@お腹いっぱい。:2013/11/23(土) 13:51:23.92 ID:gnR+5Fxb0
対策されたゲームが、Autohotkeyのどの部分を見て判断しているのか知らないけど
仮にウィンドウクラスを見ているとしたら、Autohotkey.exeをバイナリエディタで書き換えれば回避出来るよ。
実際はそんな簡単な問題でもなさそうだけど。
208名無しさん@お腹いっぱい。:2013/11/23(土) 16:02:13.44 ID:MHBddyEo0
LLフックだろうね
209名無しさん@お腹いっぱい。:2013/11/24(日) 21:56:38.57 ID:6MZ1sECB0
連続したホットキーWheelDownの最後にだけ処理を実行するにはどうしたらいいんでしょうか?

WheelDown::
  MsgBox, ホイールダウン

ホイールをまとめて回転してしまうと何回も実行されてしまうのを防ぐため
50ms間ができたら実行というようなことをしたいです
210名無しさん@お腹いっぱい。:2013/11/24(日) 22:03:42.69 ID:6l7gRGw60
settimer,ラベル,-50

かな
211名無しさん@お腹いっぱい。:2013/11/24(日) 22:26:56.93 ID:6MZ1sECB0
>>210
ありがとうございます
そういうのどうやったらパッと思いつくんですか?
賢いです頭良いです参りましたー
212名無しさん@お腹いっぱい。:2013/11/24(日) 22:46:53.44 ID:GF2TaHiu0
>>209
SetTimerだと経過後実行なのでレスポンス悪くなる。
50msだと問題ないが間隔大きくする場合はこっちの方がいいかも。

TickCount =
Return

WheelDown::
ToolTip
If A_TickCount - 500 > TickCount
ToolTip OK
Else
ToolTip NO
TickCount := A_TickCount
Return
213名無しさん@お腹いっぱい。:2013/11/24(日) 23:17:21.45 ID:6MZ1sECB0
>>212
ありがとうございます
賢いですー

これはホイール回転の最初の1回目に実行する方法ですかね?
>>209が分かりにくいですがホイールをまとめて回転させた最後に
1回だけ実行させるにはSetTimer方式しかないでしょうか?
勘違いでしたらすみません
214名無しさん@お腹いっぱい。:2013/11/24(日) 23:23:38.83 ID:4heix6ya0
#IfWinActive ahk_class hoge はひとつしか登録できないんでしょうか?
複数のahk_classに同じものを登録したい場合まとめて設定できますか?
215名無しさん@お腹いっぱい。:2013/11/24(日) 23:26:46.08 ID:6l7gRGw60
>>214
#IF winactive("ahk_exe hoge") && winactive("ahk_exe hige")

みたいな
216名無しさん@お腹いっぱい。:2013/11/24(日) 23:30:57.46 ID:4heix6ya0
>>215
ありがとう 試してみます
217名無しさん@お腹いっぱい。:2013/11/25(月) 00:50:14.57 ID:dyr+O2fS0
>>209
参考になるか分からんけど。

AutoHotkeyを流行らせるページ → 使用例 → 何も操作をしていないときに実行
http://ahk.xrea.jp/Examples.html
218名無しさん@お腹いっぱい。:2013/11/25(月) 20:49:51.60 ID:4VOX6Bwt0
>>217
サンクスです!
勉強になります
219名無しさん@お腹いっぱい。:2013/11/27(水) 00:48:35.56 ID:MOrY+w/n0
いままで日本語オフにしたいときに
IME_OFF("A")
って入力してたんですが、バージョンアップかなにかの節目を境に
上のを書き込むと
error : call to nonexistent function
ってでてエラーがでてしまいます。
IME_Func.ahkはautohotkey.exeがあるフォルダにあります。

日本語オフをするときには今はどうやるのがスタンダードなのでしょうか?
おしえてください。
220名無しさん@お腹いっぱい。:2013/11/27(水) 01:03:11.13 ID:8MuF3GKU0
>>219
MouseGestureは専用スレでよろしく
誘導された事と再度質問を書こう。

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
ttp://anago.2ch.net/test/read.cgi/software/1384313234/
221名無しさん@お腹いっぱい。:2013/11/27(水) 01:05:00.79 ID:8MuF3GKU0
と思ったらただのIMEスプリクトか失礼。
222名無しさん@お腹いっぱい。:2013/11/27(水) 01:08:37.93 ID:IXvseLy+0
eamat @Cabinet - IME.ahk
http://www6.atwiki.jp/eamat/pages/18.html
ime_func.ahkはわからないけれど
ime.ahkならIME_SET(FALSE) でいいんじゃないかな
223名無しさん@お腹いっぱい。:2013/11/27(水) 01:14:04.47 ID:8MuF3GKU0
>>219
error : call to nonexistent function
エラー:存在しない関数の呼び出し

置く場所や記述ミスじゃない?
 %A_MyDocuments%\AutoHotkey\Lib\
 {AutoHotkey.exeのあるディレクトリ}\Lib
 %A_ScriptDir%/Lib

8.1 ライブラリディレクトリ
ttp://ahkwiki.net/Function
224名無しさん@お腹いっぱい。:2013/11/27(水) 01:33:00.62 ID:tG5dZZAr0
#includeが通ってないぽいかな
あとIME_Func.ahkはかなり古い版なのでAHK_Lに対応してないかも
>222の新版だとLibに入れとけば#includeなしでもいけると思う

使い方は
IME_SET(1) : IME ON
IME_SET(0) : IME OFF みたいな感じで
http://www6.atwiki.jp/eamat/pages/17.html
225名無しさん@お腹いっぱい。:2013/11/27(水) 02:23:57.01 ID:MOrY+w/n0
219です。ありがとうございました。うまくいきました。
ただ二個のことしないと上手く行かなかったように思います。
・LibフォルダにIME.ahkを入れる
・IME_SET(0)にする (IME_SET(FALSE) だと上手く行かなかった。)
222の保存の方法もあまり分からずテキストコピペしたりして試しましたが
IMEオフはなんとかできたっぽいです。
226名無しさん@お腹いっぱい。:2013/11/27(水) 17:11:52.08 ID:FrZA908G0
IME.ahkで現在変換中の状態かどうかを取得するにはどうすればいいですか?
IME窓(漢字の候補)が出てる状態でなく
「ファイル」みたいな一つしか候補がなくてIME窓が出ない単語でも
変換中かどうか取得できるでしょうか?
227名無しさん@お腹いっぱい。:2013/11/27(水) 20:59:40.83 ID:IXvseLy+0
>>226
>>222
>IME 文字入力の状態を返す
かな?
228名無しさん@お腹いっぱい。:2013/11/27(水) 21:18:02.01 ID:FrZA908G0
>>227
ありがとう〜
試してみます
229名無しさん@お腹いっぱい。:2013/11/27(水) 21:49:21.00 ID:FrZA908G0
メモ帳では正しく取得できるのですが
FirefoxやChromeでは常に戻り値ゼロになります
Win7x64です何か改善策ないでしょうか
230名無しさん@お腹いっぱい。:2013/11/27(水) 22:00:40.20 ID:hJltsLV50
>>7Q2
231名無しさん@お腹いっぱい。:2013/11/27(水) 23:29:55.03 ID:tG5dZZAr0
>>229
(IMEの設定 秀丸の例)
http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/070_Env_Edit_Ime.html

ソフト側のIME入力方法が↑ここの「トゥルーインライン入力」のようになってると取得できない
「通常のインライン入力」か「システムライン入力」にしてやる必要があるが、
設定方法はソフト毎に違うしそもそも変更できるかもわからん、個別で確認してみてくれ

MS-Officeの場合は手元の2007までは解除できた、それ以降のバージョンは持ってないのでわからん
>※ MS-Office系で 入力窓のクラス名 を正しく取得するにはIMEのシームレス表示を
> OFFにする必要がある
> オプション-編集と日本語入力-編集中の文字列を文書に挿入モードで入力する
> のチェックを外す
232名無しさん@お腹いっぱい。:2013/11/27(水) 23:56:42.75 ID:FrZA908G0
どうもありがとうー
233名無しさん@お腹いっぱい。:2013/11/29(金) 02:21:22.37 ID:lflsJ3W60
ちょっとなかなか調べても見つからないので聞きたいんですけど、タスクトレイアイコンをダブルクリックした時の挙動を変えるにはどうすればいいでしょう?
234名無しさん@お腹いっぱい。:2013/11/29(金) 02:42:42.07 ID:+F16pq690
Menu, TRAY, Default, MenuItemName
235名無しさん@お腹いっぱい。:2013/11/29(金) 02:44:47.57 ID:G8+3dUdT0
>>233
wiki内検索したらすぐ出たぞ?(タスクトレイアイコン ダブルクリック)
ttp://ahkwiki.net/Menu
236名無しさん@お腹いっぱい。:2013/11/30(土) 01:48:29.15 ID:nKfwT6LB0
質問です
押す度に順に違うキーを送信したいのですが
F1,F2,F3と来て元のF1に戻りません
var = 0
PrintScreen::
if (var = 0) {
  Send, !^+{F1}
} else if (var = 1) {
  Send, !^+{F2}
} else {
  Send, !^+{F3}
}
var += 1
if (var > 2) var = 0
return

どこを直せばいいでしょうか
237名無しさん@お腹いっぱい。:2013/11/30(土) 02:02:37.90 ID:/CTVHw590

if (var > 2)
 var = 0
return
238名無しさん@お腹いっぱい。:2013/11/30(土) 02:13:00.46 ID:nKfwT6LB0
ありがとうございます
次の行に書かないといけないんですね
やっと理解しました
239名無しさん@お腹いっぱい。:2013/11/30(土) 02:13:18.54 ID:QMrAE7z20
>>238
もう少しシンプルに書いた方が
可読性や保守性いいと思うが・・・。
240名無しさん@お腹いっぱい。:2013/11/30(土) 02:33:07.58 ID:nKfwT6LB0
すいません
C言語書いてる癖が出てしまいました
241名無しさん@お腹いっぱい。:2013/11/30(土) 08:10:52.81 ID:GnWsZW4n0
謝る必要なんてないよ
AHKの構文仕様もあまりほめられたものではないしな
242名無しさん@お腹いっぱい。:2013/11/30(土) 10:09:13.26 ID:JlLJ9omk0
質問です。拡張1でコピー ダブルクリックで選択した文字を即検索は設定してます。
webページや2chブラウザで見る改変できない文字は、Wクリックすると想定通り動きます。
しかし、メモ帳やexcel等文字を入力改変できる状態で使用すると、
「vk1Dsc07B」が入力されてしまい、使い物になりません。
無変換キーを押すと問題なく出来る様にはなってるのですが、どこを修正したらいいでしょうか?


#MaxThreadsPerHotkey,2
XButton1::
If(A_PriorHotkey = A_ThisHotkey) And (A_TimeSincePriorHotkey < 500){
Flag = 0
Send,vk1Dsc07B::
Backup := ClipboardAll
Clipboard =
Send,^c
ClipWait,1
Run,https://www.google.co.jp/search?q=%Clipboard%
Clipboard := Backup
Return
}Else{
Flag = 1
Sleep,50
If(Flag)
Send,^c
}
Return
243名無しさん@お腹いっぱい。:2013/11/30(土) 13:45:05.00 ID:kIvii5lj0
おそらくどっかからの丸コピコードで全然理解してないんだろうけど
vk1Dsc07B で検索して引っかかる箇所は一行だけなんだから、修正箇所は分かるでしょ

わかってないのは修正内容の方だと思うが

無変換キー送信したい → Sendの特殊キーの項目を確認
http://ahkwiki.net/Send#.E7.89.B9.E6.AE.8A.E3.82.AD.E3.83.BC.E5.90.8D.E4.B8.80.E8.A6.A7

なんで無変換キー送信するのか → IME OFFが目的? → >219-225
244名無しさん@お腹いっぱい。:2013/11/30(土) 21:38:09.30 ID:+aAc1ReT0
MsgBoxダイアログを指定した座標に作ることはできないでしょうか?
MsgBox作成後に移動しようと思いましたがウィンドウじゃないからなのかWinMoveで移動できませんでした・・・
245名無しさん@お腹いっぱい。:2013/11/30(土) 23:25:50.11 ID:QMrAE7z20
>>244
MsgBox表示中は現在のスレッドは一時停止される。
別スレッドで監視/移動 または GUIを自分で作ればいい。

F1::
SetTimer,Move
MsgBox
Return

Move:
WinWait,ahk_class #32770
WinMove,ahk_class #32770,,300,300
SetTimer,Move,OFF
Return
246名無しさん@お腹いっぱい。:2013/12/01(日) 00:47:10.77 ID:rr/QNjsv0
>>245
そうなんですね
本当にありがとうございました
247名無しさん@お腹いっぱい。:2013/12/02(月) 20:27:22.61 ID:UoaosTTM0
WheelAccel.ahkの話はMGLスレよりこっちの方が適してると言われたのでこっちでもう一度質問。

WheelAccelの理想の動きはイメージで言うと下のグラフのような動きなんだけど
(徐々に加速し、スクロールが停止するちょっと前から徐々に減速する様な感じ)
http://homepage1.nifty.com/rikiya/images/software/117_4.gif
現実問題、WheelAccel.ahkの何処をどのように変えると実現します?

それから、この中に含まれるWheelAccel.ahkが最新バージョン?
http://mousegesturel.googlecode.com/files/Examples_52.zip
248名無しさん@お腹いっぱい。:2013/12/02(月) 23:30:06.75 ID:zqwxjKTK0
ソースコード付属のフリーソフトの改良方法を、フリーソフトを書いた言語のスレで
質問されても本当に困ってしまうわけですが。
その、WheepAccel.ahkと、MGLのソースコードを全部読んで返事してほしいということですか?
249名無しさん@お腹いっぱい。:2013/12/02(月) 23:48:48.95 ID:zqwxjKTK0
>>248
くそ、なんか後味悪い

WA_Throttle()の中身弄ったらいけるんだろ

スクロールが停止する前ってのがわけわからんけどな。
ホイールが停止するのを感知しろとでもいうのか、それともホイールが停止してからも
スクロールのスピードを落としながら停止するまでスクロールしろってことか?
図でいうところのTはホイール操作としてどういう状況なのかがわからんわ
250名無しさん@お腹いっぱい。:2013/12/03(火) 00:01:29.39 ID:Joz+q56x0
WheelAccel.ahkの元になったWheelScroll.ahkを書いたものですが
Scroll.ahkの加速部はここの過去スレで誰かが張ったものを元に制作
Accel.ahkの加速部はIKK…もといmobitan氏が、やっぱりここの過去スレで
別の誰かが張ったものを元に乗せ換えた、という経緯だったと思います

つまり加速に関しては各自欲しい物を適当にもってきてるという状態なので
第三の加速方法の実現方法についてはホイールの加速方法に詳しい方に理論指導ののち
ご自分で入れ込むのがよろしいかと

コード中の具体的な修正箇所はWA_Throttle()を呼び出してる行をコメントにして代わりの加速方法をいれこむか
WA_Throttle() の中を丸ごとすげ替えるかすればOKです
251名無しさん@お腹いっぱい。:2013/12/03(火) 00:27:10.37 ID:5fVa01nj0
ロジクールの高速ホイールつかえばいいんじゃね
252247:2013/12/03(火) 00:41:20.18 ID:gs5BzMAw0
>>250
サンキューでした。
どこまでやれるかガンバってみるわ。

>>248-249
気分悪くさせてしまったなら悪かった、謝るよ。
それから、あんまり火病ると体に良くないよ。
253名無しさん@お腹いっぱい。:2013/12/03(火) 07:06:26.67 ID:132GeGa70
質問するだけしてレスついても反応なしのやつとか
どっかで拾ったソースの改良丸投げ依頼とかそんなの多いね
254名無しさん@お腹いっぱい。:2013/12/03(火) 13:14:49.66 ID:pS1lIgy+0
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

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

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



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

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

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

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

いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。
257名無しさん@お腹いっぱい。:2013/12/04(水) 12:30:17.43 ID:9w4g5HVI0
そして誰もいなくなった
258名無しさん@お腹いっぱい。:2013/12/04(水) 15:06:16.01 ID:EiiyEWJU0
ID:pS1lIgy+0のことは個人感情でしかないんで気にしないでもいいんじゃよ
259名無しさん@お腹いっぱい。:2013/12/04(水) 19:00:32.22 ID:pdCI9Suq0
>>253
即使えるコピペコード期待→wkiの該当コマンドページ張られる
or WinMessageとかDllCallとかWinApiとかポインタがどうとか理解外の答え帰ってきた怖い
って感じなんだろう

ただ、クレクレに見えるレスでもとっかかりがわからんだけの初心者さんもいて
説明ページへのリンク張ると頑張りだす人もいるので
いきなり>254-255張って萎縮させるより、煽りながらもヒント出すツンデレスでやるほうがいいと思う
255は言動が明らかにおかしいチラウラ野郎用なので質問お断りみたいな流れでは張るべきじゃないね
260名無しさん@お腹いっぱい。:2013/12/04(水) 19:02:20.81 ID:pdCI9Suq0
×255は
>256だった
261名無しさん@お腹いっぱい。:2013/12/04(水) 22:19:12.76 ID:JQh1NruY0
このコピペが必要になるとはな・・・
みたいな万が一の事態が起きた時の保険用にか
262名無しさん@お腹いっぱい。:2013/12/05(木) 17:28:40.83 ID:hVYR+JZI0
F1::
  Hoge := A_TickCount - count
  tooltip, A_TickCount=%A_TickCount% count=%count% Hoge=%Hoge%
  count := A_TickCount
  return

一回目のF1押しでHogeが空になってしまいます
static count=0
みたいにしたいのですがコンパイルエラーになります
どうすればいいんでしょうか?
263名無しさん@お腹いっぱい。:2013/12/05(木) 18:40:18.50 ID:92FJxjTK0
>>262
エラーは起こっていないのでコンパイルエラーとは言わない
初回意図しない動作になるのは count の中身が指定されていないから
Hoge := A_TickCount - count → Hoge := 1234 - (空)
式として成り立っていないので (空) が返される。

スクリプト起動時に実行されるAuto-executeセクションで
count = 0 を指定すればいい。

15 スクリプトの起動とAuto-executeセクション
ttp://ahkwiki.net/Scripts
--------------------------------------
count = 0
F1::
  Hoge := A_TickCount - count
  tooltip, A_TickCount=%A_TickCount% count=%count% Hoge=%Hoge%
  count := A_TickCount
  return
264名無しさん@お腹いっぱい。:2013/12/05(木) 19:06:11.77 ID:hVYR+JZI0
>>263
ありがとうございますm(_ _ )m
なるほどAuto-executeセクションに書けばいいんですね

ちなみに
static count=0を書くと私の環境ではコンパイルできないのですがどうしてでしょうか・・・?
[スクリプト仕様]のページを見ると スタティック変数の例↓のように書かれています
AAA(){
 static CalledTimes
 CalledTimes++
 MsgBox,%CalledTimes%回目
}
265名無しさん@お腹いっぱい。:2013/12/05(木) 19:10:53.29 ID:S42OhYbw0
関数内じゃないから
266名無しさん@お腹いっぱい。:2013/12/05(木) 19:18:06.88 ID:hVYR+JZI0
よく分かりましたm(_ _ )m
267名無しさん@お腹いっぱい。:2013/12/08(日) 00:09:08.12 ID:HwtBWHvTP
..
268名無しさん@お腹いっぱい。:2013/12/11(水) 23:18:15.76 ID:VBfa8aHJ0
GUIのEditコントロールにテキストを追記したいのですが質問があります。
アドバイスもらえませんか。  Windows7 64bit, AHK_L v1.1.13.01 64bit

Q1. GuiControlとControlSetTextの違いは?
 ControlSetText, Edit1, %text%, ahk_class AutoHotkeyGUI
 GuiControl, , Edit1, %text%

Q2. 全部Getしてテキストつなげて再Setだと効率悪そうだけど直接追記の方法ある?
 ControlGetText, oldtext, Edit1, ahk_class AutoHotkeyGUI
 ControlSetText, Edit1, %oldtext%%addtext%, ahk_class AutoHotkeyGUI

すんませんがお願いします。
269名無しさん@お腹いっぱい。:2013/12/12(木) 00:32:26.55 ID:jKLh4qEi0
>>268
>Q1. GuiControlとControlSetTextの違いは?
 Guiコマンドで作成したGUIに対しては細かい指定ができる GuiControl[Get] を使うのが普通。
 ControlSetText > 指定したコントロール (GUI、メモ帳なのでもいい)
 GuiControl > Guiコマンドで作成したウィンドウ (細かい指定が可能)

>Q2. 全部Getしてテキストつなげて再Setだと効率悪そうだけど直接追記の方法ある?
 GuiControlGet,Var,,ControlID
 GuiControl,,ControlID,%Var%追加テキスト
270名無しさん@お腹いっぱい。:2013/12/12(木) 00:57:34.13 ID:okQADZym0
>>269
ありがとう。助かった。明日試してみる
271名無しさん@お腹いっぱい。:2013/12/13(金) 04:18:22.59 ID:8uCBpJDm0
処理Aを無限ループさせるスクリプトをGuiで制御させようとしているのですが
Pauseが上手く動作しません

Gui,Add,Button,,Pause
Gui,show

Label1:
 処理A
 Gosub,Label1
return

ButtonPause:
 Pause,,Label1
return

と言った感じに書いてるのですがGuiのPauseで停止は出来るのですが再開することが出来ません
Gui側で停止と再開を制御するにはどのように記述したらいいのでしょうか
272名無しさん@お腹いっぱい。:2013/12/13(金) 06:07:46.79 ID:HWNZLtYL0
>>271
Wiki等説明に書いてあるが Pause はホットキーやホットストリング以外が停止する。
つまりGuiも一時停止しているのでボタンは反応しない、たまたま動いているが Pause 第2引数も間違っている。
ttp://ahkwiki.net/Pause

ループ処理は Loop SetTimer を使うべき。

Gui,Add,Button,,Pause
Gui,Show
Var = 1
TEST = 1
SetTimer,Label1,100
Return

Label1:
 ToolTip,% TEST++
 Return

ButtonPause:
 If Var = 1
 {
  SetTimer,Label1,OFF
  Var = 0
 }Else{
  SetTimer,Label1,ON
  Var = 1
 }
 Return
273名無しさん@お腹いっぱい。:2013/12/13(金) 07:20:03.85 ID:8uCBpJDm0
なるほど!いろいろと勘違いしてたようです。ありがとう
274名無しさん@お腹いっぱい。:2013/12/15(日) 11:46:18.17 ID:Sdf3K9wN0
【AutoHotkey スレッド part16】のレス164
>IMEの状態を間違えて打った時に、入力文字の削除、IMEの切り替え、再入力をキー一発で行う
というスクリプトを参考にしたAスクリプトと、
「文字入力操作に入ったらマウスアイコンを非表示/動かしたら表示する」、
というBスクリプトが有ります。
そのどちらでもコマンド「settimer」と「input」を使用してます。

これらをCというメインスクリプトで#Includeすると、Bスクリプトが動かなくなります。
原因はどちらでも「input」を使用してるせいだとは思いますが、
「input」以外に文字入力を感知するコマンドを見つけられませんでした。

「input」を代替するようなコマンドとか関数ありませんか?
275名無しさん@お腹いっぱい。:2013/12/15(日) 17:53:03.42 ID:oGoZjFg+0
>>274
ない 作れ。
原因が分かっているなら#Includeせずに競合しないように書き直せ。
276名無しさん@お腹いっぱい。:2013/12/16(月) 07:52:55.08 ID:+skMhsJJ0
アプリのスクリプト言語として組み込むような仕組みありますか?
277名無しさん@お腹いっぱい。:2013/12/16(月) 23:27:27.99 ID:k/O+MCiL0
>>276
意味わからなす
278名無しさん@お腹いっぱい。:2013/12/16(月) 23:41:25.41 ID:g9ztIiRs0
>>276
アプリからAutohotkey呼び出せばいいだけじゃね?
279名無しさん@お腹いっぱい。:2013/12/17(火) 12:35:56.56 ID:HF79/rMZ0
今プログラム起動の関数作ってるんですけど、引数受付けてくれないんで困ってます

;プログラム起動処理関数
;存在するならウィンドウアクティブ
ProcessRun(pass,option="",active =""){
SplitPath,pass,exe ;パスを分解してファイル名を取り出す
IfExist,%pass% ;exeが存在するかチェック
{
Process,Exist,%exe% ;プロセスが存在するかチェック。
if (ErrorLevel <> 0){
if(active = 1)
WinActivate,ahk_pid %ErrorLevel%
}else{
Run,%pass%,,%option%
}
}
}

これに”A.exe Bファイル”をいれても動きません
半角スペースから後ろをトリムで切り取るとか出来ませんか?
280名無しさん@お腹いっぱい。:2013/12/17(火) 13:12:16.51 ID:kP0TsYoU0
>>279
RegExReplace() ttp://ahkwiki.net/RegExReplace
正規表現で出来るが、これでいいんじゃない?

ProcessRun(pass,pass2="",option="",active="")
 〜略〜
Run,%pass% %pass2%,,%option%
281名無しさん@お腹いっぱい。:2013/12/18(水) 11:18:48.94 ID:s1lQxVjC0
#If hoge1 := WinExist("ahk_class MozillaWindowClass") or hoge2 := WinExist("ahk_class Chrome_WidgetWin_1")
F1::
Tooltip hoge1=%hoge1% hoge2=%hoge2%
return

どちらのウィンドウも起動している状態でF1を押すと
hoge1が常に1
hoge2が常にカラになってしまうのはどうしてでしょうか?
282名無しさん@お腹いっぱい。:2013/12/18(水) 12:28:18.59 ID:PbPhfpuw0
論理和は式のどれかが真になった段階で真が確定する
→どれかが真になった段階で式の評価をやめるから
283名無しさん@お腹いっぱい。:2013/12/18(水) 12:29:25.19 ID:jy55PCzK0
if文の or だの Andだのでつなげた条件は全部実行してから判定してるとは限らんよ
速度優先でTrueを見つけた時点で次の処理に行っちゃう場合が多いと思うけど
(コンパイラによって判定順がお尻からだったり頭からだったりもする)
必ず通る前提で複数の変数に格納するのは非常に危険なのでやめたほうがいい
284名無しさん@お腹いっぱい。:2013/12/18(水) 12:36:30.17 ID:s1lQxVjC0
>>282
本当にありがとうございます
条件を#If hoge1 := WinExist("ahk_class MozillaWindowClass")だけにすると
hoge1がウィンドウハンドルになるのですが
2つ条件を指定するとhoge1が0か1になってしまう理由が分からないです・・・何故ですか?
285名無しさん@お腹いっぱい。:2013/12/18(水) 15:09:03.48 ID:jy55PCzK0
>→どれかが真になった段階で式の評価をやめるから

理由書いてあるのに何故ですかって言われても
286名無しさん@お腹いっぱい。:2013/12/18(水) 15:17:43.51 ID:evB3MxNe0
#If hoge1 or hoge2
になると思ってるんだろうけど
hoge1 := (WinExist() or hoge2)
になってるんじゃないの
287名無しさん@お腹いっぱい。:2013/12/18(水) 15:18:37.09 ID:ExaGxbuH0
>>284
#If (hoge1 := WinExist("ahk_class MozillaWindowClass")) or (hoge2 := WinExist("ahk_class Chrome_WidgetWin_1"))
288名無しさん@お腹いっぱい。:2013/12/18(水) 15:19:09.34 ID:ExaGxbuH0
おう、かぶった
289名無しさん@お腹いっぱい。:2013/12/18(水) 17:38:30.18 ID:G/sv6NM00
AHKで
「”指定した特定のウインドウのみ”、マウスオーバーでアクティブにする」
というような設定はできないでしょうか?
290名無しさん@お腹いっぱい。:2013/12/18(水) 17:43:51.70 ID:XPNnQ2CE0
>>289
できます。
291名無しさん@お腹いっぱい。:2013/12/18(水) 19:31:27.95 ID:s1lQxVjC0
>>286 287
ありがとうございます!
なるほど()が足りなかったんですね
たとえ式が1個でも()カッコつけたほうがいいかもですね
292名無しさん@お腹いっぱい。:2013/12/18(水) 22:05:54.36 ID:R1JvPCpk0
>>290
>>289はコードくれくれって言ってんだからさ
293名無しさん@お腹いっぱい。:2013/12/18(水) 23:20:31.47 ID:CCaGETPl0
便乗したいんですねわかります
294名無しさん@お腹いっぱい。:2013/12/19(木) 08:03:06.37 ID:zJOFP78X0
>>292
なら書いてやれば?
295名無しさん@お腹いっぱい。:2013/12/20(金) 11:47:26.18 ID:mlxG5Hkg0
>>279です>>280ありがとうざいました。とりあえず、ファイル起動関数でウィンドウ即閉じ、再起動、アクティブ化できるようにしましたので拙いですがはっておきます

;プログラム起動処理関数
;pass2には引数を指定
;optionにはMIN、MAX、HIDE、active、close、reloadを指定できる
ProcessRun(pass,pass2="",option=""){
SplitPath,pass,exe
IfExist,%pass%
{
Process,Exist,%exe%
if (ErrorLevel <> 0){
if(option = "active"){
WinActivate,ahk_pid %ErrorLevel%
}else if(option = "reload"){
Process,Close,%exe%
Process,WaitClose,%exe%
Run,%pass% %pass2%
}
}else{
If (option = "close"){
Run,%pass% %pass2%,,,pid
Process,Wait,%exe%
WinWaitActive,ahk_pid %pid%
WinClose,ahk_pid %pid%
}else{
Run,%pass% %pass2%,,%option%
Process,Wait,%exe%
}
}
}
}
296名無しさん@お腹いっぱい。:2013/12/21(土) 07:25:07.10 ID:58vBPubX0
windowの表示を並べたり重ねたりするショートカットが欲しいんですが、
どうすれば良いでしょうか??

win+b→win→win→AppsKeyの後に、
d・t・i・uのどれかと言う感じのsendはスマートじゃない気がするのですが、
別の方法で「元に戻す」が使える状態での操作って出来ますか?
297名無しさん@お腹いっぱい。:2013/12/21(土) 07:51:08.00 ID:xmhgxw/C0
objShell := ComObjCreate("Shell.Application")
Return

F1::objShell.CascadeWindows
F2::objShell.TileHorizontally
F3::objShell.TileVertically
F4::objShell.UndoMinimizeALL
298名無しさん@お腹いっぱい。:2013/12/21(土) 16:21:15.45 ID:Hds2OfjC0
>>295
ちょっと読みづらいから書きなおしてahkファイルにしてみる
http://ux.getuploader.com/autohotkeyl/download/34/Processrun.ahk
299名無しさん@お腹いっぱい。:2013/12/22(日) 15:48:50.81 ID:GnUolT8w0
>>297
簡潔な回答をありがとうございます。
comに付いての知識があまりなく、使用した事も無かったので勉強になりました。

dllとcomの関係、バイナリ互換とwindows・linuxの違い、comの情報を得るのが若干ハードルが高く、
oleviewがVisual Studioで見当たらなくて、Windows Server 2003 Resource Kit Toolsを知ったり・・・
comとレジストリの関係も結構驚きました。
300名無しさん@お腹いっぱい。:2013/12/25(水) 21:38:33.77 ID:HVB25HKc0
USBTVチューナーに付属の視聴ソフトを起動すると、autohotkeyのホットキー設定がほとんど無効になってしまいます。
ふたたびautohotkeyのホットキー(スクリプト)を有効にするためには、
TV視聴ソフトを終了させるかもう一度autohotkey.ahkを読み込ませないといけません。
どのようにすればこのような不具合を回避できるでしょうか?おしえてください。

TV視聴ソフトは、DigiBestTVというソフトです。windows7 x64 です。autohotkey_Lはx84版のものです。
スクリプト内容が悪いのかと思い、中身を10行ぐらいのものに変えてみましたが結果は一緒でした。
DigiBestTVの設定項目も見ましたがキーバインドを操作するような項目はありませんでした。
301名無しさん@お腹いっぱい。:2013/12/25(水) 22:23:29.53 ID:K9GCSInG0
>>300
キーボードフック使ってる?
何がどう反応しないのか書いてないし
スクリプト内容見なきゃ分からん。
302名無しさん@お腹いっぱい。:2013/12/25(水) 23:55:37.42 ID:SqymqE420
多分管理者権限の問題だと思うけど。
そのソフトを起動中でもフォーカスを他の適当なウィンドウに当てたら
ホットキー利いたりしない?
その場合はahkを管理者権限で実行すれば解決。
管理者権限で起動するのがセキュリティ的に好ましくないahkファイルの場合は無理
303名無しさん@お腹いっぱい。:2013/12/26(木) 01:28:33.93 ID:zx6ulNJx0
>>301
ちょっとわかりませんが、
#InstallKeybdHookっていうのかな。使ってないです。

>>302
autohotkey.exeを右クリして管理者として実行をしてみましたが、変わりありませんでした。
フォーカスを他のウインドウにしても効果ありません。digibestTVが起動してるとahkのホットキーが無効化されます。

反応しないというのは、無変換+J や無変換+G にカーソルやbackspaceを割り当ててるのですが、
そのままJやGを入力してしまいます。しかし一方無変換+Kanaにランチャーを割り当ててるのですが
そちらはちゃんと起動します。.ahkの内容を最小限にしても同じでした。
304名無しさん@お腹いっぱい。:2013/12/26(木) 01:46:39.67 ID:lsxYMpIS0
.ahkファイル上げれば優しいお兄さんたちがいたずら……じゃなかった手取り足取り教えてくれるよ
305名無しさん@お腹いっぱい。:2013/12/26(木) 02:14:19.72 ID:6ztpcYyA0
>>303
とりあえず >>301-302 で言われたこと試そう。

#UseHook または #InstallKeybdHook をAuto-executeセクションに書く
OSの機能UAC(ユーザーアカウント制御)を無効にしてみる
306名無しさん@お腹いっぱい。:2013/12/26(木) 07:40:42.88 ID:D0aKtmKJ0
>>303
Dirt2というゲームをフルスクリーンにしたら
同じようになるので以前このスレを覗いたら
hookは後から実行したほうが有効になるってここで見たので
SettimerでDirt2のウィンドウ状態を監視し、
フルスクリーンになったらahkを再起起動するようにしてた。

恐らく、>>305の方法で解決出来そうな気はするけど
307名無しさん@お腹いっぱい。:2013/12/27(金) 19:54:53.43 ID:jkW/sj760
winxp sp3 autohotkey_L 32bit バージョン: 1.1.13.01です。

以下のようなWM_COMMAND使う関数作ったのですが、
メモ帳のようにデスクトップにウインドウ開くものは操作できるのに
タスクトレイに常駐してるものが操作できません。
どうしてでしょうか?

ahk_WM_COMMAND(ahk_win_title, ahk_win_class, ahk_cmd){
    SetTitleMatchMode,3
    WM_COMMAND = 0x111
    WinGet, ahk_hwnd, ID, %ahk_win_title% ahk_class %ahk_win_class%
    detecthiddenwindows,ON
    postmessage, WM_COMMAND, ahk_cmd, 0, , ahk_id %ahk_hwnd%
}

※インデントは全角空白です

ちなみに、AutoIt3で作った同じ関数だと問題なくタスクトレイ常駐のものを操作できます。
308名無しさん@お腹いっぱい。:2013/12/27(金) 22:32:25.31 ID:Tm3zwQ4c0
detecthiddenwindows,ONを関数の外に出したらどうなる?
309名無しさん@お腹いっぱい。:2013/12/28(土) 00:05:07.06 ID:07ed4QJF0
303です。
#UseHook または #InstallKeybdHookをスクリプトの一番上においてみましたが変化ありませんでした。
UACは無効です。

スクリプトのautohotkey.ahkは
#InstallKeybdHook
sc07B & H:: Send,{Blind}{BS}
sc07B & i:: Send,{Blind}{Up}
sc07B & l:: Send,{Blind}{Right}
sc07B & k:: Send,{Blind}{Down}
sc07B & j::send,{left}
これだけにしてもdigibestTVを起動するとうごきません。
4回に一回ぐらいちゃんとこのホットキーが動くという感じです。
310名無しさん@お腹いっぱい。:2013/12/28(土) 00:47:08.71 ID:W6cSodtT0
>>309
>動かないでも4回に一回ぐらい動く
どっちなんだよ・・・。

#InstallKeybdHook
sc07B & H::MsgBox

これで確実に動くなら Send の問題だろうな
押し下げ間隔変更してみよう。
SetKeyDelay,,100 ttp://ahkwiki.net/SetKeyDelay
一部のゲームやアプリケーションでは押下と押下解除までの間に一定時間が必要
311307:2013/12/28(土) 01:13:27.92 ID:0Y0bNe0b0
>>308
アドバイスありがとう。
ご指摘の通りやってみましたが、タスクトレイのものは操作できませんでした。

また、
ahk_WM_COMMAND(ahk_win_title, ahk_win_class, ahk_cmd){
    WM_COMMAND = 0x111
    WinGet, ahk_hwnd, ID, %ahk_win_title% ahk_class %ahk_win_class%
    postmessage, WM_COMMAND, ahk_cmd, 0, , ahk_id %ahk_hwnd%
}
としてみたり、
postmessageをSendMessageに変えてみたりしても同じく駄目でした。

今のところ、AutoIt3で作ったWM_COMMANDスクリプトをRunする方法で補ってるので
早急に解決する必要はないのですが、何かスッキリしない…
312名無しさん@お腹いっぱい。:2013/12/28(土) 02:50:53.27 ID:AUGVJyBJ0
>>311
APIのPostMessageをDllCallで呼んでみては?
313名無しさん@お腹いっぱい。:2013/12/28(土) 03:46:11.48 ID:07ed4QJF0
>>310
それやってみました。確実に動きました。ミスはなかった。
SENDに問題あるのかな。
SetKeyDelay,,100 やってみたけど、効果なし。レスありがと。

>動かない。でも4回に一回ぐらい動く

ってのはたとえば、sc07B & i:: Send,{Blind}{Up} あるじゃないですか?
sc07B & i をそこそこのテンポで押し続けていくと、
3回 i ってのが入力されたあと一回だけ↑の方向キー入力があって、そのあとまたiだけが入力されるっていうかんじ。
ランダム。
314名無しさん@お腹いっぱい。:2013/12/28(土) 04:12:42.21 ID:W6cSodtT0
>>313
押し下げ、押し上げを明示的に
押し下げ、押し上げ間隔変更
SendModeの種類変更 ttp://ahkwiki.net/SendMode

#InstallMouseHook
SetKeyDelay,100,100
sc07B & i::Send,{Up Down}{Up Up}
315名無しさん@お腹いっぱい。:2013/12/28(土) 11:25:07.82 ID:Ppn9Obyz0
面倒だけど、DOWNとUPの両方をフックして
別々にキー発行した方が確実だよ
316名無しさん@お腹いっぱい。:2013/12/28(土) 13:16:32.74 ID:0Y0bNe0b0
>>312
貴重な意見ありがとう。
DllCallですか?自分にはハードル高過ぎです…第一、数ある"引数"に何を入れるのかが分からない。

PostMessage系は、「VBS+dynwrap.dll」の組み合わせ以来、
「postmessage, WM_COMMAND, ahk_cmd, 0, , ahk_id %ahk_hwnd%」
の形式しか知りません…しかも「WM_COMMAND」以外使ったことないし。
317名無しさん@お腹いっぱい。:2013/12/28(土) 13:53:08.02 ID:AUGVJyBJ0
簡単だよ、AHKのPostMessage使うのとほぼ同じ
>>311の例を置き換えるなら↓
DllCall("PostMessage", Ptr,ahk_hwnd, Ptr,0x111, Ptr,ahk_cmd, Ptr,0)

ただしwParamには上位ワードにWM_COMMANDの詳細コード、下位ワードに
コントロールのIDを、lParamにはコントロールのウィンドウハンドルを指定する
のが本来の使い方なので、あなた関数はメニューのコマンド実行にしか使え
ないと思う

あとタスクトレイのアイコンからは通常WM_NOTIFYで通知を受けるので、いき
なりWM_COMMANDを送っても無視するアプリは当然いると思う
Spy++を使えるなら非表示化されている本体ウィンドウのメッセージを見ながら
トレイアイコンを操作すれば分かると思うけど
318名無しさん@お腹いっぱい。:2013/12/28(土) 15:04:01.24 ID:0Y0bNe0b0
>>317
分かりやすい説明をありがとう。
具体例を挙げてくれたお陰で、これとwikiの説明も合わせて読むことで
限定的ではありますが、何となく分かったような気がします。
(PostMessage + WM_COMMANDが使えれば満足なので)

で、DllCall()でPostMessageした結果もこれまでと同じで
タスクトレイにあるものは操作できませんでした。

あと今回は返値とErrorLevel確認してみましたが、何れも正常動作してる値でした。
気休め程度にセキュリティ系を監視無効にしてみましたが、結果は変わらず。

なかなか先が見えません…
319名無しさん@お腹いっぱい。:2013/12/28(土) 15:06:38.39 ID:ZMFX8XS+0
ウインドウ指定間違ってるというオチ
320名無しさん@お腹いっぱい。:2013/12/28(土) 16:24:12.29 ID:0Y0bNe0b0
>>319
ありがとう。再確認したけど、流石にそれはないです。
同じタイトル、クラスならウインドウが表示されてれば操作可能なのです。(Process Explorerで確認)

ちなみに、WM_COMMAND使うにあたって「タイトル」「クラス」「コマンド」は
UWSC.exe + ChkCtlID.dllでChkCtlID.uwsというスクリプトを動かして取得しています。
(実際に操作して必要なデータが取得できるので、これだけの為にUWSC使ってます)
321名無しさん@お腹いっぱい。:2013/12/29(日) 19:22:03.91 ID:y3TxPQeB0
イロハのイみたいな質問で恐縮ですが…
ScrollLockがONの時だけキーリマップされるというスクリプトを作るにはどうすればいいでしょうか?
ONでリマップ、OFFの時は本来のキーの機能が働く形にしたくて、リファレンス等を見よう見まねで
やってる段階なのですが、こんな形になりました

if GetKeyState("ScrollLock","P"){
a::b
}else{
Sleep,100
}
Return
322名無しさん@お腹いっぱい。:2013/12/29(日) 19:24:46.34 ID:y3TxPQeB0
すみません。長いと怒られたので連投という形に成りますがご容赦を…
上の形で動かすと、ScrollLockがONでもOFFでもAキーがBにリマップされてしまいます
それと、Sleepを充てたのもちょっと違うような気が…
そもそも、根本的に発想が間違っているのかもしれませんが、いいやり方をご教示下さい
323名無しさん@お腹いっぱい。:2013/12/29(日) 19:26:28.92 ID:PgaLHOAR0
#If GetKeyState("ScrollLock","T")
a::b
324名無しさん@お腹いっぱい。:2013/12/29(日) 19:28:09.75 ID:o+jg+Krd0
If(GetKeyState("NumLock","T") == 0)

たぶんトグル使えたと思うからそれを使ってみては?
Numlock状態をタスクトレイに表示できるスクリプト組んでたからタイムリー
325名無しさん@お腹いっぱい。:2013/12/29(日) 19:52:06.71 ID:y3TxPQeB0
>>323-324
こんなに早く感謝!教えて頂いた方法で、希望の動作ができました
ModeをTにしないといけなかったんですね
#Ifの使い方も勉強になりました
ありがとうございました
326名無しさん@お腹いっぱい。:2013/12/29(日) 20:58:57.82 ID:o+jg+Krd0
ウヒョースゲーpostmessageこれスゲー
327名無しさん@お腹いっぱい。:2013/12/30(月) 10:14:47.38 ID:Ut/Si46b0
>>326
ヤベーよな
使い出したら止められねえわ
328名無しさん@お腹いっぱい。:2013/12/31(火) 21:32:02.68 ID:CNKTZK//0
ちょっとスレ違いかもしれないんだけれど、
TillaGoto.ahk持ってる人誰かうpしてくれませんか?
公式とか他回ったけど出てこない…
329名無しさん@お腹いっぱい。:2014/01/01(水) 00:34:04.55 ID:BejZgA1u0
SciTE4AutoHotkey
330名無しさん@お腹いっぱい。:2014/01/02(木) 22:16:05.97 ID:B/Qu2U8M0
どなたかMacbookのBootcamp環境上でAHKを運用してるって方おりますでしょうか?

数年前から、Win機に変換・無変換・多ボタンマウスを修飾キーにしたワンショットモディファイア
を組み込んだりRoundMenuを使ったりしています。今回、気が向いてMacbook Air+Bootcamp
で同様の環境を作ろうとした所、「かな」キーがレジストリでリマップしようがAHKでリマップしようが
必ずトグル動作になってしまい扱いきれず困っています。「かな」キーを普通にモディファイアの修飾キー
に出来ている方がいらっしゃったら対処法を教示頂けませんでしょうか?
331名無しさん@お腹いっぱい。:2014/01/03(金) 04:24:05.90 ID:qbDUwg9/P
ポンコツOS積んでるMacとか使うもんじゃないよ
332330:2014/01/03(金) 15:31:57.17 ID:wDBjnsKG0
もぅ挫折しそう… つかAHKだけじゃ100%無理っぽいです
333名無しさん@お腹いっぱい。:2014/01/03(金) 16:17:42.99 ID:uHGrc1HW0
というかキーボード規格の問題じゃねーのソレ
Fnキーとおなじようなもんで
334名無しさん@お腹いっぱい。:2014/01/03(金) 16:23:41.97 ID:uHGrc1HW0
あ、俺からも質問
postmessageでX-finder終了メッセージ送って常駐の一斉終了に組み込みたいんだけど、リソースハッカーで調べても見つからないんだよね
プロセス強制終了だとiniに書き込まないから変更状態保存されないし
どっかに情報ないかな
335330:2014/01/03(金) 16:45:32.03 ID:wDBjnsKG0
うまくいった〜。
レジストリいじるのにChnageKey使ってたんだけど、SharpKeysに変えてみた。
変更元のキーもスキャンコードベースで指定出来るのが決め手だろうなと。
結局元コード弄る必要すらなかったです。
低レベルな悩みでお騒がせしました。
336名無しさん@お腹いっぱい。:2014/01/03(金) 16:45:54.69 ID:gA08nXNr0
>>334
その書き方だと何を終了させたいのかよく分かんないけど
postmessage使う必要ある?
337名無しさん@お腹いっぱい。:2014/01/03(金) 17:38:53.12 ID:aSWb0+zd0
>>334
WinCloseするだけじゃないのか? ttp://ahkwiki.net/WinClose
駄目なら↓
PostMessage, 0x112, 0xF060,,, WinTitle, WinText ; 0x112 = WM_SYSCOMMAND, 0xF060 = SC_CLOSE
338名無しさん@お腹いっぱい。:2014/01/03(金) 18:05:43.12 ID:uHGrc1HW0
あ、wincloseでいいか
ありがとう
339名無しさん@お腹いっぱい。:2014/01/03(金) 23:43:42.30 ID:6mi/YYM20
なんかプログラマー気取りのレスがおおいよなあ
お前らが使ってるのは言語じゃなくてスクリプトエンジンだから
RPGツクールと一緒。
340名無しさん@お腹いっぱい。:2014/01/04(土) 00:59:23.80 ID:PYXLNTj80
どうした、どこかトラウマを刺激するスイッチでも入ったのか?
341名無しさん@お腹いっぱい。:2014/01/04(土) 02:07:25.03 ID:mtwYn+fq0
クレクレの教えて君の逆恨みかな?

元マーだけど、ここにはおそらく現職のマーや多言語扱える人間が複数常駐してるなと感じることはある
だがマー気取りの痛い人というのは別段見たことがない
342名無しさん@お腹いっぱい。:2014/01/04(土) 02:23:33.43 ID:AUsHohtA0
プログラマーの一人称って安定しないな
マーって……
343名無しさん@お腹いっぱい。:2014/01/04(土) 10:43:33.81 ID:N66thuPZ0
いや一人称では無いだろ
344名無しさん@お腹いっぱい。:2014/01/04(土) 11:08:43.98 ID:mtwYn+fq0
さすがに現役時代でも自分のことをマーと呼ぶ人には出会ったことないわw
345名無しさん@お腹いっぱい。:2014/01/04(土) 17:30:38.37 ID:5QWAv4qg0
むしろム板とマ板がある2chだからじゃない?
346名無しさん@お腹いっぱい。:2014/01/04(土) 19:56:46.04 ID:oRzkyRNu0
スクリプトを編集してreloadした時にでるエラーメッセージをぐぐったりして調べたいんですけど
クリップボードにコピーするかテキストに出す方法ってありますか?
347名無しさん@お腹いっぱい。:2014/01/04(土) 20:14:17.76 ID:w5g57NbE0
>>346
WinGetTextを使った別のスクリプト呼び出すかWindow Spy使えば?
348名無しさん@お腹いっぱい。:2014/01/04(土) 20:58:34.93 ID:iZ9IYWWx0
単純に、crtl+cじゃ駄目なんだっけ?
349名無しさん@お腹いっぱい。:2014/01/04(土) 21:10:03.42 ID:w5g57NbE0
>>348
こんな機能あったのかwサンクス
350名無しさん@お腹いっぱい。:2014/01/04(土) 21:29:26.58 ID:AjuKralY0
Windows標準の機能だけど意外と知ってる人いないよね
351名無しさん@お腹いっぱい。:2014/01/05(日) 01:54:21.50 ID:SqERt/fB0
いやそこは「レベル低すぎだろ」って突っ込んであげたほうがいい希ガス
こんなもんも知らないんじゃAHKなんて活かし様ないだろ
352名無しさん@お腹いっぱい。:2014/01/05(日) 03:01:54.64 ID:KGEDNDUc0
>>351
ハイハイ、よかったね。
353名無しさん@お腹いっぱい。:2014/01/05(日) 15:08:46.89 ID:b/yWfANK0
Ctrl+CでコピーしたらCtrl+Vでパスを貼り付けられるようにしてほしかった
354名無しさん@お腹いっぱい。:2014/01/05(日) 16:25:36.08 ID:tFFNLJlE0
>>353
出来るだろ?
355名無しさん@お腹いっぱい。:2014/01/05(日) 18:41:09.85 ID:b/yWfANK0
>>354
エクスプローラではできんかった
VistaHomeBasic32bit
356名無しさん@お腹いっぱい。:2014/01/05(日) 18:59:56.66 ID:sZA4GYag0
AHK関係ないだろ
AHKを使ってってことなら余裕で実現可能だし
357名無しさん@お腹いっぱい。:2014/01/05(日) 19:02:03.05 ID:b/yWfANK0
そりゃそうだw
358名無しさん@お腹いっぱい。:2014/01/06(月) 02:57:17.10 ID:6M7KTWEQ0
Send,^{Home}
Send,{Ctrl down}{Home}{Ctrl up}

この2行って違いあります?
前者だと誤動作することがあって後者に書き換えるとうまくいくことが度々あるんですが
359名無しさん@お腹いっぱい。:2014/01/06(月) 03:00:38.51 ID:sxo5qzGk0
多分差はない。下ほうがうごくならそっちのほうがいいかも
ただもし他の処理とかち合ったらctrlが押しっぱなしになるかも・・・?
360名無しさん@お腹いっぱい。:2014/01/06(月) 03:29:08.93 ID:6M7KTWEQ0
>ただもし他の処理とかち合ったらctrlが押しっぱなしになるかも・・・?

試しに
Sleep,1000
Send,^{Home}
としてみたら安定動作しているみたいなので
もしかしたら他のキーが一瞬押されているのかもしれません
処理に入る前にCtrl,Alt,Shift,Winあたりの押下状態を調べてUpされるのを待つなり警告出すなりしてみます
ありがとうございます
361名無しさん@お腹いっぱい。:2014/01/06(月) 12:29:28.31 ID:0G6McRFW0
文字コード関係で困って自己解決したので報告です

AutoHotKeys_L unicode 64bit

特殊文字を指定するためのコマンド ASC{ nnnn } について。
解説だとnnnnをユニコードで指定できるとなっていますが、実際はキーボード(IME)の言語に依存します。
日本語キーボードならShift_Jis番号として解釈されるます。

Send {ASC 220} は
日本語キーボード だと 「ワ」
USキーボード だと 「ウムラウトの大文字U」

ユニコード番号で指定するためにはこのスタイルで書けばいいみたいです
Send {U+nnnn} * nは16進数のユニコード番号
362名無しさん@お腹いっぱい。:2014/01/07(火) 14:57:06.16 ID:HnLr3QxO0
文字列「{a { b } c}」から先頭の「{」と末尾の「}」を取り除き、
「a { b } c」にしようと以下のようにしたのですが、
ret2で末尾の「}」が取り除けません。
Pattern指定のどこが間違っているのでしょうか。

Target := "{a { b } c}"
Pattern := "^\{"

ret1 := RegExReplace(Target, Pattern)
msgbox, % ret1

Pattern := "$}"
ret2 := RegExReplace(ret1, Pattern)
msgbox, % ret2
363名無しさん@お腹いっぱい。:2014/01/07(火) 15:08:35.62 ID:LQVBB70R0
Pattern := "}$"
364名無しさん@お腹いっぱい。:2014/01/07(火) 15:42:37.93 ID:HnLr3QxO0
>>363
ありがとうございました。
365名無しさん@お腹いっぱい。:2014/01/08(水) 22:14:01.50 ID:kARE6RtX0
エレコムのM-XG3Gを買ったんですが、専用ドライバーをインストールするとWheelLeftとWheelRightがAHKで拾えなくなります。
ドライバーをインストールしなければ拾えるんですけど、こういう場合、
ドライバーをインストールしたままチルト入力を拾うことってできないもんなんでしょうか?
チルト系のスクリプト全部書き直しになると地獄です。
366名無しさん@お腹いっぱい。:2014/01/08(水) 22:37:43.84 ID:NA8co93/0
>>365
2.3 マウスにホットキーの割り当てをしても反応しない。 ttp://ahkwiki.net/Faqs
専用ドライバーの設定に対してAutoHotkeyで割り当て

ドライバー(WheelLeft→他のキーに変更)

対象のキーにAutoHotkeyで割り当て
367名無しさん@お腹いっぱい。:2014/01/08(水) 22:52:22.20 ID:kARE6RtX0
>>366
それしかないですかね?
あいにくここのドライバF13以降の割り当てができないので
なにがしかのキーボードのキー(or プラス修飾キー)を使うことになってしまうんですが。
エレコムのドライバが制御してるキー入力判定を読み取ることとtか無理ですかね?
368名無しさん@お腹いっぱい。:2014/01/08(水) 23:18:29.84 ID:NA8co93/0
>>367
ドライバツールの段階でAutoHotkeyで拾えない独自のWheel***になってるのでドライバをどうにかするしかない。
もしかしたらドライバの設定ファイルを直接いじればF13以降も出来るかもしれない。
369名無しさん@お腹いっぱい。:2014/01/08(水) 23:43:56.71 ID:kARE6RtX0
>>368
そうですか。難しそうですね。
ドライバーのインストールフォルダの中にあったkeyboard.iniの中に
マウスボタンに割り当てるキーボードのキー情報がありました。中にあったF12キーのスキャンコードをF13のスキャンコードに置き換えて
マウスのチルトにF13を割り当ててAHKでF13を制御してみましたがいけました。どうもです。
しょうがないんでWheelleftとWheelrightは全部これで置き換えます。
370名無しさん@お腹いっぱい。:2014/01/09(木) 12:38:55.17 ID:5Gf14WnP0
今現在、SetTimerとWinActiveをループさせながら複数ウインドウの監視してるのですが、
この方法よりも「イベントフック専用APIを利用する」方が無駄のない方法だと知り
https://sites.google.com/site/agkh6mze/howto/winevent
此処にあるサンプルを元にウインドウ出現の監視をしようと思っています。

しかし、今動かしてるスクリプトは当該ウインドウの終了(WinNotExist)も監視してるため
WinNotExistに当たるイベントも取得したいのですがそれらしいのが見あたりません。
WinNotExistに当たる定数は何なんでしょうか?

EVENT_OBJECT_DESTROY = 0x00008001
かな?と思い、
EVENT_SYSTEM_FOREGROUND = 0x00000003
の代わりに指定してみましたが、何か違うような…
371名無しさん@お腹いっぱい。:2014/01/09(木) 18:56:09.10 ID:1hwoDp2F0
ウィンドウを最善面にしたらウィンドウタイトルバーの色を変える(ようは目立たせる)
というようなことをしたいです

特定のウィンドウタイトルバーの色を変えることはできますか?
372名無しさん@お腹いっぱい。:2014/01/09(木) 19:18:49.36 ID:5Gf14WnP0
370です。前の疑問がまだ解決してないんですけど、もう一つ質問させて下さい。(欲張ってすいません)
SetTimerの第3引数に優先度を指定できますが、特に指定しなければデフォルトの0になると思うんですけど、
その場合のスレッド起動の順番はどういう順番になるのでしょうか?

メイン.ahk
  ┃
  ┣━ サブ_1.ahk(メイン.ahkにインクルード)
  ┃
  ┗━ サブ_2.ahk(メイン.ahkにインクルード)

スレッド起動の順番は、[メイン.ahk]→[サブ_1.ahk]→[サブ_2.ahk]ですか?

また、任意に優先順位を決める場合、数字か大きい順に高いと判断して良いのですか?

メイン.ahk(SetTimer, hage, 1000, 3)
  ┃
  ┣━ サブ_1.ahk(メイン.ahkにインクルード SetTimer, turu, 1000, 1)
  ┃
  ┗━ サブ_2.ahk(メイン.ahkにインクルード SetTimer, bozu, 500, 2)

優先順位高い順に(スレッド起動の順番)、[メイン.ahk]→[サブ_2.ahk]→[サブ_1.ahk]と思っていいのでしょうか?
373名無しさん@お腹いっぱい。:2014/01/09(木) 19:25:24.39 ID:5Gf14WnP0
>>371
http://ux.getuploader.com/autohotkeyl/download/33/AltKGM12.zip
これは枠を強調表示するみたい・・・試してないので詳細不明なんです。
374名無しさん@お腹いっぱい。:2014/01/09(木) 19:30:37.83 ID:CVWfPYOb0
>>371
AutoHotkeyウィンドウなら Gui,Flash
それ以外はOSのAPI関数 FlashWindowEx

目的のコマンドが無い場合はAPI関数を調べる癖付けるとイイよ。
ttp://www.autohotkey.com/board/topic/92043-problems-with-flashwindowex/
375名無しさん@お腹いっぱい。:2014/01/09(木) 20:23:13.35 ID:CVWfPYOb0
>>370
無いものはないんじゃない?

>>372
例えがおかしい、スレッドはインクルードや.ahkは関係ないスクリプトは上の行から順に開始される。
現在のスレッドより優先度が低い場合、割り込みは行われず、操作は無視される。
ttp://ahkwiki.net/Threads

■通常(優0)
> → 実行中、 …:割り込み終了待ち
> 元スレッド   →→→→→→……………………………………→→→→
>                  ★割込                ↑再開
> 割り込みスレ          →→→→…………→→→→→→END
>                        ◆割込 ↑再開
> 更に割り込み                →→→END

■元スレッドの優先順位が高い場合割込無視される待機もしない
> 元スレッド(優2)   →→→→→→→→→→→→→→→→→→→→END
>                  ★割込無視
> 割り込みスレ(優1)      ×待機もしない
>                        ◆割込無視
> 更に割り込み(優1)            ×待機もしない
376名無しさん@お腹いっぱい。:2014/01/09(木) 21:16:51.01 ID:5Gf14WnP0
>>375
レスどうもです。

>>370の件は、地道にSetTimerとWinActiveをループさせときます。

あと、よく見たら、>>372の上の図で抜けがありました(すみません)
正確には、それぞれのahkでSetTimerでループ(?)しています。

メイン.ahk(SetTimer, hage, 1000)
  ┃
  ┣━ サブ_1.ahk(メイン.ahkにインクルード SetTimer, turu, 1000)
  ┃
  ┗━ サブ_2.ahk(メイン.ahkにインクルード SetTimer, bozu, 500)

この場合、どの順序でSetTimerが働くかは読み込まれた順
(メイン.ahkでインクルードを記述した順)で決まるってことなんですね。

また、下の図の優先度云々の件は、割り込みに関係するのであって順番ではないんですね。

お手数お掛けしました。ありがとうございました。
377名無しさん@お腹いっぱい。:2014/01/09(木) 21:19:34.41 ID:1hwoDp2F0
>>373-374
本当にありがとうございます
試してみます
378名無しさん@お腹いっぱい。:2014/01/09(木) 21:21:07.33 ID:5Gf14WnP0
>>376訂正

X >>370の件は、地道にSetTimerとWinActiveをループさせときます。
○ >>370の件は、地道にSetTimerとWinActive及びWinNotExistをループさせときます。
379名無しさん@お腹いっぱい。:2014/01/10(金) 07:00:36.49 ID:NhKU6AoL0
こんなメモリーから読み取るBOT作られりゃ、そりゃゲーム会社も対策するわ。

Bot made in Autohotkey beats SSFIV AE 2012 on hardest difficulty
http://www.youtube.com/watch?v=daqBboLaMKk

Autohotkey自体の寿命が縮まらなければいいのだが。
380名無しさん@お腹いっぱい。:2014/01/10(金) 21:29:28.71 ID:5Jklg+MO0
AHKからVBS(WSH)使う時はScriptControlで出きるけんど、VBSからAHK使う方法手有るのん?
試してないけんど、AutoHotkey.dllっちゅうのでできるんかいの?

それから、下のスクリプトのコメントで書いてるように
AHK側→VBS側へ変数の中身を渡せないんだけんど、何か方法ないっすか?
VBS側でAutoItX3.dllなんか使ってクリップボード介すしかない?

obj := ComObjCreate("ScriptControl")
obj.Language := "VBScript"
;~ moji := "12345" ;←AHK側で指定してVBS側へ変数の中身を渡す事ができない

script =
(
moji = "あいうえお" '←ここで直接書く他無い?
MsgBox moji
)

obj.ExecuteStatement(script)
381名無しさん@お腹いっぱい。:2014/01/11(土) 11:06:35.83 ID:0NPVogb40
これホントだとしたら日本ってつくづくガラパコスだよね

http://img104.imageshack.us/img104/3740/stolevf2.jpg

日本国内だと UWSC > AHK >> AutoIt っぽいけど…
382380:2014/01/11(土) 12:14:03.24 ID:L93ysrB90
結局こんな感じで・・・・・ちょっとだけスッキリしますた(´・ω・`)
AHKにも文字列を入れた変数を展開先で実行してくれる機能有れば良いのにぃぃぃぃぃ

script_before =
(
moji = "あいうえお"
title_string = "VBSを動かす - WshShell.Popup"
)
script_VBS := Exec_VBS(script_before, "d")
Exec_VBS(script_VBS)

次レスへ...
383380:2014/01/11(土) 12:15:03.39 ID:L93ysrB90
>>382のつづき

;"d":「データ取得モード」でVBSが動くように完全な文字列を取得(戻り値有り)
;モード無指定(実質"c"指定):「実行モード」となり、上で取得した文字列を実行する(戻り値無し)
Exec_VBS(tmp_script, mode = "c") {
    if (mode == "c") {
        obj := ComObjCreate("ScriptControl")
        obj.Language := "VBScript"
        obj.ExecuteStatement(tmp_script)
        return
    }

    script =
    (

    '↑ ここの空白行は、引数の文字列と結合する時の「改行」代わりになるので【必須】
    MsgBox moji, 3+32, "VBSを動かす - MsgBox"

    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Popup "12345", , title_string, 4+64
    )

    if (mode == "d") {
        return (tmp_script . script)
    }
}
384名無しさん@お腹いっぱい。:2014/01/11(土) 13:11:55.87 ID:L93ysrB90
>>381
オレの場合、実用scriptの数で言うと

VBS(WSH) + AutoItX3.dll > AutoIt > AutoHotKey > UWSC

ファイル/フォルダ扱う処理ならVBS(WSH)がこん中で一番扱いな、個人的に
UWSCはほぼ使わんから知らん
385名無しさん@お腹いっぱい。:2014/01/11(土) 13:18:25.44 ID:DkUM7X060
海外ではAHK出る前からある程度AutoItが普及してたんじゃない?
日本内でのAHKの認知度が上がったのはリファレンス訳して流行らせようとした人の功績だし
日本の場合ジワジワ浸透よりマニア推しの働きかけのほうが影響出てるように思う
386名無しさん@お腹いっぱい。:2014/01/11(土) 13:31:33.31 ID:ezMuEju20
基本的に日本語のリファレンスが充実してる言語しか日本じゃ流行らんし
387名無しさん@お腹いっぱい。:2014/01/11(土) 17:49:30.45 ID:RzNhSytD0
>>381
http://gazo.shitao.info/r/i/20140111174750_000.png
ぐるぐrトレンドですまんが、AutoitがじわじわAutoHotkeyに迫られてる気がするぞ。

お国で違うようなので、突っ込んで調査したい人は各自でグリグリやってくれ。
388名無しさん@お腹いっぱい。:2014/01/11(土) 18:09:22.23 ID:xrpAHSIh0
さきほどここでAutoItを知って、いまAutoIt調べまくってた
キーリマップはAHKが強いみたいだからUWSCの代替になるのかと勘案してるんだが
専用スレは落ちて久しいみたいだな
389名無しさん@お腹いっぱい。:2014/01/11(土) 19:26:16.84 ID:eIcYw4Wm0
Chromeバージョンアップでマウスホイールでタブ切り替え
ControlSend,,^{PgDn}, ahk_id %Win%
ControlSend,,^{Tab}, ahk_id %Win%
が効かなくなったんですか代替策ないですかね?
390名無しさん@お腹いっぱい。:2014/01/11(土) 19:43:25.75 ID:ZCvYVkOb0
>>389
最新版(バージョン 31.0.1650.63 m)で普通に反応するが・・・。
環境と問題のスクリプトぐらい書こう。
391名無しさん@お腹いっぱい。:2014/01/11(土) 20:26:07.39 ID:eIcYw4Wm0
すみません
Win7 x64とAHKL x64 最新です
WheelDown::
MouseGetPos,,,Win
ControlSend, , +^{Tab}, ahk_id %Win%

ちゃんと非アクティブ時にも動きますか?
こちらもアクティブ時は動きますが非アクティブ時に機能しなくなりました
392名無しさん@お腹いっぱい。:2014/01/11(土) 21:20:41.28 ID:ZCvYVkOb0
+^{Tab} → ^{Tab} → {Ctrl Down}{Tab}{Ctrl Up}
Return がないのでSend以降の行までいっている可能性あり

---------------------------------------------
; SetKeyDelay,,100 ;反応しない場合

WheelDown::
MouseGetPos,,,Win
ControlSend, , {Ctrl Down}{Tab}{Ctrl Up}, ahk_id %Win%
; ControlSend, ahk_parent, {Ctrl Down}{Tab}{Ctrl Up}, ahk_id %Win% ;FireFox用
Sleep 90
Return
393名無しさん@お腹いっぱい。:2014/01/11(土) 21:47:05.49 ID:ElkyttuT0
つまりautoitの日本語訳作れば大逆転なの
394名無しさん@お腹いっぱい。:2014/01/11(土) 21:50:17.80 ID:eIcYw4Wm0
>>392
サンクスです!
試したんですがそれだと非アクティブ時もアクティブ時も両方機能しなくなりました・・・
SoundBeepを入れてちゃんとスレッドが実行されていることは確認済みです


ですが
ControlSend, ahk_parent,, {Ctrl Down}{Tab}{Ctrl Up}, ahk_id %Win%
にするとアクティブ時のみ機能します
しかし相変わらず非アクティブ時に動きません
395名無しさん@お腹いっぱい。:2014/01/11(土) 22:03:44.75 ID:ZCvYVkOb0
>>394
ユーザーアカウント制御 (UAC)をOFF
フック使う #UseHook
間隔調整 SetKeyDelay,***,***
ahk_parent 有り無しで試す
396名無しさん@お腹いっぱい。:2014/01/11(土) 22:25:56.03 ID:L93ysrB90
>>393
AutoItのリファレンス(chmヘルプ)の中見れば分かると思うが
膨大な項目数の割りに一つ一つの説明が簡潔だから
英語が不得意でも全然分かりやすいと思うぞ

それに、ボタン一発でサンプルの動作確認もできる親切設計だ

もし日本語訳リファレンス有るんならオレも欲しい
397名無しさん@お腹いっぱい。:2014/01/11(土) 23:03:50.10 ID:Rzl8ngLT0
>>396
http://blog.livedoor.jp/blackcode/archives/1224220.html
で日本語訳chmファイル配布してるけどver.3.3.6.1のままなのが少し残念
398名無しさん@お腹いっぱい。:2014/01/11(土) 23:07:18.92 ID:benG0tTg0
スレ立ててそっちでやれよ
399名無しさん@お腹いっぱい。:2014/01/12(日) 02:13:21.88 ID:HTX3Hu0i0
>>395
サンクスです
ですが何故か非アクティブ時だけどうしても効きません
400名無しさん@お腹いっぱい。:2014/01/12(日) 04:20:51.54 ID:N0XLrLft0
はじめまして。
NumLockキーを押し間違えるので
NumLock::return
と書いたのですが、そのあと、本当に必要な時のために
#NumLock::Send {NumLock}
と書いても動作しません。

どこをどう間違えているのでしょうか?
401名無しさん@お腹いっぱい。:2014/01/12(日) 04:23:19.43 ID:N0XLrLft0
追記。Windows XP 32bitです。
402名無しさん@お腹いっぱい。:2014/01/12(日) 05:44:25.72 ID:7kMoVYjO0
>>400
Lock系のキーへのキー割り当ては上手く行かない。
ttp://ahkwiki.net/Trouble#LockTrouble

---------以下代案--------
#If !(GetKeyState("LWin","P") or GetKeyState("RWin","P"))
*NumLock::Return
#If
403名無しさん@お腹いっぱい。:2014/01/12(日) 21:44:58.99 ID:eJUQGLfo0
Execute string in AHK - Support - AutoHotkey Community
http://www.autohotkey.com/board/topic/51532-execute-string-in-ahk/

ここ↑をヒントに文字列を実行する関数作ってみた
所詮素人が作ったものなんで突っ込み所有ると思うので、手直し必要なら教えてちょ(´・ω・`)

Exec_Strings("MsgBox,2,title_test,test test test")
Exec_Strings("WinClose,無題 - メモ帳 ahk_class Notepad")
Exec_Strings("gosub,label_sub")

Exec_Strings(cmd_strings){
    Array := StrSplit(cmd_strings, ",")

    call_func := % "func_" Array[1]
    cmd_strings := RegExReplace(cmd_strings, Array[1]",")

    if (InStr(Array[1], "MsgBox")) {
        %call_func%(Array[2], Array[3], Array[4], Array[5])
    }else if (InStr(Array[1], "WinClose")) {
        %call_func%(Array[2], Array[3], Array[4], Array[5], Array[6])
    }else if (InStr(Array[1], "gosub")) {
        %call_func%(Array[2])
    }
}

次レスへ続く
404名無しさん@お腹いっぱい。:2014/01/12(日) 21:45:38.86 ID:eJUQGLfo0
>>403の続き

func_MsgBox(a, b, c, d) {
    MsgBox, % a, %b%, %c%, %d%
}

func_WinClose(a, b, c, d, e) {
    WinClose, % a, %b%, %c%, %d%, %e%
}

func_gosub(a) {
    gosub, % a
}

label_sub:
    MsgBox, sub_sub_sub
return
405名無しさん@お腹いっぱい。:2014/01/12(日) 21:54:15.08 ID:eJUQGLfo0
>>403
Exec_Strings()関数内の「cmd_strings := 〜」の行は不要ですた
406名無しさん@お腹いっぱい。:2014/01/13(月) 13:13:27.29 ID:oE7uW8Qb0
関数も文字列として送れるようにした
とりあえずこんな感じだけど個人的には満足しとります(リマップ用スクリプトが見た目スッキリした)

Exec_Strings("kansu_1(""hoge hage"")", "f")
Exec_Strings("kansu_2(""Auto"",""HotKey"")", "f")

Exec_Strings(cmd_strings, function = ""){
    if (function = "f") { ;引数functionが「f」なら、cmd_stringsは関数と判断する
        Array := StrSplit(cmd_strings, "(")
        Pattern := "^""|""|\)$"
        tmp_Arg := RegExReplace(Array[2], Pattern)
    }else{
        Array := StrSplit(cmd_strings, ",")
        call_func := % "func_" Array[1]
    }
    if (InStr(Array[1], "kansu_1")) {
        kansu_1(tmp_Arg)
    }else if (InStr(Array[1], "kansu_2")) {
        arg := StrSplit(tmp_Arg, ",")
        kansu_2(arg[1], arg[2])
    }
}
kansu_1(hikisu){
    MsgBox, % hikisu
}
kansu_2(hikisu_1, hikisu_2){
    MsgBox, % hikisu_1 hikisu_2
}

スレ汚しスマンかった(´・ω・`)
407名無しさん@お腹いっぱい。:2014/01/13(月) 15:32:09.11 ID:ExwEl34b0
>>406
関数を追加するたびに else if を増やしていくのは面倒くさそう
InStr() で1つずつ調べるより IsFunc() で関数の存在と引数の個数を調べて
分岐するほうが楽じゃないかな

後、MsgBox や WinClose みたいに単体で動作するやつは新規スクリプトに
書き出してそれを実行するほうが好み
引数の個数で分岐する必要が無いし、エラーが発生しても元のスクリプトが
止まらなくてすむ
408名無しさん@お腹いっぱい。:2014/01/13(月) 15:38:03.02 ID:qvRdmS//0
関数とラベルチェック作るとするじゃん?

if (islabel(check))
gosub % check
else if(isfunc(check))
    この行どうしよう?
else
    Send % check
return
409名無しさん@お腹いっぱい。:2014/01/13(月) 16:03:58.58 ID:ExwEl34b0
やるとしたらこんな感じかな
arg1, arg2, ... は適切に設定されているとして

n := IsFunc(check)
if(n)
{
 if(n==1)
  %check%()
 else if(n==2)
  %check%(arg1)
 else if(n==3)
  %check%(arg1, arg2)
 else if(n==4)
  %check%(arg1, arg2, arg3)
  以下、予想される最大数の n まで
}
410名無しさん@お腹いっぱい。:2014/01/13(月) 19:57:19.56 ID:oE7uW8Qb0
>>407,>>408
アドバイスありがとう。お陰でかなり洗練されたけど、突っ込み所有れば容赦なく言ってちょ

Exec_Strings(cmd_strings, function = ""){
    if (function = "f") { ;引数functionが「f」なら、cmd_stringsは関数と判断する
        Array := StrSplit(cmd_strings, "(")
        Pattern := "^""|""|\)$"
        call_func := % Array[1]
        tmp_Arg := RegExReplace(Array[2], Pattern)

        n := IsFunc(call_func)
        if (n) {
            arg := StrSplit(tmp_Arg, ",")
            if (n = 1) {
                %call_func%()
            }else if (n = 2) {
                %call_func%(tmp_Arg)
            }else if (n = 3) {
                %call_func%(arg[1], arg[2])

            ;中略

            }else if (n = 9) {
                %call_func%(arg[1], 〜, arg[8])
            }
        }
;---------------------------------------------------------------------

次レスへ続く
411名無しさん@お腹いっぱい。:2014/01/13(月) 19:59:10.16 ID:oE7uW8Qb0
>>410の続き
;---------------------------------------------------------------------
    }else{
        Array := StrSplit(cmd_strings, ",")
        call_func := % "func_" Array[1]

        if (islabel(Array[2])) {
            gosub, % Array[2]
        }else{
            %call_func%(Array[2], 〜, Array[9])
        }
    }
}

またまた、スレ汚しスマンです(´・ω・`)
412名無しさん@お腹いっぱい。:2014/01/13(月) 20:15:02.55 ID:oE7uW8Qb0
突っ込まれる前に一つ分かってることを言っとくと、

Exec_Strings("MsgBox,2,title_test,test")
Exec_Strings("MsgBox,test")

上のは問題ないけど、下のだと表示が空になるのでまだまだですわ(´・ω・`)
後はコツコツと時間かけて手直ししていきますです

では、おやすみなさい・・・・・(´・ω・`)
413名無しさん@お腹いっぱい。:2014/01/13(月) 23:19:06.64 ID:z3Qnnmrd0
可変長引数使ったほうがシンプルだよ
414名無しさん@お腹いっぱい。:2014/01/15(水) 23:32:21.59 ID:V21fvvgZ0
ID:oE7uW8Qb0です
>>413
可変長引数の件はかなり役に立ったよ、ありがとう

>>412の件は、func_MsgBox()関数内で第2引数以下に値が有るか無いかで
どっちのMsgBox使うか判断するようにしますた

他にも手直しが必要なところを見つけたよ・・・まだまだ先が長いな(´・ω・`)
415名無しさん@お腹いっぱい。:2014/01/16(木) 00:15:37.30 ID:stEVobho0
似たようなのでini に記述されたコマンドを実行するようなマクロスクリプト作ってたわ
ahkそのものがテキストベーススクリプタだから激しく車輪の再開発なんだけどね
416名無しさん@お腹いっぱい。:2014/01/16(木) 00:59:56.08 ID:GI4VDAks0
autohotkeyにreplがあればいいのに
417名無しさん@お腹いっぱい。:2014/01/17(金) 14:26:10.08 ID:zcQzHuv90
Tてアスキーコードじゃ84じゃん。
そんで小文字のtは116。

でも、どっかのブログの記事だと
Send,^+tと
Send,^Tは同じになっちゃうとか??受けるアプリによるの??

おかしくね?

^+t はコントロールとシフトを押しながらt(116)となることを通常、
想定するよな?

^+tは内部でコントロール押しながらT(84)となっているの?
初心者な意見ですみません。
418名無しさん@お腹いっぱい。:2014/01/18(土) 17:05:43.11 ID:nVmuDu3q0
文字コードだけでなく、スキャンコード, VKey とか色々とあるんよ
とりあえずSendやその周辺のマニュアル読むべし
419名無しさん@お腹いっぱい。:2014/01/19(日) 13:05:34.00 ID:dvav9W940
降順にループしたいんだけど、こんな方法しかない?

array := Object()
array[1] := "one"
array[2] := "two"
array[3] := "three"

c := 0, n := 0
for Value in array {
  c := array.Maxindex() - n
  n ++
  MsgBox, % array[c]
}

とか

Loop, % array.Maxindex() {
  c := array.Maxindex() - n
  n ++
  MsgBox, % array[c]
}
420名無しさん@お腹いっぱい。:2014/01/19(日) 13:19:11.21 ID:dvav9W940
>>419
訂正です。
実際はforループでValueの値も使いたいので、こっちので良い(スマートな)方法有ったら教えて下さい。
421名無しさん@お腹いっぱい。:2014/01/19(日) 13:59:26.29 ID:dvav9W940
連投すいません・・・>>420の「Valueの値も使いたいので・・・」件は取り消します。
Valueは昇順で処理する場合必要なのであって、降順には不要でした。
422419:2014/01/19(日) 18:14:49.09 ID:dvav9W940
結局以下のようにして落ち着きました。
降順ループの場合、forだと変数Valueが無駄になるので
loopの方がメモリーを無駄遣いしなくて良いのかな・・・なんて思いました。

Loop, % array.Maxindex() {
  c := array.Maxindex() - (A_Index - 1)
  MsgBox, % array[c]
}
423名無しさん@お腹いっぱい。:2014/01/20(月) 00:24:14.42 ID:hAigsbcH0
オブジェクト内の要素カウントするのはコストかかるんで、
ループ前にローカル変数増やして対処するのが常套手段だけど、
AHKはどうかなぁ
424名無しさん@お腹いっぱい。:2014/01/20(月) 04:48:58.02 ID:qibQGH8z0
i := array.Maxindex() + 1
while --i
 MsgBox, % array[i]

とか

i := array.Maxindex()
Loop {
 MsgBox, % array[i]
} until !--i

とかは?
425名無しさん@お腹いっぱい。:2014/01/20(月) 20:53:51.90 ID:k+hq/v/Y0
>>423-424
ありがd
知らなかったこと色々勉強した・・・
レスが長くなるとアレなんで簡単に書くと
先ずは、「--i」は(記述されたその行で?)演算後の値になること。(「i--」は次に「i」が使われる時点で演算後の値になる)
上段・・・「while 式」は、式「--i」の評価結果が 0 の時点でループ終了すること。
下段・・・「until 式」は、式「!--i」の評価結果が真(true、つまり 0 以外)になるまでループが続行されること。(この場合、「!」が肝)

今回は、後々のメンテナンスで分かりやすい「while」ループを使うことにしました。
426名無しさん@お腹いっぱい。:2014/01/20(月) 20:55:45.08 ID:k+hq/v/Y0
連続だけど、質問。

今まさにWindowsがシャットダウンされようとしてるのは以下の方法で検知できるんだけど、
If A_ExitReason = ShutDown

サスペンドやハイバネートを検知するにはどうしたらいいんでしょうか?

AHKからサスペンドやハイバネートさせれば、検知など不要なんだけど、
方法如何に関わらず、検知させたいんです。
427名無しさん@お腹いっぱい。:2014/01/20(月) 20:59:22.22 ID:k+hq/v/Y0
あ、windowsXP 32bitでAHK_L(1.1.13.01)です。
428名無しさん@お腹いっぱい。:2014/01/20(月) 21:31:05.63 ID:hAigsbcH0
429名無しさん@お腹いっぱい。:2014/01/20(月) 22:07:16.10 ID:k+hq/v/Y0
>>428
ありがd
よく読んで活用します。

しかし、過去スレのpart6と7に有ったのか・・・
一応過去スレ読んどかないと、と思ってpart16・15・・・と遡りながら時間かけて読んできたけど、まだpart11の途中だったよ。
430名無しさん@お腹いっぱい。:2014/01/21(火) 05:43:22.73 ID:VqxOnmgt0
専ブラのJaneStyleで動画が見つからなかった時に
ダイアログを自動で閉じるようにしたいんだけど無反応でうまくいきません
どこか間違ってますか?

SetTitleMatchMode,2
#Persistent
SetTimer AutoClose,500
return

AutoClose:
IfWinExist, StreamingPlayer3 ahk_class #32770
{
ControlClick OK, StreamingPlayer3 ahk_class #32770
}
return
431名無しさん@お腹いっぱい。:2014/01/21(火) 15:08:07.41 ID:aYUiPLva0
AutohotkeyL x64 unicode版で動くeucへのURIエンコードスクリプトってありますでしょうか。
UTFへの変換やShiftJIS版でのものなら見つかるのですが、上記の条件だと見当たりません。
432名無しさん@お腹いっぱい。:2014/01/21(火) 15:36:30.37 ID:oaSK6Z880
マウスカーソルがリンク、入力モード、矢印のどれかであるかを判断する方法はあるでしょうか?
433名無しさん@お腹いっぱい。:2014/01/21(火) 16:00:45.35 ID:KTV70fcA0
>>432
MouseGestureLの関数丸パクリでこんなのは?

Loop
{
If MG_GetCursor() = 65567
Tooltip, リンク
Else If MG_GetCursor() = 65541
Tooltip, 入力モード
Else If MG_GetCursor() = 65539
Tooltip, 矢印
Else
Tooltip, その他
Sleep,500
}
Return

MG_GetCursor()
{
VarSetCapacity(infCur, 16+A_PtrSize, 0)
NumPut(16+A_PtrSize, infCur, 0, "UInt")
DllCall("GetCursorInfo", "Ptr",&infCur)
hCursor := NumGet(infCur, 8, "Ptr")
return hCursor
}
434名無しさん@お腹いっぱい。:2014/01/21(火) 18:45:16.66 ID:MOe0YTzR0
リマップ/ホットキー用スクリプト書くとき、
キー毎にまとめて書くのとアプリ毎にまとめて書くのと
どっちの方が見やすく、管理しやすいでしょうか。

…というか、どっちがオススメですか。ご意見お聞かせ下さい。
435名無しさん@お腹いっぱい。:2014/01/21(火) 18:54:25.99 ID:OEZwiZLo0
>>430
問題が起きたなら単純に機能をばらして確認すればいい、この場合、監視 + ダイアログをクリック
ダイアログをクリックするスクリプトを先に完成させよう。

>>432
A_Cursor
Wiki等情報サイトでまずは検索 ttp://ahkwiki.net/Variables#A_Cursor
436名無しさん@お腹いっぱい。:2014/01/21(火) 19:49:21.45 ID:sJJjom+00
うーん、地味に組み込み変数に今押してる修飾キーを除いた物理キーってのがないんだのう

A_thishotkeyだと#とか^とか*とか downとか upとか余計なのついてくるし、トリムコマンドで整形するしかないのん?
437名無しさん@お腹いっぱい。:2014/01/21(火) 20:51:49.47 ID:W82wCj4o0
かなキーに変換キーを割り当てたいだけなのに、
うまいこと設定できない。
日本語キー周りはレジストリ書き換えするしかないのか。
438名無しさん@お腹いっぱい。:2014/01/21(火) 21:02:49.49 ID:5mH6o05+0
やったことないが、Wikiでは半角/全角・CapsLock・かなは動作不定となっている以上、
AHKで弄るのはよろしくないんじゃね
439名無しさん@お腹いっぱい。:2014/01/21(火) 21:32:37.32 ID:+JdT8cDl0
>>434
俺はアプリ毎
アプリを使わなくなった時にまとめて消せるのが楽

>>437
vkF2sc070::
Send, {vk1Csc079}
return
で動かね?
440名無しさん@お腹いっぱい。:2014/01/21(火) 21:45:03.49 ID:OEZwiZLo0
>>434
こんな感じで管理するといいかも。

;---共通設定----
F1::
ToolTip 通常
Return

;--アプリ別設定--
#If WinActive("電卓")
F1::
ToolTip 電卓
Return
#If

#If WinActive("無題 - メモ帳")
F1::
ToolTip メモ帳
Return
#If
441名無しさん@お腹いっぱい。:2014/01/21(火) 22:57:09.64 ID:MOe0YTzR0
>>439-440
なるほどーアプリ毎にまとめた方が良いみたいですね。
自分もその方向で行きたいと思います。
ありがとうございました、。
442名無しさん@お腹いっぱい。:2014/01/21(火) 22:58:28.83 ID:kPbnp8kO0
もし良いアイディアがあれば教えてもらいたいのですが、
Windows8のタッチキーボードをトリガーに、AHKを使えたりしますか?

最近DELL Venue8を購入、Win8使ったことある人ならわかるだろうけど、タッチキーボードに左側にテンキー右側に日本語フリックのキーボードがあって、
それをテンキーよろしく8,2,4,6を上下左右のカーソル化や、「あ」をタッチしたら○○する というアクションを起こさせたいんです。
(イメージはゲームボーイのように縦に持って、両手親指で操作)
443名無しさん@お腹いっぱい。:2014/01/22(水) 03:31:43.94 ID:wq2B81sk0
>>442
要はAutoHotkeyがタッチキーボードで動くのかって事だろ?
すぐに出来るんだし自分で試せばいいじゃん。
動かない、満足しないならGUIでコントローラーでも作ればいい。
444名無しさん@お腹いっぱい。:2014/01/22(水) 17:48:33.27 ID:PiZmpAue0
いろんなソフトのツールチップの内容をクリップボードにコピーしたいのですが、
スパイでウィンドウクラスを取得しようとしても、ツールチップが途中で消えてしまうので確認できません。

ツールチップの内容をクリップボードにコピーする方法を教えていただけないでしょうか?
445名無しさん@お腹いっぱい。:2014/01/22(水) 23:00:13.41 ID:qLNZOlPI0
>>442
んで普通のホットキーラベルじゃダメだったの??
446名無しさん@お腹いっぱい。:2014/01/23(木) 10:48:40.76 ID:lisqLFvS0
7 64bit
タスクバーをalt+Tなどで表示のトグルはできるのですが非表示時にタスクバーがあった範囲が
空白になって最大化などで隙間ができてしまいます
これを解決する記述はありますでしょうか?
447名無しさん@お腹いっぱい。:2014/01/23(木) 10:53:27.58 ID:lisqLFvS0
タスクバーを自動的に隠すにチェックで一応解決しました
448名無しさん@お腹いっぱい。:2014/01/23(木) 14:25:32.26 ID:QMuyJVfa0
AutoHotkey.ahkとは別のA.ahkとかを#NoTrayIconで起動してた時に
AAA.ahkを指定して終了させることはできませんか?
タスクマネージャをみても全てAutoHotkey.ahkで見分けがつかず
今は一旦全部終了させてから再度AutoHotkey.ahkだけ起動させてるんですが
A.ahkだけとかB.ahkだけを個別に終了させる方法があれば教えてください
449名無しさん@お腹いっぱい。:2014/01/23(木) 14:31:13.16 ID:SizjDSf40
450名無しさん@お腹いっぱい。:2014/01/23(木) 15:14:48.51 ID:QMuyJVfa0
>>449
これは便利そうですありがとうございます
451名無しさん@お腹いっぱい。:2014/01/23(木) 16:19:20.30 ID:zAon4KPw0
>>450
1.それぞれのahkで WinSetTitle でユニーク度の高いタイトルを設定する。
2.該当ahk終了専用のahkで、WinClose にそのタイトルを指定
3.該当ahkを終了させたい時に、2で作ったahkを起動する。

で、出来ないかな?(実験してない、すまないニダ)
452名無しさん@お腹いっぱい。:2014/01/23(木) 16:37:18.06 ID:zAon4KPw0
ごめん…適当なこと言ってました。

AHKは、GUI作る以外に自スクリプトにタイトル設定できないみたいだ…
453名無しさん@お腹いっぱい。:2014/01/23(木) 17:59:29.95 ID:zAon4KPw0
連続で投稿してすまないニダ。

もうちょっと詳しく調べてみて試したらいけた。
;-----------------------------
;AAA.ahk
#Persistent
#NoTrayIcon
ToolTip, テスト表示
;-----------------------------
;terminate.ahk
DetectHiddenWindows, on
WinClose,E:\AutoHotkey\AAA.ahk - AutoHotkey v1.1.14.01 ahk_class AutoHotkey
;-----------------------------
WinCloseに指定するタイトルやクラスは、AHKインストーラ付属のAU3_Spy.exeで調べられる。
AU3_Spy.exeを起動し、調べたいAHKのトレイアイコンを表示して、そのアイコンを右クリックするだけ。

何かアホみたいに簡単だったニダ。
454名無しさん@お腹いっぱい。:2014/01/24(金) 14:17:15.78 ID:B/zqX9Ah0
最大化時のウィンドウの座標調べたらx:-8 y:-8だった
普通(0、0)じゃないかと思うんだけどなんか画面設定ミスってんのかな
455名無しさん@お腹いっぱい。:2014/01/24(金) 15:20:44.11 ID:vgMSApIn0
456名無しさん@お腹いっぱい。:2014/01/24(金) 15:56:07.01 ID:B/zqX9Ah0
枠分は最初からはみ出てるってことですか?
でもあるウィンドウの最大化時にwigetposで得た座標、幅、高さを
最大化してないそのウィンドウに対してWinMoveで指定してやると
最大化した時と違って画面外にはみ出まくった経験があるから
その数値って外枠を反映してないと思ってたけど
457名無しさん@お腹いっぱい。:2014/01/24(金) 18:48:06.38 ID:Lzwg6SyD0
>>444
ツールヒントウィンドウのテキストの内容を取得
ttp://www.autohotkey.com/board/topic/53672-get-the-text-content-of-a-tool-tip-window/

>>456
過去の質問の続きなら最初のスレ番を名前に書いほしい見にくい。
最大化時は枠分だけ画面外にはみ出すOS仕様、枠サイズ知りたい場合はAPI関数で分かる。
458名無しさん@お腹いっぱい。:2014/01/24(金) 19:06:22.92 ID:B/zqX9Ah0
>>457
どうもです。まぁきっとこの座標の8ってのが枠の幅だろうと思います。
最大化時には枠分を画面外にはみ出させて、その枠を操作不能、不可視な感じにしてるんですね。
デュアル画面から見えないので枠自体を消してるんだと思ってましたが、これで座標の数字の謎が解けました
459名無しさん@お腹いっぱい。:2014/01/24(金) 21:02:37.13 ID:u2ayCEFt0
Windows8の64bit版を使っていて、AutoHotkey111401をインストールしました

ttp://bombermine.com/#/play/

↑このページのタイトルのときにキーボードのアプリケーションキーを無効にしようというつもりで
下のように書いたahkファイルをダブルクリックし、通知領域にアイコンは表示されているんですが
上手く出来ません、ご指導ください
あと、ページのタイトルじゃなくてURLを指定することは出来るんでしょうか?

SetTitleMatchMode 2
#IfWinActive Bombermine ? Massively Bomberman Online with up to 1000 players on the single map
AppsKey::return
460名無しさん@お腹いっぱい。:2014/01/24(金) 21:57:13.73 ID:ZnuXo7qt0
ファイルパス長が知りたくてテキストエディタにコピペして桁数を確認する作業をしてるんですが
AHKで手っ取り早くできないでしょうか
461名無しさん@お腹いっぱい。:2014/01/24(金) 23:03:18.69 ID:Lzwg6SyD0
>>459
WinTitle指定間違ってるだけ、長いタイトルの場合ブラウザによっては途中で切られるので
誤認識が起きない程度の長さで十分

Bombermine ? Massively Multiplayer Online Retro Arcade with up to 1000 players on the single map - Mozilla Firefox
Bombermine ? Massively Multiplayer Online Retro Arcade with up to 1000 players on the single ma - Internet Explorer

#IfWinActive Bombermine ? Massively Multiplayer Online
462名無しさん@お腹いっぱい。:2014/01/24(金) 23:14:16.76 ID:Lzwg6SyD0
463名無しさん@お腹いっぱい。:2014/01/25(土) 00:24:33.74 ID:PKAQZmlc0
>>460
「桁長」って何を指すかによる。 文字数?バイト長(半角NN文字)?

前者なら文字数カウントするだけ。
後者なら内部UTF8なんでちょっと面倒( ア で3バイト)なんで↓の関数使うといい。

/*
* 文字列のバイト長を返す
*/
StrLenB(str) {
 Return (A_IsUnicode) ? StrPut(str, "CP0")-1 : StrLen(str)
}


パス文字列をどう貰って、どう結果を使いたいかが無いので、計算部分だけの回答。
464名無しさん@お腹いっぱい。:2014/01/25(土) 10:55:43.53 ID:DuQB+Pwn0
v1.1.14.01 - January 15, 2014

本家のHPがいつのまにかリニューアルしてて、あと名前から"L"が取れたらしい
一方で無印のHPも健在
どういうことだってばよ?
465名無しさん@お腹いっぱい。:2014/01/25(土) 16:46:10.11 ID:R5KhJJBU0
新しいのはインストーラーのみか
zip版希望
466名無しさん@お腹いっぱい。:2014/01/25(土) 16:47:07.97 ID:k83nQKoL0
467名無しさん@お腹いっぱい。:2014/01/25(土) 18:51:23.33 ID:R5KhJJBU0
ありがとう
468名無しさん@お腹いっぱい。:2014/01/26(日) 18:50:57.66 ID:C4Oh8nOV0
v1.1.14.01
Unicode 32-bit

コマンドラインを指定(0〜255の数字)して開くとアクティブウインドウの透明度を変えられるahk作ってるんですけど、
%0%ってコマンドラインの個数入ると思ってましたが違いました?
何故かコマンドラインそのものが入るんですけど、仕様変更になったんでしょか?
だとすると、コマンドラインの個数はどうやって調べるんですか?

CmdLine_num := %0%

if (CmdLine_num > 2) {
MsgBox, 16, , 引数の数 %CmdLine_num%
ExitApp
}

Sleep, 5000

if (CmdLine_num = 1) {
MsgBox, 引数の数 %CmdLine_num%
WinSet, Transparent , OFF, A
}else if (CmdLine_num = 2) {
CmdLine := %1%
MsgBox, 引数の数 %CmdLine_num% 引数 %CmdLine%
if ((CmdLine >= 0) && (CmdLine <= 255)) {
WinSet, Transparent , % CmdLine, A
}
}
469名無しさん@お腹いっぱい。:2014/01/26(日) 18:57:15.85 ID:UWuG7v320
>>468
CmdLine_num = %0%
470名無しさん@お腹いっぱい。:2014/01/26(日) 19:23:28.77 ID:C4Oh8nOV0
>>469
ありがとうございました。

この場合、「:=」は使えないんですね。
個人的に変数への代入は、なるべく「:=」に統一したいので
CmdLine_num := 0
CmdLine := 1
とやってみましたが無理でした。コマンドラインの場合はこういうもんだと諦めるしか無さそうですね。

あとどうでもいいんですが、上のスクリプト、if 文に間違いがありました。
if (CmdLine_num > 2) { → if (CmdLine_num > 1) {
if (CmdLine_num = 1) { → if (CmdLine_num = 0) {
}else if (CmdLine_num = 2) { → }else if (CmdLine_num = 1) {
471名無しさん@お腹いっぱい。:2014/01/26(日) 20:24:21.08 ID:47p4XgnW0
俺も諦めた口だな
472名無しさん@お腹いっぱい。:2014/01/26(日) 23:01:56.54 ID:U0PUYvo40
どうしても = を使いたくないなら

n := 0
CmdLine_num := %n%

とか

CmdLine := object()
loop,%0%
&nbsp;&nbsp;CmdLine[a_index] := %a_index%
msgbox % "引数の数: " . CmdLine.maxindex()

とか。
%0%もなんだか気持ち悪ければ

loop {
&nbsp;&nbsp;if %a_index% is not space
&nbsp;&nbsp;&nbsp;&nbsp;CmdLine[a_index] := %a_index%
&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;break
}

とか?
473名無しさん@お腹いっぱい。:2014/01/26(日) 23:03:46.58 ID:U0PUYvo40
&nbsp;使えないのね。
エディタに貼り付けたらすぺーすに変換してちょ。
474名無しさん@お腹いっぱい。:2014/01/26(日) 23:57:54.51 ID:C4Oh8nOV0
>>472
ありがとうございます。
参考になります。
475名無しさん@お腹いっぱい。:2014/01/27(月) 00:52:17.40 ID:WmgrOHKw0
>>468
v1.1.14.01Unicode 32-bitと64-bitの両方で試してみたけれど
%0%はやっぱりコマンドラインの個数そのものが入るよ?
それと、どうせなら>>472のものを関数化してしまえばいいかと
getCmdLine(){
global
CmdLine := []
loop,%0%
CmdLine[a_index] := %a_index%
return CmdLine
}

rslt := getCmdLine()
MsgBox,% rslt.maxindex()

実は:=を使わなくてもいいので
getCmdLine()
MsgBox,% CmdLine.maxindex()
こう書くこともできる
476468:2014/01/27(月) 21:37:24.30 ID:r+/i0w0R0
468です。
>>475
以下のスクリプトを適当なコマンドラインオプション付けて実行すれば分かって貰えるかと。
違いは、「:=」になってるか、「=」になってるかだけです。(ブラウザの表示フォントによって見づらいかもしれません)
あと>>475のスクリプトは参考にさせていただきます。ありがとうございました。

CmdLine := %0%
MsgBox, 引数の数 : %CmdLine%

CmdLine = %0%
MsgBox, 引数の数 : %CmdLine%
477名無しさん@お腹いっぱい。:2014/01/27(月) 23:21:49.05 ID:OcLv5Pvb0
%0%には間違いなくコマンドライン引数の数が入ってるけど、
CmdLine := %0% だと %0% の中身がでてきて、それがさらに変数名だと解釈される。
つまり引数が1つなら CmdLine = %1% だし、2つなら = %2% と同じ意味になって、
渡した引数の最後が出てくる。

foo := "bar"
bar := "ばあ!"
msg := %foo%
msgbox % msg
478名無しさん@お腹いっぱい。:2014/01/27(月) 23:27:24.86 ID:FZRoLMho0
指定フォルダ以下を正規表現でリネームするのください
RegularRenamer使って組んでみたけど
しょっちゅう失敗するダメプログラムしか出来ませんでした……
479名無しさん@お腹いっぱい。:2014/01/28(火) 00:03:08.59 ID:ymDXoIqa0
いっそ外部プログラムに任して起動とコマンドラインだけ送る
そのあと常駐しないように閉じるとかな

たしかに出来ないことはないんだけど何もかんもAHKでやらんでもいい気もしなくもない
480名無しさん@お腹いっぱい。:2014/01/28(火) 00:41:53.37 ID:991f2vxH0
>>478
「リネームソフト 正規表現」 でまず検索

ここはスクリプをトクレクレする場ではないので要求するだけムダ
気軽に「こんなソフトありませんか?」スレなら要望に答えて適当なツールを作ってくれることもある
かもしれないのでそっち池
481478:2014/01/28(火) 00:55:27.33 ID:lj6Jkt+40
2行目を読んでほしかった……
まぁここで頼んでも無駄ですよね
482名無しさん@お腹いっぱい。:2014/01/28(火) 01:15:18.91 ID:sopsM8OQ0
うん無駄だからもう来んなよ
483名無しさん@お腹いっぱい。:2014/01/28(火) 10:23:43.87 ID:POwa9hmO0
クレクレは嫌いだけど、>>468みたいなどこがもちがってますか的なのは歓迎
というかloopのファイル検索とFileExist使えば猿でもできるんじゃね
484名無しさん@お腹いっぱい。:2014/01/28(火) 10:51:10.82 ID:991f2vxH0
添削は勿論いいんだよ、ネットに転がってるの丸ごとコピペして改造頼むはダメだけどな
自分で組んだならそれを貼れば良かったのに、丸ごとなしにして一から作ってくださいじゃ結局ただのクレクレじゃん
485名無しさん@お腹いっぱい。:2014/01/28(火) 13:17:54.45 ID:c00SqAlK0
クレクレは置いといて
明らかに1行目しか読んでないってひとたまにいるけど
速読術かなんかなの?誤解したらむしろ効率下がってないか
486名無しさん@お腹いっぱい。:2014/01/28(火) 17:01:11.39 ID:C7Pgt1zP0
487名無しさん@お腹いっぱい。:2014/01/29(水) 07:29:05.00 ID:h8Ym46Jd0
>>464のあたりでも話題になってるけどなんで_L取れたの?
紛らわしい
488名無しさん@お腹いっぱい。:2014/01/29(水) 08:34:47.01 ID:tb2o5kH60
>>487
Lが付いてると派生版という印象が残るからだろ
Autohotkey_Lはもう随分前にAutohotkeyのメインストリームに
なってるし、Lが取れたのは今回からじゃない
正式名称がAutohotkey 1.1で、通称がAutohotkey_Lになってた
489名無しさん@お腹いっぱい。:2014/01/31(金) 23:27:30.84 ID:N3v2cjm20
AHKのせいでLinuxに移行できない
490名無しさん@お腹いっぱい。:2014/01/31(金) 23:27:39.03 ID:GnyFvLrG0
AHKでWindows7の音声デバイス出力を切り替えるにはどうすればいいですか?
WaveDevice.ahkという名前のものを参考にいろいろやってみてるのですが、おそらくwindows7では使えないみたいです
491名無しさん@お腹いっぱい。:2014/02/01(土) 00:02:11.81 ID:phGKBjm80
VA.ahkで出来るんじゃね?
492名無しさん@お腹いっぱい。:2014/02/01(土) 00:26:54.01 ID:TtsDpLi60
Linuxになんで移植されないか不思議なレベル
493名無しさん@お腹いっぱい。:2014/02/01(土) 00:33:12.57 ID:oWsUFP5K0
Linuxは普通にシェルスクリプトで操縦できるからじゃね?
494名無しさん@お腹いっぱい。:2014/02/01(土) 00:37:09.51 ID:9AJzyKTi0
Linux版の名前は Autohotkey_L で決まりだな!・・・あれ?
495名無しさん@お腹いっぱい。:2014/02/01(土) 00:42:28.44 ID:4BbEZYZ50
煽りじゃなくて、LinuxでAHKを使って何をしたいのかがイマイチわかんない。
(windowsでもAHKを使う積極的な理由がよくわからないけど・・・)
496名無しさん@お腹いっぱい。:2014/02/01(土) 01:20:35.40 ID:TtsDpLi60
キーリマップ
ていうかスペースキーを修飾キーにして使うスクリプトが案外便利なんだよ
アップローダの関数を自分で書き換えたやつだけど
497名無しさん@お腹いっぱい。:2014/02/01(土) 06:08:55.80 ID:dnPz412rP
かざぐるマウスが解散したから代わりに使いたいんだけど、
マウスジェスチャーはどうやればいいの??
498名無しさん@お腹いっぱい。:2014/02/01(土) 06:25:25.90 ID:9ddSvEfU0
マウスジェスチャーなら、MouseGestureL.ahkを使うのがいいかと
499名無しさん@お腹いっぱい。:2014/02/01(土) 09:51:14.83 ID:aOTtPXC60
500名無しさん@お腹いっぱい。:2014/02/01(土) 11:11:16.77 ID:DQQR/POM0
linuxならironがと思ったら404だ
501名無しさん@お腹いっぱい。:2014/02/01(土) 13:34:40.26 ID:PQCzOCbO0
カーソルの動きを監視する上で一番賢いやり方教えてください

カーソルが2秒動かなかったら画面端に移動、を考えたときに
常にカーソルを監視させると結構な負荷になるのでは?なんて思うんですが
502名無しさん@お腹いっぱい。:2014/02/01(土) 16:29:17.90 ID:cwTp10TA0
SetTimerでMouseGetposしてポーリングチェックしたらいいんでね
PCの処理速度からしたら2秒ごとなんて屁みたいなもんだし
OnMessage()でMouseMoveイベント拾うより簡単で負荷も少ないと思う
503名無しさん@お腹いっぱい。:2014/02/01(土) 19:00:58.26 ID:9AJzyKTi0
>>501
SetTimer(監視最小10ms〜) + MouseGetPos
Loop + MouseGetPos + Sleep(無し/10〜)

タスクマネージャで負荷見てもらえば分かるが
待機時間0(Sleep 0)で全力で処理しない限り
CPU負荷は1%も増えない程度の負荷しかない
あとは実際に自分で確かめてほしい。

F1::
Var = 0
Loop,1000 {
ToolTip % Var++
Sleep 0
; Sleep 10
; Sleep 100
}
Return
504名無しさん@お腹いっぱい。:2014/02/01(土) 19:19:56.14 ID:Xtn7ZK6j0
SetTimerしかない、と言うよりSetTimerで十分、というわけですね
ありがとうございました
505名無しさん@お腹いっぱい。:2014/02/02(日) 01:44:50.98 ID:et661Edd0
AutoHotkeyを使えばEmacsやviにも劣らない全く新しい強力なキーバインド体系を作れると思うのですが、
それについて意見を持っている方、もしくはそういった方々が集まるところを知っている方がおられましたら御一報を
506名無しさん@お腹いっぱい。:2014/02/02(日) 03:41:22.12 ID:otYK2/Je0
Gui, Add, ListViewでリストビューの余白(一番最後に追加した項目の下)をクリックしても
gオプションで指定したラベルが実行されます
余白のクリック時には無効にするにはどうすればいいのでしょうか。
もしくは余白クリック時には項目選択のフォーカスが外れるようになる方法はありますか
507名無しさん@お腹いっぱい。:2014/02/02(日) 03:42:24.46 ID:otYK2/Je0
訂正
>Gui, Add, ListViewでリストビューの余白(一番最後に追加した項目の下)をクリックしても
Gui, Add, ListViewで追加したリストビューの余白(一番最後に追加した項目の下)をクリックしても
508名無しさん@お腹いっぱい。:2014/02/02(日) 04:57:19.46 ID:GZAZhxNe0
>>507
解説読み飛ばしていないか?・・・。

選択状態(青くなる)、キーボードフォーカス(枠線)
どっちのこと言ってるかわからんがやることは同じ。
GUI関連は項目操作の専用関数が多いのでよく読もう。
ttp://ahkwiki.net/Gui,Add,ListView

リストビューをクリック等(AltSubmitで拡張)操作するとGラベルのサブルーチン実行。

押した項目番号取得 イベント A_EventInfo
テキスト取得 LV_GetText
押した箇所が余白か判断(全ての空白なら) If

分岐→ 小文字有り 別の処理

空白 選択解除 LV_Modify
509名無しさん@お腹いっぱい。:2014/02/02(日) 05:47:32.05 ID:otYK2/Je0
試してもらえば分かると思いますが、空白クリック時に得られるA_EventInfoが
空白クリック前にフォーカスのあった項目のRawNumberになってしまうから詰まってるわけです
だから>>506
>もしくは余白クリック時には項目選択のフォーカスが外れるようになる方法はありますか
と聞いたのです。
510名無しさん@お腹いっぱい。:2014/02/02(日) 08:40:44.56 ID:GZAZhxNe0
>>509
何言ってるのか追加の説明でようやく理解した。

GuiControlGet,*2*,Focus または ListViewのHwnd*1*
ControlGet,OutputVar,List,Selected,*1*,*2*

どちらか使ってコントロール指定すれば 「選択中の項目」 内容が分かる。
511名無しさん@お腹いっぱい。:2014/02/02(日) 09:30:53.69 ID:khPdHqUR0
項目番号取得の際に A_EventInfo の代わりに LV_GetNext() を使う方法もあるよ

[solved] A_EventInfo in ListViews - Support - AutoHotkey Community
ttp://www.autohotkey.com/board/topic/82268-solved-a-eventinfo-in-listviews/
512名無しさん@お腹いっぱい。:2014/02/02(日) 18:02:24.06 ID:otYK2/Je0
>>510
>>511
亀レスすみません。
できました!ありがとうございました。
513名無しさん@お腹いっぱい。:2014/02/02(日) 18:07:05.65 ID:otYK2/Je0
誰得追記
LV_GetNext()の第一引数を省略するのが重要だったみたいです。0指定とかだと駄目
>StartingRowNumberが省略された場合は、一番上の選択されている項目を返す。
514名無しさん@お腹いっぱい。:2014/02/02(日) 18:23:06.79 ID:otYK2/Je0
LV_GetNext( ,"F")でも>>506状態になってしまい、LV_GetNext("F")としないと駄目っぽいです
一応書いておきます。何度もすみません。
515名無しさん@お腹いっぱい。:2014/02/02(日) 18:47:40.76 ID:QTNRNSb60
>>514
自分も試してみたが罠仕様だなw

○ LV_GetNext(0) LV_GetNext("0") LV_GetNext("F")
× LV_GetNext( ,"F") LV_GetNext("","F") LV_GetNext("0","F") LV_GetNext(0,"F")
516名無しさん@お腹いっぱい。:2014/02/03(月) 17:09:54.47 ID:hp6TH6aw0
AHKで作成したGuiであらゆるイベント毎に指定サブルーチンを実行することはできないでしょうか?
フォーカスコントロールの移動、どこどこがクリック、ダブルクリックされた等を
A_GuiEvent A_GuiControlEvent A_EventInfo等を使って監視したいのですが

色々構想はあるのですが、とりあえず今やりたいことは
ある1つのEditにフォーカスがある時のみ入力内容を反映したサジェスト候補リストを表示、
フォーカスが外れたら非表示という動作がしたいです。
EditコントロールのGオプションで指定したラベルは文字入力時にしか実行されないようです。

今のところsettimerとGuiControlGet, , Focusで代用しているのですが
ちょっと煩雑だし、汎用性がないので…
知ってる方がいればよろしくお願いします
517名無しさん@お腹いっぱい。:2014/02/03(月) 18:19:31.92 ID:qFane3Cx0
>>516
SetTimer + GuiControlGet, , Focus でフーカス監視するのが正解。
慣れれば簡単で好きなように出来るので汎用性は非常に高いと思うが・・・。
518名無しさん@お腹いっぱい。:2014/02/03(月) 19:22:09.82 ID:VMweUeRP0
イベントドリブンでやりたいならOnMessage()使うとかかな
519名無しさん@お腹いっぱい。:2014/02/03(月) 19:25:32.58 ID:hp6TH6aw0
特定コントロールフォーカス時のマウスボタン、キー押下等の監視もする場合があるので
色々なコントロールやGui自体でListViiewのイベントの項目(http://ahkwiki.net/Gui,Add,ListView#.E3.82.A4.E3.83.99.E3.83.B3.E3.83.88)
みたいな感じの動作ができたら楽だなと思ったもので
とりあえずSetTimerのゴリ押しで行きます
ありがとうございました
520名無しさん@お腹いっぱい。:2014/02/03(月) 19:29:25.67 ID:hp6TH6aw0
>>518
OnMessage()かー
前に一度やって自分のあまりの知識の無さに挫折したんですよね
自分がやるとメッセージリストの検索でまた時間取られそうなw
まぁぼちぼち試してみます
ありがとうございます
521名無しさん@お腹いっぱい。:2014/02/04(火) 05:40:02.95 ID:of3pvWzN0
質問者ではないが使ったことなかったので練習がてらに書いてみた。

Gui,Add,Edit,ReadOnly vEdit
Gui,Add,Text,HwndTEXT1,########テスト1########
Gui,Add,Text,HwndTEXT2,########テスト2########
Gui,Show
OnMessage(0x0200,"MouseMove") ;WM_MOUSEMOVE
Return

MouseMove() {
global TEXT1,TEXT2
MouseGetPos,,,,OutputVarControl,2
If OutputVarControl in %TEXT1%,%TEXT2%
{
ControlGetText,OutputVar,,ahk_id %OutputVarControl%
GuiControl,,Edit,%OutputVar%
}Else
GuiControl,,Edit
Sleep 100
}
522名無しさん@お腹いっぱい。:2014/02/06(木) 02:19:31.64 ID:wV6viU6T0
active windowsになっているプログラムの実行パスを取得するにはどうすればよいですか?
WinGetかなとは思ったのですが、WinGetだけではできませんでした
523名無しさん@お腹いっぱい。:2014/02/06(木) 03:11:52.51 ID:Bg9Ms6BJ0
>>522
WinGetだけで出来ます、説明をよく読みましょう。
ttp://ahkwiki.net/WinGet
524名無しさん@お腹いっぱい。:2014/02/06(木) 03:23:15.80 ID:Bg9Ms6BJ0
変だと思って調べてみた所、更新の止まっている
流行らせるページ、AutoHotkeyJpには載っていないようですね。
525名無しさん@お腹いっぱい。:2014/02/08(土) 00:19:17.81 ID:AqHfAhBgP
.ahkファイルを複数のPCで共有&同期したいんだけど、.ahkファイルをDropboxに突っ込んで、そこから読み込むようにしたいんだけど、それって可能?

もしくは別の方法で共有&同期する方法ある?
526名無しさん@お腹いっぱい。:2014/02/08(土) 00:31:44.43 ID:mMEmM45C0
可能
527名無しさん@お腹いっぱい。:2014/02/08(土) 00:47:15.44 ID:UUNC6mIK0
・フォルダ共有
・NASに置く
528名無しさん@お腹いっぱい。:2014/02/08(土) 00:49:51.99 ID:NQ9B7dwp0
・Dropbox

あ、重要なデータはおいちゃだーめよ
529名無しさん@お腹いっぱい。:2014/02/08(土) 01:02:33.11 ID:P7x1FtRR0
>>523-524
ありがとうございます。助かりました
530名無しさん@お腹いっぱい。:2014/02/08(土) 11:33:03.68 ID:AqHfAhBgP
>>527
>>528
どうやってahkの読み込み先を変更すればよいの?
531名無しさん@お腹いっぱい。:2014/02/08(土) 14:23:17.79 ID:cQ3kvOdz0
Installer.ahkをもっかい実行しろ
532名無しさん@お腹いっぱい。:2014/02/08(土) 18:50:40.66 ID:0IE70OTc0
無変換キーを押した場合
無変換キー+エンター+スペースという動作にしたかったのですが
(例えば、かな入力時あいうえおと打って無変換キーを押すと"aiueo "にしたい)
と思い見よう見まねで
vk1Dsc07B::Send,{vk1Dsc07B}{enter}{space} *{f9}のほうが良かったかも
としたらキーが無茶苦茶になって操作不能になりセーフモードで直しました
次に
vk1Dsc07B::Send,{vk1Dsc07B}{enter down}{enter up}{space down}{space up}
これも無茶苦茶になりました
mousegesturelも使っているのですがまったく記述の仕方が違うのでしょうか?
どなたか希望のような記述を教えていただけないでしょうか?
533名無しさん@お腹いっぱい。:2014/02/08(土) 18:59:18.55 ID:UUNC6mIK0
文の意味が分からん

常時フックモードで使うぐらいしら思いつかんな
534名無しさん@お腹いっぱい。:2014/02/08(土) 19:12:58.05 ID:AqHfAhBgP
>>532
要するにMac風にしたいわけだね。
autohotkeyではなく、普通にIMEのキーバインド変えた方が楽だよ。IMEのキーバインドの中に、半角英数変換、かな変換共にあるよ。
535名無しさん@お腹いっぱい。:2014/02/08(土) 19:16:12.63 ID:qzQ9Di4b0
F10じゃダメなの?
536名無しさん@お腹いっぱい。:2014/02/08(土) 19:26:33.36 ID:h8PUD/iW0
試行錯誤が楽しい時期と見た
537名無しさん@お腹いっぱい。:2014/02/08(土) 19:39:33.89 ID:0IE70OTc0
{f10}の間違いでした
例えば"aiueo kakikukeko"と打ちたい時
あいうえおの後{f10}押してもその後に" "の部分はエンター押してスペース押さないとじゃないですか
538名無しさん@お腹いっぱい。:2014/02/08(土) 19:53:40.27 ID:0IE70OTc0
根底にあるのは常にIMEオンで使いたいんです
いちいち切り替えや状態確認がめんどいんです
で、英語となるといちいち単語ごとにF10押して確定してスペースの作業がめんどいんです
I LOVE NY にしたい時
いぉヴぇnyの後F10押して確定してILOVENY,その後Iの後とLOVE後の後スペース
または
い打ってF10打って確定押してスペース押して"I ",ぉヴぇ打ってF10押して確定してスペース売って"LOVE "
この一連の作業をF10打ったらもうエンター+スペースまで打たせたいんです
539名無しさん@お腹いっぱい。:2014/02/08(土) 20:10:01.54 ID:1LMkP+lW0
>>538
無変換キーにIMEオフを、変換キーにIMEオンを割り当てる。(IME.ahkを使うと簡単)
日本語打ちたいときは、常に変換キーを押してから入力する。
アルファベットのときは、常に無変換キーを押してから入力する。
540名無しさん@お腹いっぱい。:2014/02/08(土) 20:12:55.36 ID:h8PUD/iW0
たとえばI Love My Angelって打ちたかったらShift押してi打てばそのままずっと英字で打てるけど。半角空白も入力できる
全部小文字/大文字にしたいってならその時はF10を押せばいい
541名無しさん@お腹いっぱい。:2014/02/08(土) 20:23:20.27 ID:0IE70OTc0
まあそれはわかってるんですがそういうの細かいところを自分の好きな仕様にするためのもんでしょこれ・・・
542名無しさん@お腹いっぱい。:2014/02/08(土) 20:23:51.90 ID:0Of2OTj70
sc07B::
Hotkey, sc07B, Off
Send, {sc07B}{enter}{Space}
Hotkey, sc07B, On
Return

どうだろう
543名無しさん@お腹いっぱい。:2014/02/08(土) 20:28:45.16 ID:0IE70OTc0
完璧です!
ありがとうございました
544名無しさん@お腹いっぱい。:2014/02/08(土) 20:31:48.37 ID:GOHyt04Q0
確定前の文字列が 「いぉヴぇny」 だと何入力してるのか確認できないのでミスタイプが多くなる。
>>539-540 の様な動作を覚えて変な癖直すべきだと思うが・・・。
545名無しさん@お腹いっぱい。:2014/02/08(土) 20:52:25.30 ID:0IE70OTc0
Google IMEだと英語でも変換対象になるから無理
546名無しさん@お腹いっぱい。:2014/02/08(土) 20:53:41.18 ID:0Of2OTj70
sc07B::Send, {%A_ThisHotkey%}{enter}{Space}
これだけでよかったぽ
547名無しさん@お腹いっぱい。:2014/02/08(土) 20:55:27.38 ID:0Of2OTj70
あれ、やっぱだめかな?w
548名無しさん@お腹いっぱい。:2014/02/08(土) 21:02:21.75 ID:h8PUD/iW0
先達として忠告しておく。まぁ聞かんでもいいが

キーバインドはなるべく長いものにまかれたほうが良い
ショートカットキー足したりマクロ的に使ったりするのは良いけど根本を変えると何年か後に大変面倒な思いをする
頭硬くなって戻せなくなっても後の祭り
549名無しさん@お腹いっぱい。:2014/02/08(土) 21:03:45.25 ID:XS2T1aFQ0
好きにさせろって言ってるんだからほっとけばいいw
550名無しさん@お腹いっぱい。:2014/02/08(土) 21:30:01.41 ID:x3T5hSk00
>>548
その意見に関しては心から同意する。
少しくらい入力が遅くなっても、業界標準キーバインドで安定して高速でPCを扱えるほうがいい。

文筆家みたいな特殊な人は別だろうけど。
551名無しさん@お腹いっぱい。:2014/02/08(土) 22:51:30.56 ID:NQ9B7dwp0
ていうかそれこそポータブルahkに対して引数指定でahkファイルを指定してやればええんですよ
batでいうとこーんなかんじで

start AutoHotkey_LPortable.exe MouseGestureL.ahk

まぁbatじゃなくてもなんでもいいけど
552名無しさん@お腹いっぱい。:2014/02/09(日) 18:00:54.47 ID:jF2iORRVP
>>525ですが自己解決しました。
今までautohotkey.exeをスタートアップに入れてましたが、任意の場所(例えばDropbox)に保存したautohotkey.ahkをスタートアップに登録すれば、WAN経由同期いけました。

すごい単純なことですみません。
553名無しさん@お腹いっぱい。:2014/02/11(火) 16:21:25.11 ID:6h8k1ts80
テキストエディタでVimのヴィジュアルモードを再現するにはどうすればいいんでしょ
次にカーソル以外のキー押すまでShift押しっぱなしにするって感じでしょうか
554名無しさん@お腹いっぱい。:2014/02/11(火) 17:44:32.64 ID:Y3d70uuu0
まぁ、そんな感じじゃないのかね

使ってるエディタ晒したほうが幸せになれたかもしれないな
エディタの機能であるかもしれないし
555名無しさん@お腹いっぱい。:2014/02/12(水) 11:08:44.47 ID:wSTfR33s0
Guiでゲーム画面の前面にOn-Screen Display風の表示を作りたいんだけど
OSDの付近をクリックするとそっちがアクティブになってしまいゲームの操作が止まるので困っています
Guiで出したウィンドウを前面に保ちつつマウスに反応させないようにするにはどうすればいいですか

OSDのコードは下のサンプル#4の表示内容を変えたモノです
https://sites.google.com/site/autohotkeyjp/reference/commands/Gui#TOC-Example-4:-On-screen-display-OSD-

一応WinSet, Disable試してみたけどコレジャナイぽい?
556名無しさん@お腹いっぱい。:2014/02/12(水) 11:55:21.19 ID:Ar1FApj60
>>555
WinSet, TransColor, %CustomColor% 150
の下あたりにでも
WinSet, ExStyle, +0x00080020
を追加はどう?
557名無しさん@お腹いっぱい。:2014/02/12(水) 13:08:36.61 ID:wSTfR33s0
>>556
できました!ありがとうございます
558名無しさん@お腹いっぱい。:2014/02/12(水) 16:12:26.07 ID:NRRZ672s0
トレイアイコンの右クリックメニューが出てるアプリの、ウインドウタイトルとウインドウクラスはどうやって調べるんでしょうか?

Loop
{
MouseGetPos, OutputVarX, OutputVarY, OutputVarWin, OutputVarControl
WinGetTitle, win_Title, ahk_id %OutputVarWin%
WinGetClass, win_class, ahk_id %OutputVarWin%
ToolTip, % win_Title "`n" win_class "`n" OutputVarWin "`n" OutputVarControl, 300, 300
Sleep, 500
}

これで、メニューの上にマウスを持っていっても取得できませんでした。
WinGetTitle, win_Title, A とかはもちろん(?)だめでした。
559名無しさん@お腹いっぱい。:2014/02/12(水) 18:05:09.08 ID:YaFqeY8f0
>>558
タスクトレイアイコン操作 by流行らせるページ管理人
ttp://ahk.xrea.jp/myscripts/index.html
560名無しさん@お腹いっぱい。:2014/02/12(水) 18:37:41.93 ID:kL37wBOJ0
ツールチップ(ホバー?)のCLASSを取得する方法ってあります?

AU3_Spy.exeで見ようにも、フォーカスを合わせられなくって
561名無しさん@お腹いっぱい。:2014/02/12(水) 18:44:37.65 ID:YaFqeY8f0
>>560
ToolTipで表示させたら?

>>457
> >>444
> ツールヒントウィンドウのテキストの内容を取得
> ttp://www.autohotkey.com/board/topic/53672-get-the-text-content-of-a-tool-tip-window/
562名無しさん@お腹いっぱい。:2014/02/13(木) 12:16:09.88 ID:1i3mbw+A0
>>559
返事遅くなりすいません。
レスありがとうございます。

教えていただいたスクリプト試してみました。
これ、トレイアイコンの情報を取得できるのは出来るのですが、
アイコンの番号(A_Index)を指定する必要があり、
>>558で質問したような特定(不定)アイコンの情報が取得できません。

どうにかしてマウス位置(マウス右クリック位置)のアイコンの番号取得できればいいんですが…
良い方法がないかもうちょっと捜してみます。

cnt:=Tray_GetCount()
DetectHiddenWindows,On
Loop,%cnt%{
Tray_GetInfo(A_Index,hwnd,uid,msg,hicon)
WinGetTitle, win_Title, ahk_id %hwnd%
WinGetClass, win_class, ahk_id %hwnd%
ToolTip,% A_Index " of " cnt "`n" msg "`n" uid "`n" hwnd "`n" hicon "`n" win_Title "`n" win_class, 500, 300
Sleep, 1000
}
563名無しさん@お腹いっぱい。:2014/02/13(木) 19:06:43.83 ID:86uKXPm70
右クリックしてコンテキストメニューを表示させているなら
ifwinexist, ahk_class #32768
で取得してそっからアプリのProcessを取得して
processから本体側のタイトルとクラスを取得していける。
564名無しさん@お腹いっぱい。:2014/02/14(金) 10:17:52.13 ID:D/PNCwNX0
今日インストールしてみて、わからないことがあったので質問させてください。


Process,Exist,notepad.exe ;メモ帳が起動しているかどうかを調べる
If ErrorLevel<>0 ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
else ;起動していなかった場合
Run,notepad.exe ;メモ帳を起動する

wikiにあるこちらの例はスクリプトに貼り付けて、スクリプトをリロードするだけでは使えないのでしょうか?
565名無しさん@お腹いっぱい。:2014/02/14(金) 11:09:43.20 ID:EDED/A400
使えるよ
566名無しさん@お腹いっぱい。:2014/02/14(金) 11:50:23.74 ID:aOjHick40
>>564
おそらく貼り付ける位置に問題がある

スクリプトをロードした時に実行されるのは、スクリプトの最初のほうの
Auto-execute セクションと呼ばれる部分のみ
具体的には、最初に Return, Exit あるいはホットキーラベルが現れるまで
ttp://ahkwiki.net/Scripts
567名無しさん@お腹いっぱい。:2014/02/14(金) 12:20:26.58 ID:D/PNCwNX0
>>566
ありがとうございます。使えました。
ということは、いくつものスクリプトを同じファイルで使うということは出来ないんですね。
常駐させる奴はタスクバーに表示させない、と言ったやり方で対処したいと思います。ありがとうございました
568名無しさん@お腹いっぱい。:2014/02/14(金) 12:26:31.14 ID:D/PNCwNX0
すいません、ということは、起動時に複数のスクリプトを実行させたい場合は全てのスクリプトををスタートアップに入れておくということでしょうか?
569名無しさん@お腹いっぱい。:2014/02/14(金) 12:45:12.53 ID:amEmyV0AP
>>567
いやいや、普通に複数スクリプト使えるって。
先ずは落ち着いてWikiを読め。
570名無しさん@お腹いっぱい。:2014/02/14(金) 12:52:12.39 ID:amEmyV0AP
単独でALTを押した時にメニューにフォーカスが行くのを止めたい(かつ、Alt%2b何かのキーによるショートカットは止めない)と思ってるんだけど、なかなかうまくいかない。

~LAlt::Return

じゃダメなのかしら?
ちなみに

~!::Return

だと通常の文字入力のときに感嘆符が打てなくなる。
571名無しさん@お腹いっぱい。:2014/02/14(金) 12:53:19.37 ID:amEmyV0AP
バグった。
Alt%2b何かのキー

Alt + 何かのキー
572名無しさん@お腹いっぱい。:2014/02/14(金) 13:14:36.20 ID:7n69BZy10
~Alt up::Return ?
573名無しさん@お腹いっぱい。:2014/02/14(金) 13:30:41.98 ID:D/PNCwNX0
>>569
一応概要からイントロダクション、使用例、使用方法まで読んだんですけどどこに載ってますか?
574名無しさん@お腹いっぱい。:2014/02/14(金) 13:35:39.25 ID:D/PNCwNX0
>>569
すいません、わかりました。どこに書いてある、というより初歩的すぎて書いてないって感じですね、ありがとうございました、
575名無しさん@お腹いっぱい。:2014/02/14(金) 13:42:37.69 ID:D/PNCwNX0
何度もすいませんわかってなかったです。

;AutoReload
#IfWinActive, ahk_class SciTEWindow

~^s::
ScriptName := "AutoHotkey.ahk"
IfWinActive, %ScriptName%
{
Reload
}
Return

;無変換キーを使って集結
vk1Dsc07B & I::Send,{Blind}{Up}
vk1Dsc07B & J::Send,{Blind}{Left}
vk1Dsc07B & K::Send,{Blind}{Down}
vk1Dsc07B & L::Send,{Blind}{Right}
vk1Dsc07B & Space::Send,{Blind}{Enter}
vk1Dsc07B & vk1Csc079::Send,{Blind}{BS}
vk1Dsc07B & vkF2sc070::Send,{Blind}{Del}

これで、下の無変換キーを使って集結のほうが動作しないんですが、どこが問題なんでしょうか?別々だと動作するんですが
576名無しさん@お腹いっぱい。:2014/02/14(金) 14:08:11.19 ID:SwuloIgJ0
だから>>1の解説サイトよく読んでから質問しろって
読んだけど書いてないとかどこに書いてる?とか言うなよ
577名無しさん@お腹いっぱい。:2014/02/14(金) 16:51:58.83 ID:EDED/A400
SciTEWindow でだけ効かせたいならそれであってるハズ
無変換以降は全域で効かせたいなら Returnの後に

#IfWinActive

を入れる
578名無しさん@お腹いっぱい。:2014/02/14(金) 16:56:49.09 ID:VK8WbLx20
>>575
書いてあるんだからよく読めって言われても仕方が無いな・・・。

#IfWinActive - 本ディレクティブが記述された部分より後で定義されるホットキーは、記述された条件に一致しているときのみ有効になる。
http://ahkwiki.net/-IfWinActive
579558=562:2014/02/14(金) 18:01:13.52 ID:7rme8u8l0
>>563
レスありがとうございます。
また返事遅くなりすいません。

下のようにやってみたんですが、win_Titleは常に空でwin_classは常に#32768になってしまいます。
何が悪いんでしょうか?

DetectHiddenWindows,On
Loop {
ifwinexist, ahk_class #32768
{
hwnd := WinExist(ahk_class #32768)

;プロセスID(1)
WinGet, process_id, Pid, ahk_id %hwnd%
WinGetTitle, win_Title, ahk_pid %process_id%
WinGetClass, win_class, ahk_pid %process_id%
ToolTip, % "1) " process_id "`n" win_Title "`n" win_class, 500, 300
Sleep, 500

;ProcessName
WinGet, name, ProcessName, ahk_id %hwnd%
WinGetTitle, win_Title, ahk_exe %name%
WinGetClass, win_class, ahk_exe %name%
ToolTip, % "2) " name "`n" win_Title "`n" win_class, 500, 300
Sleep, 500

次レスへ続きます。
580名無しさん@お腹いっぱい。:2014/02/14(金) 18:02:02.50 ID:7rme8u8l0
前レスからの続きです。

;プロセスID(2) ErrorLevel にプロセスIDが入る
Process, Exist, %name%
WinGetTitle, win_Title, ahk_pid %ErrorLevel%
WinGetClass, win_class, ahk_pid %ErrorLevel%
ToolTip, % "3) " ErrorLevel "`n" win_Title "`n" win_class, 500, 300
Sleep, 500

;ProcessPath
WinGet, path, ProcessPath, ahk_id %hwnd%
WinGetTitle, win_Title, ahk_exe %path%
WinGetClass, win_class, ahk_exe %path%
ToolTip, % "4) " path "`n" win_Title "`n" win_class, 500, 300
Sleep, 500
}
}
581名無しさん@お腹いっぱい。:2014/02/14(金) 18:50:35.88 ID:ibidV+Wz0
>>579-580

f12:: ;タスクトレイのアイコン上でF12を押す
send, {rbutton}
sleep, 200
gosub, test1
return

test1:
ifwinexist, ahk_class #32768
{
hwnd := WinExist(ahk_class #32768)
WinGet, process_name, ProcessName, ahk_id %hwnd%
send, {alt} ;alt または esc 等でコンテキストメニューを消す。
sleep, 200
;消さずに以下を実行するとコンテキストメニューのタイトル(空)とクラス(#32768)を取得してしまう。
DetectHiddenWindows,On
process, exist, %process_name%
WinGetTitle, win_Title, ahk_pid %errorlevel%
WinGetClass, win_class, ahk_pid %errorlevel%
msgbox, %process_name%`n%win_Title%`n%win_class%
}
return
582名無しさん@お腹いっぱい。:2014/02/15(土) 00:48:50.69 ID:f4DnLuvh0
$LButton::
{
if (hoge)
{
;特殊処理
}
else
{
;AHKでなにもせずに通常の処理に戻す
}
}

のように行いたいと考えています
” ;AHKでなにもせずに通常の処理に戻す”
の部分はどう記述すればいいのでしょうか?
583名無しさん@お腹いっぱい。:2014/02/15(土) 02:29:12.35 ID:f4DnLuvh0
初歩的な質問ですみません
A::
if (GetKeyState("A", P) = 1)
ってのは不可能なのでしょうか
A::
if (GetKeyState("B", P) = 1)
なら問題なく動作します

Aを押している間動作ってことをやりたいのですが上手く動作しません
584名無しさん@お腹いっぱい。:2014/02/15(土) 05:05:39.60 ID:sfhBVkfx0
>>582-583
ID:D/PNCwNX0
リファレンス/コマンド全部読み直し
適当に読み飛ばしすると余計時間かかるぞ。
585名無しさん@お腹いっぱい。:2014/02/15(土) 07:52:03.27 ID:cZMauSUs0
鯖復活
586名無しさん@お腹いっぱい。:2014/02/15(土) 09:13:00.90 ID:kF8klSJH0
ATOK2014にしたらime.ahkの制御が何かうまくいかないときが出てきました
imeが本当は無効になっているのをime.ahkが認識してくれないことがあります
ATOKの新規機能にそれらしき原因が見当たらないのでどうもできない状況です
どうすればいいでしょうか
587名無しさん@お腹いっぱい。:2014/02/15(土) 10:45:10.14 ID:cZMauSUs0
IME.ahkのバージョンが古いんじゃなきゃTSF関連かな?
IME.ahkはIMM32のAPIしか見れないから新しいIMEでは今後難しくなってくる傾向にはある
MS IMEとかのTSF系のIMEでもON/OFFくらいの基本部分はIMM32互換なので使えてたが
ATOK2014は互換性なくなったんだろうか

IME.ahk 最新版
http://www6.atwiki.jp/eamat/pages/17.html
588名無しさん@お腹いっぱい。:2014/02/15(土) 11:41:58.42 ID:hK3msH1X0
変換キーでIMEの ON/OFF を切り替えるのに IME.ahk を使ってるけど、
ATOK2014で正常に機能するよ
OS は Windows 7 (32bit)、AutoHotkey は最新版の v1.1.14.2、
IME.ahk も最新版(2011.11.10)
589579-580:2014/02/15(土) 11:58:18.82 ID:bb5kaDsJ0
>>581
レスありがとうございます。
またまた返事遅くなりすいません。

情報取得できました。
・・・のですが、取得した情報が何か変だなと思って「AU3_Spy」で取得した情報と比べてみました。

1)Process Explorer
 a)AU3_Spy
 タイトル:Process Explorer - Sysinternals: www.sysinternals.com [****]
 クラス:ahk_class PROCEXPL

 b)ahk
 タイトル:空
 クラス:tooltips_class32

2)MouseGestureL.ahk
 a)AU3_Spy
 タイトル:(フォルダパス)\MouseGestureL.ahk - AutoHotkey v1.1.14.02
 クラス:AutoHotkey

 b)ahk
 タイトル:MouseGestureL.ahk
 クラス:AutoHotkeyGUI

「AU3_Spy」ってどういう仕組みで取得してるんですかね。
それにしても、トレイアイコン操作するのって大変なんですね、自分が甘かった。
590588:2014/02/15(土) 12:04:24.75 ID:hK3msH1X0
588
書き間違えた
×IME.ahk も最新版(2011.11.10)
○IME.ahk も最新版(2012.11.10)
591名無しさん@お腹いっぱい。:2014/02/15(土) 17:22:46.47 ID:t/wn55/mP
>>572

あー押し上げだけ無効化すればいのか。
あっさり出来たね。。。アリガトウ

スレ汚しスンマセン。。。
592名無しさん@お腹いっぱい。:2014/02/15(土) 21:39:18.59 ID:znAAlT/C0
ホイールの加速をAutohotkeyで設定するとMousegesrelの右クリ+ホイールなどが
効かないのですが解決方法はありあすか?
593名無しさん@お腹いっぱい。:2014/02/15(土) 21:46:21.64 ID:kNNpR11H0
>>592
WheelAccelを加工(MGLのプラグイン化)して
ホイール回転を全面的に乗っ取るのではなく
MGLのアクションとして加速したホイール回転を指定できるようにする
594名無しさん@お腹いっぱい。:2014/02/15(土) 21:49:15.29 ID:8CeIzisp0
>>592
競合しないように書けばいい。
595名無しさん@お腹いっぱい。:2014/02/15(土) 21:50:46.87 ID:znAAlT/C0
Pluginのフォルダに.ahkをいれてMousegesturelを再起動させると必ず固まるのですが
何かやり方がおかしいのでしょうか?
そのままではダメで何か書き足したりするのですか?
596名無しさん@お腹いっぱい。:2014/02/15(土) 21:51:52.57 ID:8CeIzisp0
>>595
MouseGestureL.ahkの話題は専用スレでよろしく。

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
http://anago.2ch.net/test/read.cgi/software/1384313234/
597名無しさん@お腹いっぱい。:2014/02/16(日) 02:58:52.48 ID:g46+e72J0
>>595
593で加工するように言われているのだから、そのままではダメだろw きちんと読まないと追加のアドバイスもらえないよ
固まるというのはよく分からんが、おそらくそのまま入れたらMGLが消えるような形になるはず
アイコンを右クリしても日本語メニューが出てこなかったらそういう状態
Gotoを使う等で対処するんだが、他のMGL用に編集されたスクリプトを見た方が早いだろう。それでも分からなければ専スレへ
598名無しさん@お腹いっぱい。:2014/02/17(月) 01:16:25.65 ID:axBtvd5v0
1.1.14.00 - 2014/01/15

変更: Changed behaviour of ~ prefix with custom combos to be more intuitive.
はどういうことでしょうか?
599名無しさん@お腹いっぱい。:2014/02/17(月) 01:36:35.83 ID:geKyk3Mm0
>>598
http://ahkscript.org/docs/Hotkeys.htm#Tilde
↓でRButtonを放したら1行目が発動だったのが、押した瞬間発動に変わったってことじゃない?
~RButton::MsgBox You clicked the right mouse button.
~RButton & C::MsgBox You pressed C while holding down the right mouse button.
600名無しさん@お腹いっぱい。:2014/02/17(月) 01:50:47.87 ID:SIQsorMfP
macみたいに
変換キー=IMEオン
無変換キー=IMEオフ
変換キー2連打=英数をひらがなに再変換
無変換キー2連打=ひらがなを英数に変換

ってやりたいんだけど、どうもうまくいかんなー。IMEのオンオフはできたけど、連打した時の挙動がどうしてもうまくいかない。
601名無しさん@お腹いっぱい。:2014/02/17(月) 02:00:43.91 ID:rDZlX/Ea0
>>600
IME.ahk

1つのキーに3種類以上の動作割り当て
ttp://ahkwiki.net/SampleCodes
602名無しさん@お腹いっぱい。:2014/02/17(月) 03:54:12.26 ID:5hCzFiwr0
>>601
「キーボードでマウス操作」のコードに見覚えがあるなぁと思ったら
part15スレで俺が書いたやつだ、ホットキーとSleepの位置が違うけど

まさか普段お世話になっているサイトに間接的に貢献してるとは思わなかったw
603名無しさん@お腹いっぱい。:2014/02/17(月) 17:22:23.79 ID:REThUpEP0
IME.ahkのIME_GetConvertingなんだけど、LINEってソフトの入力窓だと文字入力中も戻り値が0になってしまう。
変換候補窓が出てるときはちゃんと2が返ってくる。

状態と戻り値がこんな感じ
入力窓がアクティブで文字入力してない(|が点滅):0(仕様どおり)
文字入力中(文字の下に下線)の時:0(仕様では1のはず)
変換候補窓が出てる:2(仕様どおり)

#IfWinActive ahk_class wxWindow ;LINE
AppsKey::
res := IME_GetConverting("A","wxWindow","imejpstcand81")
Msgbox %res%
return

入力中かどうかが知りたかったんだけど、LINEでは無理なんでしょうか?(インライン化されてるってのがこれ?)
それとも関数に渡す引数に誤りがあるのでしょうか
604名無しさん@お腹いっぱい。:2014/02/17(月) 22:53:20.43 ID:axBtvd5v0
【#モリトーク】第36話:Windows 8にまつわるIMEの裏事情 - 窓の杜
http://www.forest.impress.co.jp/docs/serial/moritalk/20121204_577108.html
TSFの問題?IME.ahkはTSFに対応していなかった気がする
605名無しさん@お腹いっぱい。:2014/02/17(月) 22:53:51.95 ID:axBtvd5v0
>>599
なるほどそういうことですか
ありがとうございます
606名無しさん@お腹いっぱい。:2014/02/20(木) 06:15:11.48 ID:aIC9iezu0
ほす
607名無しさん@お腹いっぱい。:2014/02/20(木) 21:38:10.96 ID:jz0NW5d+0
>>ID:0IE70OTc0
遅レスも遅レスなんだけど、アンタ俺と同じでタッチタイプが苦手らしいな。(違ってたらゴメン)
IMEがオフになってるの気付かずに日本語打ったつもりが入力されてるのがアルファベットで(T_T)
って経験何度もしてるんだろう?分かるよ俺はその気持ちが。

だからと言って、あんな変態仕様にしちゃダメだよ。
悪いことは言わないから、>>539のようなIMEオンオフ切替を徹底するよう心がけ、
もし、IMEがオフのまま日本語打ったときには以下で言うスクリプトを活用するといいよ。

AutoHotkey スレッド part16
>>164-165にある、
>IMEの状態を間違えて打った時に、入力文字の削除、IMEの切り替え、再入力をキー一発で行う
というスクリプトなんだけど、おそらく修正しないとまともに使えないと思う。
(今、俺もこのスクリプトをMGLのプラグインにして使ってるけど、まともに動かす迄修正に時間掛かったよ。)
608名無しさん@お腹いっぱい。:2014/02/20(木) 22:16:57.13 ID:D+yxo4pp0
howime := IME_CHECK("A")
if (%howime% = 0)
{
Send,+{home}
Backup := ClipboardAll
Clipboard =
Send,^x
IME_ON("A")
ClipWait,1
Send,%Clipboard%
Clipboard := Backup
return
}
else
{
howimemode := IME_GetConvMode("A")
if (%howimemode% = 25)
{
return
}
else
{
IME_SetConvMode("A",25)
return
}
}
return

これのこと?shift+ctrl+leftだと-を単語として認識しないからいっその事+{home}にしちゃえばいいんだよ。
609名無しさん@お腹いっぱい。:2014/02/20(木) 23:34:37.54 ID:jz0NW5d+0
>>607です。
>>608
ちょっと紛らわしい書き方だったので、修正。
>>607で言ってる、
>>>164-165にある、
は、このスレのではなく、【AutoHotkey スレッド part16】のね。
あと、IMEオンオフの状態を返す関数は「IME.ahk」の方を推奨。
610名無しさん@お腹いっぱい。:2014/02/20(木) 23:48:53.29 ID:jz0NW5d+0
あーもうっ、言い忘れた。
「Input」コマンドって(半角)スペースやエンターを記憶しないんだよな。
これ分からなくて結構長い時間ハマったよ。
みんなもあのスクリプト使うとき注意してね。
611名無しさん@お腹いっぱい。:2014/02/21(金) 10:21:51.55 ID:FcqIJXA5P
>>607
時々ソフト側で勝手にIMEをオンにしたりするのが気に食わないのです。そのときのためのキー連打変換が欲しかったのです。Macも使ってるから操作系を揃えたかったってのもあります。

色々試行錯誤して、一応これで動くようになりました。プログラムはド素人で、糞みたいなスクリプトなので、ここに書き込むのはとても気が引けるのだけど…

;変換キーでIME ON
;変換キー連打でIMEをONにして入力し直す
;無変換キーで半角に変換してIMEをオフにする

vk1Csc079 Up:: ;変換キー
;キー連打検出0.3秒
If(A_PriorHotkey = A_ThisHotkey) And (A_TimeSincePriorHotkey < 300){
Send,^%2b{Left};クリップボードに格納してIMEon後に打ち直す
Backup := ClipboardAll
Clipboard =
Send,^x
IME_SET(1)
ClipWait,1
Send,%Clipboard%
Clipboard := Backup
Return
}Else{
;連打してないとき
IME_SET(1)
}
Return
612名無しさん@お腹いっぱい。:2014/02/21(金) 10:23:37.42 ID:FcqIJXA5P
つづき

vk1Dsc07B up:: ;無変換キー
getIMEMode := IME_Get() ;IMEの状態を取得
if (%getIMEMode% = 0) ;IMEがオフのとき
{
IME_SET(0)
;IMEをOFFにする(念のため
}
Else ;IMEがONの時
{
Send,^%2by
;Ctrl%2bShift%2byを送信(F10が何故か使えないので、IME側のキーバインドをいじった)
sleep,10 ;0.01秒待つ
IME_SET(0) ;IMEをOFFにする
}
Return
613名無しさん@お腹いっぱい。:2014/02/21(金) 10:25:17.95 ID:FcqIJXA5P
ぐおお、バグった。
%2b は + です。。。
614名無しさん@お腹いっぱい。:2014/02/21(金) 12:51:18.68 ID:wjinpp3O0
>>611
>時々ソフト側で勝手にIMEをオンにしたりするのが気に食わないのです。

ん〜・・・・・
>>539を徹底的に体に覚え込ませれば、ソフトがIMEをオンにしようが、オフにしようが全く関係ないんだがなぁ・・・・・
ま、あんまり強要するのは良くないから、これ以降この話題に突っ込むの止めるわ。
615名無しさん@お腹いっぱい。:2014/02/21(金) 13:25:44.64 ID:jyRtSfaV0
うむ、ツッコミ承知でカスタム仕様にしてるんだから我が道突き進ませてやれ
遅レスで説教系ツッコミはヤボってもんだ
616名無しさん@お腹いっぱい。:2014/02/21(金) 13:27:28.14 ID:A+hQuf1z0
>>614
ahkでごちゃごちゃ弄ってる間は何を言っても通じないわ
実務であちこちのPC(とかキーボード)を弄るようになったら嫌でも矯正される。
ソフトを自由にインストールや実行のできる環境なんて自分の私有PCくらいだぜw

そういうこというと、このスレどころかAHK自体の存在意義が危ぶまれるか。
617名無しさん@お腹いっぱい。:2014/02/21(金) 14:12:17.72 ID:lXG58+st0
友達の家でもネカフェでもポータブル化して持ち込めばええんや
AHKは自分のやりたいようにすればええ

もうスペースキー修飾がないとかキーボードでカーソル移動ができない環境が考えられない
618名無しさん@お腹いっぱい。:2014/02/21(金) 14:50:17.87 ID:/0FpRnMh0
>>616
DELLとかHPに付属のクソキーボードをなんとも思わず使える人が上司だと
まったく取り合えってもらえないしね・・・
みんなそのまま使ってるんだからお前も合わせろくらいの勢いっていう

AHKのないPCで文字なんか打てるか状態だわ
そして無駄に長いスペースキーに憤りを感じる!


>>603分かる人いたらお願いしますー
619名無しさん@お腹いっぱい。:2014/02/21(金) 14:57:18.90 ID:OKVxz4wN0
上司「君が望む環境で仕事した時の能率を具体的に数値化して提出しなさい」
620名無しさん@お腹いっぱい。:2014/02/21(金) 18:28:26.96 ID:dRaN94p/0
>>618
>>603-604
既に回答もらってんのになに言ってんだ?
621名無しさん@お腹いっぱい。:2014/02/21(金) 19:27:35.34 ID:jyRtSfaV0
催促する前にレスもらえない原因を考えよう

LINE以外の環境環境がまるで書いてない
質問するなら最低限
OS / AHK / IME.ahk / 使用してるIME / LINE の各バージョンは必要


>それとも関数に渡す引数に誤りがあるのでしょうか
他のアプリでは拾えるのか試してみたの?
アプリのせいなのか記述間違いかの切り分けしたかどうかはわりと重要
特定アプリでは使用者以外はスルーだが
メモ帳とかの皆が追試しやすいものならアドバイスも受けやすい

>res := IME_GetConverting("A","wxWindow","imejpstcand81")

使ってるIMEがなんだか書いてないからよーわからんが、パラメータ2,3あたりが怪しい
まずパラメータ全省略でやってみて、もし動かないなら
_ImeTestClassCheck()でそれぞれ調べて値を入れる
622名無しさん@お腹いっぱい。:2014/02/22(土) 02:37:15.96 ID:RX4AMueR0
>>620
>>604は回答だったんですか。>>603宛と理解できませんでした。サーセン

>>621
ぐうの音も出ないレスありがとうございます。

OS:WindowsXP 32bit
AHK:1.0.48.5
IME.ahk:2012.11.10
LINE:3.2.0.76

>res := IME_GetConverting("A","wxWindow","imejpstcand81")
引数2,3は_ImeTestClassCheck()で調べた値です。
メモ帳では仕様どおりの値が返ってきます(各数値)

パラメータ省略でも変化なしでした。
623名無しさん@お腹いっぱい。:2014/02/22(土) 03:33:42.66 ID:p2C4PusD0
If文を使わずにコード書いてると関数が多くなりませんか?
624名無しさん@お腹いっぱい。:2014/02/22(土) 13:16:29.81 ID:DgYxgOca0
Guiのひとつのエディット内で、入力された文字の一部分だけ色を変えることはできるでしょうか?
625名無しさん@お腹いっぱい。:2014/02/22(土) 14:03:00.76 ID:2GncQ2eS0
Numlockの状態とかタスクトレイに出したい

だしたい!!
626名無しさん@お腹いっぱい。:2014/02/22(土) 14:11:49.53 ID:hShcqZxb0
>>623
書き方次第

>>624
無理

>>625
どうぞ、どうぞ
627名無しさん@お腹いっぱい。:2014/02/22(土) 14:46:58.58 ID:dz7B/ukl0
>>622
メモ帳で正常値が取れるならアプリの問題なのでIME.ahk側でどうにかすることはできない
あとはLINE側の設定見直してトゥルーインライン解除できないか確認するくらい
>231参照
628名無しさん@お腹いっぱい。:2014/02/22(土) 15:30:59.27 ID:RX4AMueR0
>>627
なるほど・・・ありがとうございます。
>>231のリンク先なくなってたけど、まさにそのトゥルーインライン入力です。
文字が重ならなくて見やすい反面こんな悪影響が・・・もどかしいですね
629名無しさん@お腹いっぱい。:2014/02/23(日) 14:33:16.97 ID:YJOn+f8k0
このスレの>>403です
色んな人からアドバイス貰ったお陰で何とか形になりますた
以前のようにメイン関数内をいじる必要が無くなってます(>>413改めてありがとう)

評価よろしくです(スクリプトサイズが大きいので↓におきますた)
http://ux.getuploader.com/autohotkeyl/download/39/Exec_Strings%28TEST%E7%89%88%29.zip

今の時点で知り得た知識内で書いてるので、まだまだ突っ込み所有ると思われ・・・
複数行の文字列が解釈できない・・・いや、1行しか解釈しないのは仕様ってことで逃げときます
とりあえず手直し必要なところが有れば指摘してちょ
でも、余程致命的欠陥がない限り時間掛けて手直しなんてする気力もない(言ってることが矛盾するけど)

テスト実行を経て、今までキーリマップの常駐スクリプトに組み込んでるけど
あまりにも使う機会が少なすぎてガッカリ気味・・・

ところで、こういうのってどんな時に一番活用出来るのかなぁ?
630名無しさん@お腹いっぱい。:2014/02/23(日) 17:34:31.39 ID:eZg5KXIP0
おそらく、Autohotkey.dll 使って、動的にスクリプト読ませて実行させるのが
一番近い使い方になると思うよ
631名無しさん@お腹いっぱい。:2014/02/24(月) 00:02:38.74 ID:Rqdfd5Wo0
Win7 pro 64bitでAHK_L 1.1.14.03のUnicode 64-bitをインストール時に
「Separate taskbar buttons」
「causes each script which has visible windows to be treated as a separate program, but prevents AutoHotkey.exe from being pinned to the taskbar」
というチェック項目が出るけど、どういう意味でしょうか?

翻訳サイトでは
「個別のプログラムとして扱われる可視ウィンドウを持っているが、AutoHotkey.exeがタスクバーに押さえ付けられるのを防ぐ各スクリプトを引き起こします」
となったけど、意味分からん
632名無しさん@お腹いっぱい。:2014/02/24(月) 00:18:16.22 ID:zuYGCqgJ0
http://ux.getuploader.com/autohotkeyl/download/40/NewOSM.ahk
スペースキーを修飾キーにするっていうのに感動したので便乗改造してみる
633名無しさん@お腹いっぱい。:2014/02/24(月) 11:43:04.27 ID:0sMAOQNt0
>>632
スペース連打がスムーズになった感。変換しやすいかも
634名無しさん@お腹いっぱい。:2014/02/24(月) 12:24:21.44 ID:0sMAOQNt0
ていうかAHKがAndroid端末にもほしいよぅ
635名無しさん@お腹いっぱい。:2014/02/24(月) 17:17:34.71 ID:tzqmQI/N0
AndroidはTaskerが出来る事多くて面白い
636名無しさん@お腹いっぱい。:2014/02/24(月) 18:30:58.01 ID:pZ7DfwhZ0
>>631
GUIを持つスクリプトを実行するとタスクバーに表示される、それを右クリックすると「ピン止め」できるが
「AutoHotkey.exe」が固定され、「スクリプトのファイル」ではない。

そのオプションはGUIを持つAutoHotkeyスクリプトの「ピン止め」を非表示にする。
637名無しさん@お腹いっぱい。:2014/02/24(月) 21:29:40.01 ID:WxGM2RdZ0
>>629です
>>630
レスありがとう
>Autohotkey.dll 〜
これ使ったことないのでアレだけど、マルチスレッドで動かす時威力を発揮するってことなのかな?

でもなんだね、"文字列を実行する"みたいな関数というか処理は、
デフォルトで実装してないくらいだから、あまり需要はないみたいだね

自分は、リマップ系スクリプトで記述を見やすくしたいということだけが目的で
作り始めたくらいだから、本来の使い方(作り方)と違うかも・・・
638名無しさん@お腹いっぱい。:2014/02/25(火) 01:06:14.93 ID:UiGCHC1u0
>>636
なるほど。
GUI系のスクリプトは使ったことないけど、今度使う時に確かめてみます。
ありがとう
639名無しさん@お腹いっぱい。:2014/02/25(火) 10:47:47.64 ID:ImN/2+rk0
任意のウィンドウタイトルの色を変えることなんてできるでしょうか?

エクスプローラである文字がパスにあった場合、わかりやすくし合いと思って、
ウィンドウタイトルが変えられれば便利だと思った次第です。
640名無しさん@お腹いっぱい。:2014/02/25(火) 13:16:59.03 ID:EXLwJ3580
たぶん無理
GUIでそのウィンドウタイトルと同サイズの半透明ウィンドウ作ってオーバーラップさせれば
見た目それっぽくはできるかもしれないが、ウインドウ移動時の追従や
ドラッグ時にマウス操作情報を下層のタイトルバーに伝えてやる処理などが必要になる
あとたぶん色かぶりしてタイトルバーの文字の視認性はかえって落ちると思われ
641名無しさん@お腹いっぱい。:2014/02/25(火) 13:34:03.00 ID:yVY5YR6t0
>>639
定期的(1秒ごととか、0.5秒ごととか)に全ウィンドーのタイトルを取得してきて
該当するwindowにSendMessage(WM_SETTEXT) すれば行けるんじゃない?

・・・色変更か・・・色なぁ・・・どうすんだろw
642名無しさん@お腹いっぱい。:2014/02/25(火) 15:43:17.04 ID:maHSnSG/0
その目的ならキーワードに合致したウィンドウのタイトルバーにツールチップでも重ねるとか
邪魔にならない右端あたりに
643名無しさん@お腹いっぱい。:2014/02/26(水) 09:45:31.97 ID:be4jw4Ev0
(はるか昔になんかで見たブログを参考にはるか昔に作ったIMEの状態をタイトルバーに表示するやつを今でも使ってるけどAHK見つけたばっかりの頃にがんばって作った記憶があるから改善の余地はいくらでもありそうなものの)
よかったら参考にしてくれ。

WinGet, title0 ,PID, A
if ("%title0%" = "%title1%")
{
WinGet, title1 ,PID, A
return
}else{
ShowIME()
WinGet, title1 ,PID, A
return
}

ShowIME(){
getIMEMode := IME_GET()
WinGetActiveStats, title, W, H, X, Y
WinGet, title0 ,PID, A
W -= 6
X += 3
Y += 6 ;そのままだと表示がちょっと位置が悪いから微調整

if (%getIMEMode% = 0)
{
Progress,B x%X% y%Y% h2 w%W% zh0 CTaqua CW00FFFF,
return
}else{
Progress,B x%X% y%Y% h2 w%W% zh0 CTlime CWFF00FF,
return
}
return
}
644名無しさん@お腹いっぱい。:2014/02/26(水) 09:47:30.98 ID:be4jw4Ev0
でまぁ他に細々したやついるけど全体をSetTimer, ShowIME, 500でぶん回しとくと
そのウィンドウのIMEの状態を取得してオンなら赤オフなら青でタイトルバー一番上のちょい下ぐらいに
ほそーくウィンドウの幅でプログレスバー表示される。(元々はマックの機能だったような微かな記憶が。)

必要なかったりうっとおしいやつは
IfWinActive, ahk_group hihyouji{Progress, Off}
みたいな感じでいくつかグループ追加して非表示にできるから
IMEの状態の代わりにタイトル取得して幅とか色とか場所とかちょっと改変すれば
タイトルにC:\で薄く緑被せてD:\で赤被せてとかでそれっぽいことできると思う。

やってることはタイトルのみ常に取得して変わってたらサイズに合わせて色替えてるだけだから負荷も大したことないよー。
タイトルバーの色が変わってるわけじゃないけど例えばエディタなら書き始める前に視界に入ってくるから個人的にはかなり楽でわかりやすいと思っております。
645名無しさん@お腹いっぱい。:2014/02/26(水) 11:08:32.27 ID:HVU1k3cRP
すごい初歩的な質問ですが、今アクティブなウィンドウで開いているファイルのファイル名を取得するにはどうしたらいいんでしょう? タイトルバーにファイル名が出てこないタイプのアプリなので、WinGetTitleだとうまくいかないのです。
646名無しさん@お腹いっぱい。:2014/02/26(水) 12:39:36.19 ID:VhkI528H0
ヘルプファイルのようにコマンドラインでパスを渡してから起動するビュアーの場合は
コマンドライン文字列からパスが取れるかも

GetCommandLine(pid){
 ;COM Objects使用 (AHK_L 53+)
 For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process where ProcessId = " . pid)
 Return process.CommandLine
}

ただし起動してからファイルオープンするタイプの編集ソフトでは無理
具体的なアプリがなんだかわからんから追試できないが
WIndow Spy眺めてみてパスを格納してある(隠し)テキストがないか調べてみたら?
647名無しさん@お腹いっぱい。:2014/02/26(水) 14:57:47.22 ID:bNFNBbOX0
くるくるスクロールの要領でマウスカーソルを動かすだけでSendしたいのですが
左右左右や上下上下みたいな動きにさせたいのですが何か参考になるものはありますか?
648名無しさん@お腹いっぱい。:2014/02/26(水) 15:40:22.99 ID:AH2NogyE0
RegExReplaceで行をまたいだ検索や置換はできないのでしょうか?
649名無しさん@お腹いっぱい。:2014/02/26(水) 17:53:20.88 ID:qaOjVbYH0
#t::
Run,"C:\Program Files (x86)\Evernote\Evernote\Evernote Templates\evernotediary.bat"
Process,Exist,Evernote.exe ;check evernote
If ErrorLevel<>0 ;if active
WinActivate,ahk_pid %ErrorLevel% ;activate
else ;else
Run,"C:\Program Files (x86)\Evernote\Evernote\Evernote.exe" ;activate
MouseClick,Right, 133, 396
Sleep,500 ;wait bat
MouseClick,Right, 439, 200
WinWait, Lifelog, date
MouseClick,Right, 653, 278
Send,^:
MouseClick,Right, 802,237
Sleep, 100 ;wait click
Send,{BackSpace}
MouseClick,Right, 653, 278
return


evernoteの日記のテンプレートを作って、日付も自動で入力するようにしたいんだけど、マウスクリックで移動しまくるっていうかなり力技なものになってしまった。
もっとスマートな方法はないだろうか?
650名無しさん@お腹いっぱい。:2014/02/26(水) 18:09:05.73 ID:1RCEKiwc0
>>648
改行コードをマッチさせればいいのでは
651名無しさん@お腹いっぱい。:2014/02/26(水) 19:37:16.02 ID:Hhp3hYA10
>>647
MouseGestureL.ahk

>>649
テキストボックスのClassNN調べてControlSendで送る
652名無しさん@お腹いっぱい。:2014/02/27(木) 02:28:50.08 ID:YveQ6GMZP
特定のフォルダ(例えば%A_scriptdir%%26#165;hoge)に出来るファイルに必ず日付け等を付けたいなと思った時に、そのフォルダに新しくファイルが出来たことを検出するにはどうしたらいいんでしょう?

hogeフォルダにimage.jpgを入れると、自動的にimage_0227.jpgになるみたいな。今は適当なキーストロークで一発リネームできるところまでは組んであるんだけど、新しいファイルの検出って部分がさっぱりわからんのです。
653名無しさん@お腹いっぱい。:2014/02/27(木) 04:33:13.75 ID:cJV3KEpM0
>>652
必要な情報保存してからタイマーで変化を監視すればいい。
いきなりLoop処理させるとパフォーマンス的によろしくないので
先にFileGetTimeで変化判定させる。

FileGetTime.... ;タイムスタンプ保存
Loop (ファイル検索).... ;リスト保存
SetTimer,Rename,....
Return

Rename:
FileGetTime.... でフォルダの変化監視
If ....
 Loop (ファイル検索)....
 ...略...
Return
654名無しさん@お腹いっぱい。:2014/02/27(木) 08:16:18.83 ID:Y+L/AtZn0
>>651
ありがとうございます

#t::
Run,"C:\Program Files (x86)\Evernote\Evernote\Evernote Templates\evernotediary.bat"
Process,Exist,Evernote.exe ;check evernote
If ErrorLevel<>0 ;if active
WinActivate,ahk_pid %ErrorLevel% ;activate
else ;else
Run,"C:\Program Files (x86)\Evernote\Evernote\Evernote.exe" ;activate
MouseClick,Right, 133, 396
Sleep,500 ;wait bat
MouseClick,Right, 439, 200
WinWait, Lifelog, date
ControlSend, WebViewHost1,^: , Evernote
      ControlSend, ENAutoCompleteEditCtrl3, {BS}, Evernote
return

こういうふうに変更してみたんですが、ClassNNを取得できていないのかControlSendから先が動かない状態です。
どこが間違ってるんでしょうか
655名無しさん@お腹いっぱい。:2014/02/27(木) 16:53:04.04 ID:cJV3KEpM0
>>654
アプリによって挙動は違うので自分で確かめてくれ。
これでダメなら無理。

SetKeyDelay 遅くする
^: → {Ctrl down}:{Ctrl up}
対象のコントロールを選択してから送る
ahk_parent有/無 /コントロールを指定
/ウィンドウハンドルの直接指定
別のControl系で操作

ttp://ahkwiki.net/ControlSend
ttp://ahkwiki.net/ControlClick
ttp://ahkwiki.net/Window 2.3
656名無しさん@お腹いっぱい。:2014/02/27(木) 17:39:52.65 ID:baEetnSz0
GUIのテキストボックスにオートコンプリートをつけることなんて無理ですか?
657名無しさん@お腹いっぱい。:2014/02/27(木) 18:01:51.98 ID:+4HT/Phr0
自前で実装すればできないこともないと思うけど簡単ではないと思うよ
658名無しさん@お腹いっぱい。:2014/02/27(木) 19:35:31.20 ID:UdmCNGrb0
ちょうどちょっと前に作ったわ
editのgオプションで
オートコンプリート候補を格納した変数に対してLoop, parseで入力内容をマッチング、
マッチしたものを別途作ったguiのlistviewにひとつずつaddしていく
listviewの選択の移動と、選択項目のテキストをeditに入力するホットキーを設定
入力内容を確定したら入力内容とloop, parseで使う区切り文字を専用変数に追加
ソートの奴で(名前忘れた)変数内の重複をなくす
スクリプト終了時にその変数をiniファイル等に書き出す(スクリプト頭でincludeする)
こんな感じ
659名無しさん@お腹いっぱい。:2014/02/27(木) 19:52:03.25 ID:cJV3KEpM0
変換確定前のテキスト取るのが難題だな。
660名無しさん@お腹いっぱい。:2014/02/27(木) 21:31:29.04 ID:UdmCNGrb0
変換か。ファイル整理のためにファイル名にローマ字キーワードしこむのにしか使ってなかったからな
ちょっと前に貼られてたIME状態を切替て再入力するスクリプトのキーロガー部分を拝借して
入力内容のIMEオフ[入力内容のIMEオン]
例) hogehoge[ホゲホゲ]

みたいにオートコンプリート候補用変数に格納して、そっからeditに引っ張ってくるときには[]内のみにすればいけそうかな?
661名無しさん@お腹いっぱい。:2014/02/28(金) 01:58:07.40 ID:ySVROzr+0
IEコンポ使って、HTML5で組んだほうが早い
662名無しさん@お腹いっぱい。:2014/02/28(金) 18:48:32.86 ID:oBsJEjC80
だいなファイラーにて拡張子ごとに別のソフトを起動するように試し書きしたら動作が変なんですが見てもらえますか?


;だいなファイラー
#ifWinActive, ahk_class CDynaApp

^1::
  ClipBack = %Clipboard%
  Clipboard =
  Send,^+c  ;#ファイルパスを取得するコマンド
  ClipWait
  Extension := RegExReplace(Clipboard, "^.+(\..{2,4})$", "$1")  ;#ファイルパスから拡張子を抜き出し
  if Extension = .zip
   Run, C:\Apps\MassiGra\MassiGra.exe "%Clipboard%"
  else if Extension = .mp3
   Run, C:\Apps\Mp3Tag\Mp3tag.exe "%Clipboard%"
  Clipboard = %ClipBack%

return


と書いたらCtrl+1を押すとキン!と言うだけで、次にCtrl+Shift+Cを押してみたらなぜか実行されました
Ctrl+1→Ctrl+Shift+Cとなっている現状ですがCtrl+1だけで使えないものでしょうか?
663名無しさん@お腹いっぱい。:2014/02/28(金) 19:17:56.26 ID:oBsJEjC80
すみませんできました
だいなの設定をこの前少し変えたの忘れてて先頭文字ジャンプが密かに動いてました
664名無しさん@お腹いっぱい。:2014/03/01(土) 01:00:17.07 ID:M9MEW3mb0
Loop, Parse, %Clipboard%, `;
とした時%Clipboard%内に半角空白が入ってるとillegal characterってエラーが出るのはどうすればいい?
ファイルパスが;区切りで列挙されてる文字列を扱いたい
665名無しさん@お腹いっぱい。:2014/03/01(土) 01:33:09.62 ID:z/ta9LDl0
クリップボード内の文字列を変数として使いたいなら%Clipboard%でいいけど
そうじゃなけりゃClipboard
666名無しさん@お腹いっぱい。:2014/03/01(土) 02:53:17.15 ID:E5SVg39R0
過去ログ漁りつつググりつつですが、
どうしても解決しないので質問です。

Fnキーを一定間隔以内で2連押ししたら
押し下げ状態を保持して、もう1度押したら解除
と言ったスクリプトを組みたいのですが、
参考に出来るスクリプトがあったらご教示お願いします。
667名無しさん@お腹いっぱい。:2014/03/01(土) 02:56:46.52 ID:ERfkz+X40
Fnキーは使えないのだ
668名無しさん@お腹いっぱい。:2014/03/01(土) 02:57:47.21 ID:E5SVg39R0
え、、、マジでか。。。orz...
669名無しさん@お腹いっぱい。:2014/03/01(土) 06:58:45.74 ID:iZ2zJbC4P
>>668
FnキーはBIOSと結びついた特殊なキーなのだ。電源ボタンなんかと役割が近い。

どうしてもFnキーを使いたいならBIOSでFnキーのマッピングを変えられる場合もある。
670名無しさん@お腹いっぱい。:2014/03/01(土) 12:14:26.69 ID:3Sve3FEn0
Fnキーじゃなくて他のキーで代用するのがいいと思う

無変換キーをダブルクリックしたらフラグが立って、フラグが立ってる間は押したキーが変化する、くらいでいいんじゃね?
具体的にはこう

~vk1Dsc07B up::
if(Fnflag==1){
Fnflag=0
}else if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 300){
Fnflag=1
}
return

#if Fnflag=1
up::pgup
down::pgdn
left::home
right::end
del::Numlock
#if


どっかに今どういう状態なのか通知する何かを挟んだほうが使いやすいと思うけどね
671666:2014/03/01(土) 12:46:32.32 ID:E5SVg39R0
>>670
サンクス!!
超参考になります!!
672名無しさん@お腹いっぱい。:2014/03/01(土) 13:26:56.77 ID:M9MEW3mb0
MenuとGosub使えるようになったらとっても便利になった! ajinoyaさんありがとう!

>>665
そこの違いがよくわかってなくて……仰るとおりで出来ました
テキストに書き出してLoop, Readよりこの方が良いんですよね?
673名無しさん@お腹いっぱい。:2014/03/01(土) 13:29:56.68 ID:3Sve3FEn0
変数っていう入れ物か変数の中身を指定するかの違いなんだけど、まぁココらへんはトライ&エラーやってりゃそのうち分かるんじゃないのん?
674名無しさん@お腹いっぱい。:2014/03/01(土) 18:08:03.25 ID:TcVP9yu50
>>672
変数内で処理した方が圧倒的に早い。
既存のファイル読み込み以外にはLoop, Read使う必要は無い。

Clipboard → 変数を読み込む
(メモリ)      (メモリ)

Clipboard → テキストに書き出す → テキストを読み込む
(メモリ)      (HDD)            (HDD)
675名無しさん@お腹いっぱい。:2014/03/01(土) 18:21:07.55 ID:M9MEW3mb0
>>673
すみません、すでに前科1,2犯だったかと……

>>674
ですよね
676558:2014/03/02(日) 02:22:19.22 ID:K/Tiq/qo0
このスレの558です。
>>562
>どうにかしてマウス位置(マウス右クリック位置)のアイコンの番号取得できればいいんですが…
と言ってたんですが、過去スレにそのものズバリの関数が貼られていました。
これで、任意のトレイアイコンの正確なタイトルとウインドウクラスが取得できるようになりました。

「AutoHotkey スレッド part9」のレス番791です。
677名無しさん@お腹いっぱい。:2014/03/02(日) 11:11:16.91 ID:c09PULgx0
>>675
aho := "baka"
clipboard := "aho"
だとして
Loop, parse, clipboard → Loop, parse, "aho"
Loop, Parse, %Clipboard% → Loop, parse, aho → Loop, parse, "baka"
こんな風に違う
とっちが使えるかはコマンドによって違うから、ほんと慣れだよね
678名無しさん@お腹いっぱい。:2014/03/02(日) 12:49:51.06 ID:WD1j75oX0
式とInputVarとOutputVarは確実
問題は%を省略して式が使える所だな
679名無しさん@お腹いっぱい。:2014/03/02(日) 13:22:14.39 ID:JPBfEsY60
キーボードで音量調整するコードを書いています。
以下のコードで音量調整とGUI表示まではできたのですが、
ボタン連打するとsleep, 500 で0.5秒待たされてしまい、
連続してスムーズに音量を上げることができません。

処理を止めずにguiの非表示まで待つような方法はないでしょうか?
680名無しさん@お腹いっぱい。:2014/03/02(日) 13:24:37.06 ID:JPBfEsY60
679です。

; 音量UP
#k::
SoundSet, +10
showSoundNum()
Return

; 音量DOWN
#j::
SoundSet, -10
showSoundNum()
Return

; 音量調整gui表示
showSoundNum() {
SoundGet, master_volume
master_volume := Round(master_volume, 0)
;MsgBox, vol: %master_volume%
Gui, Font, s30 bold
Gui, Margin, 40, 4
Gui, +AlwaysOnTop -Caption +E0x00000080 +Disabled
Gui, Show,W220 H50 Xcenter Ycenter NA
Gui, Color, 444444
Gui, Add, Text, cWhite, oto: %master_volume%
sleep, 500
Gui, Destroy
}
681名無しさん@お腹いっぱい。:2014/03/02(日) 13:40:27.45 ID:3jFCJf320
ん?なんでsleepする必要あるの?
682名無しさん@お腹いっぱい。:2014/03/02(日) 14:13:04.76 ID:JPBfEsY60
>>681
音量変更後、0.5秒だけ「音量: 30%」などと画面に表示するためです。
gui表示後、sleep以外で待ってから非表示にする方法があればいいのですが。。
683名無しさん@お腹いっぱい。:2014/03/02(日) 14:49:35.83 ID:OJsx/VPs0
>>680
こんな感じでどうかな?

showSoundNum() {
SoundGet, master_volume
master_volume := Round(master_volume, 0)
;MsgBox, vol: %master_volume%
Gui, Destroy
Gui, Font, s30 bold
Gui, Margin, 40, 4
Gui, +AlwaysOnTop -Caption +E0x00000080 +Disabled
Gui, Show,W220 H50 Xcenter Ycenter NA
Gui, Color, 444444
Gui, Add, Text, cWhite, oto: %master_volume%
SetTimer, OnTimerGuiDestroy, 500
}

OnTimerGuiDestroy:
Gui, Destroy
Return
684名無しさん@お腹いっぱい。:2014/03/02(日) 14:53:30.91 ID:OJsx/VPs0
↑ごめん、タイマー止めるの忘れてた

OnTimerGuiDestroy:
SetTimer, OnTimerGuiDestroy, OFF
Gui, Destroy
Return
685名無しさん@お腹いっぱい。:2014/03/02(日) 14:55:54.42 ID:K/Tiq/qo0
>>679-680
これ使ってみては?
基本タスクバー状でホイール回転/ボタンで音量のアップ/ダウン/ミュート行うやつだけど、音量調整gui表示も付いてますよ。
#k::TV_Change("+" . TV_VolumeStep) ;音量アップ
#j::TV_Change("-" . TV_VolumeStep) ;音量ダウン
#m::TV_Mute() ;音量ミュート
って追加すればキーボードでも操作できるようになりますし。
http://ux.getuploader.com/autohotkeyl/download/29/TaskVol12.zip

せっかく自分でスクリプト作ってるのに余計なお世話かもしれませんけど、一応こんなスクリプト有りますよってことで・・・・・
686名無しさん@お腹いっぱい。:2014/03/02(日) 14:58:53.04 ID:K/Tiq/qo0
>>685
訂正。
タスクバー状 → タスクバー上
687名無しさん@お腹いっぱい。:2014/03/02(日) 16:13:37.48 ID:JPBfEsY60
>>683
ありがとうございます!
思っていた通りに動くようになりました。
Timerってこういう時に使うものなんですね。


>>685
参考になります!ありがとうございます。
>>683 と同じようにSetTimerが使われていました。
SetTimer, TV_HideTimer, -%TV_VolDispTime%
こちらを参考にしてかっこいいGUI作ってみようと思います。
688名無しさん@お腹いっぱい。:2014/03/02(日) 16:27:28.09 ID:lKTOH0Du0
>>684
タイマー止める、っつーか一回だけ動かしたいなら タイマーで負数を指定

>SetTimer, OnTimerGuiDestroy, -500
689名無しさん@お腹いっぱい。:2014/03/03(月) 17:22:16.17 ID:8rsKmJcl0
お尋ねします。
GUIのボタンに指定したキーを割り当てているのですが
マウスでボタンを押し込んでいる状態だとキー入力が発生せず、マウスを放すとキー入力が発生します。
これをボタンを押し込み状態でキー押しっ放しには出来ませんでしょうか?。
よろしくお願いします。
690名無しさん@お腹いっぱい。:2014/03/03(月) 18:55:46.26 ID:NoPcm5H60
ソフトAが起動しているときは^+sを、ソフトAが起動してないときにソフトBが起動してるときは!sを送りたいんですが
その場合↓のどちらの案がスマートなんでしょうか。Aの存在確認した方がいい?しない方がいい?
^+sはAの、!sはBのグローバルホットキーです

; プラン1
#ifWinExist, ahk_class %A%
NumLock::Send,^+s

#ifWinExist ahk_class %B%
Numlock::Send,!s


; プラン2
#ifWinExist, ahk_class %A%
NumLock::Send,^+s

#if WinExist("ahk_class %A%")=0 and WinExist("ahk_class %B%")<>0
Numlock::Send,!s
691名無しさん@お腹いっぱい。:2014/03/03(月) 19:24:28.35 ID:1OisUOTx0
>>690
sendの送り先が不明なのだが、ソフトAに限定して^+s送りたいなら#IfWinActiveの方が良いんじゃないの?
692名無しさん@お腹いっぱい。:2014/03/03(月) 19:29:06.83 ID:1OisUOTx0
>>691
何か分かり難かったかも。
ソフトAのウインドウに^+s送りたいなら、また、ソフトBのウインドウに!s送りたいなら、#IfWinActiveの方が良いんじゃないの?
に訂正。
693名無しさん@お腹いっぱい。:2014/03/03(月) 19:31:53.44 ID:1OisUOTx0
度々すいません。
ちゃんとレス読んでなかった…>>690-691は無かったことにして頂戴。
694名無しさん@お腹いっぱい。:2014/03/03(月) 19:46:28.77 ID:1OisUOTx0
>>690
やりたいことがよく分からないけど、
>ソフトAが起動しているときは^+sを、ソフトAが起動してないときにソフトBが起動してるときは!sを送りたいんですが
↑なんだから、その通りにコード書けば良いような気がする。

ちなみに、
>#if WinExist("ahk_class %A%")=0 and WinExist("ahk_class %B%")<>0
#if (! WinExist(ソフトA)) && WinExist(ソフトB)
という書き方もある。(他にもっとスマートな書き方あると思うけど)
695名無しさん@お腹いっぱい。:2014/03/03(月) 20:27:35.86 ID:NoPcm5H60
頭回ってなかったみたいです。検証したら納得できました
プラン1だとAをBより上の方に書かなければいけないが、プラン2ならAとBが前後してもOK、ということですね

やはりプラン2よりプラン1の方が処理は早いですよね
Bを常に読まないで済みますし

>>694
メディアプレーヤーAとBがあってAにStart/Stopのグローバルホットキーの優先権を与える、という内容です
お騒がせ失礼
696名無しさん@お腹いっぱい。:2014/03/03(月) 21:36:15.52 ID:1OisUOTx0
>>695
; プラン1の
#ifWinExist ahk_class %B%
Numlock::Send,!s
と、
; プラン2の
#if WinExist("ahk_class %A%")=0 and WinExist("ahk_class %B%")<>0
Numlock::Send,!s
では、動きが違うよ。

あなたがやりたい、
>ソフトAが起動しているときは^+sを、ソフトAが起動してないときにソフトBが起動してるときは!sを送りたいんですが
なら、プラン2の方だと思うんだが…

また、処理の速さなんて何万回ループでもしない限り人間には感じないから気にする必要ないと思うけどな。
697名無しさん@お腹いっぱい。:2014/03/03(月) 21:42:35.27 ID:1OisUOTx0
また連投すいません。
それぞれ#IFで閉じてないけど、動き的にどうなんだろ?
うーん…個人的には、それぞれ#IFで閉じた方が良いような気がする。
698名無しさん@お腹いっぱい。:2014/03/03(月) 21:52:44.20 ID:kqCGJtV10
閉じなきゃいけないってもまぁあるけど、優先させたい処理を上に書くってのも割と重要
これだけでうごかなかった動作が動くこともある
699名無しさん@お腹いっぱい。:2014/03/03(月) 22:06:21.78 ID:9kbg4yV80
>>696
連投しすぎ・・・間違ってるし・・・。

プラン1、プラン2 の動作は同じ、
割り当てが同じなら上の物だけ実行される。
#IFで割り当てを解除しておけば追記した際のミスがなくなる。

>>695
プラン1は前後関係があるので可読性が悪い間違えやすい、負荷の違いはほぼ無い。
700名無しさん@お腹いっぱい。:2014/03/03(月) 22:16:33.57 ID:1OisUOTx0
>>698-699
なるほど…このスレはとても勉強になるよ。
連投の件は申し訳なく思ってる(´・ω・`) ショボーン
701名無しさん@お腹いっぱい。:2014/03/03(月) 23:10:02.47 ID:9kbg4yV80
>>689
定期的にある質問なのでサンプルを書いてみた。

;;;;;GUIのボタン押し込み時の実行タイミングの違い
Gui,Add,Button,w125 gTEST1,---- 通常ボタン ----
Gui,Add,Text,w125 h25 gTEST2 +0x01 Border Center,-- テキスト/画像 --
Gui,Add,Button,w125 vTEST3 Hwndハンドル,-- メッセージイベント --
OnMessage(0x201, "WM_LBUTTONDOWN") ;WM_LBUTTONDOWN
Gui,Show
Return

TEST1: ;通常ボタン
ToolTip テスト1
Sleep 200
ToolTip
Return

TEST2: ;任意ボタン
ToolTip テスト2
KeyWait,LButton
ToolTip
Return

WM_LBUTTONDOWN(wParam,lParam,msg,hwnd){ ;メッセージイベント
global ハンドル
MouseGetPos,,,,VarC,2
If (VarC = ハンドル){
ToolTip テスト3
KeyWait,LButton
ToolTip
}
}
702名無しさん@お腹いっぱい。:2014/03/03(月) 23:19:58.36 ID:NoPcm5H60
>>700
失礼ながら、
ご自身の考えもまとまらないうちに発言するのは避けた方がよろしいかと
703名無しさん@お腹いっぱい。:2014/03/04(火) 00:04:34.04 ID:Zaag+9BP0
>>701
このコードをベースに試行錯誤してみます。
有難うございました。
704名無しさん@お腹いっぱい。:2014/03/04(火) 01:05:36.18 ID:DQK4PiPE0
>>703
KeyWaitが関数内にあると他箇所の左クリックが一回無効になってしまうようなので修正

Gui,Add,Text,w125 h25 gTEST2 +0x01 Border Center,-- テキスト/画像 --
Gui,Add,Button,w125 gTEST3 Hwndハンドル,-- メッセージイベント --
OnMessage(0x201, "WM_LBUTTONDOWN") ;WM_LBUTTONDOWN
Gui,Show
Return

TEST2: ;任意ボタン
ToolTip テスト2
KeyWait,LButton
ToolTip
Return

TEST3: ;任意ボタン
KeyWait,LButton
ToolTip
Return

WM_LBUTTONDOWN(wParam,lParam,msg,hwnd){ ;メッセージイベント
global ハンドル
MouseGetPos,,,,VarC,2
If (VarC = ハンドル)
ToolTip テスト3
}
705名無しさん@お腹いっぱい。:2014/03/04(火) 02:26:09.30 ID:Zaag+9BP0
>>704
素晴らしい!
ほぼ思い通りの事が出来ました。
有難うございました。
706名無しさん@お腹いっぱい。:2014/03/04(火) 03:00:46.42 ID:xsiZayJx0
入力した数字の桁数に関わらず、条件を満たす文字列として取得したい。
条件1:3桁の文字列として取得する(入力した数字が3桁未満なら、3桁になるよう頭に「0」を付ける)
条件2:入力した数字が4桁以上なら、右から(下位)3桁を取得する

一応、(1)と(2)の方法を思いついたんだけど、もっと賢い方法あります?

;InputVar := 1
;InputVar := 50
;InputVar := 999
InputVar := 1234

;(1)
InputVar := 1000 + InputVar
StringRight, OutputVar, InputVar, 3
MsgBox, %OutputVar%
;(2)
SetFormat, float, 03
InputVar += 0.1
StringRight, OutputVar, InputVar, 3
MsgBox, %OutputVar%
707名無しさん@お腹いっぱい。:2014/03/04(火) 03:07:35.43 ID:xsiZayJx0
スンマセン。訂正前のを貼り付けてしまった。(特に重要な事じゃないけど一応訂正)
;(1)
InputVar := 1000 + InputVar
   ↓
InputVar += 1000
708名無しさん@お腹いっぱい。:2014/03/04(火) 03:43:43.47 ID:xsiZayJx0
自己レスです。
関数って無いのかなあ・・・とよくよく捜したら有った。
行数が少なく、変数の無駄遣いも無いので(1)よりは良いのかなあ・・・

InputVar += 1000
InputVar := SubStr(InputVar, StrLen(InputVar)-2)
MsgBox, %InputVar%
709名無しさん@お腹いっぱい。:2014/03/04(火) 04:04:29.29 ID:DQK4PiPE0
>>708
やめた方がいい事が少々ある(動作は問題ない)。

未割り当ての変数に代入すると#WarnがONだと怒られる。
×InputVar += 1000
○InputVar := 1000

SetFormatで変換する際は0を代入
×0.1
○0.0

;;;全部まとめ
InputVar := 1
; InputVar := 1.11
; InputVar := 11.55
; InputVar := 1234
SetFormat,Float,003.0
MsgBox % SubStr(InputVar += 0.0, -2)
Return
710名無しさん@お腹いっぱい。:2014/03/04(火) 05:14:08.77 ID:xsiZayJx0
>>709
すごい、凄いです。
いただきました、ありがとうございまづ。

スイマセン。
SetFormat,Float,003.0
の「003」と自分が書いた「03」の違いがよく分からないのですが何が違うのでしょうか?
「003.0」の「.0」部分は入力の小数部を考慮してというのは何となく分かったのですが。
711名無しさん@お腹いっぱい。:2014/03/04(火) 05:25:54.08 ID:DQK4PiPE0
>>710
すみません00はミスですね、そのまま動いていたので見逃しました。
03.0 頭0詰め、3桁、小数点無し四捨五入
712名無しさん@お腹いっぱい。:2014/03/04(火) 05:42:03.78 ID:xsiZayJx0
>>711
理解できました。
こんな朝方まで付き合っていただき、ありがとうございました。
713名無しさん@お腹いっぱい。:2014/03/04(火) 09:10:28.00 ID:UHpLHDrI0
Chromeで文字入力状態でないときに、sキーが押されると以下のキーを発行したいのですが、
どのようにすればいいでしょうか?

s:: Send, ^l^v{Enter}
714名無しさん@お腹いっぱい。:2014/03/04(火) 14:47:04.67 ID:h7tVz7Y30
マウスカーソルじゃなくて、テキストボックスクリックして点滅しているフォーカス(?)の状態を知ることはできないでしょうか?
715名無しさん@お腹いっぱい。:2014/03/04(火) 18:23:18.99 ID:DQK4PiPE0
>>713
>>714
IME.ahk
キャレット
でwiki検索。
716名無しさん@お腹いっぱい。:2014/03/04(火) 19:30:53.28 ID:qpMowDMO0
質問です。
ボタンにショートカット(例えばAlt+sとか)割り当てられてないマウス前提のソフトをキーボードだけで操作したいと思ってます。
そういうことを補間してくれるソフトを探していたらこちらに誘導されたのですが、AHKLを使うとそういうことできますでしょうか?
スクリプト組むとか自分にはハードル高いのですがもし出来そうならこれを機会に覚えようと思うのですが。
717名無しさん@お腹いっぱい。:2014/03/04(火) 19:54:17.57 ID:DQK4PiPE0
>>716
>ボタンにショートカット(例えばAlt+sとか)割り当てられてないマウス前提のソフトを...
ボタン?なんの?質問の意味が分からない、箇条書きにして書き直してほしい。
718名無しさん@お腹いっぱい。:2014/03/04(火) 20:17:33.83 ID:wegUrf/G0
>>716
ボタンが [次へ(N)] みたいになっていれば Alt+N を押してこのボタンを直でキーボード操作できるけど
[次へ] みたいな感じでショートカットキーが設定されていないので出来ない、でもしたいって感じかな?
Windows標準のボタンが使われているなら、クラス名を取得してお望みの処理を実現できるよ。
719名無しさん@お腹いっぱい。:2014/03/04(火) 20:18:14.50 ID:8Q1b1K9g0
>>716
スクリプトでマウスカーソルを移動させたり、
各種クリックさせたりできるから大抵の操作はできるよ。
ただ、そのソフトのウィンドウサイズやボタンの位置が変わったりしたときに
確実に動くように作るのは割とハードル高いと思う。
スクリプト書けると他にもいろいろ使えるから覚えて損はない。
720名無しさん@お腹いっぱい。:2014/03/04(火) 20:21:53.88 ID:otKsr2OS0
>>716
Ctrl+Sで[保存]ボタン、Ctrl+Wで[閉じる]ボタンを押させたい
とかってことなら、まあ大抵の場合は出来るんじゃないかな

各ボタンのコントロールが取れるならControlClick
取れないけど、Window上でのボタンの座標が常に固定なら直接座標指定してMouseClick
座標も一定じゃなければImageSearchでボタンを探してMouseClick
みたいな感じ
721名無しさん@お腹いっぱい。:2014/03/04(火) 20:22:24.03 ID:otKsr2OS0
はいめっさかぶりました
722名無しさん@お腹いっぱい。:2014/03/04(火) 20:48:38.38 ID:DQK4PiPE0
>>716
失礼、読み直して理解した。
マウスサイドボタン割り当て変更していない前提の話で
対象ソフトでのマウスサイドボタン操作をキーボードでしたいって事か。

割り当て変更程度の基本動作は比較的簡単なので
リファレンスしっかり読めば迷わないと思う。
723名無しさん@お腹いっぱい。:2014/03/04(火) 21:24:12.85 ID:qpMowDMO0
>>717
わかりにくい説明ですみません。やりたいことは>>718な感じです。
>>718、720
やりたいことはそれです。
できるんですね。やり方もいろいろあるようですすごいですね。
ちょっとがんばって挑戦してみたいと思います。

ありがとうございました。
724名無しさん@お腹いっぱい。:2014/03/05(水) 11:30:11.68 ID:i7J6n+CU0
>>715
>>713ですが、ありがとうございます。

キャレット座標の変数(A_CaretX、A_CaretY)があったのですが、うまく機能していないようでした。
IME.ahkのIME_GetSentenceMode関数が、

文字入力状態:無変換モードで0を返す
文字入力状態でない:0を返す

だったので、自分は無変換モードにしないので、これを利用しました。
725名無しさん@お腹いっぱい。:2014/03/05(水) 11:58:10.27 ID:FF/7iv100
以下の説明があるのですが、「このラベルは、スクリプトが開始された直後にも実行される。」の「にも」ってどうゆうことですか?

二度呼ばれるってこと?

OnClipboardChangeサブルーチン
「OnClipboardChange」という名前のラベルを作成しておくと、何らかのアプリケーションによってWindowsのクリップボードが変更されたときにそのラベルが実行されるようになる。
このラベルは、スクリプトが開始された直後にも実行される。
726名無しさん@お腹いっぱい。:2014/03/05(水) 12:13:20.64 ID:qCMYSbxb0
スクリプト起動j直後に必ず一回呼ばれ
その後クリップボードが変更されるたびに何度でも呼ばれる
727名無しさん@お腹いっぱい。:2014/03/05(水) 13:08:28.71 ID:FF/7iv100
>>726
なるほど、ありがとうございます。

マニュアルではOnClipboardChange中のクリップボード読み書きでは再呼び出しがかからないと書いてあるのですが、
どうも呼ばれるような気がします。

それが毎回じゃないのですが…
728名無しさん@お腹いっぱい。:2014/03/05(水) 13:54:18.68 ID:FH0bPo7T0
処理にもよるかもだけど、30〜程度のsleepを入れるといいよ
729名無しさん@お腹いっぱい。:2014/03/05(水) 17:00:44.67 ID:FF/7iv100
clipped変数に複数のファイルをコピーした状態を作れないでしょうか?

テキストファイルからパスリストを読み込み、それを全てコピーした状態にしたいのですが…
730名無しさん@お腹いっぱい。:2014/03/05(水) 17:01:22.35 ID:FF/7iv100
>>728
助言ありがとうございます。

sleepを入れたらちゃんと動くようになりました。
731名無しさん@お腹いっぱい。:2014/03/05(水) 17:40:42.54 ID:sldfG/s40
特定のプロセスがCPU使用率50%以上になったら強制終了させるっていうのを書こうとしたんだけど

プロセスの存在を確認するコマンドはあるけど
CPU使用率を取得するっていうのはもしかしてないのかな。
過去ログ見てるけどこのあたりを昔いじってるひとがいたような。
732名無しさん@お腹いっぱい。:2014/03/05(水) 18:00:48.68 ID:BuF8L69L0
>>729
単純に Loop,READ と FileCopy あたりで
リストにあるファイルを目的の場所にコピーすることはできるけど
そうじゃなくて、Explorer等でペーストできる状態で
クリップボードに格納したいってことなら↓この辺じゃないかな

http://www.autohotkey.com/board/topic/23162-how-to-copy-a-file-to-the-clipboard/page-4#entry463462
733名無しさん@お腹いっぱい。:2014/03/05(水) 18:53:42.46 ID:1rqdE70w0
>>731
AutoHotkeyでコマンドが用意されていないならDllCallで該当するAPI呼び出そう。

システムモニタ用関数群
ttp://ahk.xrea.jp/myscripts/index.html
734名無しさん@お腹いっぱい。:2014/03/05(水) 20:23:12.17 ID:sldfG/s40
>>733
おおw
ちょっと理解するのに時間かかりそうだけど 簡単かな?

軽量な実行ファイル作りたいぞ〜
735名無しさん@お腹いっぱい。:2014/03/05(水) 20:48:57.58 ID:1rqdE70w0
>>734
関数を利用するならリファレンス読むだけで十分に理解できる。

DllCallでAPIを使うのは難易度高いがググれば何とかなる。
対象を使用したスクリプトが何かしらヒットする。
検索ワード:Autohotkey API関数名
736名無しさん@お腹いっぱい。:2014/03/06(木) 10:57:30.33 ID:vZd8Y1LG0
AU3_Spy.exeで表示される「Visible Window Text」を取得する方法はあるでしょうか?
737名無しさん@お腹いっぱい。:2014/03/06(木) 18:11:04.41 ID:hV6d/X8j0
>>736
AU3_Spy.exe の情報はすべてAutoHotkeyのコマンドで所得している。
後は自分で探そう。
738名無しさん@お腹いっぱい。:2014/03/06(木) 18:16:25.76 ID:hV6d/X8j0
ミス所得、取得
739名無しさん@お腹いっぱい。:2014/03/07(金) 01:42:47.35 ID:1Zg4SA4j0
IEでHit-a-Hintというか、キーボードで自在にリンクを開くってAHKで何とかできないですかね?
リンクの色とかでは判別しきれませんし、特定のキーにカーソル移動を割り当てるくらいしか思いつかないんですが
それだとあまりスマートでないというか……
740名無しさん@お腹いっぱい。:2014/03/08(土) 18:31:18.75 ID:HwFTgxlJ0
普通のAHKのスクリプトじゃ操作は無理
IEオブジェクト使えばなんとかなるだろうけど、ほぼAHKよりIEとかDOMとかJSの知識のほうが必須
741名無しさん@お腹いっぱい。:2014/03/08(土) 21:21:51.81 ID:ztVAcItD0
下例に於いて、上のパターンと下のパターンとでは処理速度はそれ程変わらないと思うのですが、
決まった回数ループさせる場合はどっちのパターンでループさせるのが賢いと言えますか?

Loop,100{
 Loop, 5{
  何かの処理(条件により途中でループを抜ける場合がある)
 }
}

Loop, 5{
 Loop,100{
  何かの処理(条件により途中でループを抜ける場合がある)
 }
}
742名無しさん@お腹いっぱい。:2014/03/08(土) 21:35:12.29 ID:8BgYcHG70
処理速度よりやりたい内容ベースで考えるべきじゃね

100回行いたい処理+500回行いたい処理があるなら前者
5回行いたい処理+500回行いたい処理があるなら後者
500回行いたい処理しかないなら入れ子にする意味なし、 Loop,500{}でおk
743名無しさん@お腹いっぱい。:2014/03/08(土) 21:42:55.20 ID:EAQeMNhs0
腹筋5回を1日に100セット
腹筋100回を1日に5セット

どちらがいいですか?
744名無しさん@お腹いっぱい。:2014/03/08(土) 22:01:55.03 ID:ztVAcItD0
>>742-743
決まったパターンに拘らず、その場その場に合った(書きやすい)方で書けばいいってことですね。
即レスありがとうございました。
745名無しさん@お腹いっぱい。:2014/03/08(土) 22:33:49.01 ID:5+xRngcW0
テンプレにある
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
これで、sc07Bを押した時にポップアップで操作説明を出したいのですが
タイマーで監視するしかないでしょうか?
746名無しさん@お腹いっぱい。:2014/03/08(土) 23:28:14.38 ID:/iqDNbmz0
>>745
;押し上げた時に表示
sc07B::
ToolTip 説明
Sleep 1000
ToolTip
Return

sc07B & a::MsgBox 実行
-------------------------
;押し下げた間表示
sc07B::
ToolTip 説明
KeyWait sc07B
ToolTip
Return

#If GetKeyState("sc07B","P")
a::MsgBox 実行
#If
747名無しさん@お腹いっぱい。:2014/03/09(日) 07:23:29.03 ID:OZn5E6us0
Chrome上のFlashがアクティブの時に
Flashにコントロールが取られてしまい
^W でタブを閉じるが効きません(AHK関係なく効かない)

以下のコードで一応閉じることができたのですが、
フルFlashサイトでは動かないのと
一瞬コンテキストメニューが見えてダサいです。
何か良い方法はないでしょうか?

^w::
WinGetPos, win_x, win_y, win_w, win_h, Google Chrome
MouseGetPos, before_x, before_y ;初期位置set
MouseClick, right, 10, win_h - 10, , 0
send {ALT}
send ^w
MouseMove, before_x, before_y, 0 ;カーソルを元の位置に戻す
return
748名無しさん@お腹いっぱい。:2014/03/09(日) 07:54:36.94 ID:W0n11bZx0
自分はChrome使ってないけど、URL入力欄を決め打ちで左クリックしてフォーカス移せばいいんじゃない?
同じ力技だけど、メニュー出ないだけまだマシ…かな。

力技じゃない方法がもし有るのなら自分も知りたいです。
749名無しさん@お腹いっぱい。:2014/03/09(日) 08:43:11.39 ID:OZn5E6us0
>>747
ありがとうございます。
URL入力欄に変更した所、思っていたとおりの動きになりました。
一応コード貼っておきます。

^w::
MouseGetPos, before_x, before_y ;初期位置set
MouseClick, left, 170, 60, , 0
closeCtrlW()
MouseMove, before_x, before_y, 0 ;カーソルを元の位置に戻す
return
750名無しさん@お腹いっぱい。:2014/03/09(日) 08:44:44.46 ID:OZn5E6us0
>>749 のコード間違えました。
closeCtrlW()

send ^w
751名無しさん@お腹いっぱい。:2014/03/09(日) 09:17:23.18 ID:H8+q5xQv0
>>746
押し下げた間表示のやり方で思っていたようにできました
自分だと sc07B & の形にこだわってしまっていたので
#If でくくるのを見てとてもすっきりしました
どうもありがとうございました
752名無しさん@お腹いっぱい。:2014/03/09(日) 22:01:00.65 ID:QqUxyrkb0
FileDeleteについてお尋ねします。
読み取り専用属性のファイルの削除が出来ずに困っています。
何か良い手はありませんでしょうか?よろしくお願いします。
753名無しさん@お腹いっぱい。:2014/03/09(日) 22:09:44.37 ID:qfuhPqKN0
FileSetAttrib, -R
754名無しさん@お腹いっぱい。:2014/03/09(日) 22:13:05.14 ID:QqUxyrkb0
おおなるほど、一度属性を解除するのですね。
FileDeleteで一発削除って訳にはいかないようですね。
有難うございました。
755名無しさん@お腹いっぱい。:2014/03/10(月) 18:29:24.52 ID:YxyZr49z0
#IfWinActiveでahk_classとウィンドウタイトルの両方でフックしたいのですが、そんなことはできるでしょうか?

#IfWinActive以降のホットキー定義で右クリックをフックしていますが、そこでWinGetActiveStatsのウィンドウタイトルで条件分けしてしまいますが、
マウ筋と併用すると、右クリック次ジェスチャーが動いてくれません。

~で渡せばいいのですが、アプリによって右クリックを渡したくないので、うまくできません。

やりたいのが、ファイル保存ダイアログ系で右クリックを無視させてとある処理、
タスク マネージャではAutoHotKeyでは何もせず、マウ筋のマウスジェスチャーを効かせたいですが、下ではうまく行きません。
なにかよい方法はないでしょうか?

#IfWinActive, ahk_class #32770
RButton::
WinGetActiveStats, t, Width, Height, X, Y
if( RegExMatch(t, ".*(インポート|ファイル|アップロード|保存|参照).*") ) {
任意の処理
} else {
Send, {RButton} ;タスクマネージャーなどは無視
}
return
756名無しさん@お腹いっぱい。:2014/03/10(月) 19:19:08.25 ID:EFDyLp+G0
>>755
ウィンドウ指定を複数指定する場合は #If または If を使って式として処理すればいい。
WinExist() WinActive() 等を or || and && で繋げばいくらでも増やせる。
757名無しさん@お腹いっぱい。:2014/03/10(月) 20:15:27.76 ID:VVzJPnIq0
#IfWin
758名無しさん@お腹いっぱい。:2014/03/10(月) 20:16:47.54 ID:VVzJPnIq0
#IfWinActive, ウインドウタイトルたぶahk_class
ってだけの話じゃないの?
759名無しさん@お腹いっぱい。:2014/03/10(月) 21:17:35.16 ID:CZcJCat40
>>755
試してないけど、

SetTitleMatchMode, RegEx
#IfWinActive, タイトル1|タイトル2|タイトル3 ahk_class #32770
RButton::
任意の処理
return

とか?
760名無しさん@お腹いっぱい。:2014/03/10(月) 21:39:19.13 ID:1VcRPfJ30
どれも正解だけど >>759 が最もシンプル
ただし、AutoExecセクションに SetTitleMatchMode を入れること、と
SetTitleMatchMode の影響をよく考慮することが前提な
761名無しさん@お腹いっぱい。:2014/03/10(月) 22:09:01.27 ID:6IxJkOPT0
便乗して聞きたいんですけど
#ifWinActive, (タイトル1 ahk_class A|タイトル2 ahk_class B)
こういう指定ができないんですが何故でしょう……
タイトルもahk_classもそれぞれほかに被るのがあるので

#if WinActive(1 A) && WinActive(2 B)
でできるとは思うんですが解せません
762名無しさん@お腹いっぱい。:2014/03/10(月) 23:05:41.09 ID:1VcRPfJ30
#IfWinActive [WinTitleの合致パターン] ahk_class [WinClassの合致パターン]
であって、それぞれの [合致パターン] を正規表現であらわしていて、
単なる OR ではないため(正規表現じゃ | は ORの意味)

これは文法のお約束であって、解せる解せないっていうもんじゃない


ってか、その書き方だと | が何と何をつないで OR にしているかが明確になって無くないかい?
763名無しさん@お腹いっぱい。:2014/03/10(月) 23:13:19.24 ID:6IxJkOPT0
うーむめんどくさいですね
Meryの正規表現ならこれでいいのに

あと&&じゃなくて||ですね。混乱した方いたらすみません
764名無しさん@お腹いっぱい。:2014/03/10(月) 23:26:35.88 ID:EFDyLp+G0
>>758-763
正規表現だとClassの複数指定が出来ないなど制限が有り、
#If系で使う場合Auto-executeセクションで全体の設定が変わってしまうので
シンプルではなくいろいろ考慮しなければいけないので正規表現は全くオススメできない。
765名無しさん@お腹いっぱい。:2014/03/10(月) 23:38:03.11 ID:VVzJPnIq0
常にRegExにしておけばいい
766名無しさん@お腹いっぱい。:2014/03/10(月) 23:44:14.44 ID:CZcJCat40
GroupAdd、ahk_groupでは駄目ですかね?
自分は何をグループ化したか見通しが悪くなるので使わないですけど。
(GroupAddはautoexecセクションに書かないと駄目なんですよね?)
767名無しさん@お腹いっぱい。:2014/03/10(月) 23:51:05.50 ID:EFDyLp+G0
>>764 言いたいことが書けていないので訂正します。

>>761のように指定が決まったいる場合は
正規表現でのパターンマッチは使わない方がいい
ということです。
768名無しさん@お腹いっぱい。:2014/03/10(月) 23:53:12.23 ID:1VcRPfJ30
GroupAdd だと論理和になるから本件に関しては合致しない
769名無しさん@お腹いっぱい。:2014/03/11(火) 12:10:33.43 ID:upMMzD180
>>758
みなさま、いろいろありがとうございます。

ahk_class #32770をフックするんだけど、このウィンドウタイトルだけは除外としたいので、
#IfWinActive, タイトル1|タイトル2 ahk_class #32770 だとちょっと違ってきます。

さらにマウ筋と共存させたく、ホットキーの定義内で条件ではなく、除外ウィンドウは#IfWinActiveのところで弾きたいです。

ホットキーに「~」とか入れても、AutoHotKeyキーで送ったキーからだと他のマウスジェスチャーアプリと相性が良くないようで…

#IfWinActive, ahk_class #32770 && #IfWinNotActive, Windows タスク マネージャーとやってもできなかったです
770名無しさん@お腹いっぱい。:2014/03/11(火) 15:42:15.24 ID:qDngZmO80
#IfWinActive, ^(?!Windows タスク マネージャー$)【TAB】ahk_class #32770

#If !WinActive()
771名無しさん@お腹いっぱい。:2014/03/11(火) 16:06:51.90 ID:upMMzD180
>>770
正規表現の否定を組み合わせればいいのですね!
知らなかった

ありがとうございました。
772名無しさん@お腹いっぱい。:2014/03/11(火) 18:40:39.17 ID:e+UzNNlW0
>>771
>#IfWinActive, ahk_class #32770 && #IfWinNotActive, Windows タスク マネージャーとやってもできなかったです
#If WinActive("ahk_class #32770") && !WinActive("Windows タスク マネージャー")

指定する物が変化しないなら自分も正規表現使うべきじゃないと思うがめんどくさいし。
変なところにTAB文字使うのは真似しない方がいいぞ、普通はインデントやコメント部分に使う。
773名無しさん@お腹いっぱい。:2014/03/11(火) 18:56:53.17 ID:hwYTIaFd0
そんな個人の好き嫌いでしかない話はどうでもいいよ
774名無しさん@お腹いっぱい。:2014/03/12(水) 00:21:33.18 ID:BrwEGDwb0
Send,の中に半角空白入れるのにIME.ahk使った場合動作重くなったりしませんか?
と聞こうとしてまずIME.ahkを見ようとしたらatwikiだった……
一瞬だけど開いちゃった……
775名無しさん@お腹いっぱい。:2014/03/12(水) 02:16:20.33 ID:i3u0Hrsx0
半角空白なら、Send,{ASC 32} でいけないかな

IME.ahkのある www6.atwiki.jpは流出サーバーには含まれておらず
今のとこウィルスや改ざんの事実も確認されてはいないようです
しばらくはアクセスは控えたほうがいいとは思いますが
一瞬開いたくらいなら大丈夫かと
776名無しさん@お腹いっぱい。:2014/03/12(水) 02:29:28.47 ID:BrwEGDwb0
>>775
ありがとうございます
半角空白じゃなくてSpaceキー扱いされてwikipeがうぃきぺに変換されました……
暫く待ちたいと思いますm(_ _)m
777名無しさん@お腹いっぱい。:2014/03/12(水) 04:06:08.34 ID:BrwEGDwb0
IMEのショートカットキーも使ってこれで何とかなりそうです
Send, {Home}amazon^o^n+{Space}{Enter}
^oが半角英数変換、^nが最初の文節のみを確定、+Spaceが半角空白を入力です
778名無しさん@お腹いっぱい。:2014/03/12(水) 06:18:33.53 ID:doX+1Mnv0
>>777
文字入力したいなら Clipboard に文字列入れて Send,^v
でいつもやってるがそれじゃダメかな?
779名無しさん@お腹いっぱい。:2014/03/12(水) 08:33:07.40 ID:i3u0Hrsx0
失礼、他の文字と一緒に送る前提だと変換扱いされちゃうのね
一応 IME.ahkも @wikiの外に上げときます。

IME.ahk最新版
http://www1.axfc.net/u/3192355.zip

動作は一文字打つごとに毎回IME制御だと効率は良くないかもしれないけど
頻度によりますがSendの前後でON/OFFするくらいならそう重くはないかと
780名無しさん@お腹いっぱい。:2014/03/12(水) 11:47:01.87 ID:toVXpcZD0
拡張子に対応する起動アプリケーションの設定をAutoHotKeyで変更する方法があれば教えていただけないでしょうか?

やはりレジストリ変更バッチツールとを起動する方法しかないのでしょうか?
781名無しさん@お腹いっぱい。:2014/03/12(水) 19:24:01.53 ID:doX+1Mnv0
>>780
レジストリ系のコマンドで直接書き換えればいいがレジストリの変更は自己責任でよろしく。
安全の為に動作確認するときは仮想OSなどでやったほうがいい。
自信が無いなら任意の専用ツール呼び出した方が確実。
ttp://ahkwiki.net/Commands_Category#reg
782名無しさん@お腹いっぱい。:2014/03/12(水) 19:26:36.11 ID:rDtngsqh0
>>781
その人他スレに移動して質問してるからスルーでいいよw
783名無しさん@お腹いっぱい。:2014/03/12(水) 19:33:09.77 ID:F8tU4hJY0
放り込んだファイルを拡張子に応じたアプリに渡すAHKスクリプト作っとくと便利
俺は拡張子じゃなくパスによって振り分けるのを使ってる
784名無しさん@お腹いっぱい。:2014/03/13(木) 22:57:51.01 ID:oAUicqkd0
GUI表示についてお尋ねします。
GuiをHIDE状態で起動する場合

Gui,Show
Gui,Hide

だと一瞬GUIが表示された後にHIDEされるのですが
これを完全に非表示状態で起動する事は出来ますでしょうか?
よろしくお願いします。
785名無しさん@お腹いっぱい。:2014/03/13(木) 23:10:25.79 ID:Ek89d3v70
Gui,Showのオプションにお望みのものがあるよ
wiki参照
786名無しさん@お腹いっぱい。:2014/03/13(木) 23:21:41.47 ID:oAUicqkd0
>>785
早速の返信有難うございます。
NoActivateオプションを追加していると
Gui, Show, Hide NoActivate
Hideオプションが効かないみたいです。
787名無しさん@お腹いっぱい。:2014/03/14(金) 00:22:26.56 ID:SYwSN8150
必要になったときに、Show するだけなんじゃ。。。
788名無しさん@お腹いっぱい。:2014/03/14(金) 00:25:13.03 ID:vdddUyAJ0
情報小出しの末路はこんなもんだ
789名無しさん@お腹いっぱい。:2014/03/14(金) 00:38:58.89 ID:Xz1ylAyu0
まあ、条件後出しの上にまだ情報出し惜しみしてるしスルーされるわな
790名無しさん@お腹いっぱい。:2014/03/14(金) 00:39:58.87 ID:0edS7YVs0
Gui, show, hide
だけでいいじゃん。そもそもが何のためなのか分からんからなんともいえんけど。
これでGui非表示のままそのGuiの座標やら大きさやらを得ることはできるよ
791名無しさん@お腹いっぱい。:2014/03/14(金) 00:43:48.57 ID:jn6cumi80
Gui, Show, Hideだけで解決しました。
どうもお騒がせしました。
792名無しさん@お腹いっぱい。:2014/03/14(金) 01:05:19.19 ID:0edS7YVs0
いやいやいいっすよ
別にそんなボロクソに言われるほど情報後出しでも、大して小出しでもなかったし
793名無しさん@お腹いっぱい。:2014/03/14(金) 08:19:55.64 ID:x9Y2zCn60
まあhide起動が望みならフォーカス奪いたくないと思うのは当然だろうし
これを条件後出しって責めるのはさすがにな
794名無しさん@お腹いっぱい。:2014/03/14(金) 19:57:15.10 ID:NvmuZg0/0
このスレというかこの板だいたいそうみたいだけど
普通に質問してる人いてもポツポツしかレス付かないのに
ちょっと叩きどころがあると見ると答える気もない奴が一斉にワラワラ涌いてくるのな
795名無しさん@お腹いっぱい。:2014/03/14(金) 20:06:36.99 ID:SaliyrgR0
別に質問スレじゃないんだから回答があって当然とか、答える気がないならレスすんなみたいなのはナンセンス
まともな質問ならまともなレスがつく
796名無しさん@お腹いっぱい。:2014/03/14(金) 20:13:51.13 ID:NvmuZg0/0
煽る気しかない奴はレスしなくていい
何スレだろうと同じ
797名無しさん@お腹いっぱい。:2014/03/14(金) 21:37:11.16 ID:x9Y2zCn60
教えて君が湧きやすいスレは教育的指導も必要だとは思うよ
複数の人間に叩かれることで己の言動に問題があったことに気がつかせるのはありだ

煽りや指摘が1、2レスついたくらいじゃまっとうな返しなのか理不尽に叩かれてるのか
当人にはわからなかったりするからね
798名無しさん@お腹いっぱい。:2014/03/14(金) 21:50:40.99 ID:riUceAwV0
なんかおっさん臭くて笑ってしまった
799名無しさん@お腹いっぱい。:2014/03/14(金) 22:34:26.63 ID:c6xp/OtK0
>>795=厨2
>>796=高2
>>797=大2
800名無しさん@お腹いっぱい。:2014/03/14(金) 23:14:21.56 ID:kTAAiJ0x0
>>794=796
お前のレス煽りにしか見えないんだけど
801名無しさん@お腹いっぱい。:2014/03/15(土) 02:55:51.35 ID:le3CkoW10
>>785=>>790だけど、
質問者に後出し要素なんて皆無だったんだけど文句言ってる奴は何が気に食わなかったんだろ
流れ的には
>>785の回答見てオプションの存在を知る
>>786でそのオプション試したけどうまくいかないという旨の質問
なんだが。
情報小出しも何もやりたいことは最初に全部言ってるし。
何のためにそれがやりたいのかは書いてなかったけど
802名無しさん@お腹いっぱい。:2014/03/15(土) 08:55:40.71 ID:PUW2yV160
今回の質問者に関しては煽ってる側がアホでFA

794以降はそっから離れてスレ自治的な話
答えらんないやつは黙ってろな流れはさすがにちょっとね
803名無しさん@お腹いっぱい。:2014/03/15(土) 11:54:57.50 ID:E3SkijsT0
私の発言が原因で荒れる事になってしまい、申し訳なく思っております。
以後気を付けます。
804名無しさん@お腹いっぱい。:2014/03/15(土) 15:38:12.12 ID:F5y++smt0
AutoHotKeyでAlt+Tabを別のキーにって変更できますか?
例えばCtrl+TABに変更とか
805名無しさん@お腹いっぱい。:2014/03/15(土) 19:58:51.12 ID:U3/Q1Xyd0
Windows 8.1 Pro x64 + Java 7 u51 x64 で Minecraft を動かしています。
遊びすぎてしまうので、常駐 AutohotKey スクリプトでタイマーかけて Minecraft を
閉じたいと思っています。

常駐 AHK スクリプトは管理者権限で走らせています。
あらかじめ javaw.exe の ahk_pid を取得しておき
時間がきたら WinClose, ahk_pid %PID% で閉じようとしています。
しかしこれがうまくいきません。次に何をしらべるべきか、
ご指南いただけないでしょうか。
806名無しさん@お腹いっぱい。:2014/03/15(土) 21:40:16.23 ID:+gBxsOQH0
>>804
その辺のことは大抵のことはできる。

>>805
複数起動しないならタイトル、ahk_class、ahk_exeで指定。
対象のウインドウをWindow Spyでahk_class調べる。

順に試して終了できるか試す。
WinClose
PostMessage, 0x112, 0xF060,,, WinTitle
WinKill

文法自体間違っている場合もあるので
先にメモ帳や電卓あたりを終了できるか試そう。
807名無しさん@お腹いっぱい。:2014/03/17(月) 08:48:40.18 ID:P+5isYZV0
矢印キーでその方向にマウスカーソルを移動し(移動速度は変数で指定)、ESCキーで止めるには
どのようにすればいいでしょうか?
808名無しさん@お腹いっぱい。:2014/03/17(月) 09:16:39.86 ID:wPCtjVlf0
>>807
パッと思いついたのはこんな感じかな
#if !hoge
right::
hoge:=1
mousegetpos,x,y
while hoge
{
x+=5
mousemove,%x%,%y%
}
return
#if hoge
esc::
hoge:=
return
#if
809名無しさん@お腹いっぱい。:2014/03/17(月) 09:46:07.66 ID:P+5isYZV0
>>808
ありがとうございます。
うまく動作しました。
810名無しさん@お腹いっぱい。:2014/03/17(月) 13:30:41.43 ID:u61/ObhI0
LINEとかのアプリケーションで半透明が効かないんですけど、このウィンドウには適用できないのでしょうか?
811名無しさん@お腹いっぱい。:2014/03/17(月) 13:49:05.60 ID:fgUle1iS0
動作確認系の質問は環境書かないと答え得られんよ

LINEとかのアプリケーション使ってないんで知らんけど
LINEとかじゃないアプリケーションでの透過確認はしたの?
812名無しさん@お腹いっぱい。:2014/03/17(月) 14:20:48.42 ID:DQnBqE4+0
FileMoveDirコマンドを使って
「D:\hoge」フォルダを「D:\hoge\hoge」フォルダに移動させたい
(任意のフォルダを同名フォルダの1階層下に送りたい)のですが

FileMoveDir, D:\hoge, D:\hoge\hoge

としても移動されません
うまく移動させるにはどうすればよいでしょうか?
813名無しさん@お腹いっぱい。:2014/03/17(月) 14:28:59.44 ID:lWLFiiXl0
エクスプローラ上でやるのと同じようにやればいい
814名無しさん@お腹いっぱい。:2014/03/17(月) 15:21:34.72 ID:DC9QZ1hS0
MoveじゃなくてCopyだろ
815名無しさん@お腹いっぱい。:2014/03/17(月) 16:13:21.06 ID:46Af9U4L0
元フォルダ(「D:\hoge」)配下にファイルだのフォルダなどが有る場合、
単純なcopyだと余計なファイルやフォルダの削除処理が必要なので・・・

※大袈裟で効率悪いかもしれないが・・・・・
1-別名フォルダ「(例)D:\hoge1」を作る
2-そのフォルダに元フォルダ「D:\hoge」をコピーする(→「D:\hoge1\hoge」)
3-フォルダ名「hoge1」を「hoge」に変更する
4-元フォルダ「D:\hoge」をゴミ箱に入れる(保険として)

単純に複製したいなら、>>814で良いと思う
816815:2014/03/17(月) 16:18:07.26 ID:46Af9U4L0
>>815を訂正
3と4の順番が逆で、正しくは
3-元フォルダ「D:\hoge」をゴミ箱に入れる(保険として)
4-フォルダ名「hoge1」を「hoge」に変更する
817名無しさん@お腹いっぱい。:2014/03/17(月) 17:11:02.56 ID:fgUle1iS0
同一ドライブの移動とコピーじゃ速度全然違う、わざわざコピーする必要なくね?

;親子関係だとFileMoveDirでの単純移動はできないみたいなのでファイル移動にする
FileMove,F:\hoge\*, F:\hoge\hoge

;サブフォルダがある場合はfile-loopで回して移動
loop,F:\hoge\*,2
{
  if (A_LoopFileFullPath <> "hoge")
    FileMoveDir, %A_LoopFileFullPath%, F:\hoge\hoge,1
}
818名無しさん@お腹いっぱい。:2014/03/17(月) 17:12:39.80 ID:fgUle1iS0
あ、テストパスそのまま貼っちゃった。F:\はD:\に読み換えて
あと全角インデントは半角に直してよろしく
819名無しさん@お腹いっぱい。:2014/03/18(火) 13:51:10.53 ID:Li6xUWAB0
マウス下が非アクティブのウィンドウでも、マウススクロールでウィンドウをアクティブにしてスクロールさせたいのですが、
コントロール別に対象のサブウィンドウにも対応させるため、ControlClickとWheelUpを使っています。

うまく動いているのですが、Spyでみてもコントロールが表示されないソフトだと上手く動かないので何とかしたいです。

今はしようがないので、Send {LButton}してSend {WheelUp}してます。
この方法以外でなにか手はないでしょうか?
820名無しさん@お腹いっぱい。:2014/03/18(火) 15:23:45.31 ID:Mmti5WeV0
その方法だとなにか支障がでたりするの?

非アクティブのままスクロールしたいならホイールリダイレクト系のスクリプト組む必要あるけど
アクティブ後スクロールでいいんだよね?
ならMouseClick後にホイールするだけだし特に問題なさそうに見えるけど
821名無しさん@お腹いっぱい。:2014/03/18(火) 16:46:42.40 ID:I74zEsZK0
>>819
非アクティブで操作なら話が分かるのだか、まあ間違えかもしれないから一応書いておく。
取得できないならControl系での直接指定はあきらめるしかない。
822名無しさん@お腹いっぱい。:2014/03/18(火) 16:47:12.00 ID:Li6xUWAB0
>>820
すみません。
細かく詳しくないのでホイールリダイレクト系だと思いますが、winActiveしても、マウス下のコントロールにスクロールを送れないので
そのままWheelUpすると、カースルがあるコントロールのウィンドウがスクロールされます。

これだとマウス下のコントロールがスクロールしないので困ってます。
823名無しさん@お腹いっぱい。:2014/03/18(火) 18:24:22.51 ID:Mmti5WeV0
いや、Send {LButton}してSend {WheelUp}では問題ないんだよね?
MouseClick相当でマウス下コントロールにフォーカス当てる方法が嫌な理由がわからなかったので

ホイールリダイレクトやろうとすると色々考慮せにゃならんことが出てくるのでコード長くなるよ
一応参考になりそうなとこ置いとくけど、2行で済むなら今のやり方のほうが簡単だと思う

WheelAccel
http://mobitan.org/ahk/WheelAccel.ahk
WheelScroll U64版
http://www1.axfc.net/u/3197627.zip
TrackWheel
https://sites.google.com/site/agkh6mze/trackwheel
824名無しさん@お腹いっぱい。:2014/03/21(金) 23:25:32.86 ID:Hqv8j2uU0
autohotkeyでパイプ処理のようなことはできないのでしょうか
文字列を他のソフトで加工してから再度autohotkeyで処理するみたいなことをしたいです
825名無しさん@お腹いっぱい。:2014/03/22(土) 20:45:41.82 ID:hALgY1kQ0
>>824
ahkで文字列をテンポラリファイルに書き出して、それを他のソフトに処理させて
他のソフトの出力をテンポラリに書き出してもらって、他のソフトが終了したら、ahkでテンポラリから
その出力を読みだせばいいんでないの?

windows(MSDOS?)のパイプ処理をそのまま書いただけだけど、他のソフトってのが対応してるなら
問題なく動くでしょ。

〜できますか?ってのは「できます」って答えるだけでいいんじゃないかって気もしてきたよ
826名無しさん@お腹いっぱい。:2014/03/22(土) 20:53:24.61 ID:ROOJcSon0
できますでいいんだよ
それすら答える気起きなかったけど
827名無しさん@お腹いっぱい。:2014/03/22(土) 22:21:17.50 ID:0xVv1pUF0
824です
他のソフトウェアの受け渡しをどうすればいいのか分かりませんでしたが
ソフトウェアを監視するようにすればできますね
ありがとうございます失礼しました
828名無しさん@お腹いっぱい。:2014/03/23(日) 16:20:30.36 ID:u57hUf+20
Spyツールのもうちょっと使いやすいの無いですか
Shift-Alt-Tabしてもfreeze display出来ない…

ウィンドウ一覧から絞り込んでtitle&classをパパっとコピーできる外部ツールあったら教えて下さい
829名無しさん@お腹いっぱい。:2014/03/23(日) 17:59:09.93 ID:xFId55lr0
ちょっと探してみたけど、WinSpy++が要望に近い気がする

#c::WinGetText, Clipboard, ahk_class AU3Reveal
とかでAHKからWindow Spyの内容をホットキーでコピーするもの手軽でいいんじゃないかな

まぁ、AHKで自作するのが一番(ry
830名無しさん@お腹いっぱい。:2014/03/23(日) 18:45:26.85 ID:PIf4CkH60
>>828
AU3_Spy.exeのバージョンアップ版(?)が欲しいなら、以下のページからAutoIt v3の旧バージョンに同梱されてる。
AutoIt のバージョンによって微妙に違ってたりするから自分で好きなの使ったらいい。(最近のはかなり違ってるが)

AutoIt Previous Versions
http://www.autoitscript.com/autoit3/files/archive/autoit/

「title&classをパパっとコピー」に限定するなら>>829の言うとおりAHKで自作するのが一番(融通が利くからね)
831名無しさん@お腹いっぱい。:2014/03/24(月) 08:12:08.21 ID:ncYuyyvY0
右クリックやアプリケーションキーを押すとメニューがポップアップしますが、これが出ているか
どうかを知る方法はありますでしょうか?

#If WinActive( "ahk_class hoge" ) and (ポップアップメニューが出ていない)
s::Send, hoge
#if
832名無しさん@お腹いっぱい。:2014/03/24(月) 12:50:49.09 ID:/OFHkf1r0
>>831
ポップアップメニューが出ていない > if ! WinExist("ahk_class #32768")
ですかね?
833名無しさん@お腹いっぱい。:2014/03/24(月) 16:13:39.66 ID:Q5mOH6qd0
>>831
MouseGetPosでメニューのウィンドウハンドル調べられる。
Window Spyだとなぜか無理・・・。
834名無しさん@お腹いっぱい。:2014/03/25(火) 09:18:13.53 ID:QMnWLJjx0
>>832
>>833

>>832さんの方法でうまくいっているようです。
唯一Chromeでは、>>832さんの方法ではうまく動作していないようです。

>>833さんの方法でウィンドウハンドルを取得すると、ウィンドウハンドルがやる度に変化していました。
とりあえず、Chromeは仕方がないとします。
835名無しさん@お腹いっぱい。:2014/03/25(火) 10:33:19.43 ID:sZ7dmSnp0
ハンドルは固定じゃないよ
ハンドルからWinGetClassでクラス名取得して調べたらって意味かと

Chromeメニューのクラス名もわかれば例外処理対策できるでしょ
836名無しさん@お腹いっぱい。:2014/03/25(火) 11:13:33.85 ID:QMnWLJjx0
>>835
なるほど、私の理解不足でした。
試した結果、Chromeではクラス名が、Chrome_WidgetWin_2 でした。
そして、思い通りの動作ができました。

>>832さん、>>833さん、>>835さん、ありがとうございました。
837名無しさん@お腹いっぱい。:2014/03/25(火) 16:42:29.57 ID:+N64w4Gv0
WinMoveでサイズ変更できないウィンドウがあるのですが
WinMove以外の方法でサイズ変更って出来ますか?
838名無しさん@お腹いっぱい。:2014/03/25(火) 20:58:41.90 ID:S65PfreQ0
>>836
一応、Firefoxとかも違うから。
何にせよ調べる手間惜しまなきゃ同じ要領でいける
839名無しさん@お腹いっぱい。:2014/03/25(火) 21:02:17.15 ID:S65PfreQ0
>>837

・ 管理者特権(UAC管理下)のウィンドウは操作できない。
 同じく管理者で起動したスクリプトからは操作できる

・ そのアプリの処理で常にウィンドウサイズ指定してたら手がつけられないのであきらめ。
  WinSet, Region で矩形切り出しっ手方法も無くはないがお勧めしない
840名無しさん@お腹いっぱい。:2014/03/25(火) 23:17:18.51 ID:KRW55RQT0
ウインドウ監視などでウインドウを特定する方法として
ウインドウタイトル
ウインドウクラス
ウインドウ内のテキスト
などあると思うんですが、その中で「ウインドウクラス」を持たないウインドウって存在するのでしょうか?
存在するのかしないのか分からないので質問してもました。
841名無しさん@お腹いっぱい。:2014/03/25(火) 23:38:59.79 ID:KRW55RQT0
すいません。
よく考えてみたらスレ違いの質問でした。 >>840
842名無しさん@お腹いっぱい。:2014/03/25(火) 23:53:37.18 ID:sZ7dmSnp0
クラスがないというのはないと思うが
controlのクラス名が動的に変動するソフトは見たことあるな
843名無しさん@お腹いっぱい。:2014/03/25(火) 23:58:59.66 ID:KRW55RQT0
>>842
スレ違いの質問なのに答えていただき、ありがとうございました。
844名無しさん@お腹いっぱい。:2014/03/26(水) 00:13:22.81 ID:8GdYwriA0
ファイル名で指定ディレクトリ以下を検索してパスを取得するってどのコマンド使えばいいんでしょ
Loop(files)ですか?
845名無しさん@お腹いっぱい。:2014/03/26(水) 00:20:29.00 ID:liA0CQ200
>>839
Winsetでスタイル変えた後にWinmoveしたりもしてみましたが、結局出来ませんでした
返信有難うございました
846名無しさん@お腹いっぱい。:2014/03/26(水) 00:35:23.14 ID:8GdYwriA0
>>844補足ですが、指定ディレクトリ以下と言うのは何階層か下までが対象です
Loop, C:\TargetDir\*\hogehoge.txt,, 1としてもC:\TargetDir\Sub\hogehoge.txtすらヒットしませんでした
847名無しさん@お腹いっぱい。:2014/03/26(水) 00:55:38.65 ID:ICU6Xvet0
Loop(files)とA_LoopFileNameとA_LoopFileFullPathとIfInStringあたり
848名無しさん@お腹いっぱい。:2014/03/26(水) 01:08:19.89 ID:X7/VzHeJ0
>>846
ワイルドカードの指定が間違っている。
後は自分でいろいろ試して解決してほしい。
849名無しさん@お腹いっぱい。:2014/03/26(水) 02:16:09.16 ID:8GdYwriA0
>>848
間違えてるのは\*\の部分ですよね。\を減らしたりずらしたりしましたがなんとも
ワイルドカードについてググってもfor使って下まで何回も繰り返せ、とかunixのfindとxargsの合わせ技とかしか見つかりませんでした……
>>847
A_LoopFileNaneとIfInStringはどこで使うのですか?

一応Everythingに任せることで代用できたんですが醜いです。ワイルドカードの正しい使い方教えてもらえるとありがたいです
850名無しさん@お腹いっぱい。:2014/03/26(水) 02:31:34.99 ID:Pjy8TS1E0
>>849
Loop (ファイル検索) - AutoHotkey Wiki
http://ahkwiki.net/LoopFile
の、「Parameters」をもう一度読み返せば何が間違いかハッキリするよ。
がんばれ。
851名無しさん@お腹いっぱい。:2014/03/26(水) 07:58:08.13 ID:RdIJ8x5m0
>>838
なるほど、勉強になりました。
852名無しさん@お腹いっぱい。:2014/03/26(水) 13:56:31.21 ID:4KL9EwDj0
プロセスグループを作りたいと思ったのですが、Wiki見てもそれらしい事が記載されていません。
AHKではプロセスグループはサポートされていますか?。
853名無しさん@お腹いっぱい。:2014/03/26(水) 14:10:57.29 ID:X7/VzHeJ0
>>852
これのことかな?
ttp://ahkwiki.net/GroupAdd
854名無しさん@お腹いっぱい。:2014/03/26(水) 15:08:38.33 ID:4KL9EwDj0
>>853
ありがとうございます
これはウインドウグループなのでプロセスグループではないのです。
855名無しさん@お腹いっぱい。:2014/03/26(水) 15:20:47.09 ID:miXxPB9L0
>>854
ahk_exeではいかんの?
856名無しさん@お腹いっぱい。:2014/03/26(水) 15:47:31.82 ID:miXxPB9L0
>>855は下みたいにGroupAddでahk_exeを使ってプロセス名で指定するって意味ね

GroupAdd, note, ahk_exe notepad.exe
857名無しさん@お腹いっぱい。:2014/03/26(水) 16:16:20.27 ID:4KL9EwDj0
>>856
おっ!これは!
ちょっと今試してみます!
858名無しさん@お腹いっぱい。:2014/03/26(水) 16:33:21.72 ID:4KL9EwDj0
すみません、サンプル作成したのですが、プロセスが終了しません。
ヘルプお願いします。

GroupAdd, process, ahk_exe hage.exe
GroupAdd, process, ahk_exe hoge.exe
GroupAdd, process, ahk_exe homo.exe
GroupAdd, process, ahk_exe home.exe

c::Process, Close, ahk_group process
859名無しさん@お腹いっぱい。:2014/03/26(水) 16:36:49.65 ID:lxaMOTGc0
試行錯誤って言葉
860名無しさん@お腹いっぱい。:2014/03/26(水) 16:45:26.64 ID:4KL9EwDj0
>>859
何とか試行錯誤した結果ですが
これが正解でよろしいでしょうか?
よろしくお願いします

c::WinClose, ahk_group process
861名無しさん@お腹いっぱい。:2014/03/26(水) 16:51:19.66 ID:4KL9EwDj0
すみません>>860は忘れてください。
Winloseだと、対象プロセスがビジー状態だと、ホットキーを押しても直ぐに終了しないです。
Proess,Closeでもう少しがんばってみます。
862名無しさん@お腹いっぱい。:2014/03/26(水) 16:51:33.54 ID:20FfVUZQ0
>>860
AhkTaskMan 導入した方が早いんじゃね
ttps://sites.google.com/site/agkh6mze/scripts#TOC-AhkTaskMan
863名無しさん@お腹いっぱい。:2014/03/26(水) 16:52:54.75 ID:miXxPB9L0
>>861
Processコマンドにはウインドウ指定は使えない
Loopで回すしかない

ProcessList = notepad.exe,wordpad.exe,cmd.exe
Loop, Parse, ProcessList, `,
{
Process, Close, %A_LoopField%
}
864名無しさん@お腹いっぱい。:2014/03/26(水) 17:01:09.55 ID:X7/VzHeJ0
>>861
WinKill...
もう少し解説やどんなコマンドがあるかよく見たら?
865名無しさん@お腹いっぱい。:2014/03/26(水) 17:11:27.40 ID:4KL9EwDj0
>>862>>863
ありがとうございます。試してみます

>>864
ありがとうございます。
Winkillでも試してみましたが、対象プロセスがビジー状態だと、直ぐに終了しないようです。
もう少しWikiを見てみます。
866名無しさん@お腹いっぱい。:2014/03/26(水) 17:59:22.66 ID:4KL9EwDj0
>>863
今確認してみましたが、自分の望んだ動作を実現できました。
有難うございました。
867名無しさん@お腹いっぱい。:2014/03/28(金) 23:14:00.23 ID:bnkv553u0
1キーを押した後に2キーを押して、更に1キーを押すと1の処理に戻りません
ご教示願います

スクリプトかこんな感じです
1::
Loop
{
処理
}
return

2::
Loop
{
処理
}
return
868名無しさん@お腹いっぱい。:2014/03/28(金) 23:29:36.10 ID:ir4KBC9d0
>>867
breakしたらどう?一応マルチスレッドもどきなんだからへんなとこでひっかかってるんじゃね
869名無しさん@お腹いっぱい。:2014/03/29(土) 00:22:29.50 ID:hgIJ64vY0
2の部分コメントアウトして 1だけ2回押してどうなるか試してみ
2キーの記述及び操作は関係なくて1の中で抜けてこられず永久ループになってると予想
870名無しさん@お腹いっぱい。:2014/03/29(土) 03:18:25.40 ID:OTHQqLaL0
>>868
>>869
返信有難うございます。
色々試してみます。
871名無しさん@お腹いっぱい。:2014/03/30(日) 16:03:25.31 ID:bsItNznR0
小遣い帳をtxtで付けてたけど表計算ソフト使ってみたくてCalc試したら糞重いし関数覚えるのめんどい
簡単な足し算ならAHKで事足りるかな
872名無しさん@お腹いっぱい。:2014/03/30(日) 16:17:22.47 ID:kbIc6WHE0
やっぱ適材適所ってことは考えたほうがいいと思うよ・・・
googleのとかどこか微妙なoffice2010とか。
873名無しさん@お腹いっぱい。:2014/03/30(日) 16:44:11.39 ID:+eWxJdbK0
表計算ソフトが重くて嫌なら、CSVエディタ使えばいいんじゃね
874名無しさん@お腹いっぱい。:2014/03/30(日) 17:03:49.74 ID:bsItNznR0
テキストから次の行を検索し(\d+)を合計してMsgBox,%SUM%するだけなんだけども
^02月 \d\d日 ↓ (\d+)円\t酒\t.+?\tやまや$
875名無しさん@お腹いっぱい。:2014/03/30(日) 17:17:36.42 ID:kbIc6WHE0
それこそ、awkとかperlとかその辺のフィルター言語の仕事だと思うんだけど。
(窓だと何を使うんだろ。なんかあるのかな)

今あるテキストデータをもとに何かしようってのなら、表計算系は不便だね。
AHKで作れるだろうけど、ハンマーの柄で布団叩きしてるような違和感が残るw
876名無しさん@お腹いっぱい。:2014/03/30(日) 18:46:25.58 ID:bsItNznR0
すみません、添削お願いします
↓のようにしてみたらマッチしない行を無視せずSUMに月の値を足してしまうんですが……例えば8月なら8を

SUM =
Loop, Read, C:\Apps\Dropbox\小遣い帳\2013年.txt
 {
 VAL := RegExReplace(A_LoopReadLine, "^06月 30日 ↓ (\d+?)円\t酒\t.+?$", "$1")
 SUM += VAL
 MsgBox, %SUM%円
 }
877名無しさん@お腹いっぱい。:2014/03/30(日) 19:13:26.53 ID:kbIc6WHE0
>>876
マッチしない時のVALを表示させればわかると思うよ
$1の寿命どこまでなんだろ。
878名無しさん@お腹いっぱい。:2014/03/30(日) 19:28:50.09 ID:bsItNznR0
>>877
FileAppend, %VAL%`n, C:\〜〜〜\a.txt
をSUM += VALの下に挿れたら
マッチする行は意図通りの値(金額)なんですが
マッチしない行は読み込んだ行がそのままVALになってました
それでいてマッチしない行から月の値、すなわち^\d\dにあたる値がSUMに足されてるのは若輩の身には全く訳がわかりませんorz
879名無しさん@お腹いっぱい。:2014/03/30(日) 20:19:43.79 ID:gLZ4VHmz0
小遣い帳の書式がどんなのかわからんけど
1行に\d+円が2つ以上存在しないならこれでどう?
\d+円の前後に条件追加しないと誤爆発生するなら適宜修正を

SUM =
Loop, Read, C:\Apps\Dropbox\小遣い帳\2013年.txt
{
 If RegExMatch(A_LoopReadLine,"(\d+)円",VAL)
 {
  SUM += VAL1
  MsgBox, %SUM%円
 }
}
880名無しさん@お腹いっぱい。:2014/03/30(日) 20:23:58.86 ID:77TDN++00
>>878
RegExReplaceの説明をじっくり読んで欲しいとしか・・・。

マッチした場合には読み込んだ一行の"^06月 30日 ↓ (\d+?)円\t酒\t.+?$"の部分が
(\d+?)←$1に代入される文字列 に置換され、置換された一行が返される。

マッチしない場合は(置換されるわけもないので)そのままの文字列が返される。

のです。
で、マッチしなかった場合には
8月1日... みたいな感じなんだろうけど、文字列の先頭が数字だから数字の部分だけ数字と
して認識しているのでしょう。多分、C言語のatof辺りを参考にしてるのだと思います。
881名無しさん@お腹いっぱい。:2014/03/30(日) 20:27:18.56 ID:IEJuq2t60
RegExReplaceの返り値はマッチしようがしまいが文字列
文字列を数値として演算しようとすると、先頭から数値として扱える部分だけ使われる
なんでかは知らん
882名無しさん@お腹いっぱい。:2014/03/30(日) 20:28:04.76 ID:IEJuq2t60
ド被り
883名無しさん@お腹いっぱい。:2014/03/30(日) 20:33:21.35 ID:77TDN++00
>>880
> (\d+?)←$1に代入される文字列 に置換され、置換された一行が返される。
の置換された一行ってのは、具体的には(\d+?)、金額の所ね。

atofじゃなくて、atoi()を例に出したかったのです。

修正はここまでくれば簡単だと思いますが、RegExReplaceへの引数で、置換した数
を返り値として受け取ることができます。それを使えば置換したかどうかをチェックするこ
ともできます。
884名無しさん@お腹いっぱい。:2014/03/30(日) 20:52:46.55 ID:bsItNznR0
>>879
あっさり解決しました、多謝
Matchの方だったんですね。かなり前からマッチした位置しか返さないと思って見てませんでした……
>>881
簡潔にまとめていただきありがとうございます
未だに流行らせるページを参照してるんですがJpとかWikiとか見たほうがいいんですかね
>>882
すみません、私には何ステップか早い話のようです>atoi
885名無しさん@お腹いっぱい。:2014/03/31(月) 03:17:57.57 ID:t/5tUObD0
GUI上のテキストを任意のキーを押下する毎にリフレッシュしたいのですが
この場合はGuiControlでRedrawすれば良いのですか?
試してみたものの、どうも上手くいきません。
お知恵を貸して下さい、よろしくおねがいです。
886名無しさん@お腹いっぱい。:2014/03/31(月) 03:34:57.34 ID:xf/g5nWk0
>>885
リフレッシュというのが何を意味しているのか分からないが適当に答えてみる。

再描写 WinSet
コントロール内容変更 GuiControl,, ControlID, 任意のテキスト(空にしたいならなにも書かない)
887名無しさん@お腹いっぱい。:2014/04/01(火) 23:52:14.74 ID:V1eWKUOg0
>>886
返信遅れてごめんなさい。
数日間試行錯誤の結果、たった今GuiControlで出来ました。
有難うございました。
でも僕にはautohotkeyは難しいです。
888名無しさん@お腹いっぱい。:2014/04/01(火) 23:53:47.71 ID:V1eWKUOg0
あ、数日も経過していませんでした。
随分と長く感じたんですけど・・・
889名無しさん@お腹いっぱい。:2014/04/02(水) 22:46:39.75 ID:3byjayr60
Synaptics のタッチパッドを制御している人いる?

Controlling Synaptics Touchpad using COM APIでググると出てくるページの
の最後の方に書かれてるスクリプトを参考にやってみたけど、タッチパッドからの反応(パケット)が
最初の2〜3回は来るけど、そのあとだんまり。
AHK_L 32, 64 両方試してみたんだけど。ちなみにThumbRemapは問題なく動いてるし、c# で試しにCOMをたたいてみると
890名無しさん@お腹いっぱい。:2014/04/02(水) 22:57:26.39 ID:7jbGRWP+0
>>889
たまたま以前から気になってた内容なので伺うんだけど、
ThumbRemap、AHK_L x64 では動かないですよね?
891名無しさん@お腹いっぱい。:2014/04/02(水) 23:00:29.58 ID:G5RNP3J40
NewOSM.ahkダウンロードしたんですがこれってマウス移動設定の仕方どうするんでしょう……
892名無しさん@お腹いっぱい。:2014/04/02(水) 23:30:04.98 ID:UVxu5c0Y0
こんな感じで処理をしたいのですが、ホットキーを押しても処理が終了しません
どうすれば良いでしょうか?
よろしくお願いします

1::
IfWinExist, hoge
{
exitapp
}

Gui, Add, Text, center x4 y4, hoge
Gui, Show, w500 y500, hoge

Loop
{
msgbox, 処理
}
return
893名無しさん@お腹いっぱい。:2014/04/02(水) 23:34:52.24 ID:MMMInf070
>>891
OSMって、ワンショットモディファイヤ のことですよ
使ってないけど、見た感じマウスキーのような動かし方(を求めていると勝手に想像)はできないんじゃない
エディタの上下左右の移動のようなのはできると思うけど
マウスキー的なスクリプトは、Wikiにサンプルコードがある。「キーボードでマウス操作」ってやつ
894名無しさん@お腹いっぱい。:2014/04/03(木) 00:28:00.59 ID:T1vsTnQw0
>>892
処理終了前に同一スレッドは実行されない。
SetTimerで別スレッドとして処理すればいい。
895名無しさん@お腹いっぱい。:2014/04/03(木) 09:40:36.72 ID:TIvMHg+c0
>>889
最後ちょっと文書が切れちゃったけど、c# でCOMたたく分には問題なく
タッチパッドの反応が来るんだけど、AHK_Lだと反応が途切れちゃうんだよなぁ。

>>890
ThumbRemap 相変わらず AHK_L x64 だめですね。
896名無しさん@お腹いっぱい。:2014/04/03(木) 12:12:03.93 ID:vn88tn3N0
元管理人さんのソースはアドレス直値叩きまくってるから修正しづらいんだよな
ThumbRemapはコード量は短いからバッファの構造がわかれば直しの手間は少なさそうだが
897名無しさん@お腹いっぱい。:2014/04/03(木) 12:18:07.32 ID:lSbykYRi0
>>891
アップローダーにあるMousemove+ってファイル落としてラベル書いて指定すれば行ける
898名無しさん@お腹いっぱい。:2014/04/04(金) 12:03:29.49 ID:rKzqYgrS0
以下のスクリプトで青空文庫のテキストを対象に Google 検索を行っているのですが、変数の前後に半角の二重引用符(")を挿入するにはどうしたらよいのでしょうか。
----------------ここから------------------
InputBox, query, Google 検索, , , 300, 110
If ErrorLevel <> 0
{
WinClose
} Else {
url := "https://www.google.com/search?q=" query " site:aozora.gr.jp"
Run, % url
}
Return
----------------ここまで------------------
Google 検索では、検索したいキーワードの前後に二重引用符(")をつけると、入力したキーワードの順番で完全一致するフレーズがヒットするので検索結果を絞り込むことができます。
そこで変数 query の前後に二重引用符(")をつけたいのですが、試行錯誤してもうまくいきません。
まず、以下のように単純に " を加えると当然のことながら query が変数ではなく文字列になってしまい駄目でした。
----------------ここから------------------
url := "https://www.google.com/search?q=" "query" " site:aozora.gr.jp"
----------------ここまで------------------
次に、エスケープが必要なのかと思い、以下のようにしてみましたが、実行するとやはり「query」という文字列が検索されてしまいます。
----------------ここから------------------
url := "https://www.google.com/search?q=`"" query "`" site:aozora.gr.jp"
----------------ここまで------------------
そこで、Clipboard を使って、次のようにしてみました。
----------------ここから------------------
Clipboard = https://www.google.com/search?q="query"
url := Clipboard
Run, %url%
----------------ここまで------------------
これを実行するとやはり「query」という文字列が検索されてしまいます。
どなたかお知恵を拝借できれば幸いです。
899名無しさん@お腹いっぱい。:2014/04/04(金) 13:08:21.19 ID:FSzlsoQq0
スクリプトの記述に問題があるわけじゃないというか、
変数urlの中身を見てみたり(MsgBox, %url%)
ファイル名を指定して実行で http://www.google.co.jp/search?q="hoge"
とかやってみるとどこで意図しないことが起きてるのかわかるよ

結論は、%22
900名無しさん@お腹いっぱい。:2014/04/04(金) 14:25:49.92 ID:rKzqYgrS0
>899
できました!
引用符はエスケープ・シーケンス(%22)で指定すればよいのですね。下のように書き換えたところ望み通りに動きました。
----------------ここから------------------
url := "https://www.google.com/search?q=%22" query "%22 site:aozora.gr.jp"
----------------ここまで------------------
これで作業がぐんとはかどります。素早い回答をどうもありがとう!
901名無しさん@お腹いっぱい。:2014/04/04(金) 16:29:58.72 ID:dlSR4JbP0
ダブルクォーテーション中でダブルクォーテーションを使う場合は「""」とすればいい
分かりにくいが
var := """hoge"""
とすればvarには "hoge" が格納される
902名無しさん@お腹いっぱい。:2014/04/04(金) 17:03:05.96 ID:HjPRtq700
http://www.autohotkey.com/board/topic/75390-ahk-l-unicode-uri-encode-url-encode-function/#entry492181

必要か分からないけど、URLエンコード・デコード関数を置いておきますね
903名無しさん@お腹いっぱい。:2014/04/04(金) 18:18:50.24 ID:rKzqYgrS0
>901
とても勉強になります。ご説明ありがとう。
さっそくスクリプトを以下のように修正して MsgBox で確認したところ正しく引用符が表示されました。
----------------ここから------------------
url := "https://www.google.com/search?q=""" query """ site:aozora.gr.jp"
----------------ここまで------------------
ただしこのスクリプトを Run コマンドでブラウザに渡すと、Google の検索欄には引用符が表示されず、変数(query)がそのまま表示されます。
ともあれ、>900 の方法で解決できたので一件落着しました。
904名無しさん@お腹いっぱい。:2014/04/04(金) 18:20:52.60 ID:GIAtBM/E0
艦これやってるひとでおすすめないですか?
いまマウスでカチカチやってますけど、キーにMouseClick割り当ててよく押すボタンを楽に押せるようにしようかなぁとか考えてるんですが
905名無しさん@お腹いっぱい。:2014/04/04(金) 18:25:26.58 ID:EmtUIrig0
Quote := """"
var := Quote . "hoge" . Quote

引用符の扱いはこんな感じでやってる
URLデコードエンコード関数はかなり便利だよな
906名無しさん@お腹いっぱい。:2014/04/04(金) 19:02:21.71 ID:rKzqYgrS0
>>902
ありがとうございます
紹介されているスクリプトを上から順番にそれぞれコピーして実行してみましたが何の反応もありませんでした
たぶん私が使い方をよく理解していないせいだと思います
ともあれお気遣いに感謝します
907名無しさん@お腹いっぱい。:2014/04/04(金) 20:37:31.43 ID:o2dDirXT0
>>902
これだとUTF-8でしかエンコードできない気が
908名無しさん@お腹いっぱい。:2014/04/05(土) 18:44:15.65 ID:bCR6YnOo0
inireadで指定したini全てのデータを、一行のコマンドで読み込む事って出来ますか?
909名無しさん@お腹いっぱい。:2014/04/05(土) 18:58:24.99 ID:B/Skt4qQ0
>>908
日本語でおk
910名無しさん@お腹いっぱい。:2014/04/05(土) 21:43:36.15 ID:MjKdgbLx0
>>908
FileReadのこと?
911名無しさん@お腹いっぱい。:2014/04/05(土) 23:05:30.75 ID:xWupTc810
IniReadは特定の一行 (の=以降)しか読まない
ファイルまるごと読みたいならFileRead
912名無しさん@お腹いっぱい。:2014/04/06(日) 00:00:05.80 ID:OGA1QN5b0
正確には
IniRead, OutputVar, Filename
だと、全セクション名を取得でき、
IniRead, OutputVar, Filename, Section
で、特定のセクションを指定すれば、そのセクションの全キー名&値が取得できる
913名無しさん@お腹いっぱい。:2014/04/06(日) 07:20:13.24 ID:ILwq+zeU0
>>912
いつのまにこんな機能が

RegExと格闘しながらセクション一覧やセクション内容抽出関数作ってたが
もういらなかったんだな、libから外すか
914名無しさん@お腹いっぱい。:2014/04/06(日) 13:43:13.91 ID:qxiLhQkS0
Guiのコンボボックスで、下の2つを区別する方法があれば教えて下さい
(1)リスト項目選択中に、他のリスト項目を選択した場合
(2)同じく、ボックス内のテキストを書き換えた場合

GuiControlGetで調べようと思いましたが、テキストと項目番号のいずれを取得するにしても、
(2)で既存項目と同じテキスト又は項目番号を入力すると、その項目を選択した場合と区別がつきません
915名無しさん@お腹いっぱい。:2014/04/06(日) 14:21:32.25 ID:VrNJQHrq0
InputにおいてMatchLlistにhe,he1,he2を同時に列挙できませんか
If ErrorLevel = Timeoutを入れてもheが押された時点で実行されてしまいhe1やhe2が押せません
916名無しさん@お腹いっぱい。:2014/04/06(日) 16:43:24.22 ID:Cg54QrdL0
難しく考えてることが多々あるので、処理方法の前に「何がしたいのか」書いてほしい。

>>914
Gオプションやテキストを書き換えたときに変数に判別用のフラグを立てておけばいい。

>>915
できません。
917名無しさん@お腹いっぱい。:2014/04/06(日) 17:22:11.84 ID:qxiLhQkS0
>>916
具体的にやりたいのは、リスト項目を選択するとそれぞれに設定された情報が表示され、
項目名を編集してボタンを押すと項目名がリネームされるという処理です

しかし、たとえば、次のようなリストを設定したコンボボックスがあるとして、
a
b
c
aを選択した後「b」と書き換えた場合、bを選んだのか新しく「b」と書いたのか分かりません
AltSubmitを指定しても、「2」と入力した場合、bを選んだのか新しく「2」と書いたのか分かりません
1アクションで同じ内容になる場合にはフラグを立てておくことができない気がするんです
918名無しさん@お腹いっぱい。:2014/04/06(日) 19:19:34.78 ID:Cg54QrdL0
>>917
※インデント全角スペース

;ComboBox項目変更
F1::
CBText = a||b|c
Gui,Add,ComboBox,vCB AltSubmit,%CBText%
Gui,Add,Edit,vEdit
Gui,Add,Button,g変更,変更
Gui,Show,w200
Return

変更:
Index = 0
NewText =
GuiControlGet,EditVar,,Edit
GuiControlGet,CBVar,,CB
Loop,Parse,CBText,|
{
 If (A_LoopField != "")
 {
  If (++Index = CBVar)
   NewText .= "|" EditVar
  Else
   NewText .= "|" A_LoopField
  }
 }
CBText := NewText
GuiControl,,CB,%CBText%
GuiControl,Choose,CB,%CBVar%
Return
919名無しさん@お腹いっぱい。:2014/04/06(日) 19:54:24.83 ID:qxiLhQkS0
>>918
やはり別途Edit欄を用意するしかないですか…
コンボボックスで実現するのは諦めることにします
ありがとうございました
920名無しさん@お腹いっぱい。:2014/04/07(月) 19:56:21.06 ID:0yHk/zhA0
>>904ですけど、マルチストロークショートカットキー設定したら覚えにくくてSearchImageとかPixelGetだかなんだか使ったら反応しにくくて

何行も書いてみたけど結局dに左クリック割り当ての一行になった(´・ω・`)ショボーン
921名無しさん@お腹いっぱい。:2014/04/08(火) 00:21:58.63 ID:eVNlwMbi0
初心者+浦島太郎な俺にちと教えて欲しい
旧Autohotkey(_Lじゃない方)で下記のスクリプトを組んだ

Joy1::
CoordMode,Mouse,Relative
MouseMove,845,400 [0,100]
return

ジョイパッドのボタン1を押したらマウスカーソルが指定の位置に行くってスクリプトのはずなんだけど
マウスカーソルが微動だにしないのは何故なんだぜ?

ジョイパッドのボタン1が反応する事は確認した
Send,{LButton}みたいなのを追加してマウスクリックができる事も確認した
PCを更新する前は問題なく動いていたんだが、OSやマウスの種類によってはキーが効かなくなることってあるの?
922名無しさん@お腹いっぱい。:2014/04/08(火) 01:00:26.85 ID:/N6pTFDQ0
[0,100]
923名無しさん@お腹いっぱい。:2014/04/08(火) 19:39:01.79 ID:VKIlhDfD0
タスクバーのミドルクリックでそのウインドウ閉じる、って奴をやりたいけど、
簡単そうで地味に面倒そうだ。

タスクバー自体にウインドウ名みたいなのは割り当てられてるんかな?
924名無しさん@お腹いっぱい。:2014/04/08(火) 19:49:18.87 ID:Vr0mszTC0
>>923
右クリ、上、Enter でいいんじゃね?
925名無しさん@お腹いっぱい。:2014/04/08(火) 19:58:26.42 ID:VKIlhDfD0
もちろん動作はそれでいいんだけどね。
タスクバーの上でだけその動作になって、
他のウインドウ上では普通のミドルボタンの動作になって欲しいわけよ。
926名無しさん@お腹いっぱい。:2014/04/08(火) 20:15:19.58 ID:BdufEY550
>>924
Alt + F4

>>925
GetSystemMetrics でタスクバーの高さ取得して相対座標で判断
927名無しさん@お腹いっぱい。:2014/04/08(火) 20:17:12.38 ID:VKIlhDfD0
>>926
おおう、そんなんができるのか。さんくすやってみる!
928名無しさん@お腹いっぱい。:2014/04/08(火) 20:49:47.87 ID:eVNlwMbi0
>>922
んー…?
スマン、マジで分からん。色々値を変えてみたがダメだった。

そもそも指定の仕方が違うってことなのか?
929名無しさん@お腹いっぱい。:2014/04/08(火) 21:01:05.45 ID:BdufEY550
930名無しさん@お腹いっぱい。:2014/04/08(火) 21:04:43.17 ID:p80Do45i0
うん、まぁおれも一番最初の頃は[]付けてたな
すぐ気付いたけど
931名無しさん@お腹いっぱい。:2014/04/08(火) 21:12:27.61 ID:xoVhLnIm0
いやいやいやいやwwww
932名無しさん@お腹いっぱい。:2014/04/08(火) 21:18:36.84 ID:IzM/cNPM0
[]内は省略可能な引数だよっていう意味で[]が使われているだけで、
コマンドの一部なんて今まで一度も思ったこと無いな、おれ素人だけど。
933名無しさん@お腹いっぱい。:2014/04/08(火) 21:45:41.74 ID:eVNlwMbi0
ああ、[]ってそういう意味だったのか…
でも、だとしたら何で今まで使えてたんだろう?
934名無しさん@お腹いっぱい。:2014/04/09(水) 01:10:53.52 ID:eRs7Ptfd0
[]はしょうがないとしても、第四パラメータの前にカンマがないとか、
第五パラメータは数値指定じゃないだろとか
なんでこれでエラーになんないんだよマジで
935名無しさん@お腹いっぱい。:2014/04/09(水) 01:18:23.05 ID:CXrEjWw30
カンマは省略できるよね
無効なパラメータで無くても動くものは無視するんじゃない?
知らんけど
936名無しさん@お腹いっぱい。:2014/04/09(水) 08:15:46.19 ID:E9yRzho+0
Windows8.1Updateでチャームの表示が遅くなったらしいので作ってみた
管理者で実行しないと、反応しない場合がある。

;無変換+スペースでタスクバー・・・無変換で問題が出る
;sc07B & space::Send,#t

;Win+スペースでタスクバー
#space::#t

;マウス中ダブルクリックでチャーム
MButton::
If(A_PriorHotkey = A_ThisHotkey) And (A_TimeSincePriorHotkey < 500){
Send,#c
}Else{
Send,{Blind}{MButton}
}
Return

;マウス右ダブルクリックでタスクバー
;メニューが出るとバーが表に出ないので、ESC でキャンセルしてから表示
RButton::
If(A_PriorHotkey = A_ThisHotkey) And (A_TimeSincePriorHotkey < 350){
Send,{esc}#t
}Else{
Send,{Blind}{RButton}
}
Return
937名無しさん@お腹いっぱい。:2014/04/14(月) 04:51:55.07 ID:wnm9jFyY0
既に起動中のスクリプトに、別のスクリプトからコマンドを送信して
既に起動中のスクリプトの指定ラベルに飛ぶ事何て出来るものでしょうか?
938名無しさん@お腹いっぱい。:2014/04/14(月) 06:07:05.55 ID:Jz/r1Yxa0
ちょっと場所お借りします。

http://anago.2ch.net/test/read.cgi/software/1393584975/757 へのレス。

AutoHotkeyに関することは詳しく説明しないので悪しからず。
例ではOperaブラウザ上でのみ適用される(適用したいウインドウクラスは自分で調べてくれ)。
例として、文字列選択後に [shift]+[ctrl]+c で動作。
スクリプトと同じ場所の「ウインドウタイトル名のフォルダ」に「ウインドウタイトル名 + 年月日.log」へ追記する。
フォルダもlogファイルも存在しなければ自動で作成する。
ウインドウタイトル名の中にファイル名に使えない文字が含んでいたら「_」に変換する。
一度に大量の文字列をコピーしようとする(スレ全体とか)と失敗すると思う。

長いので次のレスへ
939名無しさん@お腹いっぱい。:2014/04/14(月) 06:08:38.33 ID:Jz/r1Yxa0
>>938より続き

#Persistent
;#If WinActive("ahk_class OperaWindowClass") || WinActive("ahk_class ウインドウクラス") ;複数指定する場合
#IfWinActive, ahk_class OperaWindowClass
$^+c::
ClipSaved := ClipboardAll ;クリップボードのバックアップが不要なら削除
Send, ^c
ClipWait, 2
WinGetTitle, wintitle, A
wintitle := RegExReplace(wintitle, "\\|/|:|;|,|\*|\?|\""|<|>|\|", "_")
Filename := A_ScriptDir . "\" . wintitle . "\" . wintitle . A_Year . A_Mon . A_MDay . ".log"
if (! FileExist(A_ScriptDir . "\" . wintitle . "\")) {
FileCreateDir, %A_ScriptDir%\%wintitle%
}
file := FileOpen(Filename, "a")
file.WriteLine("----- 以下に追加 -----") ;不要なら削除
file.WriteLine(Clipboard)
file.Close
Clipboard := ClipSaved ;クリップボードのバックアップが不要なら削除
ClipSaved = ;クリップボードのバックアップが不要なら削除
return
#If

これを拡張子「ahk」で保存。
940名無しさん@お腹いっぱい。:2014/04/14(月) 06:10:36.37 ID:drcNOM2n0
>>937
適当な変数で条件付けといて、別スクリプトでその値を書き換えればいいんじゃないの
941名無しさん@お腹いっぱい。:2014/04/14(月) 08:05:08.99 ID:ZRJ9og6e0
>>937
OnMessage()
942名無しさん@お腹いっぱい。:2014/04/14(月) 19:06:52.82 ID:OHQeYfCc0
>>940
どうやって書き換えるんだよ・・・。
943名無しさん@お腹いっぱい。:2014/04/16(水) 01:57:33.14 ID:bOan4vEL0
WinGetPosでウインドウ枠内の実寸法を取得って出来る?
944名無しさん@お腹いっぱい。:2014/04/16(水) 02:07:30.30 ID:AhZ74/+10
>>943
SysGetとの合わせ技
945名無しさん@お腹いっぱい。:2014/04/16(水) 03:35:36.74 ID:bOan4vEL0
ほほう、ちょっと試してみる
946名無しさん@お腹いっぱい。:2014/04/16(水) 17:20:44.78 ID:/LRkn3Vh0
FileGetVersionでファイルのバージョンなどを取得できますが、他の属性を取得することはできるでしょうか?
947名無しさん@お腹いっぱい。:2014/04/16(水) 17:39:21.93 ID:6fXmzYiD0
>>946
読み取り専用や隠しファイルなどの属性なら、FileExist()かな?
948名無しさん@お腹いっぱい。:2014/04/16(水) 17:43:05.72 ID:6fXmzYiD0
ダイアログなどのボタン(OKとかキャンセルとか)でデフォルトボタンのコントロール名はどうやって取得できますかね?
フォーカスされてるボタンならControlGetFocusで取得できるんだけど…
949名無しさん@お腹いっぱい。:2014/04/16(水) 18:11:19.80 ID:6fXmzYiD0
>>946
FileGetAttribの方が一般的なのかも?
まぁコマンドか関数かの違いだけで状況により使い分け、または気分によって使い分けすればいいんじゃないかな?
950名無しさん@お腹いっぱい。:2014/04/16(水) 18:19:35.68 ID:TYaYj8jB0
ググったら今スレの>9-12が引っかかった

とりあえずめくら打ちでEnter送ればボタンは押せると思うけど
(そのためのデフォルトボタンだから)
その他の制御するために取得したいとなると面倒かもね
951名無しさん@お腹いっぱい。:2014/04/16(水) 18:52:01.95 ID:6fXmzYiD0
>>950
素早い回答ありがとす
デフォルトボタンの取得は諦めますわ…

まさか現スレに殆ど同じ質問があったとは
wikiばっかり見てても駄目っすね^^;
952名無しさん@お腹いっぱい。:2014/04/16(水) 21:48:01.13 ID:8b//njEB0
これよくRR.exeが残留してCPU食いまくるんですけどなんでProcess, Closeが効かないんでしょう?
%Search%と%Replace%はもうすこし上の方にあるGUI,Add,Editから来ます

Loop, %TargetDir%*, 1 ;#*.*でもできてる
{
Run, C:\Application\RegularRenamer\RR.exe /rn /sl "%A_LoopFileFullPath%" "s/"%Search%"/"%Replace%"/k",,, RR
}
GUI, Destroy
Sleep, 10000
Process, Close, RR
return

GUIEscape:
GUI, Destroy
Process, Close, RR
return
953名無しさん@お腹いっぱい。:2014/04/16(水) 22:42:22.98 ID:JvCS0BRo0
拡張子付けろ
954名無しさん@お腹いっぱい。:2014/04/16(水) 23:10:58.48 ID:8b//njEB0
>>953
Process, Close, RR.exeにしました
これでしばらく様子見ます。どもです
955名無しさん@お腹いっぱい。:2014/04/16(水) 23:35:04.20 ID:6fXmzYiD0
>>952
「RR」が、Run,コマンドライン,,, RRのPIDの意味のRRだとしたら
Process, Close, %RR%
じゃないかと

また、RR.exeのことよく知らないけど、もし複数起動してたら、
Process, Closeの単発では全部閉じないような…

的外れなレスなら無視してチョ
956名無しさん@お腹いっぱい。:2014/04/16(水) 23:43:18.37 ID:6fXmzYiD0
>>955
書き忘れっす
もし、RR.exeに処理後自動終了のオプション有れば、
Process, Closeせず、RunWait使うという手もあるけど、
そういうオプションが無いって事かな?
957名無しさん@お腹いっぱい。:2014/04/16(水) 23:46:15.87 ID:JvCS0BRo0
あー、Runコマンドで変数RRにPID入れてるのか
なら>>955が正解だわ
958名無しさん@お腹いっぱい。:2014/04/25(金) 18:57:45.54 ID:tSXjSI/C0
なんかうpだてきてるで
959名無しさん@お腹いっぱい。:2014/04/26(土) 01:31:02.11 ID:Wf/5kC5g0
>>923
俺の場合閉じるじゃないけど似たようなことやりたいんで
ついでに作ってみたよ。
でたらめだけどなんかしらんけど俺の環境では動くよ。

MButton::
var:= "MSTaskListWClass1"
MouseGetPos, , ,id,control,,
if var = %control%
send,{RButton}{UP}{ENTER}
else
send,{MButton}
return
960名無しさん@お腹いっぱい。:2014/04/26(土) 01:49:52.17 ID:Wf/5kC5g0
ごめん、どうでもいいけどこっちのがスマートかも。
ほんとならahk classも指定したほうがいいかも知んないけど、
別に今んとこ支障はないので。

MButton::
MouseGetPos, , ,id,control,,
if (control = "MSTaskListWClass1")
send,{RButton}{UP}{ENTER}
else
send,{MButton}
return
return
961名無しさん@お腹いっぱい。:2014/04/26(土) 05:33:53.27 ID:vyyvOYUe0
return
return
962名無しさん@お腹いっぱい。:2014/04/26(土) 06:59:47.52 ID:WBd1IaLX0
return
return ; 念のためもう一度
963名無しさん@お腹いっぱい。:2014/04/26(土) 07:10:53.81 ID:yCEJoibM0
汎用関数にして、#IF使った方が良いんじゃないか
964名無しさん@お腹いっぱい。:2014/04/26(土) 09:39:00.76 ID:5nnLMgI00
大事なことなのでry
965名無しさん@お腹いっぱい。:2014/04/26(土) 18:09:44.87 ID:Wf/5kC5g0
#IF Mouseisover
を使うってことかな
その方がスマートそうだけど、Mouseisoverの解説とかリファレンスってほとんどないよね。
便利そうなのになんでだろ
966名無しさん@お腹いっぱい。:2014/04/26(土) 18:13:55.71 ID:Wf/5kC5g0
もしかしてとんでもない勘違いしてるのかな
return
return
967名無しさん@お腹いっぱい。:2014/04/26(土) 22:33:26.95 ID:QJ1YV1nn0
>>968
OpenGL ES 3.0?
シェーダーコードの自動生成がしたいならsmartguiでGUI作って"Run"でC++プログラムを起動するといいよ
968名無しさん@お腹いっぱい。:2014/04/27(日) 12:12:22.12 ID:VU4V0uJu0
Numlock::Send,^+sとしてるんですが、
しばらくPCほっといてからいきなりNumlock押すと^+sではなくNumlockが送られてしまいます
多分糞スペだからだと思いますが、どうにかなりませんか?
969名無しさん@お腹いっぱい。:2014/04/27(日) 14:47:16.01 ID:1dg9Lt/V0
XPが終了したのでWin7に買い換えました。GhostTracerを使ってたのですがうまく動かないのでAutoIt、AutoHotKeyを今回初めて試してみました
AutoHotKeyは最新版、v1.1.14.04 - April 25, 2014です

やりたいことは、マウスの移動とクリックです。これだけ出来ればいいのです
ところが、今まで使ってたあるアプリのウインドウをアクティブにしたときだけマウス関連が全く利かなくなるという現象が起きました。AutoHotKeyでは最も単純に
#space::MouseClick, LEFT
とだけやってみました
IEやChrome、秀丸、Excelその他ほとんどのアプリではそれをアクティブにした状態でちゃんと動作します
ところが、この特定のアプリだけそのウインドウをアクティブにするとこの機能がまったく動きません。MouseMoveも動きません
また、この特定アプリを非アクティブ状態にして、このウインドウ上で上記のWin+スペースをやってもこのアプリがアクティブになることはありません

ちなみに、このアプリをアクティブ状態にして、Win+スペースとやると画面上のすべてのウインドウが枠のみが残って中身は全部消えてしまい、スペースを離すと元に戻ります

調べてみたら、AutoHotKeyだけでなくAutoIt、GhostTracerが動かなかったのもこのアプリウインドウをアクティブにしたときのみでした
XPではこんなことはなかったのですが、誰か理由、対処等わかる方いますか

ちなみにこのアプリは有名会社から正規に購入している間違いのないものです
970名無しさん@お腹いっぱい。:2014/04/27(日) 14:49:29.99 ID:7jyGmvOq0
管理者権限
971名無しさん@お腹いっぱい。:2014/04/27(日) 17:09:20.40 ID:iN1XRJSw0
>>969
原因は>>970の通り
標準ユーザーとして実行したアプリから管理者権限で実行したアプリは操作できない
対処法は、AutoHotkey.exeを管理者権限で実行する(プロパティ>互換性>特権レベル)
今後もマウス操作にしか使わないならそれで特に問題ない
972名無しさん@お腹いっぱい。:2014/04/27(日) 17:12:26.29 ID:1dg9Lt/V0
コンパネのアクションセンターのユーザーアカウント制御設定の変更で
通知しない
にして再起動したら、問題なく出来るようになりました
AutoHotKey、AutoIt、GhostTracerともに動きました

自動化ツールがどういう仕組みになってるのか知りませんが、XPのときはキーボードやマウスの入力をかなり上流でインターセプトしていたため、ウイルスに制御が乗っ取られるとかセキュリティを考えてWin7では厳しくしたのでしょうかね

でもこのアプリだけで他は全く問題なく使えているというのは、アプリ側でブロックできるように設定が出来るということなのでしょうか

でも、ユーザーアカウント制御設定の変更で通知しないというのは一番セキュリティが弱いのでさすがにこのまま使うのは気が引けます
一番いい設定ってどうすればいいのでしょうね。このアプリだけを制御除外とか出来ないものでしょうか
973名無しさん@お腹いっぱい。:2014/04/27(日) 17:16:46.39 ID:1dg9Lt/V0
>>971
ありがとうございます。パソコンにログインするときはAsministrator権限つきのアカウントで入っているのですが、それでも駄目なのですか
XPのときみたいに、Adminstratorでログイン出来るのかって探しているのですが、今入っているのがAdministrator付きのせいなのか特にそういうのが見当たりません
974名無しさん@お腹いっぱい。:2014/04/27(日) 17:19:39.53 ID:1dg9Lt/V0
>>971
ああ、わかりました。ahkファイルのプロパティでセキュリティのところですね
今はSYSTEMになってますよ。これをAdministratorに変えろってことですね

今からさきの
ユーザーアカウント制御設定の変更で通知しない
ってとこをもとに戻してやり直してみます
975名無しさん@お腹いっぱい。:2014/04/27(日) 17:31:21.94 ID:1dg9Lt/V0
>>971
たびたびごめんなさい。AutoHotKey.exeのプロパティの互換性のところで
特権レベルで実行っていうチェックがあるのがわかりましたが、これを使わなくても
ahkファイルを右クリックしてその中に管理者として実行っていうのがあるのを見つけました

これでやれば、問題なく動きました
これで、AutoHotKeyについては解決しました。ありがとうございました
でも、もともと作ってあったGhostTracerが動けば一番楽なんですけどね
これは先ほどのユーザーアカウント制御設定の変更で通知しないっていう変更で動いたのですよ
976名無しさん@お腹いっぱい。:2014/04/27(日) 17:35:58.82 ID:1dg9Lt/V0
GhostTracerも、ショートカットの上で右クリックして出てくる管理者として実行というのを選べば
問題なく動くことを確認しました
これですべて解決しました。ありがとうございました
977名無しさん@お腹いっぱい。:2014/04/27(日) 22:57:30.90 ID:F6W53U5z0
2台のPCで、かたやXeonE3-1225メモリ8GB、かたやi7-3930Kメモリ16GB。SSDとHDDの性能はどちらも同じ。で、性能のいいはずのi7マシンの方のレスポンスが明らかに悪いんだ。走らせてるAHKスクリプトは全く同じ。

これは何が原因なんだろう?
978名無しさん@お腹いっぱい。:2014/04/28(月) 00:06:24.65 ID:rN8ZLQ1V0
>>977
情報不足
979名無しさん@お腹いっぱい。:2014/04/28(月) 05:12:19.05 ID:aAcgtpYm0
Win7 64bitを使ってます、
Autohotkey? L?のどれを入れればいいのか?よくわかりません、
よろしくお願いします

とりあえず ↓このソフトが使えるようにしたいのですが

MouseGestureL.ahk
ttp://hp.vector.co.jp/authors/VA018351/mglahk.html
980名無しさん@お腹いっぱい。:2014/04/28(月) 07:04:08.80 ID:lZlKorGt0
>>979
そのURLに導入方法が書いてあるんだから、きちんと読むこと
最低でも読んだ上で、どこまで理解できてどこから理解できないかが分かるように伝えないと
もしかしてジェスチャー総合スレでも聞いてるかざぐるユーザー?
かざぐる使いは、あれが当たり前だと思わずに、自分で読んで調べて動かして試行錯誤する習慣をつけよう
981名無しさん@お腹いっぱい。:2014/04/28(月) 07:29:11.37 ID:6EDYlutQ0
今の最新は、これでしょう
v1.1.14.04 - April 25, 2014
http://ahkscript.org/download/

次スレのトップに入れておいてください
982名無しさん@お腹いっぱい。:2014/04/28(月) 10:39:25.49 ID:R81d4/3l0
>>979
そのページ見てわからないんならやめた方がいいんじゃないかな
983名無しさん@お腹いっぱい。:2014/04/28(月) 12:17:38.06 ID:ZU+n1lM80
スレ立ててくる
984名無しさん@お腹いっぱい。:2014/04/28(月) 12:30:09.51 ID:ZU+n1lM80
次スレ
AutoHotkey スレッド part18
http://anago.2ch.net/test/read.cgi/software/1398655195/
985名無しさん@お腹いっぱい。:2014/04/28(月) 13:43:27.24 ID:aX3LSWGr0
>>984
986名無しさん@お腹いっぱい。:2014/04/28(月) 23:28:23.20 ID:fCDtHC4t0
次スレにもう書き込んでるやつら馬鹿なのか?
落ちないように1000まで埋めるんだろうが
987名無しさん@お腹いっぱい。:2014/04/28(月) 23:35:30.62 ID:+oB0cDGi0
1000行く前に落ちたらなんか不都合あんの?
988名無しさん@お腹いっぱい。:2014/04/28(月) 23:36:38.47 ID:ZU+n1lM80
何をわけのわからないことを言ってるんだ。
1000まで埋めたらその時点でdat落ちするし
980超えてから24時間レスがなければdat落ちする。
989名無しさん@お腹いっぱい。:2014/04/28(月) 23:41:01.32 ID:ZU+n1lM80
ちなみに2年くらい前までは1000まで埋めないとdat落ちしなかったからわざわざ埋めてた
990名無しさん@お腹いっぱい。:2014/04/28(月) 23:55:26.28 ID:rN8ZLQ1V0
埋め

2カ所で話題が進行すると面倒だから。
991名無しさん@お腹いっぱい。:2014/04/29(火) 00:07:05.05 ID:CXK/L+JJ0
埋め
1000までいけば1000まで残るが
1000いかないとどこまで残るかわからん
昔は知らんが今はそう
992名無しさん@お腹いっぱい。:2014/04/29(火) 00:10:22.92 ID:6i1yHp3O0
埋め
次のテンプレに現行スレ埋めてから次スレに質問書けって追加だな
993名無しさん@お腹いっぱい。:2014/04/29(火) 00:11:02.33 ID:WQ7Ao3bq0
落ちたところまで残るよ
994名無しさん@お腹いっぱい。:2014/04/29(火) 00:11:46.18 ID:Ui11OcXU0
こんなレス残らなくていいのに
995名無しさん@お腹いっぱい。:2014/04/29(火) 00:36:43.63 ID:I9Dcz2730
埋めとこう
996名無しさん@お腹いっぱい。:2014/04/29(火) 00:43:57.63 ID:WQ7Ao3bq0
>>991
どこまで残るかわからんという不確かな残り方はしないよ
落ちたところまでのレスは全て残って●があればいつでも見れる。
最近は●なくても2chログを保存しているところなんていくらでもあるけど。
997名無しさん@お腹いっぱい。:2014/04/29(火) 00:46:10.21 ID:CXK/L+JJ0
埋め
998名無しさん@お腹いっぱい。:2014/04/29(火) 01:19:51.96 ID:bDch3Abf0
うめ
999名無しさん@お腹いっぱい。:2014/04/29(火) 01:29:13.72 ID:HIbUIj7G0
999
1000名無しさん@お腹いっぱい。:2014/04/29(火) 01:39:24.84 ID:vaLr8K740
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。