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:: 等では途中に左クリック入れるとかしないとそのままではできない・・
489:名無しさん@お腹いっぱい。
09/03/20 18:41:45 oBtBrUgR0
>>486
レスありがとうございます。
~NumLock::pause
でできました^^
490:名無しさん@お腹いっぱい。
09/03/20 20:49:30 q1D8qFby0
へ~、UpperDirOneみたいなのが楽につくれるなぁ・・・と思ったけど
~LButtonでフォルダ移動の場合、項目がとれる前に移動が完了ちゃって
フォルダに移動した後にBackspace送っちゃって元通り・・・で意図したとおりに動かない
結局 ~ なしになったけどうまくいかんもんだねぇ
SetTitleMatchMode, RegEx
#IfWinActive, ahk_class CabinetWClass|ExplorerWClass
LButton::
if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
MouseGetPos,,,,classNN
ControlGet, selected,List,Selected, SysListView321, A
Send, % (classNN=="SysListView321" && !selected) ? "{BackSpace}" : "{LButton}"
} else {
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
}
return
491:名無しさん@お腹いっぱい。
09/03/20 20:54:15 w27aWi9q0
>>488,489
ありがとう!
月曜まで家に帰れないから試せないけど、帰ったらやってみる!
492:名無しさん@お腹いっぱい。
09/03/21 00:19:19 JP2qPQY00
某スレで盛り上がってたので書いてみました。
カーソルをくるくる回すとスクロールします。
URLリンク(lukewarm.s101.xrea.com)
493:名無しさん@お腹いっぱい。
09/03/21 00:26:44 g8LL/GxK0
>>492
どうやってAHKで再現しようか考えていたら・・・
ありがたく頂きます
494:名無しさん@お腹いっぱい。
09/03/21 00:28:23 ft3ZieEm0
これは面白いw
タッチパットのノートパソコンだとうまく利用できそう。
495:名無しさん@お腹いっぱい。
09/03/21 00:45:49 daHpkZkf0
おお、すんばらし。
組み込むと色々応用が効きそうだ。
496:名無しさん@お腹いっぱい。
09/03/21 01:16:17 e7LMny/o0
autohotkey.ini に includeで
#Include kurukuruscroll.ahk
と書いて使わせてもらったんだけど、includeする位置によって使えたり
使えなかったりするのはなんでだろう。
マニュアルのどこを読めばいいのか教えて欲しい。
497:名無しさん@お腹いっぱい。
09/03/21 05:54:27 enEmkL2t0
>>492
一つに纏められて助かりました
認識率と反応も完璧だね
498:名無しさん@お腹いっぱい。
09/03/21 07:41:19 QvNRDM9W0
>>496
URLリンク(lukewarm.s101.xrea.com)
ここの一番下auto-executeですね。
ホットキーが書いてあるとこより前に組み込みます。
変数が重複しないよう気をつけましょう。
499:名無しさん@お腹いっぱい。
09/03/21 08:45:00 e7LMny/o0
>>498
ありがとう!!!
各includeファイルのauto-executeセクションをautohotkey.iniのauto-executeセクションに移動したらうまく動いたー。
今までauto-executeセクションって知らなかった^^;
*.ahkを includeするときって
autohotkey.ini
-------------------
AAA.ahkの auto-executeセクション
BBB.ahkの auto-executeセクション
return
#Include AAA.ahk
#Include BBB.ahk
;ホットキー定義開始
-------------------
500:名無しさん@お腹いっぱい。
09/03/21 09:41:42 mEL9l3Hw0
ダブルクリック検出の件だが、何とかなったので張ってみる。コードのインデントに全角空白使ってるので注意。
; IsDoubleClicked関数
; ダブルクリックを判定する関数、L,R,M,X1,X2の各ボタンに対応
; システムからダブルクリック時間、範囲を取得して判定、AutoHotkey_Lの#ifでの使用を想定
IsDoubleClicked(){
Static dcTime=0,LastTime,tx,ty,LastMouseKey=0,lx=-256,ly=-256,lr=0
if(!dcTime){
dcTime:=DllCall("GetDoubleClickTime")
SysGet,tx,36
SysGet,ty,37
LastTime:=A_TickCount-dcTime*2
}
if(A_TickCount=LastTime)
Return lr
NowMouseKey:=(GetKeyState("LButton","P") | GetKeyState("RButton","P")<<1
| GetKeyState("MButton","P")<<2 | GetKeyState("XButton1","P")<<3
| GetKeyState("XButton2","P")<<4)
VarSetCapacity(Point,8)
DllCall("GetCursorPos","uint",&point)
if((LastMouseKey!=NowMouseKey)||((A_TickCount-LastTime)>dcTime)
||(abs((NumGet(Point,0)-lx))>tx)||(abs((NumGet(Point,4)-ly))>ty)){
lx:=NumGet(Point,0),ly:=NumGet(Point,4)
LastTime:=A_TickCount,LastMouseKey:=NowMouseKey
Return lr:=0
}
else{
LastTime:=A_TickCount-dcTime
Return lr:=1
}
}
501:500
09/03/21 09:42:42 mEL9l3Hw0
; Lv_HitTest関数
; リストビューでアイテム上にマウスがある時に種類を返す
; そもそもリストビュー上でない場合は何も返さず、
; アイテム上にない場合は0を返す
; 参考:流行らせるページの MouseGesture.ahk 内 MG_LvHitTest() 関数
Lv_HitTest(){
MouseGetPos,,,hwnd,class,1
MouseGetPos,,,,chwnd,3
WinGet,pid,PID,ahk_id %hwnd%
VarSetCapacity(point,8)
DllCall("GetCursorPos","uint",&point)
if(substr(class,1,13)=="SysListView32" || substr(class,1,9)=="TListView"){
p:=DllCall("kernel32.dll\GlobalAlloc","uint",0x40,"uint",8,"uint")
NumPut(NumGet(point,0),p+0,0),NumPut(NumGet(point,4),p+0,4)
DllCall("user32.dll\ScreenToClient","uint",chwnd,"uint",p)
hp:=DllCall("kernel32.dll\OpenProcess","uint",0x001F0FFF,"uint",0,"uint",pid,"uint")
pi:=DllCall("kernel32.dll\VirtualAllocEx","uint",hp,"uint",0,"uint",24,"uint",0x1000,"uint",0x4,"uint")
DllCall("kernel32.dll\WriteProcessMemory","Int",hp,"uint",pi,"uint",p,"Int",8,"Int",0)
SendMessage,0x1012,0,%pi%,,ahk_id %chwnd%
DllCall("kernel32.dll\ReadProcessMemory","uint",hp,"uint",pi+8,"uintp",flag,"uint",4,"uint",0)
DllCall("kernel32.dll\VirtualFreeEx", "uint",pi, "uint",0, "uint",0x8000)
DllCall("psapi\CloseProcess","uint",hp)
DllCall("kernel32.dll\GlobalFree","uint",p)
flag:=flag & 15
return (flag<4) ? ((flag<2) ? 0 : "ItemIcon") : ((flag<8) ? "ItemLabel" : "ItemState")
}
}
502:名無しさん@お腹いっぱい。
09/03/21 09:43:29 mEL9l3Hw0
; IsDesktopDoubleClicked関数
; デスクトップをダブルクリックした時にTrue
IsDesktopDoubleClicked(){
Return IsMouseOverDesktop() && IsDoubleClicked()
}
; IsMouseOverDesktop関数
; マウスがデスクトップ上にある時にTrue
; bbLeanだとProgmanじゃうまくいかなかったので
IsMouseOverDesktop(){
MouseGetPos,,,hwnd
Return (hwnd==DllCall("GetDesktopWindow")
||hwnd==WinExist("ahk_class Progman"))
}
503:500
09/03/21 09:44:06 mEL9l3Hw0
; 使い方 #ifじゃなくても何とかなるが、ダブルクリックじゃなかった時に
; 通常のクリックをするべきなので AutoHotkey_Lの#ifを推奨
#if IsDoubleClicked()
&& (WinActive("ahk_class CabinetWClass") || WinActive("ahk_class ExploreWClass"))
&& Lv_HitTest()==0
LButton::Send,{BS}
#if IsDesktopDoubleClicked()
LButton::Msgbox,デスクトップがダブルクリックされた
#if
以上、長くなった&見にくくてすまんがこんな感じでできた。
504:名無しさん@お腹いっぱい。
09/03/21 09:50:33 mEL9l3Hw0
; おまけ:行頭の全角スペースとTabを相互変換するスクリプト
#NoEnv
#EscapeChar '
Gui,Font,,MS ゴシック
Gui,Add,Text,,↓ここにコードを貼り付ける
Gui,Add,Edit,w640 h480 vData
Gui,Add,Button,gWsToTab,行頭の全角スペースをTabに変換
Gui,Add,Button,gTabToWs x+10,行頭のTabを全角スペースに変換
Gui,Show
Return
GuiClose:
GuiEscape:
ExitApp
GuiDropFiles:
if(A_EventInfo<=1)
FileRead,Data,%A_GuiEvent%
GuiControl,Text,Data,%Data%
Return
WsToTab:
TabToWs:
Gui,Submit,NoHide
Output:="",w:=(A_ThisLabel="WsToTab" ? 1 : 0)
Loop,Parse,Data,% chr(10)
{
chr:="",t:=A_LoopField
While (SubStr(t,1,(w ? 2 : 1))==(w ? " " : chr(9)))
t:=SubStr(t,(w ? 3 : 2)),chr.=(w ? chr(9) : " ")
Output.=chr t chr(10)
}
GuiControl,Text,Data,%Output%
Return
505:名無しさん@お腹いっぱい。
09/03/21 17:16:25 5yWBri8L0
横からすみません。
ググったらあんまりヒットしなかったので、以前貼られていた
DoubleKey関数紹介しておきますね。
出展:URLリンク(www.donationcoder.com)
DoubleKey(RunCommand, timeout){
if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout)
Run, %RunCommand%
}
return
~LButton up::DoubleKey("hoge.ahk", 400)
みたいに各ボタンごとに処理を書いたahkファイル(ここでは同ディレクトリ内のhoge.ahk)
を別途用意する必要はありますが、これでも動作しまっする。
506:名無しさん@お腹いっぱい。
09/03/21 17:28:06 QyANxbob0
>>492のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?
507:500
09/03/21 18:03:47 mEL9l3Hw0
>>503のIsDesktopDoubleClickedを修正。
こうしないとアイコンダブルクリックした時にまで発動してしまう。
IsDesktopDoubleClicked(){
Return IsMouseOverDesktop() && IsDoubleClicked() && Lv_HitTest()==0
}
>>505
確かにそういう方法でも時間内に2回クリックした時に何かするってことはできるんだけど、
1回目と2回目のクリック位置が離れてる時にも発動したり、
↑みたいにアイコンダブルクリック時にも発動しちゃったりして、
いわゆるダブルクリック系の挙動としてはちょっと弱いかなーって思って書いてみた。
あと意地でも2回目のクリックを乗っ取りたかったってのもある。
でも少しこだわりすぎたかなーとは思ってる…
まぁ、自分で組み込んで使ってるし結果的には満足。
>>506
WheelUpとWheelDownってなってるところを
横スクロールできるキーに変えればいいんじゃないかな。
508:名無しさん@お腹いっぱい。
09/03/21 18:08:20 H5O5lVNo0
>>505
ID:mEL9l3Hw0がどこまで厳密なモノを求めてるのかわからんのでスルーしていたのだが。
そもそも>505レベルでいいんならこんなに頑張ったりはしないと思う
509:名無しさん@お腹いっぱい。
09/03/21 18:09:14 H5O5lVNo0
リロってなかった。蛇足スマソ
510:名無しさん@お腹いっぱい。
09/03/21 18:27:06 HbFBHhgK0
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…
511:500
09/03/21 18:27:27 mEL9l3Hw0
>>500の書き方だと勘違いされそうなので
一応書いておくけど、俺は>>484ではないです。
>>490を見て、UpperDirOneに相当する機能は
別のソフト使ってたの思い出したので、
何とかAHKだけで実現できないかなと思って、頑張ってみた。
…これこそ蛇足だったかな。
512:名無しさん@お腹いっぱい。
09/03/21 19:39:14 5yWBri8L0
>>507
申し訳ありませんでした
> 1回目と2回目のクリック位置が離れてる時にも発動したり、
> ↑みたいにアイコンダブルクリック時にも発動しちゃったりして
そらそうですよね・・・深く考えずに書き込んだこと反省してROM専に戻ります。
あと IsMouseOverDesktop関数はいろいろ使えそうですね。頂きます&&乙であります。
513:名無しさん@お腹いっぱい。
09/03/21 20:03:23 YAcqdaL20
>>461
超亀レスで失礼します。
見つけたので貼っておきますね。
試してませんが通常ののキーボードでも動作するようです。
USB接続のテンキーを、プログラマブルキーボード
URLリンク(ioenc.net)
514:名無しさん@お腹いっぱい。
09/03/22 11:30:10 GrExewU20
こんにちは
MouseGesture2、2008/10/07版をVista SP1で使わせて貰ってます。
マウ筋の機能で「設定ホイール回転でアクティブ」という機能があるのですが
(ArtTipsというソフトでは、SETTING>快適マウスホイール>快適マウスホイールを使用する>フォーカス移動を行う)
これと同じ挙動をMouseGesture2で実現させるにはどのように記述すればうまく行きますか?
あと、JaneDoe Viewなど一部のソフトでWinMinimizeを使って最小化すると
デスクトップ左下にタイトルバーの小さくなったものが、残って最小化されてしまいます。
これを回避する方法を教えて下さい。
515:名無しさん@お腹いっぱい。
09/03/22 11:41:41 scspGd4S0
簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
WinActivate
を記述する
516:名無しさん@お腹いっぱい。
09/03/22 11:46:37 T0zgn4OC0
流行らせるページのホイールリダイレクトでもいいんじゃね
517:名無しさん@お腹いっぱい。
09/03/22 11:56:01 4c0Fopck0
アクティブにしつつスクロールするなら両方
518:名無しさん@お腹いっぱい。
09/03/22 12:23:38 GrExewU20
>>515-517
親切に即レスありがとうございます。
>簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
>WinActivate
>を記述する
が一番挙動が近かったのですがマウ筋とArtTipsの機能は
Xplorer2などの二画面ファイラーや小ウィンドウがあるようなソフトに対しても
各ウィンドウをホイールの回転でアクティブに出来るので、このような挙動を望んでいますが
無理な場合WinActivateでアクティブにするようにしたいと思います。
しかし、この場合ホイールUp、Dnでアクティブになったあと普通にスクロールが利かなくなってしまいますよね?
519:名無しさん@お腹いっぱい。
09/03/22 12:46:54 ZBRd96Tp0
>>490 をファイル選択ダイアログでも効くようにした
注意) 全角スペース利用、誤爆が無いとは言えない
; UpperDirOne
LButton::
if (A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) {
MouseGetPos,,,,classNN
if (classNN=="SysListView321") {
ControlGetText, text, SysListView321, A
if (text == "FolderView") {
ControlGet, selected,List,Selected, SysListView321, A
if (!selected)
Send, {BackSpace}
}
}
}
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
return
520:名無しさん@お腹いっぱい。
09/03/22 17:35:30 Rn9QKfmc0
MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに
無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが
認識してくれません。無変換キーは何で登録すれば良いでしょうか?
521:名無しさん@お腹いっぱい。
09/03/22 17:37:47 Biaw3oNa0
>>520
URLリンク(lukewarm.s101.xrea.com)
522:名無しさん@お腹いっぱい。
09/03/22 18:04:15 Rn9QKfmc0
>>521
ありがとうございます。そのページは見落としていました。
早速、カーソルが画面左下角に接触で1秒遅らせて無変換を2回押しがしたくて動作に
if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}{vk1Dsc07B}
}
や
if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}
MG_Wait(100)
Send,{vk1Dsc07B}
}
など、やってみたのですがうまく動きません。
どなたかアドバイスお願い致します。
523:名無しさん@お腹いっぱい。
09/03/22 23:07:53 gJvAxqMw0
動作の確認音にSoundbeepを使ってたけど、パソコン変えたらビープが鳴らないw
524:名無しさん@お腹いっぱい。
09/03/23 09:06:05 Y2hrPoG60
とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え
URLリンク(lukewarm.s101.xrea.com)
> 123 名前:管理人 ★[] 投稿日:2009/03/23(月) 06:07:20
> 2chのAutoHotkeyスレにMouseGesture.ahkの質問が書かれていたのに、DION規制で書き込めなくて困る。
> 誰か親切な人があと555モリタポほど恵んでくれれば、p2で書き込めるのだが。
> URLリンク(find.2ch.net)エユ、「、熙ャ、ネ、ヲ、エ、カ、、、゙
しかしDION規制まじむかつく、Viewは何故か24時間以上起動させっぱだと●ログイン無効になるので
いちいち再起動させなくちゃいけなくて面倒だ
525:名無しさん@お腹いっぱい。
09/03/23 09:53:24 Edo9xp5W0
>>3のとおりに、CapsLockをF13~F24に割り当てようと思うんだけど、
Change Keyってどうやってこれ割り当てるの??
似たようなレジストリ変更タイプのキーチェンジソフトいくつか探してみたが、
どれもF12までしか割り当てられないっぽい・・・
526:名無しさん@お腹いっぱい。
09/03/23 12:36:14 WUKQO+dS0
>>522
Send,{vk1Dsc07B}{vk1Dsc07B} → Send,{vk1Dsc07B 2}
MG_Wait(100) → Sleep,100
>>518
Jane Doe Style は「ウィンドウ(W)」→「最小化(M)」
があるのでそれを実行させればいいんじゃない?
Send,!w
Send,m
それかJane Doe Styleのショートカットキーのカスタマイズで
最小化にキーを割り当ててそれをSendするとか。
アクティブにしてスクロールは
アクティブした後にWheelUp(Down)を送ればいいじゃない。
あと、コンボボックスをアクティブにしようとすると
コンボボックスが消えるのでアクティブにしないようにしとけば
概ね支障なく動くはず。
527:名無しさん@お腹いっぱい。
09/03/23 12:36:56 WUKQO+dS0
<< >>526の続き >>
;WU_ の Default に↓の2行を追記する。
gosub, CursorUnderActivate
Send,{WheelUp}
;WD_ の Default に↓を2行を追記する。
gosub, CursorUnderActivate
Send,{WheelDown}
;MG_User.ahk をテキストエディタで開き、以下を「サブルーチン定義」内にコピペ
;マウスカーソル下をアクティブにする関数
CursorUnderActivate:
MouseGetPos,,, m_id, m_control
WinGetClass, m_class, ahk_id %m_id%
;マウスカーソル下がコンボボックス(ドロップダウンリスト)ならreturn
If(RegExMatch(m_control, "ComboLBox\d+"))
return
;マウスカーソル下が非アクティブならアクティブ化
IfWinNotActive, ahk_id %m_id%
{
SetWinDelay,-1
WinActivate
SetWinDelay,100
}
return
;これで支障が出るなら>>517の方法がいいと思う。
528:名無しさん@お腹いっぱい。
09/03/23 12:39:05 WUKQO+dS0
あ、ウィンドウクラスは必要ないので↓は要らないや・・・
WinGetClass, m_class, ahk_id %m_id%
529:名無しさん@お腹いっぱい。
09/03/23 12:40:24 WUKQO+dS0
×;マウスカーソル下をアクティブにする関数
○;マウスカーソル下をアクティブにするサブルーチン
530:名無しさん@お腹いっぱい。
09/03/23 13:54:01 1ZxaOcnN0
>>525
K SC Type Up/Dn Elapsed Key
------------------------------------------------
7C 064 i u 0.04 F13
7D 065 i u 0.04 F14
7E 066 i u 0.04 F15
7F 067 i u 0.04 F16
80 068 i u 0.04 F17
81 069 i u 0.04 F18
82 06A i u 0.04 F19
83 06B i u 0.04 F20
84 06C i u 0.04 F21
85 06D i u 0.04 F22
86 06E i u 0.04 F23
87 076 i u 0.04 F24
531:名無しさん@お腹いっぱい。
09/03/24 23:15:50 mXwaygr80
多重起動を検知したくて以下のようにしたんだけど、
除外タイトルって効いて無い
それともPIDとかでの除外は無理なのかな
#SingleInstance, OFF
Process, Exist
myPid:=ErrorLevel
DetectHiddenWindows,On
IfWinExist, %A_ScriptFullpath% ahk_class AutoHotkey,,ahk_pid %myPid%
MsgBox, あり
Else
MsgBox, なし
532:名無しさん@お腹いっぱい。
09/03/25 01:46:19 zeEEOJ2T0
>>531
>>144,147,153
前々スレに多重起動検知で終了とかはあったよ。
タイトルが一緒でPIDが違うならで、判別してた。
一部だけ引用
;自分の情報を取得
DetectHiddenWindows, On
Process,Exist
pid:=ErrorLevel
WinGetTitle, g_scriptTitle, ahk_pid %pid%
WinGet, hwnd, id, ahk_pid %pid% ahk_class AutoHotkey
;ahk_class AutoHotkeyのウィンドウを全て列挙
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
ahk_id_list%a_index%=
WinGetTitle, this_title, ahk_id %this_id%
if(g_scriptTitle==this_title && hwnd!=this_id){ ;自分以外で同じタイトルを見つけたら終了メッセージを投げる。
533:名無しさん@お腹いっぱい。
09/03/25 08:36:04 zeEEOJ2T0
暇だったから、作ってみた。あまりの使えなさに吹いたw
#persistent
CoordMode, Mouse, Screen
Settimer, Expose
return
Expose:
MouseGetPos, X, Y
if (Y<1){
;左右に並べて表示
SendMessage,0x111,405,,,ahk_class Shell_TrayWnd
keywait, LButton, D
KeyWait, LButton
;元に戻す
SendMessage,0x111,416,,,ahk_class Shell_TrayWnd
Loop
{
MouseGetPos, X, Y
if (Y>2)
break
}
}
return
534:名無しさん@お腹いっぱい。
09/03/25 13:01:45 UMyjgm290
>>525
俺はchangekeyでF13を割り当ててるよ。