AutoHotkey スレッド part7at SOFTWARE
AutoHotkey スレッド part7 - 暇つぶし2ch175:名無しさん@お腹いっぱい。
09/02/01 03:41:30 +8QlN44X0
>>174
流行らせるページより
>MatchList
>「,」で区切って文字列を列挙する。
>入力内容がここに列挙したものに一致した場合、コマンドは終了しErrorLevelが「Match」になる。
>カンマ区切りだが、引数の区切りとは扱いが違い、カンマの前後の空白文字などは、文字列の一部とみなされる。

これが原因?

176:名無しさん@お腹いっぱい。
09/02/01 04:11:44 Ul6ytoNp0
>>175
ありがとうございます!うまくいきました

177:名無しさん@お腹いっぱい。
09/02/01 16:20:16 WFl1N4Nl0
名前を付けて保存ダイアログってスクリプトから出せないのかな?
ファイル選択ダイアログを表示・フォルダ選択ダイアログを表示 はあるんだけどなー。


178:名無しさん@お腹いっぱい。
09/02/01 16:32:19 5OtrqmWb0
選択ダイアログを出して
ウィンドウタイトルとかボタンのテキストとか書き替えて
無理からControlとかでテキスト拾って
保存用に利用してみるとかw

179:名無しさん@お腹いっぱい。
09/02/01 16:35:34 gM29b+OF0
FileSelectFileでできるだろ?

180:名無しさん@お腹いっぱい。
09/02/01 17:16:49 WFl1N4Nl0
>>179
リファレンスよく見たら保存ダイアログにする方法書いてあるな
気付かなかった

181:名無しさん@お腹いっぱい。
09/02/01 19:02:57 o14t9yXp0
アイドル状態ってどうやって調べてるんだろ?

5分ごとに、アイドル状態ならば検索ソフトのインデックス作成を行うように設定してるのだが、
Civilization4っていうゲームをプレイ中に、5分ごとにフォーカス奪われちゃってすごく困ってる。

なんか改善策ないかなー

182:名無しさん@お腹いっぱい。
09/02/01 19:09:30 zLFlCA+70
組み込み変数の A_TimeIdle や A_TimeIdlePhysical じゃ用はなさないってこと?
というか、プレイ中と書いてあるけど、起動して放置中ってことか?

183:名無しさん@お腹いっぱい。
09/02/01 19:24:13 nES9c2H30
Civilization4がどこまでマルチスレッド対応してるかにもよるかもね。
ウィンドウでもプロセス検知でもいいから、ゲームが起動中かどうかで判断するのが一番簡単じゃない?

184:名無しさん@お腹いっぱい。
09/02/01 22:31:29 IsdiFXGP0
スレッド毎のCPU占有率調べて処理すればいいんじゃね
除外設定付けておけば望みの動作になると思われ

185:名無しさん@お腹いっぱい。
09/02/02 00:37:36 ghjeIC8V0
直前に閉じたウィンドウを開くスクリプトは書けますか?

186:名無しさん@お腹いっぱい。
09/02/02 00:41:16 /eytDMHF0
>>185
無理。具体的に言ってよ。
アクティブウィンドウを再起動させるのならできると思う。

直前に閉じちゃったのなら、常に何かしら監視していないといけないから面倒かも。

187:名無しさん@お腹いっぱい。
09/02/02 00:59:40 1rUYw8J20
ワークステーションがロックされてる、で、パスワードを入れて復帰する。
この直後に処理を挟みたい。
OnMessageとかでトラップなのかな?

188:名無しさん@お腹いっぱい。
09/02/02 01:43:07 ghjeIC8V0
>>186
操作ミスで閉じてしまったときに楽に復帰できたらいいなと思ったんだ。(´・ω・`)

189:名無しさん@お腹いっぱい。
09/02/02 02:02:47 09XryvuG0
>>185
これか?外人がAutohotkeyで色々作っていたやつ。試してレス横瀬。
窓の杜 - 【NEWS】誤って閉じたウィンドウを60秒以内なら復活できる「GoneIn60s」
URLリンク(www.forest.impress.co.jp)

190:185
09/02/02 04:29:43 ghjeIC8V0
>>189
サンクス!さっそく使ってみたので以下報告。結論としては不採用。
Alt + F4を押すとWinHideする仕組みらしい。で、
・GoneIn60sのアイコン右クリックして閉じたアプリを選択 ⇒ WinShowで復帰。
・指定時間後までに何もしない ⇒ WinCloseで閉じる。

なぜかWinKillでなくWinCloseだから、「保存しますか?」と出るはずのときに、
・指定時間後までは何もなしで閉じたように見える。→後で急にあらわれて「保存しますか?」
となる。これは気持ち悪い。
しかも右上の×でも同様なんだけど、こっちはもっとひどくて、位置が正確でないから
誤動作する場合がある。最小化ボタンの位置で反応したり、閉じるに反応しなかったり。

WinHideの仕組みはいいアイデアだと思った。
ちなみに窓の杜の紹介記事からバージョンアップしてて、今はv1.4。

191:名無しさん@お腹いっぱい。
09/02/02 05:46:25 BYiuvhuI0
DDWinというソフトの小窓をESCキーで閉じて
他のソフトの時は標準の動作をするようにしたいのですが

Esc::
IfWinActive, ahk_class TDefForm
{
Send,WinClose
}
else{
Send,{Esc}
}
return

だとDDWinの小窓では何も起きませんし
それ以外のところでは

xx hotkeys have been received in the last xxxxms

Do you want to continue?

というエラーメッセージが出てしまいます。

192:名無しさん@お腹いっぱい。
09/02/02 07:28:16 ghjeIC8V0
>>191
このスレでhotkeys have been receivedを検索。
特定のウィンドウでの動作は
#IfWinActive, ahk_class TDefForm
;ここに処理を書く。
#IfWinActive
って具合に書くといいよ。

193:名無しさん@お腹いっぱい。
09/02/02 08:46:33 BYiuvhuI0
>>192
ありがとうございます。うまく行きました。

194:名無しさん@お腹いっぱい。
09/02/02 22:31:32 kP24v5Wa0
URLリンク(www2.atchs.jp)
こちらもつかってください。

195:名無しさん@お腹いっぱい。
09/02/02 22:52:47 99xZfHQW0
なぜ情報を拡散させたがるのか。
ここと流行らせるページの掲示板で十分だろ。

196:187
09/02/02 23:15:39 1rUYw8J20
自己レス。
WM_POWERBROADCAST(0x218)じゃ捕まえられないっぽいので、
フォアグランド窓をとれるかで判断した。

SetTimer, HogeHoge, 1000
HogeHoge:
 WinGet, fgId, ID, A
 if (!fgId) {
  Loop {
   WinGet, fgId, ID, A
   if (fgId)
    break
   Sleep, 1000
  }
  // ここに処理を書く
 }
 return


197:名無しさん@お腹いっぱい。
09/02/03 19:09:41 d0uBooiq0
あるウィンドウがアクティブなときのキー設定を
#IfWinActive, WinTitle
1:: F1
2:: F2
3:: F3
という感じで書いています。

そのウィンドウが非アクティブのときでも、
Win+Space 1 のように2ストロークキーで
同様のキー操作ができるようにしようと、
#Space::
Input, key, C I L1 T2, {Esc}, 1,2,3
IfWinExist, WinTitle
ControlSend, , key
という感じに書いたのですが、当然というか
1,2,3 が直接送られるだけで、F1,F2,F3 になってくれません。
If key = 1
ControlSend, , {F1}
というように逐一書いていくしかないでしょうか?
定義を二重に書かないといけないのでできれば避けたいんですが…

198:名無しさん@お腹いっぱい。
09/02/03 19:18:13 qfq9gHtT0
残念ながら無理(なはず)。
窓使いの憂鬱(のどか)とかkeyhacでいう「キーマップ」とか「キープレフィックス」に相当するものはない。
強いて言えば同じサブルーチンに飛ばすくらい。
ex) Gosub, 1 ; 1のキーに割り当てられている機能を呼ぶ

199:名無しさん@お腹いっぱい。
09/02/03 20:57:50 LGJ9Ljgs0
ControlSend, , {F%key%}
でできない?
 
あと、そういう場合は Autohotkey_L の #if expression 使うと
楽に実現できそうな気がする。

200:名無しさん@お腹いっぱい。
09/02/03 23:23:58 LGJ9Ljgs0
>>197
せっかくAutoHotkey_L使ってるので、試してみた。
あとこのスレでURL出てなかったので出しておく。
URLリンク(www.autohotkey.net)
 
;---------------------------------------------
#if WinActive("無題 - メモ帳")
or (A_ThisHotkey=="#Space"
and A_TimeSinceThisHotkey<=2000
and WinExist("無題 - メモ帳"))
1::msgbox, syori 1
2::msgbox, syori 2
3::msgbox, syori 3
#if
#Space::Return ; A_ThisHotkeyに記録するために必要
;---------------------------------------------
 
これでメモ帳がアクティブな時か、
メモ帳がある時にWin+Spaceしてから
2秒以内に各キーを押すと処理が実行されて、
そうでない時は普通に各キーが送られる。


201:名無しさん@お腹いっぱい。
09/02/03 23:26:30 LGJ9Ljgs0
ちなみにキーマップはこんな感じで書ける。
 
;---------------------------------------------
keymap:=0
Exit
#if keymap==1
1::a
2::x
#if keymap==2
1::b
2::y
#if keymap==3
1::c
2::z
#If
; F12を押すたびにキーマップ切り替え
F12::keymap++ == 3 ? keymap:=0 :
;---------------------------------------------
 
AutoHotkey_L便利だと思うんだけど…
こういう需要あんまり無いのかな?

202:名無しさん@お腹いっぱい。
09/02/04 00:16:05 53JDVpb00
いや、あると思う。
窓使いの憂鬱とかでkeymapでの定義に慣れた人には断然分かりやすいとは思う。

というか _L って安定してる?
ウニコード化してくんないかなぁ。

203:199
09/02/04 00:50:50 mEq9h9q70
>>202
環境によるかもしれないけど、むしろ
俺の環境では本家より安定してるかな。
WinXP SP3。
本家の使ってるとスクリプトリロードさせた時に、
たまにエラー出るんだけど_Lだと今のところない。
単に俺の書いてるスクリプトがおかしいのかもしれないが…
 
もし使う時に注意する事があるとしたら、
#if expression使う時に、時間かかる判定しないように
気をつけるくらいかな。一応タイムアウト時間も指定できる。
 
3ヶ月くらい使ってるけど今のところ不満は無いです。
 
Unicode化は…して欲しいね。

204:名無しさん@お腹いっぱい。
09/02/04 15:39:07 MFTbk+bR0
時間がものすごくかかる演算をDLLで組もうと思うんだけど
参考になるサイトとかないかな
中身は単純にfor文とかを大量に繰り返して結果を返す、といったものなんだけど
ためしに
extern "C" __declspec(dllexport) INT WINAPI extracter(int x){
return 5*x;
}
こんな感じのDLL組んでDLLCALLで呼び出してみたけど上手く動作しなかったんだ…

205:名無しさん@お腹いっぱい。
09/02/04 18:27:03 k5e6IctL0
>>204
時間掛かる処理をさせるならLoadLibraryしてみたほうがいいよ

206:名無しさん@お腹いっぱい。
09/02/04 21:27:31 Ut7+efCd0
>204
多分呼び出し規約が stdcall になってるので関数名を extracter@4 にすれば呼び出せるかも。

207:206
09/02/04 21:38:23 Ut7+efCd0
補足。
dll 側のコードはそのままで、DllCall するときに extracter@4 で呼ぶって意味ね。VC だと _extracter@4 かも。
@以降の数字は引数に使用するスタックのサイズ。今回は int が 1 つなので 4。
gcc だと -Wl,-kill-at というオプションを渡すと @ 以降がなくなって extracter で呼べるようになるはず。
VC 側の同等オプションは知らね。DEF ファイル使えば制御はできると思う。

208:名無しさん@お腹いっぱい。
09/02/04 23:14:11 MFTbk+bR0
>>206-207


問題解決しますたありがと><

209:197
09/02/04 23:30:00 uksORcM50
>>198-201
ありがとうございます。
>>200 の方法でできました。
>>201 とか面白いですね。

210:名無しさん@お腹いっぱい。
09/02/05 03:44:32 He1nXNrH0
白背景に黒い文字を書いた画像を用意して
ImageSearchで*TransWhiteをオプションに指定したら真っ黒な場所に反応してしまう…
何か良い方法はないかな

211:名無しさん@お腹いっぱい。
09/02/05 03:58:21 Ctlz88MC0
初心者質問で申し訳ないんだけど、入力キー、回数、間隔時間を指定して
直前にアクティブなウインドウに対して、キー(コード)を送るスクリプトってどう書くの?
現状↓のような感じで詰まってる

DefaultKey=Enter
InputBox, OutputKey ,入力設定,KeyName で指定,,200,150,,,,,%DefaultKey%
if ErrorLevel != 0
 exit
else
 counter = 1
 Loop, 3
 {
  SendEvent, {%OutputKey%}
  SetKeyDelay, 100
  counter += 1
 }

212:名無しさん@お腹いっぱい。
09/02/05 05:28:16 JN8SH5jU0
連続した入力
{BS 5}のように、「{}」で囲んで、右に数値を指定すると、複数回押すことができる。
って書いてるけど。

213:名無しさん@お腹いっぱい。
09/02/05 11:01:00 6B3J8+du0
212の言うように
SetKeyDelay,100
SendEvent, {%OutputKey% 3}

とするか

Loop,3
{
 SendEvent, {%OutputKey%}
 Sleep,100
}
でいいんでね?

あとIfでExitしてるからこの場合の動作には影響ないと思うが
文法上はElseのあと { } で囲わないとまずくね?

214:名無しさん@お腹いっぱい。
09/02/05 14:59:25 Ctlz88MC0
>>212-213
レス、サンクス
やっぱ質問が悪かったか。今分からないのが、
・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)
・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
という感じ。ま、挫折するまで調べてみる

215:名無しさん@お腹いっぱい。
09/02/05 15:57:17 rxk2q+A70
アクティブウィンドウのプロセスのフルパスを
Autohotkey単体で取得することはできますか?
Winget, OutputVar, ProcessName, A で実行ファイル名は取得できたのですが
それから先がわかりません

216:名無しさん@お腹いっぱい。
09/02/05 16:12:39 JN8SH5jU0
>>215
ほい、前スレから。俺が教えて貰ったんだけどw
47 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/25(月) 23:01:23 ID:O2etOCIT0
eamatの日記
URLリンク(d.hatena.ne.jp)
にあると思う

48 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/25(月) 23:22:03 ID:iVqjz6P/0
URLリンク(d.hatena.ne.jp) の一番下

これ大元は流行らせるページ管理人氏のなんだけどそっちは今見れないね。
削除されちゃったんだろか。結構需要あると思うんだけど。

217:名無しさん@お腹いっぱい。
09/02/05 20:19:48 n8B6a3aC0
>>214
> ・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)

こんな感じか?
HogeInputBoxを呼ぶと変数にキー名、回数、ディレイが入る
Gosub, HogeInputBox
return
HogeInputBox:
 Gui, Destroy
 Gui, +LastFound
 Gui, Add, Hotkey, vKeyName
 Gui, Add, Edit, vCount Number
 Gui, Add, UpDown
 Gui, Add, Edit, vDelay Number
 Gui, Add, UpDown
 Gui, Add, Button,, OK
 Gui, Show
 WinWaitClose, % "ahk_id " WinExist()
 return
ButtonOK:
 Gui, Submit
 return
GuiEscape:
 return

> ・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
キー名から頑張って変換する・・・かな。
というか、キーコードって手入力前提でないの?
(上のサンプルだと KeyNameになるけど)


218:名無しさん@お腹いっぱい。
09/02/05 21:45:16 dLfvsoZw0
今押されているVirtualKeyCodeを得るならこんな感じ?
#Persistent
CoordMode,ToolTip,Screen
SetTimer,TipView,10
Exit
TipView:
ToolTip, % GetAllVirtualKeyState(),0,0
Return
GetAllVirtualKeyState(){
str:="",tf:=A_FormatInteger
SetFormat, Integer, H
Loop, 0x100
str:=str (GetKeyState("vk" SubStr(A_Index-1,3),"P") ? A_Index-1 "," : "")
SetFormat, Integer, %tf%
Return SubStr(str,1,-1)
}

219:名無しさん@お腹いっぱい。
09/02/06 03:17:46 wnkD34rd0
クリップボードに変更があったらその内容をテキストファイルに追記する、
というのを作ったのですが、下のだと数時間経つと使えなくなってしまいます。
AHKを再起動すればいいんですが毎回再起動するのも面倒です。
何か対策とか無いでしょうか?

#Persistent
Clipboard=
OnClipboardChange:
Run,"テキストファイルに追記するソフト起動"
tooltip clip
sleep,300
tooltip
return

220:名無しさん@お腹いっぱい。
09/02/06 03:43:37 /VPzv7st0
俺も過去にそれを作ったことがあった。

クリップボードバッファの領域に、スクショ画像などのテキスト以外の
巨大データが出現すると、エラーメッセージなしにAutoHotkeyが死んでしまう。

解決策は見つからなかった。うまい回避法はあるのかな?

221:名無しさん@お腹いっぱい。
09/02/06 05:09:20 ka9EMbek0
>>201を見て
キーマップのきりかえができることにおどろいたので


222:214
09/02/06 05:58:59 NAAOC5m30
>>217-218
こいつ・・・動くぞ、すげーー!

>というか、キーコードって手入力前提でないの?
最終的に send,{vkXX} という感じでやった方が楽かなーと思ったので

さて、>>218 の解読作業に移ります。ありがとう!!

223:名無しさん@お腹いっぱい。
09/02/07 02:39:29 81yNBSmE0
>>216
参考になりました
ありがとうございました

224:名無しさん@お腹いっぱい。
09/02/07 15:22:29 WmNZzOvm0
スクリプト内にGUIを表示するサブルーチンが複数あって、
それぞれのGUIの中で同じ名前のボタンを追加した場合、
ボタンを押したときに呼び出されるサブルーチンを区別することは
できないのでしょうか?
↓のようにすると二重定義でエラーになってしまいます。

Test1:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test1
Return

Test2:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test2
Return

225:名無しさん@お腹いっぱい。
09/02/07 15:33:57 AcAuyp/00
押しいなぁ。
ボタン名省略時のデフォルトサブルーチンラベルまで分かってて、ボタン名重複時のところが分かってない、と。
もう一度解説読んでみ。

226:名無しさん@お腹いっぱい。
09/02/07 15:37:05 AcAuyp/00
ん?もしかして Test1 と Test2 って別窓(GUI)にしたいのかな?
だったら、GUI番号を変えた二つのGUIを用意するか、毎回破棄(Destroy)するとかすればいい。
どっちにしろサブルーチンラベルの重複で怒られるとは思うけど。

227:224
09/02/07 15:46:42 WmNZzOvm0
>>225-226
あぁ G オプションってこういうときのためか
Gui, Add, Button, GButton1inTest2, 1
でいけました。ありがとうございました。


228:名無しさん@お腹いっぱい。
09/02/07 18:34:02 OHL9IjH/0
語学関係のもの(英検、TOEIC、留学)がまったくない私が
語学について聞かれたらなんて答えるべきですか?

229:名無しさん@お腹いっぱい。
09/02/07 22:07:43 vTbfdAUL0
ジュワワワジュワワ、 ジュワジュワジュジュワワワワワ?

230:名無しさん@お腹いっぱい。
09/02/07 22:16:28 WFpsFaYj0
面接官「ジュワ!ワタシジュワワイイビョウインシッテルヨワワ」

231:名無しさん@お腹いっぱい。
09/02/07 23:02:35 SzMrA22TP
Vista環境だと、コンマ使うショートカット(#,::Run,cmd みたいな)
のが動作しないみたいのがえらい不便だ。
これだけでXPに戻しそう…

232:名無しさん@お腹いっぱい。
09/02/07 23:46:19 +Kjk/oX50
>>231
スクリプトに何か問題があるんじゃない?
Vista64Ultで普通に動く・

233:名無しさん@お腹いっぱい。
09/02/08 13:37:15 lpNI9P4b0
>>231
原因決め付けすぎわろた。
おいらもVista環境だけど、そのスクリプトでまったく問題なく動くぜ。
AutoHotkey ver 1.0.47.06

234:名無しさん@お腹いっぱい。
09/02/08 20:56:33 sclNqxNe0
AutoHotKey.iniに、ウインドウなどを定期監視するルーチンをつけくわえたいと思っているのですが、
上手く動作しません。

AutoHotKey.iniの最後に以下のように書き足して、reloadしているのですが、SplashTextがでてくれないのです

#Persistent

SetTimer, OnTimer, 1000
return

OnTimer:
SplashTextOn,,, MAGE...
Sleep, 2000
SplashTextOff
return


235:234
09/02/08 21:13:15 sclNqxNe0
SetTimer, OnTimer, 1000
をAutoHotKey.iniの先頭の方に記述したらいけました。

これだと、上記とSetTimerとOnTimerの位置がちらばってしまうので、

SetTimer, OnTimer, 1000
Goto, NextOnTimer
OnTimer:
 SplashTextOn,,, MAGE...
 Sleep, 2000
 SplashTextOff
return
NextOnTimer:

+0::Send, 0000
: ;以下、ホットキーの設定が続く

という風にAutoHotKey.iniの最初の方に書いたら、
今度は、NextOnTimer: の後のホットキーの入力が、起動時(reload時)に誤爆してしまうようになりました。
上記例では、0000が強制発動します。

この辺の挙動がいまいちわかりません・・・
どこかに記述はありませんでしょうか?

236:名無しさん@お腹いっぱい。
09/02/08 21:14:11 yKg3PII70
> AutoHotKey.iniの最後に以下のように書き足して
            ~~~~~~~
ってのがマズいんじゃないかと。

> #Persistent
> SetTimer, OnTimer, 1000
この2行は多分ホットキー定義より後ろに書いてあると思うんで
ファイルの頭に持ってきた方がいい。

頭から読んで順次実行するところ(Autoexecブロック)として扱われていない
死にコード担ってると思う。

237:名無しさん@お腹いっぱい。
09/02/08 21:21:06 yKg3PII70
うひ。解決してやがるw

URLリンク(lukewarm.s101.xrea.com)
> スクリプトが読み込まれると、最初にReturnかExitが実行されるか、
> ホットキーラベルが記述されている行やスクリプトの終わりに達するまで、スクリプトが実行される。
> この部分のことを、auto-executeセクションと呼ぶ。

これは Gotoがあっても同じなわけ。
で、ラベルって関数じゃないから上から読んで実行するから
Gotoで飛んで先のコードも順次実行するだけ。

要は
> Goto, NextOnTimer

return
にする


238:234
09/02/08 21:33:53 sclNqxNe0
>>236
なるほどホットキー定義より先に書かないといけないんですね。

>>234のコードを丸ごと先頭に書いても問題ない感じでした。
returnしてますけど、後ろのホットキー定義はちゃんと定義されるんですね・・・。

いろいろ試してみて、>>234のコードをAutoHotkey.iniに書かずに、
別ファイルに書いて、最初に#includeするようにしても問題ない感じなので、
管理楽だしそっちで行ってみようと思います。

ありがとうございました。



239:234
09/02/08 21:34:56 sclNqxNe0
>>237
記述もあったのか!理解が深まり助かりました。
ありがとう。

240:名無しさん@お腹いっぱい。
09/02/09 22:16:03 s0aAmitG0
キーのリマップで、キーリピートしないようにするにはどうしたらよいですか?
回数指定で1としても、Pauseキーなどからリマップしたものは
リピートしてしまうようなのですが・・・

241:名無しさん@お腹いっぱい。
09/02/09 22:25:30 qaZxLjlv0
リマップは所詮リマップなので

キーを Send したあとに、キーが離されるのを待つようにすればいい
KeyWaitを使うと楽

242:240
09/02/09 23:33:15 s0aAmitG0
>>241
なるほど、うまくいきました。ありがとうございます。
Pause::
KeyWait, Pause
Send, {キー}
return

243:名無しさん@お腹いっぱい。
09/02/10 00:02:17 y3Hmn7JH0
このソフト今しがた知ったんだけど使えるようになるとかなり便利そうだなw
コンピュータ言語知らない俺には敷居高いが・・・

10分毎に同じ操作を永遠に繰り返させるのってどういうコードになるんだ?

244:名無しさん@お腹いっぱい。
09/02/10 00:05:43 2gVYx17+0
タイマーでおk

245:名無しさん@お腹いっぱい。
09/02/10 00:08:18 y3Hmn7JH0
>>244
上でも出てる
SetTimer,OnTimer,xxxxxx
でいけるわけね納得

246:名無しさん@お腹いっぱい。
09/02/10 02:28:03 5/WxU7qW0
AutoHotkey楽しすぎ

ちょっとした自動応答的なボタン押下とか
(AutoPushButton win32がVistaで動かないし、ウインドウ検知方法も融通も利かなくて長い間代替探してた)
長い間最前面にでしゃばってくるスプラッシュウインドウを後ろに回したりとかしようとして、
Delphiでプログラムでも組むか、マンドクセ('A`)と思ってたことが、
思いついてからものの数分でできてしまうじゃないかー。
すばらしいソフトだ。
簡易言語だと心の底で馬鹿にしてて正直すまなかった。

ホットキー定義以外のことにも使い出してから、やたら普段の操作が楽になったよ。

247:名無しさん@お腹いっぱい。
09/02/10 04:00:00 4LTAENh50
ウィンドウを作成してチェックボックスをクリックしたら
タスクトレイに収納されてしまいます
チェックはできているようなのですが

どうすれば常にウィンドウを表示できるのでしょうか


Gui, Add, Text, x10 y20 w90, test
Gui, Add, Checkbox, vStateOK gCheckOK, ok ?
Gui, Show, x100 y100 h100 w110, aaa
Return


CheckOK:
GUI, Submit
OK = StateOK
Return


#a::MsgBox,OK: %OK%



248:名無しさん@お腹いっぱい。
09/02/10 04:10:55 CECmGA9+0
タスクトレイにあるアプリを右クリックしたときに出るメニュー

これをPostMessageで実行したいのですが
WinTitleには何を指定すればよいのでしょうか
アプリのウィンドウを指定しても駄目みたいです

249:名無しさん@お腹いっぱい。
09/02/10 04:36:17 0gok775Y0
>>247
GUI, Submit , NoHide
「NoHide」を指定すると、ウィンドウを非表示にせずに、変数への反映だけを行う。

>>248
とりあえずDetectHiddenText, On|Off を使ってるかどうかだね。

250:名無しさん@お腹いっぱい。
09/02/10 04:37:04 0gok775Y0
はい間違えたー
DetectHiddenWindows

251:247
09/02/10 04:38:07 4LTAENh50
>>249
おお、ありがとうございます。


252:248
09/02/10 07:49:43 s6avSLrT0
>>249
ありがとうございます
基本的なことだったんですね
スレ汚し失礼しました

253:名無しさん@お腹いっぱい。
09/02/11 20:27:22 oCH0A50w0
どうにもうまくいかないので教えてください。
Firefoxでステータスバーに出るURLを取得しようとしているのですが
StatusBarGetText WinGetText WinGetText では空白のままで何も取得できません。
どなたかFirefoxのステータスバーの情報を取得する方法を教えてください。

254:名無しさん@お腹いっぱい。
09/02/11 20:53:00 i+mKzUyY0
Window Spy で見たら分かると思うけど
ステータスバー(に見える所)のクラスが ahk_class MozillaUIWindowClass なはず。
で、これって普通のウィンドウのステータスバーとは違ってAHKのコマンドじゃ情報とれない。

255:名無しさん@お腹いっぱい。
09/02/11 21:20:11 vlusE0/P0
operaとかffとか何かと難しいわな

256:253
09/02/11 21:26:56 oCH0A50w0
皆様どうもありがとうございます。
どうにもならん事もあるのですね。

257:名無しさん@お腹いっぱい。
09/02/11 21:36:16 PyctzTlz0
流行らせるページのMouseGesture.ahkを使ってるのですが、他のスクリプトと同時にincludeができません……

#include MouseGesture.ahk
#include aaa.ahk
return
とするとタスクトレイの右クリックメニューにはMouseGestureのメニューが追加されますが
MouseGesture自体は動きません。aaa.ahkは読み込まれているようです。
#include 1.ahkの行を消すと普通に動きます。
説明のページに書いてある「Gosub,MG_Init」なども適当に追加してみましたが、
あまり変わり映えがしません……
何が悪いのかどなたか教えていただけませんか;

258:名無しさん@お腹いっぱい。
09/02/11 21:56:06 eSu8v8vr0
じゃあ別々に動かせ

259:名無しさん@お腹いっぱい。
09/02/12 18:55:35 Cq/OSsWb0
ブラウザ上の画像を保存する関数ってないの?

260:名無しさん@お腹いっぱい。
09/02/12 19:25:19 nX4GYxrz0
ない

261:名無しさん@お腹いっぱい。
09/02/12 23:46:28 iXdCSKaG0
作れば良いだけだがな

初心者は関数ってのは組込のを使うだけだと思ってるようだが
プログラムでもスクリプトでもこういった言語では
関数ってのは作るものだから
まあ中には関数が作れない言語もあるけど、これは該当しないし

262:名無しさん@お腹いっぱい。
09/02/13 00:34:12 EUev75pp0
作るってもキーマクロでそ

263:名無しさん@お腹いっぱい。
09/02/13 00:39:11 tq73/xcp0
いや、あらゆる処理が作れるだろ、dll呼び出しもできるし

264:名無しさん@お腹いっぱい。
09/02/13 00:52:14 P/hV8GiU0
AutoScriptWriter使えばキーマクロっぽいこともできるんだよな
ほとんど利用したことはないが。

>257
例によってAutoExecuteセクションの記述飛ばしてて引っかかってるんじゃね?

265:名無しさん@お腹いっぱい。
09/02/13 01:15:10 EUev75pp0
>>263
確かにそうだけどさ、、AHKの範疇は超えちまうわな


AutoScriptWriter はテキストエディタのマクロみたく操作がコードになってくれるから
全然コマンドを知らない人が後からマニュアル見ながら改変するのには便利かなぁとは思う。
出来たコードはかなりしょっぱいけど・・・
マクロ登録の貧弱さという点で、UWSCとかより弱いと言われている点だな

266:名無しさん@お腹いっぱい。
09/02/13 09:36:47 PZx5JzBI0
>>259
(比較的)楽な方法
・キーマクロで何とかする
・適当なダウンローダ探して連携する
・URLDownloadToFile でhtmlを取得して、リンク抽出して個別に落す

そりゃ、comやdll使えば何でも出来るだろうが、
やはりそこは作成者・利用者の技能と、それを現実的なコストで作れるかというのも考慮すべきではないかと。


267:名無しさん@お腹いっぱい。
09/02/13 12:37:16 P/hV8GiU0
ああ、ID:EUev75pp0 の言ってるキーマクロっていうのは
Send や MouseClick によるキーエミュレーション動作のことなのか。

まんまエディタのキーボードマクロみたいな、ユーザー操作を記憶して
再実行してくれるものを想像してたから混乱したわ

268:名無しさん@お腹いっぱい。
09/02/14 04:16:50 CZpXyFEM0
C などの unless って Autohotkey では使用できないのでしょうか
unless に相当する物をしようしたいときは

if hoge = 1 else
{
msgbox,hello!
}

こういう風に書くしかないのでしょうか
それとももっとスマートな書き方があるのでしょうか

269:名無しさん@お腹いっぱい。
09/02/14 06:39:35 xPcJgk5F0
論理否定

270:名無しさん@お腹いっぱい。
09/02/14 07:54:37 TE2mD3kq0
if hoge != 1

271:名無しさん@お腹いっぱい。
09/02/14 08:20:50 iCnD4vMa0
>>269-270
ああ、なるほど
単純なことなのに分かっていませんでした
ありがとうございます。

272:名無しさん@お腹いっぱい。
09/02/14 10:14:14 dHhfIlz20
>268
C に unless はないべ。Perl とか Ruby にはあるらしいが。

273:名無しさん@お腹いっぱい。
09/02/14 12:25:08 wQWZhHiF0
unlessって使う機会ある?
ド・モルガンの法則を使えばいいだけじゃん。

274:名無しさん@お腹いっぱい。
09/02/14 13:19:42 T1oNA6o40
iniファイルに書いたkeyをHotkeyにアサインした場合ってどう書くの?

test.ini
+++++++++++++++++++++
[hoge]
Key=#z
+++++++++++++++++++

IniRead, h_key, test.ini , hoge, Key
;MsgBox , "%h_key%" ;ちゃんと値は取得できている

h_key::
;↑ダメ
%h_key%::
;↑ダメ
"%h_key%"::
;↑ダメ

275:名無しさん@お腹いっぱい。
09/02/14 14:30:36 7OA6UMgE0
Hotkey, %h_key%, Label で普通に割り当てできるが?

276:名無しさん@お腹いっぱい。
09/02/14 15:21:43 7uL3RWEi0
惜しいなぁ。実に惜しい。
まぁ、>>275の言うとおりなんだけど。
ラベルの方を動的に変えようっていうのはちょっと驚いた。

ホットキーラベルもサブルーチンラベルの一つ。
かつ、有効なホットキーラベルとして使える文字で構成されていなければならない。

ソース見たりしたわけじゃないけど、
AHKは起動(初期化)時にスクリプトを全部見て「::」のあるラベルを探して、
Hotkey, 「キー名」, 「キー名」 相当の事をしてホットキー登録しているはず。
で、これは実行するスクリプトのAutoexecブロックより先に行われている(はず)。

で、なんで>>274が駄目かっつーと
エラーダイアログ見れば分かると思うけど、実行時エラーじゃなく、
パース時のエラー(文法エラーとか)でしょ。
初期化時には、 h_key なんつー有効なホットキーはないし、
ユーザが使える変数なんかも無いわけで初期化エラーになる。
上から順に書いてあってその通りに処理しているように見えるけど実はそうじゃない。
IniRead までたどり着いてない。

277:名無しさん@お腹いっぱい。
09/02/14 17:55:29 bE1sAjs50
WinSet,Topの
>システムの設定によっては動作しない。
の条件ってなんだろう?

278:名無しさん@お腹いっぱい。
09/02/14 20:29:40 FTwXZkWh0
>>276
なぁオマエ一言多いとかリアルで言われないか?

279:名無しさん@お腹いっぱい。
09/02/14 20:58:12 mkT/24Fx0
>>278
オマエ一言多い

280:名無しさん@お腹いっぱい。
09/02/14 21:24:53 sliL46ld0
>>279
オマエ一こt(ry

281:名無しさん@お腹いっぱい。
09/02/14 21:53:18 fL3JIfIu0
トレイアイコンをクリックしたら実行するってどうやるの?

282:名無しさん@お腹いっぱい。
09/02/15 12:01:39 VXj0TK7a0
なんつーか、大したことないんだが274みたいな奴って発想力が面白い。
プログラムってスキルも大事だが発想力だと思う瞬間だったよ。

283:名無しさん@お腹いっぱい。
09/02/15 14:03:58 BLcyg5Ix0
以上、本人でした。

284:名無しさん@お腹いっぱい。
09/02/15 14:16:47 4Lz/N4h80
( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \

285:名無しさん@お腹いっぱい。
09/02/15 16:34:58 WX2c84/Q0
まあ、スマートではないな>>276

286:名無しさん@お腹いっぱい。
09/02/16 02:28:52 mgBRF9yu0
SetTimerで
WinGetPos,, Ypos,,, A
if (Ypos <= 30)
 WinMove, A,,, 19,,,,
Ypos =
return
というのを回していると、Firefoxで右クリックメニューが一瞬で消えてしまいます。
間隔を500~2000にしたり、同じ事をLoopでやってみても同じで、この現象が起きるのは
Firefoxだけです。
どうかアドバイスお願いします

287:名無しさん@お腹いっぱい。
09/02/16 03:13:35 mMn42qaU0
if(Ypos <= 30 && Ypos != 19)
にしたらええんじゃないのか?

288:名無しさん@お腹いっぱい。
09/02/16 03:19:38 axPHiozx0
クリックすれば指定されたurlに飛ぶような文字列を
msgboxで出力したいのですがどうすればよいのでしょうか

たとえば
MsgBox,0, test,google
という出力をして、そのgoogleの部分をクリックすればURLリンク(www.google.co.jp)に飛ぶのです。
htmlが使えるなら
MsgBox,0, test,<a href="URLリンク(www.google.co.jp)">google</a>
こういうことです


289:名無しさん@お腹いっぱい。
09/02/16 05:21:27 w558LR820
>>288
GuiかMenu。
ポップアップメニューだと一回一回消えるから、Guiでつくればいいかもね。

290:名無しさん@お腹いっぱい。
09/02/16 05:25:35 w558LR820
>>281
流行らせるページの「タスクトレイアイコン操作」で望みが叶うかも。
何を望んでいるのかはわからんが。

291:名無しさん@お腹いっぱい。
09/02/16 05:39:14 w558LR820
>>286
簡易の絶対領域みたいだね。TTBaseプラグインでもあったな。

292:名無しさん@お腹いっぱい。
09/02/16 06:36:37 DfB2sRU60
>>289
なるほど
その手がありましたか
やってみます

293:名無しさん@お腹いっぱい。
09/02/16 09:20:33 HnxszwKY0
>>291
質問者じゃないけど、どういう事か教えてくれまいか

294:名無しさん@お腹いっぱい。
09/02/16 09:29:13 gRNTeVF80
ggrksが来るぞ

295:名無しさん@お腹いっぱい。
09/02/16 10:28:05 m36Y1Mz60
絶対領域はググっても違うもんばっか出てくる。
URLリンク(www.forest.impress.co.jp)

296:名無しさん@お腹いっぱい。
09/02/16 13:34:08 w558LR820
あれ?違った?>>295みたいなことをしたいのかと思ったわw混乱させてゴメンね。

297:名無しさん@お腹いっぱい。
09/02/16 15:56:36 dAYg3thQ0
>>290
それってタスクトレイアイコンを直接操作するためのものじゃないの?

298:名無しさん@お腹いっぱい。
09/02/16 22:15:59 mgBRF9yu0
>>287
即レスくれたのに遅くなってすみません、
if(Ypos <= 30 && Ypos != 19)にしたら快適動作で幸せです。
&& Ypos != 19が必要だった理由が今ひとつ分かっていませんが勉強してみます。
有難うございました

299:名無しさん@お腹いっぱい。
09/02/17 00:33:23 Uxje6XHz0
guiでウィンドウの中に exit ボタンを作成し
そのボタンを押すとそのウィンドウを閉じるだけの物をつくりたいです

はやらせるページのにあるものを使用して次のような物を作ったものの
うまく動きません

Gui,Add,Text,,testtest
GUI,Add,Button,,Exit

gui,show

ButtonExit:
ExitApp

どこを直せばよいのでしょうか

300:名無しさん@お腹いっぱい。
09/02/17 00:43:51 p7oLYgT60
gui,show
return
ここで終わらせないとExitAppまでいっちゃうぞ。

301:名無しさん@お腹いっぱい。
09/02/17 01:20:14 Uxje6XHz0
>>300
あ、普通に動きました
そりゃそうですね
ご指摘ありがとうございます。

302:274
09/02/17 01:36:11 ChZCT6AI0
>>275-276
ありがとうございます。無事できました。
276さんの書いていることは自分なりに勉強になりました。

便乗するようで悪いのですが、多重起動をしようとする際現状だと英語のメッセージが出るんですが
Menu, TRAY, NoStandard
のように消して、日本語にすることって可能でしょうか?

303:名無しさん@お腹いっぱい。
09/02/17 02:38:11 t03ashNM0
      ドッカーン!
      (⌒⌒⌒)
      |||
     _____
   /::::::::::::::::::::::::::\~プーン     
  /:::::::::::::::::::::::::::::::\~プーン  
  |:::::::::::::;;;;;;|_|_|_|_|~プーン   
  |;;;;;;;;;;ノ∪  \,) ,,/ ヽ~      
  |::( 6∪ ー─◎─◎ )~      
  |ノ  (∵∴ ( o o)∴)~      
  | ∪< ∵∵   3 ∵> ムッキー!   
  \        ⌒ ノ______ 
    \_____/ |   | ̄ ̄\ \
___/      \   |   |    | ̄ ̄|
|:::::::/  \___   \|   |    |__|
|:::::::| \____|⊃⊂|__|__/ /
|:::::/        | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕

304:名無しさん@お腹いっぱい。
09/02/17 14:45:20 Bio3yT//0
やろうと思えば、ウィンドウの監視と
COntrolsettextで出来なくもなさそうだけど…

305:名無しさん@お腹いっぱい。
09/02/18 04:54:19 ZSSUooit0
若干スレ違いかもしれませんが、
WindowsのHDDコントローラ(ATA)のモードが、
UDMAになってるか、PIOになっているかを、
ahkから読み取るには、どのようにすればできそうでしょうか。

何台もPCを使っていると、いつのまにかPIOになっていることがあったので、
それを起動時にチェックしてバルーン通知したいと考えています。

306:名無しさん@お腹いっぱい。
09/02/18 12:29:43 YsZiDyJK0
レジストリの値を読むとか?

307:名無しさん@お腹いっぱい。
09/02/18 17:28:59 o28us3FR0
括弧 { を入力した後 } を加えてカーソルを中に入れるように
~+[::Send,}{left}
return
と記述したのですが } と{left}しか送られません
他の括弧は たとえば<> 同じように
~+,::Send,>{left}
return
でうまくいってるのですが、どのようにしたら {} でも成功するでしょうか?


308:名無しさん@お腹いっぱい。
09/02/18 19:06:54 FVUyG2Or0
>>307
つ 特殊記号のエスケープ
  URLリンク(lukewarm.s101.xrea.com)


309:名無しさん@お腹いっぱい。
09/02/18 19:34:48 29d3Le160
俺も>>231みたいに「 , 」(コンマ)を使うホットキーが使えなかった。
コンマ使うホットキーを今使いたいわけじゃないが、
もし必要になった時に困るので調べてみた。OSはWinXP SP3。
 
以下試したこと
 ×Hotkeyコマンド( Hotkey,% ","~ )
 ×Hotkeyラベル( ,:: ~ )
 ×GetKeyState(",","P")→状態取れず
 ×本体バージョンをあれこれ変えた
 ○別PCで同じスクリプトを試した(WinXP SP2)
 ○「 vkBCsc033 」形式で書く
 
vkBCsc033を使った方が確実かもしれない。

310:名無しさん@お腹いっぱい。
09/02/18 20:56:25 o28us3FR0
>>308
ありがとう
解決しました

311:名無しさん@お腹いっぱい。
09/02/19 00:32:15 nBgazVqW0
>>219-220
これの解決法ないでしょうか?
似たようなスクリプト作ったんですがやはり数分すると
クリップボードの監視が無効になってしまいます。

312:名無しさん@お腹いっぱい。
09/02/19 00:58:08 YWf8g0hR0
timerでreload仕込むとか

313:名無しさん@お腹いっぱい。
09/02/19 11:09:45 KfP6MoHK0
OnClipboardChange: じゃなくて ClipWaitで監視してみるとか?
あとはAPI のクリップボード関数で直接弄るか。

関係ないが、クリップボード内容がEXCELデータのときに
ClipboardALLで丸ごと待避しようとするとExcelがハングする。
DllCall("GetClipboardOwner",Int) でオーナーウィンドウを調べて
Excelがオーナーの時は テキスト内容だけ保存するようにして回避してるがちと面倒だ。

314:名無しさん@お腹いっぱい。
09/02/19 11:41:34 KfP6MoHK0
そういや昔あったクリップボードユーティリティースレでもこの手の話題あったな。

確かクリップボードの変更通知はクリップボードビューアチェインに接続されたソフト間での
バケツリレー方式で伝えられていくので、間に行儀の悪いソフトがいるとチェインから勝手に
外されてしまって、それ以降の変更通知が受け取れなくなるって話だったような。
巷によくあるクリップボード系ユーティリティーでは定期的にチェイン接続し直すことで
対策を取ってるとかだったと思う。

よくわからんがAHKでも ONMessage()で CallBackサポートされてるし、具体的なサンプルは
clcl のソースとか見ればたぶんできるんじゃね。
英語できるんならAHK作者氏に対策方法添えて要望出すのが手っ取り早いとも思うけど。

315:名無しさん@お腹いっぱい。
09/02/19 12:09:33 BAYW6hF70
流れ無視して悪いがさっぱり分からんので、教えて頂きたい

例えば、
 -t C:\Documents and Settings C:\Program Files
というような文字列を、
 -t "C:\Documents and Settings" "C:\Program Files"
というように、パスっぽい文字列に引用符をつけるには、
どうすればいいのだろうか?


316:名無しさん@お腹いっぱい。
09/02/19 12:53:07 IHzf1wv30
文字列の中に実在するパスがあったら囲む、くらいじゃないの

317:名無しさん@お腹いっぱい。
09/02/19 13:27:25 IHzf1wv30
適当に作った。かっこ悪い。

Hoge(str) {
 StringSplit, arr, str, %A_Space%
 idx := 0
 Loop {
  if (idx++ >= arr0)
   break
  c := arr0 - idx
  Loop {
   p := arr%idx%
   Loop, %c%
    i := idx + A_Index, p .= A_Space . arr%i%
   if FileExist(p) {
    arr%idx% := """" arr%idx%, idx += c, arr%idx% := arr%idx% . """"
    break
   }
   if (c-- < 1)
    break
  }
 }
 Loop, %arr0%
  ret .= ((A_index > 1) ? A_Space : "" ) . arr%A_Index%
 return ret
}

318:名無しさん@お腹いっぱい。
09/02/19 13:39:31 BAYW6hF70
>>316-317
ぐはっ、わざわざ作って頂けるとは!
よくそんなすぐに作れるな、初心者からすれば驚愕ですよ
ありがとー

319:名無しさん@お腹いっぱい。
09/02/20 18:36:07 +ofqUOOa0
vistaじゃFileSetTime使えないのかな

320:名無しさん@お腹いっぱい。
09/02/21 21:01:51 FzZoDrMY0
FirefoxにAlt+Rで、戻るを割り当てたいのですが、
autohotkeyからPostMessageを送って設定することは可能でしょうか?
可能であるなら、下の0x111,28690,0,,A に相当する値をお教えいただけないでしょうか? m(__)m
   !R::PostMessage,0x111,28690,0,,A ;// 戻るを割り当てたい
firefoxでPDFを開くとフォーカスがacrobatに奪われるので、
autohotokeyを使って、戻るのキーを割り当てられないかと試行錯誤しております

321:名無しさん@お腹いっぱい。
09/02/21 21:52:11 0EOzQQjN0
うちは↓でいける @Fx3.0.6 on XP SP3
#IfWinActive, ahk_class MozillaUIWindowClass
!Left::Send, {Browser_Back}
!Right::Send, {Browser_Forward}

322:320
09/02/21 22:10:01 FzZoDrMY0
>>321
ありがとうございます
助かりました

323:名無しさん@お腹いっぱい。
09/02/22 20:03:09 qnu0ZxRB0
自分も前から気になってたけど、FirefoxはSendMessageとかPostMessageは受け取らないのでしょうか?
非アクティブのままにautohotkeyから操作したいんですけど?

324:名無しさん@お腹いっぱい。
09/02/22 20:13:46 q+YO7qML0
ご存じの通りマルチプラットフォームのものでWin専用って訳じゃないから、
ウィンドウメッセージ受けとってもスルーされるものが多いと思う。

WM_MOUSEWHEEL とか WM_KEYDOWN/UP などは受けとってそれなりに動く。
メニューバーやステータスバーもウィンドウズのものじゃなく独自に作ったもの。(>>254参照)
Firefoxだけじゃなく Java とかもそうだけどそういうのをコントロールするのはちと厳しいね。

325:名無しさん@お腹いっぱい。
09/02/22 22:56:59 lt/+4kjg0
確実性には乏しいかも知れんが
ControlSend か ControlClick あたり試してみたらどうだろうか

326:名無しさん@お腹いっぱい。
09/02/22 22:58:01 qnu0ZxRB0
>マルチプラットフォーム

これをすっかり忘れてました、そう言われると出来なくても当然って感じですね
ありがとうございました。

327:名無しさん@お腹いっぱい。
09/02/22 23:19:18 qnu0ZxRB0
>>325
ありがとうございます。
今ちょっと試してみたら、ControlSendでなりそうです。

328:名無しさん@お腹いっぱい。
09/02/23 00:59:34 chhOXYqK0
Enterを右Ctrlにするやり方がわかりません。
Enter::RCtrlでBSを入れようとすると
Enter+Hで1回はBS入るけど、
Enter押したままもう一度Hを入れると
こんどはそのままHが入力されます。
どうしたらいいんでしょうか?

329:名無しさん@お腹いっぱい。
09/02/23 07:31:59 xVptRsNb0
コロンのhotkeyに割り当てる方法はないでしょうか?
:::Send,{A} ;// : をAに割り当て
vkBAsc028::Send,{A} ;// : をAに割り当て
のどちらで設定しても、:のhotkeyが有効になりません

セミコロンだと以下で割り当てられるのですが…
vkBBsc027::Send,{A}


330:名無しさん@お腹いっぱい。
09/02/23 21:29:51 6awX2jgS0
AutoHotkeyを流行らせるページ
URLリンク(lukewarm.s101.xrea.com)
↑の入力置換関連部分を無視すればAutoIt3の日本語ドキュメントになる?

しかしAutoIt日本語ドキュメントなさ杉

331:名無しさん@お腹いっぱい。
09/02/23 23:50:07 KDZEcOqx0
結構書き方違う

332:名無しさん@お腹いっぱい。
09/02/24 03:37:01 mnDWmi6d0
mayuでは難しい部分を、最近ahkで作り始めました。
VIMが1枚だけ存在したらアクティブに、
2枚以上存在したらリストを表示するようにしたいのですが、
以下の状態で既に詰んでます...どなたかご教示願います。
#^+!f2::
SetTitleMatchMode,2
WinGet, title, Count, - GVIM
If %title% = 0
MsgBox, none
else if %title% = 1
MsgBox, vim
else
MsgBox, %title%

ウインドウ数は取得できてるようなのですが...

333:名無しさん@お腹いっぱい。
09/02/24 03:48:04 nmUnQgbz0
If title = 0

334:332
09/02/24 04:06:13 mnDWmi6d0
>>333
ありがとうです!
盲点でした。

335:名無しさん@お腹いっぱい。
09/02/24 06:40:25 9IBsCb9z0
変数は常に%%で囲むっていう風に統一してくれればいいのに。

336:名無しさん@お腹いっぱい。
09/02/24 08:53:53 hmO2qa6n0
if 1 = 0

こんな書き方になっちゃうもんなぁ。

337:名無しさん@お腹いっぱい。
09/02/24 09:20:34 ZrVDgkhH0
文字列リテラルは一般の言語様式に合わせてくれた方がいいな
シングル・ダブルクォートで囲むとか

338:名無しさん@お腹いっぱい。
09/02/24 15:13:52 10tP/ti50
SandS.ahkの2008.09.21版かそれ以降のものがほしいのですが、どなたかお願い
できないでしょうか。


339:名無しさん@お腹いっぱい。
09/02/24 15:23:09 A2x/mr5E0
あぷろだにまだ上がってるよ
URLリンク(lukewarm.s101.xrea.com)

でも SandS だったら前スレ264のがシンプルかつスマートでいいと思う。

> 264 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/09/21(日) 22:24:04 ID:jd9yjK/i0
> 自分の Shift & Space はこれ。
>
> Space Up:: Send, % "{Shift Up}" (A_TimeSincePriorHotkey < 200 ? " " : "")
> +Space:: Send, +{Space}
> >+Space:: Return
> Space:: RShift

340:名無しさん@お腹いっぱい。
09/02/24 16:20:53 10tP/ti50
>>339
どうもありがとうございます。とても助かりました。
(A_TimeSincePriorHotkey < 200 ? " " : "")
てあたりが気がきいていると思いました。

341:名無しさん@お腹いっぱい。
09/02/26 14:47:02 qGUJzHwS0
最長マッチのHotstringを作りたいのですが
どうすればよいのでしょうか




342:名無しさん@お腹いっぱい。
09/02/26 17:32:35 zx85xhcp0
Feb 25, 2009
Version 1.0.48 is released.

343:名無しさん@お腹いっぱい。
09/02/26 18:09:02 N/JDSNBe0
パッチ等を当てずに安心して2バイトコードを使える日は、いつになるのだろうか・・・

344:名無しさん@お腹いっぱい。
09/02/26 21:06:58 eljuCyAE0
URLリンク(www.autohotkey.com) の適当な訳

1.0.48 - February 25, 2009

■互換性
後方互換性に影響するであろう変更は、今回より、変数に格納された浮動小数点値が高精度なったこと。
数値精度の差に依存するスクリプトは精査して、更新する必要があるかも。
"SetFormat Float" (例: SetFormat, Float, 0.6) を *各所* で利用することで互換性が維持できるはず。
「SetFormatフロート」は高精度値を不活化するけど、新しい速い浮動小数点演算のうちのいくらかを使わない。

■パフォーマンス
このリリースの主なテーマはよりより速い実行。
スクリプトはほとんどすべてより速く実行できるはず- 特に式とか整数の評価の多用では(場合によっちゃ通常の3倍!)。
完全なる恩恵を得るには、スクリプトは、SetFormatを使用しないようにするべきか、あるいはSetFormatの速いモードを使用するべき。

345:名無しさん@お腹いっぱい。
09/02/26 21:07:22 eljuCyAE0
■性能改善
- 式と関数のコンパイルをコッテリとさせて、より速くなった(とくに複雑な製数式で、カンマも含む)
- 変数に格納されたバイナリ数値をキャッシュさせて文字列(から/へ)変換するのをやめるようにした。これで変数の算術演算が速くなった。
- 式やマッチ/比較コマンド内でのリテラルの数値をバイナリ数値とするようにしたことにより速くなった。例) X+5 とか "if x > 5"
- ブロックを持つループやIFやELSEを "{" をスキップすることで速く実行できるようになった。この結果、"{" が ListLinesで省略されるようになった。
- スレッド作成のパフォーマンスの改善、OnMessage(), RegisterCallback(), GUIイベントの rapid-fireスレッドを補佐する。(註:よくわからん)
■既存スクリプトに影響するかもしれない変更点(トップで記述されているより高精度な浮動小数点以外のもの)

- "SetFormat, Integer, Hex" が有効な場合、リテラルの10進値を変数に格納するときに16進数に変換する。これは普通表示用途なはず。
- OnMessage()パフォーマンスについて、メッセージ番号とHWNDは無条件で16進数でなく通常の数値としてやってくる。これは通常表示用となはず。
- パフォーマンスにおける様々な改良を達成するために、スクリプトは今よりちょっと多くのメモリを使用する。(変数と式の数に比例している)
- if var is time" と "YYYYMMDDHHMISS"形式のタイムスタンプを変更・修正し、月の範囲が1-12内に無い場合不正なものとして認識するようにした。[ニックありがと]
- Dynamic関数呼び出しを変更・改善し、関数に定義されたパラメタ数よりも多いものも許容するようにした。このときパラメタは評価はされるが破棄される。[Lexikosが開発(註:Autohotkey_Lの人)]

■その他の変更点
- Autohotkey_Lより追加 → IsFunc() / while-loop / assume-static / A_IsPaused / A_IsCritical / WheelLeft と WheelRight
- NumPutで UInt64をサポート
- UPXを変えた

346:名無しさん@お腹いっぱい。
09/02/26 21:11:50 eljuCyAE0
バグフィックスは面倒なので割愛w


#if は取り入れなかったのかぁ・・・残念

347:名無しさん@お腹いっぱい。
09/02/27 00:57:18 aRIZ1QSP0
複数のウインドウを高速に一度に前面にもってくることってできないでしょうか?
今は、10枚くらいあるウインドウをWinActivateとLoopで前面化を行っていますが、
かなりまったりと順番に前面にでてきてしまいます。
もとパッっと出すことはできないものかなあと思いまして。

今はこんな感じでやってます。(指定のexeのウインドウを全部前に出す例)

+^!e::
Process, Exist, MageMogeChart.exe
if ErrorLevel = 0
 return
WinGet, id, list, ahk_pid %ErrorLevel%
Loop, %id%
{
  StringTrimRight, this_id, id%a_index%, 0
  WinGetTitle, this_title, ahk_id %this_id%
  WinActivate, ahk_id %this_id%
}
return

348:名無しさん@お腹いっぱい。
09/02/27 01:25:30 c+2Jobtp0
SetWinDelayでコマンド発行後のウェイトを指定してやる。
ウィンドウの重なりが逆順になると思うけど。

v1.0.48用で書いてみた

SetWinDelay, 10
Process, Exist, (ここにExe名)
WinGet, list, LIST, ahk_pid %ErrorLevel%
while list>0 {
 WinActivate, % "ahk_id " list%list%
 list--
}


349:名無しさん@お腹いっぱい。
09/02/27 20:30:19 uqsx4u4h0
DELL LATITUDE E6400でTrackWheel(VER. 20081206)を使ってたんだけど
しばらくぶりにバージョンアップしようと最新版/RC版に変えてみたら中ボタンに反応しない。
なんてこった。

350:名無しさん@お腹いっぱい。
09/02/28 00:25:24 X+HJqC5y0
ショートカットキーが付いてないソフトのボタンにahkでキーを割り当てたいんですけど各ボタンを指定するにはどうすればいいですか?

351:名無しさん@お腹いっぱい。
09/02/28 00:39:59 imLzKJgB0
ものすごい放置してた。久しぶりにソース見た。思い出すのに時間がかかった。

>>349
AHK v1.0.48 だと DllCall の Return Type を指定するとうまくいかないところがある。
983行目の最後の
  ,"Int"
を外すと動くかもしれない。

というか、反応しないって事はホットキーのアサインがうまくいってないかも。
全く構造が違うので、Iniは去年のものは流用できないっす。

>>350
1) ControlClick を使う
WindowSpyで独自のボタン情報がとれるなら 直接指定モードでいいはず。
情報がとれないなら、座標指定モードで(ツールバーならこっち)。

2) ツールバーのコマンドを調べてウィンドウメッセージを送る(玄人向け)
URLリンク(lukewarm.s101.xrea.com) の "Inspecting Toolbar IDs" を使って
PostMessage を使って WM_COMMAND を送る

352:349
09/02/28 07:36:34 ZNlNraZX0
>>351
どうも
・1.0.47でも1.0.48でもダメ
・1.0.48で983行目の最後の,"Int"外してもダメ
・iniは流用していない
で、iniのButton=MButtonを=RButtonにしてみると反応する。スクロールもできる。
けどボタンを離してもスクロールのモードから戻ってこない。

てな状況です。

353:名無しさん@お腹いっぱい。
09/02/28 20:06:00 imLzKJgB0
>>352
中ボタンで反応しないのと、右ボタンで暴走したままなのは別事象っす

中ボタンの方だけど、メイン画面開いて Ctrl+H かメニューから View→Hotkeys... でホットキー一覧出して
 m-hook  *MButton
って出てたら、ホットキー登録は問題ないはず。なってないなら大問題・・・。
そうなっているのに動かないなら他のユーティリティが影響していると思われる
確認をお願い

> RButtonにしてみると・・・モードから戻ってこない
こっちはバグですな・・・
間違えた記述のあるサイトのソースを丸々パクっていたため。考えもせず置換して使ってたorz

誤: TW_RBUTTONDOWN:=0x205 , TW_RBUTTONUP:=0x206
正: TW_RBUTTONDOWN:=0x204 , TW_RBUTTONUP:=0x205

650行目あたりから,、それぞれ2カ所あるっす


# 色々直したら zip で置き直す予定

354:349
09/02/28 22:00:14 ZNlNraZX0
>>353
> m-hook  *MButton
出てます。
他のユーティリティか、うーん。旧バージョンは動くのになー。
とりあえずmsconfigで診断スタートアップにしてみたけどダメでした。

RButtonではちゃんと動くようになりました。

355:名無しさん@お腹いっぱい。
09/02/28 23:58:39 imLzKJgB0
旧verで動かしてたんだからそこに問題はないとは分かるんだけど、一応って事で
・・・そうなると機序的に何処に問題があるかは、今はちょっと分からないっす
一応、ソースもう一度読み直ししてみるっす

356:350
09/03/01 03:43:58 Rc2HQ5QJ0
>>351
ありがとうございました
ControlClickでいけました

357:349
09/03/01 20:30:20 GJkhTa1h0
>>355
お手数かけてすまそ。
中ボタンに反応しないって書いたけど、
TWを起動している状態ではアプリケーションでの中クリックも効かなくなってるので
TW自体は一応反応してる気がします。

358:名無しさん@お腹いっぱい。
09/03/02 10:53:15 3PFCvLeG0
>>348
SetWinDelay で指定してみたら、瞬時にとはいきませんがかなり早くなりました。

最新のはwhile使えるようになったんですね

ありがとうございました。

359:名無しさん@お腹いっぱい。
09/03/02 15:03:15 4Ix+9L8p0
AutoHotkeyでmacのDashbordみたいなの作れないかな
と自分で無理なことを言ってみる

360:名無しさん@お腹いっぱい。
09/03/02 22:51:10 zVxOqqcX0
ダブルクリックとドラッグの挙動をカスタムしたいんですが、見つかりません
コマンド教えてください

361:名無しさん@お腹いっぱい。
09/03/04 05:08:22 ZvTbo6At0
+WheelDown::WheelUp

このスクリプトでしばらくは正常に動作するのですが
71 hotkeys have been received in the last 577ms.
というメッセージが出てきます。
どういうことでしょうか?

362:名無しさん@お腹いっぱい。
09/03/04 05:10:50 pYSwiV1N0
スクリプトの冒頭で

#MaxHotkeysPerInterval 200

と書くと良い

363:名無しさん@お腹いっぱい。
09/03/04 05:22:01 ZvTbo6At0
#MaxHotkeysPerInterval 300でいけました
ありがとうございます。

364:名無しさん@お腹いっぱい。
09/03/04 15:08:04 VwNNjCy00
Dllcallを使いたいのですが、構造体というものがわからないのでちょっと質問させてください。
AHKで構造体を使うというのは、

メタボかどうかを判断したいので、健康診断の記録から
・体重と腹回りの項目を見ろ(構造体)
・上から3行目の数字と、上から7行目の数字を見ろ(AHKの強引な手段)

といった感じで、メモリの位置を直接指定しているといった認識でおkでしょうか。

365:名無しさん@お腹いっぱい。
09/03/04 15:52:18 rkwP19PJ0
Cも何も分からんけどAHKでゴリゴリDllCall使っている漏れの私的な見解

> メモリの位置を直接指定しているといった認識でおk
たぶんそう

構造体って言語仕様でも何でもなく、
「ある番地を起点に確保したメモリの使い方はこうするんだぜ」
って決め方だと思ってる。(言語でサポートされているのは使うのは楽らしいけど。)
だからVarSetCapacityとかでメモリ領域確保してアドレス渡しすれば結構使えちまう。

366:名無しさん@お腹いっぱい。
09/03/04 23:33:02 oTTwde4w0
suspend 時のアイコンを変更できない物でしょうか?

367:名無しさん@お腹いっぱい。
09/03/05 08:18:57 7I9asjSe0
URLリンク(www.autohotkey.com)

368:名無しさん@お腹いっぱい。
09/03/05 09:07:32 DThF++lC0
>>367
いやコンパイルせずにソースを実行するときに
アイコンを変更することができない物かと
試行錯誤をしていました
無理っぽいですね
ありがとうございます

369:名無しさん@お腹いっぱい。
09/03/05 09:32:36 UhjQBASr0
会社でahkを使ってたら、Hなダイヤルアッププログラムと誤解された

370:名無しさん@お腹いっぱい。
09/03/05 11:37:52 rcFfvT/S0
A(在り得ないほど) H(えっちな) K(娘通信) ?

371:名無しさん@お腹いっぱい。
09/03/05 11:47:21 lgTNReVh0
>>366
メニューは作り直すしか無さそう。

menu, tray, NoStandard
menu, tray, icon, shdoclc.dll, 1, 1
menu, tray, add, Suspend Hotkeys, suspend_hotkeys
menu, tray, add, Exit, ExitSub
return

suspend_hotkeys:
suspend
menu, tray, icon, shdoclc.dll, % A_IsSuspended+1 ", 1"
menu, tray, togglecheck, Suspend Hotkeys
msgbox, suspend
return

#s::
suspend, permit
gosub, suspend_hotkeys
return

ExitSub:
ExitApp

372:名無しさん@お腹いっぱい。
09/03/05 12:01:41 lgTNReVh0
あ、俺勝手にトレイアイコンの事だと判断しちゃったな・・
違ってたらスマン

373:名無しさん@お腹いっぱい。
09/03/05 12:28:12 GNmqhAQE0
>>371-372
おお、これで十分です
トレイアイコンの変更を意図していました
ありがとうございます。

374:名無しさん@お腹いっぱい。
09/03/05 20:15:15 xz90t0puP
会社ではトレイアイコンは常に非表示に設定してる

375:名無しさん@お腹いっぱい。
09/03/06 00:46:39 Y32mGPTe0
だからどうした。

376:名無しさん@お腹いっぱい。
09/03/06 02:31:08 6lo5rU0D0
ctrl と j でエンターキーを押した動作をさせたいのですが


^j::enter

と書くと、ctrlとjが押し下げられているままとなっているようで、
実際には ctrl とjを押しながらエンターキーを押す動作となってしまいました

^j::Send,{enter}

と書いても、ctrlが押し下げられているままとなっているようでした

そこで

^j::Send,{Blind}{Ctrl Up}{enter}

と書いたら一回目の入力は成功するものの、
{Ctrl Up}のせいで次回以降 ^j にヒットしなくなってしまいました

ctrl と j でエンターキーを押し、かつそれを連続して入力する設定は可能でしょうか?

377:名無しさん@お腹いっぱい。
09/03/06 02:52:01 EIumwJQn0
>>376
^j::Send,{enter}
で何の問題もなくエンター打てるけど?

378:名無しさん@お腹いっぱい。
09/03/06 05:33:37 6lo5rU0D0
>>377
キーの動作を見てみると、コントロールキーも一緒に送信しているようなのです。
fenrir 経由でx-finderを起動するときに
コントロールキーも一緒に送信されると
多重起動されてしまいます
これを防止したいと思いました。

通常のアプリケーションでは何ら問題ないようだとは
うすうす感じていますが……

379:名無しさん@お腹いっぱい。
09/03/06 06:53:07 atFpTk3M0
さらに
^j::Send,{Blind}{Ctrl Up}{enter}{Ctrl Down}
としたらどうなの

380:名無しさん@お腹いっぱい。
09/03/06 12:05:24 sR26OTSx0
>>379
それなら大丈夫そうです
ありがとうございます。

381:名無しさん@お腹いっぱい。
09/03/06 15:01:28 dtsNACZp0
>>359
俺は逆だな。macでAutoHotkeyが欲しい。

382:名無しさん@お腹いっぱい。
09/03/06 22:52:29 gMTAf0z20
タスクトレイのアイコンをダブルクリックしたら
hello!と表示させたいのですが、できますか?
Gui の Menu の項目を読んでもわかりません
Click, ClickCount あたりを使えばよいのでしょうか?

383:名無しさん@お腹いっぱい。
09/03/07 00:30:41 GNhe+RZO0
>>382
できる。
トレイにメニュー項目を追加してデフォルトにする

384:名無しさん@お腹いっぱい。
09/03/07 04:04:12 41mSVwUw0
>>383
ありがとうございます。
できました

385:名無しさん@お腹いっぱい。
09/03/07 08:14:05 HkiIUUNz0
AHKのGUIが便利すぎるので、フロントエンドにAHKを使い、パラレルポートの制御をしたいです。

用途は機械制御(赤外線の人センサーによる出入り回数の把握)で、数個のLEDの点灯制御と、
10bps(10kじゃないです)の双方向シリアル通信で、制御の確実性(信頼性)は低くてOKです。

本家を検索し、シリアルポートをGUIで制御するサンプルはありました。
URLリンク(www.autohotkey.com)

これのパラレルポート版に相当するサンプルがあると最高なのですが、探せませんでした。
ジョイスティック制御のdppの技術が使えそうですが、本家をdppで検索してもヒットせず。

ポート制御の達人がいらっしゃいましたら、なにかヒントをいただけると嬉しいです。

386:名無しさん@お腹いっぱい。
09/03/07 08:57:54 EX6aOmt+0
>>385
そういうのは VBとかDelphiとかのフォーラムとか過去ログ覗いたらいいと思う。
前にDelphi使ってたけど、シリアルポート制御のコンポーネントとかいくつかあったはず。
VBにもあるだろうと思う。それを移植するか、DLL化して使うか。
多分、需要がなくなっていない分野なら、C#やVB.netのものも見つかると思う。

VB、Delphi、C#、VB.net はVB以外は無料バージョンあるから、
ポトペタでGUI作れるからAHKよりよほど楽なんで、いっそそっちの言語でつくってもいいし

387:名無しさん@お腹いっぱい。
09/03/07 09:00:02 EX6aOmt+0
ごめん、パラレルポートだったか。どちらにせよ、検索してみてほしい。

Delphiだとこの辺。

Delphi-ML過去ログ検索
URLリンク(leed.t.u-tokyo.ac.jp)
Delphi ML archive | Google グループ
URLリンク(groups.google.co.jp)
Delphi Q & A掲示板
URLリンク(hpcgi1.nifty.com)


388:名無しさん@お腹いっぱい。
09/03/07 09:43:07 EX6aOmt+0
> 【1 OSの種類         .】 Windows Vista SP1
> 【2 Excelのバージョン   】 Excel 2007
> 【3 VBAが使えるか    .】 はい
> 【4 VBAでの回答の可否】 否
> 【5 検索キーワード     】 Excel 補完 タブ Tab エンター ENTER など
>
> すごく、無茶な質問を承知でお聞きいたします。
>
> Excel上やVBAエディタ上では、補完候補の決定がタブになっているのですが、
> 他の開発環境のクセでエンターを間違えておして毎回イライラしてしまいます。
> 間違えないようにする方法、もしくは、タブではなくエンターで決定する方法はありませんでしょうか?

誘導されてきました。
こういうのってAutoHotKeyで可能なんでしょうか?

候補ウインドウが出ている時だけ、ENTERをTABに置換?
うーん考えただけで・・・

389:名無しさん@お腹いっぱい。
09/03/07 12:24:08 umaUJV8o0
英語版のキーボードと日本語版のキーボードを
それぞれ場合分けして処理することはできないでしょうか

390:名無しさん@お腹いっぱい。
09/03/07 12:45:36 GNhe+RZO0
>>388
出来ると思う。

>.>389
無理。

391:名無しさん@お腹いっぱい。
09/03/07 13:43:56 umaUJV8o0
>>390
そうですかわかりました

392:名無しさん@お腹いっぱい。
09/03/07 20:19:46 9fbJ8ZNJ0
メニューバーの編集(E)とかワードパットのフォントカラーとかを
操作できる命令はありますか?

393:名無しさん@お腹いっぱい。
09/03/07 20:38:41 MDzSZOKi0
あるよ

394:名無しさん@お腹いっぱい。
09/03/07 22:23:07 uKtAZx+C0
gui で作成したウィンドウにデフォルトでついている
右上の最小化ボタン(_)がありますよね?
これをクリックしたらタスクバーに表示せず
タスクトレイに格納したいのですが
どうすればよいのかわかりません

言い換えると、gui の操作で minimize のコマンドを送るようにできればいいのですが


395:名無しさん@お腹いっぱい。
09/03/08 00:00:01 tr/g5E240
>>386
情報どうもです。別方面からも検討してみます。

396:名無しさん@お腹いっぱい。
09/03/08 10:26:24 U6oXO4Qm0
Escキーを2回、トントンって入力するとウィンドウが最小化するスクリプトを
書きたいんだけど、どこが間違っているか教えて欲しい

Inputコマンド
URLリンク(lukewarm.s101.xrea.com)

↓ソース
Esc::
Input,InputChar,C I L1 T2,endkey,{Esc},z,x
if ErrorLevel=Match
{
if InputChar={Esc}
WinMinimize, A
if InputChar=z
if InputChar=x
}
return


397:名無しさん@お腹いっぱい。
09/03/08 10:34:55 esDbqi200
キーのダブルタップはサンプルあるだろ

398:394
09/03/08 12:41:19 Zm/1oWz60
自己レスですが
gui close で何とかなりそうですね
スレ汚し失礼しました

399:394
09/03/08 12:59:56 Zm/1oWz60
たびたびすみません
やっぱりできません

400:名無しさん@お腹いっぱい。
09/03/08 15:01:14 INaMOjyr0
>>399
右クリフックしてWM_NCHITTESTでマウス位置調べたらいいんじゃね
HTMINBUTTON だったらGUIを Hideにする。
タスクトレイからの復旧はMenuを書き替えればできるべ

401:名無しさん@お腹いっぱい。
09/03/08 20:24:31 CbAikyhi0
>>400
ふむ、その手が使えそうですね
ありがとうございました

402:名無しさん@お腹いっぱい。
09/03/08 20:39:34 W44aSFYp0
まっとうにやるなら>>400だけど。別の方法

Menu, Tray, Add, ShowGui
Gui, Add, Text,, This is Test
ShowGui:
 Gui, Show
return
GuiSize:
 if A_GuiWidth<1
  Gui, Hide
 return

403:名無しさん@お腹いっぱい。
09/03/08 22:31:03 OvInxdiZ0
テキストファイルを読み込むときに
最終行を検出する方法はありますか?


404:名無しさん@お腹いっぱい。
09/03/08 23:41:33 W44aSFYp0
ないんじゃないかな。

Loop, PARSE, ファイル名, `n
 hoge := A_LoopReadLine

とすればループが終わったときに hoge には最終行の内容が入っているけど

405:名無しさん@お腹いっぱい。
09/03/08 23:46:14 ABSLuhUi0
>>404
そうできるのであれば十分です
どうもありがとうございます!

406:名無しさん@お腹いっぱい。
09/03/09 18:31:39 3Pb9nLSu0
ワードパッドの書式バーのフォントの色の変更や
太字化をahkでやりたいんですが座標指定でやるしかないんでしょうか?
WinMenuSelectでは反応しないし、
ボタンのハンドルをMouseGetPosで調べることもできません。
青とか赤の個別の色のボタンは調べられるんですが、値が毎回違うので
行き詰っています。

407:406こういう感じでやりました
09/03/09 18:48:21 3Pb9nLSu0
#F::
MouseGetPos, X , Y, W, OVC,2 ;これでハンドルを調べました
MsgBox %W% <--> %OVC%
clipboard = %OVC%
return

#G::
SetTitleMatchMode,2
DetectHiddenText, On

WinMenuSelectItem,ahk_id 0x50370,,7& ;ウインドウのハンドルからメニューバーとして操作しようとしましたが
WinMenuSelectItem,ahk_id 0x50370,,8& ;反応しません
WinMenuSelectItem,ahk_id 0x50370,,9&
WinMenuSelectItem,ahk_id 0x50370,,10&
WinMenuSelectItem,ahk_id 0x50370,,11&
WinMenuSelectItem,ahk_id 0x50370,,12&
;WinMenuSelectItem,ahk_id 0x50370,,1&,1& ;ファイル→新規、これは動きます


408:406こういう感じでやりました
09/03/09 18:50:43 3Pb9nLSu0
WinMenuSelectItem,ahk_id 0xd40372,,1& ;バー自体のアドレスからメニューバーとして操作しようとして
WinMenuSelectItem,ahk_id 0xd40372,,2& ;動きません
WinMenuSelectItem,ahk_id 0xd40372,,3&
WinMenuSelectItem,ahk_id 0xd40372,,4&
WinMenuSelectItem,ahk_id 0xd40372,,5&

WinMenuSelectItem,ahk_id 0xd60376,,1& ;反応しません
WinMenuSelectItem,ahk_id 0xd60376,,2&
WinMenuSelectItem,ahk_id 0xd60376,,3&
WinMenuSelectItem,ahk_id 0xd60376,,4&
WinMenuSelectItem,ahk_id 0xd60376,,5&

WinMenuSelectItem,ahk_id 0x9d01b2,,1& 
WinMenuSelectItem,ahk_id 0x9d01b2,,2& 
WinMenuSelectItem,ahk_id 0x9d01b2,,3& 
WinMenuSelectItem,ahk_id 0x9d01b2,,4&
WinMenuSelectItem,ahk_id 0x9d01b2,,5& 

ControlClick,,ahk_id 0xfb0194,,LEFT ;ハンドルが特定できません
MsgBox done
return

409:nCIjdtNZgMN
09/03/09 18:51:33 1ok/Ifbl0
comment5, URLリンク(kim-kardashian-video.limitedliability.us) kim kardashian nude video, %-PP,

410:406こういう感じでやりました
09/03/09 19:17:25 3Pb9nLSu0
やり直したらinspect_toolbarがなぜか今回は動いたので
それでやってみます

411:406こういう感じでやりました
09/03/09 23:05:06 3Pb9nLSu0
連投すみません
ワードパッドの書式バーの位置をずらした後
(メニューバー・ファイル(ファイル...
    ツールーバー
     書式バー(MSゴシック...
のように


inspect_tool_ids で書式バーのコマンドIDを調べて(32801)

#G::
PostMessage,0x111,32801,0,,A
return

でフォントの色を選ぶボタンをahk経由で押させることは出来たのですが、
赤とか青とかの個別の色を押させることが出来ません。
方法はありますか?

412:406-411(除409)
09/03/10 00:39:25 VYBxlQGq0
すいません、出来ました。Resource HackerでIDが調べられて
無事できました。ありがとうございました。長すぎる連投してしまい
本当に申し訳ないです。

413:名無しさん@お腹いっぱい。
09/03/10 15:05:28 rmSmGeHP0
起動してるプロセスを取得してその中から選択したプロセスを監視して任意の条件でいろいろする
ってのをやってみてるんだけど
IrvineとかJaneとかプロセスが二重に取得されてどっちを選べばいいかわからない

414:名無しさん@お腹いっぱい。
09/03/10 15:11:02 D/8zxGdl0
多重で起動してるの?すごい使い方だな。

415:名無しさん@お腹いっぱい。
09/03/10 15:47:04 rmSmGeHP0
一つしか起動してないけど取得されるのは二つになってるってこと

416:名無しさん@お腹いっぱい。
09/03/10 16:27:55 4NcKH5rc0
AHKでプロセスいじるのって Process コマンドでの
 存在チェック(PID取得)、  強制終了、  優先度変更、 終了/存在待ち
だけど、二重に取得されるってどういうことだろ

Process, Exist, Jane2ch.exe
pid := ErrorLevel
WinGet, list, LIST, ahk_pid %pid%
MsgBox, %list%
ってすると2個窓がとれるけど
これのことだったら >>144,147,153 あたりと同じなんだが・・・

417:名無しさん@お腹いっぱい。
09/03/10 21:21:52 gm+lfOz80
Delphi製のアレなら、既に解決方法は確立されているので検索してこい

418:名無しさん@お腹いっぱい。
09/03/11 03:02:36 pYoGuoaj0
WM_COMMANDでメニューバーをクリックしたときにでてくる新しいウインドウ
の中のコマンドに対するコマンドIDをしらべたいんですが、
何かいい方法はありますか?

窓コンもinspect_toolbarも反応しなくて、resource hacker
でも調べられません。

ddwinとかpdicビューワーに使いたいんですけど。

419:名無しさん@お腹いっぱい。
09/03/11 07:16:24 1ccOe8xw0
WheelScroll.ahk の改造版をうpしますた。ホイール加速を滑らかにしたつもり。
URLリンク(lukewarm.s101.xrea.com) の 104.zip

420:名無しさん@お腹いっぱい。
09/03/11 08:59:21 12ef3abb0
AutoHotKeyのPython版みたいなのみつけた。
AutoHotKeyのスクリプトの記述性の低さが嫌な人にはいいのかも。

keyhac ?(craftware)?
URLリンク(sites.google.com)

まあ、AutoHotKeyはDSL(ドメイン特化言語)で手軽さがあってそれでいてGUI持つくれるというのがいいけどね。
(まあ、PythonもGUIいけるけど)

421:名無しさん@お腹いっぱい。
09/03/11 10:22:40 12ef3abb0
ちょっと質問です。OpenJaneで「お気に入り」に入れてあるスレを
お気に入りからはずして「印」のみつける(お気に入りからはずすと何故か「印」がはずれてしまうため)
というのを一発でやりたいと考えています。

メニューのコマンドを送ろうとしているのですが、ControlSendを使ってもキーが送られないようです。
以下のように単なるSendだと上手くいっているようなのですが、
ControlSendとSendの違いってなんなんでしょうか?

; OpenJane
#IfWinActive, Jane ahk_class TMainWnd
; Ctrl+D to delete favorite without deleting SIRUSI
^d::
 WinWait,Jane ahk_class TMainWnd
 Send, !tv
 Sleep, 100
 Send, !tm
; ControlSend,,!tv!tm ; damepo
return
#IfWinActive

422:名無しさん@お腹いっぱい。
09/03/11 11:45:04 iQp8Awzp0
Sendはフォーカスのあるところに送る
ControlSendはフォーカスが無くても、というか対象を指定してキーを送る

ウィンドウ指定+コントロールの指定なし、でいけるんじゃないの
Styleだけど↓で動くよ
ControlSend,, !tv!tm, ahk_class TMainWnd

423:名無しさん@お腹いっぱい。
09/03/11 11:48:35 iQp8Awzp0
というか、非アクティブ窓に送るのがControlSendの主目的だし
#IfWinactiveつかってるんだし、>>421でうごくならそれでいいと思う

keyhacはkeymapがあるし繭の代替みたいなかんじだぬ

424:名無しさん@お腹いっぱい。
09/03/11 12:50:26 12ef3abb0
>>422-423
サンクス。
なるほど、アクティブのときに使うなら必要ないですね。
むしろ、フォーカスないときに送るAPIもあるのかと感心したw

425:名無しさん@お腹いっぱい。
09/03/11 16:10:47 7PTN87iF0

どうしてもスマートな書き方が分からず困ってしまったので質問します。

Photoshop7.0を使っているのですが、そのPhotoshopでの作業で
ズームイン・アウトの動作は、alt+マウスのホイールで行うんですけど
それをホイールのみで行いたいんですが、いまいちうまく動作しません。

; Photoshop
#IfWinActive, ahk_class Photoshop
    wheelup::Send, {ALTDOWN}{wheelup}
    wheeldown::Send, {ALTDOWN}{wheeldown}
#IfWinActive

とりあえずこれで動くことは動くんですが、これだとaltキーが押されっぱなしで
いったんaltキーを押さないと開放されないんです。
ホイールの動作を止めてから、0.5秒くらいでaltキーが都度開放されるようにしたいんですが
どういう風に書けば良いんでしょうか。

426:名無しさん@お腹いっぱい。
09/03/11 17:30:08 SMQKLnXdP
!{WheelUp}じゃ駄目なの?

427:名無しさん@お腹いっぱい。
09/03/11 17:40:17 WedUAl7t0
うむ、自分も色々試したんだけど、ウチのCS3ではダメなんだよな
!修飾だとズームさえしないし、Sleep,500 して Send {Alt Up} してもズームはするがAltが押しっぱ状態
色々なSendModeやhookにしたけどダメだった

ただのズームで良ければ、Ctrl-やCtrl+送れば良いけど、
これだとポインタ位置のズームにならないから期待には沿えないんだろうな

428:425
09/03/11 17:44:19 zQD6nmYr0
>>427
>ただのズームで良ければ、Ctrl-やCtrl+送れば良いけど、
>これだとポインタ位置のズームにならないから期待には沿えないんだろうな

ははは。仰るとおりです。単なるズームならそれで良いんですけどね。
やっぱ難しいのかな…。
Photoshop7.0以前のホイール動作がしたいだけなんですけどねー。

429:425
09/03/11 17:51:27 zQD6nmYr0
>>426
実際やってみると分かるんですが、
それでは「altキーを押しっぱなしでホイール動作」にはならないんですよね。
altとホイールを同時に入力、とみなされて、微妙にカククアした動作になるんですよ。
押しっぱなしというキー入力がないと、スムーズにズームしないんですよね。

430:名無しさん@お腹いっぱい。
09/03/11 18:10:32 WedUAl7t0
あー、ウチではこれで動くようになったけど、かなりインチキくさいので7.0ではダメかも
Sleep後のAltの送り方をイジれば何とかいけそうなんでは
wheelup::
SendInput {Alt Down}{WheelUp}
Sleep, 500
Send {Alt}
Send {Alt Up}
return


431:名無しさん@お腹いっぱい。
09/03/11 18:21:31 iQp8Awzp0
> Sleep後のAltの送り方
タイマーでいいんじゃないかな。環境がないから何とも言えないけど。

wheelup::
wheeldown::
SendInput {Alt Down}{%A_ThisHotkey%}
SetTimer, AltUp, 500
return

AltUp:
Send, {Alt}
Send, {Alt Up}
return

432:425
09/03/11 18:45:36 zQD6nmYr0
>>430
おお!まさしく理想の動きになりました!
Sleep後の動作の書き方が分からなくてつまづいてました…。
ありがとうございます!

>>431
そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。

433:名無しさん@お腹いっぱい。
09/03/11 18:51:43 W+NxFur40
解決したようだけど、押しっぱなしの原因は#HotkeyModifierTimeoutのあたりなのかな?

434:431
09/03/11 19:07:50 iQp8Awzp0
> そちらも試してみましたが、なんかaltキーが常時連打されてるような動作になりました…。
うは、初歩的なミス
> SetTimer, AltUp, 500
は↓で
SetTimer, AltUp, -500

解決したならいいんだけど

435:425
09/03/11 19:34:30 zQD6nmYr0
>>434
ありがとうございます!
キチンとスムーズに動作してくれました。

AutoHotkeyの存在を知ったのが昨日なのでまだあまり把握しきれてないですが、
かなり勉強になったのでちょっとハマってみます。

436:名無しさん@お腹いっぱい。
09/03/11 21:02:29 G1UR0H3q0
>>434
>負の値を指定した場合、その絶対値の時間が経過後に、一度だけサブルーチンが実行される。
勉強になった、㌧.。
ふぅ、無駄こいた(´;ω;`)ブワッ

wheelup::
wheeldown::
Send, {Alt Down}{%A_ThisHotkey%}
MouseGetPos, xMouse, yMouse
settimer, IdleMouseMoved, 100
return

IdleMouseMoved:
MouseGetPos, xMouseNow, yMouseNow
xMouseChange := ( xMouseNow - xMouse ) * ( xMouseNow - xMouse )
yMouseChange := ( yMouseNow - yMouse ) * ( yMouseNow - yMouse )
If (xMouseChange > 9) | (yMouseChange > 9) | (A_TimeIdle > 500){
send, {Alt Up}
settimer, IdleMouseMoved, off
}
Return

437:名無しさん@お腹いっぱい。
09/03/11 21:11:08 XeGc9YVz0
作成した関数が
複数の値を返すことはできますか?

438:名無しさん@お腹いっぱい。
09/03/11 22:25:12 NuVSrS420
>>437
引数の参照渡し(ByRef)を使ってみるとか。

#persistent
SetTimer, timer
return

MouseGetScreenPos(ByRef x, ByRef y){
CoordMode, Mouse, Screen
MouseGetPos, x, y
CoordMode, Mouse, Relative
}

timer:
MouseGetScreenPos(sx, sy)
MouseGetPos, x, y
tooltip, x%x%`ny%y%`n`nsx%sx%`nsy%sy%
return

439:名無しさん@お腹いっぱい。
09/03/11 22:26:53 RHpZI3IT0
windowsXPにAHK1.0.48.00をインストールしました
起動するにはAutoHotkey.exeをwクリックすればいいんですよね?
どうも起動していないようです
プロセスにも載っていません
どうすれば使えるようになるのでしょうか?
よろしくおねがします

440:名無しさん@お腹いっぱい。
09/03/11 22:41:17 G1UR0H3q0
>>439
exeと同じところにAutoHotkey.iniを作ってメモ帳で編集。
a::a
で保存。exeをダブルクリックするか、iniをexeにD&Dすればいい。

441:名無しさん@お腹いっぱい。
09/03/11 22:52:15 RHpZI3IT0
>>440
ありがとうございます。無事動きました。
以前使っていた自作のスクリプトがなぜか駄目だったようです
これが原因とは思っても見なかったので
初歩的なことを聞いてしまいました
おかげで切り分けが出来きて解決しました


442:名無しさん@お腹いっぱい。
09/03/12 01:46:44 F1m5qWie0
>>438
なるほど。参照渡しなら間違いないですね
ありがとうございます。


別件の質問ですが
a に test があり、かつb に hogeがあるときで
条件分岐をしたいのですが

If a in test and b in hoge

と書いたら上手く動きません
初歩的なことだと思いますが
どうすればよいのでしょうか


443:名無しさん@お腹いっぱい。
09/03/12 02:07:36 1BiiCvek0
if InStr(a, "tesst", true) && InStr(b, "hoge", true)

Caseを問わないなら括弧内の第3引数を省略または false にする

444:名無しさん@お腹いっぱい。
09/03/12 02:21:15 F1m5qWie0
>>443
ありがとうございます。

445:名無しさん@お腹いっぱい。
09/03/13 13:49:22 fNm1iUGy0
無変換キーをシフトキーのかわりとして使いたいのですが

無変換キー+A をshift + A とするだけではなく
ctrl + 無変換キー+A をctrl + shift + A や
win + ctrl + 無変換キー+A をwin + ctrl + shift + A というふうに
あたかもレジストリの編集により無変換キーをシフトキーとしたように動作させたいです

remap を使っても思ったとおりの動作ができません


446:名無しさん@お腹いっぱい。
09/03/13 14:01:43 nMFGybhR0
「思ったとおりの動作ができません」がどうせ間違ってるんだから、
途中まで試したコードを晒してみたら?

447:名無しさん@お腹いっぱい。
09/03/13 15:12:04 fNm1iUGy0
すみませんでした

sc07B::shift

だけでできました

448:名無しさん@お腹いっぱい。
09/03/13 15:47:42 fNm1iUGy0
たびたびすみません

リマップ
URLリンク(lukewarm.s101.xrea.com)

> リマップによって生成された入力では、フックを使用しているホットキー(「$^c」など)は反応しない。

この制限を解除する方法はありませんか?

449:jbpfxyseplh
09/03/13 15:47:58 DVfGG20W0
uGaXvO <a href="URLリンク(gvatgngxmxho.com)">gvatgngxmxho</a>, [url=URLリンク(iyoeszfqayam.com) [link=URLリンク(ohsodtdhgqfa.com) URLリンク(oqdjndcqppwj.com)

450:名無しさん@お腹いっぱい。
09/03/13 19:24:04 xVfJVQvM0
モディファイアのリマップはScancodeMapいじるようにした方が
何かとすっきりさっぱりだと思うんだ。

451:名無しさん@お腹いっぱい。
09/03/13 22:39:12 nX9nzRDN0
>>450
そうですか。
ありがとうございます。

452:名無しさん@お腹いっぱい。
09/03/14 21:34:52 4icr6LvT0
fenrirの呼び出しキーをうまく設定できません

^a::
send,^b
return

こういう設定を書きました
そのうえで、fenrirの呼び出しキーの設定の項目で
ctrl + A
を入力しました。

すると、左のctrlキーのときには意図したとおり
ctrl + B
が入力されたことになるのですが、
右のctrlキーのときには
なし
と表示されてしまいます。

パソコンはvistaを使っています
どうすれば右のctrlキーを左のctrlキーのように動かせるのでしょうか



453:名無しさん@お腹いっぱい。
09/03/15 00:25:08 lsWqS3cG0
>>452
なんか言ってることがよく分からんが、それfenrirを起動したくないってこと?

454:名無しさん@お腹いっぱい。
09/03/15 00:58:42 SZZoZhnK0
>>453
いやそうじゃないんです

他のソフト(エディタとか)では
右のctrl + A できちんと ctrl + Bが動作するんですが
fenrirに限ってはそのようには動かないんです
左のctrl + A ではfenrirでもきちんと ctrl + Bが動作するんですが
あ、fenrirは最新バージョンを使っています

どうもautohotkeyの内部で
右のctrlと左のctrlの処理が大きく異なっていると思うのですが

よくわかりません


455:名無しさん@お腹いっぱい。
09/03/15 09:19:57 AqdEGZ0E0
fenrir側の呼び出しキーの取得方法が特殊なんじゃなかろうか。

わざわざCtrl-Aを一旦Ctrl-Bにして呼び出す理由が分からないけど、
ただ前面にしたいなら、fenrirを二重起動するという方法もあると思う

456:名無しさん@お腹いっぱい。
09/03/15 09:46:43 aN9r1MmC0
LCtrlとRCtrlと両方書いてもだめかぬ

457:名無しさん@お腹いっぱい。
09/03/15 09:54:41 B8F8JwCv0
Gui, Add, Hotkey
Gui, Show
return
^A::MsgBox, Send`, "Ctrl + B"

いったんAHK止めてからせっていすりゃいいんじゃねーの

458:名無しさん@お腹いっぱい。
09/03/15 10:14:36 aN9r1MmC0
試してみたら正常動作したけどfenrirが古かったから最新版にしてみたんだがやっぱり普通に動くな

459:名無しさん@お腹いっぱい。
09/03/15 13:07:53 2+vykJE1P
もし {vkXXscXX} の形式だったら {vkXX} だけにしてみるとか

460:452
09/03/15 14:01:34 dCql5Xe00
autohotkey のkeyhistoryを見てみました

左のctrl + b では

42 030 i d 10.25 B fenrir
42 030 i u 0.00 B


右のctrl + b では

A2 01D i d 2.42 Ctrl fenrir
A3 11D i u 0.00 Right Control
42 030 i d 0.00 B
42 030 i u 0.00 B
A2 01D i u 0.02 Ctrl

こうなりました
そこで以下のように書いたら左のctrl + bと同様に動きました

^a::
send,{blind}b
return

>>457のスクリプトではどちらのctrlも正常に動きます
上記のみなさんのご指摘を踏まえると、
私の環境が特異だということですかね
いろいろと調べてみます
ありがとうございました。

461:名無しさん@お腹いっぱい。
09/03/16 17:00:43 OR65f9ys0
ホットキー用のキー足りねぇ→キーボード2台つなげばよくね
と思い、ジャンクの安いキーボード買ってきた

2台目用はScrollLockでもして、それで1台目と区別すりゃいいなと思ってたんだが
ScrollLockもCapsLockもNumLockも連動しやがる

1台目と2台目のキーボードの入力を判別する方法はないでしょうか?
PS/2接続とUSB接続の2台なんですが



462:名無しさん@お腹いっぱい。
09/03/16 19:38:57 BkAbLvKa0
斜め上を行く発想だなw
レスじゃなくてスマンが…

463:名無しさん@お腹いっぱい。
09/03/16 19:42:47 eGMmt4nd0
ソフト名忘れたが、デバイスドライバレベルで区分けするフリーソフトがあるよ。
たしか作者は日本人

464:名無しさん@お腹いっぱい。
09/03/16 20:51:44 5g2lI0+Z0
俺はプログラマブルキーボード使ってる。
本来はキーマクロを割り当てて使うものだが、キーマクロのメモリ登録では、
アプリ毎に動作を切り替えられず、専用のツールを利用すれば対象アプリ毎の
設定も出来るが、あまり出来が良くないので、メモリにはF13~F24や、
普通のキーボードでは入力しづらいショートカットキーを登録し、
AutoHotkeyで引っ掛けてアプリ毎の動作に書き替えてる。

465:名無しさん@お腹いっぱい。
09/03/16 21:39:38 OR65f9ys0
>>463
情報ありがとう、それがみつかればできそうだ

>>464
俺も最初プログラマブルキーボードか、ホットキーがいっぱいあるゲーミングキーボードとか考えたんだか
特殊なキーボードは値段が高くて選択肢も少ないので、なんとかならないかと思ったんだが

プログラマブルってほどじゃなくても、全キーをWinキーあたりと同時押しができれば
あとはAutoHotKeyで十分なんだけど
ただWinキーを押しっぱなしで固定するだけじゃ、やっぱり2台とも連動して駄目だし
ハード的に改造しようかと調べてもROMライター前提で変換基盤自作とか、素人には無理そうだし

466:名無しさん@お腹いっぱい。
09/03/17 00:59:49 VkzQ2R4K0
setntptimeという時刻修正プログラムを実行後、ログの最後の4行を
TrayTipかMsgBoxに表示するようにしたいのですが

RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide
logfile = C:\App\Internet\setntptime\settimeLog.txt
i = 0
Loop, read, %logfile%
{
i += 1
}
FileReadLine, server, %logfile%, i-3
FileReadLine, oldtime, %logfile%, i-2
FileReadLine, fixtime, %logfile%, i-1 ;最終行は改行だけなので省略
MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime%
return

のように、2度手間になりますがログの行数を取得してからFileReadLineする
方法しか思い浮かびませんでした。
もう少しスマートにしたいんですが良い方法あったらご教授ください。

467:名無しさん@お腹いっぱい。
09/03/17 01:19:19 pREBWc+h0
>>466
RunWait, C:\App\Internet\setntptime\setntptime.exe,,hide
logfile = C:\App\Internet\setntptime\settimeLog.txt
Loop, read, %logfile%
{
server=%oldtime%
oldtime=%fixtime%
fixtime=%dummy%
dummy=%A_LoopReadLine% ;改行が入る
}
MsgBox,, setntptime log, %server%`n%oldtime%`n%fixtime%
return

こんなんじゃだめ?

468:名無しさん@お腹いっぱい。
09/03/17 01:24:58 Q86YJixB0
すげぇ・・・なんというアクロバティック。これがこのスレの底力だな

469:名無しさん@お腹いっぱい。
09/03/17 01:50:46 VkzQ2R4K0
>>467
うおー即レスありがとうございます
ダミー咬まして・・・うーん頭こんがらかりそう
使わせていただきます。

470:名無しさん@お腹いっぱい。
09/03/17 13:48:31 hCcdtXRQ0
>>419
遅レスですが、IKKI氏乙です。

何か年末に作って放置してたのがあったのであげてみる。

秀丸でAHK編集する人のための CompleteX 用設定
LIBフォルダの関数ライブラリを読んで単語補完辞書&ヒントを作成する。
URLリンク(www6.atwiki.jp)

471:名無しさん@お腹いっぱい。
09/03/17 15:39:39 Lst9ESBRP
Runで引数を変数で与えたいんだが、
Run, %var1%, %var2%
ってやっても作業ディレクトリがうまく与えられないみたいなんだけど
何が原因?

472:名無しさん@お腹いっぱい。
09/03/17 15:52:26 Lst9ESBRP
ごめんなさい自己解決
制御文字が含まれてたっぽい

473:名無しさん@お腹いっぱい。
09/03/17 18:39:45 gDeBu6wE0
よくあるw
エクスプローラの引数とか特に

俺は行数増えるけど見通しよくするために↓みたくしてる

dir = c:\hoge\hoge
cmd = %var1%, %var2%
Run, %cmd%, %dir%

474:名無しさん@お腹いっぱい。
09/03/17 19:02:16 hImTYnxN0
>>470 乙です

一方、海の向こうではchmでいくんだろうか?
 GenDocs v2.0 - Create StdLib documentation easily!
 URLリンク(www.autohotkey.com)
といっても、前スレ
 GenDocs - utility for creating StdLib documentation
 URLリンク(www.autohotkey.com)
も含め投票数(反応)そのものも少ないみたいだし、このまま付けたり付けなかったりバラバラでいくのかな。。

475:名無しさん@お腹いっぱい。
09/03/17 19:03:05 L7m3HeAn0
作業ディレクトリを指定したら、実行ファイルってファイル名だけでいい気がした。
当たり前か・・・

476:名無しさん@お腹いっぱい。
09/03/17 21:04:07 lw7F/3Qx0
>>467
これ、発想がすばらしいなぁ。
AHK以外でも使えそうなアルゴリズムだ。ありがとう

477:名無しさん@お腹いっぱい。
09/03/18 00:30:37 2PEehZZi0
>>470
ちょうど欲しいと思ってた CompleteX 辞書ww
ありがとう、使わせてもらいます。

478:名無しさん@お腹いっぱい。
09/03/18 09:35:49 OXmG24Mg0
スクリプト内でも関数ライブラリ使ってんの忘れてたorz

秀丸でAHK編集する人のための CompleteX 用設定
ファイルパス関数群 (Path.ahk)同梱版
URLリンク(www6.atwiki.jp)


479:名無しさん@お腹いっぱい。
09/03/18 14:37:20 zm0v5CvW0
みんな宜しくよノシ

480:名無しさん@お腹いっぱい。
09/03/18 19:11:42 wqUWRKfJ0
atokの変換リストを表示中に
autohotkeyで操作をしたいのですが
atokの変換リストを表示しているかどうかを
取得する方法が分かりません。

window spyを使っても使用しているエディタの情報だけを
取得してしまっているようです
どうすればいいのでしょうか

481:名無しさん@お腹いっぱい。
09/03/18 21:24:09 xJ1I3V720
IME.ahk でいいじゃん。とおもったけどリストが出ているかどうかは分からないのね。

で、原始的だが変換リストを出してマウス直下の窓を調べるほうほうでやった

Pause::
MouseGetPos,,, hwnd
WinGetClass, class, ahk_id %hwnd%
Tooltip, %class%
return

ATOK2007なので"ATOK20Cand" だった。
で、いい加減だけど、指定の窓があったら(ウィンドウハンドルが0以外なら)
変換中とすればいいんじゃないかな

Pause::
Tooltip, % WinExist("ahk_class ATOK20Cand")
return

これが出ているとき専用のキーバインドが欲しいなら #Ifが使える、Autohotkey_Lが向いてそうだ

#If WinExist("ahk_class ATOK20Cand")
a:: hoge
b:: hige

482:名無しさん@お腹いっぱい。
09/03/18 21:26:05 xJ1I3V720
あ、、、#IfWinExist でいいじゃん・・・orz

483:名無しさん@お腹いっぱい。
09/03/19 00:19:09 DoWJYG5p0
>>481-482
おお!期待通りに動きました
ありがとうございます!


484:名無しさん@お腹いっぱい。
09/03/19 09:46:28 iKaTZieB0
超初歩的質問なんですがデスクトップをダブルクリックしたのを検出するのってどうやるんでしょうか
OSはVISTA32SP1です

485:名無しさん@お腹いっぱい。
09/03/20 17:37:19 oBtBrUgR0
こんにちは。わたしも質問です。
テンキーをマクロ用のホットキーとして使用してるのですが、

NumLockキーを押すと、「NumLock On&AHK Suspend」
もう一度押すと、「NumLock Off&AHK 再開」

このトグル動作をさせたいのですが、どのように記述すればいいのでしょうか。
よろしくおねがいします。

486:名無しさん@お腹いっぱい。
09/03/20 17:53:19 Ie0QoNxm0
SuspendじゃなくてPauseな気もする

487:名無しさん@お腹いっぱい。
09/03/20 18:03:04 Ie0QoNxm0
>>484
カーソル下をahk_class Progmanか否かで判別し、あとは下記を参考でできるかな?
~CTRL::
if A_PriorHotkey <> %A_ThisHotkey%, return
if A_TimeSincePriorHotkey > 400, return
;some action
return

488:名無しさん@お腹いっぱい。
09/03/20 18:11:28 Ie0QoNxm0
ああ、だめだ。あと下記も参考に
670 名前:665[sage] 投稿日:2008/06/06(金) 19:45:37 ID:89UJiJcz0
>>669
うあそういうことか

>>667
自レスも含みますが>666であったファイルの選択の状態を取得する他の方法を探したところ
ControlGetが使えそうなのでそれでやってみたテスト

~LButton::
MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1 ; カーソル下の情報を取得(ClassNN以下いらないような
WinGet,DesktopID,,ahk_class Progman ; デスクトップのウィンドウIDを取得
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる
If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID && StateListView=="") ; デスクトップ上である&選択項目がない
Send,!{Numpad1}
return

アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、
丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる
同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる
選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・


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