5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

AutoHotkey スレッド part6

1 :名無しさん@お腹いっぱい。:2008/08/19(火) 16:14:11 ID:MeIIkzyf0
■公式
http://www.autohotkey.com/

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

■過去スレ
1 http://pc7.2ch.net/test/read.cgi/software/1098531338/
2 http://pc7.2ch.net/test/read.cgi/software/1129836713/
3 http://pc11.2ch.net/test/read.cgi/software/1157043396/
4 http://pc11.2ch.net/test/read.cgi/software/1184556627/
5 http://pc11.2ch.net/test/read.cgi/software/1201502896/

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

2 :名無しさん@お腹いっぱい。:2008/08/19(火) 16:15:12 ID:MeIIkzyf0
■関連記事のあるサイト

AutoHotkey メモ - Principia
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
AutoHotKey - notitle.txt
http://kan.s151.xrea.com/?AutoHotKey
なまず日記
http://www.tierra.ne.jp/~aki/diary/
eamatの日記
http://d.hatena.ne.jp/eamat/
おばけ日記
http://d.hatena.ne.jp/obake/

1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/
ACConsole
http://www.autohotkey.com/forum/topic7831.html

※ 404のリンクをを外した

3 :名無しさん@お腹いっぱい。:2008/08/19(火) 16:16:20 ID:MeIIkzyf0
FAQ
Q:CapsLock(英数)キーの割り当てがうまくいかないよ
A:日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。
  OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように
  ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。
  対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13〜F24など)に割り当ててから
  AHKで利用すべし。

Q:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
A:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。
  対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、
  #EscapeCharでエスケープ文字を別のものに変えるべし。

4 :名無しさん@お腹いっぱい。:2008/08/19(火) 16:18:07 ID:MeIIkzyf0
Q:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ
  (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など
A:Remap機能は記述が簡単になる反面、細かい指定がしにくい。
  流行らせるページのHotkeys, キーリスト, リファレンス→Send, #IfWinActive, GetKeyState()なども参照すること。
  なお、例の場合は以下のように記述する。
  sc07B & I:: Send, {Blind}{Up}
  sc07B & K:: Send, {Blind}{Down}
  sc07B & J:: Send, {Blind}{Left}
  sc07B & L:: Send, {Blind}{Right}



5 :名無しさん@お腹いっぱい。:2008/08/19(火) 16:19:17 ID:MeIIkzyf0
ttp://pc11.2ch.net/test/read.cgi/software/1201502896/953
> 953 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/13(水) 19:51:48 ID:5xF6GluX0
> フォーラム見てたらこんなの発見した。
>
> AutoHotkey_L
> ttp://www.autohotkey.com/forum/viewtopic.php?t=34070
>
> 有志のカスタマイズ版みたい。
>
> 個人的には #if expression と while の実装が大当たり。
> AutoHotkeySC.binもあるからexe化も問題なかったし。
> ToDo見たら「Full unicode build.」とかもあった。
> あんま時間取れないって書いてるから、期待しすぎは良くなさそうだけど。

6 :名無しさん@お腹いっぱい。:2008/08/19(火) 23:38:53 ID:OMjJ4d2Q0
前スレでのウィンドウサイズの件、有難う御座いました。
例を頂いた方法で各種ソフトに仕込んだのですが、
該当ソフトを複数起動中は、AutoHotkeyのプロセスも
その分多くなります。Returnのコマンドで最初の行に
戻っていると思うのですが、サイズを合わせたいのは
初回起動時だけなので、Returnを消してしまっても
問題は無いでしょうか、度々申し訳御座いませんが
宜しくお願いします。


Run,firefox.exe
WinWaitActive,Mozilla Firefox
WinMove, A, , 40, 100, 1200, 900
Return

7 :名無しさん@お腹いっぱい。:2008/08/20(水) 01:03:54 ID:9zWtvbkW0
個別のスクリプトにしたんなら
ExitAppで終わって結構だよ

常駐のに書いたならReturnがいる

8 :名無しさん@お腹いっぱい。:2008/08/20(水) 01:21:34 ID:GhTCM1K80
>>7
有難う御座いました感謝致します。

9 :名無しさん@お腹いっぱい。:2008/08/20(水) 01:40:54 ID:+Ox3RcU20
>>1
おつです。

10 :名無しさん@お腹いっぱい。:2008/08/20(水) 07:25:08 ID:ImWF34/SO
なぜか突然autohotkey.exeが消えちまった。同じフォルダの他のファイルは残ってるんだけど…。
他のPCにインスコされたautohotkey.exeをそのままコピーしても大丈夫かな?

11 :名無しさん@お腹いっぱい。:2008/08/20(水) 07:54:35 ID:R33YOefR0
>>10
大丈夫だと思うけど、ウィルス対策ソフトが勘違いして隔離したんだとしたら、
除外ソフトに設定するなりしないとコピーしてもまた消える可能性が。

12 :名無しさん@お腹いっぱい。:2008/08/20(水) 08:15:25 ID:ImWF34/SO
>>11
あんがと。俺もそれは疑った。嫁が使ってる間にウイルス駆除来たのかと。まだログはチェックしてないけど…。
ウイルス対策ソフトはノートン360なんだけど、これもAHKもずっと使ってるからなぁ。
新たにウイルス認定されたのかな。w

13 :名無しさん@お腹いっぱい。:2008/08/20(水) 14:37:29 ID:iu65xIpb0
exe化したのがウィルス認定ってよく聞くけど、本体ってどうなんだろね。

14 :名無しさん@お腹いっぱい。:2008/08/21(木) 02:39:58 ID:iai+N5Bt0
下のフォルダにあるんじゃないの?

15 :名無しさん@お腹いっぱい。:2008/08/21(木) 14:39:21 ID:VNNeXFWl0
単純にexeを起動したらctrl+shift+→をキー送信して、即終了させたいんですが、
Send, {^+Right}
Exit
これじゃダメみたいです・・・
リファレンスの説明がよく分かっていないので、ご教授いただけないでしょうか。

16 :名無しさん@お腹いっぱい。:2008/08/21(木) 14:45:45 ID:iai+N5Bt0
うりゃー
Send, ^+{Right}

17 :名無しさん@お腹いっぱい。:2008/08/21(木) 14:47:08 ID:VNNeXFWl0
>>16
ありがとうございました!助かりました!

18 :名無しさん@お腹いっぱい。:2008/08/22(金) 15:06:48 ID:+8tccZ8F0
お世話になります。

 MsgBox, 引数は%0%個です 引数1は%1%です 引数2は%2%です 引数3は%3%です
 if ( %0% = 3 ) {
  MsgBox, 引数は3個です
 } else {
  MsgBox, 引数は3個ではありません
 }

上記スクリプトを引数3つ(A1、A2、A3)で実行してみたのですが、実行結果が

 1回目のメッセージ → 引数は3個です 引数1はA1です 引数2はA2です 引数3はA3です
 2回目のメッセージ → 引数は3個ではありません


となり、IF文による分岐が期待した通りに動作してくれず悩んでおります。
試しに if ( %0% == 3 ) と書き換えてもみたのですがやはり結果は同じでした。

ここのif文をどう記述するべきか、識者の方々のご教示をお願いいたします。

19 :名無しさん@お腹いっぱい。:2008/08/22(金) 15:37:58 ID:kw28BRJz0
if (3 = %0%)

20 :18:2008/08/22(金) 16:44:47 ID:+8tccZ8F0
>>19
お手数お掛けいたします。

 if (3 = %0%) {
  MsgBox, 引数は3個です
 } else {
  MsgBox, 引数は3個ではありません
 }

ご指示の通り、条件式の右辺と左辺を交換してみたのですが
メッセージは>>18と変わらずでした…


全発言でバージョン表記が漏れていましたので追記いたします。
AutoHotKey.exeはv1.0.47.06
OSはXP/SP3とVista(Business)/SP1の2台で試しております。

21 :名無しさん@お腹いっぱい。:2008/08/22(金) 17:02:16 ID:EWM7CurX0
( 0 = 3)じゃないかな?試してないけど。
紛らわしいから,%0%を%aaa%とかにして(aaa = 3)にしたほうが。

22 :名無しさん@お腹いっぱい。:2008/08/22(金) 17:03:41 ID:EWM7CurX0
それか、(%0% = %3%)にすればいいか、どっちにしても紛らわしい。
できなかったら、死にたくなるほど恥ずかしい。

23 :名無しさん@お腹いっぱい。:2008/08/22(金) 17:25:44 ID:+8tccZ8F0
>>21

 aaa = %0%
 If ( aaa = 3 ) {

ご高察の通り、引数の総数%0%を一度別変数に格納することで
意図した結果となりました。

これでやっと次の段階に進めます、本当にありがとうございました。

24 :名無しさん@お腹いっぱい。:2008/08/22(金) 18:03:46 ID:dfQyG1Nf0
理由があってそうしているのかもしれないが
括弧を外せばすんなり行くと思うけど

If 0 = 3

25 :名無しさん@お腹いっぱい。:2008/08/22(金) 20:50:14 ID:cmtVf9NB0
つか、バッチ系の仕様を引きずり過ぎ。
どっちにしろ、バッチファイルをそのまま動かすことは出来ないし

配列は添え字形式にしてほしいなぁ。 args[0], args[1], ...
ハッシュも欲しいなぁ



26 :名無しさん@お腹いっぱい。:2008/08/23(土) 04:15:49 ID:OtRj+T1G0
式の中だと、%X%から展開されたものが数字の場合でも変数として扱うから上手くいかないみたいだな。
aaa=123
123=888
msgbox, % %aaa%
msgbox, % 123

結果、888に続いて123が表示される


コマンドライン引数3で
msgbox, % %0%
の場合、最終的に
msgbox, % 3
と展開されて、変数3に入っている3番目のコマンドライン引数が表示される。

括弧付きif文の場合も論理的な式として扱われる為上手くいかない。

27 :12:2008/08/23(土) 21:05:49 ID:KOBFnm+zO
やっぱノートンに捕まってた。
何やら実験的駆除ってな感じで、ウイルスの疑いがあるのでシマンテックヘ報告すべきファイルらしい。
別に新しいスクリプトを走らせた訳でもないのになんで急に…。
会社のPCでもAHK入れてるのだが、ウイルス対策ソフトは情報部門で集中管理されてるので、ウイルスとして弾かれると騒ぎになりそう…アンインストールするかな。しかしAHK無いと恐ろしく仕事の効率落ちるんだよなぁ…。

28 :名無しさん@お腹いっぱい。:2008/08/23(土) 22:53:00 ID:3HFkQZM50
ノートンってウイルスの疑いがあるのを勝手に削除したり隔離するの?
アクセス制限でも十分だと思うんだけど。
tiddlywikiを勝手に削除して大騒ぎになったりしたな。

29 :名無しさん@お腹いっぱい。:2008/08/23(土) 23:27:22 ID:crT/eTz90
ノートン起動したら自分を消し去ったので、それ以来使ってないな

30 :名無しさん@お腹いっぱい。:2008/08/23(土) 23:56:28 ID:b+ArHwRp0
ん〜、シマンテックに ウィルス or スパイウェア 認定されたとしたらめんどいな。

キーロガーっていえばそうだし・・・
管理者権限が無くてもインストールして使える数少ないユーティリティなんだが

31 :名無しさん@お腹いっぱい。:2008/08/24(日) 00:02:12 ID:Q3oc1gjx0
ClamWinだとAutoHotkeySC.binがトロイ判定された。

32 :名無しさん@お腹いっぱい。:2008/08/24(日) 00:47:41 ID:3XyMhCS20
ノートンが新しいスクリプト作ってくれればよくね?
変なこと徹底して出来ないやつw

33 :名無しさん@お腹いっぱい。:2008/08/24(日) 06:27:31 ID:ZbLgZps3O
>>28
いや。確認のダイヤログは出るはず。
嫁がPC使ってる時に出て、テキトーにOKしたっぽい。

34 :名無しさん@お腹いっぱい。:2008/08/24(日) 11:25:15 ID:02kD/Q/i0
>>33
うちのPC二台も時間差でAutoHotkey.exeが消えた。
17日〜20日辺りで削除されたらしい。
NIS2008が今月頭からサンプル提出や統計提出したとログにあるが、
削除に関しては、確認ダイアログも出ないし、ログにも無いし、検疫にも残っていない。

35 :名無しさん@お腹いっぱい。:2008/08/24(日) 12:00:23 ID:zyOoYK2u0
>>34
うちのが消されたのは18日だったな。
ちなみにノートンはノートン360でログには残っていた。

しかし、1台のPC(XP)では消えたが、同じノートンを入れてるもう1台(Vista)では今のところ、消えたり
AutoHotkey.exeやばいよ警告は出ていない模様。

まじで会社が使ってるセキュリティソフトにウイルス認定されたりすると厄介すぎる。orz

36 :名無しさん@お腹いっぱい。:2008/08/24(日) 12:45:22 ID:TjVBjOnP0
もしかしてこれ.exe化したスクリプトも認定されちゃうの?

37 :名無しさん@お腹いっぱい。:2008/08/24(日) 12:49:59 ID:ZbLgZps3O
>>36
そっちの方は既に前から認定されてるって。w

38 :名無しさん@お腹いっぱい。:2008/08/24(日) 13:59:16 ID:/lnnayMj0
NISつかってるけどLiveupdate施行後スキャンしても何ともない。

ver. 1.0.47.04 だったんで公式から最新(?)の ver. 1.0.47.06にしたけど
認定はされてない。

NIS / NAV 系と 360 とはエンジン違うのか?

39 :36:2008/08/24(日) 14:01:30 ID:/lnnayMj0
ちなみに XP SP3

40 :38:2008/08/24(日) 14:02:22 ID:/lnnayMj0
すまん・・・
>>39レス番号間違い・・・ >>38

41 :名無しさん@お腹いっぱい。:2008/08/24(日) 14:44:08 ID:mt7+CO6y0
AutoHotkey.exeそのものが悪いんじゃなしに、
スクリプト側が適合して、そのあおりを受けてexeが消えてるって格好?

42 :名無しさん@お腹いっぱい。:2008/08/24(日) 14:52:52 ID:zyOoYK2u0
>>41
そんな感じだと思うのだが、新しいスクリプトなんか最近走らせてないのにノートンに
捕まった。
(使ってるのはMousegesture.ahkと、キーの置き換えやウインドウ操作をさせてるahkだ
け。ずっと前から使ってる。)

シマンテックのページで検索してもautohotkeyではヒットしないね。
ググっても、コンパイルしたやつが駆除されたって話はちょくちょく出てくるが、本体が
駆除されたって話は出てこない。

もう1台のPCでは同じノートンでも駆除されてないし、駆除したのを元に戻したら駆除
された時のログも一緒に消えちゃったので、しばらく様子見ます。

43 :名無しさん@お腹いっぱい。:2008/08/24(日) 15:26:59 ID:3XyMhCS20
FileDeleteでちょっと間違えれば怒涛の消去ってこともありうるからなあ


44 :名無しさん@お腹いっぱい。:2008/08/24(日) 16:10:00 ID:BNQ0vSRK0
>>43
それいったらLinuxとかのコマンドだって危険極まりないけどな。
find . hoge -print | xargs rm
うっかり -name を入れ忘れて死ぬ思いをした新人の頃の苦い記憶。

45 :名無しさん@お腹いっぱい。:2008/08/24(日) 20:59:53 ID:Ha0rvnwd0
rm -r ./ の後に補完しようと C-i 押そうとしたら
手がすべって C-o 押して実行されたことがあるよ。

46 :名無しさん@お腹いっぱい。:2008/08/25(月) 12:19:44 ID:FBiiXJM+0
アクティブウィンドウの実行ファイルがあるフォルダ名って取得できます?
フルパスでもいいんだけど、WinGetじゃ無理みたいだし。

47 :名無しさん@お腹いっぱい。:2008/08/25(月) 23:01:23 ID:O2etOCIT0
eamatの日記
ttp://d.hatena.ne.jp/eamat/
にあると思う

48 :名無しさん@お腹いっぱい。:2008/08/25(月) 23:22:03 ID:iVqjz6P/0
ttp://d.hatena.ne.jp/eamat/20050826 の一番下

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

49 :名無しさん@お腹いっぱい。:2008/08/26(火) 01:58:55 ID:c7o+fMZB0
>>47>>48
おおっ、d。
Dllを使うのか。レベルが違ったorz
使い道は、ブラウザとかを再起動させるだけなんだけどね。
ショートカット作って誤魔化して使ってたけど、楽になった。

50 :名無しさん@お腹いっぱい。:2008/08/27(水) 03:04:18 ID:mO8ATr+W0
loop内で変数を使って、ラベルを定義なんてことできませんか?
Menu命令で飛ばす先のラベルを全部普通に書くと、膨大な数になりそうなので…

51 :名無しさん@お腹いっぱい。:2008/08/27(水) 08:07:26 ID:Eiw7Fgn40
全部同じラベルに飛ばして
%A_ThisMenuItem%で分岐するとか?

52 :名無しさん@お腹いっぱい。:2008/08/27(水) 08:45:34 ID:EFQQjMH30
guiの drop down list をリフレッシュする方法について質問です。

初期設定
 Gui, 1:Add, DropDownList ,vdropdown 〜〜〜
 Guicontrol, 1:,dropdown,|a|b|c|

 まずこれで「abc」が選択できるドロップダウンが出ます。
 ↓このあと「abc」は破棄して、新規の「def」をドロップダウンリストで選びたい

 Guicontrol, 1:,dropdown,|d|e|f|

ところがこの方法だと「def」ではなく、最初の情報と合成されて「abcdef」となってしまいます。

GUIをDestroyしないで、最初に設定した「abc」を破棄するには、
どのように書けばよいでしょうか。

(参考) はやらせるページ「Gui,Add,DropDownList」
http://lukewarm.s101.xrea.com/commands/Gui_Add_DropDownList.html

53 :名無しさん@お腹いっぱい。:2008/08/27(水) 10:03:02 ID:3gDy75HS0
>>50
よくわからんがこういうことか?

buf := "lblA,lblB,lblC,lblD"
Loop,Parse,buf,CSV
{
Menu,MenuTest,Add,Item%A_Index%,%A_LoopField%
}

54 :名無しさん@お腹いっぱい。:2008/08/27(水) 16:58:37 ID:w0UvIR6u0
タスクトレイアイコンをダブルクリックしたときの動作を決めることができますが、
シングルクリックの動作を決めることはできないのでしょうか?

55 :50:2008/08/27(水) 17:29:06 ID:mO8ATr+W0
>>51
組み込み変数ですか、思いつきませんでした。
これを使うとできそうです。

>>53
いえ、メニュー項目を増やすには、必ずラベルを指定しないといけませんよね。なので

Loop,Parse,buf,CSV
{
sample%A_Index%,:
ここに処理
return
}

みたいな感じで、ラベルを定義できないかと思ったわけで…。

作りたいのはフリーソフトのCLCLでいうところの、定型文貼り付け機能なんですが
(テキストファイルから文字を読み込んでSend,^vでペーストさせてます)
定型文を増やすたびにMenu項目を増やして…とAHKを変更しているのですが面倒で
もっとスマートにできないかなと思いまして。

56 :名無しさん@お腹いっぱい。:2008/08/27(水) 18:12:58 ID:khLSgUoi0
方針は>>51でいいとして。

A_ThisMenuItemPos
> A_ThisMenuItemのアイテムがA_ThisMenu内で何番目にあったかを格納する。

がいいんじゃないのかぇ。
行番号 と メニュー番号が一致( or 一定の差分)であればいいわけだし。



57 :名無しさん@お腹いっぱい。:2008/08/27(水) 18:14:20 ID:hR4WOXx30
>>54
押す→離すを連続実行で

58 :名無しさん@お腹いっぱい。:2008/08/27(水) 18:26:58 ID:Eiw7Fgn40
それなら
Menu, Hoge, Add, %A_LoopReadLine%, Paste

Paste:
{
ClipBoard=%A_ThisMenuItem%
Send, ^v
Return
}

こんな雛形でいけると思うけど
改行付きとかは一工夫いるかもしれん

59 :名無しさん@お腹いっぱい。:2008/08/27(水) 23:31:52 ID:aBNQX51P0
右手にマウスでウェブブラウザ、
左手にジョイパッドでフライトシミューレータをする事はできますか?
ジョイパッドのボタンはSendControlで出来ましたが
左スティックは遅れないのでしょうか?

できるならJoyキーまとめてフライトシミュに送る方法ありませんか?

60 :54:2008/08/28(木) 01:56:03 ID:9SRkN2S60
>>57
それはどういうふうに書けばいいのでしょうか?

61 :名無しさん@お腹いっぱい。:2008/08/28(木) 02:23:40 ID:yND9S2R20
>>60
俺はこれでやってるけど、どう?

menu, tray, Click,1 ;クリック1回でAHKメニューを出す
menu, tray, add, TMenu
menu, tray, Default,TMenu

TMenu:
GUIコマンドでmenu,addして、やりたいことを書く

62 :名無しさん@お腹いっぱい。:2008/08/28(木) 02:29:54 ID:9SRkN2S60
>>61
できました。
ありがとうございました。

63 :名無しさん@お腹いっぱい。:2008/08/28(木) 02:58:40 ID:yND9S2R20
それはよかった。

でも、なんでこれで動くのか、俺自身もよくわかってない。

1行目の「menu, tray, Click,1」は、本来AHKメニューを出す意味だと
思うのだけど、入れないと2度クリックしないと動かない標準設定のままで、
入れるとなぜかデフォルトに設定したラベルに飛ぶ動作になる。

64 :名無しさん@お腹いっぱい。:2008/08/28(木) 05:13:40 ID:vy9ArbEE0
Helpの方だと
Click, ClickCount: Specify 1 for ClickCount to allow a single-click to activate the tray menu's default menu item.
Specify 2 for ClickCount to return to the default behavior (double-click).
For example: Menu, Tray, Click, 1
ってなってるね

65 :50:2008/08/28(木) 05:27:39 ID:ygRBrGlN0
>>56
そんな組み込み変数もあったのですね。目から鱗です。
スクリプトがグッとスリムになりそうです。

>>58
サンプルありがとうございます。
複数行の需要はないのですが、数が増えてくると選ぶのも大変なので
メニューの階層化についても考えてみます。

66 :名無しさん@お腹いっぱい。:2008/08/28(木) 15:58:03 ID:ygRBrGlN0
皆さんはメニューの[ファイル][編集][表示]…みたいなメニューを選択させる時って
どうされてます?自分はIME OFF→ALTキー+英文字をSendしてるんですけど
たまにIME OFFにならなかったり、処理が追いつかず、実行されなかったりします。

もっと良い方法はないでしょうか?

67 :名無しさん@お腹いっぱい。:2008/08/28(木) 16:20:30 ID:nF+EeC4z0
WinMenuSelectItem

68 :名無しさん@お腹いっぱい。:2008/08/28(木) 17:12:48 ID:ygRBrGlN0
>>67
ぐはっ、自分の目ってばどんなに節穴…
本当にありがとうございます。

69 :名無しさん@お腹いっぱい。:2008/08/28(木) 21:12:13 ID:f9/6NyDA0
ものによってはWinMenuSelect聞かないときがあるので、そういうときはSendMessageするのもあり

70 :名無しさん@お腹いっぱい。:2008/08/28(木) 23:29:30 ID:fwnJvubn0
いまネットワーク接続のncpa.cpl見てるんだけどWinMenuSelectItem効かないし
リソースハカーで見てもツリーにmenuがないしでこういうのはどうすれば・・・

71 :名無しさん@お腹いっぱい。:2008/08/29(金) 07:29:57 ID:oJfCg6oG0
せっかく教えてもらったんですけど、WinMenuSelectItem使えませんでした。
仕方ないのでClick命令に変えましたが、Windowsクラシック表示のパソコンだとY座標がズレそうで怖いです。。

72 :名無しさん@お腹いっぱい。:2008/08/29(金) 07:53:55 ID:K7HTZw/00
>>71
WinMenuSelectItem
>PostMessageでWM_COMMANDを使用するかControlSendでショートカットキーを送ることで代用できる。
PostMessage/SendMessage関連-WM_COMMANDのコマンド番号を調べる
>これらの方法では、ツールバーにしか割り当てられていないコマンドIDを調べることは出来ない。
>そこで、ツールバーボタンのコマンドIDを調べるスクリプトを作成した。
>標準的なツールバーであれば、ボタン番号に対応するコマンドIDを調べることができるはずである。

73 :名無しさん@お腹いっぱい。:2008/08/29(金) 10:06:34 ID:WqXy2vYq0
スクロールバーのつまみをドラッグする機能を割り当てることって出来るのでしょうか?

具体的には、Win+Altとマウスの上下で、アクティブウィンドウのスクロールバーのつまみの上下ドラッグを再現したいのです。

74 :名無しさん@お腹いっぱい。:2008/08/29(金) 10:40:29 ID:TtQc3bgD0
>>73
http://pc11.2ch.net/test/read.cgi/software/1201502896/963-972

75 :名無しさん@お腹いっぱい。:2008/08/29(金) 11:04:33 ID:WqXy2vYq0
>>74
分かりづらくてすいません。
確かに前スレのものと似ているのですが
スクロール機能といよりは、スクロールバーのつまみをドラッグするという動作自体を割り当てることが出来るのかなと思いまして。

76 :名無しさん@お腹いっぱい。:2008/08/29(金) 11:13:26 ID:K7HTZw/00
AHKのコマンドひとつで、それをやるのは無理

77 :名無しさん@お腹いっぱい。:2008/08/29(金) 11:44:13 ID:WqXy2vYq0
>>76
そうなんですか。何かフリーソフト探してみます。

78 :名無しさん@お腹いっぱい。:2008/08/29(金) 13:57:39 ID:wFpCH8Fe0
その発想はなかったわ

79 :名無しさん@お腹いっぱい。:2008/08/29(金) 14:30:52 ID:TtQc3bgD0
>>75
いや分かってたが、マウスを使わないでドラッグってどうやって実現すんの?
それに無理にそうしたところで得られる結果は結局スクロール動作な気がするんだが

80 :名無しさん@お腹いっぱい。:2008/08/29(金) 14:52:39 ID:oJfCg6oG0
>>72
はい、私もリソースハッカーや、窓コン、管理人さんのスクリプトで調べようとしたのですが
コマンドIDが拾えないのです。KompoZerっていうMozilla系列のソフトなんですが…。

ALT押して照準がメニューに移るのが、標準的なメニューってことなのですかね〜?

81 :名無しさん@お腹いっぱい。:2008/08/29(金) 15:14:09 ID:tA+ABLx70
むりやり考えてみた。

・Win+Alt+下or上 が押されたら マウスのXY座標をpushする
・画面内スキャンコマンドを使い、該当ウインドウから、灰色の縦長バーをみつける
 (スクロールバーの大きさ変化対策のため、細い状態で発見できる素材にする)
・そこの場所でLClickを押しっぱなし
・1ドットマウスカーソルをずらす
・Win+Alt+下 あるいは上 が押されつづけたら1つ上を繰り返す 離されたらLClick上へ
・マウスのXY座標をpopし、カーソルを元の場所に戻す

これでどうだ。

82 :名無しさん@お腹いっぱい。:2008/08/29(金) 15:15:09 ID:tA+ABLx70
↑は>>73へのレスね

83 :名無しさん@お腹いっぱい。:2008/08/29(金) 18:14:09 ID:WqXy2vYq0
>>79
そうですか、リンク以外のコメントがなかったので分かりませんでした。
ただ、分かっていないようなので書きますと、ドラッグの代わりにマウスを上下に動かすことで出来
たらなと思ったのです。ウィンドウの右端にカーソルを合わせる手間をなくせればなあと。

スクロールバーのつまみによるスクロールが、通常のホイールとかのスクロールよりいいと思う点は、
スクロール先の位置がおおよそ分かっていると、マウスを少し動かしただけでだいたい目的の場所ま
で行けることです。

>>81
なるほど、画面内スキャンコマンドというのがあるんですね。
ちょっと難しそうですが、調べてみます。

84 :名無しさん@お腹いっぱい。:2008/08/29(金) 19:01:41 ID:TtQc3bgD0
>分かっていないようなので書きますと、
いや、ていうかね。それってマウスカーソル位置がスクロールバーにない状態でってことでしょ
目視できない状態でそれやっても「どの位動かしたか」って感覚的にわからないし
混乱するだけじゃね?ってことが言いたかったんだが。

まぁ 81みたいにマウスカーソルごとスクロールバーにワープさせるんならわかるけど。

85 :名無しさん@お腹いっぱい。:2008/08/29(金) 19:27:39 ID:WqXy2vYq0
>>84
もし実現できたらの話ですが、マウスの動きに連動してスクロールバーのつまみも上下する訳なので、
視覚的にも、感覚的にもわかりやすいと思うのですが。個人的にはつまみドラッグの感覚と同じ感覚で
出来るのではないかと考えています。
ちょっと実際にやってみないと想像しにくいコトではありますよね。

86 :名無しさん@お腹いっぱい。:2008/08/29(金) 21:48:57 ID:lk4amwZL0
>>85
TrackScrollで検索してみて。
カーソルの移動量でスクロールするソフトだよ。
似たような動作はすると思うから試してみればいいよ。
俺はAHKで書いたやつ使ってるけど。

87 :名無しさん@お腹いっぱい。:2008/08/30(土) 08:43:22 ID:0TNi21VaO
>>83
単純に、なんかキー押してる間、カーソルがスクロールバーのつまみの上に飛んで左クリック保持状態になるようにし、キーを離したらカーソルが元の位置に戻る様にしたらいいんじゃない?

88 :名無しさん@お腹いっぱい。:2008/08/30(土) 09:32:05 ID:3UxG59qX0
>俺はAHKで書いたやつ使ってるけど。( ´_ゝ`)

89 :名無しさん@お腹いっぱい。:2008/08/30(土) 09:49:01 ID:H8XfbhZm0
>>86
TTBaseのdragscrollみたいな感じだね。あれはデフォルトでマウス中ボタンだけど。
それをAHKでやるってことね

90 :名無しさん@お腹いっぱい。:2008/08/30(土) 10:02:27 ID:01kSQGWt0
>>86
マウスの移動量に合わせてWM_V(H)SCROLL投げてるっっぽいな
まぁ厳密に つまみドラッグエミュしてるわけではないと思う

91 :名無しさん@お腹いっぱい。:2008/08/30(土) 17:02:33 ID:fRFF7BSV0
初歩的な説明なんですが、FileAppendって追記しかできませんよね?
テキストファイルの中を全部書き換える場合には、一度ファイル自体を
FileDeleteで消して、FileAppendで保存し直すって形が普通なんでしょうか?

92 :名無しさん@お腹いっぱい。:2008/08/30(土) 17:29:35 ID:fRFF7BSV0
FileReadで変数を読み込むと、文字列の形式になるんですが、
これを数値型に変換する方法はありますか?

FileRead,t,wait.txt

t+=100 ←計算できない

Sleep,%t%

93 :名無しさん@お腹いっぱい。:2008/08/30(土) 17:54:35 ID:UzOv1IdX0
出来たけど?

94 :92:2008/08/30(土) 18:03:42 ID:fRFF7BSV0
>>93
ごめんさない、できました orz

95 :72:2008/08/31(日) 00:21:55 ID:3xhGk66Z0
>>80
気になったからやってみたら、ControlSendでできたけど・・・
これでいいんだよね?肝はコントロールのウィンドウハンドル。その取得は適当に変更して。
WinMenuSelectItem
sleep, 1000
;アクティブウィンドウがKompoZerでないなら終了
Winget, aaa, processName,A
if aaa != kompozer.exe
exitapp
;すべてのコントロールのウィンドウハンドルを取得し
;メニューバー等のコントロールのウィンドウハンドルを抜き出す。
Winget, bbb, ControlListHWND,A
stringsplit, bbb, bbb, `n
;msgbox, "%bbb%"`n"%bbb0%"`n"%bbb1%"
return

;WinTitleに「ahk_id %controlHWND%」というように
;コントロールのウィンドウハンドルを指定し、
;Control引数を省略することで、
;ウィンドウハンドルで指定してコントロールを操作
;ex1 File(Alt+F)を押す。
a::Controlsend,, !f,ahk_id %bbb1%
;ex2 ショートカットNew(Ctrl+N)
b::Controlsend,, ^n,ahk_id %bbb1%
;ex3 options
c::
Controlsend,, !t,ahk_id %bbb1%
Controlsend,, o,ahk_id %bbb1%
return

96 :名無しさん@お腹いっぱい。:2008/08/31(日) 00:24:13 ID:3xhGk66Z0
>>95
書き残したw
WinMenuSelectItemはメモ帳ぐらいしか効かないね。
スクリプトはSleeep,1000からね

97 :名無しさん@お腹いっぱい。:2008/08/31(日) 00:58:17 ID:1aJxq1FW0
書き残した?書き忘れただろ

98 :名無しさん@お腹いっぱい。:2008/08/31(日) 01:09:48 ID:3xhGk66Z0
っ!!!!!!!チッ
書き残し忘れたのを、書き残したんだっ
それをあえて過去形のまま倒置して、尚かつ短いセンテンスで強く印象づけようとする高等なレトリックさ
他人のミスの誘い水にならないように
己のミスのフォローとしては世界最高峰だねorz

99 :名無しさん@お腹いっぱい。:2008/08/31(日) 01:21:03 ID:TbCrwmtC0
>>95
ありがとうございます。頂いたサンプル、動作確認しました。
Controlsendは、ウィンドウハンドルを指定すれば全角モードでも操れるんですね〜

ただ、私はかな入力なのですが、ControlSendした後に、なぜか全角英数入力モードに
なったり、ホットキーが2回続けて実行できなかったりと、KompoZerでは予期せぬ動作が
起きるようなので、やはりIMEをオフにして、適度にSleep入れながらAlt+●をSendで送る
方式でいこうと思います。

今回はすごく勉強になりました。ありがとうございました。

100 :名無しさん@お腹いっぱい。:2008/08/31(日) 01:33:00 ID:3xhGk66Z0
>>99
そりゃ残念。なんでだろう?問題ないけど。
AutoHotkeyが最新の1.0.47.06じゃなかったら自分で自分をビンタしてね。

101 :名無しさん@お腹いっぱい。:2008/08/31(日) 01:42:44 ID:TbCrwmtC0
>>100
1.0.47.04って書いてある罠…。ひ、ひぃ。

102 :名無しさん@お腹いっぱい。:2008/08/31(日) 01:46:47 ID:TbCrwmtC0
>>101
そして、頂いたスクリプトの動作率が上がった罠。
ひ、ひぃ〜。

重ね重ねありがとうございます。

103 :名無しさん@お腹いっぱい。:2008/08/31(日) 04:25:18 ID:j3bMHZ9E0
二人の交換日記だな

104 :名無しさん@お腹いっぱい。:2008/09/01(月) 18:55:40 ID:FYAU2Odh0
AutoHotkeyでFTP接続する方法について質問です。
スクリプト自体は、本家から下記のサブルーチン郡をDLし、includeしました。

DllCall: Basic FTP Functions
http://www.autohotkey.com/forum/topic10393-15.html

下記のように修正し、1を押すと「C:\debug.txt」をFTPへアップするようにして実行してみました。
1::
; init internet resources
INetOpen()
; connection to the FTP server
Server=ftp.my_server.com
Port=21
User=abc
Pwd=defg
hFTP = INetConnect(Server, Port, User, Pwd, "ftp")
if(hFTP)
{
Msgbox Connect
if(FtpPutFile(hFTP, "C:\debug.txt"))
Msgbox File uploaded successfuly
else
Msgbox "Upload failed: " %A_LastError%
; close the FTP connection
INetCloseHandle(hFTP)
}
; release internet resources
INetClose()

しかし、一瞬で「connect」までスクリプトが進んでしまい、ネットワークへのアクセスがありません。
当然ファイルのアップも失敗します。どのへんを修正すれば正常に動きますでしょうか。
なお、動作してくれればこれ以外のスクリプトでもかまいません。OSはW2K、AHKは1.0.47.05です。

105 :名無しさん@お腹いっぱい。:2008/09/01(月) 19:15:21 ID:CHfHkOy70
hFTP = INetConnect(Server, Port, User, Pwd, "ftp")

106 :名無しさん@お腹いっぱい。:2008/09/01(月) 19:47:58 ID:dScWvcZ00
カレントウィンドウが変化したことを検知する方法って
Loop or タイマでウィンドハンドルが変化するのを見る以外にある?

OnCurrentWindowChange みたいな感じで使えればいいんだけど。。。

まぁ、ウィンドウ(プロセス)毎に自動で音量を変えたいだけなんだけどね。

107 :名無しさん@お腹いっぱい。:2008/09/01(月) 21:06:46 ID:CHfHkOy70
WinWaitNotActive,A でアクティブウィンドウが変わるのを待つとかは?
イベント発生するわけじゃないからループは必要だけど。
個人的には素直にタイマで回した方が楽だと思う

108 :名無しさん@お腹いっぱい。:2008/09/01(月) 22:16:06 ID:FYAU2Odh0
>>105
なんと!コロンが足りねぇ! できました。

どうやら、サブルーチン集の冒頭に書いてあったサンプルコードが、typoだったようです。
本当に気づかなかったので助かりました。

109 :名無しさん@お腹いっぱい。:2008/09/01(月) 22:18:15 ID:dScWvcZ00
> WinWaitNotActive,A でアクティブウィンドウが変わるのを待つとかは?

それもありか・・・。
以前のウィンドハンドルをグローバル変数で持たなくても良い分スマートかな。

どうせ処理処理の部分は変わらないし、ループでやるかね。
とりあえず、混ぜないで単品で作ろうっと。

110 :名無しさん@お腹いっぱい。:2008/09/02(火) 00:33:55 ID:/S+5n/Va0
一方ロシア人はFaderControllerを使った

111 :名無しさん@お腹いっぱい。:2008/09/02(火) 01:47:48 ID:wcN8Rrss0
ALT + tabの動作をCtrl + pに割り当てたいんだけど
ただ置き換えただけじゃダメだったどうしたらいいか教えてくれ

ALT押しっぱなしのままtabを何回も押したときの動作にならないんだ
二つのウィンドウ行ったりきたりするだけになる

112 :名無しさん@お腹いっぱい。:2008/09/02(火) 02:21:38 ID:pDUOjKlk0
>>111
Help にヒントが載ってる。AltTabのところ。

113 :名無しさん@お腹いっぱい。:2008/09/02(火) 07:56:01 ID:IOpjfeAa0
おれはAlt+Esc割りあててる。

114 :106:2008/09/02(火) 19:14:19 ID:uEGHqjL+0
>>110
じ、自分で作りたかっただけよ。
で、でも、便利だから使ってあげる。

115 :名無しさん@お腹いっぱい。:2008/09/02(火) 20:51:18 ID:uEGHqjL+0
FOON STAZIOの人がんばってね

116 :名無しさん@お腹いっぱい。:2008/09/03(水) 20:29:41 ID:C3VmIvZF0
「ねこぽい」というソフトにあった機能なんだが、

キーボードでウィンドウ動かすのって、どうやるの

117 :名無しさん@お腹いっぱい。:2008/09/03(水) 21:12:13 ID:T3rofzXb0
WinMove

118 :名無しさん@お腹いっぱい。:2008/09/03(水) 22:54:19 ID:KxqtP1gL0
Alt+Space→M

119 :名無しさん@お腹いっぱい。:2008/09/05(金) 00:04:14 ID:HMxpoWOq0
#Persistent

SetTimer,OnTimer,50
return

OnTimer:
Send,{z}
return

でゲームで連打が機能しないのはどこに原因がありますか?
メモ帳だとzがずらずらと打たれるのですが。

120 :名無しさん@お腹いっぱい。:2008/09/05(金) 00:19:32 ID:RreyUO8L0
そのゲームがnProtect使ってるんなら諦めるしかないと思う

121 :名無しさん@お腹いっぱい。:2008/09/05(金) 00:35:59 ID:HMxpoWOq0
ネトゲではない普通の同人ゲームです。
>>119でZキー押し続けると連打機能し始めるんだけど何か挟まないとだめとか?

122 :名無しさん@お腹いっぱい。:2008/09/05(金) 01:00:08 ID:bptgaefT0
>>121
モード変えてみたら?

123 :名無しさん@お腹いっぱい。:2008/09/05(金) 01:18:32 ID:JTB3YtsJ0
Send,{z down}
Sleep,30
Send,{z up}

とかやると動くかもよ。
反応の悪いゲームなんかでこうしてる。

124 :名無しさん@お腹いっぱい。:2008/09/05(金) 05:03:25 ID:JzaLYHHJ0
>>116
TTBaseのプラグインでできるからそっちなら一発でできるよ
俺はWinキー+方向キーにわりあててる
ちなみにウインドウサイズまで変えられる

125 :名無しさん@お腹いっぱい。:2008/09/05(金) 12:54:01 ID:BQ9XqOin0
>>116
#Left::
WinGetPos,x,,,,A
WinMove,A,,x-20
Return

こんなのが過去ログにあった

126 :名無しさん@お腹いっぱい。:2008/09/05(金) 18:01:07 ID:rRYeKPtV0
>>116

http://d.hatena.ne.jp/ajinoya/20080719/1211159932

127 :名無しさん@お腹いっぱい。:2008/09/05(金) 20:26:58 ID:0trH/+/V0
#Left::WinMoveBy(-8,0)
#Right::WinMoveBy(8,0)
#Up::WinMoveBy(0,-8)
#Down::WinMoveBy(0,8)

WinMoveBy(dx, dy)
{
WinGetPos, x, y,,,A
x := x + dx
y := y + dy
WinMove, A,, x, y
}

128 :名無しさん@お腹いっぱい。:2008/09/05(金) 21:04:26 ID:k1aygQpE0
おされだな

129 :名無しさん@お腹いっぱい。:2008/09/06(土) 16:24:13 ID:llNvK9em0
コマンドランチャーのようにブラウザの検索バーが使えれば便利化と思っております。
そこで、ホットキーでSleipnirの検索バーをアクティブにする、というようなことができる、
と聞いたのですが、どのようにすればできるでしょうか?
指針がヒントのようなものはありませんでしょうか?

130 :名無しさん@お腹いっぱい。:2008/09/06(土) 16:30:32 ID:fpdiR2Cr0
Enterと;を入れ替えたいです。が、

;::Enter

がコメントとみなされて失敗します。どうすれば ; をRemapできますか?

Enter::;

なら動くんですが。

131 :名無しさん@お腹いっぱい。:2008/09/06(土) 16:37:41 ID:fpdiR2Cr0
vkBB::Enter
Enter::vkBB
でいけました。

(AutoHotkey)(仮想キーコード(vk) と スキャンコード(sc) を調べたい 編) - もらかなです。
http://d.hatena.ne.jp/morakana/20080214/1202961553

を参考にしました。

132 :名無しさん@お腹いっぱい。:2008/09/06(土) 16:38:07 ID:WFdyuMk40
traytipでバルーンを表示させることが出来ますよね。

http://lukewarm.s101.xrea.com/commands/TrayTip.html

このバルーンの表示中、ユーザがバルーンをクリックすると消えます。

このとき、ユーザがバルーンをクリックして閉じた場合、
「バルーンをクリックして閉じられた」ことを検知する方法またはコマンドはありますか?

133 :名無しさん@お腹いっぱい。:2008/09/06(土) 17:36:08 ID:QwxFsmAj0
バルーンと同じ「見た目」「挙動」のGUIを作り、
閉じるイベントのみをオーバーライドして独自の処理を噛ませる

134 :名無しさん@お腹いっぱい。:2008/09/06(土) 17:41:12 ID:b6jDQwTh0
>>129
やりたいことがイマイチ分からんけど、ぷにるがアクティブなら、Alt+Sで検索バーにフォーカスするよ。

135 :名無しさん@お腹いっぱい。:2008/09/06(土) 17:55:05 ID:QwxFsmAj0
ん〜、>>133じゃ芸がないな

誤爆の危険があるけど、一応動く

#Persistent
TrayTip, ほげほげ, ふがふが, 10
WinWaitClose, ahk_class tooltips_class32
MsgBox, 閉じた

136 :名無しさん@お腹いっぱい。:2008/09/06(土) 18:03:23 ID:WFdyuMk40
ありがとうございます。その方法で切り抜けられそうです。

137 :名無しさん@お腹いっぱい。:2008/09/06(土) 18:03:36 ID:llNvK9em0
>>134
サンクス。たぶんやりたいことは、
ホットキー押下→Sleipnirアクティブ→検索バーアクティブ(Alt+s)
でできそう。
ちょっとがんばってみるっす

138 :129:2008/09/06(土) 18:19:01 ID:llNvK9em0
>>134
これでいけた!やってみると以外に簡単でびっくり。

; active Sleipnir 2 at search bar
+^!g::
  WinActivate ahk_class SleipnirMainWindow
  Send, !s
return

139 :名無しさん@お腹いっぱい。:2008/09/06(土) 18:24:08 ID:7jshRuMG0
#n:: WinMinimize, A
と書いておいて
別にVirtualDimensionのMinimize to trayオプションで
最小化時にタスクトレイに入れる設定をしているのですが、
Win+Nではトレイに入らず普通に最小化されます。
最小化ボタンを押せばトレイに最小化されます。
Win+Nでもトレイに入るようにできますか?

140 :129:2008/09/06(土) 18:28:32 ID:llNvK9em0
応用で検索バーをアクティブにした時にあらかじめ、文字列を入れておきたいのですが、
Send, hoge とかでできるのですが、
IMEが起動していると全角を入力しようとします。
IME無視して、文字をペーストか、もしくはIME解除して文字入力はできないでしょうか?

141 :名無しさん@お腹いっぱい。:2008/09/06(土) 18:43:15 ID:b6jDQwTh0
クリップボードを汚してしまうけど、clipboard使って^vするとか。
http://lukewarm.s101.xrea.com/misc/Clipboard.html

142 :129:2008/09/06(土) 19:04:19 ID:llNvK9em0
sadat-studio.net - ダウンロード
http://sadat-studio.net/modules/mydownloads/viewcat.php?cid=3

こちらのIME制御スクリプトでIMEをオフにしてやってみました。
以下の例では、Sleipnir2の検索バーをアクティブにして、"mb "という文字列を挿入します

#include ime_func.ahk

; search my bookmark on Sleipnir 2 at search bar
+^!b::
  WinActivate ahk_class SleipnirMainWindow
  Send, !s
  Sleep, 100
  IME_OFF("A")
  Send, mb{Space}
return


>>141
ありがとう。クリップボードを使う手もあるんですね。

143 :名無しさん@お腹いっぱい。:2008/09/06(土) 21:06:14 ID:kldcLI7p0
なんか一昔前の自分を見てるようだ
一応、参考になりそうなの晒しとく

#Include D:\AutoHotkey\IME_Func.ahk
paraLen = %0%
If paraLen = 0
{
InputBox, sword, Web Search - 検索語句を入れてください。, , , 320, 90
If ErrorLevel <> 0
return
}
else
{
Loop, %paraLen%
{
buf := %a_index%
sword = %sword% %buf%
}
}
IfWinNotExist, ahk_class Sylera gecko tab browser
Run, D:\Bin\Sylera\sylera.exe
WinWait, ahk_class Sylera gecko tab browser
IME_OFF("ahk_class Sylera gecko tab browser")
SendMessage, 0, 204, 0, , ahk_class Sylera gecko tab browser
ControlSetText, Edit5, %sword%, ahk_class Sylera gecko tab browser
SendMessage, 0, 205, 0, , ahk_class Sylera gecko tab browser
ControlSend, Combobox3, {1}, ahk_class Sylera gecko tab browser
ControlSend, Combobox3, {Enter}, ahk_class Sylera gecko tab browser
SendMessage, 0, 207, 0, , ahk_class Sylera gecko tab browser
Return


144 :名無しさん@お腹いっぱい。:2008/09/06(土) 21:54:07 ID:DkevhaR10
メニューバーのコマンド項目がグレーアウトしてるか調べることはできますか?
WinMenuSelectItemで実行してErrorLevelを調べてもダメでした


145 :名無しさん@お腹いっぱい。:2008/09/07(日) 00:23:59 ID:XNsWEK1V0
WinMenuSelectItemホントに使えねーな・・・

146 :名無しさん@お腹いっぱい。:2008/09/07(日) 08:54:53 ID:jPJuvg6k0
>>139
WinMinimizeを使わずに
PostMessage, 274, 61472, 0, , A
はどう?


147 :名無しさん@お腹いっぱい。:2008/09/07(日) 18:36:07 ID:JB/wWeoO0
>>139
; 無変換 + N
~vk1Dsc07B & n::PostMessage, 0x112, 0xF020, , , A

俺はこれでやってる


148 :名無しさん@お腹いっぱい。:2008/09/07(日) 18:44:24 ID:7TOnUXm+0
>>146>>147
できました。
ありがとうございます。

149 :名無しさん@お腹いっぱい。:2008/09/09(火) 21:42:17 ID:9+FQvBmg0
~Ctrl::
CtrlCount = 1
Loop
{
Input, InputKey, T0.3 V L1 I, {LCtrl}{RCtrl}
If ErrorLevel Contains Control
CtrlCount ++
Else Break
}
If Not(ErrorLevel = "TimeOut" && CtrlCount > 1)
Return
MsgBox, %CtrlCount% Clicks
Return

テンキーのシングルタップとダブルタップで別のキーを送りたくて
流行らせるページのスレにあった上のをまんまパクって
CtrlだけNumpadに入れ替えてやってみたんですけどうまく出来ませんでした。
テンキーでやるのは無理ですか?

150 :名無しさん@お腹いっぱい。:2008/09/09(火) 22:36:37 ID:+5SJjl+90
どこも入替えてないように見えるんだが?

151 :名無しさん@お腹いっぱい。:2008/09/11(木) 17:08:47 ID:m3tEweQc0
ちょっとMouseGesture.ahkを触ってみたけど、
マウ筋からの移行での一番の問題はツールチップの表示をどうするか。
MouseGesture.ahkは発動条件がマウ筋より多彩だから
チップに何を表示させるかが難しいゆえに、ああいう仕様なんだろうね。

結局はマウ筋ライクなツールチップ表示にして落ち着いた。
何をしたいか確認してから発動させたいとなると、どうしてもこうなる。

152 :名無しさん@お腹いっぱい。:2008/09/11(木) 20:43:33 ID:cWEOQ5DY0
初心者なのですがご教授願いたく…。
エンター押して0.5秒待ってまたエンター押して、というような動作はどう記述したらいいのでしょうか。

窓使いの憂鬱を使っていた時は
Enter &Wait(500) Enter
というふうに書いていたのですが、これと同じような事をAutoHotkeyでできたらいいな…と。

153 :名無しさん@お腹いっぱい。:2008/09/11(木) 21:10:14 ID:L13a12TI0
Send, {Enter}
Sleep, 500
Send, {Enter}

てか、mayu設定出来るくらいなら、マニュアルくらい読めるだろうに

154 :名無しさん@お腹いっぱい。:2008/09/11(木) 21:23:27 ID:cWEOQ5DY0
>>152
thx
AutoHotkeyを流行らせるページを見たり、ぐぐってみたりしたんですがどうにも見つからなくて…。
「待機」とか「wait」でばっかり探していたのが失敗だったようで orz。

助かりました。


155 :名無しさん@お腹いっぱい。:2008/09/11(木) 21:26:03 ID:cWEOQ5DY0
アンカー間違ってるし。
>>153 です orz。

156 :名無しさん@お腹いっぱい。:2008/09/12(金) 00:25:55 ID:CumWgn4R0
GuiのListviewで、長文((数百文字)を入れたセルがいくつもあるとものすごく動作がもっさりするんですが、回避方法はないんでしょうか。
Core2Duoの3GHzあっても、スクロールがもたついてしまいます。

157 :名無しさん@お腹いっぱい。:2008/09/12(金) 01:51:01 ID:oIWwdV6Z0
入れない

158 :名無しさん@お腹いっぱい。:2008/09/12(金) 02:16:51 ID:qjej7b4k0
ウィンドウ指定で、
特定のソフトのComboBoxでのみ動作するようにするにはどうしたらいいでしょうか?

159 :名無しさん@お腹いっぱい。:2008/09/12(金) 02:37:48 ID:NulfR9bY0
Control

160 :名無しさん@お腹いっぱい。:2008/09/12(金) 03:01:07 ID:qjej7b4k0
>>159
ありがとうございます。
コントロールの指定はできたのですが、なぜかコマンドが実行されません。

Return::ControlSend ,.*ComboBoxEx32.*,{HOME} , タイトル,
z::ControlSend ,.*ComboBoxEx32.*,abc, タイトル,

ReturnでHOME、zでabcが入力される、はずなんですが、
どちらを押しても何の反応もなく、本来のReturnの動作、zの入力もされません。
書き方が間違っているのでしょうか?

161 :名無しさん@お腹いっぱい。:2008/09/12(金) 11:26:24 ID:Lrf+VU/90
>>151
どのようツールチップ表示したか教えてもらえませんか?
前に同じようなことを感じ挑戦したけど、設定編集からのツールチップ表示は
うまく動作せずあきらめていました。

162 :名無しさん@お腹いっぱい。:2008/09/12(金) 16:27:31 ID:FGygNrG+0
>>161
結構適当だけどいいかな?AHK素人だから、まあ問題なく使えるねって程度。
条件的には、マウ筋と同等の使い方設定を面倒臭がらない文句言わないけなさない。

まず全部バックアップをとる。
AutoHotkey.exeごとmousgesture.ahk等と一緒に別フォルダで作業。
AutoHotkey.exeをMouseg.ahk.exeに改名複写して使うと人によって便利かも。
AutoHotkey.iniは#include MouseGesture.ahkで

MG_Config.ahkを見てるとマウスジェスチャを投げて、そこからウィンドウ判定してるみたい。
ツールチップでもそれと同じことをする。MouseGesture.iniを使い回すため後でComment.iniに改名コピー。
4方向モード専用の人は、後々大後悔をしないために設定で8方向モードにして斜めの広さは全部0にする。
ジェスチャ定義名は基本RB_4_のようにジェスチャ定義と同じにする。手間。iniでの例。2つ以上登録する人は知りません。
[RB_4_]
G=RB_4_
KIKI=Send, !{Left}

mousgesture.ahkのMG_ShowNavi:欄を書き換え。
適当だからプログラミングとしてあってるかわからない。
全部理解しながら読むのも面倒だしw
「MG_Is条件定義」、上例で言えばKIKI等の条件分岐は自分で手直し。手間。

163 :名無しさん@お腹いっぱい。:2008/09/12(金) 16:28:31 ID:FGygNrG+0
MG_ShowNavi:
if(!MG_Active && (A_TickCount>(MG_LastTime+MG_DGInterval+MG_WaitNext))){
Tooltip
MG_Tooltip=
}else{
if(MG_IsKIKI()){
IniRead, comm,%A_ScriptDir%\Comment.ini, %MG_Gesture%_,kiki, ;%MG_Gesture%
tooltip, %comm%
}else if(MG_Isnotepad()){
IniRead, comm,%A_ScriptDir%\Comment.ini, %MG_Gesture%_,notepad
tooltip, %comm%
}else if(MG_Isedge()){
IniRead, comm,%A_ScriptDir%\Comment.ini, %MG_Gesture%_,edge
tooltip, %comm%
}
;tooltip,%MG_Gesture%,0,0,20
comm =
}
return
あと、mousgesture.ahkのコメント行の下に次の1,2行をそれぞれ足す。
;全てのトリガが離された
SetTimer,MG_ShowNavi,50
;移動中にタイムアウト
SetTimer,MG_ShowNavi,OFF
tooltip

MouseGesture.iniを使い回すためComment.iniに改名複写。
これで一応使えるけど、問題あるところはちょくちょく手直し。
難しいことはやってないから、だれでも理解できると思う。
修正求む。

164 :名無しさん@お腹いっぱい。:2008/09/12(金) 16:43:12 ID:FGygNrG+0
まあ説明しなくてもわかると思うけど、
見づらいからするけど、
今入力中のジェスチャ文字列%MG_Gesture%(ツールチップのデフォルト)
にボタンをどれか一つはなす。動作を加えた%MG_Gesture%_をセクション名にして
Comment.iniからそれぞれのキー名を、一回一回読み込んでるだけ。

あと設定で、起動時からナビを有効にチェック。
マウ筋から移行の俺的には不便がないからいいけど、どうなんだろうね。

標準でついてるMG_Tooltipはただテキストをチップ表示するだけで、
それからジェスチャの続行はできなかった。と思う。

165 :名無しさん@お腹いっぱい。:2008/09/13(土) 10:46:33 ID:FiS3OcML0
あ、、、exe化したスクリプトがノートン先生に削除された。。。

URLを引数に受け取って、iniに書いた正規表現に基づいてJaneだったり
火狐だったり、Boonだったりに振り分けるだけのやつなんだが。。。

ソーススクリプトから再コンパイルして、
exe単体をスキャンしたが「リスクなし」だとさ。

意味わかんねぇ。

166 :名無しさん@お腹いっぱい。:2008/09/13(土) 10:52:41 ID:LFP/ffA30
まずノートンと言う名のウィルスを削除するんだ

167 :名無しさん@お腹いっぱい。:2008/09/13(土) 15:41:43 ID:08bc36oy0
つ ポチエスの正規表現版

168 :151:2008/09/13(土) 16:38:58 ID:Lkd0j4390
>>161
もうちょい、編集しやすくしといた。
ttp://www.rupan.net/uploader/download/1221291262.rar
PASS
mgahk

169 :名無しさん@お腹いっぱい。:2008/09/13(土) 20:04:01 ID:FiS3OcML0
>>167
紹介サンクス。誰でも同じことは考えるわな。

でも、ノートンのログ見たらこれだけじゃなかったよ・・・
ちょっとしたのを集めたフォルダをPATH通してコマンドラインとか使ってるし

とりあえず除外フォルダにでもしとくかな。
てか除外ってウィルスだけだっけ・・・

170 :名無しさん@お腹いっぱい。:2008/09/13(土) 20:20:56 ID:mXTPiKmF0
Sleep 1000 してから PostMessage を非同期に行うことはできるでしょうか?
PostMessage する前にある程度待つ必要があるのですが、
普通に書くと1秒間は連打ができないくなってしまうので
Sleep と PostMessage をバックグラウンドで実行したいのですが。

171 :名無しさん@お腹いっぱい。:2008/09/13(土) 20:46:24 ID:9oiYKnri0
タイマーがいいんでない?

172 :名無しさん@お腹いっぱい。:2008/09/14(日) 00:03:36 ID:Z+0PlWPF0
無変換を押しながらホイールを回した時に、無変換を押している間中Altは押しっぱなしでホイ
ールを1クリック回す毎にCtrl+Tabを送り、無変換を離すとAltを離すにはどの様に書けば良い
でしょうか?

Alt-Tab動作は下の様に書けばいける訳ですが、これにTabを送るときにCtrlを加えたいです。
vk1Dsc07B & WheelDown:: AltTab

TaskSwicthXPというタスク切り替えソフト(Alt+Tab置き換え)を使っていて、Alt+Ctrl+Tab
でWord等同じタスク内の複数開いているウインドウのみを表示して切り替えできるインスタンス
スイッチという機能があり、Alt+Ctrl+TabでAlt-Tabのタスク切り替えの様に操作できるのです
が、これを無変換+ホイールで操作したいのです。



173 :名無しさん@お腹いっぱい。:2008/09/14(日) 05:26:59 ID:KaoIEIED0
コンビネーションキーについて教えてください。例えば、

A & B:: send, 1

とすると、A を押しながら B を押すと "1" が入力されます。しかし、

A & B Up:: send, 1

とすると、"b1" が入力されてしまいます。
Up を付けたい理由はキーリピートさせたくないからなのですが、
この問題を回避する方法はあるでしょうか。

174 :名無しさん@お腹いっぱい。:2008/09/14(日) 06:12:36 ID:rMEa821j0
>>173
一つ目に指定したキーが修飾キーとなり、一つ目のキーを押しながら二つ目のキーを押すと発動する。
一つ目のキー自体のもともとの機能は無効化される。
A & B up:: send, 1
a::send, a
使いにくいけどね。aがワンテンポ遅れてやってくる。
173ではaが無効化されてるだけ。
aを押してからbを押せば問題なし。押し順の問題。

175 :名無しさん@お腹いっぱい。:2008/09/14(日) 06:34:15 ID:KaoIEIED0
>>174
おっしゃるとおり、このコンビネーションの例では "A" がモディファイヤになっており、
"A" を押しながら "B" を押すと "1" を返す、という操作を想定しているのですが、
なぜか "b1" が返ってきてしまうんです。
つまり "Up" を付けることで、修飾される側のキー "B" が修飾されずに同時に入力されてしまうのです。
これは (当方の環境では) "A" 単体にあたえられた機能によらず再現します。

176 :名無しさん@お腹いっぱい。:2008/09/14(日) 06:42:59 ID:rMEa821j0
いやー、問題ないけどね。
ずっとaを押してる?bを押してからa押しb離しってわけじゃねいよねw?
OSは2000以降だよね?
A & B up:: send, 1
上の一行だけのスクリプトでやっても?
AHKは最新?

177 :名無しさん@お腹いっぱい。:2008/09/14(日) 07:30:05 ID:rMEa821j0
>>172
なんか難いね。とりあえず姑息なれど

~vk1D & WheelDown::
settimer, taskswitch
ifwinnotactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, #{F11}
ifwinactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, {TAB}
return

taskswitch:
KeyWait, vk1D
settimer, taskswitch, off
ifwinactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, {Return}
return

178 :名無しさん@お腹いっぱい。:2008/09/14(日) 12:19:15 ID:KaoIEIED0
>>176
ありがとうございます。1行スクリプト基本ですね、忘れていました。
当方でも問題なかったです。
OS は XP Pro SP3 で、AHK は 最新を使っています。

それで常駐スクリプトを部分的に順番にコメントアウトしていって、
結局 "#IfWinExist" の部分があると上手く作動しない事がわかりました。
この部分のスクリプトとコンフリクトしていそうなので、もうちょっと調べてみます。

丁寧な対応、ありがとうございました。
詳細がわかりましたら、ここでフィードバックさせていただきます。

179 :名無しさん@お腹いっぱい。:2008/09/14(日) 15:11:11 ID:4QM2wnAL0
このソフトのスクリプトを勉強したいのですが、何とググったら学べるでしょうか。
ちなみにですが、やりたい事は何かのキーを押すと左クリック、1秒後に右クリックです。
>>2は私には高度すぎて、理解が出来ません。
文系のアホにも初歩から学べるところかありましたら、どうぞ教えて下さい。

180 :名無しさん@お腹いっぱい。:2008/09/14(日) 16:10:02 ID:nUNDehhG0
>>1

181 :名無しさん@お腹いっぱい。:2008/09/14(日) 17:41:50 ID:K07t6ISz0
>>179
ヒントは >>152-154あたり。

お作法はやはりマニュアルを読まなきゃ分からんが、全部読む必要はない。
学校の勉強と違って覚える必要はないので、軽く斜め読みすればよい。
Hotkeysあたりは手を動かしながら読んだ方がいいかも。

ま、結局は >>179の文中にある事を単にスクリプト言語に変えるだけなんだけど。

何かのキーを押すと::
 左クリック
 1秒後に
 右クリック

182 :名無しさん@お腹いっぱい。:2008/09/14(日) 18:07:49 ID:WmuQeYeQ0
AutoHotkeyを流行らせるBBS でも質問をしたのですが、返信がありませんでしたので、
こちらにも質問をさせていただきます。

sc07B & m::send,{Blind}{Down}
sc07B & i::send,{Blind}{Up}
sc07B & j::send,{Blind}{Left}
sc07B & k::send,{Blind}{Right}
sc07B::Send,{sc07B}
といいますように、無変換キー+○○で、
ダイヤモンドキーを実装させています。

ここで、
無変換キー単打→無変換
無変換キー長押し→動作なし
というようにキーを割り当てられないでしょうか?
カーソルを動かそうと思ったけれどやっぱり止めた、
などと言うときに無変換キーが押されては不便ですので。
同時に、無変換キーはよく使いますので単純に無効にはしたくありません。

お力を貸していただけますと本当に助かります。
よろしくお願いします。

183 :名無しさん@お腹いっぱい。:2008/09/14(日) 18:25:35 ID:TX85x1US0
俺もその使い方が便利で使ってるけど、単独で動作するコマンドはないと思う。

gosubで飛ばして、そこで長押しかどうかを判別して分岐させている。

184 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:04:02 ID:4QM2wnAL0
>>181
どうもありがとうございます。
まずは簡単な事から出来る限り頑張ってみようと思います。

185 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:06:04 ID:WmuQeYeQ0
>>183
Gosub ですか?
AutoHotkeyを流行らせるページで調べてみましたが、
どう書けばいいのか分かりませんでした。
詳しく教えていただけますとうれしいです。

186 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:32:01 ID:ZZFQ55yn0
押し下げで、変数に押し始めの時刻を覚えておいて、
押し上げで、現在時刻-さっきの変数>閾値 の判定をすればいいんでない

187 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:36:59 ID:TX85x1US0
>>185
ちがうよ。長押しを検出するコードをユーザー定義関数で別枠で作って、
キーが押されたら、そこへgosubなりで定義関数なりで飛ばすと言うこと。

たとえば俺の場合は、0.3秒(300msec)以上押されたときに別の機能を
割り当てるため、nagaosiファンクションを作ってる。

if nagaosi(A_ThisHotkey,300)=1
 send,長押しされたときのコマンド
else
 みじか押ししたときに処理する内容

として呼び出す。A_ThisHotkeyをつかえば、押されるキーが変わっても
まるごとコードを流用するだけで動作する。

ちなみに、これコピペしただけじゃ動かないからね。
必要な情報は、はやらせるページに全部載ってる。

188 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:50:12 ID:K07t6ISz0
こういうパターンを多用するならmayuの方が向いてるけどね・・・
One Shot モディファイアの定義で一発なんだが。

Vistaは後継ってか傍系のmodoka(シェアウェア)になるけど。。

189 :名無しさん@お腹いっぱい。:2008/09/14(日) 20:51:29 ID:K07t6ISz0
modokaってなんだよ・・・「のどか(nodoka)」な。

190 :名無しさん@お腹いっぱい。:2008/09/14(日) 21:47:12 ID:WmuQeYeQ0
>>187
ありがとうございます。
ただ、A_ThisHotkey の使い方などを中心に小一時間ほど調べましたが、
やはり、うまく動作させることが出来ませんでした。
さらに詳しく教えていただけますと助かります。
どうぞ、よろしくお願いします。

>>188
ええ、先月までは mayu で同様の動作をさせていました。
ただ、もうすぐ Vista に移行しようと考えていますので、
mayu ではなく、AHk を使い始めました。

191 :名無しさん@お腹いっぱい。:2008/09/14(日) 21:51:57 ID:TX85x1US0
>>190
動かないコードを丸ごとここに書けば、誰かが修正してくれるよ。
その時点で、あなたがどこまで努力してるかも同時にわかるけど

192 :名無しさん@お腹いっぱい。:2008/09/14(日) 23:14:05 ID:WmuQeYeQ0
>>191
sc07B::
if nagaosi(A_ThisHotkey,300)=1
return
else
Send,{sc07B}
return

と書いたところ、

if nagaosi(A_ThisHotkey,300)=1

でエラーが出ました。

sc07B::
if (A_ThisHotkey,300)=1
return
else
Send,{sc07B}
return

と書きますと、エラーは吐きませんが、
sc07B::Send,{sc07B}
と同じ動作になってしまいます。

sc07B::gosub, nagaosi と if の前に書いてもエラーが出ました。

193 :名無しさん@お腹いっぱい。:2008/09/14(日) 23:28:39 ID:KaoIEIED0
>>191
nagaosi 関数を自分でつくらなきゃ

194 :名無しさん@お腹いっぱい。:2008/09/14(日) 23:31:13 ID:KaoIEIED0
ごめん >>192

195 :名無しさん@お腹いっぱい。:2008/09/14(日) 23:54:18 ID:TX85x1US0
>>193のとおり、そのままじゃ動かないよ。
ってかコピペしても動かないよって書いてたんだけど。

俺のコードはスパゲッティ状態だから、長押しの認識に特化したシンプルな
コードがどっかにあるといいんだけど。

196 :名無しさん@お腹いっぱい。:2008/09/14(日) 23:59:42 ID:WmuQeYeQ0
あー、長押し関数を自分で書かないといけないんですね。
なるほど、ふりだしに戻る。

AutoHotkeyを流行らせるページ内を「長押し」で検索しても何も引っかかりませんでしたし、
ちょっとお手上げのようです。

197 :名無しさん@お腹いっぱい。:2008/09/15(月) 00:00:55 ID:K07t6ISz0
「ある長押ししたかどうか」ってどうやって判断する?

それが分かればコード書けると思うけどな。

198 :名無しさん@お腹いっぱい。:2008/09/15(月) 01:18:33 ID:Gxz3XcBM0
ちょっと作ってみた。あんまり便利じゃないかも。

/* 1 of 2 */

/**
* 指定のキーの長押しの設定を行う。
* "Hotkey"コマンドでのキー設定なので、"Hotkey, IfWinExist,..."等が利用可能(なはず)
*
* @param keyName - 設定対象キー名
* @param delay - 長押しと判断する経過時間(ms)
* @param actType - key:キー押下発行, sub:関数呼び出し, その他:何もしない
* @param action - 長押ししたときに動作するサブルーチン名 or キー名
*
* サブルーチン "LongKeyPressStart", "LongKeyPressEnd"に依存
*/
InitLongKeyPress(keyName, delay, actType, action) {
 global
 longKeyPressDelay_%keyName% := delay
 longKeyPressActType_%keyName% := actType
 longKeyPressAction_%keyName% := action
 Hotkey, %keyName%, LongKeyPressStart, On
 Hotkey, %keyName% up, LongKeyPressEnd, On
}

199 :名無しさん@お腹いっぱい。:2008/09/15(月) 01:19:22 ID:Gxz3XcBM0
/* 2 of 2 */
; キー押下時のシステム時刻をキー毎に記録する
LongKeyPressStart:
 if (!(longKeyPressKeyDown_%A_ThisHotkey% > 0)) {
  longKeyPressKeyDown_%A_ThisHotkey% := A_TickCount
 }
 return

; キー押下中の経過時間を取得し、設定に基づき動作する。(キー名は" up"を取り除く)
LongKeyPressEnd:
 StringTrimRight, longKeyPressKeyName, A_ThisHotkey, 3
 if (A_TickCount - longKeyPressKeyDown_%longKeyPressKeyName% > longKeyPressDelay_%longKeyPressKeyName%) {
  longKeyPressAction := longKeyPressAction_%longKeyPressKeyName%
  longKeyPressActType := longKeyPressActType_%longKeyPressKeyName%
  if (longKeyPressActType = "key")
   Send, {%longKeyPressAction%}
  else if (longKeyPressActType = "sub")
   Gosub, %longKeyPressAction%
 }
 else
  Send, {%longKeyPressKeyName%}
 longKeyPressKeyDown_%longKeyPressKeyName% := -1
 return


200 :名無しさん@お腹いっぱい。:2008/09/15(月) 01:21:59 ID:Gxz3XcBM0
>>198-199 を利用したサンプル

#SingleInstance

; (サンプル) Deleteキー長押し時に"Backspace"キーを発行
InitLongKeyPress("Delete", 500, "key", "Backspace")

; (サンプル) Insertキー長押し時にサブルーチン"InsertLongPress"を実行
InitLongKeyPress("Insert", 500, "sub", "InsertLongPress")

return

; (サンプル)Insert長押し時の動作用
InsertLongPress:
 MsgBox, 長押し
 return


201 :名無しさん@お腹いっぱい。:2008/09/15(月) 01:30:49 ID:6GeUu12j0
>>177
ありがと。ちょっと思い通りに動かなかったけど、確かにキー押しっぱなしじゃなくても
ウインドウを閉じない#{F11}でTaskSwithXPを呼び出して、{Enter}で選択という処理を
させるという道もあるね。

しかし、TaskSwitchXPに限らず、WindowsXPのAlt-Tabも、タスク選択ウインドウ表示中
は特殊なキーフックするのかなぁ。なんかAutoHotKeyからのsendじゃAlt操作を受け付
けない感じ。

Alt+Tabの場合、単純に下の様に書いてもいけそうな気がするんだけど、無変換+ホイー
ルでタスク選択ウインドウを呼び出すと、無変換離してもAltUpしてくれなくてタスク切り替
えウインドウ閉じない。

で、その状態でAlt押せば(つまり強制的にキーボードでAltUpを送れば)TaskSwithXPだと
ちゃんとタスク切り替わってTask選択ウインドウも閉じるんだけど、Windows標準に至って
は、アクティブウインドウは選択どおり切り替わるがタスク選択ウインドウが出っぱなしという
始末。

vk1Dsc07B & WheelDown:: send,{AltDown}{Tab}
vk1Dsc07B Up::{AltUp}



202 :201:2008/09/15(月) 01:33:34 ID:6GeUu12j0
間違えた。これでもダメ。

vk1Dsc07B & WheelDown:: send,{AltDown}{Tab}
vk1Dsc07BUp:: send,{AltUp}

203 :名無しさん@お腹いっぱい。:2008/09/15(月) 03:49:33 ID:BCErOm5Y0
>>198-199
最初にファンクションで飛んで、その引数でさらにgosubへ飛ぶのか。
これは思いつかなかった。参考になったよ。

204 :名無しさん@お腹いっぱい。:2008/09/15(月) 08:51:35 ID:WlayIfq+0
スクリプト実行中のカーソルの形状を変えたいと思い下のコードを先頭に加えてみました。

Typeは5046、ErrorLevelは両方0なのでうまくいっているとしか思えないのですが

全く変化がありません。

どこがまちがっているのでしょうか。


Type := DllCall("user32.dll\LoadCursor","Int", 0,"Int", 32514, "Int")

DllCall("user32.dll\SetCursor","Int", %Type%)


205 :名無しさん@お腹いっぱい。:2008/09/15(月) 12:21:32 ID:gmIYzpSg0
>>204
間違えました
DllCall("user32.dll\SetCursor","Int", Type)
です(結果は同じなんですが)

206 :名無しさん@お腹いっぱい。:2008/09/15(月) 12:45:34 ID:ybzwO8GG0
無変換長押し時って気になって自分なりにやってみたけど。
結局keywaitで待たなきゃダメなんかな。
sc07B & mとかのコンビネーションキーがあったら、Up時に発動するんだね。
あたりまえだけど。

111:
keywait, sc07B, D
aaa:= A_TickCount
keywait, sc07B
bbb:=A_TickCount
ccc:=bbb-aaa
ht := A_TimeSinceThisHotkey
;無変換を押されてから指定ミリ秒経てたら(長押し時)無変換なしなど
if (ccc > 200){
goto,111
}
;無変換押下でホットキーを押されたら無変換なし
if (ccc > ht && ht != -1)
goto,111
;他は無変換を送る
else
send, {vk1Dsc07B}
goto,111

sc07B & m::send,{Blind}{Down}
sc07B & i::send,{Blind}{Up}
sc07B & j::send,{Blind}{Left}
sc07B & k::send,{Blind}{Right}

207 :206:2008/09/15(月) 12:58:58 ID:ybzwO8GG0
ああ、別のスクリプトで実行すればいいのか?
>>198-200を参考にして初めて関数使って作ってみた。
関数の勉強になったし、Libフォルダの存在も知っただけでも良しとしよう。
a::LongKeyPress("a",500)
;keyNmaeとactionは""
LongKeyPress(keyName,delay,action=0){
aaa:= A_TickCount
keywait, %keyName%
bbb:=A_TickCount
ccc:=bbb-aaa
ht := A_TimeSinceThisHotkey
;msgbox, "%keyName%"%ccc%=(%bbb%-%aaa%)>%ht%---%delay%
;%keyName%を押されてから%delay%ミリ秒たったら%action%:へ(第3引数省略時は無効)
if (ccc > delay){
if action = 0
return
if action != 0
Hotkey, %keyName%,off
gosub, %action%
Hotkey, %keyName%,on
return
}
;%keyName%押下でその他ホットキーを押されたら無効
if (ccc > ht && ht != -1)
return
;その他は%keyName%を送る
else
Hotkey, %keyName%,off
send, {%keyName%} ;{vk1Dsc07B}
Hotkey, %keyName%,on
return
}

208 :182:2008/09/15(月) 13:30:46 ID:xAi6wlET0
>>206
ありがとうございます。
望むとおりの動作を確認しました。
>>207の方はコピペでは動かなさそうですね。
あとで読ませていただきます。
感謝です。

209 :名無しさん@お腹いっぱい。:2008/09/15(月) 13:59:39 ID:ksNPPxHc0
>>181 こんな初歩的な事はどうでも良いと思うのですが、一応結果報告です。
LShift::
Send, {LButton}
Sleep, 1000
Send, {RButton}
こんな事でさえ試行錯誤でしたが、何とか出来ました、どうもありがとうございました。

210 :名無しさん@お腹いっぱい。:2008/09/15(月) 19:02:07 ID:ybzwO8GG0
>>205
SetSystemCursorで変更はできるよ。
;標準を砂時計へ
Type := DllCall("user32.dll\LoadCursor","Int", 0,"Int", 32514,"Int")
DllCall("user32.dll\SetSystemCursor","Int", Type,"Int", 32512)


211 :名無しさん@お腹いっぱい。:2008/09/15(月) 22:07:28 ID:jSoqVbRU0
リマップで
a:: b
と書くのと、ホットキーで
a:: Send, b
と書くのはどう違うんでしょうか?

特定のアプリがアクティブなときだけ
「Ctrl+g => F3」、「Shift+Ctrl+g => Shift+F3」
をしたいのですが、
^g:: F3
だとダメで
^g:: Send, {F3}
+^g:: Send, +{F3}
だとOKでした。

あとこれは ShiftなしとShiftありを別々に書くしかないですか?
リマップなら1行でいけるんじゃないかと思ったんですが・・・

212 :名無しさん@お腹いっぱい。:2008/09/16(火) 05:00:21 ID:Qv7jHnRt0
>>210
ありがとうございます、うまくいきました。
2ちゃんねるで質問して解決に至ったのは初めてなので、とてもうれしいです。
以下が完成したものです。

;カーソルファイルのパス取得
RegRead, Path, HKEY_CURRENT_USER, Control Panel\Cursors, Wait
if(Path = null)
;デフォルトの場合
Type := DllCall("user32.dll\LoadCursor","Int", 0,"Int", 32514,"Int")
else
Type := DllCall("user32.dll\LoadCursorFromFile","Str", Path, "Int")
DllCall("user32.dll\SetSystemCursor","Int", Type,"Int", 32512)

;処理終了後元に戻す
RegRead, Path, HKEY_CURRENT_USER, Control Panel\Cursors, Arrow
if(Path = null)
Type := DllCall("user32.dll\LoadCursor","Int", 0,"Int", 32512,"Int")
else
Type := DllCall("user32.dll\LoadCursorFromFile","Str", Path, "Int")
DllCall("user32.dll\SetSystemCursor","Int", Type,"Int", 32512)


213 :名無しさん@お腹いっぱい。:2008/09/16(火) 07:38:15 ID:5v/nmAbZ0
>>211
マニュアル読め。
質問事項は全部書いてある。

214 :161:2008/09/16(火) 15:35:55 ID:J3g28V/j0
>151
返事が遅くなりましたが、ありがとうございました。
ご参考にさせて頂き、これからいじってみます。


215 :名無しさん@お腹いっぱい。:2008/09/16(火) 16:15:06 ID:oKXaUZC10
>>214
>>168のやつ落ちてたからあげといた。
ttp://www.rupan.net/uploader/download/1221548226.rar
書き換え項目もスクリプトファイルの中にコメントしてある。
上に書いてたよりも少し自分で書く手間を省いているのと、
コメントファイルを少し見やすくして少し編集し易くしといた。
上のはあんまりにもひどい、自分でもコメント編集してなかったから。

自分でやることは最低3つ、
ジェスチャ定義名をジェスチャ定義と一緒にする。
スクリプトコピペ
付属スクリプトの実行(コメント編集)
あとは、ジェスチャを増やすたびに付属スクリプト実行しファイル編集で付け足していける。

216 :名無しさん@お腹いっぱい。:2008/09/16(火) 16:21:58 ID:jv3QzIyT0
;; googleで検索
#g::
clipboard=
Send,^c
ClipWait
SetEnv,word,%clipboard%
Run, http://www.google.co.jp/search?hl=ja&q=%word%
return

このスクリプトを文字列を選択していない状態で実行すると、その後文字列を選択して実行しようとしても実行できず、
クリップボードに文字列が送られたときに実行されることがあります。

ClipWaitのところで止まっているせいだと思うのですが、文字列が選択されていない状態で実行した場合にはこの
スクリプトを実行しないようにできないでしょうか?

217 :名無しさん@お腹いっぱい。:2008/09/16(火) 16:38:34 ID:JgVAuo190
ClipboardAllでいったん退避
それと比較して変化無しならReturn


218 :名無しさん@お腹いっぱい。:2008/09/16(火) 18:21:32 ID:nuImb1ab0
>>216
自分も、そこで躓いて・・只今 プランBで模索中。
読み換え、よろしく。

clipboard := ""
Send,^c
ClipWait,0.01 ; 0.01秒 コピーされず時間経過「1」、されれば「0」をErrorLevelに返す
if(ErrorLevel == 1){
Send, {ALTDOWN}{TAB}{ALTUP}
return
}
word := clipboard
run,C:\Program Files\DDWin\ddwin.exe `,2`,グループ01`,1`, %word%
return

>>217
横からですが、自分も試させていただきます。 謝謝

219 :名無しさん@お腹いっぱい。:2008/09/16(火) 20:06:10 ID:DY1nYL7T0
Ahk2Exe.exeで作成したファイルを配布したいと思ってますが、
ファイルのプロパティのバージョン情報のタブの情報
(ファイル バージョン、説明、著作権、正式ファイル名等)
を設定する方法は無いのでしょうか


220 :名無しさん@お腹いっぱい。:2008/09/16(火) 21:33:54 ID:jv3QzIyT0
>>217-218
ありがとうございます。リファレンスも参考にしてこんな感じにしてみました。

;; EBWinで検索
#s::
clipboard = ; Empty the clipboard
Send, ^c
ClipWait, 0.01
if ErrorLevel <> 0
{
return
}
SetEnv,word,%clipboard%
Run, C:\applications\EBWin\EBWin.exe /C=1 /S=%word%
return

221 :201:2008/09/17(水) 07:08:24 ID:hwOw0VfTO
>>177
けっきょくAlt+Shift+Tabは断念。
書いて貰ったのを少し手直ししたらいけました。
Alt+ホイールでAltTab、無変換+ホイールでインスタンススイッチにして快適快適。
ありがとうございました。

vk1D & WheelDown::
settimer, taskswitch
ifwinnotactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, #{F11}
ifwinactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, {TAB}
return

taskswitch:
KeyWait, vk1DUP
settimer, taskswitch, off
ifwinactive, ahk_class _As12__TaskSwitchXP_TaskSwitchWnd_
send, {Return}
return

222 :221:2008/09/18(木) 00:45:41 ID:NYYvg/1O0
と思ったが、下のでAlt+Ctrl+Tabいけるね。勉強になります。

vk1Dsc07B & WheelDown::
settimer, release
send, {AltDown}^{Tab}
return

release:
KeyWait, vk1Dsc07B Up
settimer, release, off
send, {AltUp}
return

223 :名無しさん@お腹いっぱい。:2008/09/18(木) 02:42:14 ID:hnAUggDu0
キーバインディングソフトを探してAutoHotkeyにたどり着きました。
初歩的な質問なのですがお願いします。

1,独自のキーボードドライバをインストして使うソフトでしょうか?
2,日本語の解説ページを呼んで、特定のアプリ実行時だけキーの置き換えなどが出来ることは分かるのですが、
複数のソフトに対して、それぞれ独自のキーマッピングはできますでしょうか?

1が不明なため、まだインストしていない段階で申し訳ないですが、よろしくお願いします。

224 :名無しさん@お腹いっぱい。:2008/09/18(木) 02:55:36 ID:SYeRhNDN0
1: 違う。exeが動くだけ。動かすだけなら管理者権限も要らない(はず)

2: 「複数のソフトに対して」というのが、「現在のアクティブウィンドウが何かを判別して」と言う意味なら、できる。

ちなみに、CapsLockは無理。
レジストリ変更か、ドライバレベルのremapソフトが必要。

225 :名無しさん@お腹いっぱい。:2008/09/18(木) 03:44:54 ID:hnAUggDu0
>>224
どうもありがとうございます。
おかげで目的がこのソフトで果たせそうだとわかりました。
ありがとうございました。

226 :名無しさん@お腹いっぱい。:2008/09/18(木) 03:50:26 ID:SguhdQhs0
>>224
そういえば漏れこのソフトをadminで起動したこと一度もないけど何の問題もないw

227 :名無しさん@お腹いっぱい。:2008/09/18(木) 09:13:01 ID:bcFQvpHB0
IME制御って、ATOKとかでも有効なの?

228 :名無しさん@お腹いっぱい。:2008/09/18(木) 14:41:44 ID:+sSs7OKw0
Guiにhtmlファイルを表示させたいのですが、AHKでhtmlを展開(?)することはできるのでしょうか。
<br>とかタグを含んだままテキストを表示するならLabelとして貼り付ければいいんですが、
WindowsかIEだかの機能を利用してこれをhtmlとして表示することはできるのでしょうか。

229 :名無しさん@お腹いっぱい。:2008/09/18(木) 15:10:45 ID:ML8yM++H0
>>228
ttp://www.autohotkey.com/wiki/index.php?title=Internet_Explorer_Control
ttp://www.autohotkey.com/wiki/index.php?title=CoHelper

ここから、IEControl.ahk と CoHelper.ahk を入手すれば、そのまま IEControlのページのExample の下側のコードが動くはず
ローカルファイルならURLに"file:///C:/testdir/test.html"とか指定すればいい

230 :名無しさん@お腹いっぱい。:2008/09/18(木) 18:04:22 ID:UhXN2fAg0
Ctrl+Alt/Shift+カーソルでウィンドウの移動とリサイズできるコードをどなたかお願いします。

231 :名無しさん@お腹いっぱい。:2008/09/18(木) 19:11:21 ID:SYeRhNDN0
ここってスクリプト作成依頼スレだったっけ?

前者は、>>127 のキーバインド変えればできるだろ
後者は、>>127パクった関数作って WinSet 使えばすぐだと思う。


232 :名無しさん@お腹いっぱい。:2008/09/18(木) 19:21:49 ID:m/HPgo1b0
>>229
できた!
でもこのIEControl.ahk、55行目の「Ret」でエラー吐くのですが、Returnのミスですかね。
Returnに書き換えたら動きましたけど。
表現の幅が増えそうです。ありがとうございました。

233 :名無しさん@お腹いっぱい。:2008/09/18(木) 20:59:55 ID:igkxCEwt0
質問です。以下のスクリプトを作成しましたがうまく動きません。
やりたい事は、gvimで ^s を二連打するとgvimに ^s というキーを二回送ってからFirefoxをリロードすることです。
何がうまくいかないかというと、gvim側で
nmap <C-s><C-s> :<C-u>w<CR>
と設定することで ^s 二度続けて押すとファイルが保存されるようにしてあるんですが、
下記のスクリプトを実行中だとgvimにちゃんとControlSendされず、結果としてファイルが保存されずにFirefoxがリロードされてしまいます。
ちなみにFirefoxなど他のアプリのWindowで ^s を押すとちゃんとControlSendされているようです。
どんな原因が考えられるでしょうか?
よろしくお願いします。


;好きなエディタで保存と同時にFirefoxをリロードするAHKスクリプト - AUSGANG SOFT
;http://a-h.parfe.jp/einfach/archives/2007/0126190912.html

^s::
WinGet, active,,A
ControlSend,,^s, ahk_id %active%
ReloadFirefox(300)
return

ReloadFirefox(timeout){
if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout){
IfWinActive ahk_class Vim
{
SetTitleMatchMode, 2
WinGet, Fx,, Firefox
ControlSend,, {F5}, ahk_id %Fx%
WinActivate, ahk_id %Fx%
}
Sleep, 500
}
}

234 :名無しさん@お腹いっぱい。:2008/09/18(木) 23:21:39 ID:7mqSCtUy0
>>230
>126

235 :168:2008/09/19(金) 00:33:12 ID:S3G8uTqP0
>126のアクティブ窓の移動とメタボのスクリプトはおしゃれだね。

いちおー不具合修正版
MouseGesture.ahkのツールチップをてきとー改造の説明
ttp://down11.ddo.jp/uploader/download/1221751206499859.HjTjxD?dl
mgahk

236 :名無しさん@お腹いっぱい。:2008/09/19(金) 00:43:10 ID:liAbqAdz0
mayuと同じ設定にしようとがんばってるけど、
やればやるほどmayuが良くできてると感心しつつ挫折。

237 :名無しさん@お腹いっぱい。:2008/09/19(金) 01:46:49 ID:JrBoiNRj0
mayuは設定を、ahkは処理を書く

238 :名無しさん@お腹いっぱい。:2008/09/19(金) 09:03:35 ID:wiy+6nWK0
昔流行らせるページにあったSandSのスクリプトで、単独でスペースを押していないに
ごくたまにスペースが入ってしまうんだけど、何か良い対処法ってありませんか?

239 :名無しさん@お腹いっぱい。:2008/09/20(土) 01:11:01 ID:aAutz+5d0
ブラウザー表示部のテキストを取得できないかな

240 :名無しさん@お腹いっぱい。:2008/09/20(土) 02:47:01 ID:w9sRs52G0
きちんとやるなら、ブラウザ(レンダリングエンジン)のDOMパーサを使わんと無理じゃなかろうか。

Trident(IE)ならWSH、 FireFox(Gecko)なら Javascript Actions とかを呼び出したほうが良さげ。


241 :名無しさん@お腹いっぱい。:2008/09/20(土) 10:14:52 ID:QnMh+Lju0
選択しているアイコンのファイルパスを取得するにはどうしたらいいでしょうか?
このファイルは秀丸で開くとか、ショートカットキーから特定のアプリにファイルパスを渡したいのですが、

242 :名無しさん@お腹いっぱい。:2008/09/20(土) 11:23:27 ID:647zNUut0
エクスプローラーの話なら
アドレスバーからフォルダーパス
ControlでListから選択ファイル名でいけるお

243 :名無しさん@お腹いっぱい。:2008/09/20(土) 15:44:10 ID:aAutz+5d0
>>240
thx
ちょっと高度な技術がいるのか
勉強してみるか

244 :名無しさん@お腹いっぱい。:2008/09/20(土) 17:39:24 ID:ugO8vtjn0
>>242
241ではないが、同じことをしたいと思ってた。
ヘルプのどこを読めばわかるか、もうちょっと詳しく教えてplz

245 :名無しさん@お腹いっぱい。:2008/09/20(土) 18:02:17 ID:bqtD+XDc0
>>241,244
前に似たようなことを書いたような気もするけど、
適当なサンプル。

SetTitleMatchMode, RegEx
SetEnv, exp, ahk_class (Explore|Cabinet)WClass
WinGetTitle, dir, %exp%
ControlGet, item, List, Selected Col1, SysListView321, %exp%
Loop, Parse, item, `n
{
 SetEnv, fullpath%A_Index%, %dir%\%A_LoopField%
 SetEnv, num, %A_Index%
}
Loop, %num%
{
  str := str . fullpath%A_Index% . "`n"
}
MsgBox, %str%

246 :245:2008/09/20(土) 18:09:15 ID:bqtD+XDc0
補足
このサンプルだと、エクスプローラのタイトルバーにフルパスを表示しておかないとダメ。
>>242のようにアドレスバーから持ってきたほうが良いのかも。
マイドキュメントみたいに実パスが出ないのも×
メモ帳の開いているファイル名を取得する方法みたいに、メモリを直接参照すれば
いけるやり方もあるのかもしれない。

247 :244:2008/09/20(土) 19:22:33 ID:ugO8vtjn0
できた。Vista用

explorer_selectedfilepath() {
controlget currentdirectory, line, 1, Edit1, A
controlget selectedfilename, list, selected col1, SysListView321, A
if (substr(currentdirectory, -1) != ":\") {
currentdirectory .= "\"
}
return currentdirectory . selectedfilename
}

248 :名無しさん@お腹いっぱい。:2008/09/20(土) 19:28:01 ID:ugO8vtjn0
>>245-246
おっと、かぶったね。ありがとう。

> >>242のようにアドレスバーから持ってきたほうが良いのかも。
> マイドキュメントみたいに実パスが出ないのも×
たしかに。。。
俺のはアドレスバーから持ってきてるけど、やっぱデスクトップは「デスクトップ\」になる罠。
でもデスクトップに作ったフォルダの中ならちゃんと「C:\Users\ユーザ名\Desktop\フォルダ名」になるし、
まあ運用上は問題ないかな。
気になる人がいたら改良してくれ ノシ

249 :244:2008/09/20(土) 19:47:22 ID:ugO8vtjn0
だめだ、247は複数選択を考えてなかった orx

#IfWinActive ahk_class CabinetWClass
+Enter:: explorer_openwith("C:\Program Files\Hidemaru\Hidemaru.exe")
#IfWinActive

explorer_openwith(exepath) {
controlget currentdirectory, line, 1, Edit1, A
if (substr(currentdirectory, -1) != ":\") {
currentdirectory .= "\"
}
controlget selectedfilename, list, selected col1, SysListView321, A
loop parse, selectedfilename, `n
{
run % """" . exepath . """ """ . currentdirectory . A_LoopField . """"
}
}

250 :241:2008/09/20(土) 20:23:31 ID:QnMh+Lju0
参考になりました。
みなさんのお答えと重複しますが、以下のようにして
XPで無変換+eで選択ファイルを秀丸で起動できました。ありがとうございます

~vk1Dsc07B & e::
controlget currentdirectory, line, 1, Edit1, A
controlget selectedfilename, list, selected col1, SysListView321, A
if (currentdirectory == "") {
currentdirectory = C:\Documents and Settings\UserName\デスクトップ
}
if (substr(currentdirectory, -1) != ":\") {
currentdirectory .= "\"
}
run,C:\Program Files\Hidemaru\Hidemaru.exe %currentdirectory%%selectedfilename%
return


251 :名無しさん@お腹いっぱい。:2008/09/20(土) 21:37:19 ID:mvtsZIgh0
>>239
開いてるURLがわかるなら、URLDownloadToFileが使えないかな?
スレッドの更新チェックに使ってるけど結構便利なコマンドだ。

252 :名無しさん@お腹いっぱい。:2008/09/20(土) 21:39:02 ID:ZgwYI4Sh0
Ctrl+C押してClipboard見ればテキストでパスを得られるんじゃ

253 :名無しさん@お腹いっぱい。:2008/09/20(土) 23:11:54 ID:P4fjFS9b0
みんなけっこう悩んでるね。俺は原始的に

ブラウザ(IE、FireFoxともにOK)
 F6→ctrlC→クリップボード見る

Explorer
 F2→ctrlC→ESC→クリップボード見る

でやってて、ほぼ問題なく動いてるけど、なんか逃げてる気がするので、
確実に取り込める方法があったらぜひ知りたい

254 :名無しさん@お腹いっぱい。:2008/09/21(日) 05:59:36 ID:rE+PWq7+0
ウインドウ内の特定のボタン、たとえばExplorerの「上へ」を押すには、どう書けばいいでしょうか。

WinGet, ControlList, ControlList, A

上記コードを実行して、「上へ」を含むControlが「toolbarwindow322」というものに
入っているところまでは、なんとか調べられたのですが、

・そのtoolbarwindow322の「上へ」が該当する送信場所を調べかた
・調べたボタンを押したと認識させる方法

が、自分では理解を超えてしまいました。どう書いたらよいでしょうか。

ベースサンプル:
;(テンキーの1を押したら、アクティブウインドウのExplorerの「上へ」を押す)

Numpad1::
WinGet, ControlList, ControlList, A
msgbox,コントロール一覧`nControlList=%ControlList%

;(追加でコードをここに書く)

msgbox,押したよ
return

255 :名無しさん@お腹いっぱい。:2008/09/21(日) 07:28:52 ID:EgwFo7DW0
Send, {Backspace}
みたいに、単純にボタンに相当するショートカットキーを送る、
ってだけでは解決じゃ無いんだよね・・・

流行らせるページ( http://lukewarm.s101.xrea.com/myscripts/index.html)
にある "Inspecting Toolbar IDs"でいいじゃないかな。


256 :名無しさん@お腹いっぱい。:2008/09/21(日) 08:02:43 ID:XV/vykhy0
migemo-isearch便利に使わせていただいているのですが、BackSpaceを押したままにすると「find_text failed: 0x80004005」
というエラーが出てAHK自体が固まってしまうようです。
この現象を防止することはできないでしょうか?

257 :名無しさん@お腹いっぱい。:2008/09/21(日) 08:31:50 ID:GccgZV0YO
>>254
直接ショートカットキーで操作できるやつはショートカットキーを送る、その他はメニューバーからショートカットキー使って順にメニュー選択する、じゃダメなの?
ちなみに余談だが、もしUSBテンキーから操作するならMagicKeyPadおすすめ。
テンキー複数つないでも個別に認識できる。
俺はAHKと組み合わせて使ってる。

258 :名無しさん@お腹いっぱい。:2008/09/21(日) 14:20:50 ID:r7sxGXrU0
>>257
>ちなみに余談だが、もしUSBテンキーから操作するならMagicKeyPadおすすめ。
>テンキー複数つないでも個別に認識できる。

うちのUSBテンキー、公式のドライバ入れたらキーが完全にプログラム生成タイプになるんで、
if(GetKeyState(A_ThisHotKey,"P"))で分岐できちゃうからAHKだけで完結してるよ。
複数のUSBテンキー認識とか同時押しとかはちょっと無理っぽいけど、
マウスの移動とクリックしか割り当ててないのでこれで十分。

259 :254:2008/09/21(日) 15:57:45 ID:rE+PWq7+0
>>254ですが、明け方まで作業していたせいで、全然違う質問をしていました。

>ウインドウ内の特定のボタン、たとえばExplorerの「上へ」を押すには
じゃなくて、知りたいのは
>ウインドウ内の特定のボタン、たとえばExplorerの「上へ」が押されたかを調べるには

でした。その趣旨で出てきた質問が

>・そのtoolbarwindow322の「上へ」が該当する送信場所を調べかた
>・調べたボタンを押したと認識させる方法

につながります。せっかく答えていただいた方、ほんと申し訳ないです。

やりたいことをもっと具体的に書くと、
LButton:: で左クリを監視しておき、押したボタンが「上へ」のときに
パンくずリストをGUIで表示させ、Vistaみたいに複数階層を飛び越して
戻れるようなインターフェースを考えています。
「上へ」以外が押された際は、通常通りLButtonを送るコードを実行して終わります。

パンくずリストの作成と、GUIの表示は問題なく出来ますので、
あとは「上へ」が押されたかどうかを判別する方法を知りたくて。

ではよろしくお願いします。

260 :名無しさん@お腹いっぱい。:2008/09/21(日) 16:16:01 ID:jadGMV+70
>>259
そこそこ作りこんでいるようなので、どうせなら完成させて公開してもらいたいけど、
とりあえずVistaのような機能を取り込みたいだけなら、
QTAddressBarをインストールしたらどうか。

261 :名無しさん@お腹いっぱい。:2008/09/21(日) 16:45:55 ID:rE+PWq7+0
>>260
公開するのは全然かまわないですよ。汚いソースですがお約束します。

QTAddressBarありがとうございます。
http://qttabbar-ja.wikidot.com/local--files/repository/ss_address.png

まさにこのインターフェースですが、横に広げるのではなく縦にPopupで表示させることと、
「上のフォルダを別ウインドウで」という機能を追加したく、Ahkで作ってます。

262 :名無しさん@お腹いっぱい。:2008/09/21(日) 19:36:34 ID:EgwFo7DW0
QTAddressBarは便利だったけど結局アンインスコしたなぁ。

理由は、フルパスを表示する設定にしているアドレスバーを見て
色々と動くAHKスクリプトが動かんから。

俺も>>261のが出来たら使ってみたいな。

出来れば、表示フォントが変えられるとうれしい。
ま、無理ならgdi++使うけど。。。

263 :名無しさん@お腹いっぱい。:2008/09/21(日) 20:28:14 ID:vNNJzlhQ0
IMEの入力モードをタイトルバー右上に表示(WXG風) IME.ahk同梱
ttp://lukewarm.s101.xrea.com/up/file/088.zip

MS-IMEだとIMEのON/OFF状態がわかりづらいので作ってみた。
IME.ahkは SandSスクリプトに同梱の IME_Func.ahkを
コピペ & LIBフォルダで使いやすいよう修正したもの

>>227
ATOKはわからないけどWXGは有効、ATOK持ってるなら試してplz

>>238
Inputコマンドで横取りしきれない時にスペース挿入されるっぽいです。
取りこぼし防止にBlockInputを入れてみた。

Shift&Space + IME.ahk
ttp://lukewarm.s101.xrea.com/up/file/089.zip

264 :名無しさん@お腹いっぱい。: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

265 :名無しさん@お腹いっぱい。:2008/09/21(日) 23:50:49 ID:6K6YlHEV0
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
MouseGetPos, MGPX, MGPY
PixelGetColor, PGCRGB, %MGPX%, %MGPY%, RGB
StringMid, DN1, PGCRGB, 3, 2
StringMid, DN2, PGCRGB, 5, 2
StringMid, DN3, PGCRGB, 7, 2
SetEnv, DN1, 0x%DN1%
SetEnv, DN2, 0x%DN2%
SetEnv, DN3, 0x%DN3%
SetFormat, INTEGER, D
DN1 := DN1+0x0
DN2 := DN2+0x0
DN3 := DN3+0x0
MsgBox, RGB : %PGCRGB% `n10進数 : %DN1% %DN2% %DN3%

こんな感じに作ったんですけど
演算を中継しなくても16進数から10進数に変換する方法ありますか?

266 :名無しさん@お腹いっぱい。:2008/09/21(日) 23:58:15 ID:vNNJzlhQ0
>>264
そうだ今はRemapがあるんだった。今日一日助長なコードとにらめっこしてた自分アホス
?の条件演算子での値導入はif文使うよりスマートだね。if文ばかり使っちゃうけど行短縮できていいかも

267 :名無しさん@お腹いっぱい。:2008/09/22(月) 00:08:33 ID:EgwFo7DW0
dn1 := PGCRGB // 0x10000
dn2 := (PGCRGB // 0x100) & 0x00FF
dn3 := PGCRGB & 0x0000FF


268 :264:2008/09/22(月) 00:11:23 ID:o1Epe13d0
ちなみに IME 起動はこれ。当方101キー配列で、CapsLock を IME 起動に割りあててる。
2 回押しでオン、1 回押しでオフ。
ワンキーだけどトグルでないので、より明示的でインジケーター等なくてもあまり間違えない。

SC79:: Ime(DoubleKey())

Ime(value)
{
DetectHiddenWindows, On
SendMessage, 0x283,0x006, value,, % "ahk_id "
. DllCall("imm32\ImmGetDefaultIMEWnd", UInt, WinActive("A"), UInt)
DetectHiddenWindows, Off
}

DoubleKey()
{
Return, A_PriorHotKey = A_ThisHotKey
and A_TimeSincePriorHotkey > 50 and A_TimeSincePriorHotkey < 250
}

269 :名無しさん@お腹いっぱい。:2008/09/22(月) 00:23:31 ID:ECf9LNY50
>>267
ややや、これは凄い
こんなやり方あったんですね勉強します
ありがとう

270 :名無しさん@お腹いっぱい。:2008/09/22(月) 00:48:52 ID:79bcj/5P0
>>268
キーを打ち込む前に必ずIME ON or OFFする癖が付いてるってことなのかな。
自分はONにしたまま別のウィンドウ操作しに行っちゃって
戻ってきた時にONになってるの忘れてそのまま打ち込んでアウチってなる。

しかし日本語OSでも101キーだと CapsLockもフックかけられるのか、知らんかった。

271 :名無しさん@お腹いっぱい。:2008/09/22(月) 01:29:24 ID:fvCJxQRO0
>>263のIMEの関数に絡めてこんなの作った。
誤作動しても知らんけど
IMEOFFでの誤入力のなんちゃて救済F12キー
IMEONでは今まで通り^tで対応。

start:
gosub, hiskey
sleep, 100
goto, start

hiskey:
IMEmode := IME_GET()
if IMEmode = 1
return
Input, hiskey,L20 T7 V, {F12}{Enter}{TAB}{UP}{DOWN}{LEFT}{RIGHT}{LShift}{RShift}{RButton}{LButton}
stringLen, hiskeylen, hiskey
if Errorlevel = ENDKey:F12
{
send, {BS %hiskeylen%}
sleep,100
send, {vkF3sc029}
send, %hiskey%
}
return

ESC::ExitApp
#ESC::Suspend
^q::
Suspend, OFF
Reload

272 :271:2008/09/22(月) 01:36:57 ID:fvCJxQRO0
最後のホットキーはほっといて、
スクリプト作成に使ってたw

if Errorlevel = ENDKey:F12
{
stringLen, hiskeylen, hiskey
send, {BS %hiskeylen%}
こう変えたほうが自然だね。あとsleepはいらないと思うけど、一応。
使うなら動作するアプリを制限したほうが良いかも。

273 :271:2008/09/22(月) 01:53:56 ID:fvCJxQRO0
inputの終了キーに{Space}は入れたほうが良かった。他もろもろ。

send, {BS %hiskeylen%}{vkF3sc029}%hiskey%
Sendは一行に纏めて問題ないかも。
今度からちゃんと見直してから書き込むわorz

274 :名無しさん@お腹いっぱい。:2008/09/23(火) 04:10:13 ID:RLu7MsTF0
UnicodeなテキストをFileReadで変数に読み込み、その変数をShiftJISに直したいです。

クリップボードを経由して変換する方法が「流行らせるページ」で紹介されています。
http://lukewarm.s101.xrea.com/commands/Transform.htm

が、ファイルを連続処理する用途で使うと、クリップボードの競合が出てしまい、
フォアグラウンドの作業で使っているクリップボードの内容が破壊されてしまいます。

直前に、クリップボードの控えをコピーし、変換が終わったら書き戻す方法で試しましたが、
それでもミスがでてしまいます。

クリップボードを経由しないで、unicode-shift-jis変換する方法はないでしょうか。

275 :名無しさん@お腹いっぱい。:2008/09/23(火) 04:44:03 ID:CvQjMMw50
nkf

276 :名無しさん@お腹いっぱい。:2008/09/23(火) 05:04:47 ID:U1uFrEtL0
じゃ、qkcも。DllCallで使えそう
ttp://www.vector.co.jp/soft/win95/util/se295331.html?site=n


277 :名無しさん@お腹いっぱい。:2008/09/23(火) 17:41:19 ID:IJvmUZKA0
Sendでショートカットキー入力させるのがうまくいかなかったけど文字を小文字にしたらあっさりできた
流行らせるページにはそのこと書いてなかったけどこれって常識なのか

278 :名無しさん@お腹いっぱい。:2008/09/23(火) 17:54:29 ID:CvQjMMw50
少し考えれば分かるよ

279 :270:2008/09/23(火) 21:44:09 ID:0noHxrPe0
>>271
試してみたけど意外と面白い。自分が使うとするとこんな感じかな。

autoexecute_section:
SetTimer,HistoryKeysTimer,ON
return

HistoryKeysTimer:
Input, hiskey,L20 T7 V, {F12}{Enter}{TAB}{UP}{DOWN}{LEFT}{RIGHT}{LShift}{RShift}{RButton}{LButton}{Space}
if (Errorlevel = "ENDKey:F12") & GetKeyState("CTRL","P") ; [Ctrl]+[F12]で発動
{
IME_SET(~IME_GET() &0x01) ;IMEトグル(キーバインド変えてるので[半/全]以外でも使えるように)
send, {BS strlen(hiskey)}%hiskey%
}
return

ON/OFF双方向でも差し障りなさそうなので判定部分はカット。
ただアウチってなった瞬間に条件反射で左手がESC押しに行ってるので
救済機能あっても間に合わないかも。

280 :名無しさん@お腹いっぱい。:2008/09/24(水) 12:09:53 ID:17lMsxNX0
>>279
やっぱsettimerでしたね。GetKeyStateはいい。
F12はやめて好みの修飾キー+[半/全]にしたらいいかも。どうせIMEのキーを押すし。
Input, hiskey,L20 T7 V, {vkF3}{vkF4}{Enter}{TAB}{UP}{DOWN}{LEFT}{RIGHT}{LShift}{RShift}{RButton}{LButton}{Space}
if (Errorlevel = "EndKey:半角/全角") & GetKeyState("CTRL","P") ; [Ctrl]+[EndKey:半角/全角]で発動

send,% "{BS "strlen(hiskey)"}"hiskeyにしないとダメっぽかった。

あと、ローマ字入力だと打ち込んだ英語分削除されちゃうんだよね。
もしかして親指シフト使ってます?
打ち込んだ後にIME判定してONだとESC送るってのもあるか…

281 :名無しさん@お腹いっぱい。:2008/09/24(水) 18:24:24 ID:9W396eEI0
ああ、BS送信はIMEトグルの前じゃないとシーケンス的におかしいな。
うちでは何故か問題なく動いているが

282 :名無しさん@お腹いっぱい。:2008/09/26(金) 18:11:30 ID:gtZlskL00
遠隔地のPCにVNCをインストールするスクリプトを書いていて
インストール途中のチェックボックスをONにする処理で躓いています。

「サービスとしてインストール」や「拡張子.vncを関連付け」等の
全部で4つあるチェックボックスを全てONにしたいのですが、
なぜか4つともClassNNが同じ(TNewCheckListBox1)で
Control, Check, , TNewCheckListBox1, ahk_id %hogehoge% としても
まるで反応がなく、困っております。

こういった場合はどう書けばよろしいのでしょうか

283 :名無しさん@お腹いっぱい。:2008/09/26(金) 18:45:59 ID:+tOoQIkA0
>>282
Send,{Space}{Tab}{Space}…
でいいんじゃない?

284 :名無しさん@お腹いっぱい。:2008/09/28(日) 18:52:23 ID:k+kYlxQE0
exe化したものって自由に使って良いってあるけど、GPLに縛られないってことなのかなぁ

285 :名無しさん@お腹いっぱい。:2008/09/28(日) 19:12:05 ID:jeNny5hJ0
一種のコンパイラと考えるとgccで作ったものを売るのと特にかわりはないな。
いや、ちゃんとライセンス読んでないからわからんけど。

286 :名無しさん@お腹いっぱい。:2008/09/29(月) 06:35:17 ID:f+Q7X5PT0
タスクトレイにあるプロセスを終了させたいのですが、
  タスクトレイのアイコンを右クリック→終了を選択
と同じ処理をさせる方法はないでしょうか?

ときどきタスクの再起動が必要になる場合があるのですが(勝手にシフトロックかかる)、
以下のようにProcess, Closeでプロセスを殺すと、
XPごと落ちてしまうこともあるので、別の方法を探しています

~vk1Dsc07B & k::
Process, Close, mayu.exe
run,C:\apps\mayu\mayu.exe
return


287 :名無しさん@お腹いっぱい。:2008/09/29(月) 06:41:58 ID:RAPuoYS7P
>>286
つttp://appletkan.com/nshell.htm

「のどか」以外にも「窓使いの憂鬱」の終了が出来る。引数3。

288 :282:2008/09/29(月) 09:32:04 ID:QRjxuP7J0
>>283
返信ありがとうございます、完全新規インストールの場合はそちらの方法でいけそうです。

しかし、どうも旧バージョンがインストール済の場合はチェックボックスの初期値が
PC毎にバラバラになるようで、今のところ座標指定で背景色を調べてON/OFFをチェックした後
SPACEをSENDするかどうかを判断するしかないのかと思っています。

OSの種類や設定されているテーマに左右されそうで出来れば避けたいところなのですが・・・

289 :名無しさん@お腹いっぱい。:2008/09/29(月) 13:48:05 ID:jZLnTqdH0
なんのソフトだかわからんが管理人さんの「タスクトレイアイコン操作」じゃ無理なのか?
http://lukewarm.s101.xrea.com/myscripts/index.html

290 :名無しさん@お腹いっぱい。:2008/09/29(月) 14:33:09 ID:M4cjsiCm0
AHKスクリプトを、1台のマシンで何個か走らせてると、
タスクマネージャの表記が全部「autohotkey.exe」になって、
どのスクリプトが、どれだけリソースを食ってるのか判別しにくい。

タスクマネージャ上の実行ファイルの名称を「autohotkey.exe」以外に
変えられれば判別できるし、processコマンドで存在確認も取れるのだけど、
変える方法って、なにか無いですかね?

291 :名無しさん@お腹いっぱい。:2008/09/29(月) 14:54:28 ID:xleBmkfS0
autohotkey.exeをコピーしてリネーム。
それぞれランチャーで起動。

292 :名無しさん@お腹いっぱい。:2008/09/29(月) 15:32:38 ID:Lb4hmM3B0
そういや、トラぶった非常駐スクリプトをプロセスから殺すと
常駐のも逝ってしまうから面倒なんだよな
非常駐系は別名にして走らせると分かりやすくなるかもなあ
今はqt0で丸ごと再起動してるけど

293 :名無しさん@お腹いっぱい。:2008/09/29(月) 16:13:03 ID:gM+xuv3PP
他プロセスのコマンドラインを得る方法はある

294 :名無しさん@お腹いっぱい。:2008/09/29(月) 16:51:48 ID:xleBmkfS0
常駐用の実行ファイル名は同フォルダにリネームしていれててもいいかもね。
どっちにしろAutoHotkey.iniを読み込むし。

295 :名無しさん@お腹いっぱい。:2008/09/29(月) 17:46:31 ID:mxNVrbKe0
autoHotkeyのemEditor定義ファイル(ahk.esy)、いまどこかダウンロードできるところないでしょうか

296 :名無しさん@お腹いっぱい。:2008/09/29(月) 18:17:00 ID:M4cjsiCm0
>>291
ありがと。こんなイイ方法があったとは。

スクリプトごとに毎回リネームするのは面倒なので、
実行ファイル名を自動的に変えるバッチを作ってみた。

スクリプトを、このバッチにD&Dさせて起動すると、自動的にAutoHotkey.exeを
(スクリプト名から.ahk拡張子を除いた名称).exeでコピーし、
ファイル名の変わった実行ファイルからスクリプトを起動させる。

AHK実行.bat
−−−−−−−−−−−−−−−−−−−−
copy AutoHotkey.exe %~d1%~p1%~n1.exe
start "" "%~d1%~p1%~n1.exe" %1
−−−−−−−−−−−−−−−−−−−−

手間もかからず、プロセスの判別も出来てGoodな感じ。

難点は、フォルダ内に無駄なexeが増えることか。
増えたexeを清掃する方法か、そもそもexeをコピーしないで
済む方法があれば、どなたか追記お願いします。

297 :名無しさん@お腹いっぱい。:2008/09/29(月) 18:19:59 ID:jZLnTqdH0
\_AutoHotkey\Extras\Editors\EmEditor の中にあるだろ

298 :名無しさん@お腹いっぱい。:2008/09/29(月) 19:04:22 ID:mxNVrbKe0
>>297 ありがとうございます
アプリのフォルダ内に既にあったとは


299 :名無しさん@お腹いっぱい。:2008/09/30(火) 09:23:50 ID:pAHmeocw0
FFFTPのリスト上で
----------------------------------
ControlGetFocus, NowFocus , A
Control, Choose, 3, %NowFocus%, A
----------------------------------
をやってもリストが選択されないのですが、どこか間違っていますでしょうか。

300 :名無しさん@お腹いっぱい。:2008/09/30(火) 12:02:36 ID:eU4UYaoE0
まずリストにフォーカス当てろよ

301 :名無しさん@お腹いっぱい。:2008/09/30(火) 13:36:31 ID:pAHmeocw0
マウスクリックでフォーカスをあててから上を実行しているのですが、
うまくいかないです。Control,Disableは動作するのですが…。

302 :名無しさん@お腹いっぱい。:2008/09/30(火) 15:09:14 ID:eU4UYaoE0
試してみたがlistviewはダメなのかもな
3番目のテキストを取得とかは出来るが…

最悪
Send, {Home}{Down}{Down}

303 :名無しさん@お腹いっぱい。:2008/09/30(火) 15:22:54 ID:rnY4jO4+0
そもそもFFFTPを制御って、なにがやりたいのかな?

FFFTPは起動オプションが豊富で自動巡回も出来るし、
どんな用途でAHK制御させたいのかが気になる

304 :名無しさん@お腹いっぱい。:2008/09/30(火) 15:59:55 ID:pAHmeocw0
>>302
その方法がありましたか。しかしできれば避けたい

>>303
ローカル側で選択しているファイルと同名のファイルがホスト側にあったら
選択にする、ということをやりたいのです。
そうすれば必要なファイルをすぐに選択状態にできて便利です。

305 :名無しさん@お腹いっぱい。:2008/09/30(火) 16:17:17 ID:9J5zKfo/0
AutoHotkey.exeをコピーしてリネームするくらいならAhk2Exe.exeでコンパイルしろっていう

306 :名無しさん@お腹いっぱい。:2008/09/30(火) 17:00:54 ID:zcHs6hFn0
自分も思ったがそれは言わないお約束なんじゃね

307 :名無しさん@お腹いっぱい。:2008/09/30(火) 17:07:14 ID:eU4UYaoE0
AHK修正するたびにコンパイルし直す方が面倒だろっていう

308 :名無しさん@お腹いっぱい。:2008/09/30(火) 17:33:40 ID:zcHs6hFn0
Ahk2Exeはコマンドライン対応してるし、batかAHKで組んじゃえばいいよ。
(待ち時間を考えるとコピー&リネームのバッチ走らせるよりは多少はもたつくかも知れんが。)
自分は秀丸マクロでやってるが編集中ファイルを即exe化できて便利だよ

exe化後に即試行したいなら、Ahk2ExeをRunWaitで実行後、できたexeを起動する処理を追加
実行後にデリートしたいなら、RunWaitでexe起動後に、FileDeleteすればいい。

309 :名無しさん@お腹いっぱい。:2008/09/30(火) 17:37:12 ID:Jv5sPGyO0
exe用に少し書き換えるのも面倒だしな。
一長一短ってやつだわ。

310 :名無しさん@お腹いっぱい。:2008/09/30(火) 17:47:19 ID:HIMXNtnO0
windowsって実行中のファイル削除できないんだっけ?

311 :名無しさん@お腹いっぱい。:2008/09/30(火) 18:03:14 ID:HcZ38TFU0
バッチ中でスクリプトとexe化した方のタイムスタンプ見て、
スクリプトの方が新しいときに ahk2exe で exe を最新化。

で、いいんじゃねーの?

312 :名無しさん@お腹いっぱい。:2008/10/01(水) 02:33:51 ID:+mwaZE500
>>296
へぼ関数

RenameExe()
{
#SingleInstance force
StringRight, Ahkexe, A_ahkPath, 14
if Ahkexe != AutoHotkey.exe
return

StringTrimRight, A_AhkDir, A_AhkPath, 15
FileCopy, %A_AhkPath%, %A_AhkDir%\AHK-%A_ScriptName%, 1
sleep,1000
Rexe = %A_AhkDir%\AHK-%A_ScriptName%

sub:
if(FileExist(Rexe)){
run, "%A_AhkDir%\AHK-%A_ScriptName%" "%A_ScriptFullPath%" ;%1% %2% %3%
}
else{
sleep, 2000
gosub,sub
}
}

313 :名無しさん@お腹いっぱい。:2008/10/02(木) 12:45:24 ID:kvUg2pln0
GUIのボタンを押したときにスクリプトを動かしたいのですが、どうしたら良いのですか?
検索のヒントだけでもよろしくお願いします。

314 :296:2008/10/02(木) 13:04:57 ID:iZUXegDi0
>>312
ありがと。これはイイ。
正常動作を確認し、我が常設お気に入りスクリプトに追加しました。

Windowsって、拡張子をexeにしなくても、シェルにファイル名を全部渡せば
実行ファイルとして動くんだね。DOS時代から使っておきながら、はじめて知ったよ。

315 :313:2008/10/02(木) 13:18:29 ID:kvUg2pln0
解決しました。ここを見てたらわかりました。
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2

316 :名無しさん@お腹いっぱい。:2008/10/02(木) 15:45:27 ID:hKG2O8AF0
autohotkeyでcase文ってどうやって書くの?
ifのみ?

317 :名無しさん@お腹いっぱい。:2008/10/02(木) 19:43:06 ID:i0MwqrfP0
そう

318 :名無しさん@お腹いっぱい。:2008/10/02(木) 19:55:16 ID:i0MwqrfP0
あ、Gosubのラベルに変数の値を使うことで擬似的にcaseみたくできなくもない
邪道だけど、、、

Loop, 4 {
 ; 変数値に該当するサブルーチンがあれば飛ぶ
 subname := "case_value_is_" . A_Index
 if (IsLabel(subname)) {
  Gosub, %subname%  
 } else {
  MsgBox, 該当処理なし ; 合致するサブルーチンが無いとき
 }
}

return

case_value_is_1:
 MsgBox, 値は 1 だ
 return

case_value_is_2:
 MsgBox, the value is two
 return

case_value_is_3:
 MsgBox, value = 3.
 return


319 :名無しさん@お腹いっぱい。:2008/10/02(木) 22:48:40 ID:KhPG4s2n0
>>314
え?何か凄いセキュリティホール?

320 :名無しさん@お腹いっぱい。:2008/10/03(金) 00:58:58 ID:DPtuQevE0
>Windowsって、拡張子をexeにしなくても、シェルにファイル名を全部渡せば
>実行ファイルとして動くんだね。

これって本当?

321 :名無しさん@お腹いっぱい。:2008/10/03(金) 01:12:33 ID:/TY3w8YB0
うん、俺もやってみたけど本当に動いた
多分ヘッダだけ見て拡張子は見てないんじゃない?
これはもの凄いセキュリティーバグだな

322 :名無しさん@お腹いっぱい。:2008/10/03(金) 01:35:37 ID:TovSzjAK0
これは恐ろしい。本当に何でも動く。

AutoHotkey.exeをコピーし、readme.txtにリネーム。
下記の「クリックしてね.bat」を作る。

クリックしてね.batの内容
readme.txt

↑この1行だけ。

この2つを作成し、クリックしてね.bat をexplorerでクリックしたら、
readme.txtという名前の実行ファイル(AutoHotkey.exeのコピー)を実行できてしまった。

これってMS製OSの常識なの? 使い方によっては、かなり恐ろしい気がするのだが。

323 :名無しさん@お腹いっぱい。:2008/10/03(金) 01:52:43 ID:I8q0ub1Y0
タスクマネージャーにはなんて出るの

324 :名無しさん@お腹いっぱい。:2008/10/03(金) 01:58:33 ID:TovSzjAK0
>>323
なんと「readme.txt」がタスクマネージャにいるんだぜ。
これはマジで気持ち悪すぎる。

そもそも、>>312氏が書いてくれたスクリプトをそのまま動かしたら、
「***.ahk」っていうタスクが出てきて、あれ、exeはどこだと不思議に思ったのが発端。

explorerを介さない起動なら、拡張子は問わないというのがMSの仕様なのか。

325 :312:2008/10/03(金) 02:08:30 ID:tCXhSihH0
もしかして天然様やっちまった、俺?
就職できるかな?

326 :名無しさん@お腹いっぱい。:2008/10/03(金) 02:18:10 ID:DPtuQevE0
ほんとだ。txtでもできた。拡張子なしだと無理っぽい?

unix系ならそもそも拡張子関係ないんだけど
windowsでこれができるとなんかセキュリティ上問題あるかな?

327 :名無しさん@お腹いっぱい。:2008/10/03(金) 02:24:31 ID:tCXhSihH0
単純に>>322のクリックしてねの中身を見ると、テキストファイルを開くのかなって思うな。
まあbatなんてなかなかクリックしないだろうけど、遊び心でクリックしてしまうかもw
初心者限定じゃなく、ある程度知識があると逆に引っかかりそう。

これがバグっぽくて修正でもされたら、なんか感動するわw

328 :名無しさん@お腹いっぱい。:2008/10/03(金) 02:43:46 ID:TovSzjAK0
拡張子が com exe のファイルだけウイルススキャンする環境だと、楽勝ですり抜けるね。
ある意味、キンタマウイルスよりも怖い。

329 :名無しさん@お腹いっぱい。:2008/10/03(金) 03:49:02 ID:wNYehIW/0
うーん、あんまり悪用できそうなこと思いつかんなあ。アンチウイルスソフトだと拡張子関係なく見るだろうし。

330 :名無しさん@お腹いっぱい。:2008/10/03(金) 03:52:28 ID:dgb0Ha540
さすがにMSも知ってそうだがな。
どうせ仕様なんだろう。
単純なだけに逆に危ないな、気を付けよう…

331 :名無しさん@お腹いっぱい。:2008/10/03(金) 04:02:30 ID:tCXhSihH0
まあ、拡張子なんてお飾りだしね。一種の符号みたいなものか。
ダブルスタンダードっぽくなるから紛らわしいけどね。

仕様か…対応するにも根が深いかもね。

332 :名無しさん@お腹いっぱい。:2008/10/03(金) 09:14:54 ID:7SbZzXm00
DOS shellはファイルの先頭がMZから始まるものはexeだと認識する
(詳しくは"EXEフォーマット"でwikipedia参照)
試しに先頭がMZから始まるテキストファイルa.txtを作って、コマンドプロンプトからa.txtと入力するとバイナリだと思って実行しようとする

Windows上では拡張子が優先されるので、偽装ファイルをダブルクリックしても関連付けられたアプリが起動するだけだし、
batなどの他の実行ファイル経由でないと実行されることはないので、それほど実害はないんじゃね

333 :名無しさん@お腹いっぱい。:2008/10/03(金) 11:10:05 ID:+Y9yB/r60
すれ違いな質問かもしれませんが・・・
Google Chrome で
    WinSet, Topmost, Toggle, A
としても最前面になりません。
なんとかならないものでしょうか。

334 :名無しさん@お腹いっぱい。:2008/10/03(金) 14:28:52 ID:tCXhSihH0
>>333
どうやってそのAHKを実行してるかによる。

ところで皆さん、>>333をコピペしたらスペースが&%160;って出るんだけど・・・

335 :名無しさん@お腹いっぱい。:2008/10/03(金) 14:31:19 ID:tCXhSihH0
間違えたw&#と160;をつなげた奴。

336 :名無しさん@お腹いっぱい。:2008/10/03(金) 14:43:31 ID:B7IzHcCS0
なんか・・・大丈夫なのか・・・?

337 :名無しさん@お腹いっぱい。:2008/10/04(土) 04:08:55 ID:5M9Ull8K0
nbspでググってください…

338 :名無しさん@お腹いっぱい。:2008/10/04(土) 12:01:51 ID:2ANgIurV0
webページ見てるとき503になったら3秒後に自動で更新させるスクリプトはどうやって書けばいいの?
教えて

339 :名無しさん@お腹いっぱい。:2008/10/04(土) 13:38:54 ID:PaNZWrge0
まず、なぜ503がでるのかを理解し、それでもそれをやりたいと思ったなら、自分でやれ。

340 :名無しさん@お腹いっぱい。:2008/10/04(土) 14:43:11 ID:I8GlKvKf0
>>337
おおっ、常識臭がぷんぷんしてきましたorz
>>339
回線が不安定なんじゃないかな?

>>290に軽く触発され、前スレで教授してもらった782を参考にして作りました。
タスクトレイがすっきりできると思われます。中身は汚いけど。
我ながら便利かと…使うかどうかは別として
ttp://down11.ddo.jp/uploader/download/1223098537237787.dYpvwp?dl
もうちょい改良するかな?強制終了とか

341 :名無しさん@お腹いっぱい。:2008/10/04(土) 14:44:27 ID:I8GlKvKf0
またやっちまったorz見直すの忘れた。
パスはmgahk

342 :名無しさん@お腹いっぱい。:2008/10/04(土) 18:28:44 ID:Jlr2HiHw0
503は鯖が過負荷で死んでると言う悲鳴だ
そこへリロード連射したらどうなるかぐらい考えれ

343 :名無しさん@お腹いっぱい。:2008/10/04(土) 20:19:27 ID:nrqmZSPU0
CTRLキーを押している間だけF12キーを一度押された状態に保ち、
離すとF12を二回押しするようなスクリプトを作りたいのですが、
CTRLを押し続けるとF12が何度も入力されてしまい困っています。

とりあえず書いてみたのは↓なのですが、
どこをどうすれば希望の挙動になるのか、どなたか教えていただけませんか。。
LCTRL::send,{F12}
LCTRL Up::send,{F12 2}

344 :名無しさん@お腹いっぱい。:2008/10/04(土) 20:55:15 ID:WNR8JhhnO
>>343
まず希望の動作がわからん。
Ctrl押し下げで、F12を押して離すを1回。
Ctrlを離したら、F12を押して離すを2回って事?

345 :名無しさん@お腹いっぱい。:2008/10/04(土) 20:57:52 ID:CIS45kxv0
KeyWait

346 :名無しさん@お腹いっぱい。:2008/10/05(日) 01:22:07 ID:FaPT2BC90

Ctrl+:
でタブキーを送りたいのですが、

^:::
send,{Tab}
return

では何も起こりません。
:をエスケープする必要があるのかと思い

^`:::
も試しましたがこちらもダメでした。
動作させるにはどうすれば良いのでしょうか?

347 :hiPvrVwagEGE:2008/10/05(日) 01:26:47 ID:Szi1vuHm0
8OvGbH The glossy, reflective black fascia is technology borrowed from the more traditionally luxurious car market, http://freshmesh.cn/mariettapizzakitchenwebsite.html Marietta Pizza Kitchen Web Site
, 687328, http://freshkesh.cn/fungswayexplanation.html Fung Sway Explanation
, jfed, http://freshkesh.cn/blakemusick.html Blake Musick
, 276, http://freshmesh.cn/waverlyholidaytournament.html Waverly Holiday Tournament
, mbsmd, http://freshkesh.cn/valleycourieralamosacolo.html Valley Courier Alamosa Colo
, %DD, http://freshoesh.cn/audiovoxheadrestvideopackage.html Audiovox Headrest Video Package
, yose, http://freshmesh.cn/pongotwilightsoundagain.html Pongo Twilight Sound Again
, 473, http://freshkesh.cn/oleyvalleyhighschool.html Oley Valley High School
, :-((, http://freshmesh.cn/ginaraddatz.html Gina Raddatz
, :-D, http://freshsesh.cn/taharibyarthurlevine.html Tahari By Arthur Levine
, oqetoc, http://freshlesh.cn/powershifttransmissiontesting.html Powershift Transmission Testing
, 128, http://freshresh.cn/pocketholejoinery.html Pocket Hole Joinery
, cyqik, http://freshpesh.cn/gulfcoastbacteriaindogs.html Gulf Coast Bacteria In Dogs
, odihc, http://freshtesh.cn/taionlyrics.html Taion Lyrics
, cdqxga, http://freshpesh.cn/psbank.html Psbank
, thhzua, http://freshqesh.cn/averyberkellabels.html Avery Berkel Labels
, qimcv, http://freshsesh.cn/laurenwillig.html Lauren Willig
, xduq, http://freshresh.cn/andrewalbertpizza.html Andrew Albert Pizza
, ljl, http://freshpesh.cn/anabethgish.html Anabeth Gish
, 339,

348 :名無しさん@お腹いっぱい。:2008/10/05(日) 04:08:57 ID:39DkyN7c0
>>344
あ、おっしゃる通りです。わかりづらくてすいません……

>>355
keywaitを拙い知識で利用してみたのですが、
やはり押し下げ時の動作がリピートされてしまうようです……
LCTRL::
keywait, LCTRL, D
send,{F12}
return

LCTRL Up::send,{F12 2}
ではダメなのでしょうか?

349 :名無しさん@お腹いっぱい。:2008/10/05(日) 09:20:49 ID:vCb0N/v80
>>346

AutoHotkeyを流行らせるページ → キーリスト → キーコードによる指定

^sc028::
send, {TAB}
return

350 :名無しさん@お腹いっぱい。:2008/10/05(日) 09:42:23 ID:my6/ufox0
>>348
keywait, LCTRL, D
これだと押した瞬間一気にReturnまで進んじゃうよ。
Sendの後にに
keywait, LCTRL,もしくは
keywait, LCTRL, U
でキーアップを待って
send,{F12 2}
を送りましょう。

351 :名無しさん@お腹いっぱい。:2008/10/05(日) 10:32:42 ID:FaPT2BC90
>>349
できました!ありがとうございます!

352 :名無しさん@お腹いっぱい。:2008/10/05(日) 12:34:02 ID:39DkyN7c0
>>350
ありがとうございます!
複数行のスクリプトを作るのは初めてだったのですが、
アドバイス通りに
LCTRL::
keywait, LCTRL, D
send,{F12}
keywait, LCTRL
send,{F12 2}
としたら希望の挙動になりました! ありがとうございます<(_ _)>

353 :340:2008/10/05(日) 13:26:19 ID:yuVU0Lj10
いちおー完成
AHKon/offスクリプト修正版
ttp://down11.ddo.jp/uploader/download/1223180574499589.MGe39U?dl
mgahk

354 :名無しさん@お腹いっぱい。:2008/10/05(日) 16:59:41 ID:1Kmcljo+0
初めまして。
同人ゲームにてワンボタンで必殺技を発動できるよう試行錯誤しています。
1に2を割り当てたいのですが

1::2
では問題なく動作するのですが

1::
send,{2 down}{2 up}
return
だと動作しません。(sleepやdelayも使ってみましたがピクリともしませんでした)
3行程程のコマンドを盛り込みたいのでsendを使って組みたいところなのですが、
なぜ後者だとダメなのか、御教授いただけませんでしょうか。

355 :名無しさん@お腹いっぱい。:2008/10/05(日) 17:01:24 ID:V8K04Ice0
あいだにsleep入れてみたら?

356 :名無しさん@お腹いっぱい。:2008/10/05(日) 17:15:28 ID:iRZ9FKB10
テンキーの1を必死になって押してるとかいうオチじゃなくて?

357 :名無しさん@お腹いっぱい。:2008/10/05(日) 17:41:51 ID:d7i6CHksO
レス有難うございます。
携帯より失礼します。
>>355
upとdownの間に2桁〜4桁のsleepをいくつか試して見ましたがダメでした。
>>356
1::2やメモ帳での確認ではきちんと動作するので間違えてはいないはずです。


358 :名無しさん@お腹いっぱい。:2008/10/05(日) 17:59:38 ID:d7i6CHksO
連続で失礼します。
sleepによるディレイもメモ帳で確認済みです。

359 :名無しさん@お腹いっぱい。:2008/10/05(日) 19:04:05 ID:Q6ShOFPO0
俺の出来たぽ。1.0.47.5

360 :名無しさん@お腹いっぱい。:2008/10/05(日) 20:44:39 ID:3BYeieUJ0
SendModeとかその辺じゃね?

361 :名無しさん@お腹いっぱい。:2008/10/05(日) 22:11:02 ID:iRZ9FKB10
>>358
メモ帳でってのは何を指していってんの?
1::send,{2 down}{2 up} がメモ帳では動くが 該当ソフトでは上手くいかないってことなら
自分で試行錯誤するしかないんじゃね。
そんな限定的な内容(しかも対象が同人ソフト)じゃ代わりに試してやれる奴もいないだろう

362 :名無しさん@お腹いっぱい。:2008/10/05(日) 23:07:57 ID:5/jHscf50
>>360
いくつか試してみようと思います。
ありがとうございます。
>>361
このような簡単なスクリプトなのに思い通りにいかないので、
何か初歩的なミスを犯しているのではと思い質問させていただきました。
ちなみにゲーム名は東方緋想天 コマンドは波動拳コマンドでした。
考え方は間違っていないようなので、引き続き試行錯誤してみます。
レスをくれた皆様、ありがとうございました。


363 :名無しさん@お腹いっぱい。:2008/10/05(日) 23:32:44 ID:OTVefOLi0
>>354
SetKeyDelayでdelayを増やすといいかも
以前X68エミュレータでのキーの取りこぼしがこれで改善した

364 :名無しさん@お腹いっぱい。:2008/10/05(日) 23:48:23 ID:RLWm5/t00
ToolTipやTrayTip上に画像も表示したいのですが、
拡張の方法ってないでしょうか?

365 :London:2008/10/05(日) 23:50:14 ID:KKwPkNTS0
Hi all!!! A fantastic site, and brilliant effort. gold Hope it will always be alive! http://farmer19.hothostcity.com/gold8593.html gold the, http://20480.myhosting247.com/gold9027.html gold, Best Wishes

366 :353:2008/10/06(月) 14:03:12 ID:a9BJ5akX0
凡ミスで糞だったorz
ttp://down11.ddo.jp/uploader/download/1223269173979117.NCLgW2?dl

367 :名無しさん@お腹いっぱい。:2008/10/06(月) 14:42:53 ID:PE67qhlP0
すみません、教えてください
カレントウィンドウにOKのコマンドを送るにはどうしたらいいでしょうか?
たとえば、下のように、Ctrl+Alt+M でメッセージボックスを表示させたあと、
Ctrl+Alt+Yを押してもメッセージボックスが消えません

!^Y::PostMessage, 274, 1, 0, , A
!^M::MsgBox, OKTest

OKボタンにフォーカスが当たってないような場合に、
キーボードからOKを送信できるようにしたいのですが・・

368 :名無しさん@お腹いっぱい。:2008/10/06(月) 16:44:24 ID:L1yEXeIb0
ControlClick, OK, 「ウインドウ名」

以上


369 :名無しさん@お腹いっぱい。:2008/10/06(月) 18:04:30 ID:AqW/X+Xd0
ahkファイルをAhk2Exe.exeにドラッグしても、パラメーターつけろと怒られますが、
AutoHotKey自身で、ドラッグするとahkファイルのあるフォルダにexeを作ってくれる
ソフトは作れますか。

370 :名無しさん@お腹いっぱい。:2008/10/06(月) 18:59:00 ID:nOj/s2oh0
>>367
>PostMessage, 274, 1, 0, , A
wParamに 1なんてパラメータ設定ないみたいだけど
WM_SYSCOMMANDってこういう使い方するんだっけ?
てか数値からメッセージ名逆引きするのは大変なんだから(しかも10進表記だし)
助言が欲しいなら、定義名なり何をやろうとしてるかなり、コメントに入れてくれんか

アクティブウィンドウ限定の条件だったら
[OK] → Send,{Enter} or {ESC}
[はい(Y)] [いいえ(N)] → Send,^y
でいいんじゃないの?

371 :名無しさん@お腹いっぱい。:2008/10/06(月) 19:33:00 ID:nOj/s2oh0
>>369
password := "" ; User Setting

scrPath = %1%
StringReplace,ahk2exe,A_AhkPath,autohotkey.exe,Compiler\Ahk2Exe.exe

;カレントにスクリプトと同名のアイコンファイルがある時は指定する
StringReplace,iconPath,scrPath,.ahk,.ico
ifexist %iconPath%
opt := " /icon " . iconPath

;パスワードが有効なら指定する
if (password != "")
opt := opt . " /pass " . password

Run,%ahk2exe% /in %scrPath% %opt%
return


372 :369:2008/10/06(月) 20:08:56 ID:AqW/X+Xd0
>>371
素晴らしい、完璧です。

exeにドロップされたファイルのパス名って、scrPathで読み込んでるんですか?

373 :名無しさん@お腹いっぱい。:2008/10/06(月) 20:35:20 ID:UDr3fLwZ0
エクスプローラーで特定フォルダをフォルダツリー付きで開きたいのですが
↓のように書いても c:\ が開かれてしまうのはなぜでしょうか?

#c:: Run, explorer /e,c:\tmp


374 :名無しさん@お腹いっぱい。:2008/10/06(月) 22:11:08 ID:mdfN/nzK0
志村ー、エスケープ、エスケープ!!

375 :名無しさん@お腹いっぱい。:2008/10/06(月) 22:14:44 ID:nOj/s2oh0
,をエスケープしてないから

376 :名無しさん@お腹いっぱい。:2008/10/06(月) 23:30:43 ID:UDr3fLwZ0
>>374>>375
あぁデフォルトのエスケープ文字は「`」でしたか
「\」入れて悩んでましたorz


377 :名無しさん@お腹いっぱい。:2008/10/07(火) 03:18:14 ID:XuV6Fev60
指定のプログラムが起動しているときにWin+F8を押したら、そのプログラムをアクティブにして
ショートカットキー(F4)を押すというスクリプトを書いているのですが、たまにアクティブにならないことがあります。
日本語の解説サイトをよく見たのですが、どうにも原因が判りません。

#F8::
DetectHiddenWindows,On
Process,Exist,実行ファイル.exe
If ErrorLevel<>0
{
el:=ErrorLevel
WinActivate,ahk_pid %el%
WinWaitActive,ahk_pid %el%
Send,{F4}
}
return

378 :名無しさん@お腹いっぱい。:2008/10/07(火) 03:45:23 ID:eHSQD0bB0
とりあえず
#WinActivateForce

また、Processでも起動中なのにIDが0になることはたまにある
(こちらの環境ではオミトロンで起こる)

379 :名無しさん@お腹いっぱい。:2008/10/07(火) 03:50:49 ID:XuV6Fev60
>>378
サンクス。それを入れて試してみます。
もしくはプロセスIDがアクティブにならなかったタイミングだけ0になっている可能性ということですね。

380 :名無しさん@お腹いっぱい。:2008/10/07(火) 04:37:50 ID:6TwNE7c+0
アクティブにしなくても
WinClose使えば良いんじゃないの?

381 :名無しさん@お腹いっぱい。:2008/10/07(火) 10:35:11 ID:J/1LGAV/0
送ってるのは!{F4}じゃなくて{F4}だろ。

DetectHiddenWindowsを入れてるってことは非表示プロセスなのかな。
非表示ウィンドウをアクティブにするってできるんだっけ?
Process,ExistでPID取るより固定値(titleやahk_class)でやったほうが確実っぽい気もする。

382 :名無しさん@お腹いっぱい。:2008/10/07(火) 11:32:32 ID:kAzmseur0
F4送ってからアクティブにするとかどうだろう。変わらないかもしれないけども。

383 :名無しさん@お腹いっぱい。:2008/10/08(水) 00:33:56 ID:EfDy4cPw0
特定の拡張子のファイル以外を削除するっていう除外指定のコマンドが分からない

384 :名無しさん@お腹いっぱい。:2008/10/08(水) 00:57:36 ID:f0iYJAhx0
だから?

385 :名無しさん@お腹いっぱい。:2008/10/08(水) 01:19:16 ID:EfDy4cPw0
教えてくださりませんか
*.*[^(ini)]
ってやってみたんですが

386 :名無しさん@お腹いっぱい。:2008/10/08(水) 01:48:45 ID:hh0exQzI0
loopしてifで分けろ

387 :名無しさん@お腹いっぱい。:2008/10/08(水) 02:31:18 ID:EfDy4cPw0
よく分からなかったので
loop,(file)と組み合わせて特定のファイルだけ読み取り属性に変えてからオール削除して読み取りを外す方法にしました

388 :名無しさん@お腹いっぱい。:2008/10/08(水) 02:49:07 ID:TWWcRqQp0
そのloop内で読専フラグつけるファイルはヌルー、フラグ付けないファイルは delete で終わりじゃん。

389 :名無しさん@お腹いっぱい。:2008/10/08(水) 12:34:41 ID:p14CnFmW0
流行らせるページにある日本語で正規表現を使うBREGEXP.ahkなのですが、どうも挙動がわかりません。

RegExpMatch(Target,"(.*)","k","Result")
として、ループを回すと

Target→Result

あいう→あいう
えおかき→えおかき

ここまではOKですが、続けると

くけこ→くけこき
さ→さけこき
と前回の分のゴミがのってしまいます。
どうすればいいんでしょうか。

390 :名無しさん@お腹いっぱい。:2008/10/08(水) 13:03:10 ID:f0iYJAhx0
それは、日本語の2バイト処理がうまくいってない症状な気がする。
2バイトに対応した改造版AutoHotkey がどっかにあるから、探して様子見するとか

391 :名無しさん@お腹いっぱい。:2008/10/08(水) 13:52:02 ID:Kz8G36xQ0
ahk2exe.exeといえばコマンドラインの最後の[/NoDecompile]はどういった
もので何を指定するんだろうか?

392 :名無しさん@お腹いっぱい。:2008/10/08(水) 14:06:37 ID:7/fSwnFj0
コパパイルしたものを、スクリプトファイルに戻せなくするんじゃね?
知らんけど。

393 :名無しさん@お腹いっぱい。:2008/10/08(水) 14:11:31 ID:f0iYJAhx0
>>391
バイナリにした後、逆汗もとい逆スク禁止みたいなコマンドなんじゃないの?
実際、それをやって、どれくらい抑止に繋がるんだろうか。

394 :名無しさん@お腹いっぱい。:2008/10/08(水) 15:50:52 ID:j5g2/JwQ0
>In v1.0.46.10+, the /NoDecompile switch (if present) prevents exe2ahk
>from being able to decompile the script even when the correct password is given.
>This provides an additional layer of protection that goes beyond having a long, elaborate password.

エキサイト翻訳↓
v1.0.46.10+では、/NoDecompileスイッチ(存在しているなら)は、正しいパスワードを与えるときさえ、
exe2ahkがスクリプトを逆コンパイルできるのを防ぎます。
これは長くて、精巧なパスワードを持ちながら越えられる追加層の保護を提供します。


395 :名無しさん@お腹いっぱい。:2008/10/08(水) 16:46:05 ID:f0iYJAhx0
>>394
乙。まとめると

(1) コンパイル(ahk2exe)実行時、/pass*** をつけると、パスワードを知らないと逆コンパイルできない
(2) 逆コンパイルプログラム(exe2ahk)に正規のパスワードを入れると、スクリプトを取り出せる(exe→ahk)
(3) (2)を絶対にやられたくないとき、コンパイル実行時(ahk→exe)に/NoDecompileをつける。
   すると、(2)でデコードするとき、たとえパスワードがあっていてもデコードは不可能になる

で合ってるかな。

396 :名無しさん@お腹いっぱい。:2008/10/08(水) 17:59:59 ID:ZW/25CrN0
>>395
/NoDecompileをつけてやってみたら
Read: The following error occurred: FileNotFound
となったのでそのとおりなんだと思う
このオプションだけGUIに無いんで疑問に思ってた
ありがと


397 :名無しさん@お腹いっぱい。:2008/10/09(木) 08:30:58 ID:7qe7liGh0
wininet.dllを使用してサーバーから時刻を取得したいと考えサンプルを探したのですが、
FTPでのファイル送信の物しか見つかりませんでした。
VBAでのサンプルなら見つかったのでEXCELで試したところ、取得出来ませんでした。
どなたかご助力お願いいたします。




398 :名無しさん@お腹いっぱい。:2008/10/09(木) 11:23:03 ID:hGZkPkGJ0
VBAのサンプルもまともに動かせられないスキルで一からAHKで作るのは難しいんじゃね

Delphi 使えるならこの辺コピペするのが早いと思う
http://www.geocities.jp/teamhasebe/prgrming/delphi/tips/httpdate.htm

VABだったらこれに HttpQueryInfo足せばできる。
http://hp.vector.co.jp/authors/VA014315/vbdown.htm

HttpQueryInfoの定義方法はこの辺
http://www.happy2-island.com/access/gogo03/capter90402.shtml

どうしてもAHKでやりたいなら、DllCall()で
InternetOpen, InternetOpenUrl, HttpQueryInfo, InternetCloseHandle
あたり使えばたぶんOK、構造体はないから比較的楽にできるんじゃね

399 :名無しさん@お腹いっぱい。:2008/10/09(木) 20:48:38 ID:GZ6sUWFB0
>>377ですが>>378の方法では駄目でした(なおもたまにアクティブにならないことがある)。
>>381が挙げたように固定値で試してみます。

400 :名無しさん@お腹いっぱい。:2008/10/10(金) 16:35:54 ID:seGnKTGm0
ahkをコンパイル後、exeで配布したいのだけど、ウイルス扱いになってしまう。
渡した人の多くが「ウイルスって出た!!どーしよどーしよ」と青ざめた声で電話してくる。

たとえば反応したソフト

「ソースネクスト ウイルスセキュリティ」
Trojan-Spy.Win32.Agent.bga

相手先のパソコンは自分のではないから、ソフトを換えてくれとは言えない。
なにかよい対策ないでしょうかね。

401 :名無しさん@お腹いっぱい。:2008/10/10(金) 18:10:22 ID:zPbhM2um0
スクリプトで渡せばいいじゃん。
AHKのインストールくらいはさすがに出来るだろう。

402 :名無しさん@お腹いっぱい。:2008/10/10(金) 18:21:22 ID:seGnKTGm0
中のスクリプトをさわられると困るから、ahkのまま配布は出来ないのよ。

403 :名無しさん@お腹いっぱい。:2008/10/10(金) 20:07:05 ID:ikUl2WBI0
AHKって引数渡して戻り値返す的な使い方には向いていないんですか?

404 :名無しさん@お腹いっぱい。:2008/10/10(金) 22:13:52 ID:rv0wDWWC0
無変換キーをトリガにして以下の様な記述をしているのですが、無変換キーが押し続けられてると認識する
事があります。
どういったタイミングでなるか分かりません…何が原因なのでしょうか? よろしくお願いします。

vk1Dsc07B & h::
{
if (GetKeyState("Shift","P"))
Send,+{Left}
else
Send,{Left}
return
}

vk1Dsc07B::Send,{vk1Dsc07B}


405 :名無しさん@お腹いっぱい。:2008/10/10(金) 23:46:48 ID:WfmGJ5m/0
>>402
少し書き換えれば?

406 :名無しさん@お腹いっぱい。:2008/10/10(金) 23:48:49 ID:WfmGJ5m/0
>>404
これだけでいいよ。
~vk1Dsc07B & h::
if (GetKeyState("Shift","P"))
Send,+{Left}
else
Send,{Left}
return

407 :名無しさん@お腹いっぱい。:2008/10/11(土) 00:24:17 ID:luOuTvV50
>>404 動かすなら↑の通り。
最後の行をどうしても有効化したいなら、修飾シンボル「$」を使う。

408 :404:2008/10/11(土) 00:29:08 ID:fBQeJ9Ml0
>>406,407
ありがとうございます。 助かりました !

409 :名無しさん@お腹いっぱい。:2008/10/11(土) 01:15:41 ID:Z4adJQ/G0
>>405
横からお邪魔しますが、内容によってウィルス判定されたりされなかったりするの?
小物を配布してるんだけど、たまにアンチウィルスが反応したって報告が来るのよ。

410 :名無しさん@お腹いっぱい。:2008/10/11(土) 08:21:15 ID:6VvjVmaq0
昔からウィルス判定くらうって話あるから俺は気にしてないな。
気になる人はデコンパイルして見るだろう。
分からない人のためにソースも同時公開しておけば良いんじゃね。

411 :名無しさん@お腹いっぱい。:2008/10/11(土) 10:37:57 ID:HhUj4YlP0
Alt+Escでタスク切り替えする際、最小化されてるウインドウは表示されませんが、
Alt+Ecsを押す度に実際のウインドウを見ながらタスク切り替えをしたいので、最
小化されているウインドウが選択された時は元のサイズに自動的に戻して表示す
る様にしたいです。

選択されたウインドウが最小化されている場合、Alt+Escの後にEnterを押せば元
のサイズに戻るのですが、単純に下の様に書いてしまうと、最小化されていなか
ったウインドウには当然Enterが送られてしまいます。

LAlt & Esc::
send,!{Esc}{Enter}
Return


Alt+Escで選択されたウインドウの指定ができれば、最小化されている時にだけEnter
を押すとか、元のサイズに戻す様に書けばいいのでしょうが、Alt+Escを押してタスク
バー上で選択されたウインドウの情報の取得方法が判りません。
Alt+Escを押してタスクバー上で選択されたウインドウの情報は、どうやって取得すれ
ば良いのでしょうか?

412 :名無しさん@お腹いっぱい。:2008/10/11(土) 11:03:55 ID:6VvjVmaq0
選択された段階でアクティブになってるわけで、
アクティブウィンドウの情報取得したら良いんじゃないかな。

413 :名無しさん@お腹いっぱい。:2008/10/11(土) 11:05:17 ID:luOuTvV50
>>411
こんな感じかなぁ…
[Alt] + [Esc] 押下で切り替わったアクティブウィンドウの状態を見て最小化してたら最小化を解除。

キー押下後はタイマじゃなくて WinWaitNotActive だと思うんだけど
うまく動かんから、100ms待つようにした。


~!Esc::
 SetTimer, HOGE, 100
 return

HOGE:
 SetTimer, HOGE, off
 WinGet, state, MinMax, A
 If (state < 0) {
  WinRestore, A
 }
 return


414 :411:2008/10/11(土) 12:11:01 ID:wjcqX3UEO
>>412,>>413
THXです。
Alt+Escで切り替えた時に最小化されてないウィンドウが表示されてもタイトルバーは濃い青色にならないので、てっきりその時点でアクティブになってる訳ではないのかと思ってました。orz
後で試してみますね。

415 :名無しさん@お腹いっぱい。:2008/10/11(土) 17:50:10 ID:6VvjVmaq0
試してみたら、最小化状態ではAlt+Escで選択されない窓もあるみたいだね。
選択されたウィンドウなら操作可能だけど、違うなら全ての窓情報を取得しなきゃならないし

面倒だから一回全ての窓を元に戻してしまう案を提示。
~!Esc::WinMinimizeAllUndo

416 :名無しさん@お腹いっぱい。:2008/10/11(土) 18:59:36 ID:N1/FDCsW0
397です
VBAでのサンプルを参考に以下のものを作りましたがVBAの場合と同様に
"HttpSendRequestA"の戻り値が0(false)になります
どこがいけないのでしょうか

Server := "http://www3.nict.go.jp/cgi-bin/JST.pl"
Url := "/cgi-bin/JST.pl"
Buff =
VarSetCapacity(Buff, 4096)

Hnd0 := DllCall("wininet\InternetOpenA", "str", "", "UInt", 0, "str", "", "str", "", "uint", 0)
Hnd1 := DllCall("wininet\InternetConnectA", "uint", Hnd0, "str", Server, "uint", 80, "str", "", "str", "", "uint" , 3, "uint", 0, "uint", 0)
Hnd2 := DllCall("wininet\HttpOpenRequestA", "uint", Hnd1, "str", "GET", "str", Server, "str", "HTTP/1.1",
"str", "", "uint", 0, "uint", 0, "uint", &H80000000)
ret := DllCall("wininet\HttpSendRequestA", "uint", Hnd2, "str", "", "uint", 0, "str", "", "uint", 0)
ret := DllCall("wininet\HttpQueryInfoA", "uint", Hnd2, "uint", 9, "str", Buff, "uint", 4096, "uint", 0)
ret := DllCall("wininet\InternetCloseHandle", "uint", Hnd0)


417 :名無しさん@お腹いっぱい。:2008/10/11(土) 19:04:26 ID:wjcqX3UEO
>>415
ありがとです。
少し試してみましたが、WinMinimizeAllUndoだと元のサイズに戻らないですね。
流行らせるページ見るとWinMinimizeAllで最小化したのを元に戻すとなってるので、普通に最小化したのはダメなのかな…。
ちなみに、一旦WinMinimizeAllしてからWinMinimizeAllUndoしてみたけどグダグダでした。w
>>413をベースにタイマー無しで処理が速くてかつ確実に動く方法を模索してみます。

418 :名無しさん@お腹いっぱい。:2008/10/11(土) 19:39:43 ID:luOuTvV50
ntp を時刻同期以外の目的で利用する意味が分からん。
ま〜、ahkのコマンドだけでntp時刻取りたいなら、インチキくさいけど出来なくもない。
file i/o の分遅くなりそうだけど

参考) ttp://www2.nict.go.jp/w/w114/tsp/PubNtp/clients.html


ntp_url := "http://ntp-b1.nict.go.jp/cgi-bin/ntp"
tmp_file := "$$ntp." . A_Now

AutoTrim, On
URLDownloadToFile, %ntp_url%, %tmp_file%
if (ERRORLEVEL == 0) {
 FileRead, data, %tmp_file%
 Loop, READ, %tmp_file%
 {
  if (A_Index = 4) {
   ntp := A_LoopReadLine
   break
  }
 }
 FileDelete, %tmp_file%
}

MsgBox, %ntp%


419 :名無しさん@お腹いっぱい。:2008/10/11(土) 22:04:04 ID:5jgQDG2P0
>>416
最初の行の InternetOpenA以外全部 0が帰ってきているみたいだが?
つか InternetOpenUrl 使うのじゃあかんのか? VBAではそれで読めていたが。

420 :417:2008/10/11(土) 22:44:21 ID:HhUj4YlP0
Alt+Escの件、とりあえずこんな風にしてみました。
問題無く動いてます。

Lalt & Esc::
WinGetTitle, Actvnow, A
Send,!{Esc}
WinWaitNotActive, %Actvnow%
WinGet, state, MinMax, A
If (state < 0) {
WinRestore, A
}
return

421 :名無しさん@お腹いっぱい。:2008/10/11(土) 23:46:03 ID:hVxJvKcM0
>>420
いただきマスタ

422 :名無しさん@お腹いっぱい。:2008/10/12(日) 00:17:35 ID:+SBY7N/r0
便乗だけど、「URLDownloadToFile」を使って、ウェブサーバのデータを落とすとき、
接続先のサーバの応答がないと、スクリプト全体が、全く応答なしになっちゃうよね。

できればタイムアウト時間を指定したいのだけど、なにかうまい回避策ないですか?

423 :名無しさん@お腹いっぱい。:2008/10/12(日) 00:34:51 ID:7GIrls0m0
ダウン用のAHKを単体で作って
EXE化でもしてプロセスを指定秒数で落とす

424 :名無しさん@お腹いっぱい。:2008/10/12(日) 01:05:44 ID:3S/+OxGQ0
まぁ、スレッド殺すとかはできんしね。やろうとすると例外処理とか面倒そうだし
つか、スレッドプログラミングするなら他の言語使った方がいいわな

強いて言えば・・・

- URLDownloadToFile に第3引数をとるようにしてタイムアウトまでの ms 指定が出来るようにする
- 200(OK) 以外の HTTPのステータスコードを ERRORLEVEL にセットする

って感じの要望挙げるとかかねぇ

425 :名無しさん@お腹いっぱい。:2008/10/12(日) 06:33:29 ID:uwJ6cMXl0
>>419
Hnd0-Hnd2は全て異なる8桁の整数値が戻っているので、
ここまでは成功していると思っています
引数の内容から見て問題が起きる余地がなさそうな"HttpSendRequestA"で
失敗しいているのでわけがわからないのです
>>418
時刻同期の目的で利用するつもりでした
もともとは一切非表示で時刻を修正しすぐに終了するソフトがほしかったのです
桜時計をHideを指定して起動してもウィンドウが表示されてしまうので、
自分で作ろうと思ったのです
ところが、最初に書きこんでからどこが悪いのか調べる過程で
NALTと言うソフトなら可能なことを知ってしまったので、
もう作る必要はなくなってしまいました(私が馬鹿でした)
ですが>>398さんのいわれるように、構造体も使われていないものすら
扱えないようではどうにもならないので調べ続けました
今はただ理由が知りたいだけなのです






426 :420:2008/10/12(日) 08:34:37 ID:1FQqzDgQO
>>421
初心者ですのではたして変数の使い方とか合ってるのかどうか…

おかしい点あれば教えてくださいませ〜。

427 :名無しさん@お腹いっぱい。:2008/10/12(日) 23:00:58 ID:lhPtcI5L0
ttp://lukewarm.s101.xrea.com/commands/ImageSearch.htmlを使おうとしたんですが
左上からの座標ってどこで調べられます?

428 :名無しさん@お腹いっぱい。:2008/10/12(日) 23:23:16 ID:2vZw7J800
WindowSpy(AU3_Spy.exe)ってのがついてくるし、
後はMouseGetPosのsampleも使えるだろう。

429 :名無しさん@お腹いっぱい。:2008/10/12(日) 23:46:27 ID:lhPtcI5L0
>>428
うおwwindows spyすげえ
ありがとうございます。 

430 :名無しさん@お腹いっぱい。:2008/10/13(月) 02:04:44 ID:ismKInLm0
>>425
DllCall()で結果が帰ってくるまでに時間掛かるような場合はLoadLibrary/FreeLibrary使う。DllCall()の落とし穴なので注意。
(流行らせるページのDllCall()の項参照。)
あと、色々間違ってるから慌てずよく見直したほうがいい。

431 :名無しさん@お腹いっぱい。:2008/10/13(月) 11:47:34 ID:1QVI2Wk90
>>420
これいいね、いただきますた

432 :名無しさん@お腹いっぱい。:2008/10/13(月) 16:53:31 ID:n1CWwn+a0
Temporary Internet Filesのファイルを削除するにはどうすればよいかな
ファイラー等でTemporary Internet Filesを開いた状態だと削除できるんだけど
単体だとアクセスできないのか消えないんだよね

433 :名無しさん@お腹いっぱい。:2008/10/13(月) 17:00:50 ID:7E46+GkE0
一時的にフォルダのシステム属性を解除してからとか
というか、かつてAHKでやって出来たような気がするけど…
98の時だったからかな?

434 :名無しさん@お腹いっぱい。:2008/10/14(火) 19:03:23 ID:H5eeLHV40
>>430
下のように直してみましたが結果は全く同じでした

Domain:="http://www3.nict.go.jp"
Url:="/cgi-bin/JST.pl"
Buff=
VarSetCapacity(Buff,1024)
hModule:=DllCall("LoadLibrary",Str,"WinInet.Dll")
Hnd0:=DllCall("wininet.dll\InternetOpenA","Int",0,"UInt",0,"Int",0,"Int",0,"UInt",0)
Hnd1:=DllCall("wininet.dll\InternetConnectA","UInt",Hnd0,"Str",Domain,"Int",80,"Int",0,"Int",0,"Int",3,"Int",0,"UInt*",0)
Hnd2:=DllCall("wininet.dll\HttpOpenRequestA","UInt",Hnd1,"Str","GET","Str",Url,"Str","HTTP/1.1","Int",0,"Int",0,"Int",0,"UInt*",0)
ret:=DllCall("wininet.dll\HttpSendRequestA","UInt",Hnd2,"Int",0,"Int",0,"Int",0,"Int",0)
ret:=DllCall("wininet.dll\HttpQueryInfoA","UInt",Hnd2,"UInt",9,"Str",Buff,"UInt",1024,"UInt",0)
ret:=DllCall("wininet.dll\InternetCloseHandle","UInt",Hnd0)
DllCall("FreeLibrary",UInt,hModule)


435 :名無しさん@お腹いっぱい。:2008/10/14(火) 21:53:59 ID:BzCC6lY10
WindowSpy機能をつかって表示させた内容の、取得方法について質問です。

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN: ToolbarWindow321
Text: あいうえお
Color: 0xC8D0D4 (Blue=C8 Green=D0 Red=D4)

ClassNNは、WinGetClassで取得できたのですが、
マウスカーソル下の「Text」を取得する方法がわかりません。

やりたいことは、マウスカーソル下のボタンに書かれたテキストを抜き出して
各種判別をしたいのですが、Textを取得するには、どのように書けばよいでしょうか。

436 :名無しさん@お腹いっぱい。:2008/10/14(火) 22:01:44 ID:oVSIRSMT0
MouseGetPos で マウスの下のコントロールのClassNN取ってControlGetText
うまくいかないなら
MouseGetPos で マウスの下のコントロールのハンドル取ってWinGetText

437 :名無しさん@お腹いっぱい。:2008/10/14(火) 23:58:22 ID:BzCC6lY10
>>436
アドバイスありがとうございます。
ControlGetTextで取得できました。

438 :名無しさん@お腹いっぱい。:2008/10/15(水) 01:07:22 ID:uwVlIRsA0
>>434
サーバ名・バッファサイズ。


結果変わらないとか何言ってるんだと思ったら、
>>425よくみたらそっちの環境だとLoadLibraryしなくてもハンドル帰ってきてるんだ?
うちだとハンドル取得失敗するんだが。

439 :名無しさん@お腹いっぱい。:2008/10/15(水) 06:39:19 ID:ziDSVtuk0
>>438
Server := "133.243.3.34"
VarSetCapacity(Buff, 65536)
で成功しました
大変ありがとうございました
正直NALTの2倍リソースを消費するので使う意味は無いのですが、
苦労したので何か愛着が沸いてきました
ちなみにLoadLibraryの有無にかかわらずハンドルの値は同じでした


440 :名無しさん@お腹いっぱい。:2008/10/15(水) 07:53:17 ID:uwVlIRsA0
>>438
別にIPアドレスでもいいけど。http://が余計なだけ。

それとバッファサイズはそんなに要らんはず。
指摘したところはHttpQueryInfo()の引数。バッファサイズはLPDWORDで欲しがってるので、
"UInt*", BuffSizeみたいな感じで変数経由で渡す。数値そのまま渡しちゃだめ。
なんでかっつーと、そこで指定したメモリ上に値が戻ってくるから。
関数実行後にサイズが戻ってきてるはず。変数見てみると良い。

"UInt", 65536とか"UIntP", 65536とかってやって動いてるとしたらたまたまかも。
これだと、分けわからんアドレス見に行くことになると思うよ。

441 :名無しさん@お腹いっぱい。:2008/10/15(水) 07:54:08 ID:uwVlIRsA0
みすったw
>>440>>439宛w

442 :名無しさん@お腹いっぱい。:2008/10/15(水) 10:02:12 ID:i1/kjF120
Ctrl+無変換+??
みたいな組み合わせって指定できないの?
Ctrl+??で無変換の状態を調べて分岐って形になるのかな。
これに手を出すともう覚えきれなくなりそうだけどw

443 :名無しさん@お腹いっぱい。:2008/10/15(水) 10:28:55 ID:yl296Yfj0
漏れは逆でやってるなぁ。

vk1Dsc07B & x::
if (GetKeyState("Ctrl", "P"))
MsgBox, Ctrlあり
else
MsgBox, そのまま
return

444 :名無しさん@お腹いっぱい。:2008/10/15(水) 15:07:27 ID:BdGJDERC0
雑多なテキストファイルを

FileRead,data,C:\textfile.txt
Loop,Parse,data,`n,`r`n
 {
 いろいろ
 }

で回す処理をしてると、実際の改行数と、ループを回した回数が違うことがあります。

原因を調べてみたら、テキストファイルに、本来無いはずの0x00が含まれていると、
その行でLoop処理が終わってしまうようです。

これはAutoHotkeyの仕様通りと言えばそうなのですが、
AutoHotkey単独の機能で、ファイルから0x00だけを除去する方法はないでしょうか。

445 :名無しさん@お腹いっぱい。:2008/10/15(水) 15:15:21 ID:9H8NS7KR0
>変数の内容文字列としてアクセスできるのは最初のnull文字以前の部分だけだが、
>DllCallなどを使用することで全ての内容にアクセスすることができる。

446 :名無しさん@お腹いっぱい。:2008/10/15(水) 15:44:52 ID:yl296Yfj0
ま、仕様だから諦めじゃね
つか、なぜバッファリング(Loop,READ)しないんだろう。

447 :名無しさん@お腹いっぱい。:2008/10/15(水) 16:42:08 ID:BdGJDERC0
>>445-446
Loop,Readをつかったら0x00のあとも読み込め、とりあえず解決しました。thanxです。

dllは、こちらを見てみましたが、ファイルを新規に作成して書き出すサンプルのようで、
ファイルを読むだけの使い方を理解できませんでした。
http://lukewarm.s101.xrea.com/commands/DllCall.html

最初に変数として読んだ理由は、FileRead〜Loopの前でstringsplitをつかって`nを数えて、
その数を進捗状況表示(プログレスバー)の処理ラインの総数値として使うためでした。

Loop,Readにすると、ループ処理前に改行の数をカウントしなきゃいけないですね。
本番ループの前でこうやって逃げましたが、もっと効率のよい方法はありますか?

linecount=0
Loop, Read,%file%
 {
 linecount++
 }

Loop, Read,%file%
 {
 本番
 (プログレスバー現在値%A_Index%/総数%linecount%)
 }

448 :名無しさん@お腹いっぱい。:2008/10/15(水) 16:52:22 ID:gEIfW8tz0
ちょっと教えてください
以下のように実行したRunWaitコマンドの返値を拾ってきたいのですが、
   RunWait,C:\Ruby\SearchWordGoo.exe "%word%"
取得する方法はあるでしょうか?

~vk1Dsc07B & q:: ;; // 選択範囲の単語の意味をタスクバーに表示したい
clipboard=
Send,^c
ClipWait
SetEnv,word,%clipboard%
RunWait,C:\Ruby\SearchWordGoo.exe "%word%" // ネットから取得
contents= ;; // contentsに返値を渡したい
TrayTip,Goo検索,%contents%
SetTimer, RemoveTrayTip, 20000
return

449 :名無しさん@お腹いっぱい。:2008/10/15(水) 17:38:21 ID:9Kz+u0qR0
普通コマンドの返値というとErrorLevelのことなんだが、それじゃないよな
そのSearchWordGoo.exeとやらの仕様が分からんから何とも言えんが、
結果が標準出力に出るんなら、ファイルにリダイレクトすれば?


450 :448:2008/10/15(水) 18:15:32 ID:gEIfW8tz0
>結果が標準出力に出るんなら、ファイルにリダイレクトすれば?
標準出力に出ます
一回ファイルに落とさないとダメそうですか…
ありがとうございます

451 :名無しさん@お腹いっぱい。:2008/10/15(水) 19:58:52 ID:xLs8hokh0
>>440
>
"UInt", 65536とか"UIntP", 65536とかってやって動いてるとしたらたまたまかも。
どうもそのようです
何度も繰り返すとバッファが空の回数が多くなります
これで今まで使えなかったDLLのいくつかが使えるようになるかもしれません
ありがとうございました


452 :名無しさん@お腹いっぱい。:2008/10/15(水) 22:30:53 ID:yl296Yfj0
>>447
固定長データ形式ならファイルサイズを指定バイト数で割る(性善説)でいいはずだけど・・・
そうでないならそのやり方でいいんじゃないかと

453 :名無しさん@お腹いっぱい。:2008/10/15(水) 23:18:33 ID:BdGJDERC0
>>452
なるほど了解です。ありがとうございます。

進捗状況表示のためだけで同名へのファイルアクセスが
2度発生してしまうのが、ちと悔しいですが、気にしないことにします。

454 :名無しさん@お腹いっぱい。:2008/10/15(水) 23:32:03 ID:PTOuV44i0
>>450
cmdret.dllなり流行らせるページのStdIO.zip使うなりすればおk。
これちょくちょく質問にあがるからテンプレ入れといたほうが良いか?

455 :名無しさん@お腹いっぱい。:2008/10/16(木) 15:17:20 ID:svMF3G070
独立したahkスクリプトに対して、既にそのスクリプトがが起動していたら引数を渡すだけ、ということは可能なのでしょうか。

Run,Autohotkey.exe hoge.ahk "hogehoge"
みたいな感じで起動して、hoge.ahkが既に存在しているならhogehogeを渡したいのですが。

やりたいのは、一般的なメディアプレーヤーみたいにプレイヤーが立ち上がってたらそれでファイルを再生、そうでなければ起動+再生みたいなことです。

456 :名無しさん@お腹いっぱい。:2008/10/16(木) 15:59:06 ID:kJCo53f30
引数をFileAppendでファイルに保存させ、
TimerかLoopのIfExistでファイルを監視して
それが存在するようになったらそれを読み取って変数に入れる、とか
(読み取ったら破棄する)
うまくやんないと処理中の変数を上書きするかもしれん

多分もっとム的にスマートな方法はある

457 :名無しさん@お腹いっぱい。:2008/10/16(木) 16:50:37 ID:JCUO9F070
AHK同士での連携、俺も知りたいな。

外部ファイルの参照以外なら、たとえばGUIコマンドで画面上に隠しウインドウを作っておき、
そのタイトル情報に交信メッセージを仕込んで参照させるとか。
ControlGetTextで受信し、返事をしたいときは返信用GUIをつくってGuicontrolで随時更新。
いわゆる半二重通信か。

458 :名無しさん@お腹いっぱい。:2008/10/16(木) 17:03:24 ID:JCUO9F070
複数のAHKで、俺も便乗質問。

たとえば「wheelDown」に対するアクションが入った常駐スクリプトを2つ同時に起動すると、
後に起動したスクリプトのみがwheelDownに反応して、以前から起動していたスクリプトは、
マウスをwheelDownしても無反応になってしまう。(スクリプトは動いているが、情報をとれない)

使いたい機能ごとにスクリプトを分離したものの、1つ起動なら問題ないけど
2つを同時に起動してると、この症状になってしまい、困ってます。

これを、全部反応させる方法はないですかね?

459 :名無しさん@お腹いっぱい。:2008/10/16(木) 17:31:22 ID:VvDOPDEt0
入力メッセージを透過させたいなら ~ を付ける
そもそも、ahkはある層で入力メッセージを見て何かするって訳で、
~ 付けてなきゃ次の層にわたさんって事な訳だから・・・

つか、キー・マウス系のモノは同一ファイルで定義した方がよくね?
ホットキーとかで機能切り替えするとかでさ
まぁ、お節介かもしれんが。

460 :名無しさん@お腹いっぱい。:2008/10/16(木) 19:11:01 ID:VZ8xmIkr0
>>455
既に起動しているスクリプトに起動パラメータで引数渡すのはたぶん無理
やりたかったらGUIでGuiDropFilesラベル有効にしといて
cdropや管理人さんのファイルドロップ関数で渡してやるのが簡単なんじゃないかな。
それか OnMessage() か RegisterCallback() あたり使うとか。

461 :名無しさん@お腹いっぱい。:2008/10/16(木) 20:24:03 ID:JCUO9F070
>>459
言われてみればその通りかも。ファイル構成を再検討してみます。

AHK同士の連携は、>>460のGuiDropFiles法でいとも簡単にできました。
こんな便利な方法があったとは。

462 :名無しさん@お腹いっぱい。:2008/10/16(木) 21:33:27 ID:fMEJrfUp0
gotoはややこしくなるからなるべく避けろとよく言われますが
避けるためにたとえばどんな命令を使うことが考えられますか?

463 :名無しさん@お腹いっぱい。:2008/10/16(木) 21:59:58 ID:roBaHQBT0
ifで分岐、関数やサブルーチンを作って呼び出す、とか。

ただ、Gotoを使った方がスマートにできる場合もあるので、絶対Goto禁止という意見には賛同しない。

464 :名無しさん@お腹いっぱい。:2008/10/16(木) 22:18:51 ID:fMEJrfUp0
なるほど。ありがとうございます。

465 :名無しさん@お腹いっぱい。:2008/10/16(木) 23:03:39 ID:VZ8xmIkr0
GoToはGoSubがなかった頃の名残なので、なるべくならサブルーチン化してGoSub使うのがいいよ。
けど関数内でローカルラベルとして使えるのはいいね。VBチックでやりやすい

466 :名無しさん@お腹いっぱい。:2008/10/17(金) 00:46:14 ID:d6fSaetH0
goto(or相当)は最早シェルスクリプトとかバッチくらいでしか使わないなぁ

467 :名無しさん@お腹いっぱい。:2008/10/17(金) 09:17:28 ID:2GB5Bkta0
try〜catchがあればgotoは不要なんだけどな

468 :名無しさん@お腹いっぱい。:2008/10/17(金) 14:34:37 ID:iU8xfsNz0
Fittleというプレイヤーを閉じたいのですが、
閉じれません。
http://hp.vector.co.jp/authors/VA039869/
--------------------------------------------------------------------------
DetectHiddenWindows,On ;非表示のウィンドウを対象に含めるようにする
ControlSend,,!{F4},ahk_class Fittle
return ;ホットキーサブルーチンを終了
--------------------------------------------------------------------------
っていうか他のアプリでも閉じれないのですが、
記述が間違っているのでしょうか?

469 :名無しさん@お腹いっぱい。:2008/10/17(金) 16:17:14 ID:yGiIJT6E0
WinCloseじゃだめなの?

470 :名無しさん@お腹いっぱい。:2008/10/17(金) 17:07:26 ID:iU8xfsNz0
>>469
できました。
さんくすです。

471 :名無しさん@お腹いっぱい。:2008/10/17(金) 22:48:51 ID:udXFy1ej0
ImageSearchでErrorLevelが0だったら、1だった場合に実行するコマンドの前に一つコマンドを実行する
ようにする場合って、IF式で場合分けして両方のパターンを書くしかないんでしょうか?
1だった場合と同じ動作をするようにする方法ありませんか?

472 :名無しさん@お腹いっぱい。:2008/10/17(金) 22:53:06 ID:udXFy1ej0
>>471
すみません、途中で送信してしまいました。
こういう事するのは慣れてなくて、意味不明なことや、皆さんには造作もないような事を聞いてるかもしれませんが、お願いします。

473 :名無しさん@お腹いっぱい。:2008/10/17(金) 23:04:24 ID:d6fSaetH0
if 判定式
{
 判定が真の場合やりたいこと@
 共通の事項A
} else {
 共通の事項(=A)
}

ってこと?

それなら
if 判定式
{
 判定が真の場合やりたいこと@
}
共通事項A

って出来るけど。

まぁ、ahkでプログラミング最初ってなら分からなくもないけど

474 :名無しさん@お腹いっぱい。:2008/10/17(金) 23:17:53 ID:d6fSaetH0
しかし、スパゲッティな言語仕様はどうにかならんもんかねぇ。

変数に仕える文字ってよく分からんw

[OK]
arr[0] := 1
変数1 := "変数1の値"
MsgBox, %arr[0]%`n%変数1%

[NG]
arg(0) := 100
arg.1 := 1000
表示 := "変数「表示」の内容"


475 :名無しさん@お腹いっぱい。:2008/10/17(金) 23:58:23 ID:udXFy1ej0
>>473
そういう事です。ありがとうございます。
画面が初期画面に戻っていた場合、やりたい操作を出来るようにするために必要でした。
これがプログラム初めてです。HTMLくらいしか触ったことなくて

476 :名無しさん@お腹いっぱい。:2008/10/18(土) 00:09:56 ID:VdH8byek0
ゲムとかでDirectXかなんかで全画面表示にするってのがあるけど、
その状態ってAHKで取得できるもん?

WinGet, state, MinMax じゃ無理だった・・・
A_ScreenWidth, A_ScreenHeight か SysGet で判定なのかな。


477 :名無しさん@お腹いっぱい。:2008/10/18(土) 08:16:35 ID:/CmbmXTf0
クリップボードの監視をして過去10回くらいを記憶して
無変換+Vで履歴の新しいものから吐き出してくようなスクリプトってないですか?

478 :名無しさん@お腹いっぱい。:2008/10/18(土) 09:26:05 ID:Dbxtkam+0
クリップボード履歴はあぷろだに昔それっぽいのがあったような。
探してみたら? 自分で書いたほうが早いような気もするが
http://lukewarm.s101.xrea.com/up/

479 :名無しさん@お腹いっぱい。:2008/10/18(土) 11:05:52 ID:LOXe/db40
AutoHotkey(zip版)をインストールして、起動するとMyDocumentsに「AutoHotkey.ahk」が作成されて、「AutoHotkey.ini」が作成されないんだけど、どうやったらiniが作成されるの?

480 :名無しさん@お腹いっぱい。:2008/10/18(土) 11:22:23 ID:ZNWdlfy+0
右クリックから作成。
またはAutoHotkey.ahkをAutoHotkey.exeにあるフォルダにコピーして改名でもOKだよ。
ただのテキストファイルだし。

481 :名無しさん@お腹いっぱい。:2008/10/18(土) 17:14:52 ID:oq5uYxXp0
gui作るとき各コントロールの位置決めに手こずる
もっと楽に配置できないかなぁ

482 :名無しさん@お腹いっぱい。:2008/10/18(土) 17:31:04 ID:h5J138XZ0
たしかにGUI、慣れるまでは大変だし、たとえ慣れても座標を頭で計算するのが面倒だ。

GUI,addコマンドの配置をWindows画面上で作る外部GUIツール、なんてのがあったら
最初の位置決めが大幅に楽になるのだけど、そんなツールがあったらいいのにね。

483 :名無しさん@お腹いっぱい。:2008/10/18(土) 17:50:17 ID:/M8Hao4l0
SmartGUIじゃ駄目なのか

484 :名無しさん@お腹いっぱい。:2008/10/18(土) 18:34:17 ID:VdH8byek0
483はオヒサルに逝けば吉と言っている

485 :名無しさん@お腹いっぱい。:2008/10/18(土) 20:14:33 ID:vqNgYQjc0
初歩的な質問申し訳ありません、自分では原因が分からないので質問させて下さい
特定のキーを押すとそのキーが2回押されたことになるようにしたいのですが

key::
send,{key 2}

というように組むと、そのkeyを入力しても反応が無くなってしまいました
2行目のkeyを別のkeyに変えればそのkeyが2回押されたことにはなるのですが、それだと少々不便です
何かヒントのようなものは頂けないでしょうか

486 :名無しさん@お腹いっぱい。:2008/10/18(土) 20:38:31 ID:vOSviKgh0
ここの住人はバカなので、情報無しに答えることは出来ません。
エスパースレで聞いて下さい。

487 :名無しさん@お腹いっぱい。:2008/10/18(土) 21:05:12 ID:oq5uYxXp0
SmartGUIなんてもんがあったんだな
ちょっと遊んでみたけどいい感じ

>>485
俺も馬鹿だけど
key::
Loop,2
send,{key}
これでいいんじゃね

488 :名無しさん@お腹いっぱい。:2008/10/18(土) 21:11:42 ID:h5J138XZ0
>>483-484
さっそく使ってみた。
このソフト、俺の求めていたそのものだった。情報ありがと。

489 :名無しさん@お腹いっぱい。:2008/10/18(土) 21:42:17 ID:yKDJUjMT0
自分で自分をSendするとループにはまって抜け出せないんじゃね
何か工夫がいると思うよ

490 :名無しさん@お腹いっぱい。:2008/10/18(土) 21:48:46 ID:xVefLf3AO
>>485
$key:: Send, {key 2}
とか
~key:: Send, {key}
とか

491 :名無しさん@お腹いっぱい。:2008/10/18(土) 22:28:07 ID:qQ6/pucO0
おしえてください
バックグラウンドのウィンドウにダブルクリックやドラッグ送りたいんですけどどう書けばいいですか

492 :名無しさん@お腹いっぱい。:2008/10/18(土) 23:37:31 ID:XhYV8gQT0
サイト丸写しのコードなんですが、

imagesearch, 502, 156,1425, 730, C:\ahk\kennsaku-top.bmp
if ErrorLevel = 2
MsgBox Could not conduct the search.
else if ErrorLevel = 1
MsgBox Icon could not be found on the screen.
else
MsgBox The icon was found at %FoundX%x%FoundY%.

これを作動させると
Line text: \ahk\kennsaku-top.bmp
the leftmost character above is illegal an expression
と言われてしまいます。ファイル名の指定の仕方が不味いのだと思うのですが、日本語のない位置にしたり、
ドライブをFからCにしてみたりしたりして、こうなったのですがそれでも駄目です。
何が不味いんでしょうか?

493 :名無しさん@お腹いっぱい。:2008/10/19(日) 00:07:40 ID:GXVyJ5KF0
>>487,489,490
解答頂きありがとうございます
最終的に>>490のでできるようになりました

494 :名無しさん@お腹いっぱい。:2008/10/19(日) 00:31:47 ID:Dagf8aRu0
>>492
大文字で書いてるからじゃね?

495 :名無しさん@お腹いっぱい。:2008/10/19(日) 00:41:56 ID:A+/uc/Cz0
>>485
解決したみたいだけど原因分かってないみたいだから一応
行分けするなら最後にreturn入れろ

496 :名無しさん@お腹いっぱい。:2008/10/19(日) 01:02:52 ID:crwzvbt80
>>492
OutputVarX, Yを省略してるんだから、x1,y1,x2,y2の前にカンマが2つ必要
imagesearch,,, 502, 156,1425, 730, C:\ahk\kennsaku-top.bmp

497 :名無しさん@お腹いっぱい。:2008/10/19(日) 10:55:28 ID:fw93GEsG0
>>494
そうではなかったようです。

>>496
おお!ビンゴです。ありがとうございます。省略可はカンマの中だけだったんですね。

498 :名無しさん@お腹いっぱい。:2008/10/19(日) 17:01:06 ID:B6VPtb+y0
本体スクリプトの初期化プロセス内で、#Include でサブスクリプトを統合する際、
このサブスクリプトの初期化プロセスに return があると本体スクリプトの #Include
以下が実行されません。

ヘルプにはこの件に関して、
A script behaves as though the included file's contents are physically
present at the exact position of the #Include directive (as though a
copy-and-paste were done from the included file).
とあるので、仕様として #Include はサブルーチン的には作用しないと理解しています。

しかし結構不便なので、どなたか良いテクニックをお持ちでしたら教えて下さい。

499 :名無しさん@お腹いっぱい。:2008/10/19(日) 17:45:54 ID:A+/uc/Cz0
最初にreturnを入れてから#includeする。

--- include元 ---
Autoexecute:
  Gosub,hoge_init
return
#include hoge.ahk ; include系列挙


--- include先 hoge.ahk ---
hoge_init:
  初期化処理
return



500 :名無しさん@お腹いっぱい。:2008/10/19(日) 18:07:57 ID:FN1UJT3v0
#IncludeLast とかあればいいのにな

501 :名無しさん@お腹いっぱい。:2008/10/19(日) 18:08:07 ID:A+/uc/Cz0
ああ、また的外れなこと書いたかも。
#Include以下に処理を持ってきたい場合はこんな感じでやってる

Autoexecute:
  Gosub,init
return
#include hoge.ahk ; include系列挙
#include …

init:
  Gosub,hoge_init
  …
  …
return


502 :名無しさん@お腹いっぱい。:2008/10/19(日) 18:12:12 ID:2+hjMZuU0
Gui,Add,Text,,%A_Hour%:%A_Min%:%A_Sec%.%A_MSec%
Gui,Show
Loop
GuiControl,Text,Static1,%A_Hour%:%A_Min%:%A_Sec%.%A_MSec%

という記述で時刻をリアルタイムで表示させてみたのですが
やたらチラチラします
ご指導ください

503 :名無しさん@お腹いっぱい。:2008/10/19(日) 18:30:31 ID:A+/uc/Cz0
Loop
{
now = %A_Hour%:%A_Min%:%A_Sec%.%A_MSec%
if (sav != now)
{
GuiControl,Text,Static1,%now%
sav := now
}
}

これでもまだチラ付きが気になるならHMSとmsec以下とラベルを分けるといい

504 :名無しさん@お腹いっぱい。:2008/10/19(日) 18:46:10 ID:2+hjMZuU0
>>503
おおなるほど
Msecだけ分けてやってみます
ありがとう

505 :名無しさん@お腹いっぱい。:2008/10/19(日) 20:03:01 ID:B6VPtb+y0
>>501
なるほど、最初に return を入れてから #include する方法でできました。
結局本体スクリプトから副スクリプトの初期化ルーチンを呼び出さないといけないんですね。

506 :名無しさん@お腹いっぱい。:2008/10/20(月) 04:21:16 ID:X3UbajFG0
Gui,ShowとかWinShowでウィンドウを表示するときに、
いきなり半透明で表示ってできますか?
Gui,Show, Hideで半透明を指定してからShowしても効かないし、
スタイル指定の+E0x00000020を使っても無理っぽい。

507 :名無しさん@お腹いっぱい。:2008/10/20(月) 07:03:54 ID:w4uJnb5P0
>>506
あの、一瞬半透明じゃない表示がされるのが気にくわないのかな。
画面領域外でウィンドウを表示させてからWinSet, Transしてやって、
画面内にWinMoveさせればできると思うけど。

508 :名無しさん@お腹いっぱい。:2008/10/20(月) 08:25:49 ID:X3UbajFG0
>>507
助かった―、ありがと。やりたいことと反して井の中の蛙だったw
仮想デスクトップで切り替えたデスクトップ番号を浮かび上がらせようとしてたんだけど、
一瞬のちらつきで雰囲気が全然違くて…

まあ、仮想デスクトップ自体あんまり使わないんだけど、
同じく使わない付箋ソフトを組み合わせるといいかもと思って。

509 :名無しさん@お腹いっぱい。:2008/10/20(月) 09:16:04 ID:X3UbajFG0
>>364
遅レスだけど、拾い物。tooltipっぽくはなる。
CoordMode, Mouse, Screen
loop,C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\*.jpg,0,0
{
Image = %A_LoopFileFullPath%
MouseGetPos, X, Y
ImageX := X + 20 ;Change "20" to your own needs etc.
ImageY := Y + 20 ; Same here
SplashImage, %image%, B X%ImageX% Y%ImageY%,sub,%A_LoopFileFullPath%
sleep 1000 ; Change this value as you wish. Lower numbers = much flashing, higher numbers = slow update
}
return

510 :名無しさん@お腹いっぱい。:2008/10/20(月) 16:25:28 ID:5iJTOeYmP
Lil Builderって保存できないの?

511 :名無しさん@お腹いっぱい。:2008/10/21(火) 07:18:22 ID:eEBag0O20
実行中のスクリプトを途中で止める方法はありますか?

512 :名無しさん@お腹いっぱい。:2008/10/21(火) 07:34:13 ID:DarZwPxn0
>>511
みぎくり→ぱうせ

513 :名無しさん@お腹いっぱい。:2008/10/21(火) 08:22:15 ID:eEBag0O20
すいませんマウス操作するスクリプトなので終わるまでマウス使えません

514 :名無しさん@お腹いっぱい。:2008/10/21(火) 09:07:05 ID:3AktAcK90
適当なキー(以下ではF12)に何か割り当て汁。
最後の行にでも追加すればいい

; 一時停止(トグル)
F12::Pause

; スクリプト終了
^F12::ExitApp

; 再起動
+F12::Reload

515 :名無しさん@お腹いっぱい。:2008/10/21(火) 10:01:38 ID:lKFI1K+80
マウス制御乗っ取り系のスクリプト書いてんなら
キーボードのみでタスクマネージャ起動してプロセス終了させるくらいは
できるようになっといたほうがいいと思う。

516 :名無しさん@お腹いっぱい。:2008/10/21(火) 15:55:45 ID:JXuzlJsd0
デスクトップ作業領域の高さを一発で取得できないのか
A_ScreenHeightからahk_class Shell_TrayWndの高さ分を引いて出す方法しかないのかね

517 :72:2008/10/21(火) 16:52:44 ID:7G2J1pBD0
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/65
流行らせるページの管理人のスクリプトを関数にして
ポインティングデバイスに触れている指の数を返り値にしたいんだけど。
そっくりほぼそのまま関数にして、bbb := Thumb()で代入、ツールチップ表示をすると
最初の数秒しか指の数の取得ができない。途中からいくら指を触れても0になる。
原因がわかりますか?関数にしなきゃいいんだろうけど、libフォルダに置いて手軽に使いたくて。

Malloc(size,flag=0x40){
return DllCall("kernel32.dll\GlobalAlloc","UInt",flag,"UInt",size,"UInt")
}
Thumb(){
TP_StartData:=0
TP_DW=0x01000000

ilen:=4*4
ibuf:=Malloc(ilen)
NumPut(TP_DW | 10 ,ibuf+4*0) ; TP_DeviceHandle,
NumPut(TP_DW | 729 ,ibuf+4*1) ; TP_PacketFingerInfo,
NumPut(TP_StartData ,ibuf+4*2) ; TP_StartData,
NumPut(0xFFFFFFFE ,ibuf+4*3)

olen:=4*2
obuf:=Malloc(olen)

dev=\\.\SYNTP
hDev:=DllCall("CreateFileA",Str,dev,UInt,0xC0000000,UInt,3,UInt,0,UInt,3,UInt,80,UInt,0)

DllCall("DeviceIoControl",UInt,hDev,UInt,0x80006004,UInt,ibuf,UInt,ilen,UInt,obuf,UInt,olen,UIntP,bytes,UInt,0)
numFingers:=NumGet(obuf+4) & 0xFF
return numFingers
}

518 :名無しさん@お腹いっぱい。:2008/10/21(火) 23:35:15 ID:rY3ILzjK0
>>516
つ MonitorWorkArea

519 :名無しさん@お腹いっぱい。:2008/10/21(火) 23:36:40 ID:EcFWInH10
「Thumb(){」の位置が違う
解放せずに何度も初期化しちゃ駄目だろ

520 :名無しさん@お腹いっぱい。:2008/10/22(水) 00:23:15 ID:3PhY7/Bf0
>>518
あれっと思ってよくリファレンス見てみたら
上のMonitorの項目のOutputVarBottomっての使うのね
うっかりOutputVarだけで指定しちゃって失敗するわけだ
ようやく気づけたよ有難う

521 :名無しさん@お腹いっぱい。:2008/10/22(水) 01:45:04 ID:8qV1sMxd0
変数に、改行付きテキストが代入されている時 (FileRead で読み込んだり clipboard など)
ある特定の1 行を抽出するにはどんな方法があるでしょうか?

522 :名無しさん@お腹いっぱい。:2008/10/22(水) 02:16:21 ID:00G44ga80
>>519
どうも、助かりました。下の方の3行と他を関数で分けて解決できました。

>DllCallでは、関数実行のたびにDLLをロードして、関数終了後に開放している。
とあるんですが、ここで言う、解放せずに何度も初期化されているのは
kernel32.dll\GlobalAllocで確保されたメモリ領域ってことでしょうか?


523 :名無しさん@お腹いっぱい。:2008/10/22(水) 02:22:04 ID:00G44ga80
>>521
簡単なところでは、
Loop, Parse, InputVar , `r`nで
A_LoopFieldを使って条件式で判定じゃないかな?

524 :名無しさん@お腹いっぱい。:2008/10/22(水) 03:03:19 ID:gZ5F6QJI0
>>523
その方法はけっこう使ってるな。もうひとつ俺がよく使うのは
変数を全部、改行で分割する方法。

stringsplit,var,InputVar,`n

10行目を取りたければvar10を参照する。
全行数を知りたければvar0を参照する。

ほかは参照しない変数として放置。(var**を全部消す方法ってあったっけ?)

>>523の方式と、この方式とで、環境や行数によってパフォーマンスが逆転する。
適材適所で使い分けるようにしているけど、法則はあるのかな?

525 :名無しさん@お腹いっぱい。:2008/10/22(水) 10:40:20 ID:d7xrKVkY0
>>521は、単一の行だけ抜き出すなら、正規表現を使うと一行で書けるよ

正規表現のオプションm)で、^と$が行頭、行末にマッチするようになるので、

 RegExMatch( Target, "m)^ほげほげ=(.*)$", macthStr )

とすると「ほげほげ=〜」で始まる行の、〜の部分が、matchStr1に入る

526 :521:2008/10/22(水) 11:28:58 ID:DzGl9JyB0
>>523-525
みなさんとても有用な情報ありがとうございました。
今回は >>525 の正規表現がベストマッチでした。
RegExMatch で変数に出力するにはどうするのか良く知らなかったので
大変勉強になりました。

それにしても AHK って便利で面白いですね。

527 :名無しさん@お腹いっぱい。:2008/10/22(水) 15:37:59 ID:6POUgahS0
正規表現で、例えば「エラー」または「確認」を含むウィンドウタイトルを選びたい時

IfWinExist, (.*エラー.*|.*確認.*)

と書いてもうまく動きません。
どのように書けばいいんですか?

528 :名無しさん@お腹いっぱい。:2008/10/22(水) 18:10:50 ID:Cgg/j6mZ0
SetTitleMatchMode, RegEx
IfWinExist, (.*エラー.*|.*確認.*)
{
}
と書いたんですが・・・どこが間違えてるんでしょうか?

529 :名無しさん@お腹いっぱい。:2008/10/22(水) 18:17:52 ID:d7xrKVkY0
IfWinExist, (.*エラ\x81\x5b.*|.*確認.*)

で、どう? 「ー」(長音)は2byte目が 0x5b '[' だからエスケープが必要

530 :名無しさん@お腹いっぱい。:2008/10/22(水) 20:20:08 ID:Cgg/j6mZ0
>>529
すごいです。ありがとう!
うまくいきました

531 :名無しさん@お腹いっぱい。:2008/10/22(水) 22:00:40 ID:WIgnXprA0
こういうの見る度に思う。
sjisはもう全廃にしたい、つかunicodeに汁、と。

532 :名無しさん@お腹いっぱい。:2008/10/22(水) 22:56:33 ID:npzLosp20
AutoHotKey_Lに期待してるんだけどな

533 :名無しさん@お腹いっぱい。:2008/10/23(木) 01:12:22 ID:ApC6hDs00
Python,Ruby,Javascript(fiber入り)とかで書けるように、
誰か一から作り直してくれたらいいのに
バッチファイルに似た言語仕様はもう嫌だす

534 :名無しさん@お腹いっぱい。:2008/10/23(木) 08:23:55 ID:qdEfi/KO0
それじゃWSHだなw


535 :名無しさん@お腹いっぱい。:2008/10/23(木) 09:01:47 ID:ApC6hDs00
JScriptでahk相当を実装すればいいんですね
ってなんか違うw

バッチファイル→ahk
WSH(JScript)→?
みたいなキー入出力に特化したのをお願い

536 :名無しさん@お腹いっぱい。:2008/10/23(木) 09:14:55 ID:iUxtlObY0
AutoIt てのは AutoHotKey と同じことができるんでしょうか?
なんかホットキーの設定から難しそうな気がするんですけど

537 :名無しさん@お腹いっぱい。:2008/10/23(木) 09:42:15 ID:qdEfi/KO0
var ahk = WScript.createObject("Autohotkey.Application");

ahk.hotkey("^c", new function() {
 if (ahk.isWinActive("ahk_class hoge")) {
 ahk.send("hoge");
 } else {
  ahk.send("fuga");
 }
);

めんどくせぇ・・・

538 :名無しさん@お腹いっぱい。:2008/10/24(金) 12:13:18 ID:YwYhdZio0
相対パス取得関数を作ったんだけど、
If InputVar2 contains %InputVar1%
msgbox, 同じパス上かもね
If InputVar1 contains %InputVar2%
msgbox, 同じパス上かもね

これって、If文を一行にまとめる事って出来ます?
いまいち書き方がよくわからない。

539 :名無しさん@お腹いっぱい。:2008/10/24(金) 13:04:19 ID:2jbKhYA00
質問の答えとは違うが関連ありそうなのを貼っとく

Path_RelativePathTo(From,atrFrom,To,atrTo)
; 相対パスを作成
; From : ベースパス
; To : 相対にするパス
; atr : ファイル属性を指定
; ディレクトリ 0x10 (FILE_ATTRIBUTE_DIRECTORY)
; ファイル 0x20 (FILE_ATTRIBUTE_ARCHIVE)
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathRelativePathToA", Str,t , str,From, Uint,atrFrom, str,To, Uint,atrTo)
return t
}

Path_CommonPrefix(p1, p2)
; 2つのパス名の先頭から共通するディレクトリ名を取得する
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathCommonPrefixA", Str,p1, Str,p2, str,t)
Return t
}

あと部分一致を調べたいならcontains より ifInstring使ったほうが良くね?

540 :名無しさん@お腹いっぱい。:2008/10/24(金) 13:50:05 ID:YwYhdZio0
>>539
おおっ、ifInstringでやれば問題なさそう。でも、結局ムダで使わなかったorz

Dllでできるんだね。まあ当たり前か、皆使いそうな機能だし。
無知って怖いわ。数十行にわたって、必死こいて作ってたw
その分、使い勝手が良いのがせめてもの救いか。

ありがと、Path関数として永久保存させていただきます。

541 :名無しさん@お腹いっぱい。:2008/10/25(土) 06:53:43 ID:g2fVY4UH0
RButton::send,x
RButton & a::send,y

この状況下で例えばキーボードのbを押し続けながら右クリックをしても
コマンドが発動されないんだけど回避方法はありますか?


542 :541:2008/10/25(土) 07:08:58 ID:g2fVY4UH0
追記
一応Key history and script infoで見ると右ボタンの物理的な押し下げ、押し上げは認識してるけど
Typeの所は押し下げ、押し上げ共sになってる

>Type s:
>フックによってイベントが隠蔽された(あるキーにホットキーが割り当てられていて、そのキーの
押し上げイベントには何も割り当てられていない場合、押し上げイベントが隠蔽される)


543 :名無しさん@お腹いっぱい。:2008/10/25(土) 11:52:35 ID:E2H3wsdn0
レッツノートのT5のNumLockキーをChangekeyで別のキーにアサインしました。
もちろん、Numlockの機能は無効になるのですが、Numpadがキーボードに出現するのは止められず、『U』を押すと『←』が入力されてしまいます。
つまりテンキーでNumlockがoffの時と同じになります。この現象はハード固有のものでしょうか?それとも回避策が確立しているのでしょうか?

544 :名無しさん@お腹いっぱい。:2008/10/25(土) 12:07:28 ID:E2H3wsdn0
>>543
たとえば、NumLockキーにPgDnキーをアサインして、Numlockキーを無効にしたのに、Numpad自体のOnOff機能が有効になっているということです。
PgDnを押すたびにNumpadがトグルでOnOffされてしまうので、Onのときに『U』を入力しようとすると『←』が出力されてカーソルが左に動くということです。

545 :名無しさん@お腹いっぱい。:2008/10/25(土) 13:58:17 ID:+J6c5PbN0
スレ違いじゃなかろうか。

546 :名無しさん@お腹いっぱい。:2008/10/25(土) 14:33:53 ID:R3EOpm8V0
キーカスタマイズソフトスレ逝け

547 :名無しさん@お腹いっぱい。:2008/10/25(土) 16:22:20 ID:z913YaoV0
入力されて欲しくないキーをリマップすればいいだろ

548 :名無しさん@お腹いっぱい。:2008/10/25(土) 17:57:23 ID:wtNn6tsh0
↓の解説をみて分からなきゃ諦めだな

[Commands]
Set[Caps|Num|Scroll]LockState
SetStoreCapslockMode
GetKeyState

[KeyNames]
Numpad[0-9]/NumpadPgUp/NumpadPgDn


ところで、ファイルループの A_LoopFileName でハマったw
以前に 0x5C 含む文字のパス区切りが・・・なんてのを前に見た気がするが、
探すのも面倒なんで関数作った

549 :名無しさん@お腹いっぱい。:2008/10/25(土) 18:39:17 ID:oBEKgl+9O
>>543
元々インスコされてるサービスが優先的に制御してるか、ハード的に制御してるからじゃないの?

550 :名無しさん@お腹いっぱい。:2008/10/25(土) 19:21:44 ID:/Fraktoa0
>>548
その関数、欲しい。俺も困ってた。

今は、ループ内で ifexist,A_LoopFileName して、
みつからなかったら飛ばす処理してごまかしてる。

551 :名無しさん@お腹いっぱい。:2008/10/25(土) 19:47:57 ID:R3EOpm8V0
わざわざ探さなくてもテンプレ入りしているが。
関数なら>1のなまず氏のmbstring.ahk
Unicode仮対応版が欲しいなら>5のAutohotkey_L

552 :名無しさん@お腹いっぱい。:2008/10/25(土) 20:08:46 ID:aFGhndGx0
駄目文字微対策版
ttp://yak.myhome.cx/junks/
中身が古いけどこれ使ってる

553 :名無しさん@お腹いっぱい。:2008/10/25(土) 20:16:48 ID:wtNn6tsh0
まぁ、要らんのかもしれんが、1レスで終わるんで
 fileName := DirSplit(A_LoopFileLongPath)
って風に逃げるための関数。

DirSplit.ahk
-------------------------------------------------------------
return
; ShiftJIS対応 パス区切り関数
; 1) 受け取ったパスの最後の "\" 以降を返す
; 2) 第2引数に変数名を指定した場合、1)以外を返す(最後の "\" なし)
DirSplit(path, dirVarName="") {
 global
 local pos, char, name
 Loop {
  StringGetPos, pos, path, \, R%A_Index%
  if (pos > 0) {
   StringMid, char, path, %pos%, 1
   code := Asc(char)
   if ((code >= 0x81 && code < 0x9f) || (code >= 0xE0 && code <= 0xFC))
    continue
  }
  break
 }
 if (dirVarName != "")
  StringLeft, %dirVarName%, path, pos
 pos += 2
 StringMid, name, path, %pos%
 return name
}


554 :名無しさん@お腹いっぱい。:2008/10/25(土) 20:20:55 ID:wtNn6tsh0
あ、変数 "code" のローカル宣言してないw

555 :名無しさん@お腹いっぱい。:2008/10/25(土) 20:42:32 ID:/Fraktoa0
>>553
thx。処理方法はもちろん、コーディング自体も参考になりました。

556 :名無しさん@お腹いっぱい。:2008/10/26(日) 00:17:05 ID:wpotzHrS0
>>547
結局、そうしました。NumlockがonとOffで別のキーになるのは数字に統一しました。でも、+とかはon、Off関わらず同じキーですので、
Numpad on、Numlock Off時に不要だからといって文字にremapするとNumlock onで記号を入力したいときに困ってしまいます。

>>548
しばらく試行錯誤してみますね。ありがとうございました。

557 :名無しさん@お腹いっぱい。:2008/10/26(日) 01:03:43 ID:7WcQVMsl0
>>542
その場合は、ホットキーよりRemap
RButton::x
x & a::send,y
で、とりあえずやりたいことは出来るだろうけど。
具体的に何をやろうとするのかで違ってくるだろうね。

558 :557:2008/10/26(日) 01:21:17 ID:7WcQVMsl0
単純なのは下記。
111:
keywait, RButton,D
keywait, RButton
send,x
goto,111


559 :名無しさん@お腹いっぱい。:2008/10/26(日) 06:03:02 ID:cIHdnmjF0
不特定にキーが押されているかどうかを判別するにはどうしたらよいでしょうか?
GetKeyState は特定のキー押下しか判断できないようです。
また Help の KeyName の項目には、There may be ways to detect certain keys
and buttons using techniques such as DllCall, OnMessage, and RegisterRawInputDevices.
とあるので、DllCall でできるのではないかと思うのですが、方法がまったく分かりません。

詳しい方、教えて下さい。

560 :名無しさん@お腹いっぱい。:2008/10/26(日) 09:01:37 ID:7WcQVMsl0
keywaitに複数のキーのうちのどれかが押されるのを待ちたい場合は、Inputコマンドを使う
って書いてあるよ。

561 :名無しさん@お腹いっぱい。:2008/10/26(日) 11:19:00 ID:cIHdnmjF0
>>560
Input がありましたね。ありがとうございました。

562 :名無しさん@お腹いっぱい。:2008/10/27(月) 12:37:57 ID:cbhHOFC30
Quick Launchを階層化したいときに表示させる">>"をクリックさせるか
クリックしたのと同じ結果を生じさせることは可能でしょうか

563 :541:2008/10/27(月) 15:34:26 ID:6t+2VKdT0
>>558
とりあえずの具体例としてはゲームで移動中に拡張ボタンに割り振ったコマンドが空ぶる
>>557はsend,yが発動しない
waitは一つのファイルで同時に二つ以上待てないなら避けたい。
下のでいけるかやってみる。

XButton1 & LButton::send,2
w & XButton1::
s & XButton1::
a & XButton1::
d & XButton1::
return
~w & XButton1 up::
~s & XButton1 up::
~a & XButton1 up::
~d & XButton1 up::
IfNotInString, A_ThisHotkey, %A_PriorHotkey%
return
XButton1::
*XButton1::
send,1
return


564 :名無しさん@お腹いっぱい。:2008/10/27(月) 17:03:55 ID:BR+Fqfez0
>>562
; x, y に >> の真ん中あたりの座標をセット(Window Spyで調べる)
CoordMode, Mouse, Screen
MouseMove, %x%,%y% 0
Send, {LButton}
return

とか

; ToolbarWindow32n は変わる可能性あり(Window Spyで調べる)
; キー送りは環境によって変える(ここでは先頭にフォーカスがあるから逆順で1個)
ControlFocus, ToolbarWindow322, ahk_class Shell_TrayWnd, Quick Launch
Send, {Left}
return


565 :名無しさん@お腹いっぱい。:2008/10/27(月) 20:41:31 ID:MDAJPvN80
>>562
座標をセットするやりかたはタスクトレイのアイコンの数で変化してしまうので
使えないと思っていましたが、二番目のプランを参考に下の方法で成功しました。
Quick Launchは便利なのですが">>"の幅が狭くて何とかしたいと思っていました。
ご協力感謝します。
(ちなみに二番目のプランでは何も起こりませんでした)

#NoTrayIcon
WinGetPos, , Y1, , , ahk_class Shell_TrayWnd
ControlGetPos, X, Y2, Width, Height, ReBarWindow321, ahk_class Shell_TrayWnd
X += Width
Y1 += Y2
Y1 += Height
MouseClick, LEFT, X, Y1, 1, 0, D



566 :名無しさん@お腹いっぱい。:2008/10/27(月) 21:28:57 ID:BR+Fqfez0
あ〜、下のはフォーカスだけ当ててるわ。
↓を先頭に追加でいけるかな。まぁ解決したからいいんだろうけど。
WinActivate, ahk_class Shell_TrayWnd

567 :名無しさん@お腹いっぱい。:2008/10/28(火) 00:34:28 ID:uGuC8YLv0
現在AutoHotKeyを流行らせるページの「何も操作をしていないときに実行」を便利に使わせてもらっています。
そこで、週に一回だけ実行する動作もさせてみたくなってきました。
これができればタスクスケジューラよりも楽にバックアップとかをさせやすくなるからです。

しかし、いろいろと試しては見たのですが、結局うまくいきませんでした。

曜日で分岐させることは可能なのでしょうか?
もし可能ならば教えていただきたいです。

568 :名無しさん@お腹いっぱい。:2008/10/28(火) 00:53:50 ID:FhT4x8F/0
>>567
A_DDDD 曜日を表す文字列(Sunday...)
A_DDD 曜日を表す3文字の省略名(Sun...)
A_WDay 曜日を表す1文字の数字(1...7)1が日曜

http://lukewarm.s101.xrea.com/Variables.html

569 :名無しさん@お腹いっぱい。:2008/10/28(火) 00:54:40 ID:NEyW/Ek20
> FormatTime, wday, %A_Now%, WDay
で曜日(1=日曜, 2=月曜, ...)の取得が可能だけど...

タスクの実行管理の方が面倒な感じ。
たぶん、スタートアップか何かで常駐させるんだろうけど、
OSの再起動とかログオフ・ログオンで再度プロセスが走る事も考慮するとなると・・・
タスク最終実行(完了)日時を ini か何かに書いて、
再度実行しないようにするとかの仕組みが必要・・・かもしれない。

570 :名無しさん@お腹いっぱい。:2008/10/28(火) 00:58:46 ID:FhT4x8F/0
sample.ahk
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
msg=
(
| ∧         ∧
|/ ヽ        ./ .∧
|   `、     /   ∧
|      ̄ ̄ ̄    ヽ
| ̄ ̄ ̄月曜日 ̄ ̄ ̄)
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\
|ヽ-=・=-′ ヽ-=・=-  /   やあ
|::    \___/    /    週末にやり残した仕事が君を待ってるよ
|:::::::    \/     /

)
if A_WDay=2
{
msgbox,%msg%
}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

571 :名無しさん@お腹いっぱい。:2008/10/28(火) 11:22:58 ID:vdUsGH5q0
いやぁぁぁああああああああああ

572 :名無しさん@お腹いっぱい。:2008/10/28(火) 18:22:15 ID:DJ7lhjXA0
ホットキーのサブルーチンラベルにつける修飾シンボルで
$を最初につけるときと何もつけないときの違いはなんですか?

573 :名無しさん@お腹いっぱい。:2008/10/28(火) 18:53:16 ID:lDyDMgU90
>>572
http://lukewarm.s101.xrea.com/Hotkeys.html

574 :名無しさん@お腹いっぱい。:2008/10/28(火) 19:14:11 ID:cSQn0JES0
「タスクトレイアイコン操作」で特定のトレイアイコンを非表示にする方法ですが、

name=とりあえず例としてAutoHotkey.exe
cnt:=Tray_GetCount()
DetectHiddenWindows,On
Loop,%cnt%{
Tray_GetInfo(A_Index,hwnd,uid,msg,hicon)
WinGet,pn,ProcessName,ahk_id %hwnd%
if(pn=name){
Tray_HideButton(%hwnd%,%uid%,1)
}
}
DetectHiddenWindows,Off
return

で動きません。どうするべきなのでしょうか?
ちなみにTray_HideButton(%hwnd%,%uid%,1)をMsgBox,hwnd=%hwnd% uid=%uid% に変えて値を確認し、
変数では無く確認した数値を入れたTray_HideButton()を実行するとちゃんと動きます

575 :名無しさん@お腹いっぱい。:2008/10/28(火) 19:20:59 ID:hASZmRop0
%

576 :名無しさん@お腹いっぱい。:2008/10/28(火) 19:25:32 ID:DJ7lhjXA0
>>573
そこは見ていたのですが改めてみたらなんとなく分かってきたような気がしてきました。
#UseHockがデフォルト(OFF)のときはAutohotkeyが強制的にフックするか、レジスタホットキーで取得するかの違いでいいんですよね。

577 :名無しさん@お腹いっぱい。:2008/10/28(火) 19:29:56 ID:cSQn0JES0
>>575
カッコの中の%は付けちゃダメなんですね
お騒がせしました

578 :567:2008/10/28(火) 21:43:28 ID:uGuC8YLv0
>>568-570
おおー、そんなのがあったのですか!

タスクトレイ付近にある時計辺りから取得しようとがんばってました。
全く見当外れでしたね。。。

とりあえずこれで特定の週にのみ動作するスクリプトができるようになったので
また一つ便利になりました。

> OSの再起動とかログオフ・ログオンで再度プロセスが走る事も考慮するとなると・・・
日曜日にスクリプトを実行するとして、
特定のファイル(空のテキストファイルとか)が指定されたフォルダにあるかどうかチェック

なければ、作成してからスクリプト実行
あれば、なにもしない。

月〜土曜は、その判別用ファイルを削除する

こんな感じでなんとかなりそうな気がしました。
日曜以外PCを使わない人だとうまくいきませんが、
私は1週間一度もPCをつけないということはたぶん無いので大丈夫そうです。
というか素人的にはこの程度しか思いつかないです。。。

また今度時間のあるときに試してみます。

579 :名無しさん@お腹いっぱい。:2008/10/29(水) 00:29:10 ID:b9z65f1T0
Progress とか Splash で枠なしで色透過して情報表示すると、
フォーカスも取られないし、フォントとか変えられるし、ちょっとカッコエーw

Tooltipだと何か陳腐な気がしてたんで。まぁ、自己満足なんだが。

Progress, B1 P0 y%y% w%w% h%h% CB%fgColor% CT%fgColor% CW%bgColor% FS%fSize% ZH%barHeight%
Progress, Show
Progress, %value%,%subMsg%
WinGet, id, ID, ahk_class AutoHotkey2
WinSet, TransColor, %bgColor%, ahk_id %id%


580 :名無しさん@お腹いっぱい。:2008/10/29(水) 19:20:21 ID:oOBgpZPR0
ウィンドウが出現した瞬間一度だけ発動するスクリプトってどう書けばいいの?
1秒ごとにウィンドウリストを取得して比較してみたいなことをやらないと駄目なのかな。

581 :名無しさん@お腹いっぱい。:2008/10/29(水) 19:24:07 ID:J/gxFBcT0
WinWait

582 :名無しさん@お腹いっぱい。:2008/10/29(水) 19:40:49 ID:YgfZ1/KW0
>>581
横からありがとう

583 :名無しさん@お腹いっぱい。:2008/10/29(水) 20:46:49 ID:WgO6Pvfv0
iniファイルへの一括読み書きについて相談です。
iniwriteでセクションをSection、キーA,B,C,D,Eで5回書くと下記のようになります。

[Section]
A=なんたら
B=かんたら
C=あいう
D=えお
E=かき

ほしいkeyがわかってるとき、1つ取得したいときは、Ini,Readでkeyを指定し、
読めたらOK(=keyがすでに存在する)で、ERRORが返却されたらkeyが存在しない、
と分岐できました。

左のKeyが数字連番のときは、Loopで回しつづけ、エラーが帰ったらBreakして全取得出来ました。

しかし、この事例のように、左のkeyが数字連番ではなくバラバラな場合、このセクションにある
キーと値を、特定のキーで指定せず全部読み出すには、どうしたらいいでしょうか。
考え方だけで十分なので、うまいコツがありましたら教えていただけると嬉しいです。

参考ページ(流行らせるページ管理人さんthx)
http://lukewarm.s101.xrea.com/commands/IniRead.html

584 :名無しさん@お腹いっぱい。:2008/10/29(水) 21:48:57 ID:CKwYiqrQ0
buf=A,B,C,D,E
Loop,Pause,buf,CSV
{
IniRead,OutputVar,c:\hoge.ini,Section,%A_LoopField%
}

それともキーそのものが不定で事前にわからないってことかな
それだともうちょっと工夫する必要がある。

585 :名無しさん@お腹いっぱい。:2008/10/29(水) 22:07:51 ID:b9z65f1T0
LOOP,READ して、
1) /^\[([\[\]]+)\]/ にマッチしたら、マッチ1($1)を現セクションにする
2) /^(\w+)\s*=\s*(.+)$/ にマッチしたら キー名=$1、値=$2

毎回読むのは面倒なので、仮想配列(ハッシュ)みたくする
 $ini_%sectionName%_%keyName% := value

※ キー名、セクション名が[0-9a-zA-Z_]でないときはエスケープしたりする

586 :名無しさん@お腹いっぱい。:2008/10/29(水) 22:55:26 ID:WgO6Pvfv0
>>584,>>585
ありがとうございます。そうです、キー名がバラバラなんです。

iniR/Wコマンドに頼らず、filereadで読み込む方法でやってみます。
正規表現の指定法も参考になります。どうもありがとうございました。

587 :名無しさん@お腹いっぱい。:2008/10/29(水) 23:34:57 ID:CKwYiqrQ0
>>586
自分用に作った奴をあげてみる。585の方法より多分だいぶ助長だけど。

iniファイル読込み関数群 (Section、Key一覧の取得が可能)
http://lukewarm.s101.xrea.com/up/file/090.zip

588 :名無しさん@お腹いっぱい。:2008/10/29(水) 23:56:07 ID:b9z65f1T0
ミュートしてるときにボリューム変更しても変わらんので腹が立つ(w のを解消

Volume_Mod(d, device="MASTER") {
 SoundSet, Off, %DEVICE%, Mute
 SoundGet, volume, %DEVICE%, VOLUME
 volume := volume + d
 SoundSet, %volume%, %DEVICE%, VOLUME
 return
}

Volume_Up:: Volume_Mod( 1)
Volume_Down::Volume_Mod(-1)

+Volume_Up:: Volume_Mod( 1, "WAVE")
+Volume_Down::Volume_Mod(-1, "WAVE")


589 :586:2008/10/30(木) 00:16:42 ID:/IgDIppv0
>>587
すばらしいスクリプト、ありがとうございます。
一度呼んだセクションに対するキャッシュ機能まで入ってるんですね。

Ini_KeyList()ファンクションが、今回の用途にそのまま適用できそうです。

590 :名無しさん@お腹いっぱい。:2008/10/30(木) 01:00:57 ID:lF0c9fAW0
ノートPCで NumLock を殺して Ctrl+NumLock を NumLock にしよう思い、
まず、 NumLock:: Return とだけ書いたきました。
これで NumLockを押しても LEDのON/OFFはしなくりましたが、
例えば k を押すと down が入力され、
Fn キーが効いた状態になってしまっているようです。
NumLock を完全に無効にすることはできるでしょうか?

591 :名無しさん@お腹いっぱい。:2008/10/30(木) 07:43:57 ID:DBiK3pv00
Autohotkey起動時にいくつかのWinWaitActiveを同時に待機状態にしておきたいのですがどうすればできますか?
例えば二つを待機させておきたいときにサブルーチンを二つ作りAuto-executeセクションでSetTimerを用いて二つに飛んでもうまくいきませんでした。

サブルーチンは以下のような感じです。
wait1:
WinWaitActive,hoge1
msgbox,a
return
wait2:
WinWaitActive,hoge2
msgbox,b
return

592 :名無しさん@お腹いっぱい。:2008/10/30(木) 08:35:49 ID:F6fbWBMU0
グループを使って、Waitの後で分岐する

GroupAdd, WinGroup, hoge1
GroupAdd, WinGroup, hoge2
WinWaitActive,ahk_group WinGroup
WinGetTitle,WTitle
Msgbox %WTitle%

593 :名無しさん@お腹いっぱい。:2008/10/30(木) 09:01:33 ID:DBiK3pv00
分かりました。ありがとうございます。

594 :名無しさん@お腹いっぱい。:2008/10/30(木) 09:30:14 ID:M0jL8pDE0
なんでジョイパッドのボタンをsendで送れないんだろう
あれば便利な使い方出来そうなんだが
あとXYの判定のほかにJoyLeft::とかあれば最高だった

595 :名無しさん@お腹いっぱい。:2008/10/30(木) 10:42:10 ID:MoKLJrYv0
>>590
テンプレ>3
Lock系キーカスタマイズは地雷、更にノートは機種依存が強いので動作も不定

596 :名無しさん@お腹いっぱい。:2008/10/30(木) 11:04:45 ID:IW1yR6Z90
天麩羅に レジストリでキー入れ替えるツール (KeySwapXPとか) でも入れておいた方がいいのかねぇ
ttp://www.vector.co.jp/soft/winnt/util/se228667.html



597 :名無しさん@お腹いっぱい。:2008/10/30(木) 12:03:12 ID:b43R4Awi0
Unicodeでエンコードされたテキストファイルを扱いたいのですが、TransformではUTF-8しか扱えないようです。
使いたいのがUTF-16のテキストなのですが、これは扱えないのでしょうか。

598 :名無しさん@お腹いっぱい。:2008/10/30(木) 12:04:25 ID:b43R4Awi0
>>597ですが、やっているのはFileReadで読み込んで、Transformで変換という手順です。

599 :名無しさん@お腹いっぱい。:2008/10/30(木) 20:07:49 ID:5+ZcioeD0
文字コード関係はnkf使ってる

600 :名無しさん@お腹いっぱい。:2008/10/30(木) 20:19:05 ID:dqjNpJzW0
UTF-16のビット列の仕様を読んで気合で変換すればいいんじゃね

601 :名無しさん@お腹いっぱい。:2008/10/30(木) 22:36:13 ID:IW1yR6Z90
気合いで変換テーブルつくるのもめんどいし、LEとBEの判別とかもめいどいな。
つか TransFormで出来るの知らなくて、UTF-8のはつっくった事がある。捨てたけどw
たしかこんな感じの関数作ってバイト毎に回して参照してた

UTF8_2_SJIS(code) {
 static $E38080 = " "
 static $E38081 = "、"
   : (すごく省略)
 StringUpper, c, code
 return %c%
}

先人の知恵を借りてパイプしたりリダイレクトたしたりした方が良いね。

602 :名無しさん@お腹いっぱい。:2008/10/30(木) 22:37:21 ID:IW1yR6Z90
あ゛、
 return #%c%
ね。一応。

603 :名無しさん@お腹いっぱい。:2008/10/30(木) 22:39:48 ID:oHKHRT320
「どこでもホイール」というフリーソフトのように

ホイール回転によるスクロールに対応していないソフトでも
スクロールできるようにしたいんですが、AHKで実現できますか?


604 :名無しさん@お腹いっぱい。:2008/10/30(木) 23:12:20 ID:MoKLJrYv0
できる

605 :名無しさん@お腹いっぱい。:2008/10/30(木) 23:20:41 ID:oHKHRT320
是非教えてください

606 :名無しさん@お腹いっぱい。:2008/10/31(金) 00:20:21 ID:aBA2FBH00
AutoHotkey スレッド part5
http://pc11.2ch.net/test/read.cgi/software/1201502896/574-589

あたりを参照

607 :名無しさん@お腹いっぱい。:2008/10/31(金) 07:09:57 ID:KDOuZxDL0
>>606参照先の>>589読んでどこでもドラッグ関数作ってみたけど、
意外と便利だねこれ。
ライティングソフトのウィンドウ移動できなくてウザかったのが解消された。

608 :名無しさん@お腹いっぱい。:2008/10/31(金) 08:55:10 ID:oKsFdKP10
コロンをremapするのに2時間かかった。
欧米の人は+`;で扱うからいいのかな?
でも、remap先にするのも大変だった。
マニュアルには何も書いてないし。。。

609 :名無しさん@お腹いっぱい。:2008/11/01(土) 13:36:26 ID:lMxXw2Bp0
修飾キー(^、!、+)の対象範囲を知りたいのですが、HELP見ても書いてありません。なんらかのリファレンスをご存知の方はいらっしゃいますか?
いろいろ試した結果、文字キー以外はShiftだけが有効だと思うのですが、正しいでしょうか?
^up::c → ×
!up::a → ×
+up::s → S(大文字)
^up::pgup → ×
!up::pgup → ×
+up::pgup → ○

610 :名無しさん@お腹いっぱい。:2008/11/01(土) 16:20:43 ID:DpLSKnso0
皆さんはAutoHotkey.ini編集する際になんのテキストエディタ使ってるんですか?
自分はTeraPadでやってるんですが色分け機能が最適化されていなくていまいちで

611 :名無しさん@お腹いっぱい。:2008/11/01(土) 16:38:08 ID:PamS+d4P0
emEditor

612 :名無しさん@お腹いっぱい。:2008/11/01(土) 17:39:37 ID:OiAU5nUK0
xyzzyのahk-modeかな

613 :名無しさん@お腹いっぱい。:2008/11/01(土) 18:05:50 ID:2LN46B4B0
秀丸

自力で色定義作りたくないならExtras\Editorsの中から適当なエディタ選んで使えばいい。
現状で使ってるエディタで使いたいならAHK or エディタマクロで
シンタックスファイルコンバートして使えばいい。

614 :名無しさん@お腹いっぱい。:2008/11/01(土) 19:57:19 ID:/+EjKYwg0
サクラエディタ

615 :名無しさん@お腹いっぱい。:2008/11/01(土) 20:20:48 ID:PErj2FLPP
同じくxyzzyのahk-mode

616 :名無しさん@お腹いっぱい。:2008/11/01(土) 22:45:04 ID:PC2YZLp10
なんでAutoHotkey.iniなんだろうな
Default.ahkとかならahkモードで認識してくれる
エディタ多そうなのに

617 :名無しさん@お腹いっぱい。:2008/11/01(土) 23:13:26 ID:I00cFgPM0
コンビネーションキーの一つめのキーを、
コンビネーションキーとして発動した時のみ無効にするにはどうしたらいいのでしょうか?

618 :名無しさん@お腹いっぱい。:2008/11/01(土) 23:53:26 ID:jLJ9uFAy0
>>616
AutoHokey.ahkにしておけばいんじゃね

619 :名無しさん@お腹いっぱい。:2008/11/02(日) 01:47:43 ID:vcDQvLLO0
>>617
a & b::Send,c
a::Send, a

620 :名無しさん@お腹いっぱい。:2008/11/02(日) 02:31:56 ID:GoqVkBsJ0
>>609
多分正しくない。流行らせるページRemapの項参照。
Remapでは修飾キーの状態が残る。
^up::c ではCTRL押しながら↑を押すとCTRL+Cが入力される。
RemapじゃなくてSend使えば解決すると思う。

621 :名無しさん@お腹いっぱい。:2008/11/02(日) 20:39:48 ID:AkRbAw440
下記のようにファイルが置いてあるTXT全てに対して処理をしたい場合
D:\hoge\a\d.txt
D:\hoge\b\e.txt
D:\hoge\c\f.txt

下記のようにして書いてみたのですが、これだとhoge以下の全てのtxtを探しに行ってしまいます
hogeから一つ下のフォルダを探すだけでいいのですがLoopにどういう条件を書けばいいのでしょうか

dir = D:\hoge
Loop, %dir%\*.txt, 0, 1
{
msgbox,%A_LoopFileFullPath%
}

622 :名無しさん@お腹いっぱい。:2008/11/02(日) 20:47:22 ID:yrYEYVeA0
まず、ちゃんとリファレンスを声に出して上から10回読む

そこで質問だが、Loopの最後のパラメータは何だ?

623 :名無しさん@お腹いっぱい。:2008/11/02(日) 21:01:34 ID:AkRbAw440
・・・もしや最後を0にしてhogeのフォルダだけを探して更にループを入れ子にしてtxt探せばいいのか
すみません頭回ってませんでした
ありがとうございました

624 :名無しさん@お腹いっぱい。:2008/11/02(日) 23:29:09 ID:vcDQvLLO0
[cmd.exe]
dir /s /b *.txt

[ahk]
loop, %dir%\*.txt, 0, 1

625 :名無しさん@お腹いっぱい。:2008/11/03(月) 00:14:01 ID:kwJmUBDF0
AHK で作成したウィンドウ上でテキストのセンタリングをしたいのですが、どのようにしたら良いでしょうか。
やりたいのは、以下のスクリプトを 30 分おきにタスクスケジューラーから起動することです。
問題は下記の Gui, Add, Text の部分です。画面サイズは 1280x800 になっています。

#NoEnv
#NoTrayIcon
#SingleInstance FORCE
SetBatchLines, -1
SetTimer, Esc, 60000
WinGet, proc, ProcessName, A
CoordMode, Mouse, Screen
Gui, +LastFound +AlwaysOnTop +ToolWindow -Border
Gui, Color, FFFFFF
Gui, Font, c000000 s48, Calibri
Gui, Add, Text, x380 y200, % A_YYYY "/" A_MM "/" A_DD " " A_Hour ":" A_Min
Gui, Add, Text, x200, % """" proc """ is currently activated."
Gui, Font, s81 w600
Gui, Add, Text, x10, Review your current actions.
Gui, Show, x0 y0 w1280 h800
Return
Esc:: ExitApp

626 :名無しさん@お腹いっぱい。:2008/11/03(月) 00:17:53 ID:3py9vj5l0
Input, I_Word, V, {enter}{escape}{space}`,
ではカンマがEndKeysにならないね。`,を{vkBC}とかにしないと使えない…
IntelliSense.ahkで軽くはまった。

627 :名無しさん@お腹いっぱい。:2008/11/03(月) 00:38:58 ID:xEVfovF40
>>625
ウィンドウの横幅いっぱいに textbox 広げてオートセンタリングでいいかと

 :
Gui, Add, Text, x0 w%A_ScreenWidth%, hoge hoge
 :
Gui, Show, x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%


628 :名無しさん@お腹いっぱい。:2008/11/03(月) 00:50:12 ID:xEVfovF40
ちなみに、どう使うか知らないけど↓をやってみても面白いかも

Gui, Color, FFFFFE
Gui, +LastFound
WinSet, TransColor, FFFFFE


629 :名無しさん@お腹いっぱい。:2008/11/03(月) 02:20:30 ID:rjbe18C+0
ttp://www.autohotkey.com/forum/topic37303.html
いろいろ方法はあるんだなーと感心

630 :625:2008/11/03(月) 04:47:30 ID:kwJmUBDF0
>>627
x0 w%A_ScreenWidth% Center でセンタリングできました。
ありがとうございました。

>628
これ OSD 的に使えて面白いですね。
勉強になりました。

631 :名無しさん@お腹いっぱい。:2008/11/03(月) 17:35:27 ID:Yu1RQY9oP
>>619
RButton & WheelDown::のようなホットキーだったのですが
右ドラッグが出来なくなりました。
何か解決方法はあるでしょうか?
後効くソフトと、効かないゲームがありました

632 :名無しさん@お腹いっぱい。:2008/11/03(月) 18:36:41 ID:gLp/aS070
どなたか教えてください。
マウスで左クリック→右クリックをすると、例えば「Alt + X」を押した動作をさせたいのです。
どう記述すればいいでしょうか?
AHK入門者なもので、どこを参考にすればいいかすらさっぱりです…orz

633 :632:2008/11/03(月) 19:00:10 ID:gLp/aS070
ちなみに、その動作はX-Finderというソフト上でのみさせたいのですが、

#IfWinActive ahk_class TXFinder.UnicodeClass
LButton & RButton::send ~!x
return
#IfWinActive

と書いたら、一応希望の動作はしたのですが、なぜか他のマウス動作(クリックなど)が効かなくなりました…。

634 :名無しさん@お腹いっぱい。:2008/11/03(月) 19:01:21 ID:vLH+jahS0
~RButton & WheelDown::
こうしたら?

635 :632:2008/11/03(月) 19:20:48 ID:gLp/aS070
>>634
ありがとうございます!
LButtonとRButtonの前に「~」を付けたらうまく動作できました。
大感謝です。

636 :634:2008/11/03(月) 22:43:06 ID:vLH+jahS0
すまんw
>>631にレスしたつもりで
>>632は読んでもいなかったんだが
解決したようでなにより。

637 :名無しさん@お腹いっぱい。:2008/11/03(月) 23:06:25 ID:Yu1RQY9oP
>>634
すみません元々>>617のような要望だったのですが
>>631>>617の両方を解決するようないい方法は無いでしょうか?

638 :名無しさん@お腹いっぱい。:2008/11/04(火) 02:43:30 ID:hmyA44jp0
昔自分もそれで悩んだが結局解決できなかった。
仕方ないのでRButtonをドラッグに使用するアプリでは
RButtonをコンビネーションに使わず、
マウスのサイドキーをコンビネーションしてごまかした。

具体的にはfirefoxでRButton & WheelupでPgUpとか
やりたかったんだけど、
画面端でwheelupするとPgUpするようにしたら
そっちの方が便利で必要なくなったのもある。

639 :名無しさん@お腹いっぱい。:2008/11/04(火) 09:03:39 ID:rNyuG3M00
リマップしたものを更にリマップすることは可能ですか?

> XButton2::F24
> +F24::!F4
このように書いてみたのですが、Shift+マウスの拡張ボタン2を押してもAlt+F4は発動しませんでした…

640 :名無しさん@お腹いっぱい。:2008/11/04(火) 14:26:21 ID:Eq0qGqiq0
Gui,Showでウィンドウを表示する時に背景だけ透明にして文字は透明にしないことって可能ですか?
背景をwhiteにした後、WinSet, TransColorでwhiteを透明にしても 背景と文字の両方ともが透明になってしまいます
SplashImage、SplashText、ProgressやToolTipでも試してみましたがうまくいきませんでした


641 :名無しさん@お腹いっぱい。:2008/11/04(火) 14:56:20 ID:yzE8zZFX0
>>640
実際に俺は>>628を試したらOSDみたいのが簡単に出来て、驚いてるんだけど、これじゃ駄目なの?

642 :名無しさん@お腹いっぱい。:2008/11/04(火) 16:20:13 ID:Eq0qGqiq0
解決しまいsた
WinSetのWinTitle指定がうまくいってなかったみたいです
ありがとうございました

643 :名無しさん@お腹いっぱい。:2008/11/04(火) 21:04:09 ID:ihOn3lae0
; OSD TV時計もどきw
$_clock_gui_no := 50
$_clock_gui_pos := "tl" ; x(Left, Right, Center), y(Top, Bottom, Middle)
Gui, %$_clock_gui_no%:Default
Gui, +LastFound +AlwaysOnTop +ToolWindow -Border -Caption
Gui, Color, 000001
WinSet, TransColor, 000001
Gui, Font, cFFFFFF s48, MS Gothic ; 色・大きさ・フォントをいじるのはココ
Gui, Add, Text, x0 y0 vEdit1, 00:00
GuiControlGet, p, Pos, Edit1
gx := (InStr($_clock_gui_pos, "R", false) > 0) ? A_ScreenWidth - pw : (InStr($_clock_gui_pos, "C", false) > 0) ? (A_ScreenWidth - pw) / 2 : 0
gy := (InStr($_clock_gui_pos, "B", false) > 0) ? A_ScreenHeight - ph : (InStr($_clock_gui_pos, "M", false) > 0) ? (A_ScreenHeight - ph) / 2 : 0
Gui, Show, x%gx% y%gy% w%pw% h%ph% Hide
SetTimer, ClockGui_Timer, 500
return

ClockGui_Timer:
Gui, %$_clock_gui_no%:Default
colon := (colon == ":") ? " " : ":"
GuiControl, , Edit1, %A_Hour%%colon%%A_Min%
Gui, +LastFound
WinGetPos, wx, wy, ww, wh
CoordMode, mouse, Screen
MouseGetPos, x, y
cmd := (x >= wx && x <= (wx+ww)) && (y >= wy && y <= (wy+wh)) ? "Hide" : "Show"
Gui, %cmd%, NA
return

644 :名無しさん@お腹いっぱい。:2008/11/04(火) 21:04:20 ID:XxJcEbeC0
1クリックでいまマウスカーソルが上にある画像を保存、
ファイル名はクリップボードの中身になる、ってできますか?
出来るならやり方は自分で調べるので簡単か難しそうかだけ
教えてください。

645 :名無しさん@お腹いっぱい。:2008/11/04(火) 21:29:16 ID:+yZ3NLE/0
なんか見つけたので貼っておきますね
http://yomi.bbspink.com/test/read.cgi/ascii2d/1224065348/463

646 :名無しさん@お腹いっぱい。:2008/11/04(火) 22:19:33 ID:iRRn3sOh0
もうちょい具体的な例出してくんないとアドバイスのしようもない

647 :名無しさん@お腹いっぱい。:2008/11/04(火) 22:33:03 ID:yzE8zZFX0
>>645
ぜんぜん関連性の無い板での誤爆レスを、
たった1分でAHKスレの質問に対する回答だと判別するとは・・・

中田氏好きは仕事早杉

648 :名無しさん@お腹いっぱい。:2008/11/04(火) 23:10:35 ID:p089OXGx0
カーソルをはやく動かしたくてキーリマップで
{UP}{UP}{UP}{UP}{UP} を割り当てたんだけど、
動きがたまってしまい、キーを離した後もしばらく{UP}してしまいます。
キーが溜まらない方法ってありますか?

649 :名無しさん@お腹いっぱい。:2008/11/04(火) 23:13:13 ID:RZb/JofU0
kbdacc使えば。カーソル以外も速くなるけども。
http://www.jsdlab.co.jp/~kei/download/index.html

650 :名無しさん@お腹いっぱい。:2008/11/04(火) 23:17:11 ID:ihOn3lae0
SendMode
SetKeyDelay

651 :名無しさん@お腹いっぱい。:2008/11/04(火) 23:18:59 ID:hmyA44jp0
windowsの設定でキーリピート速度あるていど早くできるよ。

652 :名無しさん@お腹いっぱい。:2008/11/05(水) 00:32:55 ID:IDfk4xQr0
繭スレが移転したので報告
Windows板 → ソフトウェア板

窓使いの憂鬱 8
http://pc11.2ch.net/test/read.cgi/software/1225802237/

653 :名無しさん@お腹いっぱい。:2008/11/05(水) 10:25:28 ID:Pzq3C0If0
>>649
速度は申し分ないけどXPで^m押しっぱなしにすると
mが表示されまくって使い物にならない…

654 :名無しさん@お腹いっぱい。:2008/11/05(水) 11:55:52 ID:qHyE1UbH0
流行らすページ見れる?

655 :名無しさん@お腹いっぱい。:2008/11/05(水) 12:12:53 ID:qHyE1UbH0
http://lukewarm.s101.xrea.com/
だと見えないけど

http://lukewarm.s101.xrea.com/index.html
だと見えるね。

十分くらい前まではどっちもおkだったんだけど…
更新中かな?

656 :名無しさん@お腹いっぱい。:2008/11/06(木) 02:35:50 ID:VFKAv9Z10
ステータスバーのテキスト取得方法について質問です。

例:フォアグラウンドのIE6のステータスバーのテキストを取得

ControlGetText,var,msctls_statusbar321,A

これで、左下の「ページが表示されました」という文字列は取得できましたが、
右に出る「印刷中」とか、ゾーンを示す「インターネット」の部分の文字を取得したいです。

たぶん、ステータスバーの左から3番目のテキストを取得みたいな順番を指示する
オプションがありそうな気がしますが発見できませんでした。

この例のとき、右下のテキストを取得するには、どうすれば可能でしょうか。

657 :名無しさん@お腹いっぱい。:2008/11/06(木) 02:51:52 ID:7ri0FAZx0
StatusBarGetText

658 :名無しさん@お腹いっぱい。:2008/11/06(木) 03:15:00 ID:VFKAv9Z10
>>657
なんと!!そんなコマンドがあったのですね。
あっさりできました。ありがとうございます。

659 :名無しさん@お腹いっぱい。:2008/11/06(木) 14:46:01 ID:D2ULzuh10
ControlGetTextやControlSetTextを使ってコントロール上のテキストを取得したり変えたりしたいんですが wxWindowClassNR16というClassNNからはうまくテキストを取得・変更できません(似たような見た目のEdit4というClassNNからは取得・変更できるのですが・・・)
なにか特別な取得方法があるのでしょうか? それとも別の場所にテキストがあるのでしょうか?(名前にEditがあるClassNNは全て調べました)

660 :名無しさん@お腹いっぱい。:2008/11/06(木) 18:51:30 ID:GpCupz2P0
誰かウインドウクラスがTApplicationなウインドウを
"左右に並べて表示"したときに二つ分のウインドウとして認識される問題を解決した
"左右に並べて表示"をAHKで作ってくれまいか?

661 :名無しさん@お腹いっぱい。:2008/11/06(木) 19:38:29 ID:Ph2Fx4OS0
>TApplicationなウインドウ
TApplicationコンポーネント使ってるアプリを探すところからやらせるのかよ
せめて具体的なアプリ名の一つ二つくらい提示したら?
該当アプリ使ってる奴が調べてくれるかもよ

662 :名無しさん@お腹いっぱい。:2008/11/06(木) 19:49:21 ID:GpCupz2P0
多分デルファイで作ってるやつがそうだと思う。
Jane doe StyleとかJTrimとかXTMemoとか。

663 :名無しさん@お腹いっぱい。:2008/11/06(木) 20:31:22 ID:ZVHsPR8o0
WinGet したらこうなった。ほぉ・・・

[3 / 10]
hwnd : 0x3130502
pid : 3412
Title : 『AutoHotkey スレッド part6』 にレス
Class : TWriteForm
Exe : C:\Program Files\Jane Style\Jane2ch.exe
Window : [Normal] pos(170, 129), size(642, 517)

[4 / 10]
hwnd : 0x11303f6
pid : 3412
Title : Jane Doe Style 【ソフトウェア】 - AutoHotkey スレッド part6
Class : TMainWnd
Exe : C:\Program Files\Jane Style\Jane2ch.exe
Window : [Normal] pos(3, 0), size(796, 738)

[5 / 10]
hwnd : 0x16a03c0
pid : 3412
Title : Jane
Class : TApplication
Exe : C:\Program Files\Jane Style\Jane2ch.exe
Window : [Normal] pos(512, 384), size(0, 0)

664 :名無しさん@お腹いっぱい。:2008/11/06(木) 21:49:40 ID:E0zRQTS40
アクティブウインドウを強制終了させるahk教えてください
ありがとうございました

665 :名無しさん@お腹いっぱい。:2008/11/06(木) 23:39:12 ID:f74pamtV0
「無変換キーを押すとアクティブウィンドウ以外を最小化」といった動作をさせるには
どう記述をすればいいでしょうか?
ご存知の方がいらっしゃれば、ご教示頂きたいです。
よろしくお願いします。

666 :名無しさん@お腹いっぱい。:2008/11/06(木) 23:52:43 ID:Sj5j+rHj0
まず自分で考えればいいのに。そうじゃなきゃ他ソフトを使えばいい。
AutoHotkeyにこだわる必要ないと思うよ。

667 :名無しさん@お腹いっぱい。:2008/11/07(金) 00:00:48 ID:PacuScmR0
>>664
Send,!{F4} でも WinKill でも WinClose でも好きなの使え

>>665
無変換キーのキーコード調べてLoopでアクティブウィンドウ以外をWinMinimize
http://lukewarm.s101.xrea.com/KeyList.html

ていうかお前らリファレンス嫁

668 :名無しさん@お腹いっぱい。:2008/11/07(金) 00:03:26 ID:1YAzzTLQ0
ほんとだな
ご存知とか言うレベルじゃないな
ちったー考えろ

669 :665:2008/11/07(金) 01:27:41 ID:tP+BqFJ50
>>667
ヒントありがとうございます。
やってみます。

670 :名無しさん@お腹いっぱい。:2008/11/07(金) 02:57:11 ID:/fIcypE40
; アクティブ窓以外を最小化(+戻すトグル)
; 戻す方は WinActivate なんでキモいかも
#1::HideNoActiveWindows()
#2::HideNoActiveWindows(true)

HideNoActiveWindows(toggleRestore=false) {
 static LastMinimizeList
 NG_EX_STYLE := 0x00000080 ; WS_EX_TOOLWINDOW
 if (toggleRestore && LastMinimizeList != "") {
  Loop,PARSE, LastMinimizeList, `,
   WinActivate, ahk_id %A_LoopField% ; アニメ効果Onだと厳しい?
  LastMinimizeList := ""
  return
 }
 DetectHiddenWindows, Off
 WinGet, me, ID, A
 WinGet, list, List
 Loop, %list% {
  hwnd := list%A_Index%
  WinGet, MinMax, MinMax, ahk_id %hwnd% ; 最小化してたら無視
  WinGet, ExStyle, ExStyle, ahk_id %hwnd% ; 除外対象用
  WinGetPos, ,,w,h, ahk_id %hwnd% ; TApplication等誤爆防止?
  if (hwnd == me) || (MinMax == -1) || (w == 0 && h == 0) || ((ExStyle & NG_EX_STYLE) > 0)
   continue
  PostMessage, 0x112, 0xF020,,, ahk_id %hwnd% ; (=WinMinimize)
  LastMinimizeList := hwnd . "," LastMinimizeList ; 逆順
 }
 LastMinimizeList := toggleRestore ? LastMinimizeList . me : ""
 Sleep, 100
 WinActivate, ahk_id %me% ; これがないと非アクティブになる...
}

671 :名無しさん@お腹いっぱい。:2008/11/07(金) 03:22:03 ID:FaThtqAo0
質問者じゃないけど、正常に動いたよ。これは便利だな

672 :665:2008/11/07(金) 23:50:14 ID:tP+BqFJ50
>>670
ありがとうございます!!
早々に行き詰まっていたので、書いてくださってすごく嬉しいです。
丁寧な説明まであって感動です。いい人すぎる。

でもなぜか実行してみるとエラーが出ました…orz
>>671の方は正常に動いているようなので、きっとこちらの環境が原因だと思います。(因みにXP sp2です)
原因はこれから調べていこうと思います。判明したら報告させて頂きます。

↓一応エラーダイアログの内容をそのまま貼り付けておきます。

Error: This line does not contain a recognized action.

Specifically:  static LastMinimizeList

Line#
---> 006: {

The program will exit.


673 :名無しさん@お腹いっぱい。:2008/11/08(土) 00:02:41 ID:9pGqSGzs0
全角スペースは消した?

674 :665:2008/11/08(土) 00:15:42 ID:hoEhejRR0
>>673
ありがとうございます!まさにご指摘の通りでした!
全角スペース…真っ先に考えるべきところでしたね。でも多分自分じゃなかなか気付けなかったと思います…。
本当に助かりました。
これで完璧です。希望通りの動作です。
手助けしてくださった方々、本当にありがとうございました!

675 :名無しさん@お腹いっぱい。:2008/11/08(土) 00:21:00 ID:CPemttfO0
使ってるエディタで全角スペースは目立つように設定しておくといいよ
基本だ

676 :名無しさん@お腹いっぱい。:2008/11/08(土) 00:56:08 ID:J2Kg3i9Z0
貼ったときにインデントがあった方が見やすいけど・・・やらん方がいいのかな
Janeとかなら、アンカーとか、IDで見りゃいいんだけど...

/* チラシの裏
Guiの機能を丸々関数コンポーネント化しようとすると、どうしてもGUI番号の設定で実行時エラーになる

#NoTrayIcon
HogeGui_Init(10, "あああ", "いいい", ...)
return
HogeGui_Init(guiNo, opt1, opt2, ・・・) {
 Gui, %guiNo%:Default ; ← ここでランタイムエラー
 Gui, Add, HogeBox, %opt1%
  :
 Gui, Show
}

結局は関数外でどうにかするわけだが、関数からGosubだけ無理だった・・・んでタイマーつかった

HogeGui_Init(guiNo, opt1, opt2, ・・・) {
 global hoge_gui_no
 hoge_gui_no := guiNo
 SetTimer, HogeGui_CreateGui, 0
}
HogeGui_CreateGui:
 SetTimer, %A_ThisLabel%, off
 Gui, %hoge_gui_no%:Default ; ← ここでランタイムエラー
 Gui, Add, HogeBox, %opt1%
  :
 Gui, Show
 return
*/

677 :名無しさん@お腹いっぱい。:2008/11/08(土) 00:57:27 ID:J2Kg3i9Z0
あ、コピペ消してな。ま、チラ裏なんでw

678 :名無しさん@お腹いっぱい。:2008/11/08(土) 13:01:41 ID:J2Kg3i9Z0
ネタ。色々なアンチウィルスで調査してくれるところを他スレで見たんで

Autohotkey.exe (v1.0.47.06) を調査したやつ
Result: 2/36 (5.56%)
ttp://www.virustotal.com/analisis/ad6938129ca0d6b8c8f0c39ba9e1614c

Ahk2Exeで自作スクリプトをコンパイルした実行ファイル を調査したヤツ
Result: 7/36 (19.45%)
ttp://www.virustotal.com/analisis/423e5f6d3b6a45e155daf0ccd85f24f7


カスペ、PC-Toolsあたりで誤爆(?)か
ただ、以前こっちのノートンで消されたスクリプトを再コンパイルしたやつなんだが・・・

679 :名無しさん@お腹いっぱい。:2008/11/08(土) 13:09:59 ID:icZPfnBj0
>>678
UPX使ってるからじゃねぇの?よく分からんが

680 :名無しさん@お腹いっぱい。:2008/11/08(土) 14:34:33 ID:FFFmKv780
キーの統一が出来るのが凄い便利だね。
CTL+Cがコピーじゃないこともあるし、それを統一するのをメインに使ってる。

681 :名無しさん@お腹いっぱい。:2008/11/08(土) 15:27:02 ID:hDp6EMG70
昔は、AHKって繭よりレスポンス悪くて、モデファイドキーの設定が
制限あると思ってたけど、
レス眺めて参考にして設定作ってったら、十分いけるわw 感謝感謝。
Spaceをモデファイドキーにするようになったら
CapsLocが使えなくても問題なくなったし。USBメモリから使えるのも便利だし。
こっちに移行するかな。

682 :名無しさん@お腹いっぱい。:2008/11/08(土) 15:42:43 ID:CTIQOX5k0
被ってるけど基本的には違う目的だからなー。AHKだけで出来るならその方がいいんじゃね?

683 :名無しさん@お腹いっぱい。:2008/11/09(日) 13:30:10 ID:7rl9hedP0
他の起動中プロセスのPIDから起動時コマンドラインを得る方法って、
ReadProcessMemoryするしかないのかね?
一応気合いで実装して問題なく動いてはいるんだけど、
やり方がやり方なだけになんか不安だ…
もし他に方法知ってる人いたら、教えて欲しい…

684 :名無しさん@お腹いっぱい。:2008/11/09(日) 13:40:25 ID:Di6kXzaA0
kwsk

685 :名無しさん@お腹いっぱい。:2008/11/09(日) 13:44:09 ID:3DBJ1MJ+0
>>683
そんな凄いことが出来るのか。やりかたをぜひとも教えてほしい

686 :名無しさん@お腹いっぱい。:2008/11/09(日) 14:32:19 ID:7rl9hedP0
>>684 >>685
ttp://lukewarm.s101.xrea.com/up/file/091.zip
UPしてきた。あんまり信用しないでね。俺自身不安だから。
中にコメントで書いてるけど、一応方法を。
各プロセスの0x00020044にコマンドラインが書かれてるアドレスへのオフセット、
0x00020042にバイト数が書かれてるからそれをReadProcessMemoryで読み出し、
さらにその情報からコマンドライン文字列を得る。
wcharで書かれてるからWideCharToMultiByteで変換かける、って感じかな。
仕様書とかあったの見つけて作ったわけじゃないんで、ホント信頼性が不安。
一応20個ほどのソフトで試したけど動いてるから、問題はないと思うんだけど…

687 :名無しさん@お腹いっぱい。:2008/11/09(日) 14:53:48 ID:3DBJ1MJ+0
thx。DLしました。参考にさせていただきます!

688 :名無しさん@お腹いっぱい。:2008/11/09(日) 15:55:22 ID:QsIQwtb70
firefoxとfirebugみたいに同じahk_classのものってどうやって切り分ける?
タイトルしか方法はないのかな?

689 :名無しさん@お腹いっぱい。:2008/11/09(日) 17:48:15 ID:dWiCWv/E0
>>686
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/115
アドレスはkernel32.dllのバージョンによって異なるらしいから決め撃ちじゃ駄目なんじゃない

690 :名無しさん@お腹いっぱい。:2008/11/09(日) 17:55:11 ID:r3Ke+CxJ0
ウィンドウスタイルが異なるなら・・・
でもfirefoxだと大体同じだからなぁ・・・

firebug入れてないけど、メインウィンドウとTabMixPlusのオプション窓の違いは・・・
WS_MAXIMIZEBOX, WS_THICKFRAME の有無だった

って風にやるとか

691 :名無しさん@お腹いっぱい。:2008/11/09(日) 18:04:22 ID:7rl9hedP0
>>689
そうだったのか、情報ありがとう。
というか、まさかMouseGesture.ahkに入ってたとは…
マウスほとんど使わないからノーチェックだった。
こんな簡単にできるなんて…
なんか危険っぽいんで>>686のファイルは削除しときました。


692 :名無しさん@お腹いっぱい。:2008/11/09(日) 18:33:29 ID:lJelYjxm0
GuiのListViewで
選択したり追加したり消したものを
随時取得してそれらの項目をまとめて処理っていうのをやりたかったんだけど
リファレンスが難しくてついにコピペの壁にぶち当たった
一連のプログラムの例は難しいね
個別にサンプルがないとコピペしかできない素人には手がかりがなくてお手上げ

693 :名無しさん@お腹いっぱい。:2008/11/09(日) 19:04:34 ID:r3Ke+CxJ0
LV_* は独立してメニューにあってもいい気がするな

■ フォーカス行のmカラム目の値を取得
row := LV_GetNext(0, "F")
LV_GetText(row, value, m) ; valueに値が入る

■ 選択された行に対して何かする
row := 0
Loop
{
 row := LV_GetNext(current, "C")
 if (row == 0)
  break
 〜 行番号変数 row で何かする〜
}

グリッドって位置を変えたり何かしてグダグダになるから、
最初に、getter, setter 作った方が後で楽かも

694 :名無しさん@お腹いっぱい。:2008/11/09(日) 19:25:40 ID:lJelYjxm0
>>693
サンクス!
参考に組み立ててみるよ

695 :名無しさん@お腹いっぱい。:2008/11/10(月) 23:44:22 ID:NeSPaHTs0
プロセス起動して、標準出力を得るのって、流行ページの [プロセスを起動して標準出力を読み書き] みたいな方法しかない?

なんだか分からんけど、md5sum.exe 標準出力がとれずに困ってる。

GetMd5(file) {
cmd = md5sum "%file%"
pid := PRun(cmd)
out:=PRead(pid)
PWaitExit(pid)
PClosehandle(pid)
return out
}

でいけるはずなんだが、、、

cmd = md5sum
ならusageの標準出力とれる・・・。

696 :名無しさん@お腹いっぱい。:2008/11/11(火) 17:44:37 ID:Nth/ceWq0
>>695
その関数コピペして使ってみたけど普通に取れたよ。

cmd = md5sum
にすると戻ってこないで永久待ちになってしまう。
あとファイル名間違ってると内容が空。

俺のとはmd5sum.exe自体が違うみたいだから
参考にならんかもしれない…

697 :名無しさん@お腹いっぱい。:2008/11/11(火) 23:52:11 ID:K9Yhhvm10
そか。色々あるから変えてみるかな。

698 :名無しさん@お腹いっぱい。:2008/11/12(水) 00:25:33 ID:0pXL74SG0
左Winキー + hjkl でカーソル移動はできたんだけど
左Winキー + L の時だけ、右へのカーソル移動と同時にPCロックがかかってしまう。。

このソフト内で 左Winキー + L のロックだけを無効化することはできる?

699 :名無しさん@お腹いっぱい。:2008/11/12(水) 02:15:30 ID:hswf/l430
先頭に$を付ける

700 :名無しさん@お腹いっぱい。:2008/11/13(木) 01:37:21 ID:Sj9tzM920
>>699
レスサンクス

だけどVista環境じゃできなかったぜ。。。

XPだと、下ので、Win+Lが無効になって、Rightが効くようになるんだがなあ。

#h::left
#j::down
#k::up
#l::right

701 :名無しさん@お腹いっぱい。:2008/11/13(木) 06:05:12 ID:NmgLDJG60
#UseHookは?

702 :名無しさん@お腹いっぱい。:2008/11/13(木) 15:02:03 ID:7OKAt1xb0
>>700
Space & j::Send,{Down}
Space & h::Send,{Left}
Space & k::Send,{Up}
Space & l::Send,{Right}
Space::return
+Space::Send,{Space}
Space up::Send,{Space}

あきらめてスペース使ってるorz
ついでにChgKey使ってスペースの左右にLCtlとRAltして、
~LCtrl up::Send,{vk1Dsc7B}
~LAlt up::Send,{vk1Csc079}
でIMEのon/offとか。難しい機能使えん・・







703 :名無しさん@お腹いっぱい。:2008/11/13(木) 20:34:10 ID:zthSOgTK0
GUIウィンドウのコントロールの無いところをドラッグしてウィンドウを移動したい。
GUIはタイトルバーなし (-Caption)。

OnMessageで、 WM_MOUSEMOVE(0x200) 受け取る関数を作る
で、LButton押下されたら初期押下地点からの移動差分だけ WinMove してるんだが
追従性が悪くてマウスポインタが窓の外にでると駄目になるorz

こういう窓ってよくあるけど、レスポンスよく実装するにゃどうすればいいのかな。

704 :名無しさん@お腹いっぱい。:2008/11/13(木) 22:41:54 ID:hwA95Qvn0
>>703
OnMessage(0x84,"WM_NCHITTEST")
WM_NCHITTEST(){
Return 2
}
でどうだろう。

705 :名無しさん@お腹いっぱい。:2008/11/13(木) 23:15:41 ID:zthSOgTK0
>>704
サンクス。目から鱗。まさにこれ。

自前で処理するんでなくて、タイトルバーにいるように振る舞えってことなのね。
ttp://www.winapi-database.com/Message/WM/WM_NCHITTEST.html

706 :名無しさん@お腹いっぱい。:2008/11/15(土) 08:27:35 ID:QIssdtpK0
ahk2exeでコンパイルしてEXE化したあとのファイルについて質問です。

コンパイル前のスクリプトに戻して改造されると、困るものを制作しています。
困る理由は、ウェブアクセスを伴うので、ユーザ側でアクセス頻度を変えてしまうと、
サーバ側に迷惑がかかり、しいては配布元へのクレームが想定されるためです。

このような想定外の改造を防ぐには、コンパイル済みEXEから、元スクリプトの抽出を
防止すればよいと思いますが、ahkをパスワードつきでコンパイルしてもパスワードが
わかってしまった場合、

・完全に元のスクリプトに戻すことが可能
・一般的な逆コンパイルと一緒で、ほぼネイティブコードの抽出しか出来ない

の、どちらでしょうか。

707 :名無しさん@お腹いっぱい。:2008/11/15(土) 08:30:02 ID:QIssdtpK0
ちなみに、ahk2exeで最弱なコンパイルを施し、exe2ahkをつかって展開したところ、

・スクリプトに書いてあった「;」や「/*・・・*/」など、実行に無関係なデータは消滅していた
・スクリプト内の変数の文字、タブ、空行の位置は、すべて元の状態が再現できていた
・一度も使われていない関数も含め、includeした内容はすべて収録されていた

ことがわかりました。とくに3番目は、 #includeなどで、関係ない関数を大量に
収録したのを一緒にコンパイルすると、無用な漏洩事故につながる恐れありですね。

708 :名無しさん@お腹いっぱい。:2008/11/15(土) 09:22:23 ID:MVWkSG+d0
> パスワードつきでコンパイルしてもパスワードがわかってしまった場合

そもそも、この想定ってどうなの。容易に分かりづらいパスワード設定すりゃいいんでないの?
パスワード生成機で512桁のパスワード作ってコマンドラインで渡したけど普通にコンパイル通ったよ。

そもそもインタプリタ型の言語の簡易コンパイルに堅牢性を期待する方が間違いのような

709 :名無しさん@お腹いっぱい。:2008/11/15(土) 09:40:02 ID:kzkjARsr0
>>707
つ /nodecompile
参照 >>391-395
    ttp://www.autohotkey.com/docs/Scripts.htm#ahk2exe
    ※パスワードはたぶん最初の64文字までしか見てない様子

#includeの件は、関数の動的呼び出しな可能なahkでは、
不要なincludeなのかどうかをコンパイル時に判別できないので、
全てexeに含めざるを得ない
exeを配布するのであれば、それくらいは開発者が理解しているべきかと

710 :名無しさん@お腹いっぱい。:2008/11/15(土) 10:56:02 ID:jvn1TSZE0
仕事でシビアな使い方をするつもりにしては下調べが甘い、つか
質問する前に現スレを [ahk2exe] なり [コンパイル] なりで検索するくらいするべきだと思うが。
そうすりゃ/nodecompileなんてすぐ出てくる

711 :名無しさん@お腹いっぱい。:2008/11/15(土) 11:37:30 ID:QIssdtpK0
>>708-710
レスthx。下調べが甘いか辛いかはわからないけど、じつは俺>>395なのよ。
あのあと本家を含めて各所回ってみたけど、逆コンパイルについての情報は
解析目的で使用されることが多いためか、情報自体が少ないようで。

コンパイルしたexeには、そのexe自体に、暗号を解くコードと、鍵自身が
同梱されてるわけだから、それを簡単に解く裏ツールがあるかが気になって。

調べた範囲では、そのようなツールは見つからなかったけど、
元々がオープンソースだから、識者が作ろうと思えば簡単に出来るのだろう。

ただ、大前提として、>>708-709の言うとおり、堅牢性を必要とする場所にahkは
適さないことがわかったので、コア部分は、別の方法で再実装することにします。

712 :名無しさん@お腹いっぱい。:2008/11/15(土) 12:50:30 ID:RJiH3Oz00
コンテキストメニューってWinMenuSelectItemで選択できたりしないの?


713 :名無しさん@お腹いっぱい。:2008/11/15(土) 12:55:53 ID:kzkjARsr0
実のところ、現在公開されているソースファイル群の中には、
ahk2exeで暗号化する部分やファイルを出力するI/O部分のソースは含まれていなかったりする
(ビルドは可能なように、ヘッダとlibは含まれているけど)
なので、どのようにエンコードしてるかなどの詳細は、バイナリから解析するしか方法が無い
exe2ahkについてもソース非公開だし、/nodecompileオプションのところのソースも何だかわざと曖昧にしてる感じもする

714 :名無しさん@お腹いっぱい。:2008/11/16(日) 12:17:23 ID:p2rFG6aM0
スクリプトアイコンだけど
タスクトレイの設定で隠す設定にしてるのに
スクリプトを一旦終了させて再度起動する度に元に戻るんだけど
これはどうしようもないのかな?

因みに使ってるスクリプトは、MouseGesuture.ahkです。

715 :名無しさん@お腹いっぱい。:2008/11/17(月) 16:03:04 ID:2O4Ujmc00
AHKで、Windows上で動いているプログラムのPIDを
一括取得するコマンドってありますか?
コマンドラインだとtasklistコマンドが該当します。

なんかPCが遅いと思っていると、特定のプログラムが暴走してCPUを
食いつぶしていることがあるので、発見したら警告を出したいと考えています。
CPU使用率は、はやらせるページ管理人さんのCPU使用率コマンドを使うとして

pid:=(全取得)
Loop,parse,pid,`n {
 pid:=(数字だけ抜き出す)
 now_usage:=GetProcessCPUState(pid,period=0)
 全調査したらbreak
 }

作るとしたらこんな感じで考えていますが、なにかよい方法ありますでしょうか。

716 :名無しさん@お腹いっぱい。:2008/11/17(月) 16:45:30 ID:QMf9a2hW0
tasklist コマンドの標準出力をパースすればいいじゃないかな

717 :名無しさん@お腹いっぱい。:2008/11/17(月) 16:55:58 ID:/1ntx7I00
#IfWinActive, Sugar+Spice!
{
WheelUp::LButton
}
エロゲで上みたいにテストしたら
誤動作してLButtonも出るけど不意にWheelUpもでるみたいな状態になるんだけど
どうやったら解決できますか?

718 :名無しさん@お腹いっぱい。:2008/11/17(月) 17:11:31 ID:QMf9a2hW0
{ .. } ブロックいらなくね?

719 :名無しさん@お腹いっぱい。:2008/11/17(月) 17:25:27 ID:qcid9+X10
alt+tabみたいに開いた順番でウインドウ変更していくんじゃなくて、
タスクバーの表示順にウインドウ変更する方法ってない?

あるサイトでwin+tabでやるって書いてあるんだけど、win+tabだと必ず2番目のウィンドウにフォーカスが当たっちゃうし。
alt+escも開いた順番になるので同様に出来ない。

720 :名無しさん@お腹いっぱい。:2008/11/17(月) 18:20:28 ID:5ql7N49F0
Alt+Escならタスクバー順になるだろ
それともAlt+Shift+Escのことか?

721 :名無しさん@お腹いっぱい。:2008/11/17(月) 18:27:31 ID:qcid9+X10
>>720
レスありがとう
いや、順番どおりにならないのだよ。
それともWINDOWSの設定か何かが必要なのかな

722 :名無しさん@お腹いっぱい。:2008/11/17(月) 19:09:37 ID:2CnVqBJk0
ttp://www.autohotkey.com/forum/topic18652.html

ここのTaskButton.ahkで、ボタンの並びや各pid、ウィンドウハンドルなどが取得できるから、
次のアプリを WinActivate , ahk_id %HWND% すれば出来そうな気がする

723 :名無しさん@お腹いっぱい。:2008/11/17(月) 19:10:39 ID:+Bf2Huz50
>>717
WheelUpとかDownって押し下げイベントしかでないから、
RemapするとLButton押し下げのままで離されなくなるんじゃない?

>>721
少なくとも俺も順番通りにはならない。
シェルがbbLeanだからかもしれないが。

724 :名無しさん@お腹いっぱい。:2008/11/17(月) 19:11:10 ID:e8ZLw5Z70
やってみたわけじゃないけど
AHK側でウィンドウの増減を監視して
その順番をIDでストックしておけば
タスクバーの順番でどうにか出来そうな気もする


725 :名無しさん@お腹いっぱい。:2008/11/17(月) 21:48:19 ID:pOayu/bn0
>>722
コレいいな

726 :名無しさん@お腹いっぱい。:2008/11/18(火) 13:23:06 ID:BSJw2kdQ0
はぁ
ゲームパッド用のahk書いてるんだけど誰か手伝ってくれないかな

727 :名無しさん@お腹いっぱい。:2008/11/19(水) 07:40:09 ID:Nt7L0YhH0
>>705
もう必要なさそうだけど
SetWinDelay,0 でスムースに動くようになったりしない?


728 :名無しさん@お腹いっぱい。:2008/11/19(水) 13:35:49 ID:hO5Veyuw0
パッドだけ、いまだに自作のツールでまかなってる
ahkだと面倒すぎ

729 :名無しさん@お腹いっぱい。:2008/11/19(水) 14:12:43 ID:M3voM/uk0
>>728
どう面倒なの?
パッドの制御なら、ahkでもかなり自由度が高いと思うのだが

730 :名無しさん@お腹いっぱい。:2008/11/19(水) 20:12:55 ID:cgcl3laB0
http://www.autohotkey.com/docs/scripts/JoystickMouse.htm
↑のをいろいろ改良して使ってた。PC買い直してパッドをつなげてないから今は使ってないけど。
カーソルの動きもスムーズでJoyAdapterやJoyToKeyより使いやすかった。

731 :名無しさん@お腹いっぱい。:2008/11/19(水) 22:33:47 ID:sKIy3cUf0
流行らせるところの BREGEXP.ahk つかうと、2度目以降でおかしな結果になる。
つか、前回の値が残っていて結果が...orz

Cとかやったことなくてよく分からんけど、文字列の終端は 0x00 らしいんで、
変数のメモリ確保のところで確保するバイト数+1でいったんゼロ埋めしてから
再度欲しいバイト数分だけ再確保したら期待通りに動いてるようなきがする。

行: 内容
**: VarSetCapacity(%name%_Match,length+1,0x00) ; ココを追加
98: VarSetCapacity(%name%_Match,length)
99: DllCall("RtlMoveMemory", Str,%name%_Match, Int,start, Int,length)

#105-#106も同様にやった。

識者の方、こんな修正でいいんでせうか?
あと、%name%_Matchってグローバル変数である必要がわからない・・・

732 :名無しさん@お腹いっぱい。:2008/11/19(水) 23:22:36 ID:sKIy3cUf0
>>727
サンクス。やってみた。ヌルヌル動くようになった。
けど、マウス素早く動かして窓から出るとNG。
そもそもマウスが窓内にあるときにメッセージが来るんで
方式としてはちと厳しかったかな、と。

733 :名無しさん@お腹いっぱい。:2008/11/20(木) 05:34:07 ID:oZG/mB5h0
>>729
ジョイスティック周りは、ほぼAPIレベルの機能しか提供されてないから、
結局、ahkでツールを再実装するのと同じ手間がかかるけど、
ahkの言語仕様ではやりたくないってことで
マウス代わりにするだけなら、上にも出てるサンプルの改良でいいんだけどさ

734 :名無しさん@お腹いっぱい。:2008/11/20(木) 07:02:00 ID:9NZtlwUg0
ボタンに割りあてるだけならいいけど
アナログスティックあたり面倒そう。

735 :名無しさん@お腹いっぱい。:2008/11/20(木) 17:58:22 ID:i1Skvki50
スティックじゃなくても十字がすでにめんどくさい

736 :名無しさん@お腹いっぱい。:2008/11/20(木) 22:12:16 ID:fS2VFZc20
指定時刻に入力したコマンドを実行するタイマーで
複数同時稼動させるにはどうしたらいいかな
同じ内容のスレッドだと後から割り込まれたら前のは止まっちゃうよね

737 :名無しさん@お腹いっぱい。:2008/11/20(木) 23:19:07 ID:luSHvI4h0
別スレッド作ればよいかと

if (条件 for Job1)
 SetTimer, Job1, 0
if (条件 for Job2)
 SetTimer, Job2, 0

  : 

Job1:
 SetTimer, %A_ThisLabel%, Off
 job job job
 return

Job2:
 SetTimer, %A_ThisLabel%, Off
 job job job
 return

738 :名無しさん@お腹いっぱい。:2008/11/21(金) 00:10:11 ID:03AT57o60
>>737
やっぱりその方法しかないかな
あらかじめ上限が決まっちゃうから微妙に不満足なんだよね

739 :名無しさん@お腹いっぱい。:2008/11/21(金) 02:40:50 ID:MGVMzpcy0
新たにAHKを書き出して実行

740 :名無しさん@お腹いっぱい。:2008/11/21(金) 17:36:07 ID:03AT57o60
それだったら
#SingleInstance Off
で多重起動しちゃったほうが楽だよね

741 :名無しさん@お腹いっぱい。:2008/11/21(金) 18:46:46 ID:BeoCv19W0
同内容のスレッドを同時起動する理由も起動条件もわからんのであれだが
パラメータをコマンドラインから貰うようにして#SingleInstance Off で多重起動が一般的じゃね。

それか処理内容を関数でカプセル化するとか。
ローカル変数使えばバッファ上書きされることもないし
同時に別スレッドから呼ばれててもそれぞれ別軸で動くはず。

SetTimer,Job%JobNo%,0

Job1:
Job2:
 :
Job99:
 SetTimer, %A_ThisLabel%, Off
 jobFunc(A_ThisLabel)
return

jobFunc(JobLabel)
{
  StringReplace, No, JobLabel,Job,,
  job job job
}

742 :名無しさん@お腹いっぱい。:2008/11/21(金) 22:30:11 ID:03AT57o60
いろいろとありがとう参考になったよ
やりたいことは作業前にいくつかメモを設定しといて
指定時間になったら忘れないようにMsgBoxでお知らせって動作

743 :名無しさん@お腹いっぱい。:2008/11/21(金) 22:44:46 ID:0NJ7soSr0
スクリプト仕様についてなんだが・・・

ユーザ定義関数の項に

> add(a,b,c=0,d=0){
> return a+b+c+d
> }
> MsgBox,% add(1,2,3)

なんてのがあったんだが、
 % <式>
で式の結果を文字列として取り出せるってこと?ってかそう動いてる。
 MsgBox, % add(1,2,3) + add(4,5,6)
で動くし・・・

これ全く知らなかった・・・。
関数からの戻り値を一時変数に詰めて %hoge% とかやってたよ。

744 :名無しさん@お腹いっぱい。:2008/11/21(金) 23:20:58 ID:Os1W4PJG0
>>743
% をつけるとその後は expression が使えるってヘルプに書いてあるよ

745 :名無しさん@お腹いっぱい。:2008/11/22(土) 00:35:55 ID:z/G3xOJE0
タイマ多重起動考察 もはや蛇足だと思うが興味深かったので >>742

autoexecute:
 SetTimer,Timer,1000
 i = 0
return

#A::
 i++
 TimCnt%i% := 60 ; 1分タイマ
return

Timer:
 Loop %i%
 {
  if (TimCnt%A_Index% =< 0)
    continue

  TimCnt%A_Index%--
  if (TimCnt%A_Index% = 0)
    MsgBox,時間です
 }
return

746 :名無しさん@お腹いっぱい。:2008/11/22(土) 14:30:50 ID:1ayVtNEh0
テストスクリプトを止めようとしてタスクマネージャでAutohotkey.exe殺したのはいいけど、
お目当てのもので無かったとという経験は俺だけじゃないはず。

---- KillAhk.ahk (1 of 2)-----
#NoEnv
DetectHiddenWindows, On
gmx := 10, gmy := 8
Gui, +LastFound +Resize
Gui, Margin, %gmx%, %gmy%
Gui, Add, ListView, vLV Checked grid, pid|path|result
Gui, Add, Button, w100 vBtn1, Find
Gui, Add, Button, w100 x+10 yp+0 vBtn2 disabled, Kill Checked
Gui, Show, w500 h200
; return

ButtonFind:
 WinGet, list, List, ahk_class AutoHotkey,,%A_ScriptFullPath%
 len := StrLen(" - AutoHotkey v" . A_AhkVersion)
 LV_Delete()
 Loop, %list% {
  hwnd := list%A_Index%
  WinGet, pid, PID, ahk_id %hwnd%
  WinGetTitle, title, ahk_id %hwnd%
  StringTrimRight, path, title, %len%
  LV_Add("Check", pid, path)
 }
 Loop,3
  LV_ModifyCol(A_Index, "AutoHdr")
 GuiControl, Enable, Btn2
 return

747 :名無しさん@お腹いっぱい。:2008/11/22(土) 14:31:23 ID:1ayVtNEh0
---- KillAhk.ahk (2 of 2)-----
ButtonKillChecked:
 Loop,2
  GuiControl, Enable0, Btn%A_Index%
 row = 0
 Loop {
  row := LV_GetNext(row, "C")
  if (row == 0)
   break
  LV_GetText(pid, row, 1)
  Process, Close, %pid%
  LV_Modify(row, "Col3", (ERRORLEVEL==pid) ? "Killed" : "Failed")
 }
 LV_ModifyCol(3, "AutoHdr")
 GuiControl, Enable1, Btn1
 return

GuiSize:
 GuiControlGet, Btn1_, POS, Btn1
 w := A_GuiWidth - 2 * gmx, h := A_GuiHeight - 3 * gmy - Btn1_h, y := h + 2* gmy
 GuiControl, Move, LV, w%w% h%h%
 Loop, 2
  GuiControl, Move, Btn%A_Index%, y%y%
 return

GuiClose:
 ExitApp

748 :名無しさん@お腹いっぱい。:2008/11/22(土) 14:52:13 ID:zLOUw4C/0
時々凄く重くなることがあるんだが再起動すると直る

749 :名無しさん@お腹いっぱい。:2008/11/22(土) 14:53:40 ID:1ayVtNEh0
アッー!
exe化したAhkのプロセスを考慮してない...

14行目からちょっと改変

 var := " - AutoHotkey v" . A_AhkVersion
 LV_Delete()
 Loop, %list% {
  hwnd := list%A_Index%
  WinGet, pid, PID, ahk_id %hwnd%
  WinGetTitle, path, ahk_id %hwnd%
  IfInString, path, %var%
   StringTrimRight, path, path, % StrLen(var)

750 :名無しさん@お腹いっぱい。:2008/11/22(土) 15:04:18 ID:aGUJ7GK+0
>>746
動いたよ。これは便利!

>>748
俺もあるわそれ。まったく同じスクリプトなのに、起動させるタイミングによって、
もっさりしたり、きびきびしたりが半々くらい。遅いときは体感で3分の1ほどになる。
スクリプト中で定期巡回用のsettimerを2〜3個走らせると、症状が頻発する気がする。

751 :名無しさん@お腹いっぱい。:2008/11/22(土) 16:06:42 ID:aGUJ7GK+0
気に入ったので微改造してみた。

6行目

 Gui, Add, ListView, vLV Checked grid, pid|path|result

 Gui, Add, ListView, vLV Checked grid, pid|path|result|CPU|MEM

21行目と22行目の間に、下記追加
 acpu:=GetProcessCPUState(pid)
 acpu=%acpu%`%
 amemup:=GetProcessMemoryState(pid)/1048576
 amemup=%amemup%MB
 LV_Add("Check", pid, path,result,acpu,amemup)

これで、該当スクリプトのCPU使用率と、仮想メモリサイズが表示されるので、
膨らんでるやつを狙い撃ちする。
(データ取得は、はやらせるページ管理人さんの「システムモニタ用関数群」を使用)

752 :名無しさん@お腹いっぱい。:2008/11/22(土) 19:10:44 ID:pArO2V6j0
>>751
アイテムがだぶるみたいなんだけど。

753 :名無しさん@お腹いっぱい。:2008/11/22(土) 19:58:50 ID:ZqQATLnJ0
>>748
再起動ってPC再起動?
それならうちもある。
AHKが知らんうちにCPU独占するようになって、
そうなるとAHKを立ち上げなおしてもなおらず、
PC自体を再起動しないと戻らなくなる。

754 :名無しさん@お腹いっぱい。:2008/11/22(土) 21:25:34 ID:aGUJ7GK+0
>>752
環境によって、そうなるね。調べてみたら
・単独でスクリプトを動かしたら、症状が出ない
・単独+CPU取得dllをincludeしても、症状が出ない
・自分のスクリプトに組み込むと、症状が出る

というわけで原因はSetTitleMatchModeの初期値の違いだった。
冒頭 DetectHiddenWindows, On の下に
 SetTitleMatchMode,3
 SetFormat, Float,.1

を追加したら、重複しない&メモリの桁数がそろう。

ついでに、acpu:=GetProcessCPUState(pid) の下に
 acpu:=round(acpu)
を入れると、CPU負荷の空白がなくなり、整数表示になる。

755 :名無しさん@お腹いっぱい。:2008/11/22(土) 22:17:30 ID:1ayVtNEh0
タイマでリフレッシュすりゃもうタスクマネージャだw

756 :名無しさん@お腹いっぱい。:2008/11/22(土) 23:19:10 ID:zLOUw4C/0
>>753
そうそうPC自体を再起動すれば戻る。
なんか起動直後のメモリやCPUを大量に使ってるときにホットキーのアクションを使うとおかしくなる・・・気がする。

FIREFOXで結構ホットキーを割り当ててるんだけど、それだけがおかしくなる事もあるし。

ただ、家のPCではその現象は起こったこと無い、会社のPCだけ。

757 :753:2008/11/23(日) 02:28:54 ID:uNQ2u+Zz0
一度CPU異常負荷状態になると、
AHKを終了させればCPUは落ちつくが、
もう一度AHKを起動するとやっぱり異常負荷状態が継続してるんだよね。

PC再起動でやっと直るんだけど
なぜこうなるのかかなり謎。
AHK関係のプロセスは残ってないはずなのに。
windows側でなんかおかしな状態になってるのかな。
AHKがなんかのタイミングで秘孔をついてたりして。

こんど異常状態になったら
スクリプトを簡素化して
どの記述が関係あるかちょっと実験してみる。

758 :名無しさん@お腹いっぱい。:2008/11/23(日) 03:37:17 ID:JDz7YMNC0
AutoHotkeyON/OFFスクリプト
ttp://down11.ddo.jp/uploader/download/1227377123.rar/attatch
俺のも試してくれw。使ってみて置いとくならahklistとalldirの中身を変えてね。
Passはmgahk

366の改良版。>>746氏との趣向の違いが楽しめるかも。
中身は汚いしゴミはそのまま。説明下手でもある。exe化ahkに未対応。

書いてて今気づいたけど、WincloseのところをWinkillに変えれば強制終了の項目いらんか
Process, Closeで殺さなくてもほぼ一緒なのかな?

759 :名無しさん@お腹いっぱい。:2008/11/23(日) 21:13:23 ID:1fzw1MR30
スクリプトうpろだ作ろうぜ
おまえらの自慢のスクリプトたちを世に出していこう
自分のPCだけに眠らせて置くのはもったいない

760 :名無しさん@お腹いっぱい。:2008/11/23(日) 21:26:13 ID:SX5go5mm0
流行らせるページにアップローダあるよ

761 :名無しさん@お腹いっぱい。:2008/11/24(月) 00:25:00 ID:O3t42L8X0
ショートファイル名からロングファイル名を得るのってコマンドとか関数とか無いのか。。
それとも俺がみつけられんだけなのか・・・

インチキくさいけどこんなん作って使ってる

GetLongFileName(name, long=true) {
 Loop, %name%, 1
  return long ? A_LoopFileLongPath : A_LoopFileShortPath
}

762 :名無しさん@お腹いっぱい。:2008/11/24(月) 00:54:51 ID:g2UtBFIf0
DllCall使うならこう?
;----
GetLongPathName(sp){
    buff := DllCall("GetLongPathName","str",sp,"str",lp,"uint",0)
    VarSetCapacity(lp,buff)
    DllCall("GetLongPathName","str",sp,"str",lp,"uint",buff)
    Return lp
}
GetShortPathName(lp){
    buff := DllCall("GetShortPathName","str",lp,"str",sp,"uint",0)
    VarSetCapacity(sp,buff)
    DllCall("GetShortPathName","str",lp,"str",sp,"uint",buff)
    return sp
}
;----
速度比較してみたらDllCallの方が若干早いけど…そっちのほうが簡単だね。

763 :762:2008/11/24(月) 01:45:34 ID:g2UtBFIf0
あーごめん、計測し直したら違った。
SetBatchLineの値がデフォルトの状態だとDllCallが若干早いけど、
SetBatchLine, -1でやったら >>761 の方法の方が早いかもしれない。

ちなみに本家のヘルプ見直したら >>761 の方法っぽいのが
FileGetAttrib のとこに書いてあったし、
AHKのコマンドだけで実現できるから、
AHK的にはそっちのほうが正しいんじゃないかな。
でもコマンドあってもいいと思うなこれは…


764 :名無しさん@お腹いっぱい。:2008/11/24(月) 10:32:31 ID:PZZtAmrB0
ダメ文字問題あるからパス取得系はなるべくDllCall使ったほうが無難だと思う

自分は http://www5a.biglobe.ne.jp/~crab/winsdk/path_func.html あたりの
パス系APIを適当に束ねてLIBに突っ込んで使ってる。

765 :762:2008/11/24(月) 11:19:09 ID:g2UtBFIf0
>>764
そういやダメ文字問題もあったんだっけ…フォローありがとう。
ファイル操作系は信用してないからほとんど使ってなくて、すっかり忘れてた。

766 :名無しさん@お腹いっぱい。:2008/11/24(月) 15:12:04 ID:cQUWVx2U0
>>764
このアドレスでさ、一番上のPathAddBackslashだと、
PathAddBackslashAみたいに最後にAをつけないとダメなんだけど
これってAutoHotkeyだけ?はまった。型名が悪いのかと思って適当に変えてた。
他にプログラミングみたいなことしないからわからなかった。なんでこんなことになるのw?

PathAddBackslash(filename)
{
abc := DllCall("shlwapi.dll\PathAddBackslashA", Str, filename)
return filename
}

767 :名無しさん@お腹いっぱい。:2008/11/24(月) 15:59:18 ID:D6foYxyr0
>>User32.dll、Kernel32.dll、ComCtl32.dll、Gdi32.dll内の関数の場合、DllFileを省略することができる。
>>また、この場合、関数名の末尾に「A」がつく関数名は、「A」を省略して書くことができる。

shlwapiは含まれていないのでAを付けなければいけないんじゃない?

768 :名無しさん@お腹いっぱい。:2008/11/24(月) 16:08:34 ID:PZZtAmrB0
VBのDeclareなんかもその仕様

769 :名無しさん@お腹いっぱい。:2008/11/24(月) 16:19:39 ID:cQUWVx2U0
>>767-768
なるほど。つけなきゃじゃなくて省略してたんだ、逆か。
764のは省略されてたんだね。納得しました、どうもです。

770 :名無しさん@お腹いっぱい。:2008/11/24(月) 18:34:14 ID:GxzFceha0
時間表示など描画しまくる場所に右クリなどのコンテキストメニューが被ると
選択しにくくなるけど回避策あるかな
何回かポチポチしないと押せないときがある

771 :名無しさん@お腹いっぱい。:2008/11/24(月) 23:33:10 ID:cQUWVx2U0
なんか公式に新しいの来てる。

772 :名無しさん@お腹いっぱい。:2008/11/24(月) 23:43:52 ID:28JRaHDO0
通常の3倍の速度で動く新型ベータだな。

773 :名無しさん@お腹いっぱい。:2008/11/25(火) 00:11:24 ID:pUvXPGI/0
さっそく差し替えてみた。不具合はない。
100000件テキスト読み込み&処理で比較してみたが、
なんとなく速くなった気がするが、変わらない気もする。

もともとWindows側の他タスクの影響でバラツキが多いしなぁ。
正確な測定法があればいいのだけど。

774 :名無しさん@お腹いっぱい。:2008/11/25(火) 18:36:22 ID:pUvXPGI/0
自作スクリプトの、メモリの無駄遣いで悩んでいます。

原因を特定するべく、スクリプト動作中にタスクトレイで右クリックして「OPEN」し、
Ctrl+Vで、Global Variables (alphabetical)を参照しました。

この変数一覧は、アルファベット順でソートされますが、
つかってる変数が多いと最初のほうしか参照できません。

この一覧を、テキストファイルに書き出す方法は無いでしょうか?

775 :名無しさん@お腹いっぱい。:2008/11/25(火) 19:52:08 ID:VyDJAsMb0
この辺を参考にすればListVarsの結果を取得できるけど
ttp://www.autohotkey.com/forum/viewtopic.php?t=10182

776 :1/2:2008/11/26(水) 00:47:34 ID:wwN1R5Cc0
ドロップされたファイルに関連づけられている大小開閉アイコンを表示してみるテスト
リストビューの表示のさせ方がわけわかなのでとりあえず無理矢理Pictureに描画

FileName := A_ScriptDir ; デフォルト描画:フォルダアイコン
Gui,Add,Picture,HwndPhWnd2 W16 H16 section,
Gui,Add,Picture,HwndPhWnd4 W16 H16 ys,
Gui,Add,Picture,HwndPhWnd1 W32 H32 xs section,
Gui,Add,Picture,HwndPhWnd3 W32 H32 ys,
Gui,+Resize ToolWindow AlwaysOnTop autosize
Gui,show,autosize,ファイルドロップでアイコン表示
Loop,4
DrowIcon(FileName,PhWnd%A_Index%,A_index-1)
return

GuiDropFiles:
Gui,Hide
Gui,Show
Loop,4
DrowIcon(A_GuiEvent,PhWnd%A_Index%,A_index-1)
return

GuiEscape:
GuiClose:
ExitApp


777 :2/2:2008/11/26(水) 00:48:21 ID:wwN1R5Cc0
DrowIcon(filename,hWnd,siz=0)
{
;--- ファイルアイコン取得 ---
sfi_size = 352 ; Structure size of SHFILEINFO.
VarSetCapacity(sfi, sfi_size)
uFlags := 0x100|siz ; SHGFI_ICON + アイコンサイズ
DllCall("Shell32\SHGetFileInfoA", str,FileName, uint,0, str,sfi, uint,sfi_size, uint, uFlags)
hIcon = 0
Loop 4
hIcon += *(&sfi + A_Index-1) << 8*(A_Index-1)

;--- 表示 ---
hDC := DllCall("GetDC", UInt,hWnd, UInt)
ret := DllCall("DrawIconEx",UInt,hDC, Int,0, Int,0, UInt,hIcon, Int,0, Int,0, Uint,0, UInt,0, UInt,3)
DllCall("DestroyIcon", UInt,hIcon)
DllCall("ReleaseDC", UInt,hWnd, Uint,hDC)
}


778 :名無しさん@お腹いっぱい。:2008/11/26(水) 14:03:35 ID:1XWwyXmX0
スクリプトを実行中に現れるタスクトレイアイコンの上に、
マウスカーソルが乗っかったかどうかを判別する方法はありますか?

779 :名無しさん@お腹いっぱい。:2008/11/26(水) 14:11:21 ID:20LuwnAn0
>>778
流行らせるページ
MyScripts
タスクトレイアイコン操作

780 :名無しさん@お腹いっぱい。:2008/11/26(水) 14:18:46 ID:1XWwyXmX0
>>779
thx! 希望の動作が作れそうです

781 :名無しさん@お腹いっぱい。:2008/11/26(水) 23:34:22 ID:PQjSLTfl0
ウィンドウのスタイルとかパクりたいなぁと思ったときに、Webで調べるのメンドクセ
ってなったときに使うと便利かもしれないスクリプト。

ttp://lukewarm.s101.xrea.com/up/file/091.zip

782 :名無しさん@お腹いっぱい。:2008/11/27(木) 01:43:58 ID:pOwnMABe0
よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。
if書きたくないから、三項演算子だいすき

#SingleInstance
#Persistent
keys = Ctrl|Shift|Alt|LWin|RWin
alertDur = 3000 ;(ms)
SetTimer, Alerter,200
return
Alerter:
alert =
Loop, PARSE, keys, |
{
%A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField%
alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : ""
}
Tooltip, %alert%
return

783 :名無しさん@お腹いっぱい。:2008/11/27(木) 02:17:14 ID:aPVwdyPd0
>>782
もしかして、ロジクール製マウス+Setpointを使ってる?
俺もそれに悩んだが、原因はSetpointだった。

・15秒以上押されていたら、押しっぱなし警告表示
・30秒以上押されていたら、Setpoint殺す→Setpoint再起動

ってのを作って、いまはあまり意識せずにすむようになった。

784 :名無しさん@お腹いっぱい。:2008/11/27(木) 08:11:33 ID:xgteFTYx0
ボタンへの割り当てをahkでやってもダメなの?
うちでもロジマウスを使ってるけど、
6個目以降のボタンやチルトに、
SetPointのxmlでF13〜を割り当てて、
それをahkで変更させて快適生活だよ

785 :名無しさん@お腹いっぱい。:2008/11/27(木) 10:30:57 ID:aPVwdyPd0
>>784
同じ使い方だけど、出ない人もいるのか・・・。Setpoint側では、極力シンプルな割り当てを
xmlで定義し(チルト=F13 F14など)、あとは全部AHKで処理させてる。けど、3日に1回は発生する。

ShiftやAltが押しっぱなしだと、アプリの挙動が微妙に変わるだけで、すぐには気づきにくいのが、さらに困る。
ロジクールUSBマウス+一般のUSBキーボードを使ってると出やすい。
キーボードがPS/2だと出にくいが、症状が無くなる事はない。

原因を特定したいが、Setpointは他にも挙動不審だらけなので、半分あきらめてる。
この問題は、AutoHotkeyとの相性に限らず、世の中のSetpoint全部で発生してる。

> setpoint 押しっぱなし に一致する日本語のページ 約 7,340 件
http://www.google.co.jp/search?q=setpoint+%E6%8A%BC%E3%81%97%E3%81%A3%E3%81%B1%E3%81%AA%E3%81%97

Logiのハードは好きなのだが、ドライバソフトがダメすぎ。

786 :名無しさん@お腹いっぱい。:2008/11/27(木) 11:24:49 ID:KZGLEqy60
俺も昔はロジだったが、やはり同じような症状が出るんで、
ドライバレスのゲーマー用マウスに乗り換えたな

アプリ毎の定義なんかはAHKで出来るし、
今はロジにこだわらんでも良いマウスはいくらでもあるかと

787 :名無しさん@お腹いっぱい。:2008/11/27(木) 13:40:59 ID:A+ZjFPYZ0
チルトホイールいらないならロジもSetpoint不要で動くけどな。
ドライバレスならどっちにしろ5ボタンまでしか効かないんだろうし
Setpointだけアンインスコすればマウス買い替えは必要なかった気ガス

788 :名無しさん@お腹いっぱい。:2008/11/27(木) 14:22:49 ID:juGGA80y0
スレ違いだけど、しばらく前にロジスレでCtrl押しっぱなしになるのはSetPointの不具合
って話に落ち着いてた気がする。SetPointのバージョン変えたら良いかもね。

789 :名無しさん@お腹いっぱい。:2008/11/27(木) 16:15:54 ID:ZlU3mAym0
>>782
これいいね。
Synergyのせいでよく「押しっぱなし状態」になるので、使わせてもらうよ。
ありがとう。

790 :名無しさん@お腹いっぱい。:2008/11/27(木) 16:41:38 ID:jpg0r/4Z0
マウスドライバの所為だったのか…
うちでもCtrl押しっぱなし現象が頻発するんでAHKの使用を断念しちゃったんだよな
Esc押したらスタートメニューが開いたりとかで、その度にOSリブートを余儀なくされてキレてしまったんだけど、
原因がわかったからまた使ってみよう

791 :名無しさん@お腹いっぱい。:2008/11/27(木) 16:41:57 ID:GBGuUIux0
mayuのせいかと思ってたがsetpointのせいだったのか。
チルトにF13とか、やっぱり似た使い方する人はいるもんだな。

792 :782:2008/11/27(木) 20:29:53 ID:pOwnMABe0
やはり、mayuスレと似た流れになったなぁ
無効では VMWare のフィルタドライバが悪さしてるとかなんとか・・・

路地関連は該当PCには全く使ってない。
Synaptics のドライバは入ってる。(USB TravelNavi)

mayu7(dat落ち
ttp://pc11.2ch.net/test/read.cgi/win/1180379801/851-

キー押下状態監視して、Send, {Ctrl Up} 、しても無理だから
ストレス溜まるけど、アラート出すことで注意喚起することでどうにかなるんで
とりあえず放置かなっと。

793 :名無しさん@お腹いっぱい。:2008/11/27(木) 23:15:08 ID:hv64eay10
FIREFOXと相性悪い?
なんかFIREFOXに割り当てたホットキーを使うと頻繁にキーが固まる。

そうなるとPC再起動しないと直らない

794 :名無しさん@お腹いっぱい。:2008/11/28(金) 03:03:56 ID:/DX2XEWR0
うちの場合、例えばAltが押しっぱなし状態になった時は、
左Altを押しても直らないけど右Altを押すと直ったりすることがある。

795 :名無しさん@お腹いっぱい。:2008/11/28(金) 12:22:30 ID:Ziw2CE250
押しっぱなしといえば、「今まさに押されているキー」を
取得する方法ってないですか?

keyhistoryだと、専用のウインドウを開くことしかできないし、
GetKeyStateだと、対象となるキーを指定しないといけない。

汎用的に取得できる方法があれば、ctrl,alt以外にも、
押しっぱなし検出が、ほぼ全部把握できるのだけど、
なにかよい取得方法はないでしょうかね。

796 :名無しさん@お腹いっぱい。:2008/11/29(土) 02:30:27 ID:+w440RYK0
inputじゃないの

797 :名無しさん@お腹いっぱい。:2008/11/30(日) 20:54:04 ID:Wei5OvPgP
これWin+Eとかだと上書きできるけど、Win+Lだけ効かないのはWindows側の仕様ですか?
ロック無効にできればいいんだけれども方法探しても見あたらないしどうしたもんか

798 :名無しさん@お腹いっぱい。:2008/11/30(日) 22:59:56 ID:a4XQqhnD0
うちでは Win+Lを、ランチャの編集ショートカットとして定義して、ふつうに常用してるよ。

799 :名無しさん@お腹いっぱい。:2008/11/30(日) 23:34:14 ID:/xRbaJpc0
俺も「L」で始まるソフト用ランチャーで使えてるよ

800 :名無しさん@お腹いっぱい。:2008/11/30(日) 23:50:12 ID:Uz/GmVq+0
どうせ駄目なのはVista。騒ぎたいだけに違いない。

801 :名無しさん@お腹いっぱい。:2008/11/30(日) 23:56:52 ID:a4XQqhnD0
たまに快適度が薄れると思ったら、>>757の現象が、うちでも出てることがわかった。
異常判断テストスクリプト

start:=A_Tickcount
Loop,10000000
{
str=A_Index
}
end:=A_Tickcount
time:=end-start
msgbox,【10000000Loop】 %time% msec.

これを実行すると、正常時は2秒〜2.5秒で終わるが、一旦おかしくなると10秒ほどかかる。

OSがこの状態になると、キー定義+αしかやってないスクリプトでも、
CPUを常時17%位食うようになってしまい、PC全体が重くなる。
AHKを終わらせるとCPU負荷は元に戻る。AHK以外の動作は、ふつうに使える。

OSを再起動すると、AHKのもっさりは直る。
どんなタイミングで、この異常動作になるかは不明だが、計測結果は再現性がある。

環境
 XP SP3
 IntelG45 E2180 4GB
 AHK 1.0.47.5 2バイト文字対応改造版

802 :757:2008/12/01(月) 01:53:26 ID:oVBCocp/0
この現象はかなり前からあったよ。
少なくとも一年以上前からあった。
特に、以前キー定義を試行錯誤で何度も作り直してた時期は、
一日に数十回ahk再起動とかやってたけど、
その時期は暴走する率がかなり高かった覚えがある。
最近はログイン時に一度起動したっきりが多いんだけど、
暴走回数はかなり減ってる。

うちではahkの優先度を通常以上で動かしてるので
ahkが暴走すると大変なことになって困る。

ちなみに現状の環境は
XP SP3
PenM1.3Ghz 2GB
AHK 1.0.47.06

803 :名無しさん@お腹いっぱい。:2008/12/01(月) 15:20:25 ID:ZjTN9uRV0
このソフトであるウィンドウが表示されたら
あるソフトを強制終了して再度起動するスクリプト作れますでしょうか?

804 :名無しさん@お腹いっぱい。:2008/12/01(月) 15:21:30 ID:bZprMjA30
はい

805 :名無しさん@お腹いっぱい。:2008/12/01(月) 15:38:04 ID:VvrFgLyc0
AHKで作成したツールチップをAHKで割りあてたキーで操作しようとしても
きかないのですが、なんででしょうか。

806 :名無しさん@お腹いっぱい。:2008/12/01(月) 15:41:29 ID:82G3Zf2A0
>>805
嘘つき
~a::tooltip,aaa,1,1
~b::tooltip

807 :名無しさん@お腹いっぱい。:2008/12/02(火) 00:34:54 ID:2U3D4Gda0
昔のバックアップを整理するのに、CDを読み込めるようになったら
FastCopyかFFCでコピーして、終了したらディスクを排出して待機、
みたいなスクリプトを組みたいんですが
CDドライブの開閉を監視する方法ってありませんか?

808 :名無しさん@お腹いっぱい。:2008/12/02(火) 00:39:30 ID:2/OX2Z8Z0
DriveGetじゃね?
てかヘルプ嫁

809 :名無しさん@お腹いっぱい。:2008/12/02(火) 01:37:07 ID:GYdt1wgZ0
ダイアログで一時停止して、ボタンが押されたらスクリプトからディスクを格納したほうがいいんじゃ

810 :名無しさん@お腹いっぱい。:2008/12/02(火) 02:27:14 ID:dsUxE8eI0
>>731
過去スレでこういう修正も

AutoHotkey Thread 2
http://pc7.2ch.net/test/read.cgi/software/1129836713/721

721 名前:719[sage] 投稿日:2006/05/15(月) 14:14:36 ID:I+/Q9YXe0
自己解決しました。
前回のデータが残ってしまうのは、
BREGEXP.AHKの

return result

の部分を、

test:=result
VarSetCapacity(result,64)
return test

のように変更することで解決しました。

$が効かないのはオプションにgを入れてないからでした。

811 :名無しさん@お腹いっぱい。:2008/12/02(火) 06:47:54 ID:2U3D4Gda0
>>808
ありがとうございます。
Loopで回して、DriveGetで監視って手順は考えてはみたんですけど、
メディアを入れたとき自動再生のイベントを拾うような方法とかがあれば
そっちのがいいのかなあ、と思ったもので。

>>809
ありがとうございます。
書いてなかったんですが、環境がノートPCだったもので
格納は手動でやらなくちゃいけないんです。

812 :名無しさん@お腹いっぱい。:2008/12/02(火) 08:02:36 ID:kQvptq+a0
>>811
OnMessage(0x219,"WM_DEVICECHANGE")
WM_DEVICECHANGE(wParam){
  if(wParam=0x8000)
    MsgBox, 入った
  if(wParam=0x8004)
    MsgBox, 出た
}


813 :名無しさん@お腹いっぱい。:2008/12/02(火) 09:21:47 ID:b1NVePzo0
>>806
すみません。ツールチップではなく、
Menu,shortcut,Add で作ったメニューでした。
これだと、矢印キーやESCキーを割り当てたキーが効かなくないですか?

814 :名無しさん@お腹いっぱい。:2008/12/02(火) 12:07:40 ID:nMgrAN/f0
すれっど

815 :名無しさん@お腹いっぱい。:2008/12/02(火) 13:34:11 ID:vcvVvmaa0
>>782
プログラムくわしくないんだけどLoopの中が見たことない書き方でびびった。
三項演算子とかいうのを勉強すればifの羅列を避けられるのかな?

816 :名無しさん@お腹いっぱい。:2008/12/02(火) 14:48:01 ID:b1NVePzo0
>>814
スレッドの説明を読みましたが、
Thread, Priority,n のnの値を上げ下げしてもうまくいかず、
詰まってしまいました。どうすればよいのでしょうか。

817 :名無しさん@お腹いっぱい。:2008/12/02(火) 16:11:12 ID:ITVEb5fv0
>>813
こういうことね。
メニュー出しても、リマップやらホットキーで設定したESC等が効かない。
下の例ならzやxでメニューが操作できないと言うことか。確かに出来ないね。
別スクリプトでホットキーを作ればいいよ。割り込みができないんじゃないかな?

Menu, M2, Add, &A upを送る, keya
Menu, M2, Add, &B ESCを送る, keyb
Menu, M2, Show
return

keya:
send, {up}
return
keyb:
send, {esc}
return

z::send,{up}
x::esc

818 :名無しさん@お腹いっぱい。:2008/12/02(火) 19:21:04 ID:dsUxE8eI0
>>815
これかな、条件分岐での値代入には威力を発揮する。
ただし一行がやたらと長くなる諸刃の剣
http://lukewarm.s101.xrea.com/commands/__Condition.html

819 :名無しさん@お腹いっぱい。:2008/12/02(火) 19:21:54 ID:dsUxE8eI0
うお >810氏とIDかぶったw

820 :名無しさん@お腹いっぱい。:2008/12/02(火) 22:12:24 ID:az2v4TnB0
ネットに繋がっているかどうかを調べるのってどうすればいいんでしょう。
URLDownloadToFileでyahooなりを落としてみればわかるにはわかるんですがスマートではないので、何か方法があるなら教えてください。

821 :名無しさん@お腹いっぱい。:2008/12/02(火) 22:23:49 ID:vg2weA4B0
>>820
http://www.autohotkey.com/forum/viewtopic.php?p=60892#60892

822 :名無しさん@お腹いっぱい。:2008/12/02(火) 23:30:33 ID:az2v4TnB0
>>821
おぉ、こんなものが。ありがとうございます。

823 :名無しさん@お腹いっぱい。:2008/12/03(水) 03:23:55 ID:jtBAOzmVP
これで解像度を変える方法ありませんか?

824 :名無しさん@お腹いっぱい。:2008/12/03(水) 04:06:33 ID:/aADBVrp0
>>823
http://www.autohotkey.com/forum/post-164871.html#164871

825 :名無しさん@お腹いっぱい。:2008/12/03(水) 07:00:09 ID:QEvhAYLo0
>>812
サンプルまで、わざわざありがとうございます。
OnMessageって使ったことなかったので、勉強させてもらいます。

826 :名無しさん@お腹いっぱい。:2008/12/03(水) 10:49:45 ID:IOEAtSNR0
>817
そうそう、それです。ありがとうございます。
別スクリプトで、やってみます。

827 :名無しさん@お腹いっぱい。:2008/12/03(水) 18:57:27 ID:yoxebA1p0
トラックポイントと同じ感じのスクロールが出来るけど、
一定時間内なら中ボタン発行できるやつ。

ttp://lukewarm.s101.xrea.com/up/file/092.zip

828 :名無しさん@お腹いっぱい。:2008/12/03(水) 19:01:48 ID:jtBAOzmVP
>>824
それでいけました
thanks!

829 :名無しさん@お腹いっぱい。:2008/12/03(水) 19:28:23 ID:8wXQ+pGJ0
実は釣りでした

830 :名無しさん@お腹いっぱい。:2008/12/03(水) 19:28:54 ID:8wXQ+pGJ0
誤爆w

831 :名無しさん@お腹いっぱい。:2008/12/03(水) 21:00:07 ID:WvS6RZWf0
>>827
面白い。自分はあまり使わないが
環境が環境ならすごく便利そうだ。

832 :名無しさん@お腹いっぱい。:2008/12/04(木) 06:59:01 ID:YdYzer7Q0
>>827
さいこー。TTBaseのDragScrollと同じだね。欲しかった。
自分で作ろうとしたけどスキルの問題でできなかった。すげー勉強になるし。
TTBase使わなくなって唯一最後の喉から手が出るほど欲しい機能だったから。

デフォルトのままだと左右は進行方向と逆に少し動いてる感じがした。
移動量の変更と変化した分遊びを持たせるためにちょい適当にいじった。
274行目は dx := (x- Sx)*15, dy := (y -Sy)*3
275行目はif (Abs(dx) > 20)
227行目はif (Abs(dy) > 5) {

833 :832:2008/12/04(木) 07:06:45 ID:YdYzer7Q0
変更したところは解像度とかマウススピードの設定で人によって違うか
舞い上がっちゃった(・∀・)イイ!!

834 :名無しさん@お腹いっぱい。:2008/12/04(木) 08:35:26 ID:GaDrRpyI0
ドラッグスクロールってMouseGesture.ahkで出来た気がするが

835 :名無しさん@お腹いっぱい。:2008/12/04(木) 13:13:31 ID:o+bhPn3Q0
メッセージダイアログを表示させたままで
処理を続行させるにはどうすれば良いのでしょうか?

836 :名無しさん@お腹いっぱい。:2008/12/04(木) 13:34:34 ID:ogqtNBgC0
ダイアログは基本的にモーダル(表示が終わるまでスレッドが止まる)なんで、スレッドでの割り込みが無いと基本的に止まったまま。
スレッドでの割り込みは ホットキーイベント、タイマー、Guiの操作、WindowMessage受け取ったときとか、、、

というか、下を見ても分かると思うけど、数を1ずつインクリメントして表示するだけなのに結構めんどくさい。
日付みて何かの処理をするとかの軽い処理なら↓のを改変でいいけど、、、

つまり、よく分からんならGUI作った方が早いよってこと。

SetTimer, Main, 100
Exit
Main:
 SomeFunc()
 return
SomeFunc() {
 static count:=0
 CoordMode, Tooltip, Screen
 count++
 Tooltip, %count%,0,0,20
 if (count = 50)
  SetTimer, ShowSomeMessage, -1
}
ShowSomeMessage:
 MsgBox, Here you can find some mesage!
 return
~Esc::ExitApp

837 :名無しさん@お腹いっぱい。:2008/12/04(木) 13:41:19 ID:ogqtNBgC0
■ 思った通りに動かない例
メインの処理が一時中断されて、タイマーから呼び出されたスレッドが終わるのを待っているため

Loop, 1000{
 Tooltip, %A_Index%,0,0,20
 if (A_Index = 50)
  SetTimer, ShowSomeMessage, -1
 Sleep, 100
}
Exit
ShowSomeMessage:
 MsgBox, Here you can find some mesage!
 return
~Esc::ExitApp

では、メインスレッドじゃなく別スレッド作ってと考える。結局は上と同じ理由で動かない。

SetTimer, Main, -1
Exit
Main:
 Loop, 1000{
  Tooltip, %A_Index%,0,0,20
  if (A_Index = 50)
   SetTimer, ShowSomeMessage, -1
  Sleep, 100
 }
 return
ShowSomeMessage:
 MsgBox, Here you can find some mesage!
 return
~Esc::ExitApp

838 :名無しさん@お腹いっぱい。:2008/12/04(木) 14:01:43 ID:ogqtNBgC0

ループして判断する何処かのスレッドがあったとする。
Thread1:
→(値取得)→(判断)→(スレッド呼び出し)★→
↑                           ↓
←ーーーー ループの先頭に戻る ーーーーー

条件にマッチしたら Thread2 が呼ばれてこのスレッドは★で一時停止。

何らかの判断で呼び出され、処理をやるスレッドが起動する

Thread2:
 Send, {Enter}
 return

Thread2はキーを送ってすぐ終了なので、即座に★に戻り滞りなく終わる。

更に、何かの判断で、Thread3 が呼ばれ、同じように★で Thread1が停止する。

Thead3:
 MsgBox, 朝ですよ!`n起きてください!
 return

このスレッドは OK を押すまで終わらない。つまり、Thread1は★でとまったまま。

なら、解決というか回避するにはどうするかというと、上でも書いたけど、
判断するループはやめて、判断するスレッド自体すぐ終わるようにしてタイマで呼ばれるようにする。

まー、でも MsgBox 出すくらいなら・・・面倒だし、Gui作っちまえばいいかと。

839 :名無しさん@お腹いっぱい。:2008/12/04(木) 14:30:17 ID:ogqtNBgC0
見てくれ悪いけど、何か表示するだけならProgressが楽かも。10個まで使えるし。

count := 0
Loop, 1000{
 Tooltip, %A_Index%,0,0,20
 if (Mod(A_Index,10) = 0) {
  count++
  pNo := Mod(count, 10) + 1
  y := (pNo - 1) * 60
  tooltip, %pno%
  Progress, %pNo%:x0 y%y% Zy0 Zx0 Zw0 Zh0 M2, メッセージ%count%回目, タイトル
  Progress, %pNo%:Show
 }
 Sleep, 100
}
Exit
~Esc::ExitApp

840 :名無しさん@お腹いっぱい。:2008/12/04(木) 14:40:02 ID:pVykd1Rt0
質問者じゃないけど、ためになる講座だな。

>>838
>→(値取得)→(判断)→(スレッド呼び出し)★→

ここでの「スレッド呼び出し」について質問。

スレッド呼び出しの部分を、settimer,ABC,-1としてABCスレッドを1msec後に
呼び出せば、Thread1の分岐ループは、「ABCへ飛べ」というジャンプ指示が
どんどん増える(上限1)だけで、ループ自体はずっと止まらない という理解でよい?

また、すでにABCスレッドに飛んで処理中の場合、ABCスレの中でmsgbox押され待ちがあった場合、
その処理が終わるまでは、分岐ループThread1の★部分で、判断スレッド自体が止まってしまうの?

841 :名無しさん@お腹いっぱい。:2008/12/04(木) 14:46:56 ID:pVykd1Rt0
書いておきながら、ABCってラベルが例に存在しなかったので、
例にならうとABC→Thread3と置き換えてください

842 :名無しさん@お腹いっぱい。:2008/12/04(木) 20:38:10 ID:ogqtNBgC0
ttp://lukewarm.s101.xrea.com/misc/Threads.html
> AutoHotkeyは実際はパフォーマンス低下を防ぐため、擬似的なマルチスレッドを採用している。
> 現在のスレッドの実行中にホットキー、タイマー、メニューアイテム選択により別のスレッドが呼び出されると、
> 割り込みにより新たなスレッドが開始され、現在のスレッドは新たなスレッドが終了するまで停止する。
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 割り込みは何重にも行われることが可能。

要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
→ 実行中、 …: 割り込み終了待ち

           Loop1開始                              Loop2開始
 元スレッド   →→→→→→→→→→→……………………………………→→→→
                           ★割込                ↑再開    
 割り込みスレ                  →→→→…………→→→→→→END
                                 ◆割込 ↑再開
 更に割り込み                        →→→END

で、何でタイマーで判断処理を作れって書いたかというと。他のJobが実行中でも割り込んで次回の判断が出来るから。
でも、処理自体は1本しか走らないので時間がかかるやつだと結構面倒、つか無理かも。
このスレでも何度も出てるけど、他のAHK作って Run するのがいいかも。

判断スレ1  →→End
          タイマ割込
Job1スレ     →→→……→→→→→→End
               タイマ割込
判断スレ2         →→End

で、GUI作れってのは、表示だけなら一瞬で終わる、つまり元スレッドにすぐに復帰できるため。
更に言うと、ボタン押下イベント設置すればそれ自体が割り込みとなって現行スレに割り込みができるっていうのもある。

843 :名無しさん@お腹いっぱい。:2008/12/04(木) 20:50:55 ID:pVykd1Rt0
>>842
なるほど、解説乙。条件分岐のみ行うスレッドも、結局は止まってしまうわけか。
役割ごとにスクリプトを分けて単独で実行させ、連携させるのがよさそうだね。

844 :名無しさん@お腹いっぱい。:2008/12/04(木) 21:18:46 ID:ogqtNBgC0
補足、いや、蛇足)
Ajaxとかで流行の Javascript も結局本スレとタイマとイベント割り込みって感じで同じ。
でも、本スレでタイムスライスして、includeした他スクリプトを eval で数行ずつ実行する恐ろしいヤツがあるとか無いとか。

ちなみに他のAHKからの終了信号を貰いたいなら、
1) Job側が終了コードを隠し呼び出し側のGUIに何か書き込む ( >>457 の方法)
2) 呼び出し側がOnMessage(0x400, "WM_USER") とかの待ち受け関数作って、
  Job側が Post/SendMessageする
3) WM_USERと同じだけど、色々とやりたいなら特定の文字列用のmsg番号をWin側が用意してくれるので
  両方で同じ番号で OnMessage, と SendMessage で話し合う。。。めんどくせぇ
ex) HogeCallBackMsg := DllCall("RegisterWindowMessage", Str,"HogeHoge", Int)

とか・・・

845 :名無しさん@お腹いっぱい。:2008/12/04(木) 22:54:05 ID:ZbW775yo0
>>827
ThinkPad使いだがスクロール機能OFFにすると中ボタンとして使えること初めて知ったよ。

トラックポイント使っててずっと不便に感じてたMS-Officeやエディタなんかの分割ペインで
スクロールできない件も解消できないかと思って
http://lukewarm.s101.xrea.com/up/file/085.zip と混ぜ合わせてみたらイイ感じになった

ただ、スクロールの速度の調整が難しい。
>832のパラメータを適当にいじって試してみてるけど値の設定ルールがわからないので
最適値がぜんぜんわかんないだわ

846 :827:2008/12/05(金) 16:49:28 ID:5jfWCA+k0
ttp://lukewarm.s101.xrea.com/up/file/093.zip

1000行超えた。うぇ

[2008/12/05]
機能修正/追加
 WheelScroll.ahkの機能を大幅に取り入れ以下を実現した
  Excel等のMDI小窓の横スクロール
  各種設定をほぼそのまま取り込んで各アプリで動作するようにした
 感度・動作閾値の設定が出来るようにした
 縦スクロール量算出方法を2種類(移動量に比例、移動量の2乗に比例)にし選択出来るようにした。
 横スクロールに左右キーエミューレートモード(ほぼMozilla専用)を追加
 横スクロール加速実装 (WM_VSCROLLと同じ方式)
 Ctrl or Shift or RButton が押されているときは一時的に固定移動モードになるようにした
  IE や Firefox 等の履歴・拡大率の変更時には固定の方が都合がよい
  特定のツールのタブ移動のマウスジェスチャがあったりするため
 ScrollLock On 時に挙動が変化するようにした(以下から選択可能)
  VScroll 制限 : 縦スクロールしない(横だけ移動)
  HScroll 制限 : 横スクロールしない(縦だけ移動)
  FixMove : 常に一定値でスクロールする(縦横とも)
内部仕様の変更
 Start/Stop 関数を整備、InitHotkey 関数を利用しなくても組み込みやすくした
 フル関数化 (ホットキー、メニュー用ラベルは除く)
 変数保持関数を追加し、グローバル変数を一部を除き利用しなくした
 以前の初期化関数はそのまま使えるはず

847 :845:2008/12/05(金) 17:58:14 ID:uIVSFyDO0
あう、一足遅かったか。

一応こちらで WheelScroll.ahkのシェイプ版混合改造したものも置いておきます。
トラック用にTrackWheel_GetScrollBarHwnd()を1回Callで済むように修正してます。
あとせっかくなんでタスクトレイのアイコンが例のアレになるようにしてみました。

http://lukewarm.s101.xrea.com/up/file/094.zip


848 :名無しさん@お腹いっぱい。:2008/12/05(金) 18:24:29 ID:5jfWCA+k0
やってること同じだ。笑た

849 :名無しさん@お腹いっぱい。:2008/12/05(金) 18:35:57 ID:5jfWCA+k0
あ...初期化設定がテスト設定のが残ってる...
ま、分かるからいいよ・・・ね

850 :名無しさん@お腹いっぱい。:2008/12/05(金) 18:46:37 ID:lv2ebu0J0
すげー便利な上、ソースとコメントが綺麗すぎて驚いた。

851 :名無しさん@お腹いっぱい。:2008/12/05(金) 19:55:48 ID:uIVSFyDO0
>>846
093 改良版さわってみたけどスクロールがかなりいい感じに仕上ってますね。
ところで追加部分のグルーバル変数や関数の名前が
TrackWheel_xxx だったり TrackScroll_xxx だったりするのは意図的に分けられてるのかな。

とりあえず _BrotherScroolBarList 変数が
AutoExecute部 と 実際に使ってる関数 TrackScroll_GetScrollBarHwnd()で
接頭語が違ってるようです。

852 :名無しさん@お腹いっぱい。:2008/12/05(金) 20:09:48 ID:5jfWCA+k0
いや・・・最初はTrackScrollで開発してて・・・
気づいたら同じのがあったのであわてて変えた訳で。

頭の中は未だにTrackScrollだったりするんで、まちがえるのです。はい。

>とりあえず _BrotherScroolBarList 変数が
>AutoExecute部 と 実際に使ってる関数 TrackScroll_GetScrollBarHwnd()で
>接頭語が違ってるようです。

各自直してくださいw
もし次Upするなら直しておきます。

853 :名無しさん@お腹いっぱい。:2008/12/05(金) 22:55:22 ID:uIVSFyDO0
了解です。
845のやつ最新ソースでマージしてみました。
http://lukewarm.s101.xrea.com/up/file/094.zip

改造点とか
・WheelScroll.ahk からの GetScrollBarHwnd() 部分を TrackWheel向けに最適化
 TrackWheel_GetScrollBarHwnd() 一度のCallで縦横スクロールハンドル両方返すようにした。
・接頭語が TrackScroll_ になってる変数/関数 を TrackWheel_ に統一 >851-852

ものぐさ用 勝手改造
・タスクトレイのアイコンを例のアレに(単体起動時)
・システムの設定でバルーンメッセージ殺されてる時は ToolTip(20)に情報表示
・組込み時にGoSubで初期化しやすいようにAutoexecuteにラベルをつけてみた。
 アイコンやメニューの指定は単体/組込みどちらでも支障がないように
 (アイコンファイルの場所 : A_LineFileと同じディレクトリ
 メニュー名は単体時は "Tray" : 組込み時は "TrackWheel_Menu")
 尚 OnExitは本家と同じ自分で追加する仕様

その他どうでもいい変更
・互換モードリストに 萌ディタのコントロールクラス(TkfView)追加
・縦スクロールで PostMessageを使ってみる(何となく負担が少ないかと思って)


854 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:38:20 ID:5jfWCA+k0
Content-lengthが...

現在Ini版に改修中。ってか色々な初期化のラッパーになってるだけw

855 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:38:57 ID:/35at//Y0
>>853
094.zipのファイルサイズが0KBですよ。

856 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:52:38 ID:uIVSFyDO0
(ノ∀`) アチャー
上げ直しました

ていうか ID:5jfWCA+k0氏 更にモデファイ中?
また余計なことやっちまったか。

857 :名無しさん@お腹いっぱい。:2008/12/06(土) 00:11:51 ID:NesDCnhR0
常にモディファイ中です。趣味みたいなもんでw
diffしたけど、マージは楽そうなんで無問題。

>また余計なことやっちまったか。
他の人のコード見るのは楽しいのでおk

> PostMessageを使ってみる
ループ処理で名目上10msしか寝ないんで、Postで投げっぱなしだと受けとるアプリによっては
スクロールと再描画が追いつかないことがあってやめてみた。
スクロール処理終わっても延々とだらだらスクロールしてるアプリがある、
ってか今まさに使ってたDFで試したらそうなる。

858 :名無しさん@お腹いっぱい。:2008/12/06(土) 01:31:40 ID:WVUgtWsF0
下にドラッグしたら上に進むっていう疑似iPhoneライクな物なら作ったなー

859 :827,846:2008/12/06(土) 21:37:34 ID:NesDCnhR0
一部の人しか使わんだろうけど、まぁ許してくれや。

TrackWheel VER.20081206
ttp://lukewarm.s101.xrea.com/up/file/095.zip

>>853を一部マージ

機能修正/追加
 INIファイルでの初期化を追加。デフォルトとした。このため初期化がAutoexecブロック1行で済む。
 INIファイルで初期化を行ったときのみ、トレイメニューからINIファイルの編集が出来るようにした。
 コントロールだけでなく、ウィンドウクラス名、実行ファイル名でのマッチングも可能にした。(オプション)
 正規表現でのマッチングを可能にした。(オプション)
 トレイチップが出ないとき、自動で消えるツールチップを出すようにした。
 トレイアイコンを変更するようにした。(既に変更してあるときは変えない)
 「ホイールポストアクション」の追加。未タイムアウト時のキー送信以外のカスタマイズをしやすくした。
 スクリプト終了時のOnExitで飛ぶラベルをIniファイルで設定できるようにした。
内部仕様の変更
 Ini初期化関数で、多重初期化抑制と初期化失敗を検知しユーザ通知するようにした。
 動作に関わる全てのグローバル変数を無くした。
 上記の内容に伴い、デバッグモードのの時のみデータストアクラスの内容表示が出来るようにした。
 コメント追加/修正、未使用コードの削除など

860 :827,846:2008/12/06(土) 21:42:43 ID:NesDCnhR0
コード560行、コメント593行、空行101行 だった。コメント大杉。

つか、クラスってなんだよw

861 :名無しさん@お腹いっぱい。:2008/12/07(日) 12:07:59 ID:uTIbQqW+0
>>859
乙です。グローバル変数撤廃とは徹底してますね。
自分もまねしてみようかと思ったけどListVarsで見えないからデバッグが大変そうだw

あ、958行のフラグ判定は逆みたいです。
バルーン殺してるアホ用にしか影響しないのでほとんど無問題でしょう。
if (TrackWheel_GetValue("Balloon")) {
if (!TrackWheel_GetValue("Balloon")) {

それと、SendMessageの件も納得です。ちゃんと調べられてるんだなぁ

862 :名無しさん@お腹いっぱい。:2008/12/07(日) 20:28:43 ID:oUMsfI430
ジョイスティックのボタンが離された時にキー入力をするように以下のようなスクリプトを組んだのですが、
ボタンを押した時にhogehogeが出力されてしまいます。どこを直したらいいかわかりますか?

Joy1::onKeyDown()
onKeyDown(){
SetTimer, WaitForButtonUp_1, 10
return
}
WaitForButtonUp_1:
if GetKeyState(Joy1)
return
SetTimer, WaitForButtonUp_1, off
send, hogehoge
return


863 :名無しさん@お腹いっぱい。:2008/12/07(日) 22:12:57 ID:8ln8qfNT0
GetKeyState("Joy1")

864 :862:2008/12/07(日) 22:42:02 ID:oUMsfI430
>>863
ありがとうございます。動くようになりました。
ものすごい凡ミスでしたね。

865 :名無しさん@お腹いっぱい。:2008/12/09(火) 19:46:57 ID:EfZD83m00
マウスのカーソル位置のクラスじゃなくて、キーボードのカーソルがある部分のクラス名って取得出来るの?

866 :名無しさん@お腹いっぱい。:2008/12/09(火) 20:12:28 ID:pGaOaf4t0
ControlGetFocus
A_CaretX,A_CaretY

867 :名無しさん@お腹いっぱい。:2008/12/10(水) 17:08:39 ID:+/2LX2PK0
自前キーリピート。いまいち


$*Left:: KeyRepeat()
$*Right::KeyRepeat(120, 1, 5)
$*Up:: KeyRepeat(100, 1, 10)
$*Down:: KeyRepeat(300, 50, 50)

KeyRepeat(startDur=120,minDur=1,step=20) {
SetBatchLines, -1
SetKeyDelay, -1
keyName := RegExReplace(A_ThisHotkey, "^\W+", "")
dur := startDur, mindDur := minDur < 1 ? 1 : mindDur
Loop {
if (!GetKeyState(keyName, "P"))
break
mod := (GetKeyState("Ctrl","P") ? "^" : "")
. (GetKeyState("Alt","P") ? "!" : "")
. (GetKeyState("Shift","P") ? "+" : "")
Send, %mod%{%keyName%}
dur -= step
if (dur < minDur)
dur := minDur
Sleep, %dur%
}
}

868 :名無しさん@お腹いっぱい。:2008/12/13(土) 17:19:08 ID:IsgFPQ1F0
http://www.multisoft-lab.com/minismtp/index.html
これを使ってメールを送信するスクリプトを作成していてるんですが
DLL内の関数が見つからず(ErrorLevel-4が帰ってくる)送信することができません

readmeの内容をみていろいろ試してみたんですがうまくいきませんでした
○MiniSmtpMailer.dllのメソッド
 1.DWORD SmtpGetVersion();
   バージョン情報の取得メソッドです。DWORD型で返されます。
  MSB(上側)16ビットと下側(LSB)16ビットで構成されています。
  例えば、Ver.1.0の場合はMSB側は1でLSB側は0です。


ver := DllCall("MiniSmtpMailer.DLL\SmtpGetVersion()","Uint")
ver := DllCall("MiniSmtpMailer.DLL\SmtpGetVersion","Uint")
ver := DllCall("MiniSmtpMailer.DLL\SmtpGetVersion();","Uint")
ver := DllCall("MiniSmtpMailer.DLL\DWORD SmtpGetVersion()","Uint")


869 :名無しさん@お腹いっぱい。:2008/12/13(土) 22:25:07 ID:MgtxRtwq0
試す気はないが、引用符内の括弧は要らんはず

870 :名無しさん@お腹いっぱい。:2008/12/13(土) 22:41:47 ID:JAFWrcS10
>>868
C++で作られてるっぽいので内部名が違うみたい?
詳しくないけどとりあえず以下の方法でできたっぽい。
Dependency Walker等でMiniSmtpMailer.dllを開いて関数名を調べる
SmtpGetVersionの内部名は"?SmtpGetVersion@@YAKXZ"っぽいとわかるので、
DllCall("MiniSmtpMailer.dll\?SmtpGetVersion@@YAKXZ")
他の関数は試していない。

871 :名無しさん@お腹いっぱい。:2008/12/14(日) 16:42:14 ID:x6tn5J0Y0
自分の作ったGUIにホットキー割り当てたいときってこんなんでいいの?
動くからいいんだけど、、、。

Gui, +LastFound
WinGet, hwnd, ID
Hotkey, IfWinActive, ahk_id %hwnd%
Hotkey, ^s, SubLabel_Save
Hotkey, ^o, SubLabel_Open
Hotkey, ^c, SubLabel_Copy
 :
Hotkey, IfWinActive

872 :名無しさん@お腹いっぱい。:2008/12/15(月) 22:45:08 ID:I4Tk1m210
ホットキーでスクリーンショットを保存するスクリプト組みたいんだけど
PrtScキー拾ってクリップボードからデータ拾ってきて書き込みじゃダメだった\(^o^)/
手軽に保存する方法ないかな?

873 :名無しさん@お腹いっぱい。:2008/12/15(月) 23:36:19 ID:hNld+aS80
Irfan使ってる。結構楽。

PrintScreen::
 Run, %A_ProgramFiles%\iview\i_view32.exe /capture=2 /convert="%A_Desktop%\%A_Now%.png"
 return

+PrintScreen::
 CaptureMode := Mod(CaptureMode + 1, 4)
 str := (CaptureMode = 0) ? "Whole Screen" : (CaptureMode = 1) ? "Current Monitor" : (CaptureMode=2) ? "Current Window" : "Current Window Client Area"
 Tooltip, Capture = %CaptureMode% : %str%
 SetTimer, TipOff, -3000
 return

TipOff:
 Tooltip
 return

874 :名無しさん@お腹いっぱい。:2008/12/15(月) 23:38:20 ID:hNld+aS80
あ、間違った

2行目のところ、
/capture=%CaptureMode%
にして

875 :名無しさん@お腹いっぱい。:2008/12/16(火) 09:04:36 ID:bTmdBv8C0
>>872
これ使えばいい
ttp://www.autohotkey.com/forum/viewtopic.php?t=18146&highlight=capturescreen

迷ったら、まずフォーラム検索おすすめ

876 :名無しさん@お腹いっぱい。:2008/12/16(火) 19:32:25 ID:+mP5H8800
>>873-874
サンクス!

>>875
本家のフォーラムのことなんてこれっぽっちも頭になかった。次からそこで調べてみる

877 :名無しさん@お腹いっぱい。:2008/12/16(火) 21:00:55 ID:vpnsKgVM0
>>872
ttp://d.hatena.ne.jp/morakana/20080213/1202932574
こういうのもあるぞ。Dllcallを使う方が外部プログラムを使うより使い勝手はいいと思う。

878 :名無しさん@お腹いっぱい。:2008/12/17(水) 10:38:01 ID:JAs0w+y00
DLLとかスマートなんだろうけど
そこまで行っちゃうとマの余技になっちゃって
いまいち潤いがないんだよな
もっとアホな使い方してる俺としては

879 :名無しさん@お腹いっぱい。:2008/12/17(水) 15:41:56 ID:nzTJvdoQ0
ttp://www.autohotkey.com/forum/topic8795.html
英語だから敬遠してたけど公式から逝けるフォーラム見ると結構楽しいな。
まぁ、今更何をって感じだろうけど。

こんなの簡単にできると楽しいわ。

Gui, +LastFound
Gui, Add, MonthCal
SetChildWindow(WinExist(), WinExist("ahk_class Progman"))
Gui, Show

SetChildWindow(cHwnd, pHwnd) {
Return DllCall("SetParent", "uint", cHwnd, "uint", pHwnd)
}

880 :名無しさん@お腹いっぱい。:2008/12/17(水) 17:45:53 ID:DoJGzKvY0
 ちと質問です。
アクティブなアプリごとに、割り当てキーを替える場合はどうしたら良いでしょうか?

IfWinActive, ahk_class Notepad
{
JoyKey8 = a
}
IfWinActive, ahk_class OpWindow
{
JoyKey8 = b
}

Joy8::send,%JoyKey8%
return

 これだと、うまく変数が更新されないようです。

割と頻繁に幾つかのアプリケーションを行き来するので、何とか自動化できると良いのですが・・・

881 :名無しさん@お腹いっぱい。:2008/12/17(水) 18:08:39 ID:ZnfZEsvI0
キーが押された後に分岐させる
あるいは#IfWinActiveを使う

882 :名無しさん@お腹いっぱい。:2008/12/17(水) 21:22:04 ID:+5duKaXz0
:をRightと認識させるにはどう書けばいいでしょう?
これじゃ駄目ぽ
sc07B & `::: Send, {Blind}{Right}


883 :名無しさん@お腹いっぱい。:2008/12/17(水) 21:24:49 ID:+5duKaXz0
>882
ちょいと質問まちがえた
:をエスケープするにはどう書くの?

884 :名無しさん@お腹いっぱい。:2008/12/17(水) 22:05:08 ID:t+fmk15B0
::: Send, {Blind}{Right}

885 :882:2008/12/17(水) 22:23:39 ID:+5duKaXz0
>884
どもです
sc07B & ::: Send, {Blind}{Right}

Error:Invalid hotkey
になります
どこが間違ってるでしょうか?
他のキーなら動くんですが

886 :882:2008/12/17(水) 22:25:16 ID:+5duKaXz0
*::
で動きました。謎。

887 :880:2008/12/17(水) 23:01:06 ID:DoJGzKvY0
>>881 ありがとうございます。#IfWinActiveでやってみたところ出来ました。

 概ね問題無いのですが、PhotoShopの「スペースキー+ドラッグ でスクロール」が
動きませんでした。(パッドのキーにスペースキーを割り当てました)
KeyHistoryで見る分にはスペースが送信されてはいるようですが、SendModeを変えたり
キーコードで送ってもやっても同じようです。
 他のキーの処理の仕方と違うのでしょうかね?

888 :名無しさん@お腹いっぱい。:2008/12/17(水) 23:04:38 ID:t+fmk15B0
sc07B & : Up::

889 :名無しさん@お腹いっぱい。:2008/12/17(水) 23:19:03 ID:0fLfKxJZ0
>>886
そういう裏技もあるのかw
正攻法で行くならvkBAとかsc028で出来る。

仮想キーコードやスキャンコードはタスクトレイアイコンをダブルクリックして出るメインウィンドウのメニューから
View→Key history and script infoで見れる
確認したいキーを押したあとF5で最新情報に更新する。

890 :889:2008/12/17(水) 23:25:20 ID:0fLfKxJZ0
あ、補足。ホットキー設定するか#InstallKeybdHookを記述してないと見れない。

891 :名無しさん@お腹いっぱい。:2008/12/18(木) 12:25:08 ID:uw4CTHiJ0
>>879紹介の本家Tipsで、スタートボタンを独自GUIに置き換えるスクリプトが気に入った。
http://www.autohotkey.net/~goyyah/Tips-N-Tricks/TaskBar/Snapshot5.gif

Windowsデスクトップの限られたスペースで、大きすぎるスタートボタンを無駄に感じていたけど、
これを入れると有効活用できるね。

このスクリプトはタスクバーの太さが1段のときで決め打ちされているのだけど、
段数×縦ピクセルで再描画すると、いろんなサイズに対応できそう。

そこで質問ですが、タスクバーの太さが現在何段か調べる方法ってありますか?

892 :名無しさん@お腹いっぱい。:2008/12/18(木) 12:52:29 ID:uw4CTHiJ0
↑の本家公開スクリプト(mymenu.ahk)は、代替のスタートボタンを押すと
常にCtrl+Escが送信されるため、スタートボタンを2度押したときに
メニューを開け閉めすることができない。

下記のように1回おきに 開 と 閉 を別々に送るようにしたら、
オリジナルのスタートボタンとほぼ同じ操作感になった。

StartM:
count++
;奇数ならスタートメニューを出す、偶数ならキャンセルを送信
if mod(count,2)=1
Send ^{ESCAPE}
else
Send {ESCAPE}
return

ただ、スタート以外の場所でクリック(キャンセル)すると、記憶フラグ(count)の整合性が取れず、
動作がズレる。完璧を求めるなら、スタートメニューが開いているかどうかを判別する
必要があるが、俺はそのやりかたを知らないので、どなたかフォロー求む。

893 :名無しさん@お腹いっぱい。:2008/12/18(木) 16:30:49 ID:9NniXjR8P
チルトがマウスウェア側で全く割り当てできなくてもahkで割り当てれますか?
FAQには適当に頑張れとしか書かれていなくて、頑張れば出来るのかどうかが書かれてませんでした
購入するかで迷っているので教えて貰えれば幸いです。

894 :名無しさん@お腹いっぱい。:2008/12/18(木) 16:34:14 ID:Dmy38CCg0
マウスウェア側で全く割り当てられないマウスを買おうとしてるの?他のにすれば?

895 :名無しさん@お腹いっぱい。:2008/12/18(木) 16:34:20 ID:T3E/OQtW0
>>892
Winキーじゃダメなのか?

896 :名無しさん@お腹いっぱい。:2008/12/18(木) 16:54:00 ID:dWIt621F0
>>891
ControlGetPos,cX,cY,cW,cH, Button1, ahk_class Shell_TrayWnd
WinGetPos,wX,wY,wW,wH, ahk_class Shell_TrayWnd

pos := (wW > A_ScreenWidth) ? (wY < 0 ? "上" : "下") : (wH > A_ScreenHeight) ? (wX < 0 ? "左" : "右") : "浮いている?"
isMulti := (wH > cH * 2) && InStr("上下", pos)

MsgBox, % "スタートボタンのところは" (isMulti ? "複数" : "単数") "行で、タスクバーの位置は " pos

897 :名無しさん@お腹いっぱい。:2008/12/18(木) 19:56:02 ID:dWIt621F0
やばい、面白い。偽TClock。

ClockFormat := "MM/dd`nHH:mm"
FontName := "MeiryoKe_Console", FontSize:=9, FontBold:="Bold", TextAlign:="Center"
dW:=10, dH:=20, OffsetX:=-6, OffsetY:=-8
OnExit, ExitEvent
ControlGetPos, tX,tY,tW,tH, TrayClockWClass1, ahk_class Shell_TrayWnd
Gui, +LastFound -Caption +ToolWindow
shellTrayHwnd := DllCall("SetParent", UInt,WinExist(), UInt, WinExist("ahk_class Shell_TrayWnd"))
Gui, Margin, 0,0
x:=tX+offsetX, y:=tY+OffsetY, w:= tW + dW, h := tH + dH
Gui, Font, s%FontSize% %FontBold%, %FontName%
Gui, Add, Text, x0 y0 w%w% h%h% vTClock Border %TextAlign%, % FormatNow(ClockFormat)
Control, Hide,, TrayClockWClass1, ahk_id %shellTrayHwnd%
Gui, Show, x%x% y%y%
SetTimer, Timer, On
return
Timer:
 GuiControl,, TClock, % FormatNow(ClockFormat)
 return
FormatNow(format) {
 FormatTime, str, %A_Now%, %format%
 return str
}
ExitEvent:
 Gui, Destroy
 Control, Show,, TrayClockWClass1, ahk_class Shell_TrayWnd
 ExitApp


898 :名無しさん@お腹いっぱい。:2008/12/18(木) 22:06:50 ID:9NniXjR8P
>>894
そのマウスはマウスウェア以外の部分が魅力的なんです

899 :名無しさん@お腹いっぱい。:2008/12/18(木) 23:26:51 ID:uKebRYvF0
>>898
>>5のAutoHotkey_LはWheelLeftとWheelRightに対応してるみたいだけど、これではだめ?
チルトついてるマウス持ってないので試せないから、合ってるか自信はないんだが。

900 :名無しさん@お腹いっぱい。:2008/12/18(木) 23:51:31 ID:9NniXjR8P
>>899
すみません環境を伝え忘れましたが、XPなのでその機能は使えないみたいです。

901 :名無しさん@お腹いっぱい。:2008/12/19(金) 09:24:42 ID:ilVuChfS0
具体的にマウスの製品名を書いた方が良いのでは

902 :891:2008/12/19(金) 10:05:40 ID:J8qNPk240
>>896
コードまで作ってくれて感謝!
ただ、うちの環境では、残念ながら複数でも単数でも
「単数行」としか認識しなかった。(XP SP3 Luna)

これをベースにして研究してみます。

903 :名無しさん@お腹いっぱい。:2008/12/19(金) 21:58:42 ID:T2wgOaIZ0
>>891
SysGetのMonitorWorkAreaでタスクバーを除いたデスクトップ領域取れるから、
全体のサイズから引いたらタスクバーの大きさ取れないかい?

904 :名無しさん@お腹いっぱい。:2008/12/20(土) 08:18:30 ID:4EORJzYY0
「ショートカットキーを入れ替える」
例)Ctrl+Alt+Nを押したら、Ctrl+Alt+MをPCに送る

あるいは文字列を別の文字列に置き換える
例)btwを押したら> by the way をPCに送る

のは、可能ですが

Alt+L,K,V

を押したら、

を Alt+L,K,NをPCに送る、という方法はないでしょうか?


905 :名無しさん@お腹いっぱい。:2008/12/20(土) 09:04:13 ID:1tbFL3Qf0
それはAltとKLVを押したらAltとKLNを返すってことかい?

906 :名無しさん@お腹いっぱい。:2008/12/20(土) 09:12:20 ID:R00RPUOQ0
+なんだかorなんだか言葉としてのアルファベットなんだか分からないね。

907 :名無しさん@お腹いっぱい。:2008/12/20(土) 10:59:57 ID:q7lv7eSp0
何となくWinMenuSelectItemで済む話のような気もするが
わからん。

908 :名無しさん@お腹いっぱい。:2008/12/20(土) 12:40:13 ID:3cxosW7k0
何が言いたいのかさっぱりわからん

909 :名無しさん@お腹いっぱい。:2008/12/21(日) 00:09:19 ID:rGR55uAh0
>>904
http://lukewarm.s101.xrea.com/Hotkeys.htm
2ストロークキーや短縮入力など

910 :名無しさん@お腹いっぱい。:2008/12/21(日) 20:56:17 ID:xCDDUV6c0
思いつくまま書いたので仕様もソースもごっちゃで恐縮なのだが、
せっかく作ったのでさらしてみる。
ttp://lukewarm.s101.xrea.com/up/file/096.zip
ジョイスティックの軸入力を上げ下げのラベルに振り分ける関数
需要もあんまり無いような気がする…
自分である程度期待通りの動作をしているので概ね満足しているけど、
こうした方がいいとか突っ込みあったらお願いします。

911 :827:2008/12/22(月) 00:18:24 ID:E5M+jAjH0
TrackWheel をうp。
ttp://lukewarm.s101.xrea.com/up/file/097.zip

- PowerPointとかの判定を強化
- OpenOfficeとかで横スクロール可能に
- 設定GUIが付いた
- 変わりすぎてもう収集が付かない
- ウィンドウ内のコントロールをツリー表示するおまけスクリプト同梱

912 :名無しさん@お腹いっぱい。:2008/12/23(火) 02:02:05 ID:ZB3r/RYD0
変数の最後に半角スペースを付け足したいので

hoge=%hoge%
(↑わかりにくいけど最後に半角スペースがついてます)

みたいにやったんですけどうまく付け足してくれません。
どなたかアドバイス頂けませんか?


913 :912:2008/12/23(火) 02:03:21 ID:ZB3r/RYD0
あ、投稿したら例文の半角スペース消えちゃった…。

914 :名無しさん@お腹いっぱい。:2008/12/23(火) 03:17:43 ID:wbW6fPYI0
hoge=%hoge%%A_Space%
hoge.=A_Space
hoge.=" "
hoge.=Chr(20)


915 :名無しさん@お腹いっぱい。:2008/12/23(火) 05:13:24 ID:H1TeEm8O0
AutoTrim, Offもいるかもねー

916 :名無しさん@お腹いっぱい。:2008/12/23(火) 06:00:32 ID:/m5AnRdB0
2chやブログでは半角スペースやタブは消えるので、全角スペースと入れ替えるとどうにか見かけを保持して表示できるけど、
AutoHotkeyは全角スペースを受け付けてくれないからコピペするとエラーになるソースコードになってしまう。

917 :名無しさん@お腹いっぱい。:2008/12/23(火) 07:02:35 ID:dvp9luf20
>>911
マウスを使ってますが
使えるところを色々といただいて
スクロール周りが快適になりました
充実のドキュメントのお陰です
ありがとうございました

918 :名無しさん@お腹いっぱい。:2008/12/23(火) 17:43:45 ID:xHy/Wqbc0
2ch専ブラのログが増えると、ファイルシステム中のあちこちに散らばってしまう。
AHKのINI読み書きコマンドで、板ごとのログを1つのINIファイルにまとめてみた。

ini名を板名.ini、セクションをスレNo、キーをレス番にして、順番にひたすらIniWrite。
貯めたログを読みたいときは、readの指示を与えて、DAT形式で吐き出すようにした。

DATの数はスッキリと激減し、目的達成。1つのiniファイルのサイズは1GBを超えた。
新規スレの追記はfileappendを使って一瞬だが、保存済みのDATを最新に更新する動作は
1スレあたり0.5秒ほどかかる。それでもちゃんと正確に動いてる。

こういう使い方はSQLiteみたいなDBソフトが適任だが、テスト目的でAHKで作ったら
意外にも実用的に動いてしまい、AHKの底力を感じた。参考になればと思い、チラ裏報告。

919 :名無しさん@お腹いっぱい。:2008/12/24(水) 00:13:12 ID:WlziQb1Q0
ttp://lukewarm.s101.xrea.com/up/file/098.zip

TrackWheelを捨てて、全部書き直した。全く反省していない。
- コード量が1/3以下になった
- 動作機序を根本から変えた
- Autohotkeyである理由が希薄
- 設定がかなり少なくなった

Win32APIのマウスフックなんだけど、LowLevelMouseProcならDLLが要らんようなので使ってみた。
これでマウスをピタッと止めて、dx,dy をメッセージをトラップして自窓に再度ポストできるようになった。

一日中MSDN見ていた

920 :名無しさん@お腹いっぱい。:2008/12/24(水) 00:25:25 ID:AYYJqU8j0
>>919
乙。実行してみたが135行目でdllがサポートしてないとエラーが出て終わってしまう。

 dynamic function calls are not supported.

@XPPRO-SP3

921 :名無しさん@お腹いっぱい。:2008/12/24(水) 00:45:35 ID:WlziQb1Q0
あ、AHK v1.0.47.06以降でないと....
駄目文字対応版とかだと v1.0.47.05 なんで

922 :名無しさん@お腹いっぱい。:2008/12/24(水) 00:59:42 ID:WlziQb1Q0
多分 if 〜 else にすれば動く、、、はず。
駄目文字対応版(v1.0.47.05)で確認した。

134行目から
 if (lineX != 0) {
  if (funcH = "Vkey")
   TW_MainHVkey(lineX, ctrl, hsHwnd, sX, sY, keys)
  else if (funcH = "Scroll")
   TW_MainHScroll(lineX, ctrl, hsHwnd, sX, sY, keys)
  else if (funcH = "Wheel")
   TW_MainHWheel(lineX, ctrl, hsHwnd, sX, sY, keys)
 }
 if (lineY != 0) {
  if (funcV = "Vkey")
   TW_MainVVkey(lineY, ctrl, vsHwnd, sX, sY, keys)
  else if (funcV = "Scroll")
   TW_MainVScroll(lineY, ctrl, vsHwnd, sX, sY, keys)
  else if (funcV = "Wheel")
   TW_MainVWheel(lineY, ctrl, vsHwnd, sX, sY, keys)
 }


923 :名無しさん@お腹いっぱい。:2008/12/24(水) 20:39:34 ID:W20FV+hk0
ネトゲで簡単なマクロを使いたいのですが、
ゲーム内で動作してくれません。
ゲーム外での動作テストは意図した通りに動きます。
nProは未使用ですがソフトウェアを介す処理は弾かれているようです。
何かいい方法はないでしょうか?

924 :名無しさん@お腹いっぱい。:2008/12/24(水) 20:45:36 ID:mi/5WaiO0
垢BANされて死ね

925 :名無しさん@お腹いっぱい。:2008/12/25(木) 01:24:09 ID:l+QcGfwa0
フィルタドライバ書けばいいんじゃない

926 :名無しさん@お腹いっぱい。:2008/12/25(木) 20:40:55 ID:JAZAP6dKP
自作ソフトからキーを発行し、ahkに捕まえてもらうにはどのようなWINAPIを使用すればよいのでしょうか?

927 :名無しさん@お腹いっぱい。:2008/12/25(木) 21:58:33 ID:xeTI2+2j0
>920
確かに dynamic function calls だと DLL 関数の呼び出しっぽいけど、
%funcname%(arg1, arg2)
みたいな評価結果を関数名として行う呼び出しのことです。

>921
うちの駄目文字微対策版かな、ということで、1.0.47.06 にパッチ当て直してみました。
ttp://yak.myhome.cx/junks/#ahk.cp932

928 :名無しさん@お腹いっぱい。:2008/12/26(金) 00:22:24 ID:1U/WyUZCP
タブとテキストボックスで簡単なタブメモ帳でも作ろうと思ったらいろいろ面倒だ
タブ作成、削除するにも|区切りだし
全タブ数調べたいのに現在のページしか取得できないし
(GuiControlGet, ControlGet共に)

手軽に表示&編集したいからAutoHotkeyでいいと思ってたら・・・

929 :名無しさん@お腹いっぱい。:2008/12/26(金) 00:44:04 ID:rmpaoZ6H0
>>927
おぉ、新しいのになった。
サンクス。

930 :名無しさん@お腹いっぱい。:2008/12/26(金) 02:38:54 ID:NNgd/aLD0
>>928
http://www.microsoft.com/japan/msdn/vstudio/express/
C#マジオススメ
タブつきメモ帳くらいならすぐ完成だ
できたアプリの起動が遅いとかは、ググると解決法があるよ

931 :名無しさん@お腹いっぱい。:2008/12/26(金) 15:08:02 ID:1U/WyUZCP
>>930
Visual Studio持ってるからやろうと思えばできるんだけどね

GUIはオマケ程度で考えられてるのかな

932 :名無しさん@お腹いっぱい。:2008/12/26(金) 20:28:53 ID:vR2Xx3Bj0
>>927
激しくdクス

933 :名無しさん@お腹いっぱい。:2008/12/27(土) 01:43:03 ID:sIpY6Z9M0
tabを押した後、2秒間の間tabをおしても無視する様にしたいのですが
どのようにすればいいですか?


934 :名無しさん@お腹いっぱい。:2008/12/27(土) 05:52:32 ID:69pXK1sl0
Tab::
Send,{Tab}
sleep 2000
return
とかどう?試してないが。

935 :名無しさん@お腹いっぱい。:2008/12/27(土) 10:20:34 ID:EA92SfKL0
それだとループするかも。
$Tab::
Send,{Tab}
sleep 2000
return

936 :933:2008/12/27(土) 10:47:10 ID:sIpY6Z9M0
出来ました。
ありがとうございます

937 :名無しさん@お腹いっぱい。:2008/12/27(土) 13:05:13 ID:2PSdQW/+0
>>919
mbutton押しても反応しない時があるような

938 :名無しさん@お腹いっぱい。:2008/12/27(土) 14:26:13 ID:SmM62lPG0
>>935
基本的なことですまんが、
先頭に$をつけると、自分自身を呼び出さなくできるの?

939 :名無しさん@お腹いっぱい。:2008/12/27(土) 17:17:22 ID:cEOeUuGZ0
$は強制フック(NT専用)

940 :名無しさん@お腹いっぱい。:2008/12/27(土) 22:43:01 ID:waurfUoH0
>>937
ttp://lukewarm.s101.xrea.com/up/file/099.zip

TrackWheel うp。 Docをまじめに書いた。

2008/12/27
 機能修正/追加
  外部ファイルで個別設定の取り込みを可能に
  スクロール方法の自動選択をかなり強化
  Scroll選択でもCtrl,Shift押下中はWheelを送るようにした(拡大/縮小,履歴など)
  怪しい挙動(!)がかなり減った
 内部仕様の変更
  開始・終了時の致命的なバグをFix
  自ユーザ以外のプロセスに attach しようとして初期化落ちしていたのを fix
  スクロールバーの検出方法の強化(クラス名に非依存)
 ※ 個人的にはトラックポイント機能の代替が出来たレベルになったと思う

941 :名無しさん@お腹いっぱい。:2008/12/28(日) 00:32:33 ID:4xsS38yG0
>>940 GJ
ボタンを押したときのレスポンスがよくなってるね

942 :名無しさん@お腹いっぱい。:2008/12/28(日) 15:50:16 ID:yoRJMrhI0
>>940
トグル動作にするのはもう無理?

943 :940:2008/12/28(日) 17:03:50 ID:qgaPB3TC0
無理くり Toggle やってみた。

ttp://lukewarm.s101.xrea.com/up/file/100.zip

2008/12/28
 機能修正/追加
  トグル関数を整備
 内部仕様の変更
  Scroll/Wheel のメッセージ投げを SendMessage→PostMessageに変えた
  (分かっていたが追従性が激減した。が、バグる可能性は減った。またWordでScrollが効く)

944 :名無しさん@お腹いっぱい。:2008/12/28(日) 17:48:42 ID:+zEU3AiRP
>>940
マウスが消えるバグは>>911が一番なりにくかった…

945 :名無しさん@お腹いっぱい。:2008/12/28(日) 18:12:39 ID:4/vXr8Eh0
ハイレベルな流れの中で申し訳ないのですが、キーボード・マウス入力を自動化しようとしているのですが
意図した動作をしてくれないので、直そうとしても動きが速すぎてどこでこけたのかいまいち分らないので
一個一個のコマンドの間?を何秒か空けることって出来ませんかね?

946 :名無しさん@お腹いっぱい。:2008/12/28(日) 18:15:55 ID:W4KtF3od0
SleepまたはWinWait〜

947 :名無しさん@お腹いっぱい。:2008/12/28(日) 18:24:55 ID:ENq9Mtch0
SetBatchLinesらへんも参考に

948 :名無しさん@お腹いっぱい。:2008/12/28(日) 18:43:37 ID:qgaPB3TC0
>>944
ん〜、もう系統が違うモノなんで・・・。
あっちはもうメンテする気がないっす

マウスポインタが見えていてもいいんなら、フラグで処理丸ごと飛ばせるっす。
467行目あたりのをのフラグを false にすればいいっす。
 TW_HIDE_MOUSE := false

多分前のと違ってカーソルが見えていてもぴくりとも動かないはず。

949 :名無しさん@お腹いっぱい。:2008/12/28(日) 19:32:15 ID:+zEU3AiRP
>>948
Guiも表示されたままだからなぁ…
とりあえずぱっと調べてみたところ
普通ならTW_Start→TW_CursorHide(1)〜 TW_End→TW_CursorHide(0)と処理されるはずが
対応してない?所で素早くホイールクリックするとTW_StartとTW_Endがほぼ同時に呼び出され
順番的にはTW_Start→TW_End→TW_CursorHide(0)→TW_CursorHide(1)と呼ばれてる様子
細かい所は分からんのだが、なんとかならないのかな

950 :名無しさん@お腹いっぱい。:2008/12/28(日) 19:45:44 ID:7kzJJR/V0
Gui作成のヒントになりました
Label付けるとGuiSizeとか変更できるの知らなかった

951 :名無しさん@お腹いっぱい。:2008/12/28(日) 22:40:28 ID:qgaPB3TC0
>>949
原因はなんとな〜く分かった。

前処理で、対象窓にAPIとか使って色々投げてるんだけど、Busyで返事が返ってこない。
で、その間に ButtunUpしてる。で、HOOK ON。だからもう、Buttun Up 拾えない orz

その辺をチェックするようにした。面倒だけど監視スレッドも1本増やした。
レンダリング中のブラウザとか、追従性の悪いスクロールするやつには弱い...

ttp://lukewarm.s101.xrea.com/up/file/101.zip
 開始処理が終了する前にボタン押上イベントが発生したときの後処理が行われない不具合を対処したつもり

952 :945:2008/12/29(月) 01:06:31 ID:490uJ6s90
>>946
>>947
レスありがとうございます。初めてのプログラミングで四苦八苦してますが、頑張ってみます。
もうひとつ質問なんですがエディタってメモ帳でもいいんでしょうが、なんかお勧めの物ってありますか?

953 :名無しさん@お腹いっぱい。:2008/12/29(月) 02:04:08 ID:/T9xtDbK0
自分はxyzzyでahk-mode

954 :名無しさん@お腹いっぱい。:2008/12/29(月) 06:45:42 ID:fv2tBW6H0
メモ帳からxyzzyは敷居が高すぎるような
でも自分もxyzzy使ってて、他を知らないから薦められないw

955 :名無しさん@お腹いっぱい。:2008/12/29(月) 07:10:55 ID:uWHnwxOY0
俺はこれ。…英語だけど。
ttp://www.autohotkey.net/~fincs/SciTE4AutoHotkey/

956 :名無しさん@お腹いっぱい。:2008/12/29(月) 08:36:18 ID:kc5VWCLm0
VxEditor使ってる
起動早いしマジオススメ

957 :名無しさん@お腹いっぱい。:2008/12/29(月) 08:42:04 ID:7+yIBxcf0
>>954
他のエディタでクセがついてない方が馴染みやすいってのもあるんじゃない?
ま、そういう俺は秀丸使いなんだけどさw

958 :名無しさん@お腹いっぱい。:2008/12/29(月) 09:34:16 ID:/ce5B3yz0
俺はEmacs系に馴染めなかったのでvi系てかVim

959 :名無しさん@お腹いっぱい。:2008/12/29(月) 10:17:22 ID:lGSWjpkv0
>>952
.\AutoHotkey\Extras の中、
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/58-59
なんかはもう見たかな?知ってたら御免よ。

960 :名無しさん@お腹いっぱい。:2008/12/29(月) 10:32:34 ID:+kATPPZw0
>>956,959
俺もメモ帳で書いてるんだけど、VxEditorはとっつき安そうで良いね。
xyzzyやVimも試してみたんだが、操作に慣れるのが大変で・・・

961 :名無しさん@お腹いっぱい。:2008/12/29(月) 10:58:02 ID:FbhFuqZ70
レス番号も頃合いだし、次スレのFAQに追加してもいいんじゃないだろうか。
こんな感じか?エディタはデフォで定義があるヤツ以外で適当にスレ見て見つかったヤツを書いた。

Q:エディタは何を使えばいいの?
A:好きなエディタを使えばいい。過去スレ見ると色々報告がある。
 いくつかのエディタについてははキーワード定義が以下に添付されているので参考に。
  {AutoHotkeyフォルダ}\Extras\Editors
 他ののエディタ:
  VxEditor ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/58-59
  xyzzy(ahk-mode) (補完よろしく)
  秀丸 (補完よろしく)
  サクラエディタ (補完よろしく)
  TeraPad (補完よろしく)
 上にければ、\Extras\Editors\Syntax 内のファイルを利用して自分で作る!

962 :名無しさん@お腹いっぱい。:2008/12/29(月) 11:25:54 ID:iPv0xJEr0
具体名を列挙する必要は無いと思うけどな。
入力補完やシンタックスハイライト程度じゃ、無条件に「AHK書くならコレ」って推薦できるもんでないだろうし、
そもそもエディタなんて、それ以前に機能や動作の好み、その人のスキルで選ぶもんだし。

つか1スレに1、2回くらいしか出ない話題だし、プログラミング言語なら当然の話だし、
FAQに書く必要あるのか微妙だと思う


963 :名無しさん@お腹いっぱい。:2008/12/29(月) 11:45:07 ID:7+yIBxcf0
FAQにする必要はないな

964 :名無しさん@お腹いっぱい。:2008/12/29(月) 11:51:47 ID:FbhFuqZ70
そうかぁ。
- ユーティリティソフトの設定ファイル
- スクリプトファイル
のどっちと認識してるかでだいぶ印象が違う気がしたんでね。
前者は結構いて、発言してないだけなのかなと。

まぁ、要らないというのなら...

965 :名無しさん@お腹いっぱい。:2008/12/29(月) 11:53:46 ID:I9a1/A/g0
せっかくアーカイブ内に設定ファイルがまとまってるのに、存在感ゼロでもったいない。
ほとんどの人が、言われるまで気づかないだろうから、書いておいて損は無いと思う。

966 :名無しさん@お腹いっぱい。:2008/12/29(月) 12:07:50 ID:UxRO/VUy0
>>955
よさそうだね。ありがとう。

967 :名無しさん@お腹いっぱい。:2008/12/29(月) 12:57:58 ID:EwVINBwO0
おがわさんのエディタの俺
ハイライトはないので自力で

968 :名無しさん@お腹いっぱい。:2008/12/29(月) 14:06:45 ID:f0GaHRG50
ちょっと便利っぽい関数できた。キーの複数押しを検出する関数。
連続で押した回数 - 1 を返す。なので一発押しは 0。

MultiHit()
{
Static count
count := A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey > 50 and A_TimeSincePriorHotkey < 250 ? count + 1 : 0
return, count
}

使い方はこんな感じ。

1::
If MultiHit() = 1
Msgbox, This hotkey was hit twice.
return

2::
If MultiHit() = 2
Msgbox, This hotkey was hit three times.
return


969 :名無しさん@お腹いっぱい。:2008/12/29(月) 20:10:30 ID:d2LtkXFF0
モールスと似てるな
ttp://www.autohotkey.com/forum/topic16951.html&highlight=morse

970 :名無しさん@お腹いっぱい。:2008/12/29(月) 21:44:47 ID:WxtoeI5S0
モールスすげぇな

971 :名無しさん@お腹いっぱい。:2008/12/30(火) 00:54:09 ID:WVCIo7zL0
小ネタ。電源状態の変化を検知してサブルーチンを呼ぶ。
以下に列挙した変数に該当したイベントの通知があった場合、同名サブルーチンラベルを呼ぶ。
レジュームから醒めて録画したいときとかにでも。

PBT_APMBATTERLOW := 0x9 ; バッテリ電力が低下した
PBT_APMOEMEVENT := 0xB ; OEM定義のイベントが発生した
PBT_APMPOWERSTATUSCHANGE := 0xA ; パワー状態が変化した
PBT_APMQUERYSUSPEND := 0x0 ; 待機要求をする
PBT_APMQUERYSUSPENDFAILED := 0x2 ; 待機要求が拒否された
PBT_APMRESUMEAUTOMATIC := 0x12 ; システムが自動的に復帰しようとしている
PBT_APMRESUMECRITICAL := 0x6 ; 致命的な待機状態からシステムが復帰しようとしている
PBT_APMRESUMESUSPEND := 0x7 ; 待機状態から復帰しようとしている
PBT_APMSUSPEND := 0x4 ; システムが待機状態になろうとしている
OnMessage(0x218, "WM_POWERBROADCAST")
return
WM_POWERBROADCAST(wParam, lParam, msg, hwnd) {
global
static names:="PBT_APMBATTERLOW,PBT_APMOEMEVENT,PBT_APMPOWERSTATUSCHANGE,PBT_APMQUERYSUSPEND,PBT_APMQUERYSUSPENDFAILED,PBT_APMRESUMEAUTOMATIC,PBT_APMRESUMECRITICAL,PBT_APMRESUMESUSPEND,PBT_APMSUSPEND"
Loop, PARSE, names, `,
if (wParam == %A_LoopField% && IsLabel(A_LoopField))
SetTimer, %A_LoopField%, -10
return 1
}

; 例) レジューム復帰時に呼ばれるのサブルーチン
PBT_APMRESUMESUSPEND:
MsgBox,待機状態から復帰しようとしている
return


972 :名無しさん@お腹いっぱい。:2008/12/30(火) 01:24:21 ID:TO52nVj80
ふと思ったがエディタでのリピート操作のマクロみたいなのを
AHKでできたら面白そうだね。

973 :名無しさん@お腹いっぱい。:2008/12/30(火) 02:04:59 ID:x2CL5LgwP
ちょっと質問

data0に行数
data00に列数
data11に1行目1列目の値
data12に1行目2列目の値
・・・
って入れたんだけど
Loop, %data00%
{
 rowCount := A_Index
 Loop, %data0%
 {
  ;Msgbox使ってrowCount行A_Index列の値を表示させたい
 }
}
二次元配列は向いてないんだろうか?

974 :973:2008/12/30(火) 02:33:32 ID:x2CL5LgwP
すみません、勝手に自己完結
MsgBox, % data%rowCount%%A_Index%
で大丈夫っぽい

ちなみに
>>973
はdata00とdata0の値が逆になってたのでここで修正
次スレ近いのにスレ汚しすみませんでした

975 :名無しさん@お腹いっぱい。:2008/12/30(火) 03:13:54 ID:+4oUbOzj0
少しお聞きしたいのですが、複数の指定ウインドウを同時に
前面に持ってくる(SetForegroundWindows的な)ことはできませんでしょうか?

GroupAdd と GroupActivateでいけるかな?と思ったのですが、
GroupActivateだと読んだ順番に1つずつ前面に来てしまいます。
GroupAddしたもの全部同時に前に出したいのですが、
よい方法はありませんでしょうか?

976 :名無しさん@お腹いっぱい。:2008/12/30(火) 03:40:04 ID:+4oUbOzj0
下記を参考にしたところ、
WinGet
http://lukewarm.s101.xrea.com/commands/WinGet.html

こんな感じでいけました。

Process, Exist, notepad.exe
if ErrorLevel = 0
  return
WinGet, id, list, ahk_pid %ErrorLevel%
Loop, %id%
{
  StringTrimRight, this_id, id%a_index%, 0
  WinActivate, ahk_id %this_id%
}
return

おさわがせしました。ありがとうございました。

977 :名無しさん@お腹いっぱい。:2008/12/31(水) 03:51:29 ID:raJxB35O0
以下のようなことをしたい場合は、どのようにすればいいのでしょうか?

・LeftShift+Backspaceを押すと、Deleteが押されたことにする
・LeftCtrl+LeftWindowskey+LeftAlt+Aを押すと、Deleteが押されたことにする
・↑を押すと、マウスカーソルが上に移動する

978 :名無しさん@お腹いっぱい。:2008/12/31(水) 04:10:04 ID:U/YQ6xi50
特殊でもなさそうだから、ふつうにコードを書けばいいんじゃね?

979 :名無しさん@お腹いっぱい。:2008/12/31(水) 06:30:12 ID:ax7qD9Qk0
常駐プロセス減らすために先ほど入れてみた
これTTBaseみたいにひとつのプロセスでプラグイン(スクリプト)読み込んで実行してくれるのかと思ってたら
スクリプト分起動してメモリもタスクトレイも圧迫するんだな・・
コンセプトが常駐統合じゃなくて常駐作成支援ってとこを見落としてた俺が悪いんだけど

980 :名無しさん@お腹いっぱい。:2008/12/31(水) 07:20:43 ID:BBsyznpV0
たくさん常駐させるか、あるいは人の作ったものを改変してマージして
それぞれが自分のスクリプト育てるような使い方になるね。
なんかうまい方法あればいいのに。

981 :名無しさん@お腹いっぱい。:2008/12/31(水) 10:27:08 ID:x1kXWSdr0
>>979
AutoHotKey.iniに全部突っ込めばOK

982 :名無しさん@お腹いっぱい。:2008/12/31(水) 10:48:32 ID:nnSK+Aaz0
>>981
スクリプトによって無理じゃない?管理もしづらくなるし。
常駐減らそうと思って使っても、
利便性を高める軽い処理を任せるようになるから、スクリプトの数は多くなる。

983 :名無しさん@お腹いっぱい。:2008/12/31(水) 11:10:38 ID:KqJ9SetP0
単一のプロセスやトレイにしたければ、自分でまとめて書くとか、
スクリプトローダみたいな書くとかすればいいだけでは。

その分プロセスやスレッドの割り当てが自分で好きに出来たり、
他人のスクリプトをカスタマイズできたりするんだから、
多少敷居は高くとも、これくらいの自由度ある方が有り難いな。

984 :名無しさん@お腹いっぱい。:2008/12/31(水) 12:43:33 ID:ROX9gd900
すまんが勝手に建てさせて貰った
ttp://pc11.2ch.net/test/read.cgi/software/1230694774/

985 :名無しさん@お腹いっぱい。:2008/12/31(水) 13:00:59 ID:ROX9gd900
勝手に追加FAQ?

Q: GUI作るのめんどくせ〜〜
A: 公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使え

Q: ファイルパスに駄目文字があるんだが、、、
A: 駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。

Q: 「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A: 多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

Q: AHKってマルチスレッドじゃないの?
A: 「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。

> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …: 割り込み終了待ち
> 元スレッド   →→→→→→→→→→→……………………………………→→→→
>                           ★割込                ↑再開    
> 割り込みスレ                  →→→→…………→→→→→→END
>                                 ◆割込 ↑再開
> 更に割り込み                        →→→END

986 :名無しさん@お腹いっぱい。:2008/12/31(水) 13:02:06 ID:ROX9gd900
誤爆したすまそ

987 :名無しさん@お腹いっぱい。:2008/12/31(水) 13:23:28 ID:GTWG+0Ql0
>>984
大晦日にお疲れ

SQLiteModule version1.0
ttp://lukewarm.s101.xrea.com/up/file/102.zip

SQLite使えたら便利だなーと思ったので作ってみた
ほぼ自己満足

988 :名無しさん@お腹いっぱい。:2008/12/31(水) 13:26:12 ID:GTWG+0Ql0
確認したらreadme.txt間違ってるや
Sample.ahkじゃなくてDBTest.ahkになってます

989 :名無しさん@お腹いっぱい。:2008/12/31(水) 13:28:38 ID:U/YQ6xi50
>>985
なんというGJなテンプレ!
このスレで出た新規の内容が、ほぼ全部網羅されとる。

990 :名無しさん@お腹いっぱい。:2008/12/31(水) 14:24:32 ID:ROX9gd900
>>987
GJ
Dynamic Function 使って、コールバック関数放り込めるといいなぁ、なんて。

991 :名無しさん@お腹いっぱい。:2008/12/31(水) 15:04:06 ID:x1kXWSdr0
AutoHotKeyみたいな簡易スクリプトでDBって酔狂だなw

992 :名無しさん@お腹いっぱい。:2008/12/31(水) 15:45:45 ID:GTWG+0Ql0
>>990
そこらへんよく分かってないので勉強中ということで

>>991
まあ他の言語の方が絶対的に向いてる
それでも公式のフォーラムで似たようなの見つけて
考える人は同じだなーと実感

993 :名無しさん@お腹いっぱい。:2008/12/31(水) 15:55:11 ID:ROX9gd900
スクリプト言語こそ貧弱なデータ操作を外部DBに任せてもいいんじゃないかなぁ。

俺は作りかけ(とはいってもDLLのバージョン表示くらいまでw)で放置してた。
考えるヤツは考える。

994 :名無しさん@お腹いっぱい。:2009/01/01(木) 00:17:27 ID:/LfLEbsk0
>>985の図はGood job!

Windows板なんかに初心者用スクリプト相談スレ建てても過疎るかな?

995 :名無しさん@お腹いっぱい。:2009/01/01(木) 00:54:33 ID:th47WI690
>>994 それは絶対にやめてくれ。

いまこのスレは 質のいい質問者と、レベルの高い回答者が揃ってて好循環だから、
そこにヘンなのが流入してクズだらけの質問で埋まると困る。

996 :名無しさん@お腹いっぱい。:2009/01/01(木) 08:56:11 ID:AW9L0CUN0
クレクレとドキュメント読まない厨が集まるんだろうな…

997 :名無しさん@お腹いっぱい。:2009/01/01(木) 12:32:53 ID:c1HDUfIL0
test

998 :名無しさん@お腹いっぱい。:2009/01/01(木) 19:49:38 ID:sQJASeQH0
良スレでつね。

>>994 それはやめてくれ。
初心者側としても読むスレが増えるだけでありがたくない。

#今日AHKを知った新参としての意見。

999 :名無しさん@お腹いっぱい。:2009/01/01(木) 20:44:59 ID:/E94ms0i0
>>995=998

1000 :994:2009/01/01(木) 20:51:13 ID:/LfLEbsk0
>>998
了解。

ただ、Part1〜2くらいは初心者混合なんだけどな。今は古参ばかり。

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

340 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)