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


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

AutoHotkey スレッド part7



1 名前:名無しさん@お腹いっぱい。 [2008/12/31(水) 12:39:34 ID:ROX9gd900]
■公式
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/

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

263 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 00:39:11 ID:tq73/xcp0]
いや、あらゆる処理が作れるだろ、dll呼び出しもできるし

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

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

265 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/13(金) 01:15:10 ID:EUev75pp0]
>>263
確かにそうだけどさ、、AHKの範疇は超えちまうわな


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

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

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


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

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

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

if hoge = 1 else
{
msgbox,hello!
}

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

269 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 06:39:35 ID:xPcJgk5F0]
論理否定

270 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 07:54:37 ID:TE2mD3kq0]
if hoge != 1

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



272 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 10:14:14 ID:dHhfIlz20]
>268
C に unless はないべ。Perl とか Ruby にはあるらしいが。

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

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 13:19:42 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 14:30:36 ID:7OA6UMgE0]
Hotkey, %h_key%, Label で普通に割り当てできるが?

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

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

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

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

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

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 20:29:40 ID:FTwXZkWh0]
>>276
なぁオマエ一言多いとかリアルで言われないか?

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 20:58:12 ID:mkT/24Fx0]
>>278
オマエ一言多い

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 21:24:53 ID:sliL46ld0]
>>279
オマエ一こt(ry

281 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/14(土) 21:53:18 ID:fL3JIfIu0]
トレイアイコンをクリックしたら実行するってどうやるの?



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

283 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 14:03:58 ID:BLcyg5Ix0]
以上、本人でした。

284 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 14:16:47 ID:4Lz/N4h80]
( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/15(日) 16:34:58 ID:WX2c84/Q0]
まあ、スマートではないな>>276

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

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

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

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


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

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

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



292 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 06:36:37 ID:DfB2sRU60]
>>289
なるほど
その手がありましたか
やってみます

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

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 09:29:13 ID:gRNTeVF80]
ggrksが来るぞ

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 10:28:05 ID:m36Y1Mz60]
絶対領域はググっても違うもんばっか出てくる。
www.forest.impress.co.jp/article/2008/05/15/zettai.html

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

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

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

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

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

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

gui,show

ButtonExit:
ExitApp

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

300 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 00:43:51 ID:p7oLYgT60]
gui,show
return
ここで終わらせないとExitAppまでいっちゃうぞ。

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



302 名前:274 mailto:sage [2009/02/17(火) 01:36:11 ID:ChZCT6AI0]
>>275-276
ありがとうございます。無事できました。
276さんの書いていることは自分なりに勉強になりました。

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

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

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

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

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

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 12:29:43 ID:YsZiDyJK0]
レジストリの値を読むとか?

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


308 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 19:06:54 ID:FVUyG2Or0]
>>307
つ 特殊記号のエスケープ
  ttp://lukewarm.s101.xrea.com/commands/Send.html


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

310 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 20:56:25 ID:o28us3FR0]
>>308
ありがとう
解決しました

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



312 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 00:58:08 ID:YWf8g0hR0]
timerでreload仕込むとか

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

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

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

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

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

315 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 12:09:33 ID:BAYW6hF70]
流れ無視して悪いがさっぱり分からんので、教えて頂きたい

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


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

317 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 13:27:25 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 13:39:31 ID:BAYW6hF70]
>>316-317
ぐはっ、わざわざ作って頂けるとは!
よくそんなすぐに作れるな、初心者からすれば驚愕ですよ
ありがとー

319 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/20(金) 18:36:07 ID:+ofqUOOa0]
vistaじゃFileSetTime使えないのかな

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

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



322 名前:320 mailto:sage [2009/02/21(土) 22:10:01 ID:FzZoDrMY0]
>>321
ありがとうございます
助かりました

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

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

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

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

326 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/22(日) 22:58:01 ID:qnu0ZxRB0]
>マルチプラットフォーム

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

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

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

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

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


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

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

331 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/23(月) 23:50:07 ID:KDZEcOqx0]
結構書き方違う



332 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 03:37:01 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 03:48:04 ID:nmUnQgbz0]
If title = 0

334 名前:332 mailto:sage [2009/02/24(火) 04:06:13 ID:mnDWmi6d0]
>>333
ありがとうです!
盲点でした。

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 06:40:25 ID:9IBsCb9z0]
変数は常に%%で囲むっていう風に統一してくれればいいのに。

336 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 08:53:53 ID:hmO2qa6n0]
if 1 = 0

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

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

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


339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 15:23:09 ID:A2x/mr5E0]
あぷろだにまだ上がってるよ
lukewarm.s101.xrea.com/up/file/089.zip

でも 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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 16:20:53 ID:10tP/ti50]
>>339
どうもありがとうございます。とても助かりました。
(A_TimeSincePriorHotkey < 200 ? " " : "")
てあたりが気がきいていると思いました。

341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 14:47:02 ID:qGUJzHwS0]
最長マッチのHotstringを作りたいのですが
どうすればよいのでしょうか






342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 17:32:35 ID:zx85xhcp0]
Feb 25, 2009
Version 1.0.48 is released.

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

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 21:06:58 ID:eljuCyAE0]
ttp://www.autohotkey.com/changelog/ の適当な訳

1.0.48 - February 25, 2009

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

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

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 21:07:22 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/26(木) 21:11:50 ID:eljuCyAE0]
バグフィックスは面倒なので割愛w


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

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 00:57:18 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 01:25:30 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 20:30:19 ID:uqsx4u4h0]
DELL LATITUDE E6400でTrackWheel(VER. 20081206)を使ってたんだけど
しばらくぶりにバージョンアップしようと最新版/RC版に変えてみたら中ボタンに反応しない。
なんてこった。

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

351 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 00:39:59 ID:imLzKJgB0]
ものすごい放置してた。久しぶりにソース見た。思い出すのに時間がかかった。

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

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

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

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



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

てな状況です。

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 20:06:00 ID: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 mailto:sage [2009/02/28(土) 22:00:14 ID:ZNlNraZX0]
>>353
> m-hook  *MButton
出てます。
他のユーティリティか、うーん。旧バージョンは動くのになー。
とりあえずmsconfigで診断スタートアップにしてみたけどダメでした。

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

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

356 名前:350 mailto:sage [2009/03/01(日) 03:43:58 ID:Rc2HQ5QJ0]
>>351
ありがとうございました
ControlClickでいけました

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

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

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

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

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/02(月) 15:03:15 ID:4Ix+9L8p0]
AutoHotkeyでmacのDashbordみたいなの作れないかな
と自分で無理なことを言ってみる

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

361 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/04(水) 05:08:22 ID:ZvTbo6At0]
+WheelDown::WheelUp

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



362 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/04(水) 05:10:50 ID:pYSwiV1N0]
スクリプトの冒頭で

#MaxHotkeysPerInterval 200

と書くと良い

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/04(水) 05:22:01 ID:ZvTbo6At0]
#MaxHotkeysPerInterval 300でいけました
ありがとうございます。

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

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

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

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

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

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

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

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/05(木) 08:18:57 ID:7I9asjSe0]
ttp://www.autohotkey.com/forum/topic22975.html

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

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

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

371 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/05(木) 11:47:21 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/05(木) 12:01:41 ID:lgTNReVh0]
あ、俺勝手にトレイアイコンの事だと判断しちゃったな・・
違ってたらスマン

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

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/05(木) 20:15:15 ID:xz90t0puP]
会社ではトレイアイコンは常に非表示に設定してる

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/06(金) 00:46:39 ID:Y32mGPTe0]
だからどうした。

376 名前:名無しさん@お腹いっぱい。 [2009/03/06(金) 02:31:08 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/06(金) 02:52:01 ID:EIumwJQn0]
>>376
^j::Send,{enter}
で何の問題もなくエンター打てるけど?

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

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

379 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/06(金) 06:53:07 ID:atFpTk3M0]
さらに
^j::Send,{Blind}{Ctrl Up}{enter}{Ctrl Down}
としたらどうなの

380 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/06(金) 12:05:24 ID:sR26OTSx0]
>>379
それなら大丈夫そうです
ありがとうございます。

381 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/06(金) 15:01:28 ID:dtsNACZp0]
>>359
俺は逆だな。macでAutoHotkeyが欲しい。



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

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

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 04:04:12 ID:41mSVwUw0]
>>383
ありがとうございます。
できました

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

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

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

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

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

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

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

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

Delphiだとこの辺。

Delphi-ML過去ログ検索
leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
Delphi ML archive | Google グループ
groups.google.co.jp/group/delphicbuilder-ml-archive
Delphi Q & A掲示板
hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi


388 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 09:43:07 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 12:24:08 ID:umaUJV8o0]
英語版のキーボードと日本語版のキーボードを
それぞれ場合分けして処理することはできないでしょうか

390 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 12:45:36 ID:GNhe+RZO0]
>>388
出来ると思う。

>.>389
無理。

391 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 13:43:56 ID:umaUJV8o0]
>>390
そうですかわかりました



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

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/07(土) 20:38:41 ID:MDzSZOKi0]
あるよ

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

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


395 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/08(日) 00:00:01 ID:tr/g5E240]
>>386
情報どうもです。別方面からも検討してみます。

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

Inputコマンド
lukewarm.s101.xrea.com/commands/Input.html

↓ソース
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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/08(日) 10:34:55 ID:esDbqi200]
キーのダブルタップはサンプルあるだろ

398 名前:394 mailto:sage [2009/03/08(日) 12:41:19 ID:Zm/1oWz60]
自己レスですが
gui close で何とかなりそうですね
スレ汚し失礼しました

399 名前:394 mailto:sage [2009/03/08(日) 12:59:56 ID:Zm/1oWz60]
たびたびすみません
やっぱりできません

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

401 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/08(日) 20:24:31 ID:CbAikyhi0]
>>400
ふむ、その手が使えそうですね
ありがとうございました



402 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/08(日) 20:39:34 ID: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 名前:名無しさん@お腹いっぱい。 [2009/03/08(日) 22:31:03 ID:OvInxdiZ0]
テキストファイルを読み込むときに
最終行を検出する方法はありますか?


404 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/08(日) 23:41:33 ID:W44aSFYp0]
ないんじゃないかな。

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

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

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

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

407 名前:406こういう感じでやりました [2009/03/09(月) 18:48:21 ID: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こういう感じでやりました [2009/03/09(月) 18:50:43 ID: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 mailto:nihfnmwf@zzaawhbf.com [2009/03/09(月) 18:51:33 ID:1ok/Ifbl0]
comment5, kim-kardashian-video.limitedliability.us/index.html kim kardashian nude video, %-PP,

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

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


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

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

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



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

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

414 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/10(火) 15:11:02 ID:D/8zxGdl0]
多重で起動してるの?すごい使い方だな。

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/10(火) 15:47:04 ID:rmSmGeHP0]
一つしか起動してないけど取得されるのは二つになってるってこと

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

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

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

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

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

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

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

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

keyhac ?(craftware)?
sites.google.com/site/craftware/keyhac

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

421 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 10:22:40 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 11:45:04 ID:iQp8Awzp0]
Sendはフォーカスのあるところに送る
ControlSendはフォーカスが無くても、というか対象を指定してキーを送る

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

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

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

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

425 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 16:10:47 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 17:30:08 ID:SMQKLnXdP]
!{WheelUp}じゃ駄目なの?

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

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

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

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

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

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


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

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

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



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

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

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

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

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

435 名前:425 mailto:sage [2009/03/11(水) 19:34:30 ID:zQD6nmYr0]
>>434
ありがとうございます!
キチンとスムーズに動作してくれました。

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

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

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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 21:11:08 ID:XeGc9YVz0]
作成した関数が
複数の値を返すことはできますか?

438 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 22:25:12 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/11(水) 22:26:53 ID:RHpZI3IT0]
windowsXPにAHK1.0.48.00をインストールしました
起動するにはAutoHotkey.exeをwクリックすればいいんですよね?
どうも起動していないようです
プロセスにも載っていません
どうすれば使えるようになるのでしょうか?
よろしくおねがします

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

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




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


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

If a in test and b in hoge

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


443 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 02:07:36 ID:1BiiCvek0]
if InStr(a, "tesst", true) && InStr(b, "hoge", true)

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

444 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/12(木) 02:21:15 ID:F1m5qWie0]
>>443
ありがとうございます。

445 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/13(金) 13:49:22 ID:fNm1iUGy0]
無変換キーをシフトキーのかわりとして使いたいのですが

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

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


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

447 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/13(金) 15:12:04 ID:fNm1iUGy0]
すみませんでした

sc07B::shift

だけでできました

448 名前:名無しさん@お腹いっぱい。 [2009/03/13(金) 15:47:42 ID:fNm1iUGy0]
たびたびすみません

リマップ
lukewarm.s101.xrea.com/remap.html

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

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

449 名前:jbpfxyseplh mailto:jhhgov@qjokcp.com [2009/03/13(金) 15:47:58 ID:DVfGG20W0]
uGaXvO <a href="gvatgngxmxho.com/">gvatgngxmxho</a>, [url=iyoeszfqayam.com/]iyoeszfqayam[/url], [link=ohsodtdhgqfa.com/]ohsodtdhgqfa[/link], oqdjndcqppwj.com/

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

451 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/13(金) 22:39:12 ID:nX9nzRDN0]
>>450
そうですか。
ありがとうございます。



452 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/14(土) 21:34:52 ID:4icr6LvT0]
fenrirの呼び出しキーをうまく設定できません

^a::
send,^b
return

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

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

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



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

454 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/15(日) 00:58:42 ID:SZZoZhnK0]
>>453
いやそうじゃないんです

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

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

よくわかりません


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

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

456 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/15(日) 09:46:43 ID:aN9r1MmC0]
LCtrlとRCtrlと両方書いてもだめかぬ

457 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/15(日) 09:54:41 ID:B8F8JwCv0]
Gui, Add, Hotkey
Gui, Show
return
^A::MsgBox, Send`, "Ctrl + B"

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

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

459 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/15(日) 13:07:53 ID:2+vykJE1P]
もし {vkXXscXX} の形式だったら {vkXX} だけにしてみるとか

460 名前:452 mailto:sage [2009/03/15(日) 14:01:34 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 17:00:43 ID:OR65f9ys0]
ホットキー用のキー足りねぇ→キーボード2台つなげばよくね
と思い、ジャンクの安いキーボード買ってきた

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

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





462 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 19:38:57 ID:BkAbLvKa0]
斜め上を行く発想だなw
レスじゃなくてスマンが…

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

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

465 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/16(月) 21:39:38 ID:OR65f9ys0]
>>463
情報ありがとう、それがみつかればできそうだ

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

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

466 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 00:59:49 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 01:19:19 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 01:24:58 ID:Q86YJixB0]
すげぇ・・・なんというアクロバティック。これがこのスレの底力だな

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

470 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 13:48:31 ID:hCcdtXRQ0]
>>419
遅レスですが、IKKI氏乙です。

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

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

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



472 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 15:52:26 ID:Lst9ESBRP]
ごめんなさい自己解決
制御文字が含まれてたっぽい

473 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 18:39:45 ID:gDeBu6wE0]
よくあるw
エクスプローラの引数とか特に

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

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

474 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/17(火) 19:02:16 ID:hImTYnxN0]
>>470 乙です

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

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

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

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

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

秀丸でAHK編集する人のための CompleteX 用設定
ファイルパス関数群 (Path.ahk)同梱版
www6.atwiki.jp/eamat/pub/MyScript/MyLibList_200090318.zip


479 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 14:37:20 ID:zm0v5CvW0]
みんな宜しくよノシ

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

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

481 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 21:24:09 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/18(水) 21:26:05 ID:xJ1I3V720]
あ、、、#IfWinExist でいいじゃん・・・orz

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


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

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

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

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

486 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 17:53:19 ID:Ie0QoNxm0]
SuspendじゃなくてPauseな気もする

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

488 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 18:11:28 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 18:41:45 ID:oBtBrUgR0]
>>486
レスありがとうございます。
~NumLock::pause
でできました^^

490 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 20:49:30 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/20(金) 20:54:15 ID:w27aWi9q0]
>>488,489
ありがとう!
月曜まで家に帰れないから試せないけど、帰ったらやってみる!



492 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:19:19 ID:JP2qPQY00]
某スレで盛り上がってたので書いてみました。
カーソルをくるくる回すとスクロールします。
ttp://lukewarm.s101.xrea.com/up/file/105.zip

493 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:26:44 ID:g8LL/GxK0]
>>492
どうやってAHKで再現しようか考えていたら・・・
ありがたく頂きます

494 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:28:23 ID:ft3ZieEm0]
これは面白いw
タッチパットのノートパソコンだとうまく利用できそう。

495 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 00:45:49 ID:daHpkZkf0]
おお、すんばらし。
組み込むと色々応用が効きそうだ。

496 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 01:16:17 ID:e7LMny/o0]
autohotkey.ini に includeで

#Include kurukuruscroll.ahk

と書いて使わせてもらったんだけど、includeする位置によって使えたり
使えなかったりするのはなんでだろう。

マニュアルのどこを読めばいいのか教えて欲しい。


497 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 05:54:27 ID:enEmkL2t0]
>>492
一つに纏められて助かりました
認識率と反応も完璧だね

498 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 07:41:19 ID:QvNRDM9W0]
>>496
ttp://lukewarm.s101.xrea.com/Scripts.html
ここの一番下auto-executeですね。
ホットキーが書いてあるとこより前に組み込みます。
変数が重複しないよう気をつけましょう。

499 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 08:45:00 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:41:42 ID: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 mailto:sage [2009/03/21(土) 09:42:42 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:43:29 ID: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 mailto:sage [2009/03/21(土) 09:44:06 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:50:33 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:16:25 ID:5yWBri8L0]
横からすみません。
ググったらあんまりヒットしなかったので、以前貼られていた
DoubleKey関数紹介しておきますね。
出展:www.donationcoder.com/Forums/bb/index.php?topic=5926.msg41894

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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 17:28:06 ID:QyANxbob0]
>>492のスクリプトを縦スクロールじゃなくて、横スクロールに
するにはどうすればいいんでしょうか?

507 名前:500 mailto:sage [2009/03/21(土) 18:03:47 ID:mEL9l3Hw0]
>>503のIsDesktopDoubleClickedを修正。
こうしないとアイコンダブルクリックした時にまで発動してしまう。
IsDesktopDoubleClicked(){
 Return IsMouseOverDesktop() && IsDoubleClicked() && Lv_HitTest()==0
}
 
>>505
確かにそういう方法でも時間内に2回クリックした時に何かするってことはできるんだけど、
1回目と2回目のクリック位置が離れてる時にも発動したり、
↑みたいにアイコンダブルクリック時にも発動しちゃったりして、
いわゆるダブルクリック系の挙動としてはちょっと弱いかなーって思って書いてみた。
あと意地でも2回目のクリックを乗っ取りたかったってのもある。
 
でも少しこだわりすぎたかなーとは思ってる…
まぁ、自分で組み込んで使ってるし結果的には満足。
 
>>506
WheelUpとWheelDownってなってるところを
横スクロールできるキーに変えればいいんじゃないかな。

508 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:08:20 ID:H5O5lVNo0]
>>505
ID:mEL9l3Hw0がどこまで厳密なモノを求めてるのかわからんのでスルーしていたのだが。
そもそも>505レベルでいいんならこんなに頑張ったりはしないと思う

509 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:09:14 ID:H5O5lVNo0]
リロってなかった。蛇足スマソ

510 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 18:27:06 ID:HbFBHhgK0]
ぶっちゃけ、あっちのフォーラム行けばいくらでもあるけどね…

511 名前:500 mailto:sage [2009/03/21(土) 18:27:27 ID:mEL9l3Hw0]
>>500の書き方だと勘違いされそうなので
一応書いておくけど、俺は>>484ではないです。
>>490を見て、UpperDirOneに相当する機能は
別のソフト使ってたの思い出したので、
何とかAHKだけで実現できないかなと思って、頑張ってみた。
…これこそ蛇足だったかな。



512 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 19:39:14 ID:5yWBri8L0]
>>507
申し訳ありませんでした

> 1回目と2回目のクリック位置が離れてる時にも発動したり、
> ↑みたいにアイコンダブルクリック時にも発動しちゃったりして
そらそうですよね・・・深く考えずに書き込んだこと反省してROM専に戻ります。
あと IsMouseOverDesktop関数はいろいろ使えそうですね。頂きます&&乙であります。

513 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 20:03:23 ID:YAcqdaL20]
>>461
超亀レスで失礼します。
見つけたので貼っておきますね。
試してませんが通常ののキーボードでも動作するようです。
USB接続のテンキーを、プログラマブルキーボード
ttp://ioenc.net/magickeypad/

514 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:30:10 ID:GrExewU20]
こんにちは
MouseGesture2、2008/10/07版をVista SP1で使わせて貰ってます。
マウ筋の機能で「設定ホイール回転でアクティブ」という機能があるのですが
(ArtTipsというソフトでは、SETTING>快適マウスホイール>快適マウスホイールを使用する>フォーカス移動を行う)
これと同じ挙動をMouseGesture2で実現させるにはどのように記述すればうまく行きますか?

あと、JaneDoe Viewなど一部のソフトでWinMinimizeを使って最小化すると
デスクトップ左下にタイトルバーの小さくなったものが、残って最小化されてしまいます。
これを回避する方法を教えて下さい。

515 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:41:41 ID:scspGd4S0]
簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
WinActivate
を記述する

516 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:46:37 ID:T0zgn4OC0]
流行らせるページのホイールリダイレクトでもいいんじゃね

517 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 11:56:01 ID:4c0Fopck0]
アクティブにしつつスクロールするなら両方

518 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 12:23:38 ID:GrExewU20]
>>515-517
親切に即レスありがとうございます。
>簡単なのはWheelUpとWheelDownのDefault(及び各々の条件)に
>WinActivate
>を記述する
が一番挙動が近かったのですがマウ筋とArtTipsの機能は
Xplorer2などの二画面ファイラーや小ウィンドウがあるようなソフトに対しても
各ウィンドウをホイールの回転でアクティブに出来るので、このような挙動を望んでいますが
無理な場合WinActivateでアクティブにするようにしたいと思います。

しかし、この場合ホイールUp、Dnでアクティブになったあと普通にスクロールが利かなくなってしまいますよね?

519 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 12:46:54 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:35:30 ID:Rn9QKfmc0]
MouseGesture2の設定で動作割り当てのキー操作を発生させるのパラメーターに
無変換キーの2回押しを設定したくて{無変換}{無変換}とやってみたのですが
認識してくれません。無変換キーは何で登録すれば良いでしょうか?

521 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 17:37:47 ID:Biaw3oNa0]
>>520
ttp://lukewarm.s101.xrea.com/KeyList.html



522 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 18:04:15 ID:Rn9QKfmc0]
>>521
ありがとうございます。そのページは見落としていました。
早速、カーソルが画面左下角に接触で1秒遅らせて無変換を2回押しがしたくて動作に
if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}{vk1Dsc07B}
}

if(!MG_Timer(-1000)){
Send,{vk1Dsc07B}
MG_Wait(100)
Send,{vk1Dsc07B}
}
など、やってみたのですがうまく動きません。
どなたかアドバイスお願い致します。

523 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/22(日) 23:07:53 ID:gJvAxqMw0]
動作の確認音にSoundbeepを使ってたけど、パソコン変えたらビープが鳴らないw

524 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 09:06:05 ID:Y2hrPoG60]
とりあえず転載、ID:GrExewU20 と ID:Rn9QKfmc0 はモリタポ用意して制作者の教えを乞え
lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/123

> 123 名前:管理人 ★[] 投稿日:2009/03/23(月) 06:07:20
> 2chのAutoHotkeyスレにMouseGesture.ahkの質問が書かれていたのに、DION規制で書き込めなくて困る。
> 誰か親切な人があと555モリタポほど恵んでくれれば、p2で書き込めるのだが。
> find.2ch.net/moritapo/give.php?RK=93127982ff852cf03449c204be39fc07&AM=&CM=エノユ、「、熙ャ、ネ、ヲ、エ、カ、、、゙



しかしDION規制まじむかつく、Viewは何故か24時間以上起動させっぱだと●ログイン無効になるので
いちいち再起動させなくちゃいけなくて面倒だ

525 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 09:53:24 ID:Edo9xp5W0]
>>3のとおりに、CapsLockをF13〜F24に割り当てようと思うんだけど、
Change Keyってどうやってこれ割り当てるの??
似たようなレジストリ変更タイプのキーチェンジソフトいくつか探してみたが、
どれもF12までしか割り当てられないっぽい・・・

526 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:14 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:36:56 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:39:05 ID:WUKQO+dS0]
あ、ウィンドウクラスは必要ないので↓は要らないや・・・
WinGetClass, m_class, ahk_id %m_id%

529 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 12:40:24 ID:WUKQO+dS0]
×;マウスカーソル下をアクティブにする関数
○;マウスカーソル下をアクティブにするサブルーチン

530 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/23(月) 13:54:01 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/24(火) 23:15:50 ID:mXwaygr80]
多重起動を検知したくて以下のようにしたんだけど、
除外タイトルって効いて無い
それともPIDとかでの除外は無理なのかな

#SingleInstance, OFF
Process, Exist
myPid:=ErrorLevel
DetectHiddenWindows,On
IfWinExist, %A_ScriptFullpath% ahk_class AutoHotkey,,ahk_pid %myPid%
 MsgBox, あり
Else
 MsgBox, なし




532 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 01:46:19 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 08:36:04 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/25(水) 13:01:45 ID:UMyjgm290]
>>525
俺はchangekeyでF13を割り当ててるよ。

535 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 00:11:10 ID:jOUXxwTe0]
ctrlキー2連打でブラウザの更新に割り当てたいのですが、

ctrl::send,^r
↑ここをどう記述すればいいかご教授願います。

536 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 01:12:54 ID:23S/nCDd0]
>>535>>487
もう>>2-3ぐらいに必須だなwまあ、あっても無駄かもしれんが

537 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 06:07:49 ID:23S/nCDd0]
下記の、表示ウィンドウのハンドルを取得する単純なスクリプトですが、
ひとつのウィンドウしか表示されてないプロセスでも二つ取得できているのは、どういう理屈なのでしょうか?
さっぱりです(´・ω・`)

#persistent
;ウィンドウハンドル一覧
WinGet, List, List,,,aaaaaaaaaaaaaa
Loop,%List%
{
Hwnd := List%A_Index%
WinGet, exe, ProcessName, ahk_id %Hwnd%
abc .= exe . " " . Hwnd . "`n"
}
msgbox, %abc%
return

esc::reload

538 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 09:02:50 ID:r4Tse8HJ0]
Jane(クラスがTMAainWindとTApplication)だったりしないだろうか

どういう理屈っていうか、作った側の理屈でしょ

539 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 13:40:23 ID:23S/nCDd0]
どうもです。調べたらTApplicationでした。見えてなくてもあるんだよ状態か・・・

流行らせるページがヒット
>やっかいなのがDelphi製のソフトのTApplicationというクラス名のウィンドウ。
>可視ウィンドウ扱いで、タスクバーにはこのウィンドウのタイトルが表示されるが、実際には大きさがゼロで画面には表示されない。
>VxEditorなど、TApplicationが不可視になっているものもある。

540 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:28:13 ID:/i446DAf0]
質問です。
Sendコマンドにてreturnと入力したいのですが、
エラーが出てしまいます。

Sendコマンド中で、returnと表現するには
どうしたらよいでしょうか。

541 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:34:46 ID:/i446DAf0]
>>540
すいません。
自己解決しました。



542 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:38:19 ID:CODN8xT10]
何を間違えていたのか気になる
教えて

543 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 14:42:30 ID:r4Tse8HJ0]
Send, return

544 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 19:22:46 ID:23S/nCDd0]
>>487
>IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。
こっちじゃないと正しく動かないかも。あとこれじゃ3連打したら、2回発動する?
~Ctrl::
ifNotEqual, A_PriorHotkey, %A_ThisHotkey%, return
ifGreater, A_TimeSincePriorHotkey, 400, return
soundplay,*-1
return

流行らせるページのほうがいいか。
~Ctrl::
if A_TickCount < %ctrldouble%
{
;some action
ctrldouble=0
}
else
{
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return

545 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:30:02 ID:s6sjDdIo0]
いやあ、規制長かった。
どうでもよくなったw

546 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:34:24 ID:r4Tse8HJ0]
モールスのパクり。キーが規定時間以内に何度押されたかを返す。
キー押す・離すで1セットなので押しっぱなしで利用するキーやボタンには向かない
あまり使えない

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+!#]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}

: ex) [Win]+[Space]二度(以上)押しでIME ON/一度ならOFF
#Space::IME_SET(KeyCount()>1)

547 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/26(木) 23:47:26 ID:r4Tse8HJ0]
ちょっと変えた。
↓みたいに回数指定でやればキャンセルも出来るしちょっと便利かもしれない

~Ctrl::
 If KeyCount() = 3
  MsgBox, Some Action
 return

KeyCount(timeout=0.3) {
 key := RegExReplace(A_ThisHotkey, "^[\$\^\+\*!#~<>]+","","")
 KeyWait, %key%
 Loop {
  count++
  KeyWait,%key%, D T%timeout%
  If ErrorLevel
   break
  KeyWait, %key%
 }
 return count
}

548 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 06:38:33 ID:wyAVApH80]
>>547
これいいね。Libフォルダ行き、決定。

ttp://lukewarm.s101.xrea.com/up/file/106.zip
俺の昨日の財産。なんちゃってホイールVol。アイディアもスクリプトもGUIも、全部パクリだけどねw
細かいところは面倒くさかったから、やってない。WheelVolとGOM使ってる人におすすめ。

549 名前:名無しさん@お腹いっぱい。 [2009/03/29(日) 10:50:37 ID:rJZ7qtHO0]
>>548
実行しても何も表示されないんだが
当方vista sp1
何か設定が必要?

550 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 14:00:46 ID:NRu5w9hF0]
ウィンドウが最大化されているか、
されていないかを取得する方法ってありますか?

551 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 14:29:42 ID:pOBhf47V0]
WinGet, status, MinMax, hogehoge



552 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:00:23 ID:x2HXBG8DP]
メニュー上の項目先頭のチェック"レ"が付いているかいないかを取得する方法ってありますか?

553 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:41:55 ID:mk90UFZl0]
WinGetレ

554 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 15:52:41 ID:pOBhf47V0]
>>552
AHKにゃ無い。
あと最近のアプリは「普通のメニュー」を使っていないのが多いよ。

555 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/29(日) 16:20:44 ID:wyAVApH80]
>>549
メモ帳で中身見てもらえばわかると思うけど、基本は無変換押してホイールくるくる。
#NoTrayIconは外したほうがいいかも。Vistaでも動くかな?わからない。動くと思うけど。

556 名前:552 mailto:sage [2009/03/29(日) 16:22:07 ID:x2HXBG8DP]
>>554
そうでしたか
どうもありがとうございました

557 名前:549 mailto:sage [2009/03/30(月) 00:10:07 ID:rej68raf0]
>>555
おお動いたよ
おもしろいねこれ

558 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/30(月) 03:11:37 ID:rej68raf0]
imeの状態を、キーの入力ごとにチェックするのではなくて、
0.5秒ごとにチェックするには
どうすればいいのでしょうか?


559 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/30(月) 03:27:33 ID:lQv120RA0]
>>558
#persistent
SetTimer, IME_GET, 500
return
IME_GET:
Tooltip,% IME_GET()
return

560 名前:558 mailto:sage [2009/03/30(月) 07:57:20 ID:rej68raf0]
>>559
ありがとうございます!
非常に助かりました!

561 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 13:18:36 ID:LiwDBTTE0]
マウスカーソル1回転させると何かアクションを起こすみたいなサンプルスクリプトってないですかね。



562 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 14:34:53 ID:V9eOhI1h0]
>>561
>>492

563 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 16:22:04 ID:DLXcLh2K0]
前から思ってたんだけどCoordModeを画面端からの絶対座標にする方法は
ないですか?
画面の右側にGUIやtooltipを表示するスクリプトを作って使っているんだけど、
使うPCによって画面外にはみ出したりする。
今はPCごとに表示座標を書き換えてるんだけど
そうしなくていい方法があったら教えてくれませんか。

564 名前:563 mailto:sage [2009/03/31(火) 16:24:29 ID:DLXcLh2K0]
自己レス。
WinGetPosでProgram Managerを指定してデスクトップのサイズを
取得すればいいのかな?と今気付いた。

565 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 17:59:07 ID:ppgb+fKo0]
>>563
SysGet

566 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:30:14 ID:wxVKoyMy0]
キーを押す長さをSetKeyDelayで設定できるようですが、
右クリックを5000ms押す場合には、どのように指定すればいいですか?


567 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:54:33 ID:V9eOhI1h0]
SomeKey::
Send, {RButton Down}
Sleep, 500
Send, {RButton Up}
return

ちなみにこれだと5秒経たないうちにもう一度キーを押しても反応しない

568 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 20:55:24 ID:V9eOhI1h0]
あ、500msになっとる・・・

569 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/31(火) 22:45:50 ID:wxVKoyMy0]
>>567 >>568
レスありがとうございます。
アドバイスのおかげでうまくいきました

570 名前:名無しさん@お腹いっぱい。 [2009/04/01(水) 17:17:57 ID:UifZp1zf0]
guiのウィンドウを動かしたら
その移動後の位置を取得したいです
どうすればいいのでしょうか


571 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 19:38:22 ID:81tLNstp0]
>>548
AhkWheelVol改訂パクリ増幅完成版
WheelVolアイコンを使えるようにした。他微々変更。
ttp://lukewarm.s101.xrea.com/up/file/107.zip



572 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 19:52:53 ID:81tLNstp0]
>>570
Process,ExistとかWinGetとかWinGetPosとか使う

573 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 20:11:31 ID:o8Y7i7os0]
>>570
すげ〜力業。もっとスマートにできないもんかねぇ

Gui, +LastFound
GuiHwnd := WinExist()
Gui, Show, w200 h100
WinGetPos,xx,yy,,,ahk_id %GuiHwnd%
return

#IfWinActive, ahk_class AutoHotkeyGUI
~LButton Up::
~Enter Up::
 WinGetPos,x,y,w,h, ahk_id %GuiHwnd%
 if (xx != x || yy != y)
  SetTimer, OnGuiMoved,-1
 xx:=x,yy:=y
 return
OnGuiMoved:
 Tooltip, (%x%`,%y%)
 SetTimer, TipOff, -2000
 return
TipOff:
 Tooltip
 return


574 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/01(水) 22:28:53 ID:81tLNstp0]
OnMessageでできるんじゃないかな。

575 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/02(木) 03:15:35 ID:dUEx8qZ/0]
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/124-
今年も嘘なの?

576 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/02(木) 19:29:48 ID:7vkTJaDR0]
VistaでGuiをDestroyするとなぜかGuiが二度と表示できなくなってしまう・・・
XPでは動いたのに・・・

577 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:00:41 ID:THWk95Pp0]
需要あるかどうかわからないけど貼り、リモートデスクトップの背景色を透過させるスクリプト
リモートデスクトップクライアント側は背景画像なしで起動、スクリプト内部の「396da5」は各自で適宜書き換えてほしい
あと、同時に2つ以上のリモートデスクトップクライアントが起動する状況は一切考慮してない

あまりこういうもの書いた経験ないんで、書き方がアレなのはご勘弁を
---
#Persistent
SetTitleMatchMode,2
SetTitleMatchMode,Fast
DetectHiddenWIndows,Off
SetTimer RemoteTrans,100
return

RemoteTrans:
IfWinExist,リモート%A_Space%デスクトップ接続 ahk_class #32770
{
If(TransFlag = 0)
{
DetectHiddenWIndows,On
TransFlag = 1
WinSet,Trans,Off,ahk_class TSSHELLWND
WinSet,TransColor,396da5 255,ahk_class TSSHELLWND
DetectHiddenWIndows,Off
}
}
else
{
TransFlag = 0
}

578 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 12:06:35 ID:zJiZ72fS0]
>>576の続き
VistaだとGuiをDestroyすると、そのGui番号ではGuiが表示できなくなるみたい

579 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 13:42:03 ID:rZJUeqT00]
単にキーバインドの変更のためだけにこのソフトを使おうと思ってるのですが、
その目的に使うだけだったらこのソフトのメリットは大してないのでしょうか

580 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 13:56:52 ID:xW9QnJcO0]
そんなこともない
だがCapsLockをどうにかしたいのなら諦めれ

581 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:13:49 ID:kSmNsRer0]
changekeyと組み合わせれば、CapsLock問題もクリアーできるよ。
そして便利な使い方を考えるうちに、スクリプトにはまって、VBS、Perに手を出して、終いにはC言語の勉強を始めたのは俺。



582 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:25:10 ID:zJiZ72fS0]
プログラミングの手間を省くために手を出すような奴もここにいる
できる範囲が大きすぎて全部AutoHotkeyでやろうとしてしまうのがデメリットかな

583 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 14:34:05 ID:mA/w516g0]
>>581
あ、俺ガイル

584 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:03:21 ID:FNUcueKP0]
ほんとこのソフトすごいよね便利すぎてハマるの分かる

585 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:17:57 ID:hXZrj5Ty0]
ちょっと便利にするコードを書くうち脱線しすぎて気づけば、
数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。

ホットキーは、このメインプログラムを呼び出すための
ショートカットキーとして唯一、機能している。

586 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:51:05 ID:YxZpHoQz0]
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。

587 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:52:14 ID:YxZpHoQz0]
マウスジェスチャ以来の衝撃だったな、俺的には・・・AHKでも、ジェスチャできるけど。
>>581
俺もそうなりそう、CかPythonか迷ってるんだよね。どっちもやれってことか。
AHKでできることは、Cでも全部できるのかね?どう比較すればいいのか、よくわからない。

588 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 15:54:42 ID:YxZpHoQz0]
初の連打、すまん。失敗したって出て、リロードしても書き込まれてなかったからorz
>>571
これ、リモートデスクトップ先でもとりあえず使える。Master音量しか出ないけど。

589 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/04(土) 18:46:06 ID:YxZpHoQz0]
やっぱAltTabって特殊なんだね。
~LAlt & Tab::
KeyWait, Tab, T0.15
if Errorlevel = 0
send, {Blind}{Tab}
if Errorlevel = 1
send, {Blind}+{Tab}
settimer, altreturn, -1
return

altreturn:
keywait, LAlt
send, {Return}
return

590 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/06(月) 16:01:58 ID:Z06B8II+0]
AVGがあると、Ahk2Exe.exeでコンパイル失敗するみたいね。
常駐シールドの例外設定すればいいらしい。

591 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 04:03:27 ID:Mds5OALU0]
#Persistent ;監視
Clipboard= ;クリップボードのクリア
OnClipboardChange: ;クリップボードの内容が変更されたときに実行されるラベル

これなんですが、これだとクリップボードの内容が同じ場合でも
(同じ文字列などを続けてコピーした場合)
実行されてしまいます。
クリップボードの内容が同じ場合は実行しないようにしたいのですができるでしょうか?



592 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 09:21:26 ID:tWsUW9OG0]
前のと比較すればいいだけでは

593 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 15:30:24 ID:TGZWu1B70]
>3後半の文字化けってUTF-8でソース保存すれば回避できる?

594 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 16:07:21 ID:t+lMuHL/0]
文字化けではなくダメ文字、つまり正しく解釈された上での問題なのでそれでは回避出来ない

595 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:45:06 ID:CUjFaHh90]
Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。

596 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/07(火) 19:57:38 ID:sZshg2Md0]
流行らせるにある、ホイールリダイレクト使ってるんだが、ところどころホイール操作自体できなくなります。
例)タスクトレイをホイールすることができない、デュアルモニタ環境で特定のモニタのFirefoxにホイールができない など
*WheelDown::
CoordMode,Mouse,Screen
MouseGetPos,x,y,hwnd,ctrl,3
wp:=0xFF880000|GetKeyState("LButton")|GetKeyState("RButton")<<1|GetKeyState("Shift")<<2|GetKeyState("Ctrl")<<3|GetKeyState("MButton")<<4|GetKeyState("XButton1")<<5|GetKeyState("XButton2")<<6
lp:=y<<16|x
IfWinExist,ahk_id %hwnd%
{
  SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
  If ErrorLevel=4294967295
    MouseGetPos,,,,ctrl,2
  Loop,%A_EventInfo%
    PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%
}
どこか改善できないでしょうか?

597 名前:596 mailto:sage [2009/04/08(水) 12:13:50 ID:Ox1RALx+0]
他の症状としては
OpenOffice.orgの表計算ソフトCalcでスクロールが一切効かないです

598 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 13:15:09 ID:2zdTWL/U0]
その場合は、CalccだけでなくOOo全般で、他にマンドプロンプトも効かないはず
ウィンドウ内にコントロール(窓)が無い構成だから(変数ctrlが空)
メッセージ送信先を窓本体にすればよいんで、Loopの前の行に
ctrl := !ctrl :? hwnd : ctrl
を入れれば動くんじゃないかな

後のことは情報少ないし、環境も作れないから分かんない

599 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 13:43:07 ID:Ox1RALx+0]
ありがとうございます。
でもctrl := !ctrl :? hwnd : ctrlだとエラーになります・・?

600 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 14:19:57 ID:2zdTWL/U0]
typo だw
ctrl := !ctrl ? hwnd : ctrl

601 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 14:35:55 ID:Ox1RALx+0]
>>600
本当にありがとうございました。Calc動くようになりました
Firfoxのほうは動かないのですが諦めますorz



602 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 18:30:54 ID:MeqYpMzl0]
流行らせるページのリファレンスに While とかが載ってないorz

603 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 18:42:23 ID:R1fhUxJX0]
もう更新されないだろうね

604 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 18:48:42 ID:HObCX3A80]
困った時は本家のリファレンス見た方がいいと思う
流行らせるの方は微妙に省略されてたりするんで、たまに本家を見ると新しい発見がある

605 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 18:52:32 ID:3ImCV3Nv0]
wikiがほしいところ

606 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/08(水) 20:06:46 ID:HJw1Zxkl0]
今のAutoIt2ベースから
AutoIt3ベースで作り直してもらえると
多言語に強くなると思うのだけど

まぁasciiしか使う必要がなければ関係ないっちゃないか

607 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 05:49:27 ID:JwzMpV8P0]
流行らせるページは見やすくていいな。
白背景は法律で規制したほうがいい。まぶし過ぎて目に悪い。

608 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 15:07:51 ID:DVG7YxSE0]
レジストリいじらずにキーの入れ替えする方法を探してますが、
>3を読む限りahkでも無理そうですね。

流行らせるページを参考にscコードでCapsLockとCtrlを入れ替えたら
Ctrlが常にONの状態になりました。何か方法ありませんか?・・・


609 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 15:48:55 ID:xEF1XKbe0]
色んな人がさんざん試しって解決法が無いからテンプレの最初にある

610 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 16:34:05 ID:p2tyHjkH0]
ジョイスティックのアナログキー→矢印キー変換をこんな感じでやってるんだけど、
もうちょっと良い方法って無いのかな? あまりにも基本過ぎるみたいで検索にも引っかからない

sleepjoy = 100
SetTimer, getjoy, 30
#Persistent
return

getjoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
if joyx between 49 and 51
if joyy between 49 and 51
return
Gosub, ranjoy
return

ranjoy:
if joyy > 75
Send {down}
else if joyy < 25
Send {up}
if joyx > 75
Send {right}
else if joyx < 25
Send {left}
sleep, sleepjoy
return

611 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 19:16:26 ID:if/vCKuH0]
流行らせるページを見てもわからなかったので質問させてください
任意のウィンドウの状態(最大化・最小化)を知る方法はありませんか?
サイズや座標はわかるようですが・・・



612 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 19:29:20 ID:/daiVpQd0]
>>611
WinGetでCmdにMinMax

613 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 19:35:26 ID:nal87SU+0]
>>611
>>551
あとは↓でMinMaxでページ検索
ttp://lukewarm.s101.xrea.com/commands/WinGet.html

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 20:02:00 ID:xEF1XKbe0]
>>610
低級なものしか用意されていないみたい
結局「タイマーして、キー状態みて、何かする」ってコード書かなきゃならないっぽい

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 23:25:26 ID:T3nhlFEF0]
悩んでみたけど、俺の頭じゃ解決できなかったので質問させてください。

ホットキーを無効にする処理についてです。
変数の中身によって、特定のホットキーを無効にしたりすることはできないものでしょうか。
#全部無効/有効はSuspendによって可能なことは確認いたしました。

流行らせるページより、
> サブルーチンの最初の行が「Suspend,On」以外のSuspendコマンドになっているホットキーは、Suspend,Onが実行されても無効化されない。
このあたりをうまく使えばできるのでしょうが、書き方が悪いのかうまく動いてくれません。

解決法をご存じの方は教えていただけると助かります。

616 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/10(金) 23:34:00 ID:p2tyHjkH0]
>>614 thx 結局ジョイスティックに関しては見やすくまとめるとこんな感じになるのかな
SendJoy1 = {up}
SendJoy7 = {down}
SendJoy5 = {right}
SendJoy3 = {left}
SendJoy8 = {down}{right}
SendJoy6 = {down}{left}
SendJoy2 = {up}{right}
SendJoy0 = {up}{left}
SleepJoy = 100
SetKeyDelay, 20
SetFormat, float, 0.0
SetTimer, GetJoy, 30
#Persistent
return

GetJoy:
GetKeyState, joyx, JoyX
GetKeyState, joyy, JoyY
joyx := 0.018 * joyx -= 50
joyy := 0.018 * joyy -= 50
joyh := 4 + joyx + joyy *3
if joyh = 4
return
Gosub, RunJoy
return

RunJoy:
SendJoy := SendJoy%joyh%
Send %SendJoy%
sleep, SleepJoy
return

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 00:49:53 ID:e4COaq2Q0]
>>615
#1::
 Hotkey, #2, Hoge, % (flg:=!flg) ? "On" : "Off"
 return
Hoge:
 MsgBox, Hoge
 return

618 名前:>>615 mailto:sage [2009/04/11(土) 01:49:46 ID:rh+NBoz70]
>>617
返信ありがとうございます。
ですが、私が思っていたこととはちょっとだけ違うような気がします。
#自分が思っていることをうまく伝えられなくてごめんなさい。

ですので、あとは自分で頑張ります。ありがとうございました。

619 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 02:16:39 ID:w6Dx6pM+0]
>>618
どう違うのか書かないと、せっかく答えてくれた人も消化不良になるだろ。
自分ひとりだけよければ、それでいいのか?

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 02:58:52 ID:LqjZj8GK0]
USBの外付けテンキーに、普通のキーボードのテンキーと別のコマンドを
Autohotkeyを使って割り当てる事ってできるんでしょうか?
テンキーをプログラマブルキーボード的に使えないかと思うんですが
キーボード側のテンキーと連動しちゃわないかと思いまして…

621 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 04:07:31 ID:1EEvkJ+r0]
>>620
つ MagicKeyPad



622 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 04:19:05 ID:J5YLNUgU0]
uusbd.sysでも使って
デバイス毎にホットキーやリマップが設定出来るようになったら夢が広がるんだけどな

外付けテンキー全般に言えるか分からんが
マジェテンキーはNumLockがOnとOffの時とで異なるキーコードを送るようだから
やりようによってはフルキーボード付属のテンキーと別の動作をすることが出来るかもね

623 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 05:45:21 ID:LqjZj8GK0]
>>621
おおっ こんなソフトが! ありがとうございました。
Ahkで可能だったら最高だったんですが、現状ではできない感じなのでしょうかね。

624 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 07:39:15 ID:bNSgGuY10]
>>615
617でダメならナニがしたいのかよくわからんが
hotkeyコマンドで任意のホットキーをオン・オフ出来るからそれで良いんじゃないの?と思うが


625 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 08:46:33 ID:rh+NBoz70]
>>619
そうですね。すみませんでした。

やりたかったこと:
アプリケーションA専用のホットキーとして6つほど割り当てております。
そのほかにアプリケーションランチャー代わりとして5つほど割り当てているのですが、変数の中身の値によってそれだけをすべて無効にしたかったのです。

#あるキーを押せば無効になる、というものではなくあらかじめ設定用の変数を用意/設定をし、それによってスクリプトを走らせたと同時に有効/無効を切り替えられればな、と。
#走らせたあとは有効/無効を切り替えるということは考えていなかったです。


>>624
やぱ俺の頭が足りんよ
リファレンスとにらめっこしてくるよ

626 名前:名無しさん@お腹いっぱい。 [2009/04/11(土) 08:47:29 ID:iBHZiqEC0]
xpを使っています
autohotkeyのスクリプトから、そのスクリプトのショートカットをスタートアップに登録したいです
A_ScriptFullPathでそのスクリプトのありかを取得
A_Startupでスタートアップフォルダのありかを取得
ここまでは分かっています。その先がわかりません。

627 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 08:55:36 ID:ZRhwazf80]
FileCreateShortcut, %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk

628 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 09:31:30 ID:bNSgGuY10]
>>625
#IfWinActiveで特定のアプリにのみ有効なホットキーを設定
hotkeyでホットキーのオン・オフ切り替え
このあたりを使えば望みの動作が出来ると思う
俺はよくiniファイルの設定を読み込ませてホットキーを動的に設定したりオン・オフしたりさせてるが
それと同じ方法で実現できると思う
hotkeyコマンドに変数展開使うだけだし


629 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 09:37:44 ID:e4COaq2Q0]
>>625
「変数」は何処に存在するんだろうか?

; 起動毎にホットキーのOn/Offがトグルになるスクリプト
OnExit, OnExitSub
IniRead, IsHotkeyEnable, conf.ini, Hotkey, Enable, 0 ; 無ければ "0(=Off)"とする

If (IsHotkeyEnable) {
 Hotkey, IfWinActive, ahk_class Progman ; デスクトップのみ
 Hotkey, #1, Key1, On
 Hotkey, #2, Key2, On
}
return
; 終了時にフラグを逆転して終了
OnExitSub:
 IsHotkeyEnable := !IsHotkeyEnable
 IniWrite, %IsHotkeyEnable%, conf.ini, Hotkey, Enable
 ExitApp

Key1:
 MsgBox, Key1 Action
 return
Key2:
 MsgBox, Key2 Action
 return


630 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 10:36:03 ID:iBHZiqEC0]
>>627
ありがとうございました。

631 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 12:30:52 ID:G+GUTcDI0]
>>608
keybatという1500円のソフトで可能だよ。さっき試した出来たよ。
俺はこれからAHKに乗り換えた当初に同じことをやろうとして苦労した覚えがある。
レジストリいじるソフトを使用してF13を導入して解決した。レジストリいじれないならkeybatだね。
人気ないけど、いいソフトだと思う。キーカスタマイズスレで罵倒された楽しい思い出があるけどw



632 名前:615 mailto:sage [2009/04/11(土) 19:33:36 ID:rh+NBoz70]
>>629
iniに書き込んであります。

>>628,629
ヒントありがとうございます。
自分が思っていたような動作をするスクリプトが書けました。
とは言っても、約半分ぐらい629と同じですが。

お世話になりました!
ありがとうございました。

633 名前:492 mailto:sage [2009/04/11(土) 23:31:57 ID:3TjMJxNW0]
以前書いたくるくるスクロールが不細工だったので書き直し。
おまけでくるくるスクロールの関数とカーソル上下でスクロールする関数を同梱しました。
トラックボールを使っている人にしか需要は無いと思います。
ttp://lukewarm.s101.xrea.com/up/file/108.zip

634 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 23:34:26 ID:YKimc9dt0]
>>633
使わせていただきます!


635 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 23:47:34 ID:oqoLxhVT0]
リマップで質問です。特定キーをトリガにして、リマップの内容を変更するのがうまくいきません。
添削してもらえませんか?

--
vkAFsc130::PgDn ←デフォルト定義
vkAEsc12E::PgUp ←デフォ

vkADsc120::    ← 問題のトリガ
if flag = 100
{
vkAFsc130::PgDn  ←この定義で Duplicate してしまう
vkAEsc12E::PgUp
flag = 0
}
else
{
vkAFsc130::Down
vkAEsc12E::Up
flag = 100
}
return

636 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/11(土) 23:58:49 ID:e4COaq2Q0]
そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
>>615からのの流れを流用してHotkeyコマンド使うか、
リマップを捨てて、Sendでキー送るってカンジかな

後者なら↓みたいな感じ
kAFsc130::
 If flag = 100
  Send, {PgDn}
 Else
  Send, {Down}
 return

どうしてもリマップ捨てたくないなら AutoHotkey_L の #if 使う方がいいかも
#if (flag==100)
vkAFsc130::PgDn
vkAEsc12E::PgUp
#if (flag!=100)
kAFsc130::Down
vkAEsc12E::Up
#if

637 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 00:08:41 ID:BvyA+lnB0]
>>636
>そもそも、言語仕様にに沿ってない。つーか言語がめちゃくちゃなんだけど
滝汗

ありがとうございます。もうちょっと色々見てみます。


638 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 11:50:32 ID:9mFGO0zQ0]
無変換+zで、ひとつ下のウィンドウをアクティブに。
~vk1Dsc07B & z::
WinGetClass, classA, A
a=
WinGet, List, List,,,ningenshikkaku
Loop,%List%
{
Hwnd := List%A_Index%
SetFormat,Integer,H
WinGet,s,Style,ahk_id %Hwnd%
SetFormat,Integer,D
if((!(s&0x08000000))&&((s&0x80)|| !(s&0x80000000)))
{
WinGetClass, class, ahk_id %Hwnd%
if (a=1){
WinActivate, ahk_id %Hwnd%
break
}
if (class=classA)
a=1
}
}
return

639 名前:638 mailto:sage [2009/04/12(日) 13:07:26 ID:9mFGO0zQ0]
>>638
すみません、これはダメだわ。GOMPlayer等、見つけられないものもあるw、まあ手動で足していけばいいか。
キーボード中心環境なら、上にいくのも付け足せば、最前面表示とかに行けて便利?

Alt+Tabは順序が入れ替わって、使い辛いな。
無変換←→とかで、タスクバー順にアクティブにできたほうがいいけど、AHKでできるかな?

640 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 14:31:19 ID:dIdsRb2N0]
タスクバーの情報を取得するのは公式フォーラムにあるというのがここでのFAQ
ttp://www.autohotkey.com/forum/topic18652.html

キーボード派のWindow切り替えなら、こういうemacsのiswitchライクなのも良いと思う
ttp://www.autohotkey.com/forum/topic33353.html

641 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 15:25:54 ID:9mFGO0zQ0]
>>640
おお、d
上のは、情報が特殊なんだね。Dolphi製はTApplicationのほう取ってるし、hWndとかも何か特殊だ。
特殊だと思ったら、10進法でとってるのか。
TApplicationをどうにかしたら、タスクバー順にアクティブはできそうだね。

下のはいいね、好みw



642 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 16:41:10 ID:RL+Ry9QM0]
流行らせるページにwhileとかの説明が新しく追加されてるね。英語弱いので助かります。

643 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 20:46:21 ID:bhv5GHsf0]
1by1のビッグウィンドウを思い出したw

644 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 21:28:50 ID:XLkAadI10]
スレ違いっぽいけど
admin権限なしでCtrl<->CapsLock交換できるソフトってない?
autohotkeyでキー置換の大部分はできるんだけど
これだけ困ってる。

645 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 21:54:14 ID:PppMsUH80]
>>644
日本語ユーザーはやっぱりその壁にぶち当たるんだよな

で、なんでautohotkeyではこのキーだけ駄目なんだろう
内部で特殊な処理をしているのかな

646 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 22:26:34 ID:r11nbAGs0]
WheelAccel.ahkでIE上でホイールを早く回した場合に、スクロールが上手く加速されていないような気がします。
IE上で素早くホイールを回した場合でも、回転に応じたスクロールができるようになりませんでしょうか。

647 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/12(日) 23:39:09 ID:ln8RqTb30]
IEのスムーズスクロールをOFFにする
A_EventInfo を考慮した加速方式にする

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 03:50:01 ID:25xJ6v2w0]
すみません、どなたかご教授お願いします。
プログラムに明るくなくて分かりづらい説明で申し訳ありませんが。

Photoshop使用時に「6」に
6::send +!r
という風にキーを割り当ててます。(ブラシのモードが変更されるショートカット)

それとは別にPhotoshopでは Shift+Alt+クリック で
「カラーサンプラーを配置する」という機能があるのですが、
どうもフォトショ使用中に時折、「6」を押した瞬間にクリックして
ブラシモード切替と同時にサンプラーを配置してしまうのです。

上手いこと「6」と同時くらいにクリックしても
Shift+Alt+クリック にならなくするような方策はないものでしょうか?

649 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 04:42:51 ID:hmD/M1lx0]
>>648
これを試してみては

6::
blockinput, on
send, +!r
blockinput, off
return


650 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 04:57:26 ID:25xJ6v2w0]
>>649
激減しました、ありがとうございます!

しかしガチャガチャ何度もやってると極稀にサンプラーが起動してしまうことがありました。
とりあえず大分改善されたのでとても助かります。

あつかましい話ですがついでにもう一つ質問させてください。
キーを押しっぱなしにすると連打が始まってしまいますが、これを
抑制するのってどうやればいいんでしょうか?

651 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 05:18:04 ID:DVlSaX3W0]
KeyWait, 6
return
にすればいいかもしれないね。
それか、6 up::にしてキーを離したときに送るか。



652 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 06:43:56 ID:hmD/M1lx0]
>>650
>>649でダメなら

#InstallMouseHook
6::
if !getkeystate("LButton", "P")
send, +!r
return


連打しないで押したままにしたいなら↓みたいな感じかな

a::
send, {a down}
keywait, a
send, {a up}
return

653 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 19:54:37 ID:0vf0TAcu0]
ソフトの使い方を常にポップアップ表示させるようなものを作りたいんですが
ソフトのウィンドウを動かした時に、一緒に説明の画面も追随するようなのって
どうやったら作れますか?

654 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 20:30:43 ID:Ay3UPRR20]
エスパー難しすぐる

自作GUIならOnMessage()使ってウィンドウメッセージの"WM_MOVE(0x3)"を拾う、
そうでないならタイマーでウィンドウ位置を監視して動いた稼働かを検知、

で、追従させたい窓を移動

655 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/13(月) 22:22:03 ID:H1zTlTqI0]
>>644 が求めている解決方法ではないけど、
自分の場合は、ソフトでの解決はあきらめて、
Ctrl<->CapsLock交換できるキーボードを使っています。

656 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 00:22:52 ID:+WvFDJJL0]
>>654
なるほど、タイマー使う手がありますね。
サンクスです。

657 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 16:20:23 ID:sa012nT50]
Run,"hoge.exe"で外部のスクリプトやアプリを実行するとき、
ビープ音がなるんだけど、これを止める方法はないもんかな?

658 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 16:34:44 ID:7q5WOPK90]
うちではpingコマンドを定期的にルータに向けて発射させてるが、
意図的にsoundbeepコマンドを使わない限り、鳴らないけど?

659 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 17:12:09 ID:D6tdSy390]
Run, notepad
うん、無言で起ち上がる

660 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 17:27:38 ID:19+rPi280]
ウィルス対策ソフトの設定かな?
AutoHotkeyを除外すれば解決するんじゃないかと見た

661 名前:657 mailto:sage [2009/04/14(火) 19:02:25 ID:sa012nT50]
ウィルスソフト切っても鳴ってる。
キーに割り当てないで、スクリプトの先頭で、Run, notepad と書けば鳴らないで起動するけど、
キーに割り当ててから、キーを押してアプリやスクリプトを起動するときはビープ音が鳴ります。
他のPCのAHKのスクリプトでも、ホットキー押してアプリやスクリプトを起動してもビープ音なってたんだが、
まさか家だけの特別仕様?・・・w 
Zip版で入れたのと関係あんのかな・・・
鳴らしたり鳴らさなかったりするコマンドでもあるのかと思ったんだが。
まぁ、動作状況が分かりやすいといえなくも無いかなw、と。



662 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 19:22:49 ID:eiTdV88b0]
b::Run, notepad

をautohotkey.ini にを記述してBを押してみたけど
特に何の音もせず、xyzzyが起動した
(Terapperというソフトでnotepadの代わりにxyzzyを起動するようにしている)

663 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 19:31:03 ID:7q5WOPK90]
>>661
ahkのバージョンと、入手場所は?

うちでは、explorerで選択したファイルのハッシュを計算するため、
ホットキーをつかって、呼ばれた場所でハッシュ計算コマンドを呼び出してる。

こんな使い方するのは、ahk界隈では朝飯前だろうから
いちいちビープが鳴ってたら、全世界でクレームだらけになるぞw

664 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 19:42:22 ID:M4uz39800]
・何かのデスクトップテーマや常駐ソフトで音が鳴るようになってる
・本当のウィルスに感染してる
・PCの中にいる妖精さんが鳴らしている

665 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 20:33:27 ID:sa012nT50]
>>662
そのように、ためしに別の組み合わせのキーの横に直接記述したら、音が消えました。
普通に動いてるから気にしてなかったんだけど
スクリプトの記述のエラーのビープ音なのかも・・・。
>>663
>>全世界でクレームだらけになるぞw
そりゃそうだ。
>>664
たぶん妖精さんですねw

みなさんお騒がせしました。ごめんね。

666 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 21:20:21 ID:j9JZmdvM0]
>>665
@割り当ててるホットキーがすでに別のソフトに割り当てられててそっちで音がなってる。
AたとえばWin+Dを押したとき、エクスプローラにDキーが送られて、エクスプローラから「Dで始まるファイルなんてねえよ!」って言われて音が鳴る

ぱっと思いつくのはこれぐらい

667 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 22:50:52 ID:9Q5al6/M0]
コンパネの「サウンドとオーディオデバイス」の設定で
「プログラムの起動」に音が設定されているにイッピョ

668 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/14(火) 23:00:00 ID:McvR1AuZ0]
>>667
+エラーだろうな

669 名前:名無しさん@お腹いっぱい。 [2009/04/16(木) 01:42:10 ID:WuzwTPez0]
代入について質問します
autohotkeyでは以下の二つの処理のうち、より早いのはどちらなのでしょうか。

a = test
a := "test"


670 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 02:04:46 ID:mvpsM9MdP]
>>669
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1157529465/97
最近のバージョンではどうか知らない

671 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 02:10:27 ID:QXtfAzQn0]
適当に作った。こっちでは、数値でも文字列でも 「=」 のほうが 「:=」 より速い
Gui, Add, ListView,Grid,Name|Count|Time(ms)
Loop, 3
 LV_ModifyCol(A_Index, 80)
Gui, Show
count := 1000 * 1000
Tests = Test1|Test2|Test3|Test4
Loop, PARSE, Tests, |
{
 StartTime := A_TickCount
 Gosub, %A_LoopField%
 Time := A_TickCount - StartTime
 LV_Add("", A_LoopField, count, Time)
}
return
Test1:
 Loop, %count%
  a = 1000
 Return
Test2:
 Loop, %count%
  a := 1000
 Return
Test3:
 Loop, %count%
  a = あいうえお
 Return
Test4:
 Loop, %count%
  a := "あいうえお"
 Return



672 名前:名無しさん@お腹いっぱい。 [2009/04/16(木) 05:16:49 ID:qBUQoLG70]
Version 1.0.48.01

673 名前:669 mailto:sage [2009/04/16(木) 08:07:16 ID:WuzwTPez0]
>>670-671
ありがとうございます。
昔から層だったのですか。


>>672


674 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 08:41:24 ID:rRTU/mFz0]
>>585
>数十万件ほどある2chのDAT自動分類とか、本文検索、カテゴリわけ、統計抽出で使ってる。
便利そうだなあ、うpおねがいできない?

675 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 16:03:00 ID:DnQKjK+d0]


676 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 16:29:05 ID:dH1w2+Gu0]


677 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 17:23:25 ID:bLNrS1bm0]


678 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/16(木) 18:12:44 ID:cHHoWky00]


679 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 01:36:32 ID:mo1/Vcwy0]
>>671
じゃあ := の存在意義ってあるのかな?

680 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 01:39:57 ID:EfTDXa450]
:=は、右式で計算するときじゃね? と俺は理解して使い分けてるけど


681 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 03:32:56 ID:XkaWyP6+0]
計算しようとする分、遅くなるんだろうね。



682 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 21:58:16 ID:xuJtArT2P]
|=
の使い道が分からん

683 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 23:21:53 ID:NeCnakzy0]
扉を開けるって意味のAAじゃないのか?

684 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/17(金) 23:34:41 ID:s+XI67ya0]
>>682
flags|=NEW_FLAG

685 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 00:06:21 ID:1kiue+Dq0]
Orのビット演算した結果を代入じゃないの?

686 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 00:29:50 ID:kItLjanl0]
ビット演算とか Or の概念自体がわからんのじゃね?
AHKのサンプルでも | じゃなく +で足し込んでフラグの説明してる場合が多いしな

687 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 10:36:33 ID:tJm8WU8c0]
インストーラー形式の方ではなくzip版AutoHotkey104801.zipで
MouseGesture2を使わせて貰おうと思うのですが
AutoHotkey104801.zipを解凍したフォルダに入っているのLibフォルダの中に
MouseGesture2.zipを解凍して出来たフォルダ一式を入れてAutoHotkey.exeを
実行してもドキュメントフォルダにAutoHotkey.ahkを作成するかを聞いてきて
yesにしてもnoにしてもMouseGesture2.ahkを読み込めません。
AutoHotkey.exeを実行しただけで、複数の.ahkを読み込みたいのですが
インストーラーでインストールしないと無理なのでしょうか?


688 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 10:37:58 ID:VGVOYY6h0]
低レベル過ぎ
流行らせるページで初歩を学んでこい

689 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:17:02 ID:tJm8WU8c0]
>>688
AutoHotkey.exeの実行は読んだのですが自分のやり方が間違っているので出来ません。
MouseGesture2など複数の.ahkをAutoHotkey.exeをクリックしただけで実行できる
具体的な方法を聞きたいのです。

690 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:19:11 ID:YTnYPyoc0]
>>689
やり方が間違ってるって分かるんなら解決できるだろ

691 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:23:56 ID:tJm8WU8c0]
流行らせるページを参考にしただけでは無理だったので聞いています。



692 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:26:32 ID:TxHWsmXa0]
#Include項を読めば、問題解決。
別々にexeに送ったほうがいいよ。includeしても問題が発生するだけ。ランチャ登録で、一発じゃん。

693 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:33:10 ID:HfGyibd50]
MouseGesture2 は単体で起動した方がいいね
でもこの調子じゃ使いこなすまでにかなり苦労しそうな雰囲気…

694 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:33:13 ID:TxHWsmXa0]
使用方法の「AutoHotkey.exeの実行」と
スクリプト仕様の「スクリプトの起動とAuto-executeセクション」も参照。
これで理解できないなら、聞くだけ無意味。初期の初期です。

695 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:42:06 ID:kItLjanl0]
色々便利な機能があるのは分かってるが組込みが面倒臭そうすぎて敬遠してるな>MouseGesture2
そこそこAHK暦ある人間ですらそんな状態なので、とりあえず単体起動で常用して
組込み(含むLIBでの自動組込み)は自力でAHK書けるようになってからにしたらいいと思う

696 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 11:51:36 ID:TxHWsmXa0]
マウ筋とAHKの組み合わせで必要十分だしね。
さらに踏み込みたいなら、MouseGesture2は非常に便利なんだけどね。
マウ筋を使いすぎて環境移動が面倒くさいのもあるけど。

ただ、ここでMouseGestureがあったらなとは、よく思う。
JaneStyleとかのマウスジェスチャーつきのソフトでは、よく思う。

697 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 12:03:30 ID:tJm8WU8c0]
>>688-696
付き合って頂きありがとうございます。
マウ筋からMouseGesture2への乗り換えの最中に問題が出てファビりました。
後出しで申し訳ありませんが、MouseGesture2とnamazu_ime_scr_v10201だけ
他のスクリプトとうまく(動いたり動かなかったり)読み込めなかったので質問しました。
マウ筋はv1.40になってかなり便利なのですが、もう少し自由度が欲しいので
ncludeを使ったりしてもう暫く色々やってみます。
最悪、MouseGesture2とnamazu_imeは単体で動かします。
皆さん本当にありがとうございました。

698 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 12:30:04 ID:XnVnH0l70]
経験則だが

MouseGesture.ahkはAuto-executeセクションで#includeするスクリプトの中では最後に記述する
なまず日記のスクリプトを#includeする場合はAuto-executeセクション以外の方がいい
※スクリプト内でReturnを使ってる場合はエラーが出るから

699 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 12:39:43 ID:tJm8WU8c0]
>>698
ありがとうございます。未だ奮闘中なので
>Returnを使ってる場合は
これかな?
なまずさん所、詳しく読んでみます。

700 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 12:51:20 ID:UjDkIbnE0]
インクルード(関数ライブラリ含む)の仕様上無理だってのはわかるけど
インクルード「される」側のAutoexecブロックとかプリプロセッサ命令(#NoEnvとか)を
有効にするかしないかを選びたいなぁと思う事はある。

701 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 17:57:57 ID:1kiue+Dq0]
たとえば、下の二つは個別ではきちんと動く
-----------------------------
Func_AAA()
return
Func_AAA(){
ToolTip,AAA
return
}
-----------------------------
Func_BBB()
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------
けどIncludeすると下のようになって実行できない
-----------------------------
Func_AAA()
return ;ここで終了
Func_AAA(){
ToolTip,AAA
return
}
Func_BBB() ;ここまでこない
return
Func_BBB(){
ToolTip,BBB
return
}
-----------------------------



702 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 18:15:51 ID:TxHWsmXa0]
結局、全部統合して一つのスクリプトにするってだけだから、変数とかAuto-Executeとか理解しながらまとめるしかない。
競合したりすると原因究明が面倒くさいから、個別に管理してる。

703 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 19:32:24 ID:14iQRRzH0]
MouseGesture2にて
・条件定義タブで「種別=>ウィンドクラス」「値=>CabinetWClass」
・ジェスチャ定義タブで「定義名=>右↓→」「カーソル移動=>RB_DR_」
・動作割り当てタブで「Send,^w」と設定しました。
これで「右↓→」でウィンドウを閉じるようにできました。

ところがファイルを右ドラッグした時の右ドラッグメニュー「ここにコピー」等の
表示レスポンスが落ちました。
設定タブでタイムアウトを「200」にしましたが、まだ遅いと感じます。
できればファイルやフォルダのアイコン上ではマウスジェスチャーを無効化したいです。

下のサイトはマウ筋の設定ですが、まさにこれと同じ事で悩んでいます。
こういった設定はどうすればいいですか?
f57.aaa.livedoor.jp/~atechs/pukiwiki.php?faq%A4%C8%BC%BA%C7%D4%CE%E3#i0b3c179

704 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 19:43:43 ID:TxHWsmXa0]
>>703
>>488のこれが使えるかも。
ControlGet,StateListView,List,Selected,%ClassNN%,ahk_id %WindowID% ; StateListViewにSysListView32の選択項目名を入れる

705 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 21:55:07 ID:14iQRRzH0]
>>704
ありがとうございます。
先日マウ筋から乗り換えたばかりの自分には少し難しいかもしれません。
自分の勉強不足です。
色々試してみます。

706 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/18(土) 22:49:52 ID:vwMG/qD80]
条件定義で条件を作成し(例えば条件名を GestureCancel とする)
カスタム条件式で下記の何れかを登録(または複数登録)
MG_LvHitTest()
MG_TvHitTest()
MG_TreeListHitTest()
※関数の詳細はReadme.txtの335行目〜の「●ユーティリティ変数・関数」を参照

ジェスチャ定義で RB_ を作成

動作割り当て
RB_ を選択
条件 GestureCancel
動作 MG_About()

これで以前と同様に扱えると思う

707 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 00:06:23 ID:RYyoU1dL0]
あるキーが押されたらループを抜けて次の処理へ、ということをやりたくて
以下のように書いていますが、タイミングによってはスリープに引っ掛かって
失敗してしまいます。ホットキーの利用も考えたのですがうまくいきません。
低レベルで申し訳ないのですが、どう書けばいいのでしょうか…?
(スリープ処理は残しておきたいです)

Loop
{
if ( GetKeyState("RETURN") = 1)
Break
Else
Sleep,100
}

708 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 00:11:10 ID:zeE5du8S0]
KeyWait, Return, D
msgbox, test


709 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 00:24:59 ID:OzydvQTn0]
KeyWait使うのが楽だと思うけど。。。
どうしてもSleepを残すのならば、ループ内でキーを拾えないのはしょうがない
ホットキーつかってフラグの上げ下げすりゃいいはず

Loop
 Go := false
 while (Go==false)
  Sleep, 100
  :

SomeKey::Go:=true

710 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 00:39:19 ID:RYyoU1dL0]
>>708-709
ありがとうございます!
実際はループ中に他の処理もしているので(省略してしまってすみません)、
KeyWait で止まってしまうのはまずかったのです。
フラグを立てる方法でうまくいきました。ありがとうございました!

711 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 17:31:21 ID:85CwF9t90]
GUIに現在時刻をリアルタイムで表示したいんですがどうすればよいのでしょうか?



712 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 17:44:32 ID:tIMrGJMJ0]
>>711
組み込み変数
%A_YYYY%年%A_MM%月%A_DD%日%A_Hour%時%A_Min%分

713 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 22:16:23 ID:OzydvQTn0]
; 簡易マウスジェスチャ関数
; ジェスチャの結果をLRUDの文字列として返す

GetGesture(timeout=1000, tipNo=0, sensitivity=30) {
 CoordMode, Mouse, Screen
 CoordMode, Tooltip, Screen
 ButtonName := RegExReplace(A_ThisHotkey, "^\W+|\s.+", "", "", -1)
 MouseGetPos,nx,ny
 qp := ATan(1), lastDir = ""
 while GetKeyState(ButtonName, "P") {
  if (A_TimeSinceThisHotkey > timeout && !gesture) {
   if (tipNo)
    Tooltip,Timeout, x+16, y+16, %tipNo%
   break
  }
  MouseGetPos,x,y
  dx:=x-nx, dy:=y-ny
  if (tipNo)
   Tooltip, %gesture%, x+16, y+16, %tipNo%
  if (Mod(A_Index, 10)!=1 || Sqrt(dx**2 + dy **2) < sensitivity)
   Continue
  rad := ATan(dy/dx)
  dir := (rad < qp && rad > -qp ) ? ((dx > 0) ? "R" : "L") : (dy>0) ? "D" : "U"
  if (lastDir != dir)
   gesture .= dir
  lastDir := dir, nx:=x, ny:=y
  Sleep, 20
 }


714 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/19(日) 22:18:27 ID:OzydvQTn0]
; 続き
 if (!gesture) {
  Send, {%ButtonName% Down}
  KeyWait, %ButtonName%
  Send, {%ButtonName% Up}
 }
 if (tipNo)
  Tooltip,,,, %tipNo%
 return gesture
}

利用例)

SetTitleMatchMode, RegEx

#IfWinActive, ahk_class CabinetWClass|ExploreWClass|MozillaUIWindowClass|IEFrame
$RButton::
 g := GetGesture(1000, 20)
 Send, % (g=="R") ? "{Browser_Forward}" : (g=="L") ? "{Browser_Back}" : (g=="LDR") ? "^w" : ""
 return


715 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 02:35:47 ID:MR7L4s8s0]
>>712
ソフト起動時の時間しか表示してくれません・・・。
できればリアルタイムで表示が変わっていくようにしたいんですが

716 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 03:06:03 ID:NtrPHVPz0]
>>715
そりゃそうさ。
Gui,Showをするか、GuiControlで変えるかしないと。
チカチカする場合は、
SetBatchLines, -1 ; maximize script speed!
SetWinDelay, -1
を書けば緩和されるかも。

717 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 03:14:34 ID:MR7L4s8s0]
>>716
ありがとう!
明日試してみます。

718 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 05:28:09 ID:JG3J5CMR0]
変数名の中に変数を入れた場合その変数を呼び出すにはどうすればよいのでしょうか?
たとえば

no=1
name%no%=taro

こうした場合%name1%では呼べますが%name%no%%では呼べません。

719 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 08:57:33 ID:dpb8VPO80]
:=

720 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 21:17:57 ID:i3tTOHu+0]
>>718
no=1
name%no%=taro
dainyu:=name%no%
msgbox, %dainyu%

こんな感じにしてる。

721 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 22:30:21 ID:WxIZTvGU0]
1.0.48.02キター



722 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 23:22:48 ID:fqH4UQW20]
変数の参照の仕方は変態的だよなぁ

a1 = ああああ
a2 = いいいい
a3 = うううう
a4 = ええええ
a5 = おおおお
Loop, % 0+2+3 {
 Tooltip, % "a" . A_Index " = " . a%A_Index%, A_Index*10 , % A_Index*20, %A_Index% ; ※
 Sleep, 2000
}

※で色々な参照方法があるけど通るってある意味すごい

723 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/20(月) 23:28:21 ID:M2RTDhVt0]
このスレってなんですか
ウイルススレですか

724 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/21(火) 00:03:25 ID:dpy2yIyN0]
タスクバーの右クリックで出るメニュー open をみると
履歴らしきものが出ますが、不要な場合
履歴を記録しないような設定は出来ますでしょうか。

725 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/21(火) 00:29:47 ID:sZR4frkX0]
最前面ってのはできるけど指定ウィンドウの前面って配置させることはできません?

726 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/21(火) 01:14:56 ID:+3mbXAWQ0]
コマンド1発じゃできないだろうけど、できると思うよ

727 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 17:30:52 ID:I73rPchU0]
;の後に書くコメントは日本語だとまずいですか?
英語版windowsで使えなくなるとか、何かで問題が起こるとか、
その様な不具合はありますでしょうか?

728 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 17:45:26 ID:zXLOeeEn0]
無問題

729 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 17:46:05 ID:I73rPchU0]
即レスthxです。

730 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 18:34:33 ID:lbTzV7q7P]
>>727
もしかすると、SetTimerコマンドを使っている場合、
コメントにダメ文字(>>3)が入ってるとまずい場合があるかも

先週くらいからコメントに「〜」とかが入っているスクリプトを作って使い始めたんだけど、
何回か、“NTMARTA.DLLは正しいイメージファイルではありません” というエラーメッセージが出て
他のアプリケーションを巻き込んで挙動がおかしくなることがあった
(ちょっと調べたところでは、全く処理が行われていない次回サブルーチン起動待ちの状態でエラーが出ている)
おとといくらいから該当部分のコメントを修正して様子見をしてるんだけど、いまのところエラーが出てないような感じ

731 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 20:27:38 ID:Cv0jfypZ0]
gaatsu.ps.land.to/up/src/up_0122.jpg


Gui, Add, Radio ,vRadioA , aaaaa
Gui, Add, Radio ,vRadioB , bbbbb
Gui, Add, Radio ,vRadioC Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui,Show


おおざっぱにこういうのつくってるんですがaaaaa、bbbbbにチェックが入ってると
Manualのテキスト入力欄がグレイアウトして、入力できないようにするには
どうすればよいのでしょうか?



732 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 21:00:51 ID:R/5HKiXn0]
Gui, Add, Radio ,vRadioA Gtext_usable, aaaaa
Gui, Add, Radio ,vRadioB Gtext_usable, bbbbb
Gui, Add, Radio ,vRadioC Gtext_usable Checked1, Manual
Gui, Add, Edit ,vEdit,
Gui,Show
Return

text_usable: ;ラジオボタンの操作に連動したルーチン
GUI, Submit, NoHide
If(RadioA or RadioB = 1){
GuiControl, Enable0, Edit,
}
Else if RadioC = 1
GuiControl, Enable1, Edit,
Return


733 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 21:01:40 ID:zXLOeeEn0]
Gui, Add, Radio ,vRadioA gEvent1, aaaaa
Gui, Add, Radio ,vRadioB gEvent1, bbbbb
Gui, Add, Radio ,vRadioC gEvent1 Checked1, Manual
Gui, Add, Edit ,vEdit ,
Gui, Show

Event1:
Gui, Submit, NoHide
GuiControl,Disable%RadioC%,Edit
Return


734 名前:名無しさん@お腹いっぱい。 [2009/04/22(水) 21:13:52 ID:pLtZjKfp0]
特定のプログラムだけスリープさせるのってできましたっけ?

735 名前:734 [2009/04/22(水) 21:36:21 ID:pLtZjKfp0]
api32 のsuspendthread を使ってやってみます

736 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 22:41:47 ID:JfqAvQ+s0]
選択した文字列の最初の行をファイル名.txtで保存するahk教えて君

737 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 22:48:24 ID:zXLOeeEn0]
以下を何らかのイベント(ホットキーが便利)をトリガとしてで処理させる
@ (クリップボードを待避)
A ^cを送る
B クリップボードが読めるのを待つ
C PARSING LOOP を使ってクリップボードを行毎に処理させる
D 1ループ目で、行内容を別変数に保存してループ終了
E ファイル出力コマンドで吐き出す
F (待避したクリップボードを戻す)

@Fはなくても良い
^cでコピー出来ない場合は別の方法を考える

738 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 23:09:07 ID:JfqAvQ+s0]
#c::
Send,^c
ClipWait
SetEnv,word,%clipboard%
ファイル出力

こうですか?わかりません

739 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/22(水) 23:55:14 ID:zXLOeeEn0]
C Loop, PARSE を使う
  区切り文字は `n 。先頭・最後の Tab, 半角スペース、 `r などは除外した方がいい
  ※ クリップボード内容を他の変数に代入しないでも文字列分割ループで参照できる
D ここはCのループ内。やる事やったらすぐ Break。(1行目だけ欲しいから)
  ファイル名代入時に禁則文字を置換した方がベター
E FileAppend を使う
  出力内容は Clipboard そのもの。ファイル名はDで取得したもの。
  このコマンドは常に追記になるので、事前に IfExist て存在したとき FileDeleteしたほうが良い
  出力フォルダを変えたい・日時を入れたいとかなら、 A_MyDocuments, A_Day などの「組み込み変数」を使う

740 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 00:15:01 ID:acO3R8MP0]
このスレってautohotkeyの海外のwikiのように
鋭い指摘やおもしろい手順がいくつもあるよな
勉強になるわ

741 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 00:16:45 ID:JNriN8sz0]
>>732,733
できました。ありがとう!



742 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 00:32:02 ID:K/YTztcc0]
>>732
横レスですまんが
>If(RadioA or RadioB = 1){
これは
RadioA = 1 or RadioB = 1
みたいなもの?

743 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 08:38:13 ID:ehgiERWq0]
Radioなら1か0だから、それと等価ではある
個人的には後者のように素直に書くか、
いっそのこと if ( RadioA or RadioB ) の方が明快だと思うけどね

744 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 08:39:08 ID:neftGxox0]
#IfWinActive, aaa
^Numpad9::

#IfWinActive, bbb
<^Numpad9::
>^Numpad9::

↑のように#IfWinActiveのどこかで、左か右かのモディファイアキーを使用する設定にしてると
aaa がアクティブな時に Ctrl+テンキー9 を押しても機能しないのですが、
これは仕様なのでしょうか?

念のためにAutoHotkey.iniをクリアして↑のホットキーだけで試してみたのですが、同じ結果になりました。

745 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 17:01:08 ID:7IN0MA170]
Ver104802 で試してみたけど、(今のところ?)修飾キーに < > を利用すると
< > 無しの同一ホットキーが効かなくなるみたいやね。
これは同一スクリプト内だけの問題で、スクリプトを別にすると効くみたい。

スクリプト内で < > を利用する場合、左右の区別が不必要でも
< > を記述して対応するのが簡単かも。

#IfWinActive, aaa
<^Numpad9::
>^Numpad9::
send, a
return

#IfWinActive, bbb
<^Numpad9::send, b
>^Numpad9::send, c


746 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 19:44:43 ID:Z06C8ITC0]
GUI, Add, Text,, %clipboard%
GUI, Show

初歩的な質問で申し訳ありませんがクリップボードの内容が変更したら
表示も同時に変わるようにするにはどうすればよいのでしょうか?
Redrawオプションの使い方がいまいちわかりません・・・。

747 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 19:45:36 ID:IDkO4Joj0]
OnClipboardChange

748 名前:736 mailto:sage [2009/04/23(木) 19:55:54 ID:sSOdcq6M0]
>>739
親切にありがとう

#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `,.`n%A_Tab%, %A_Space%
FileAppend,%clipboard%,D:\memo\%name1%.txt

こんな感じで行き詰っています。
ファイル名取得できまへんがな

749 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 20:30:30 ID:Z06C8ITC0]
>>747
ありがとう
でも再描画の仕方がわからない・・・。

750 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 22:24:24 ID:Baw+u3zK0]
>>748 でもそれなりに動くけどな。
区切り文字がカンマ(,)またはピリオド(.)またはタブで、前後の空白除去、って動作だけど
思った通りなんだろうか。

テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
FileAppendでエラーになっているんじゃないかと予想。
完成するまではMsgBoxとかで変数内容確認すると良いよ。

あとエラーかどうかは、ErrorLevel調べれば分かる。
文字列置換(StringReplace か RegExReplace)で引っかからない文字にすればいい。

>>749
GuiControl コマンド

751 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/23(木) 22:45:13 ID:neftGxox0]
>>745
レスありがとうございます。
やっぱり仕様なのかなあ・・・



752 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 00:13:08 ID:4ogwzjQN0]
GUI, Add, Text,Vaaa, %clipboard%
GUI, Show
return
OnClipboardChange:
GuiControl, MoveDraw, aaa,
return
GuiClose:
Exitapp

わからん・・・。

753 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 00:14:45 ID:+WwSzOjf0]
>>647
誰かそれを作った人はいませんでしょうか?

754 名前:736 mailto:sage [2009/04/24(金) 00:27:01 ID:umX25vaH0]
>>750 thx
> テストした文字列の1行目に禁則文字「 \ / : * ? " < > | 」が入ってて
それでしたw

あとひとつだけ、
StringReplace, fname, name1, %A_Tab% \ / : * ? " < > | ,, ALL
複数の検索文字列はどう書けばいいんでしょうか?

755 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 01:14:10 ID:4Tp5poaX0]
>>754
以下から好きな(もしくは自分で改造できる)方法で
(どれも禁則文字をアンダースコアに変換する)

@ StringReplaceを指定文字の回数頑張る
StringReplace, FileName, FileName, \, _
StringReplace, FileName, FileName, /, _
 :

A @を単純化するために検索文字リストを作成してループで回す
NG = \/:*?"<>|
Loop, PARSE, NG
  StringReplace, FileName, FileName, %A_LoopField%, _

B 正規表現でやる
FileName := RegExReplace(FileName, "[\\\/\|\?\*:<>""\t]", "_", "", -1)

※ \(0x5c)に関しては誤爆がありうるので注意(BREGEXPなどを使えば回避できるが・・・)

756 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 09:01:46 ID:iP7K7SB40]
ラジオボタン
途中で別のコントロールを追加すると、次からは新しいグループになる。

同じグループにすることってできないだろうか・・・。

757 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 11:18:44 ID:BW5MCYnb0]
今気づいたけど

組み込み関数の引数にコマンドライン引数を指定する事って出来ないんだな
a = %1%
とか一々しないといけないのは面倒

758 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 20:36:29 ID:umX25vaH0]
>>755thx
#c::
Send,^c
ClipWait
StringSplit, name, clipboard, `r, %A_Space% %A_Tab%
fname := RegExReplace(name1, "[\/\|\?\*:<>""\t]", "_", "", -1)
FileAppend, %clipboard%, D:\memo\%fname%.txt
MsgBox,64,,%fname%.txt`rを保存しました。,2
return

ばっちりです!

759 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/24(金) 22:41:32 ID:4Tp5poaX0]
おめ。

#cを連打してみると不具合が出るよ(ファイル内容を確認すれば分かる)
そのときは >>739のE



760 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 13:20:37 ID:RzJzru2Y0]
NoCloseでクローズボタンの無効化をしたいのですが、
ウィンドウ生成とともに無効化されるようになりません。
ショートカットキーによる無効/有効のトグルはできるのですが、
Rulesに ahk_class Notepad と書いた状態で notepad を起動しても、
新規ウィンドウのクローズボタンは有効のままです。
Disable close buttons on Window Creation
のチェックボックスはチェックしています。
なぜRulesの記述が有効にならないのか
わかる方がいましたらご助言お願いします。

761 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 15:24:35 ID:LVJjcW7S0]
XPのExplorerで、ファイルをドラッグアンドドロップしはじめると、
マウスカーソルが禁止マークになって、
掴んだファイルが半透明で表示されます。

このとき、マウスの左ボタンから手を離す前に
掴み中であることを識別して別の処理をしたいのですが、
掴んでるファイル名を取得する方法はないでしょうか。



762 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 16:54:54 ID:KzAWR4DV0]
たまたま似たようなの作ってた。

; Button Up直前にGUIを置いてファイルを取得する
Gui, -Caption -ToolWindow +AlwaysOnTop
Gui, Show, w3 h3 Hide

pattern := "ExplorerWClass|CabinetWClass"

LButton::
 Send, {LButton Down}
 KeyWait, LButton
 IfWinExist, ahk_class SysDragImage
 {
  CoordMode, Mouse, Screen
  MouseGetPos, x, y, hwnd, classNN
  WinGetClass, class, ahk_id %hwnd%
  If RegExMatch(class, pattern)
   Gui, Show, % "NA x" (x-1) " y" (y-1)
 }
 Send, {LButton Up}
 Gui, Hide
 return

GuiDropFiles:
 MsgBox, %A_GuiEvent%
 return


763 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 17:08:39 ID:Y2iaPllI0]
おーありがとうございます!
自スクリプトに組み込んで活用させていただきます。

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/25(土) 23:47:43 ID:Aak6Bmgi0]
だれか、ahk の日本語解説本、書いて下さい。
英語は細かいところがわからなくて困る。

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 00:14:17 ID:RsidKdjm0]
>1

766 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 00:42:15 ID:XR0J5Yoc0]
これだな。2007/09/05だから少々古い。
ttp://www.flib.jp/D800/book854.html

767 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:13:57 ID:AJINZZJZ0]
exeからahk取り出せませんか?

768 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:20:55 ID:7UkZFFcM0]
>>767
できます。パスワードなければ

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:29:58 ID:AJINZZJZ0]
パスはつけてないんですがどうやってソース取り出すか教えてください

770 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:33:35 ID:E78MgH1L0]
exe2ahkでググレクズ

771 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 15:38:55 ID:AJINZZJZ0]
>>769,770
ありがとう



772 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 16:30:26 ID:yHBXLU9I0]
::a::autohotkey{ENTER}
の動作にツールチップ(一秒後に消える)
を着けたいのですがうまくいかず困っています。
RemoveToolTip:の部分でエラーを出されてしまいます。

a::
send ,autohotkey {enter}
ToolTip, AHK
SetTimer, RemoveToolTip, 1000
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return

なにぶん最近いじり始めたばかりなので
根本的なところで間違えてるかもですが
問題点を教えてください。
よろしくお願いします。


773 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 17:19:15 ID:ViVhDQ+t0]
>>772
2行目のsendの後が全角スペースになってる。
あとsendで送られたのがautohotkeyじゃなくてutohotkeyになった。
a::を$a::に変えたら直った。

どんなエラーが出てたのかわからんけど、基本的にそのままで行けた。

774 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 17:52:28 ID:PRYSHYE50]
> SetTimer, RemoveToolTip, -1000

で1度だけの呼び出しに出来るよ

775 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 21:23:21 ID:yHBXLU9I0]
>>773,774
レスありがとうございます。

>>773の方法だとうまくいかないようです。
エラーは

Line Text:Removetooltip
Error:Duplicate label
The program will exit.

です。
環境が違うせいなのかな?
当方環境 AHK v1.0.48.02 OS:VistaHP32bit

>>774の方法で後半部分を削ると動きました。

::a::autohotkey{ENTER}
での動作に比べて動作速度が遅くなるのは仕方ないのでしょうか?
SendMode Inputとか入れてもあんまり効果ないようです。



776 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 22:35:29 ID:PRYSHYE50]
>>775
a::
Send, autohotkey {enter}
  ↓
Send, a ; ココで同サブルーチンが呼ばれてしまう。(>>5参照)
Send, u ; これ以降は普通に動作
  :
Send, {Enter}

> 動作速度が遅くなるのは仕方ないのでしょうか?
SetKeyDelay

777 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/26(日) 23:18:41 ID:yHBXLU9I0]
>>776
レスありがとうございます。
SetKeyDelayを使用して十分な速度で動くようになったのでこれで運用してみようと思います。

>>775の時はこのスクリプトの前の他のスクリプトで既にRemoveToolTip:を使用していたため
RemoveToolTip:の部分でエラーを吐いていたようです。
WhichToolTipのあたりを勉強してきます。


778 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 00:09:04 ID:+ovk7Hbu0]
>>766
> これだな。2007/09/05だから少々古い。
> ttp://www.flib.jp/D800/book854.html

ありがとうございます。
しかし、専用viewer が怪しそうで、downloadしなかったので、見られませんでした。
残念

779 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 11:31:05 ID:0QYIMn790]
書籍の形にこだわる理由は何?
流行らせるページはなんでスルーなの?

780 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 12:05:09 ID:/pHC43gt0]
本の宣伝にならないからw

という冗談は置いておいて、

流行らせるページも万能じゃないし、
もうちょっと優しめに書かれた入門書が欲しいという初心者がいても不思議じゃないと思うけど

781 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 12:40:58 ID:+rxhALv90]
If Var1 = %Var2% と If (Var1=Var2) とか、文法にずいぶん癖があるからなあ
最初は俺も苦労した



782 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 17:00:26 ID:0QYIMn790]
いや、入門レベルならそれこそググればブログなどで取っかかりから説明してるとこ沢山見つかるっしょ

英語云々書いてるってことはわざわざ原点に当たってるみたいだし
むしろより高度な方向の解説を求めてるのかと思ったんだけど。

783 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 19:20:25 ID:HMa7F1Xh0]
>>778
てかそれ、流行らせるページの人が書いてるものでしょ

784 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 21:17:12 ID:ZpVxt0r00]
わかりやすい書籍があれば
どこででも読むかたちで予習復習できるじゃん

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 22:16:23 ID:wELKguDV0]
まず前金で200万振り込んでくれ

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/27(月) 23:42:24 ID:l7+SdciM0]
>>781
前者はわかるが後者はなんだい?


787 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 00:11:36 ID:KKp3NETS0]
等価だよ
IfEqual, Var1, %Var2%
If Var1=%Var2%
If (Var1=Var2)

こういうのも通るし
count=0
Loop {
 If (count++==3)
  Break
 MsgBox, % A_Index
}

788 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 01:01:30 ID:E1vvN/jt0]
>>787
ありがとう
最後の例はすごいな
そういう発想はなかった

789 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 08:49:47 ID:XnR93Z5I0]
>>679 の := の話と似てるな
:= や if() は、式を書ける分だけ一般の高級言語に近い仕様

ahkは発展途上の過程で色々盲腸的な部分が残ってるんで分かりにくいね

790 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 09:00:55 ID:tUgDcu7Y0]
>>787の3つのIF、速度が違ったりするのかな

791 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 11:14:37 ID:KKp3NETS0]
ちょっとテストしてみた。1万回ループしてms単位の差がでてきた。
バッチ的に回すにしても他の処理の方が圧倒的に重いだろうし、気にするほどじゃない。



792 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 14:00:29 ID:tUgDcu7Y0]
>>791
てことは if() に統一して問題無さそうだね。ありがと。

793 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 15:18:00 ID:6TUioa2p0]
if()で使うけど、結局は%%つけちゃったり、""をつけ忘れたりする。

794 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 17:58:54 ID:cLThndOM0]
既出かもしれんが、autohotkey も、なでしこ みたいにbat偽装しても動くんだな。便利だわ。

;@echo off
;"%~dp0Autohotkey.exe" "%~0" %*
;exit
;rem Autohotkey.exeのあるフォルダに hogehoge.bat で保存。
;rem このバッチにファイルをドロップしてみる。
;rem 下記にAHKのスクリプトを記述する。
tmpLimit=%0%
Kari:=""
Loop
{
KariI:=%A_INDEX%
KariR:=chr(13)
kari=%kari%%KariI%%KariR%
if(tmpLimit=A_INDEX)
break
}
msgbox,%kari%

795 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:10:30 ID:BorXmBFr0]
>>794
できない言語を探す方が難しいと思うよ

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:21:57 ID:lIOj1va90]
>>794
bat偽装っていう意味がわからないんだけど、どんなシーンでなんのメリットがあるの?

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 18:48:08 ID:cLThndOM0]
>>796
Autohotkey.exeがハードディスクにインストールしてない環境や、
関連付けしてない環境でAhkスクリプトを実行したいときに便利かもしんない。
>>795
よく使ってるUWSCは拡張子をチェックしてるみたいでBatだとはねられちゃった。
なでしこも出来るわな。Dosの複数行をコメントや変数でエラーにならんように
誤魔化せて、拡張子チェックしてない場合はいけそうだ。

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:02:51 ID:c0gmFX8Z0]
他のアプリからパスを受け取るコマンドってないんですか?

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:13:23 ID:KKp3NETS0]
その他のアプリがパスをくれるなら、引数なりドラッグ&ドロップなりで煮るなり焼くなりなんなりと。
くれないならアドレスバーとかタイトルバーとかから読む。

800 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/28(火) 20:45:45 ID:c0gmFX8Z0]
>>799
こういうのがしたいとおもって
FileAppend,
(
これは
%ぱす%
です
),D:\aaa.txt

うまくいえないので半年ろむってます


801 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/29(水) 19:08:35 ID:k0T7d2ZLP]
%1%



802 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 17:50:27 ID:kybyWs4G0]
/* hogehoge.js JscriptのスクリプトからAutohotkeyのスクリプトを使うのもOKだった
;*/ //ここからは jscriptのスクリプト Autohotkey.exeの有る場所に置いて実行。
var 変数 = "豚インフルエンザでも海外旅行";WScript.Echo(変数);
var 引数空白付けて2重引用符で囲む=" "+"B"+" "+"\""+"jscriptから引数を渡す"+"\""
var 戻値 = 関数autohotkeyexeで自身のスクリプトを実行_引数空白2重引用符(引数空白付けて2重引用符で囲む);
WScript.Echo("Window Script Host = AutohotkeyからのStdOut = " + 戻値);

function 関数autohotkeyexeで自身のスクリプトを実行_引数空白2重引用符(sArg){
var objshl = new ActiveXObject("WScript.Shell");
var pAutohotkeyExe = WSH.ScriptFullName.substring(0,WSH.ScriptFullName.length - WSH.ScriptName.length)+"autohotkey.exe";
var objExec = objshl.Exec("\"" + pAutohotkeyExe + "\"" + " " + "\"" + WSH.ScriptFullName + "\"" + sArg);
do{WScript.sleep(200)}while(objExec.Status == 0);
//条件が合っている間はloop 戻値を取得
if(objExec.stdout.AtEndOfStream){var result = objExec.stderr.ReadAll();var serror = 1}
else if(objExec.stderr.AtEndOfStream){var result = objExec.stdout.ReadAll()}
return result}
;/*
*/
;/* // ここからはAutohotkey のスクリプト
Arg1=%1%
Arg2=%2%
Fun%Arg1%(Arg2)
FunA(sMes){
FileAppend,%sMes%,*
}
FunB(sMes){
Msgbox,Jscriptからもらった = %sMes%
FunA(sMes)
}
;*/

803 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 18:03:27 ID:/B3Hmf7f0]
でっていう

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 19:01:28 ID:SRqHNfq20]
素晴らしい中身の薄さにワロタ

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/04/30(木) 19:07:22 ID:kybyWs4G0]
>>803
SFCminiとかDynaWrapperをインストール出来ない環境で、
jscriptからDLLを使ったり、アプリのウィンドウを制御したり、
ドロップ可能なGUIを使える程度かなw
Suppon.exeからでもDLL使えるんでいろいろできそうだけど
Autohotkey経由のほうが楽。HTAより凝ったことが出来そう。

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:30:29 ID:V4O1Kqdz0]
タスクバーの上からGUIを貼り付けていろいろ改造してるのですが、
現在のテーマがLunaかClassicかを判別する、ウマイ方法はないでしょうか?

現状、タスクバーの太さ(高さ)で判別していて一見うまくいってたのですが、
「タスクバーを固定する」をONにしている環境だと、LunaでもClassicでも
高さが22で同じになってしまい、判別できなくなってしまいました。

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:44:30 ID:tK7xHrIL0]
questionbox.jp.msn.com/qa3095644.html

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 02:57:12 ID:V4O1Kqdz0]
即レス感謝!おかげさまで解決できました

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 17:58:20 ID:8PsslnK50]
WheelScroll.ahk の作者さん、ここ見ていらっしゃいますか?
マルチモニタサブモニタ側 (座標がマイナス値) でホイールが利かないようなのですが、どこを直せばいいものやら…
ヒントをいただければ幸いです。

AHK 1.0.48
Vista SP1
ロジクールのマウスドライバ SetPoint 4.60.122 を併用

810 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 19:34:18 ID:ui+UUCsN0]
>>809
どもです。一応座標値0,0基準での決め打ち動作などはさせていないはずなんですが
WheelRedirect()内の
CoordMode,Mouse,Screen
MouseGetPos,mx,my,hwnd,ctrl,3
で取ってるマウス座標値が怪しい気がします。これが正しくマイナス値でとれてない場合
GetScrollBarHwnd()での座標比較でこけてる可能性があります。

1.スクリプト殺したノーマルの状態で通常のホイールが効いているか
2.ToolTip,mx=%mx% my=%my% とか追加して値がマイナス値になってるかどうか
3.互換モード(WM_SCROLL)で動かした場合も動かないのか
4.管理人さんのホイールリダイレクト で正常に動くかどうか
 lukewarm.s101.xrea.com/myscripts/WheelRedirect.zip

あたりを調べてみてください。
ちなみにサブモニタは左と上のどちらでしょうか?


あー、もう一週間くらい風邪が治んない。頭痛すぎてモノ考えられないっす
GW前に医者行っとけば良かったわ

811 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 20:52:47 ID:8PsslnK50]
>>810
早速のご返信ありがとうございます。
実はマルチモニタは勤務先のマシンなので連休明けまで確認できません。
調べがつき次第、またここで報告させていただきます。
ちなみにサブモニタは左です。

風とのこと、どうぞお大事になさってください。インフルじゃありませんように。。。。



812 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/02(土) 21:55:34 ID:17i2D6iq0]
A_EventInfo 分だけ WM_MOUSEWHEEL を Post してるけど、
wParamの上位ワードを ±120*A_EventInfo にしてもいいんじゃないかと思う






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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