[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 10/07 15:09 / Filesize : 154 KB / Number-of Response : 425
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

AutoHotkey スレッド part8



1 名前:名無しさん@お腹いっぱい。 [2009/05/23(土) 00:23:38 ID:78PWRd9v0]
■公式
www.autohotkey.com/

■解説
AutoHotkeyを流行らせるページ
lukewarm.s101.xrea.com/

■過去スレ
1 pc7.2ch.net/test/read.cgi/software/1098531338/
2 pc7.2ch.net/test/read.cgi/software/1129836713/
3 pc11.2ch.net/test/read.cgi/software/1157043396/
4 pc11.2ch.net/test/read.cgi/software/1184556627/
5 pc11.2ch.net/test/read.cgi/software/1201502896/
6 pc11.2ch.net/test/read.cgi/software/1219130051/
7 pc12.2ch.net/test/read.cgi/software/1230694774/

■派生版
AutoHotkey_L
www.autohotkey.net/~Lexikos/AutoHotkey_L/

駄目文字微対策版
yak.myhome.cx/junks/#ahk.cp932

関連リンク>>2以降も参照


205 名前:202 mailto:sage [2009/06/15(月) 00:54:56 ID:jQythkfVP]
>203 さん
動きました! ありがとうございます。
http://は意図的です。仕事で使うシステムが,
どういう意図なのかhttp://抜きのURL(←毎回違う)を
送ってくるシステムなので,苦し紛れの方法です。
でもよく考えたらこのほうが(どうせ人間が選択するなら)
便利だということにも気づいて,割と気にいってます。

>204 さん
返信見たときにかなり焦りましたが,iexplorerでした。
%A_Space%の件は気づいてなかったので,
試しに203さんの解に入れ込んでみたけどやはり駄目でした。
今後は気をつけて使うことにします。ありがとうございました。


206 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:01:22 ID:YLFCYF1c0]
>%A_Space%
これは流石にやりすぎだと思うが
行頭行末以外で勝手にtrimされるわけじゃないし

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:14:24 ID:YLFCYF1c0]
なんかねぼけてた
AutoTrimで設定できる範囲でどうのこうのって意味ね

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:30:23 ID:cH860UQK0]
うちのは iexplore.exe だな、環境によって変わったりするものなのかw

209 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:42:15 ID:Rpm4wJtQ0]
ウイルスじゃねw>iexplorer.exe
昔の名残でWindowsに最初から入ってるプログラムは
基本的に8文字までになってるから

210 名前:202 mailto:sage [2009/06/15(月) 01:51:19 ID:jQythkfVP]
ホントだ,Iexploreですね……なに寝ぼけてるんだろう。
すいません。。。

ランチャー代わり&さっきのメニューだけで,
個人的にはとても満足。
次はマウス右クリック1秒でメニュー出るようにしてみます。

こういうのBasic以来だ。楽しい。

211 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:54:33 ID:Qf1MbZOM0]
>>205
補足
""で括るとそのままパスの文字列として扱われるので%A_Space%に置き換えると動かない。
(%A_Space%が半角スペースとして処理されない)
""で括らない場合は %A_Space% に置き換えると確実に動く。

>>206
半角スペースが区切りとして処理される場合があるので
""で括れるときはいいけど、括れないときに半角スペースを %A_Space% に置き換えてる。
前後に半角スペースやTabスペースが欲しいときにこういう方法がありますよー、ってことで。

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 19:01:59 ID:x31IQNlX0]
XPのデスクトップ上で、たとえば、マイコンピュータが選択されている などのように、
現在選択されているアイコンを調べる方法はないでしょうか。

F2でリネーム→コピー→キャンセル というローレベルな方法で一応動いています。

#IfWinActive ahk_class Progman

F1::
send,{F2}
sleep,5
send,^c
send,{ESC}
sleep,5
var=%clipboard%
if var=マイ コンピュータ
msgbox,マイコンピュータが選択されている
return
#IfWinActive

が、デスクトップの空き領域でこの操作をした場合、「空」になってもらいたいのに、
直前まで選択していたアイコンに強制的にフォーカスが移り、
意図しない動作になってしまいます。
それと、この方法だと「ゴミ箱」が検出できません。

もっとスマートな検出方法はないでしょうか。

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 19:56:45 ID:OJANZZ8e0]
ゴミ箱のショートカットをつくり、デスクトップにそれを置く。




214 名前:名無しさん@お腹いっぱい。 [2009/06/15(月) 20:16:07 ID:uHI5LVh90]
デスクトップの空き領域・ゴミ箱・普通のアイコンのそれぞれに
SHIFT+F10で個別のコンテクストメニューがだせる
あとは場合分け汁

215 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 20:45:43 ID:x31IQNlX0]
>>213
なるほど、最悪そのようにしてみます。

>>214
どうもです。Shift+F10を押した後の場合分けの方法が思いつかないのですが、
コンテキストメニューの情報をテキストで取得する方法って有りますか?

コンテキストメニューが出ているとき、最前面ウインドウから情報を
抜き取ってみましたが、デスクトップそのものの情報しか得られませんでした。

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 20:54:51 ID:Eq0wz7dd0]
礼も言わず「最悪そうします」とかw

217 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:07:27 ID:cPBSw7WG0]
>>212 COMを使う方法がある

エクスプローラの場合 ShellFolder()
ttp://www.autohotkey.com/forum/topic20701.html

デスクトップの場合 ShellDesktop()
ttp://www.autohotkey.com/forum/topic20701-30.html#203520

必要なライブラリ com.ahk, acc.ahk
ttp://www.autohotkey.com/forum/topic24234.html

218 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:33:37 ID:PR1YLCAc0]
>>190
ご確認ありがとうございます。
ご教示いただいた方法を試してみたいと思います (が、また数日〜十数日先になるかもしれません)。


219 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:36:25 ID:x31IQNlX0]
>>217
これでイケそうです。ありがとうございます!

220 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/16(火) 20:41:51 ID:DCCAcnmU0]
タスクスケジューラに登録しているタスクの
プロパティ(っていうんでしょうか?)を開くにはどうしたらいいでしょうか?

Winキーや矢印キーを何回かSendして・・・という方法は思いつきますが
タスクを追加や削除して順番が変わると書き換えが必要になるので、
できれば直接開く方法はないでしょうか?

やりたいことは、プロパティを開いて「実行する」のチェックボックスを
トグルするスクリプトを書くことです。

221 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 10:10:53 ID:WpDhJ6Es0]
>>220
タスク名をタイプすればいいんじゃない?
Send,task1
Send,{AppsKey}r
日本語なら流行らせるページの日本語コード変換とか使えばいけるハズ。

もしくは、Task Scheduler APIでゴニョゴニョするか、
ここのataskみたいなのを使うとか
ttp://www.piedey.co.jp/softs/atask.html
atask --set タスク名 TASK_FLAG_DISABLED 1

222 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 21:09:40 ID:QQe2Egi20]
Gui, Add, ListView, w200 r10 Grid -Multi NoSortHdr AltSubmit vTEST gLV, aaa|bbb
Gui, Add, Button, gXX, &XX
Gui, Show
Return
LV:
Lv_Add("", 1, 2)
Return
XX:
Gui, 2:+Owner1
Gui, 2:Add, Button, w200 gHH, &HH
Gui, 2:Show,
Return
HH:
Gui, ListView, TEST
Lv_Delete()
Gui, 2:Destroy
Return
すみません、これでGui2のHHボタンを押したときに、Lv_Delete()が実行されず行き詰ってます。
Lv_Delete()を実行するボタンをGui1に追加してラベルに飛んだり、リストダブルクリックを
A_GuiEvent で拾ってLV: の分岐で実行するようにしても上手くいかず、
Gui1にボタンを増やしてHHを押したら、Gui1側のボタンをクリックするようにしたらなんとか動作しました。
ControlClick, Button2, ahk_class AutoHotkeyGUI
ControlClick, Button2, ahk_class AutoHotkeyGUI ;一回だけだと反応しませんでした
本当はどう書いたら良いのでしょうか。よろしくお願いします。

223 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:29:36 ID:6WNHPMfr0]
>>221
ありがとうございます
ataskを使うことにしました



224 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:31:13 ID:jrmVfvzF0]
>>222

HH:
Gui, 1:Default

225 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:33:03 ID:jrmVfvzF0]
>>223
一応
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/582schtasks/schtasks.html

226 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 23:28:11 ID:JeuLn3PH0]
>>176
最近これがやたらと起きてまじで困る
何がいけないのか分からない
AutoHotKeyのバグなの?

227 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:11:05 ID:HZFIWwq10]
>>226
Logiのsetpointつかってない?

228 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:44:39 ID:turBMvGA0]
>>227
マウスが路地のだからつかってる・・・

229 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:44:58 ID:VsQab8Ck0]
>>193
規制やら何やらで返事遅れてしまいましたが
フォーラムを漁ったらdllcallでole32\RegisterDragDropというのを使えばいいみたいでした

自分もSetWindowsHookExなどでWM_DROPFILES検知しようとしてたんですが、
Windowsって方法が色々あってむずかしいですね

230 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 07:02:32 ID:d+H9MLdZ0]
>>224
おお、これだったんですか、ありがとうございます出来ました。

231 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 07:55:11 ID:Ojx5UvYg0]
基本的なことで申し訳ないんだけど
テンプレなどのページでキーの変更などのことはわかったのですが、
どのようにして変更するかがわかりません。

たとえば「Ctrl+0」というのをF1に割りあげる場合どのソフトを起動し
どのような設定にすればいいのですか?

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 08:03:38 ID:ts3k5Em40]
それって結局何も分かってないってことじゃね?

233 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 09:14:25 ID:LcGKoNtW0]
>>226
マウスのサイドボタンに setpoint で shift や ctrl を割り当ててない?



234 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 13:20:46 ID:7JmYAkRj0]
LogiのMarbleMouse(トラックボール)を使ってるけど
SetPointはカスタマイズ系ソフトと競合してたのでSetPointを入れてないな。
ボタンのカスタマイズはAutoHotkeyでやってる。
MSのIntelliPointも同様のことが発生するという書き込みを見たことあるけど
使ったことが無いので解らない。

SetPoint(ユーティリティソフト)をアンインストールしても
ドライバはロジのままだったので手動で標準ドライバへ変更した記憶がある。
(標準ドライバにする必要があるかどうかは分らない。)
それとキーボードのドライバもいつのまにかロジのドライバに書き換えられてたので
それも標準ドライバに変えた。
現在のSetPointの仕様がどうなのか知らないけどね。

235 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 17:46:14 ID:CJ45cLgq0]
メーカー純正のマウスドライバって微妙だよな。
かといってXPだとOS標準じゃでチルトホイール使えないし。
せっかくWheelLeft/Rightがサポートされたのに残念だ。

236 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 17:59:54 ID:HZFIWwq10]
SetPointは、ノートPCのタッチパッド感度を勝手に初期化して加速を無効にしたり、
>>176の押しっぱなし症状が出たりと、多岐にわたって殺意が沸くほど悪影響がある。
が、こいつを入れないとせっかくのチルトボタンが有効にできないから、涙をのんで入れてる。

チルトボタンだけをF13〜F24にまわすような代替のソフトなんて、ないよね?
あったら、速攻でアンインスコしたい。

いまは、CtrlかAltが20秒以上押しっぱなしになってることを検出したら
Setpointを強制Killして、2秒後に、あらためて起動させるようにした。
けど、これも完璧な対策にはならない。

237 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 18:07:05 ID:Ojx5UvYg0]
特定のウィンドウもしくはソフトがアクティブの場合の指定などがわかりません。

Ctrl+0をF1に割り当てる場合どうすればいいですか?



238 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 19:35:35 ID:HZFIWwq10]
1年ぶりにロジクールのスレを覗いてみたんだが、

>Q. SetPointの設定が勝手にデフォルトに戻るんですが?
>A. キャンセルやクローズ(「×」)を押さないようにしましょう。
>
>Q. SetPoint 入れたくない(使いたくない)んで違う神ドライバありませんか?
>A. そんな都合のいいものがあったら是非教えてください。

添付アプリの糞加減は、なにも変わっていなかった・・・

239 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 19:41:07 ID:JJ+I/19Q0]
路地はハードは良いんだけどね

と言うかマウスユーティリティで良いものってあまり見ない。
絶対使わなそうなランチャとかイラネ。
古いInteliPointとエレコムホイールユーティリティは良いと思う

>>237
もうちょい頑張ろうぜ
ttp://lukewarm.s101.xrea.com/Examples.html

240 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 20:16:32 ID:7JmYAkRj0]
AutoHotkeyをインストールする
(インストーラーでインストールするとahkファイルの関連付けが一緒に行われる)
Autohotkey.exeと同じフォルダに 新規テキスト 作成する。
新規テキスト.txt を AutoHotkey.ini に変更する
※AutoHotkey.ini ではなく、任意の名前.ahk (ahkファイル)でもいい。
※ahkファイルならどこに作成してもOK。

テキストエディタ(メモ帳など)で Autohotkey.ini を開く。

ウィンドウの識別方法はいくつかあるけど、ウィンドウクラスで識別する方法を。
ウィンドウクラスを調べる方法はいろいろあるけど同梱されている AU3_Spy.exe を使うと簡単。
(AutoHotkey.exeと同じフォルダにある)
取得した ahk_class をクリップボードにコピーする。
例えばメモ帳のウィンドウクラスを調べると Notepad ということが分かる。

#IfWinActive, ahk_class Notepad ; メモ帳がアクティブなら
^0::F1

これを AutoHotkey.ini に貼り付けて保存し、Autohotkey.exe を実行。
(任意の名前.ahk に貼り付けて保存した場合は 任意の名前.ahk をダブルクリック)

最初の取っかかりで躓いているのだろうけど
後は>>239のリンク先に殆ど書かれている。

241 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:10:14 ID:Ojx5UvYg0]
いまんとこできたのがソフトの起動のみ・・・

WinTitle Mozilla Firefox
^PgDn::F2

#IfWinActive MozillaUIWindowClass
^PgDn::F2

これでできません・・・何が間違ってるのでしょうか?

242 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:23:46 ID:wnsiLCT/0]
F2::^PgDn
じゃないの?

ってか、とりあえず流行らせるページひととおり読もうぜ

243 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:49:21 ID:7JmYAkRj0]
「Ctrl+0にF1を」として書いてた・・・
「Ctrl+0をF1に」なら
F1::^0
だった

他の方も言ってるけどAutohotkeyを流行らせるページを見た?
(主に関連する解説ページはウィンドウの指定方法、ホットキー、Remap)



244 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:52:18 ID:SVpnwZUO0]
>>241
Sendを使う
Remapは修飾キーを離してくれないので
それだとCtrl+F2が押されたことになっている

245 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 00:10:42 ID:nmCnAcVn0]
スレッド動作中に、ほかのキーが押されているかは「GetKeyState」で
できますが、マウスのホイールが回ったかどうかを調べる方法は、ありますか?

マウスの左右チルトを倒してスレッドを開始し、
そこでループさせながらホイールの上下入力を検知したいのですが、
ホイールの回転検出方法でつまずいてしまいました。

246 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 00:46:58 ID:IlTer6q60]
こんな感じか

~WheelUp::wheel:=1
~WheelDown::wheel:=-1

WheelLeftl::
 wheel = 0
 Loop
 {
  ほげほげ
  If (wheel!=0)
   ふがふが
 }
 Return

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:32:42 ID:nmCnAcVn0]
>>246
ありがとうございます。うまくいきました。
なるほど、1スレッドにこだわるあまり、思いつきませんでした。

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:47:13 ID:yGrRFejp0]
#IfWinActive MozillaUIWindowClass
F2::
Send ^
Send PgDn
return

これでも駄目だった・・・なぜかしらん?


249 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:59:10 ID:pArZgo1w0]
いいかげん解説くらい読んでくれ

250 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 13:42:58 ID:567XQ0M40]
>>248
ctrlとPgDn別々に押してるんだから動かなくて当然
あとSendのページ読めば{}やら,やら必要なのもわかるはず
それと、なんで>>242試してみないの?

251 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 18:13:40 ID:fIAAihen0]
まあ ahk_class 付いてない時点でウィンドウ判定に失敗してるんだけどな

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 19:46:31 ID:yGrRFejp0]
ここ2、3日騒いでいた者ですがなんとか設定できました。
F2::^PgDnで問題なくできました。

問題は、251さんの指摘しているところですw

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 19:53:11 ID:YBCNr5+M0]
もう二度とこないでね^^



254 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:18:25 ID:hGBhDH/a0]
>>226,227,228,233,234
自分>>178なんですが、ロジのマウス使ったことないですがやっぱりShiftが押されっぱなしになりますね。
マウスドライバはMSの純正で、ボタン割り当てはAutoHotkeyのみでやってます。
LShift & WheelDown::AltTab
LShift & WheelUp::ShiftAltTab
だけで走らせてみたところ、LShift & WheelDown::AltTab でフォーカスを移したあと、マウスクリックで
元のウィンドウに戻ってくると、毎回 Shiftが押されっぱなしになることが分かりました。
TeraPadとJanedoeViewで確認。
LShift & WheelUp::ShiftAltTab では大丈夫みたいです。

マウスはサンワのTB38という5ボタンのトラックボール、メーカーのドライバを入れた前歴はありません。
キーボードがへたってるのかなあ

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:29:17 ID:IlTer6q60]
■ キー押しっぱなし俺的まとめ ■

症状
i) キーはCtrl や Shift が多い
ii) 物理キー押下・押上で解除される

原因となっていそうなもの
A) SetPoint(ロジクール製マウスユーティリティ)
B) 窓使いの憂鬱(のどか)
C) VMWare / VirtualPC

A単独、もしくは (B または C) + デュアルコア以上のCPU

※ ソースは繭スレとか

----
俺はCore2のPCにした時 B で一度なってAHKに完全移行(OS再インスト)で
いったん無くなったけど、VMWareを入れて(C)再発した。
今はどちらも入れていないので特に問題は起きていない。

256 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:59:14 ID:NFr4v0Hr0]
何分後に動作
とか
何時何分に動作
っていうタイマーってできないかな?
1分ごとに監視するのは無駄な動作が多い

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:11:27 ID:NFr4v0Hr0]
何分後ってのはタイマーで指定すればいいだけか
時間指定できないかな

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:24:32 ID:hGBhDH/a0]
>>255
AとCは該当なし、Bは使った事ないですがChangeKeyで前変換とカタカナキーを殺していたのを思い出して
リセットして再起動してみましたが駄目でした。自分もCore2DuoのE8400です。
OS再インストールするしかないのかな・・・ orz

259 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:59:46 ID:RvBowY+q0]
結局これといった解決方法は無しかorz

260 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 12:28:49 ID:Z+MpXoRr0]
>>256
SetTimer,OnTimer,60000
return

OnTimer:
FormatTime,NowTime,,HHmm
If (NowTime >= 0659) && (NowTime <= 0701) && (!Compleate) {
Msgbox, 7:00になったよ
Compleate := 1
} Else{
Compleate := ""
}
return

1分ごとに時間チェックするだけなら大した負荷にはならんと思うけど
(どっちにしろどこかで何かしらが定期時間チェックする必要はあるので
自分でやるか、他人に任せるかの違いでしかないのだし)

どうしても1分Timerが嫌なら単独スクリプトにしてOS標準のタスクスケジューラに登録したらいい

261 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 14:09:37 ID:J9kUfX5s0]
>>190
遅くなりましたが、動作確認できました。

> いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎる
期待しています。

とりあえず WheelAccel.ahk に修正を加えてアップしておきました。
ttp://lukewarm.s101.xrea.com/up の 111.zip

>>189氏ともども、ご教示ありがとうございました。今後ともよろしくお願いいたします。

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 16:45:22 ID:yzkbbsVb0]
ソフトのタイトルの一部で判断し
各キーを対応させるにはどうすれば
いいのでしょうか?

263 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 16:48:52 ID:m9lSj1Vi0]
複数のキーボードを接続している状態で、特定のキーボードについてのみ
キー配置のリマッピングを有効にする方法はあるのでしょうか。
Alphagripというイロモノキーボードを買ってみまして、AutoHotkeyで
リマップして キー配置を変更したのですが、普通のキーボードも同時に
使っているので そちらは出来ればそのままのキー配置にしたいのです。
一応関数は探してみたつもりですがそれっぽいのが見つかりませんでした。



264 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 17:46:05 ID:Kh84drTR0]
>>262
SetTitleMatchMode と #IfWinActive

>>263
ドライバレベルで対応出来るものじゃないと出来ない。無理。

テンキーなら ttp://ioenc.net/magickeypad/ で出来るけど、
でもこれもやっぱりドライバ置き換え。

265 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:01:50 ID:yzkbbsVb0]
>>264
レスどうも
タイトルに AutoHotkeyというのが含まれてる場合
SetTitleMatchModeで指定するにはどうすればいいのでしょうか?

#IfWinActiveの場合は、付属のソフトでahk_class○○といった
感じでできました。

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:09:21 ID:m9lSj1Vi0]
>>264
レスありがとうございます。やっぱ無理なんですか、残念。

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:47:56 ID:Kh84drTR0]
>>265
#IfWinActive などのウィンドウの状態を見てのキーアサインを振り分ける機能は
Autoexec セクション内での SetTitleMatchMode コマンドの指定したやり方で判定をする
(指定がなければ前方一致をデフォルトとする)


意味が全然分からないならスクリプトの「1行目」に以下を書く
SetTitleMatchMode, 2

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:57:45 ID:yzkbbsVb0]
とりあえずテンプレのサイトにいって調べてみたら

MatchMode
タイトルのマッチ方法

1
前方一致(WinTitleで指定した文字列で始まるウィンドウが一致する)(高速)(デフォルト)
2
中間一致(WinTitleで指定した文字列を含むウィンドウが一致する)
3
完全一致(WinTitleで指定した文字列に完全に一致するものが一致する)

こんなのを発見しました。

2というのとかの意味もわかりました。使い方自体は疑問ですが、
最初の行に書き込むことによって目的の動作ができるようになりました。

m(_ _)mペコッ

269 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 19:19:19 ID:Z+MpXoRr0]
ID:yGrRFejp0 = ID:yzkbbsVb0 だろ

264でヒントもらっといて 265みたいな再質問ってあり得ない
質問するなとはいわんが答えてもらった内容をちゃんと噛み砕いて飲み込む努力しろよ
調べる能力つけないとこのソフト使うのは難しいぞ

270 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 19:58:07 ID:Kh84drTR0]
多少なりとも前進はしてるようだけど、調べる気がないのはちょっとな

271 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 23:35:06 ID:yzkbbsVb0]
そんな風にみえちゃんだろうけど相当検索し調べその結果ですw
調べ方が悪いのかしら・・・

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 23:57:07 ID:LyIyydqb0]
調べ方も頭も態度も悪い

273 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:19:42 ID:LY2SRQDx0]
hoge.ahkが起動しているかを別のahkから調べる方法はありますか?
プロセスがあるかで調べようと思ったのですがどれもAutoHotkey.exeで調べられませんでした



274 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:34:59 ID:LCii9rhx0]
>>273
もらいもの
DetectHiddenWindows, On
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
WinGetTitle, this_title, ahk_id %this_id%
msgbox, %this_title%
}

それか、AutoHotKey.exeをhoge.exeにリネームコピーしてhoge.ahkをhoge.exeに送れば問題なし。

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:38:33 ID:gJSSJElb0]
SetTitleMatchMode, 2
#SingleInstance, force
DetectHiddenWindows, On
WinWait, \hoge.ahk - AutoHotkey, , 0.1
DetectHiddenWindows, Off
msgbox, % Errorlevel ? "ないよ" : "あるよ"


276 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:46:22 ID:ylbkYADc0]
コマンドラインを読む関数がどこかになかったっけ?
それ使えばいいような

277 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:53:22 ID:LY2SRQDx0]
>>274-275
出来ましたありがとうございます

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 03:28:19 ID:LY2SRQDx0]
すみませんAHK連携絡みでもう二つ質問させてください。

あるAHKから起動中の別のAHK内の指定処理(ラベルなり関数)を実行させる最適な方法は何でしょうか?
起動中のAHK間の変数の受け渡しはファイル書き出し、読み込み以外で方法ありますか?

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 04:22:12 ID:gUuxFMOa0]
隠し(じゃなくてもいいけど)GUI作って、ボタンを押す。パラメタ渡しは隠しGUIのEditとかに書く

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 05:14:16 ID:gJSSJElb0]
関数ならAutoHotkeyをインストールしているディレクトリにLibフォルダを作って
そこに入れておけばいいんじゃないかな


変数の受け渡しはクリップボードを軽油する方法もある。
一定間隔でクリップボードを監視し、特定の文字列から始まるなら
変数の受け渡しと見なし、変数に置き換えてやるとか。

281 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 05:15:29 ID:gJSSJElb0]
;例えば特定の文字列を ahk9999999 とし、
;クリップボードコピーする形式を ahk9999999,変数名,値 というにようにする。
;下記スクリプトを実行中に ahk9999999,hoge,5 をクリップボードにコピーすると
;msgboxに hoge = 5 と表示。

#Persistent
#SingleInstance, force
hoge=1 ; テストで変化を確認するために初期値を 1 にしておく
SetTimer, ClipBoardCheck, 100
return

ClipBoardCheck:
if(Instr(Clipboard, "ahk9999999")=1){
loop, parse, Clipboard, `,
{
if A_Index=2
hogehoge=%A_LoopField%
else if A_Index=3
%hogehoge%=%A_LoopField%
}
Clipboard= ; クリップボードを空にする
msgbox, %hogehoge% = %hoge%
}
return

;変数を渡す方のスクリプトはClipboardの内容のバックアップしておき、
;Clipboardが空になったらバックアップしていたのを戻すようするといいかも。

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 15:21:49 ID:ZMhX9OF60]
>>279
仕組みは分かったのですがやり方が分かりません(´;ω;`)
よかったら簡単な例を教えてください

試しにこういうふうに作ったのですがGUIがHideだからなのかクリックしてくれません

操作する側に
ControlClick, Button1, HideControl

操作される側に
GUI, Add, Button,,Exit
Gui, Show, Hide, HideControl
return

ButtonExit:
ExitApp

>>280-281
なるほどクリップボードですか
接頭辞を決めておくというのは思いつきませんでした

283 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:13:59 ID:gUuxFMOa0]
>>282
操作側で DetectHiddenWindows,On



284 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:33:39 ID:16cGC6mhP]
受け渡しなら、OnMessageとPostMessageでしょjk
英語公式のリファレンスに詳しいサンプルがある

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:43:17 ID:ZMhX9OF60]
>>283
早速試しましたが変化無しでした

286 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 17:36:28 ID:gUuxFMOa0]
>>284
まぁそれが普通だと思うけど、GUIのボタン押すのもあまり変わらないと思う

---- server.ahk ----
Gui, Add, Button,gSub1
Gui, Add, Edit, vParam
Gui, Show,Hide, HiddenWindow
Return
Sub1:
Gui, Submit, NoHide
MsgBox, % Param
Return
---- client.ahk ----
Gui, Add, Edit, vParam
Gui, Add, Button,,Go
Gui, Show
Return
ButtonGo:
Gui, Submit, NoHide
DetectHiddenWindows, On
ControlSetText,Edit1,% Param, HiddenWindow ahk_class AutoHotkeyGUI
ControlClick,Button1,HiddenWindow ahk_class AutoHotkeyGUI
Return



287 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 17:56:23 ID:16cGC6mhP]
じゃあ、先に普通のやり方教えてあげなよw
余計なGUIリソース消費するし、コードの可読性や保守性を考えるとあまり一般的な解決法とも思えない

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:09:32 ID:ZMhX9OF60]
>>286
おー無事出来ました
どうもありがとうございました
>>284
やっぱりそっちのほうがいいんですかね
でも英語読めないので諦めますw

289 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:33:01 ID:gUuxFMOa0]
普通のアプリならそうすると思うけど、色々覚えなきゃいけないことが多いから
AHKのコマンドだけで出来る事に意義はあると思うよ。
リソースったってたいしたことないよ。

290 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:58:11 ID:16cGC6mhP]
まあ、人それぞれだから好きにすればいい
一応OnMessageだってahkのコマンドだし、覚えるのが大変なのはGUI絡みだって同じだと思うけどね
文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む

--- receiver.ahk ---
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg)
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}

--- sender.ahk ---
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return


291 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 22:46:25 ID:q3qyIN4s0]
人それぞれって言われたらそれまでだが、GUIはちょっとな
AHKのGUI関連って無駄にイベントラベル増えるからコードぐちゃぐちゃになるし。
自分だったら窓表示する必要があってもGUIコマンドは可能な限り使いたくないな。

>>276
管理人さんのマウスジェスチャ2の中だな。hh.exeなんかからでもchmファイルのフルパス抜けるし便利だよ
GetCommandLine(pid=0,WinTitle="A"){
  if (!pid)
    WinGet,pid,PID,%WinTitle%

  ; kernel32\GetCommandLineA のアドレスへのポインタを設定?
  ptr:=(NumGet(DllCall("kernel32.dll\GetProcAddress",UInt,DllCall("kernel32.dll\GetModuleHandle",Str,"Kernel32"),Str ,"GetCommandLineA",UInt)+1))

  ; プロセスのハンドルを取り出す
  hp:=DllCall("kernel32.dll\OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,UInt)
  VarSetCapacity(res,1024)

  ; GetCommandLineのメモリアドレスを取得してからコマンドライン文字列を取得
  DllCall("kernel32.dll\ReadProcessMemory" ,UInt ,hp ,UInt ,ptr, UIntP,addr ,UInt ,4 ,UInt ,0)
  DllCall("kernel32.dll\ReadProcessMemory" ,UInt,hp ,UInt,addr ,Str,res ,UInt,1024 ,UInt,0)

  DllCall("psapi\CloseProcess", UInt,hp)
  return res
}

292 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 23:48:05 ID:ZMhX9OF60]
>>290
これはスマートでいいですね
使わせてもらいます

293 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 02:55:22 ID:9141GuF00]
>>200
この方法ではNumpad0,Numpad6,Numpad1に割り当てできなくなります。
何とかなりませんでしょうか?



294 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 03:00:20 ID:2F0zdoiY0]
キーを押し続けている間連続で加速しながら処理
プレイヤーのシーク操作やボリューム操作など

Left::
sleepTime := 80 ;初期待ち時間
While GetKeyState("Left","p")
{
send, {Left} ;任意処理
sleep, %sleepTime%
sleepTime := sleepTime > 20 ? sleepTime * 0.95 : 20 ;加速
}

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 22:47:42 ID:Qq8KUG5Y0]
AHK使い始めたばかりなんですが、ウィンドウタイトルの無いウィンドウを
操作するのはどうしたらいいでしょうか?
具体的にはnovolization.hp.infoseek.co.jp/pro.html#ao のMovieOperatorを
操作したいんですが。自分ではウインドウタイトルが無いとマウスで絶対座標指定して
いちいちクリックとかしか考え付かないです。

ちなみに前はUWSC使ってました。こいつでもウィンドウタイトルが無いとどうにもならなかったんで
ツール変えてみようかと思い立ったわけなんですが…

296 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:08:50 ID:HdFC8Trn0]
ウィンドウクラスとプロセス名(PID)で絞り込みかなl

Process, Exist, MovieOperator.exe
IfWinExist,ahk_class #32770 ahk_pid %ErrorLevel%
{
; ここにウィンドウ操作
ControlGetText, text, ComboBox1
MsgBox, % text
}

297 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:35:44 ID:Dlle25nB0]
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
JPG2AVI
ahk_class Afx:00400000:b:00010011:00000006:0594124D

AU3_Spy.exeで見ると普通にウィンドウタイトル取れてるみたいだが。
これで操作できないんか?

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:40:34 ID:Dlle25nB0]
ってスマソ、思いっきりソフト間違えとる。

299 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:41:31 ID:Jnu5lPCA0]
JPG2AVI じゃなくて MovieOperator じゃないの?
ウチの環境でMovieOperatorをAU_Spy.exeで取得してみたけど
タイトル無しの ahk_class #32770 だったよ

300 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:57:31 ID:Qq8KUG5Y0]
>>296
ありがとうございます。PIDで取れました。

これで色々操作するめどが立ちます。

301 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 00:15:03 ID:ZOyW9r5y0]
先の質問とは関係ないですがエディタにサクラエディタ使ってる人居ないですかね?

キーワード定義既存のがあったら欲しいです…

302 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 01:08:54 ID:K2VHacbK0]
>>301
昔どこかで拾ったんだよなあ。再びググったが見付からず。
黙ってあげてみるが、明日の昼には消す。
ttp://aaabbbccc.s6.x-beat.com/upload/src/up26358.zip

303 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 02:46:42 ID:ZOyW9r5y0]
>>302
ありがとう。頂きました。



304 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 13:43:55 ID:WplNcnsp0]
コントロールのウィンドウハンドルからClassNNを取得するにはどうすればいいんでしょうか

305 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 15:41:53 ID:4VER+fnU0]
最近使い始めたばかりなのですが ttp://hp.vector.co.jp/authors/VA044605/resp.html
このRespというソフトとの連携がうまくいきません
IfWinExist, RESp
{
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
}
Run, Respのぱす
WinWait,Resp
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
ソフトが立ち上がっている場合はうまくいくのですが立ち上がってからの検索ワードが渡りません
よろしくご教授のほどお願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<154KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef