AutoHotkey スレッド part5

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
2名無しさん@お腹いっぱい。:2008/01/28(月) 15:48:45 ID:LAzeYh1N0
(テンプレ>>2)
■関連記事のあるサイト
猫歩き - AutoHotKey
http://tryhost.net/~catwalk/?cmd=read&page=AutoHotKey
AutoHotkey メモ - Principia
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
AutoHotKey - notitle.txt
http://kan.s151.xrea.com/?AutoHotKey
TOKKY.COM
http://www.h3.dion.ne.jp/~tokky/
なまず日記
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
3名無しさん@お腹いっぱい。:2008/01/28(月) 15:49:26 ID:LAzeYh1N0
FAQ
Q:CapsLock(英数)キーの割り当てがうまくいかないよ
A:日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。
  OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように
  ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。
  対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13〜F24など)に割り当ててから
  AHKで利用すべし。

Q:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
A:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。
  対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、
  #EscapeCharでエスケープ文字を別のものに変えるべし。
4名無しさん@お腹いっぱい。:2008/01/28(月) 15:49:48 ID:LAzeYh1N0
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/01/28(月) 15:50:23 ID:LAzeYh1N0
わからない七大理由

1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。
6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
7. バカだから ・・・バカだから。
6名無しさん@お腹いっぱい。:2008/01/28(月) 16:22:45 ID:iT6mqMKp0
FAQ

AutoHotkeyを流行らせるページよりも
■公式
http://www.autohotkey.com/
を調べた方が早いしためになる。
はやらせるページで変な広告を踏まないように。
サイト主自身の自演にも気をつけること。
7名無しさん@お腹いっぱい。:2008/01/28(月) 16:23:06 ID:RUz0ESHl0
>>1
おつです
8名無しさん@お腹いっぱい。:2008/01/28(月) 17:57:40 ID:1WXSlsm10
英語読めません><
9名無しさん@お腹いっぱい。:2008/01/28(月) 19:05:44 ID:QvDUd8La0
必要な人は今の内に流行らせるページを保存しておいた方がいいかもね
10名無しさん@お腹いっぱい。:2008/01/28(月) 20:53:13 ID:mX8zLuSg0
一部の人間以外、みんなわかっていると思うが、
流行らせるページに出てる広告は xrea.com が出してる広告だぞ。
どんなに広告クリックしたって流行らせるページ管理人には一円も入らない。

そもそも、直訳でもないし、管理人の作ったスクリプトも多いだろ。

こんな下らないことで管理人にやる気を無くされると困るので言っておく。
日本語の流行らせるページがなければオレは AHK を使う気にならなかったと思う。
オレにとってはとてもありがたいページだ。
無くなると非常に困る。
1110:2008/01/28(月) 20:56:28 ID:mX8zLuSg0
あまりのアホ臭さに、ついカッとなって書き込んでしまったが、
本当は無視した方が良いんだよな。
12名無しさん@お腹いっぱい。:2008/01/28(月) 21:08:56 ID:iglknCZV0
>>2
TOKKY.COM
http://www.h3.dion.ne.jp/~tokky/
↑これリンク切れてない?

乙です!
13名無しさん@お腹いっぱい。:2008/01/29(火) 00:08:58 ID:XdQ+yieA0
導入しようとしていきなりつまずいたんですが,
「Ctrl+,」にホットキーを割り当てるにはどうすればいいんでしょうか?
^,:: Send,{Down}
としても反映されないし,
^`,:: Send,{Down}
のようにカンマの前でエスケープを入れるとエラーで読み込んでくれません.
どなたか解決方法をご存知でしたら教えてください.
14名無しさん@お腹いっぱい。:2008/01/29(火) 01:15:59 ID:Ay5OuFjT0
^,::Send,{Down}

でも

^,::
Send,{Down}
Return

でも普通にカーソル下を押したように動作するけど?
1513:2008/01/29(火) 01:25:19 ID:XdQ+yieA0
>>14
いま自宅のPCで試したら問題なく動きました.
なぜか会社のノートPCだと「Ctrl+,」が動かなくって困ってたんですが・・・・
なぜなんだ(´・ω・`)
明日また格闘してみます.
レスありがとうございました.
16名無しさん@お腹いっぱい。:2008/01/29(火) 12:40:37 ID:Szetxnxc0
5ボタンマウスのサイドボタン押したら
アプリ毎に独自のAHKで作ったコンテキストメニュー出すようにしたらめちゃ便利になったぜ。
17名無しさん@お腹いっぱい。:2008/01/29(火) 14:32:03 ID:ajljrKKP0
タブ一覧をフルパスで出すことは可能ですか?
18名無しさん@お腹いっぱい。:2008/01/29(火) 15:36:31 ID:H396lWxH0
任意ウィンドウにファイルパスをドロップするのってAHKで実現するとなるとやっぱDllCallあたり?

秀丸上で再編集した AviSynthスクリプトを VirtualDub で開き直したいんだが
秀丸(マクロ起動)→ AHK → CDrop.exe → VirtualDub みたいな感じになってイマイチ美しくない。
CuteExec + CDrop 的なことをAHK単体でできるとスマートになるんだが
19名無しさん@お腹いっぱい。:2008/01/29(火) 17:53:20 ID:ajljrKKP0
"を,に変更しようとして下記を実行するとエラーになります。
"のエスケープ方法はありますか?

RegExReplace(str, """, ",") → ダメ
RegExReplace(str, "\"", ",") → ダメ
20名無しさん@お腹いっぱい。:2008/01/29(火) 19:28:38 ID:3WMuG5Dr0
つRegExReplace(str, """", ",")
流行らせるページに書いてあった気がするぞ
21名無しさん@お腹いっぱい。:2008/01/29(火) 20:39:08 ID:BI4JxHKn0
>>16
それ俺もやってる。便利だよな
22名無しさん@お腹いっぱい。:2008/01/31(木) 16:33:32 ID:shq4HQgO0
特定のタイトルを含むダイアログがポップしたら
即走り出すスクリプトってどう書けばいいんですか?
23名無しさん@お腹いっぱい。:2008/01/31(木) 17:42:19 ID:at/ss03S0
WinWaitでひたすら待機するか、SetTimerで定期的にウィンドウチェックする
24名無しさん@お腹いっぱい。:2008/02/01(金) 12:16:53 ID:a0KRVuAu0
マウスとトラックボールで使う設定を切り替えたいのですが、
特定のキーを押したら設定ファイルを切り替えることはできますか?
25名無しさん@お腹いっぱい。:2008/02/01(金) 13:39:13 ID:VhWABfjI0
いくらでもやりようはあるんでは
全部メインINIに書かんでも必要な時に単体AHKで走らせるとか
どういう形で利用したいか次第だけど
26名無しさん@お腹いっぱい。:2008/02/01(金) 15:22:25 ID:4atLgnwZ0
ホットキー押下で処理が実行できるように、
マウスを任意のポジション(画面右端など)に持っていくと任意の関数を呼び出すことってできますか?
27名無しさん@お腹いっぱい。:2008/02/01(金) 15:23:50 ID:USinHq/30
SetTimerで定期的にカーソルの座標をチェックする
28名無しさん@お腹いっぱい。:2008/02/01(金) 15:29:07 ID:4atLgnwZ0
>>27
なるほど!頭が固かった。
ありがとうございます。
29名無しさん@お腹いっぱい。:2008/02/01(金) 16:03:24 ID:4atLgnwZ0
#Persistentを入れたら、よく分からないのですがGUI関連の動作が変になります。

画面表示させると、タスクバーにウィンドウタブが出るのに、画面が表示されません。

何か注意事項があれば教えてください。
30名無しさん@お腹いっぱい。:2008/02/01(金) 16:14:06 ID:VhWABfjI0
AHK晒す方が早い
31名無しさん@お腹いっぱい。:2008/02/01(金) 17:21:17 ID:4atLgnwZ0
なにかRegExReplaceの挙動が変です。
clipboard := RegExReplace(clipboard, "$", "_")

clipboardは「aaa」
aaa____________ ※「_」が永遠につきます。

これは私だけでしょうか?
32名無しさん@お腹いっぱい。:2008/02/01(金) 18:32:39 ID:VhWABfjI0
どこかでループに入ってるだけじゃないの
OnClipBoardChangeとかでそれやるとそうなると思うけど
それにしても挙動がおかしいわけじゃないので精進あるのみ
33名無しさん@お腹いっぱい。:2008/02/02(土) 22:56:17 ID:KxCafLCj0
普段は無変換をAltにして、変換中の文字列がある時は
無変換のままにするには、どうしたらいいでしょうか?
ImmGetContext
ImmGetCompositionString
ImmReleaseContext
で何とかしようとしたんですが、ImmGetContextが
HIMCを返してくれず、つまってしまいました。
34名無しさん@お腹いっぱい。:2008/02/03(日) 07:50:55 ID:rBQILGNE0
>>11
そうかもしれんが
とりあえずグッジョブ!!

オレも同じ気持ちだ
35名無しさん@お腹いっぱい。:2008/02/04(月) 08:09:41 ID:lNDxtde70
トグルでのリマップ、具体的には
;1 キーボード左手ホームポジション付近にテンキーを配置
;2 と同時にマウスホイルを横スクロール化する
ってのを本家のForumからのコピペを継接ぎして動作確認取ったんですよ。

で、本題、そこに更にSandS実装したらテンキー部分が1と2は死んじゃったんです。
使わせてもらったのはコレ
ttp://sadat-studio.net/modules/mydownloads/viewcat.php?cid=3

他に変換キーとの同時押し、無変換キーとの同時押しで色々割り振ってるけどそっちは問題ないんです。
(最後にSandS付足したらトグルテンキー&スクロールが死んだ)

なんとか粗探ししてもらえませんか?
やりたいこと纏めた画像とコードも晒しときます。

http://rainbow.sakuratan.com/data/img/rainbow67867.jpg
36名無しさん@お腹いっぱい。:2008/02/04(月) 08:12:14 ID:lNDxtde70
DetectHiddenWindows On
GoSub ~ScrollLock ; react to initial state
; ... further code here
; --- end of autoexecute section ---
~ScrollLock:: ; toggle by create/destroy a hidden window
If GetKeyState("ScrollLock","T")
Gui 1:Show, Hide, ScrLk
Else
Gui 1:Destroy
Return

!T:: ; toggle by create/destroy a hidden window
AltT := !AltT
If AltT
{
Gui 2:Show, Hide, Alt-T
TrayTip, テンキー&横スク, ON!!!!!!!!!!!!!!!, 10, 17
}
Else
{
Gui 2:Destroy
TrayTip, , OFF!!!, 10, 17
}
Return

#IfWinExist ScrLk ; below the HotKeys are active when CapsLock is ON
!z::MsgBox ScrollLock ON
;...
#IfWinExist Alt-T ; below the HotKeys are active when Alt-T toggle is ON
!z::MsgBox Alt-T ON
2::Send {BS}
3::Send {Numpad7}
37名無しさん@お腹いっぱい。:2008/02/04(月) 08:12:48 ID:lNDxtde70
4::Send {Numpad8}
5::Send {Numpad9}
q::Send +{Tab}
w::Send {Numpad4}
e::Send {Numpad5}
r::Send {Numpad6}
t::Send {Tab}
a::Send {Numpad0}
s::Send {Numpad1}
d::Send {Numpad2}
f::Send {Numpad3}
x::Send {,}
c::Send {NumpadDot}
v::Send {NumpadEnter}
WheelUp:: ; Scroll left.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase or decrease this value to scroll faster or slower.
SendMessage, 0x114, 0, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 0 after it is SB_LINERIGHT.
return

WheelDown:: ; Scroll right.
ControlGetFocus, fcontrol, A
Loop 4 ; <-- Increase or decrease this value to scroll faster or slower.
SendMessage, 0x114, 1, 0, %fcontrol%, A ; 0x114 is WM_HSCROLL and the 1 after it is SB_LINELEFT.
return
;...
#IfWinExist ; below the HotKeys are active when all toggles are Off
!z::MsgBox ScrollLock/Alt-T Off
;...
38名無しさん@お腹いっぱい。:2008/02/04(月) 10:54:47 ID:1sw7KKiW0
>>32
これはバグでしょう。

クリップボード「c\windows」

clipboard := RegExReplace(clipboard, "\\", "_")
 → c_windows
clipboard := RegExReplace(clipboard, "\\", "\\\\")
 → c\\\\\\\・・・無限に

どの正規表現ライブラリで実行してもこんな結果にならない。
というか、最初のマッチ文字は置換対象文字の影響を受けないのが正規表現の仕様のはず。
39名無しさん@お腹いっぱい。:2008/02/04(月) 13:58:05 ID:lxZerH8t0
だから、スクリプトの書きミスで再帰的に
その行が実行されちゃってるんじゃないの?

clipboard = c\windows

clipboard := RegExReplace(clipboard, "\\", "\\\\")

ExitApp

これだけをAHKとして実行したら無限になんかならないよ?
40名無しさん@お腹いっぱい。:2008/02/04(月) 15:19:54 ID:hiCAfNGc0
>32も指摘してる通り OnClipboardChange: イベントでループしてんじゃないの?
てか検証して欲しいなら どういう条件でコードが実行されるのかイベントやラベルも含めて晒せよ
あと、OSとAHKのバージョンもな。

それと本当にバグを見つけたんならここだけで話終わらせないで公式に報告汁
適当な機械翻訳でもサンプルソースとかで意図さえ伝わればフィードバックしてもらえるよ。
41名無しさん@お腹いっぱい。:2008/02/04(月) 18:37:52 ID:NF7nd3YZ0
意図しない挙動をして質問する時は、>>40の言うように
その環境と再現する最小の例を出さないと、要エスパーになる

まあ、処理系のバグのせいにする時は、99%凡ミスしてるんだけどなw
42名無しさん@お腹いっぱい。:2008/02/04(月) 19:58:32 ID:dA0g5f860
流行らせるページって公式に許可取ってるの?
勝手に本まで出して。
43名無しさん@お腹いっぱい。:2008/02/04(月) 20:12:43 ID:lzI8duyb0
>>42
公式サイトのトップページからリンクされてる
勿論それが許可を取った証拠にはならないが、公認されているのは間違い無いな
44名無しさん@お腹いっぱい。:2008/02/04(月) 20:22:49 ID:e8nuEEnl0
流行らせるページって本当に流行らせたかったら
サイトデザイン変えるのが先だろうと思ってしまう
45名無しさん@お腹いっぱい。:2008/02/04(月) 20:25:33 ID:YiEZp6JU0
つーか、GPLな物の本を出すときに許可をとる必要あるの?
46名無しさん@お腹いっぱい。:2008/02/04(月) 20:52:03 ID:dA0g5f860
このレスの速さw
本人常駐かよ。
47名無しさん@お腹いっぱい。:2008/02/04(月) 20:53:44 ID:se7bcYAi0
ID:dA0g5f860
48名無しさん@お腹いっぱい。:2008/02/04(月) 21:01:45 ID:T+oEl9Ya0
ちょっと調べれば間違いだと分かることで難癖をつけたり、
やたら他人の財布の中身に執着するし、前スレの奴かもな。

>>45
つーか、大体のPC系の解説本って無許可なんじゃね?
49名無しさん@お腹いっぱい。:2008/02/04(月) 21:21:30 ID:XZ2S5i9N0
AHK付属させるとかじゃなければメールで知らせる程度だろう
てか、某厨雑誌とか断っても既にメディアにプレスしてしまったから
掲載させろとか言ってくるんだぜ?w
50名無しさん@お腹いっぱい。:2008/02/04(月) 23:47:13 ID:zQqzFbOH0
GPLだからなんの問題もないよ。
世の中にあるlinux解説サイトとかlinux本とか
全部linusの許可もらってるとでも思ってんのか。
51名無しさん@お腹いっぱい。:2008/02/05(火) 00:04:13 ID:UKfPXss30
5ボタンくん再臨だな
5235:2008/02/05(火) 06:38:40 ID:fCMPtgDt0
華麗にスルーですかそうですか
自分でやってみるよ…
53名無しさん@お腹いっぱい。:2008/02/05(火) 12:06:58 ID:ri+tJX5c0
本なんて出てるんだ。
っつーかあの日本語はオタ特有だよね。
大量にあるのに何が言いたいか相手に伝わらない。
英語ヘルプの方が分かりやすい。

>>35も何が言いたいのかさっぱりわからん
54名無しさん@お腹いっぱい。:2008/02/05(火) 12:49:31 ID:UKfPXss30
いいたいことは分かるが検証するには量多すぎて付き合いきれんw
55名無しさん@お腹いっぱい。:2008/02/05(火) 12:54:07 ID:K8ltHUV00
あれ本て言うのか、、
56名無しさん@お腹いっぱい。:2008/02/05(火) 15:55:19 ID:y+D95pDv0
>>52
SandS、スクリプト書いてupろだに上げた者だが、Inputで入力拾ってるので色々動作に制限は出てると思う。
ここ(の過去スレ)で要望が出たからサンプルとして書いたけど、
たしか要望した本人も「結局使えない」て結論に至っていたような。

とりあえず SAS_Initルーチン内の sas_EndKeys に {Numpad0〜9}とかを追加してみたらどうだろう。
ちなみにうちはノートPCなので動作確認はしてやれない、テンキーついてないしね。
てか、普通のSpace&1とか押しても ! にはならないな。当時使ってたPCでまともに動いてたのかも覚えてないわ。


それと、>35のリンク先で、変換/無変換キーにIME ON/OFF割り当ててるけど
これってAHK使わなくても IMEのキーバインド変更機能でいけるような…
(キーカスタマイズできない昔のMS-IMEしか入ってない環境では自分もやっていたが)
57名無しさん@お腹いっぱい。:2008/02/05(火) 16:33:45 ID:TVchypt10
>>33みたいな日本語を書く人はちゃんと学校を出たのかと心配になる
5835:2008/02/05(火) 18:54:52 ID:fCMPtgDt0
>>53
>>35も何が言いたいのかさっぱりわからん
確かに読み直してみると日本語でおk状態でした

>>56
>>これってAHK使わなくても IMEのキーバインド変更機能でいけるような…
仰るとおりです。リンク先画像の赤いキーはレジストリ書換とIMEのプロパティで実現してます。
ホント全く説明になってないよね、面目ない…

やりたい事の全容ですが、
1, 変換キーを絡ませた同時押し
2, 無変換キーを絡ませた同時押し
3, S&S
4, 8ボタンマウスのキーを絡ませた同時押し
のワンショット・モディファイヤ(以下W.M.)、それにマウス側の各トグルキーで2配列追加して
まぁ計6配列切り替えてキーボードを使いたいって感じです。
で、まぁ、一応全て動作して、それなりに満足してます。

今悩んでる、というか多分出来ないんだろうけどなんか代替手段ね〜かなと思ってるのは
1, 上記のトグル状態をキャレット及びマウスポインタに反映させれないか?(今はTooltip使ってる)
2, W.M.で割振ったキーが、別の修飾キーを同時押しした際に思ったように動作しない
(例えばW.M.で割振った{+}キーとShiftを同時押ししてもShift+{+}のようにアプリ側が認識してくれてない)
という2点です。何かヒントになるものありませんかね?
59名無しさん@お腹いっぱい。:2008/02/06(水) 18:01:25 ID:pvAifRzL0
IME の On/Off の切り替えじゃなくて
IME を Off にすることはできるでしょうか? (On/Off に関係なく)
60名無しさん@お腹いっぱい。:2008/02/06(水) 18:10:00 ID:d8898FGG0
onだったらoff,return
offだったらreturn
61名無しさん@お腹いっぱい。:2008/02/06(水) 19:27:15 ID:pvAifRzL0
???
On/Off 関係なく IME を Off にしたいんですけど。。。
62名無しさん@お腹いっぱい。:2008/02/06(水) 19:37:51 ID:Sl+cm/Zu0
>>59
ほいよ、 これで IME_SET(0) でおk

IME_SET(setSts, WinTitle="")
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)

;Message : WM_IME_CONTROL wParam:IMC_SETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x006,setSts,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
63名無しさん@お腹いっぱい。:2008/02/06(水) 19:38:04 ID:tpln78Ks0
例えば無変換なら
vk1Dsc07B::IME_OFF("A")
64名無しさん@お腹いっぱい。:2008/02/06(水) 19:42:14 ID:EgdTkP180
なんか忘れてない?
65名無しさん@お腹いっぱい。:2008/02/06(水) 22:01:48 ID:AYbDX1cI0
質問です。
Edit コントロールに入力した文字列を utf-8 として取得したいのです。
クリップボード経由 Transform,,Unicode で出来そうなのですが、
もっと直接的な方法はないでしょうか。
66名無しさん@お腹いっぱい。:2008/02/06(水) 22:48:54 ID:EdJE6v3t0
ControlGetは?
67名無しさん@お腹いっぱい。:2008/02/07(木) 18:37:55 ID:eh09GcLw0
>>62
ありがとうございます。最高です!

回数を指定してキーを送る時に、IME がオンの時に困っていました。
1000 文字とか送るので (マクロの止め方がわからないし。。)
6865:2008/02/07(木) 21:31:30 ID:Zlfk3GsS0
>>66
レスありがとうございました。
なんとか自己解決できそうです。
こんな感じでいいのでしょうか。

EM_GETLINE := 196
buf_size := 100
VarSetCapacity(buf, buf_size)
DllCall("RtlFillMemory", "Uint", &buf, "Uint", 1, "BYTE", buf_size &0xFF)
DllCall("RtlFillMemory", "Uint", &buf + 1, "Uint", 1, "BYTE", (buf_size >> 8) & 0xFF)
DllCall("RtlFillMemory", "Uint", &buf + 2, "Uint", 1, "BYTE", (buf_size >> 16) & 0xFF)
DllCall("RtlFillMemory", "Uint", &buf + 3, "Uint", 1, "BYTE", (buf_size >> 24) & 0xFF)
DllCall("RtlFillMemory", "Uint", &buf + 4, "Uint", 4, "BYTE", 0)
c := DllCall("SendMessageW", "Uint", IdEdit, "Uint", EM_GETLINE, "int", 0, "Uint", &buf)
DllCall("RtlFillMemory", "Uint", &buf + 2*c, "Uint", 2, "BYTE", 0)
; UNICODEを utf-8 に変換
69名無しさん@お腹いっぱい。:2008/02/08(金) 12:45:20 ID:4jp9yaxv0
なまず氏の ダメ文字対策ライブラリ(mbstring.ahk)を見てるんだけど
>MBS_StringTrimLeft(ByRef outputVar, ByRef inputVar, count)

inputVar も ByRef型なのは何でなんだろ?
試しに inputVar を ByVal型にして見ても同じ動作はするみたいだけど (WinXP sp2 Ahk ver.1.0.47.05)
敢えてByrefにしているのは何か訳があるのだろうか?

inputVar と outputVar 同じバッファを指定するとまずいのかな。
AHKオリジナルは StringTrimLeft, buf, buf, 1 としても問題ないことになってるので
同様の使いかたをしたいのだが。
軽くテストした感じでは希望通りの結果が得られたけど、不定動作になることもあり得る?
70名無しさん@お腹いっぱい。:2008/02/08(金) 12:52:10 ID:2F8NJJop0
なまずってのはアフィ厨じゃないんだな。珍しく
71名無しさん@お腹いっぱい。:2008/02/08(金) 13:40:56 ID:DDRTnBHp0
流行らせるさんのMouseGesture2の
MouseGesture.iniでDGInterval=0が初期値なのはなぜだろう
X1ダブクリが効かなくて悩んだのでメモ
他で不具合が出るのだろうか
72名無しさん@お腹いっぱい。:2008/02/08(金) 14:46:43 ID:DDRTnBHp0
あとフォーカスを持ってないコントロールの上での
ホイールUPのみ、ホイールDOWNのみで起動したいアクションがうまくいかない
フォーカスを持っているコントロールに送られてしまう
73名無しさん@お腹いっぱい。:2008/02/08(金) 14:54:50 ID:DDRTnBHp0
あああああorz
ごめんなさいごめんなさいごめんなさい
>>71 readmeに書いてあったああ
>>72 アクティブにしてからsendでできたあああ
ごめんなさいごめんなさいごめんなさいorz
74名無しさん@お腹いっぱい。:2008/02/08(金) 16:46:59 ID:osns6GEA0
>>72
つ流行らせるページ
75名無しさん@お腹いっぱい。:2008/02/08(金) 19:26:07 ID:4jp9yaxv0
ahk2exe コマンドライン
/icon を指定しないとエラー吐いて終わるようになってるね。(2007/11/21 ver)
何気に不便だ。
76名無しさん@お腹いっぱい。:2008/02/08(金) 19:40:26 ID:Uv76QAMz0
>75
Version 1.0.47.05 のこと?
ならないよ。正常作動。
77名無しさん@お腹いっぱい。:2008/02/08(金) 20:11:44 ID:4jp9yaxv0
GUI立ち上げて Custum icon の項をクリアしたらいけました。お騒がせしてスマソ

そういえば以前もはまったんだったわ、これ。
Ahk2exeって GUIで指定した過去の.icoのパスをレジストリに記憶していて
コマンドライン時も参照するんだよね。テラマギラワシス
78名無しさん@お腹いっぱい。:2008/02/09(土) 14:06:51 ID:/ZUYXnzs0
>>71
MouseGesture2はMG_Edit.ahkいじって直さないと厳しい。
ジェスチャ指定の方向ボタン押すと別の方向が入力されたり、
条件定義のどれかor全てに一致が反映されなかったりする。

.ahkいじって直すといい。AHKを知るのに役立つからそれが狙いかも。
79名無しさん@お腹いっぱい。:2008/02/09(土) 15:26:25 ID:mPAFufKZ0
ahkで作ったテキストボックスに日本語を入力しようとすると妙にもたつくというか表示されません。
解決法はありますか?
80名無しさん@お腹いっぱい。:2008/02/09(土) 15:41:10 ID:WRA8epLk0
未解決だね

AutoItのGUIは日本語徹っぽいな
しかし今から覚えるのまんどー
81名無しさん@お腹いっぱい。:2008/02/10(日) 18:32:17 ID:urNrftPm0
>>80
ありがとうございました。別の方法を探して見ます。
82名無しさん@お腹いっぱい。:2008/02/11(月) 21:11:16 ID:PEDtGQkM0
5ボタンマウス買ったので早速いろいろやってみようと思ったら
Xbutton1:: MsgBox, Xbutton1 Pressed
Xbutton2:: MsgBox, Xbutton2 Pressed
が全く無視されちゃうんですがJoy?同様イベントとしては発生しないんですか?
83名無しさん@お腹いっぱい。:2008/02/11(月) 21:20:58 ID:D69x2CQo0
logitecのマウスだとsetpointの設定によっては
サイドボタンはXButton1とかじゃなくなってるよ。
設定かえればいける。
MSのマウスは知らない。
84名無しさん@お腹いっぱい。:2008/02/11(月) 22:33:02 ID:PEDtGQkM0
なるほど、意味はわかったけどIntelliPointの設定とAHKが連携してくれない。
Browser_BackやNumpadDivなんかに割り当ててみても反応しない。

画面を4分割してサイドボタンクリックしたときのマウスカーソルの位置で
仮想デスクトップを切り替えようと目論んでいたんだけど・・・

ともかくありがとうございます。
85名無しさん@お腹いっぱい。:2008/02/12(火) 02:33:53 ID:UVg/XF8b0
ahkのトレイアイコンをダブルクリック、ctrl+k でキーヒストリ見れるよ。
86名無しさん@お腹いっぱい。:2008/02/12(火) 20:29:17 ID:OVFZxKUz0
RegExReplaceで改行の「_」にしたいのですが、
str := RegExReplace(str, "`r`n|`n|$|\z|\Z", "_") とやっても目的どおりになりません。

元データ
aaa
bbb
ccc

理想
aaa_bbb_ccc

実際
aaa
bbb
ccc_
87名無しさん@お腹いっぱい。:2008/02/12(火) 22:44:37 ID:uKCFPiBm0
>>75
これかな?
AVG - all ahk script infected
http://www.autohotkey.com/forum/topic25333.html
88名無しさん@お腹いっぱい。:2008/02/12(火) 23:02:33 ID:IGJgXqVN0
>>86
Str = aaa`r`nbbb`r`nccc

str := RegExReplace(str, "`r`n|`n|$|\z|\Z", "_")

MsgBOx, %STr%

ExitApp

ばっちりaaa_bbb_cccになったよ
89名無しさん@お腹いっぱい。:2008/02/13(水) 10:04:08 ID:sO97eULm0
>>88
ありがとうございます。

実際の処理は下記になっています。
change := RegExReplace(clipboard, MyText1, MyText2)

MyText1、MyText2はGuiのEditで、「`r`n|`n|$|\z|\Z」を入力しました。
置換対象は改行が入っているクリップボードです。

Guiから「`r`n|`n|$|\z|\Z」の入力で、「`r`n」が正しく判断されないのでしょうか?
90名無しさん@お腹いっぱい。:2008/02/13(水) 12:04:52 ID:1HOMoDij0
再現した。

GUIからSUBMITされた`r`nは既にエスケープされてる

StringReplace, MyText1, MyText1, ``r, `r, 1
StringReplace, MyText1, MyText1, ``n, `n, 1

これ入れたら上手くいった

もし正規表現によるGUI置換スクリプトなら
素直に「\r\n」を利用すればいい気もする
91名無しさん@お腹いっぱい。:2008/02/17(日) 16:36:12 ID:7mRUuCKX0
なにか人として足を踏み入れてはならない変態領域に突入しつつあるような悪寒・・・
; 無変換キーとのコンビネーション

; 半角/全角 vkF3sc029/vkF4sc029 (IMEのON/OFFで発生するイベントが違うが、Sendコマンドで送信する場合はどちらでも同じ)
; 変換 vk1Csc079
; 無変換 vk1Dsc07B
; ひらがなカタカナ vkF2sc070

; IME for VJE
vk1Dsc07B & vkF2sc070:: Send,{Ctrl Down}{BS}{Ctrl Up} ; +かな 確定取り消し

; カーソル移動
vk1Dsc07B & U:: Send,{Home}
vk1Dsc07B & O:: Send,{End}
vk1Dsc07B & I:: Send,{Up}
vk1Dsc07B & L:: Send,{Right}
vk1Dsc07B & K:: Send,{Down}
vk1Dsc07B & J:: Send,{Left}
vk1Dsc07B & Q:: Send,{PgUp}
vk1Dsc07B & E:: Send,{PgDn}

; 編集
; Cut, Copy, Paste
vk1Dsc07B & A:: Send,{Shift down}{Delete}{Shift up}
vk1Dsc07B & S:: Send,{Ctrl down}{Insert}{Ctrl up}
vk1Dsc07B & D:: Send,{Shift down}{Insert}{Shift up}
vk1Dsc07B & G:: Send,{Del}
vk1Dsc07B & H:: Send,{BS}
vk1Dsc07B & M:: Send,{Enter}
vk1Dsc07B & N:: Send,{End}{Enter}
vk1Dsc07B & `;:: Send,{Enter}
92名無しさん@お腹いっぱい。:2008/02/17(日) 19:46:55 ID:nXi1dMsx0
俺はTypeMatrix風中央配置してみた
TY=Tab、GH=Return、BN=BS
片方BTab、ShiftReturn、Delもいいかもしれん…
93名無しさん@お腹いっぱい。:2008/02/17(日) 22:24:58 ID:z5JlTnrn0
先生教えてください。二つのスクリプトを瞬時に交互に切り替えしたいのです。

例としては、PauseキーでAutoHotkey2を読み込みAutoHotkey1をアンロード、
逆にScrollLockキーでAutoHotkey1を読み込みAutoHotkey2をアンロード、
って事をしたいのですがおせーてください。

つまらない物だけど置いていきます。
ScrollLockでサスペンド、Pauseでサスペンド復帰+リロードです・・・
vk91::Suspend on
pause::Suspend
vk13::Reload
94名無しさん@お腹いっぱい。:2008/02/17(日) 23:21:53 ID:Z8h8m2Kn0
Autohotkey1.ahk

Pause::
{
run, Autohotkey2.ahk
ExitApp
}

Autohotkey2.ahk

ScrollLock::
95名無しさん@お腹いっぱい。:2008/02/18(月) 00:09:02 ID:WTKVYZXY0
Locks系の挙動は二バイト圏OS環境下では不定だぞ。他のキーに割り当てたほうが無難じゃね?

何がやりたいんだか知らんが、わざわざ2つに分けて行き来しなくても
一個のスクリプトでフラグかなんか立ててスイッチングすればいいんじゃね?
96名無しさん@お腹いっぱい。:2008/02/18(月) 12:29:42 ID:tGp4/4e6P
AHKで、特定のアプリケーションが起動しているときにスクリーンセーバーを
抑制する処理がかけるかとおもってやってみたんですが、実行結果をみたりする
ウインドウを最前面にした状態じゃないと、WM_SYSCOMMANDが拾えないようです。
これはそういう仕様なのでしょうか…

OnMessage(0x112, "WM_SYSCOMMAND") ; WM_SYSCOMMAND
return

WM_SYSCOMMAND(wParam, lParam)
{
OutputDebug SYSCOMMAND w:%wParam% l:%lParam%
if ( wParam = 61760 ) { ; SC_SCREENSAVE
OutputDebug SC_SCREENSAVE received
if ( 判定 ) {
OutputDebug screensaver cancelled
return 1 ; screensaver cancelled
}
}
}
97名無しさん@お腹いっぱい。:2008/02/18(月) 15:21:57 ID:tGp4/4e6P
どうやら、SC_SCREENSAVE はアクティブウインドウだけが
受け取れるようです。別の方法を模索します。
失礼しました。
98名無しさん@お腹いっぱい。:2008/02/18(月) 23:25:28 ID:DgQUWzko0
有難う先生、出来ました。やはりLock系の挙動怪しいです、無効化してみます。
一応メモ。

Autohotkey1.ahkは
Pause::
{
run, Autohotkey1.ahk
ExitApp
}
vkF0:: Send, ]
ScrollLock::return

Autohotkey2.ahkは
ScrollLock::
{
run, Autohotkey2.ahk
ExitApp
}
Pause::return
99名無しさん@お腹いっぱい。:2008/02/18(月) 23:43:54 ID:9kfLohoxP
わざわざ2つのahkファイルに分けてる意味がわからん。
hotkeyコマンド使うだけじゃあかんの?
100名無しさん@お腹いっぱい。:2008/02/19(火) 00:01:25 ID:w7qvM9gV0
まあ、追々洗練されていけばええやろ
まずは目的の成就じゃ
101名無しさん@お腹いっぱい。:2008/02/19(火) 14:13:24 ID:bfqFbnlQ0
自分が最近気に入ってるのはこれ。IMEのワンキーオンオフやつなんだけど、
シングルタップでオフ、ダブルタップでオンになるようにしてあるので、
トグルのようにどっちだっけ?ということもないし、オンにするキーとオフにするキーを
2つ用意しなくてもよいので、102キー等、キー数に限りのある人には便利かも。

~SC79 Up::
IME_chk := A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 300
IME_wnd := DllCall("imm32\ImmGetDefaultIMEWnd", UInt, WinActive("A"), UInt)
DetectHiddenWindows, On
SendMessage, 0x283, 0x006, IME_chk,, ahk_id %IME_wnd%
DetectHiddenWindows, Off
Return
102名無しさん@お腹いっぱい。:2008/02/19(火) 16:14:10 ID:eL27GtwT0
特定のアプリにキーを送らないようにするのってどう書けばいいの?
アクティブじゃなくてもキー監視してるようなアプリにALT押しても伝わらないようにする、みたいな
103名無しさん@お腹いっぱい。:2008/02/19(火) 17:04:27 ID:w7qvM9gV0
ALT押した瞬間にそいつのProcess落として
上がったら再起動みたいなことを考えたけど
騒がしすぎるな
104名無しさん@お腹いっぱい。:2008/02/19(火) 19:03:06 ID:Ro3kfoUW0
AutoHotKeyの起動ができなくなりました。

^0::
MsgBox OK!
return

AutoHotkey.iniというファイルに上記コードだけ記述してAutoHotkey.exeを実行すると、

Note: The hotkey +AF4-0:: will not be active because it does not exist in the current keyboard layout.

このようなダイアログが出て起動できません。アドバイス求ム。
105名無しさん@お腹いっぱい。:2008/02/21(木) 14:46:40 ID:Oj5PAiTN0
少し教えてください。
AHKで全てのキー入力を受けつけないようにするには、どうすればいいでしょう?
どこかで見たような気がするのですが、失念してしまいまして。。。
106名無しさん@お腹いっぱい。:2008/02/21(木) 14:57:41 ID:Oj5PAiTN0
すいません、BlockInput,On でした
107名無しさん@お腹いっぱい。:2008/02/21(木) 16:38:07 ID:Iioijznk0
clipboad中にある複数行文字列の各行頭に_をつけたいのですが、
RegExReplace(clipboard, "(^|\A)", "$1_")ってやってもうまくいきません。
「$」でも各行の先頭として扱われるはずなんですが・・・
108名無しさん@お腹いっぱい。:2008/02/21(木) 17:09:11 ID:VNWGrxeP0
RegExReplace(clipboard, "\n", "$1_")

根本的解決かは分かりかねます
109名無しさん@お腹いっぱい。:2008/02/21(木) 18:13:01 ID:j1dzQgRf0
>>107
RegExReplace(Clipboard, "m)^", "_")
110名無しさん@お腹いっぱい。:2008/02/21(木) 18:13:26 ID:Kx0P4/xT0
RegExReplace(Clipboard, "(^|\n)([^$])", "$1_$2")
111名無しさん@お腹いっぱい。:2008/02/21(木) 18:17:26 ID:Kx0P4/xT0
げ、リロードしてなかった。なにそれm)なんてあったのか
AHKのおぷすおんかorz
112名無しさん@お腹いっぱい。:2008/02/21(木) 18:50:35 ID:XbxI3LX6P
正規表現で""の間の文字を取得したいのですがどうすればいいでしょうか?
113名無しさん@お腹いっぱい。:2008/02/21(木) 19:08:08 ID:XbxI3LX6P
これだとよく分からないな

RegExReplaceでhtmlファイルから""で挟んであるファイルパスを取得したいのですが
"をエスケープする方法が分かりません、教えてください
114名無しさん@お腹いっぱい。:2008/02/21(木) 19:35:59 ID:VNWGrxeP0
115名無しさん@お腹いっぱい。:2008/02/21(木) 21:37:15 ID:XbxI3LX6P
>>114
すみませんでした、まさか上にあったとは・・・
116名無しさん@お腹いっぱい。:2008/02/23(土) 02:50:41 ID:I9fxWkUy0
集中して作業してるときに裏で定期的に2chブラウザを更新させたいんですけど
アクティブの時はちゃんと動作するのに非アクティブのときは動作してくれない
#Persistent
SetTimer,OnTimer,180000
return
OnTimer:
DetectHiddenWindows,On
ControlSend,,{F5},jane
return
こう記述して動かしたんですが打開ヒントください
117名無しさん@お腹いっぱい。:2008/02/23(土) 09:33:35 ID:aMzIEKL80
DetectHiddenTextをつかったらどうだろうか
118名無しさん@お腹いっぱい。:2008/02/23(土) 12:49:34 ID:BM2S2vTo0
ControlSendはあんまり確実じゃないし、PostMessageで直接送ったほうがいいかも
119名無しさん@お腹いっぱい。:2008/02/23(土) 17:40:17 ID:I9fxWkUy0
#Persistent
SetTimer,OnTimer,180000
return
OnTimer:
PostMessage,0x0100,0x74,,,jane
return
としてみたけど>>116と同じorz
IfWinNotActiveでWinActivate噛ますと動くからキーは送られてるはずだけど
これだとバックグラウンドじゃなくなって作業に集中できない
Sleipnirで試したら非アクティブでも動作したから
Janeがめんどくさいアプリなんだろうか
120名無しさん@お腹いっぱい。:2008/02/23(土) 17:54:35 ID:BM2S2vTo0
controlのwhndを指定してないからじゃないの?
121名無しさん@お腹いっぱい。:2008/02/23(土) 18:18:49 ID:iAdFn35I0
俺も以前それやろうとしたけど、非アクティブのままではどうしても無理だったよ
122名無しさん@お腹いっぱい。:2008/02/23(土) 18:41:25 ID:I9fxWkUy0
そっか
janeというかdelphiと相性悪いんかな
ありがとうこれは諦めるしかなさそうだな
123名無しさん@お腹いっぱい。:2008/02/23(土) 18:55:22 ID:2+9m9zE60
0x0100が間違いなだけ
124名無しさん@お腹いっぱい。:2008/02/23(土) 20:27:32 ID:I9fxWkUy0
0x0290にしてみたけどダメだった
これ以上は昨日今日触り始めたにわかには見当がつかない
125名無しさん@お腹いっぱい。:2008/02/23(土) 21:17:01 ID:gYw1NOEI0
もれは「U」でスレ更新にしてんだけど

ControlSend, THogeTextView1, u, ahk_class TMainWnd

これで出来たような気がするよ
126名無しさん@お腹いっぱい。:2008/02/23(土) 21:18:14 ID:gYw1NOEI0
と思ったら最小化してるとダメだった
127名無しさん@お腹いっぱい。:2008/02/23(土) 22:34:41 ID:UVUXjl/U0
SmartGUI Createrなんてこんなのあったんだな。。。
これでGUIの簡単なアプリケーションが簡単に作成できると思う?
128名無しさん@お腹いっぱい。:2008/02/23(土) 22:57:37 ID:UVUXjl/U0
http://www.flib.jp/D800/book854.html?backurl=/news/netrun_prize.html
AutoHotKeyアンオフィシャルガイド

これ読んでみたいと思うのですが パソコンで読むとかなり字が小さく、スクリーンショットとか
見にくいので、購入して本の形で紙媒体で読みたいと思うのですが
これはどうすれば購入できますか?Amazonにもありませんでした。
どこで買えるか、価格等教えて頂けないでしょうか?
129名無しさん@お腹いっぱい。:2008/02/24(日) 01:42:11 ID:6JA246NX0
紙媒体で売られていないかもしれない、という可能性は頭にないの?
130名無しさん@お腹いっぱい。:2008/02/24(日) 01:42:19 ID:2nfJaqtf0
AutoHotKeyのキーワードの強調表示や、自動インデント機能のついたフリーのテキストエディタ
はありませんか?EdVixと言うのを流行らせるページの作者は使用されていらっしゃるようですが
あれはAutoHotKey用のキーワードリストがあらかじめ登録されてないので、1個ずつ登録
しないといけないと思うので、大変そうだから あらかじめAutoHotKeyの文法やキーワードを
内包してあるようなエディタがあれば非常に助かるのですが、皆さんはどのエディタを使って
コードを書いていますか?もし無ければTerapadで頑張るしかないかなぁと思っているのですが・・・。
131名無しさん@お腹いっぱい。:2008/02/24(日) 01:56:24 ID:6jheKtSz0
>>130
「"インストールディレクトリ"\Extras\Editors」以下を参照
それと秀丸
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1092315194/72-73
132名無しさん@お腹いっぱい。:2008/02/24(日) 02:25:48 ID:2nfJaqtf0
>>131
レスありがとうございます。
\Extras\Editorsの中身のフォルダ名はそのままテキストエディタ名になってるように
見えますが「vimとかLinuxにあるテキストエディタだし・・・」、普通はココにあるテキストエディタ
でしか使えないんですかね?
それを
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1092315194/72-73
で秀丸でも使えるようにAutoHotKeyでスクリプトを作成されてらっしゃるんですよねぇ?
しかし秀丸はシェアウェアで、5000円弱と結構高い・・・。それと私は>>130

>AutoHotKeyのキーワードの強調表示や、自動インデント機能のついたフリーのテキストエディタ
>はありませんか?

と書かせて頂いた様に、フリーのテキストエディタを使いたいのですが、無理でしょうか?
133名無しさん@お腹いっぱい。:2008/02/24(日) 02:56:49 ID:yh7rF/YE0
>>125
ControlSendrawでうまくいったようないかなかったような
134名無しさん@お腹いっぱい。:2008/02/24(日) 03:22:39 ID:JnW9YY6g0
>132
vim は windows でも使えるし。
というか AutoHotKey 自体が windows 用のソフトなんだから
windows で使えないエディタの Syntax ファイルなんて同梱するはずないだろ。
あと言われたところちゃんと見てねーだろ。
Extras/Editors/Syntax
135名無しさん@お腹いっぱい。:2008/02/24(日) 06:22:30 ID:T2DQ4K+Y0
AHKでスクリーンセーバーの終了を監視したいのですが、どのようにしたらよいでしょう?
スクリーンセーバーのクラス名を調べる方法が分からず、行き詰まっています。
136名無しさん@お腹いっぱい。:2008/02/24(日) 10:07:56 ID:2nfJaqtf0
>>134
あ、VimってWindowsでも使えるんですか!?なるほど。
それから、Syntaxの中は後で見てみます、今からでかけるので・・・。

>>135
スクリーンセーバー起動中にPrintScreenキーでキャプチャ出来ない?
そのキャプチャした画像に対してチェックしてみたらクラス名分からない?
137名無しさん@お腹いっぱい。:2008/02/24(日) 11:23:16 ID:39WYzSwe0
これは久々の大物だぞ
138名無しさん@お腹いっぱい。:2008/02/24(日) 12:10:40 ID:o6C/sd5F0
ワロタ
139名無しさん@お腹いっぱい。:2008/02/24(日) 12:34:52 ID:o6C/sd5F0
>>135
アクティブウインドウのクラスとかを記録し続けるスクリプト書けばいいんじゃない
140135:2008/02/24(日) 13:17:57 ID:ApIFf8DK0
>>136
スクリーンのキャプチャはできるのですが、それを利用してクラス名を調べる方法がわかりませんでした。
>>139
アドバイスとても参考になりました。なのですが、以下のスクリプトではタイトル、クラスともブランクで、
idは0x0となってしまい、やはり同定できませんでした。

#Persistent
DetectHiddenWindows, On
SetTimer, CheckClass, 1000
Return

CheckClass:
WinGetActiveTitle, title
WinGetClass, class, A
id := WinExist("A")
FileAppend, %title% %class% %id%`n, list.txt
Return
141名無しさん@お腹いっぱい。:2008/02/24(日) 13:38:54 ID:o6C/sd5F0
うちで>>140動かしていくつか見てみたら
3D テキスト D3DSaverWndClass 0x2e0628
3D パイプ D3DSaverWndClass 0x6504be
Screen Saver WindowsScreenSaverClass 0x1e067e
ブランク スクリーン セーバー ブランク スクリーン セーバー 0x6f04be
とか記録できたよ
142名無しさん@お腹いっぱい。:2008/02/24(日) 14:14:01 ID:KTL9WkTR0
>>141
情報ありがとうございます。
そうすると、当方の環境の問題のようですね。
もうすこし調べてみます。
ありがとうございました。
143名無しさん@お腹いっぱい。:2008/02/24(日) 15:00:24 ID:VNi/LdKj0
>>132
秀丸用強調定義の変換スクリプト作った者だが、
マジレスするとExtras/Editors/Syntax にシンタックスリストのデータがあるので、
それを加工して自分の好きなエディタで使えるように強調表示用ファイルを作ればよい。

今からエディタ選ぶならEmEditorFreeが面倒なくていいんじゃね?
Extras/Editors に EmEditor用定義入ってるし。Free版で使えるのかは知らないが。
144名無しさん@お腹いっぱい。:2008/02/24(日) 17:12:00 ID:2nfJaqtf0
>>143
お疲れ様です!
Syntaxの中に確かに色々ありますねぇ・・・。なるほど・・・っていってもどうやって強調表示用
のファイルを作るのか私には分かりませんけど、例えばこれを加工すればTerapadでも
強調表示出来たりするんですか?

EmEditorFreeをとりあえず試してみます。
AutoHotKey・・・もっと普及してれば色々なエディタがデフォルトで対応してくれたりするのかな?
例えばVBとかHTMLとかは大体のエディタで対応してくれてるじゃないですか?
DOSのBatとか・・・。
145名無しさん@お腹いっぱい。:2008/02/24(日) 17:57:55 ID:MLcE6mEcP
んなグダグダ言ってるくらいなら自分で作って配布すりゃあいいじゃん
146名無しさん@お腹いっぱい。:2008/02/24(日) 17:59:16 ID:2nfJaqtf0
良いの見つけました。Notepad++って言うエディタです。
これならフリーで、しかも
AutoHotkey\Extras\Editors\Notepad++\Run this to install syntax file for Notepad++.ahk
ファイルを実行すれば簡単にインストールまでしてくれて、すぐ使えてイイ!
エディタが無くて困っている人はとりあえずこれがいいんでは?
ただ入力補完まではしてくれないみたいなのが、ちょっと残念・・・。
IfとかLoopとかで改行したら自動的に1個インデントしてくれて、 } で自動的に1個インデントを
削除するとか、そういった機能は無いみたい。惜しいですねぇ・・・。
147名無しさん@お腹いっぱい。:2008/02/24(日) 18:11:43 ID:MLcE6mEcP
見つけましたってw
148名無しさん@お腹いっぱい。:2008/02/24(日) 18:23:28 ID:2vAXBKF20
>>146
プロボクサー相手に『このバンデージの巻き方、ステキでしょ?』ってはしゃいでる様で観ている方がつらい。

釣りじゃないなら(釣りでも)カンベンしてくれ
149名無しさん@お腹いっぱい。:2008/02/24(日) 19:09:37 ID:/p5mKAAI0
Notepad++いいね、ちょっと使ってみよう
>>146 d
150名無しさん@お腹いっぱい。:2008/02/24(日) 19:24:38 ID:plIb52B50
なんでjaneは非アクティブだと動かないんだ
151名無しさん@お腹いっぱい。:2008/02/24(日) 20:14:37 ID:2nfJaqtf0
>>147
そうね、ExtrasのEditorの中にあるもんね。そこから調べて言ったのは言うまでもありません。

>>148
それは「ココの住人は皆プロ(少なくても私よりは)なんだから、そのぐらいとっくに知ってるし、
代替のもっといいエディタを知っている」とかそういう意味ですか?
別に釣りじゃないですよ。 >>149とかいいねって言ってくれてるし、こういう情報を書き込む事で
有益だと感じる人もいるのでは?貴方にとっては有益でなくても。
152名無しさん@お腹いっぱい。:2008/02/24(日) 20:36:00 ID:uHTMnN4t0
meadow(Emacs)やxyzzyに、akh-modeをインスコするのがいいんでない?
キーワード強調だけじゃなくて、インデントや補完も効いてるよ
ちょっと挙動が怪しいときもあるけどね

つうか、本体に設定が同梱されてるんだから、
それを見つけたとかあんまり大げさに言わないでくれ
ってことでないの?
質問する前に説明書くらい読めよって
153名無しさん@お腹いっぱい。:2008/02/24(日) 20:40:50 ID:uHTMnN4t0
×akh-mode
〇ahk-mode
で、Emacsのは本体同梱のよりも、
ググったら出てくるwebのが新しかったんで、そっちがいいかも
154名無しさん@お腹いっぱい。:2008/02/24(日) 20:57:20 ID:Cwx7cYds0
>>146=149
155名無しさん@お腹いっぱい。:2008/02/24(日) 21:37:27 ID:VNi/LdKj0
まぁ見ればわかるようになっているものを、さも「自分が発見しました!」てな感じで書込んだら
回りは萎えるわな。Notepad++ってそれなりに有名なエディタだし。

エディタ側で用意するのはメジャーである程度枯れた言語でしょ
AHKは開発途上で関数やシンタックスも逐次追加されてってるから追っかけて対応するのは大変
自分もそう思ったから 強調ファイルの配布ではなく、変換スクリプトにしたんだけど。


>>153
>ahk-mode
おお、いつのまにそんなものが。xyzzyでがんばってる人もいるんだな。
何となくあっち界隈の人はahkみたいな言語体形はpgrしてるんだろうなって偏見があった
156名無しさん@お腹いっぱい。:2008/02/24(日) 23:18:53 ID:eDmFu+2K0
unix界隈で有名なprocmailもpgrしてあげて。
157名無しさん@お腹いっぱい。:2008/02/25(月) 00:03:45 ID:39WYzSwe0
AHKには#NoTrayIconという素晴らしいコマンドがあるのを発見しちゃいました!
なんと、これを使うとタスクトレイにあるアイコンが表示されなくなるのです(びっくり!)
まだ知らない人も多いと思うので、皆さんも試してみてはいかが?
私はこれで浮いた時間をコスメに使って彼のハートをげっちゅです!
158名無しさん@お腹いっぱい。:2008/02/25(月) 00:43:00 ID:w28rGXGJ0
あっそ
159名無しさん@お腹いっぱい。:2008/02/25(月) 00:59:30 ID:CkSp6l1c0
>>158
わーい、あっさり釣れちゃったw
160名無しさん@お腹いっぱい。:2008/02/25(月) 01:24:59 ID:CR8nTVZC0
面白いと思ったんだろうな…
161名無しさん@お腹いっぱい。:2008/02/25(月) 01:37:56 ID:cH268g130
すぐ弄れなくなって逆に不便
162名無しさん@お腹いっぱい。:2008/02/25(月) 02:12:01 ID:u9rJ9FnG0
わがままな私を許したまえ・・・・

Notepad++もダメですた。。。
立ち上げるたびにいちいちAutoHotKeyモードにマウスでセットしないといけないし、
なんか使いにくい・・ス・・・。
Terapadでキーワード強調や自動インデント利いてくれれば最高なんだけど
皆さんがAHKスクリプトを書くのに愛用しているエディタとか、紹介して下さったりは・・・しないですよねぇ・・・?
163名無しさん@お腹いっぱい。:2008/02/25(月) 02:37:33 ID:c6xAHJsD0
xyzzyでahk-mode使って書いてるよ
>>152でも書いたけど、強調だけじゃなくてインデントや補完もしてくれるよ
けど、インデントがおかしくなったりもするんで、
試してないけどmeadow(Emacs)もどうぞ
xyzzyに移植した人がベースにしたのよりバージョンが進んでるから、
もしかしたら解決してるかも

もし導入するなら、wikiがあるから読んでみて
164名無しさん@お腹いっぱい。:2008/02/25(月) 03:28:17 ID:m5sVBzv/0
notepad++使ったことないけど
普通ファイル拡張子に対応してモード切りかえてくれるみたいな
機能あるんじゃないの?
そのくらい自力で設定できないとvimもemacsも使えないと思うけど。
165名無しさん@お腹いっぱい。:2008/02/25(月) 10:56:15 ID:YFbRMEPB0
>>162
その嫌味ったらしい文章いい加減にせーよ
もし自覚無しに今までのような文を書いていたとするなら正直、性格に大きな問題があると思う
わざとやってるならもうシラネ
166名無しさん@お腹いっぱい。:2008/02/25(月) 11:10:53 ID:6u3azxFT0
>>162
自分で道を切り開く気概がないのなら、おとなしく金を出して秀丸かEmのシェア版をつかっとけ。
気概があるのなら>>131のスクリプトをTeraPad用に書き換えてうぷしたら結構な人数から感謝されると思うが。
167名無しさん@お腹いっぱい。:2008/02/25(月) 11:27:24 ID:Ed9FXoJZ0
ひどいのが湧いてるんだな
168名無しさん@お腹いっぱい。:2008/02/25(月) 12:36:04 ID:cV8w8sra0
だから揶揄したつもりだったのに
169名無しさん@お腹いっぱい。:2008/02/25(月) 14:30:41 ID:3LV0fXQU0
エディタの話題自体は悪くないと思うし、他の人の参考になるかもしれんから一応レスするが
いいかげんクレクレの姿勢はやめてんか('A`)

今見てみたけど、サクラや寺の.kwdファイルって1行1ワードの単純表記じゃん。
これだったら Extras/Editors/Syntax/*.txt をほとんど無加工でkwd転用できんじゃねーの?
(寺には任意文字列の強調指定機能自体は存在しない
が、プリセット済言語のキーワード編集は可能なので他の言語枠潰せばOK)

入力補完の形式も同じ、サクラや秀丸ならそのままシンタックスファイル突っ込めば補完してくれる。
サクラや寺なら補完タンも使える。
インデントは、C言語風のインデントとか適当に指定しておけばそれっぽい動作になる。(寺でのやり方は知らん)

以上、頼むから人に聞く前にちっとは調べてくれよ。
170名無しさん@お腹いっぱい。:2008/02/25(月) 15:50:36 ID:I5MAoWVB0
しかしほんとに AutoHotKey 使えてるんだろうか、この人。
171名無しさん@お腹いっぱい。:2008/02/25(月) 16:13:03 ID:Ed9FXoJZ0
>>170がいいこと言った
172名無しさん@お腹いっぱい。:2008/02/25(月) 18:01:24 ID:hdl/wsYC0
Janeをバックグラウンドで操作できないって人
AIRAってソフト使うといいよ.NET製だけど
Jane専用のAIRA Jってのもある
173名無しさん@お腹いっぱい。:2008/02/26(火) 07:16:30 ID:mku3zxtt0
質問です。
Menu,m,show
でメニュー出ている間、そのスクリプトは完全に停止してるんですよね。
それが嫌なら別スクリプトでメニュー出せってことですよね。
174名無しさん@お腹いっぱい。:2008/02/28(木) 02:18:21 ID:YvTJFwHG0
詳しい方、教えてください。
ジョイスティックの接続確認をしたく、以下のようなスクリプトを書いてみました。

1:: Msgbox, % GetKeyState("JoyName")

しかしこのスクリプトではジョイスティック抜去後もジョイスティック名が返ってしまいます。
接続前、あるいはスクリプト再起動後は(期待通りに)ブランクとなります。
しかし最終的には常駐スクリプト内のタイマーで接続確認をしたいので
できればスクリプトの再起動は行いたくないのですが,
他によい方法はないものでしょうか。
175名無しさん@お腹いっぱい。:2008/02/28(木) 14:43:16 ID:PhP4W87s0
「TPanel」というコントロール上のテキストを取得したいのですが、

ControlGetText,var,TPanel,A

とやっても、ErrorLevelは0で成功していますが、テキストは取得できませんでした。
何か他に方法はないでしょうか?
176名無しさん@お腹いっぱい。:2008/02/28(木) 14:43:26 ID:7hkAKIl30
根本解決じゃないけど、ステート取得部分だけを別スクリプトにするとか。
177名無しさん@お腹いっぱい。:2008/02/28(木) 17:40:04 ID:EaHOYdX80
>>174
#persistent
settimer, timer
maxNumDev:=DllCall("winmm\joyGetNumDevs") ;サポートするジョイスティックのデバイス数

timer:
AllJoyNames=
loop, %maxNumDev%{
JoyName=%a_index%JoyName
AllJoyNames:=AllJoyNames . a_index . GetKeyState(JoyName) . "`n"
DllCall("winmm\joyReleaseCapture", UINT, a_index-1) ;キャプチャをリリースするジョイスティックのIDを指定
}
tooltip, %AllJoyNames%
return

接続されるジョイスティックの数わかってたらmaxNumDevは決めうちした方が良いかも
178名無しさん@お腹いっぱい。:2008/02/28(木) 18:40:48 ID:EaHOYdX80
>>174
キャプチャリリースしたくない場合は
#persistent
VarSetCapacity(ji, 16, 0)
joyNum=1 ;何個目のジョイスティックをチェックするか指定
settimer, timer
return

timer:
mmresult := DllCall("winmm\joyGetPos", UInt, joyNum-1, str, ji) ;ここで指定するジョイスティックのIDは0から始まるので注意
KeyName=%joyNum%JoyName
JoyName:=GetKeyState(KeyName)
JoyName:=(!mmresult) ? JoyName:"" ;mmresultが0の場合No Errorなので、それで判断する。
tooltip, mmresult=%mmresult% JoyName=%JoyName%
return

見たいに自分で名前管理するしかないかも。
179名無しさん@お腹いっぱい。:2008/02/28(木) 18:44:19 ID:EaHOYdX80
補足:>>177-178は2kでしかテストしてないので他だとどうなるかわからん。
180名無しさん@お腹いっぱい。:2008/02/29(金) 12:38:25 ID:9/5fEks90
タスクトレイのAHKのアイコンからバルーンヘルプ出してくれる機能って無いですか?
181名無しさん@お腹いっぱい。:2008/02/29(金) 14:19:22 ID:mWVpkLJp0
xyzzyというエディタで、右クリック+下方向ドラッグのマウスジェスチャーをしたとき、
Ctrl+w を送信して当該タブを閉じたいのですが、どうすればいいでしょうか?
182名無しさん@お腹いっぱい。:2008/02/29(金) 14:49:23 ID:amtFt0EP0
RButtonでMouseGetPosとって
放されたときとの差分が閾値を越えたらSend
183名無しさん@お腹いっぱい。:2008/02/29(金) 16:48:46 ID:mWVpkLJp0
>>182
ありがとうございます。
頑張って作ってみたのですが、うまく動作しません><

~RButton::
WinGetTitle, Title, A
StringGetPos, pos, Title, xyzzy
if(pos = 0) {
MouseGetPos, x1, y1
Loop {
GetKeyState, stat, RButton
if(stat = "U") {
MouseGetPos, x2, y2
dy := y2 - y1
if dy > 20
send, ^w
Break
}
}
}
return
184名無しさん@お腹いっぱい。:2008/02/29(金) 20:12:38 ID:u6+juc6r0
馬鹿みたいな質問で悪いんだけど、
a:: send,F5
ってしたい場合、どうすればファンクションキーのF5にできるの?
185名無しさん@お腹いっぱい。:2008/02/29(金) 20:16:08 ID:CbNqfYyN0
>>184
a:: send,{F5}
186名無しさん@お腹いっぱい。:2008/03/01(土) 00:26:25 ID:EIt1A+310
JANE擬似バックグラウンド操作悪足掻き

#Persistent
#WinActivateForce
SetTimer,OnTimer,90000
return
OnTimer:
IfWinActive,Jane
{
BlockInput,On
ControlSend,,{F5}
BlockInput,Off
}
Else
{
BlockInput,On
WinGet,ID,,A
WinSet,AlwaysOnTop,ON,ahk_id %ID%
WinActivate,Jane
ControlSend,,{F5},Jane
WinActivate,ahk_id %ID%
WinSet,AlwaysOnTop,OFF,ahk_id %ID%
BlockInput,Off
}
return

自分なりに頑張ってみたけどいい方法あったら情報求む!
187名無しさん@お腹いっぱい。:2008/03/01(土) 00:34:59 ID:ZNinU2520
>>185
ありがとうございます
188名無しさん@お腹いっぱい。:2008/03/01(土) 07:53:26 ID:YXKCq/m60
janeバックグラウンドでもControlSendRawで動いたけどなあ
俺だけか
189名無しさん@お腹いっぱい。:2008/03/01(土) 14:14:15 ID:EIt1A+310
動きません
190名無しさん@お腹いっぱい。:2008/03/01(土) 15:18:39 ID:+yMSyrKJ0
JaneDoe Viewでしか確認してないが、PostMessageでちゃんと操作できる。
タスクトレイに入ってるいる場合は、DetectHiddenWindows, Onで。
ウィンドウタイトルは適当に変更。

PostMessage, 273, 58, 0, , JaneDoe ; タブを閉じる
PostMessage, 273, 82, 0, , JaneDoe ; スレ新着チェック
PostMessage, 273, 29, 0, , JaneDoe ; スレ一覧更新
PostMessage, 273, 81, 0, , JaneDoe ; 新着までスクロール
PostMessage, 273, 133, 0, , JaneDoe ; 更新チェック
PostMessage, 273, 205, 0, , JaneDoe ; 次のタブ
PostMessage, 273, 206, 0, , JaneDoe ; 前のタブ
191名無しさん@お腹いっぱい。:2008/03/01(土) 15:23:16 ID:+yMSyrKJ0
追記。
メニューは表示しておかないとダメだった。
192名無しさん@お腹いっぱい。:2008/03/01(土) 17:44:24 ID:EIt1A+310
>>190
おお。
これは凄いViewで非アクディブ時に動作した
メニューのコマンドIDの調べ方が見つからなかったから
教えてもらった操作以外できない無能な自分
193名無しさん@お腹いっぱい。:2008/03/01(土) 19:33:31 ID:EIt1A+310
jane styleではこの技使えないっぽいね
コマンドIDがない?
194名無しさん@お腹いっぱい。:2008/03/01(土) 20:03:02 ID:MsKw54Sp0
コマンドIDが違うんだろ。
195名無しさん@お腹いっぱい。:2008/03/01(土) 20:07:41 ID:EIt1A+310
窓コンなど使ったんだけど調べることができなかった
どういうふうに調べたらいいんだい?
196名無しさん@お腹いっぱい。:2008/03/01(土) 20:30:28 ID:4ZLR0WrH0
StyleはViewと違うコンポーネント使ってるから無理だってさ
197名無しさん@お腹いっぱい。:2008/03/01(土) 20:31:51 ID:vZzloCuJ0
でもいい加減Jane以外のブラウザ出てきても良いと思うんだがなぁ
198名無しさん@お腹いっぱい。:2008/03/01(土) 20:47:06 ID:EIt1A+310
>>196
thx。無理なのか残念
199名無しさん@お腹いっぱい。:2008/03/01(土) 21:50:09 ID:ymHLVwiU0
生JANEでもむりぽ
200名無しさん@お腹いっぱい。:2008/03/02(日) 20:11:12 ID:p3zuqVec0
ControlGetText,dat,TMemo1,Jane Doe Style
IfInString,dat,dat落ち
{
ControlSend,,^w,Jane Doe Style
}
ControlSend,,^r,Jane Doe Style
201名無しさん@お腹いっぱい。:2008/03/02(日) 21:16:36 ID:noZ5oKoh0
ある非アクティブなウィンドウを左クリックでアクティブにした瞬間の
カーソル位置を取得したいのですが、何か方法ありませんでしょうか?

#IfWinActive ahk_class xxxx
Lbutton::MouseGetPos,Xpos,Ypos
return

これだと一度アクティブにしてからクリックしないと取れないんですよね…
202名無しさん@お腹いっぱい。:2008/03/02(日) 23:28:34 ID:+5/E1A/w0
~Lbutton::
MouseGetPos,Xpos,Ypos
IfWinActive, ahk_class xxxx
{
msgbox,x=%xpos% y=%ypos%
}
return
203名無しさん@お腹いっぱい。:2008/03/03(月) 17:33:36 ID:RiQhmL4t0
>>202 おお ありがとうございますっ!
204201、203:2008/03/03(月) 18:55:40 ID:RiQhmL4t0
すみません、もうひとつついでに質問させてくださいー
非アクティブなウィンドウを左クリックしてアクティブにした時、
左ボタンを押した瞬間(ボタンを離す前)のウィンドウの相対位置を取れないものでしょうか?
もしくは「ドラッグし始めの座標」とか…

ボタンを押し込んだ場所から多少離れた場所にドラッグしてボタンを離しても、
ボタンを押し込んだ場所をクリックした事にする・・・という感じのスクリプトを組もうと思ってまして、
その際ウィンドウバー部分は除外する、という風にしたいのです。
205名無しさん@お腹いっぱい。:2008/03/03(月) 19:34:27 ID:ar9/AEtf0
いまいち文意が取れない
206名無しさん@お腹いっぱい。:2008/03/03(月) 20:02:02 ID:VWTaDQFw0
~Lbutton up:: でもう一度MouseGetPosして計算するなり、MouseClickでポジション戻してやるなり
すればいいんじゃね?
207名無しさん@お腹いっぱい。:2008/03/03(月) 20:15:43 ID:RiQhmL4t0
>>205
スンマセン

~Lbutton::
MouseGetPos,XposA,YposA
return
#IfWinActive ahk_class xxxx
{
  ~Lbutton up::
    MouseGetPos,XposB,YposB
    if ( Abs(XposA-XposB) <= 100 ) && ( Abs(YposA-YposB) <= 100 )
    {
      MouseClick,Left,XposA,YposA,,0
;      Msgbox 0,,IN A1=%XposA%,%YposA% B1=%XposB%,%YposB%
    }
    else
    {
;      Msgbox 0,,B-OUT A=%XposA%,%YposA% B=%XposB%,%YposB%
    }
  return
}

こんな感じでボタンを押しこんだ場所と離す場所の差分を取って
許容範囲内だったら押し込んだ場所をシングルクリックさせます。
しかしその際、非アクティブのウィンドウ(class xxxx)を左クリックでアクティブ化すると
XposA・YposAで取れる座標がスクリーン左上からの絶対座標になってしまって…
このXposA・YposAをウィンドウ(class xxxx)の相対座標値で取れませんでしょうか?

現在はCoordMode,Mouse,Screenで絶対座標値のみにして処理するようにしてるんですが、
これだとウィンドウ内の特定位置を除外、という風に出来ないのでどうにかならないものかと…
208名無しさん@お腹いっぱい。:2008/03/03(月) 21:08:19 ID:T5eoaUjL0
ちょっとごめんね
ウインドウのペイン分割のスプリッタてあるじゃない
あれをキーボードで自由に動かすってのはAHKでできるのかな?
スプリッタのコントロール指定してメッセージ?送ればいけるもんなのかな
209名無しさん@お腹いっぱい。:2008/03/04(火) 12:57:52 ID:8GxbdjTU0
すいません。
AutoHotkeyを流行らせるページ でまだまだ勉強中ですが、
MiddleClickのSingleClick、DoubleClick、TripleClickで動作を変えたいのですが、
方法がわかりません。
ヒントで良いので何か助言いただけないでしょうか?

ちなみに現状はSingleのみ変更できてる状況で
#IfWinActive ahk_class hoge
{
MButton::F1
}
210名無しさん@お腹いっぱい。:2008/03/04(火) 13:36:43 ID:aEuZxla60
つ 多重クリック関数サンプル
http://d.hatena.ne.jp/eamat/20051004/p2
211209:2008/03/04(火) 14:59:06 ID:8GxbdjTU0
>>210
うわ。そのままですね。
ありがとうございました。
思い通りの動作ができました。
212名無しさん@お腹いっぱい。:2008/03/05(水) 09:24:33 ID:b/T8K1QR0
以下のコマンドで空ディレクトリが削除できるはずなのですが、何故かできません。
FileRemoveDir, ディレクトリ名, 0
別プロセスがひっかかってる可能性を考慮して、ログオンおよび再起動直後にもやってみましたが、
やはりダメでした。いったい何が問題なのか、ご意見下さい。
213名無しさん@お腹いっぱい。:2008/03/05(水) 09:39:20 ID:T67eAJgT0
ControlSendでSendMode Playのように送ることはできないのでしょうか?
214名無しさん@お腹いっぱい。:2008/03/05(水) 10:27:41 ID:plxDEGkd0
>>212
何から実行してる?
ファイラーからならそのファイラーが作業ディルとしてつかんでたり
AHKに作業DIRとして送られてるかもよ
215名無しさん@お腹いっぱい。:2008/03/05(水) 11:03:28 ID:pPxF/FYA0
対象フォルダが日本語でダメ文字で引っかかってるとかってオチじゃないよな?
もしくは制限ユーザーログオンで削除権のないフォルダ消そうとしてるとか
216212:2008/03/05(水) 11:39:38 ID:NmUtjMzI0
"FileRemoveDir, ディレクトリ名, 1"とすると削除できることが分かりました。
どうもディレクトリ内のファイル/サブディレクトリの有無の判断ができていないようです。
なのでそれを明示的に判断できればいいと思うのですが、どうやればいいのか。。。

>>214
消去したいディレクトリは絶対パスで与えています。
また上述のように、無条件削除の場合は実行可能でした。
なのでパス指定や作業ディレクトリの件は問題ないと思うのですが。
>>215
アカウントは管理者権限です。
消去したいディレクトリは英数字のみでスペースは含まれていませんが、ピリオドが入っています。
しかし上述のように無条件削除の場合は実行可能ですので、
AHKはディレクトリとして判断していると思います。
217212:2008/03/05(水) 11:52:07 ID:NmUtjMzI0
>>216
FileRemoveDir, ディレクトリ名, 0
Msgbox, %ErrorLevel%
とすると、エラーレベルは1が返ってくるので、やはり内容物の判断ができていないようです。
218名無しさん@お腹いっぱい。:2008/03/05(水) 13:08:14 ID:UFI/YkYK0
うちではちゃんと動作するけどなぁ
219名無しさん@お腹いっぱい。:2008/03/05(水) 13:35:00 ID:NmUtjMzI0
212です。解決しました。
実はスクリプトの上流で、自分自身をSetWorkingDirしており、それがロックしていました。
複雑なスクリプトではないのですが、ディレクトリ内ファイルのLoopに慣れておらず見落としていました。
大変おさわがせしました。
ありがとうございました。
220名無しさん@お腹いっぱい。:2008/03/05(水) 18:01:56 ID:8AGRNr8B0
> スクリプトの上流で
もうね、あほk(ry
221名無しさん@お腹いっぱい。:2008/03/06(木) 00:46:00 ID:u1Cz17qHO
PostMessageの引数msg、wparam、lparamの値はどう調べて設定すればいいのでしょうか?

このスレのログを見ましたが、さっぱり分かりません。
222名無しさん@お腹いっぱい。:2008/03/06(木) 01:03:44 ID:QqXQZBLy0
ttp://technet.microsoft.com/ja-jp/magazine/cc194395.aspx
なんかMSのサイトに載ってた
223名無しさん@お腹いっぱい。:2008/03/06(木) 01:27:38 ID:Xmj7hVZD0
>>221
流行らせるページのリファレンス見れ、参考になりそうなサイトのリンクもある
224名無しさん@お腹いっぱい。:2008/03/06(木) 01:35:25 ID:xNYWdmgs0
IntelのGraphics Controllerの明るさとかのスライドバーを操作したいんだけど
矢印キーだと1づつしか動かせないしPgDnは移動しすぎだしで10刻みでやりたいんだけど
Loop:10とかやってみると妙にゆっくりしてるし
横の数値をControlGetTextしてポッチの位置を予想してMouseClickDragさせると
キー操作より早いけどなんかしっくりこない
225名無しさん@お腹いっぱい。:2008/03/06(木) 08:54:13 ID:BV4oMbN/0
ahkのexeを元のテキストファイルに戻すにはどうしたらいいですか?
226名無しさん@お腹いっぱい。:2008/03/06(木) 12:04:27 ID:lRZgq2Fj0
>>223
それでもわからないです。

アクティブでないソフトにキー連打を投げようと思っているのですが、
とりあえず、1つ投げようと思い、
PostMessage,0x0100,52,0, ,ok.txt - メモ帳 ;0x0100 = WM_KEYDOWN 52 = Rキー

こう書きましたが、動作しませんでした。

どうすればできるでしょうか?
227名無しさん@お腹いっぱい。:2008/03/06(木) 16:35:44 ID:xNYWdmgs0
>>225
公式にあるますよ
Other DownloadsのとこのScript Decompiler
228名無しさん@お腹いっぱい。:2008/03/06(木) 17:22:40 ID:BV4oMbN/0
>>227
ありがとうございます、そのものずばりがありましたね。
229名無しさん@お腹いっぱい。:2008/03/08(土) 00:04:58 ID:xH0DTZtbO
Send,{a DOWN}
Sleep,2000
Send,{a UP}
こう書いたのですが、aが押されません。
どうすればできるでしょうか?
230名無しさん@お腹いっぱい。:2008/03/08(土) 00:56:43 ID:DtPLQhIDP
Send,a
231名無しさん@お腹いっぱい。:2008/03/08(土) 01:10:49 ID:vkiW+A4s0
マウスカーソル直下のクラスにキーを送るには何を使えば良いんですか?
232名無しさん@お腹いっぱい。:2008/03/08(土) 03:52:22 ID:C49QZ/eM0
まずマウスカーソル直下のクラスを取得して、その取得したクラスに向けてキー入力を送信すれば良いんじゃないでしょうか。
233名無しさん@お腹いっぱい。:2008/03/08(土) 07:37:52 ID:xH0DTZtbO
>>230
あー、いや、押しっぱなしにしたいんです
234名無しさん@お腹いっぱい。:2008/03/08(土) 07:42:01 ID:DtPLQhIDP
何のために?
押しっぱなしにしてもキーリピートは発生しないから一回押下するのと変わらないはずだよね?
235名無しさん@お腹いっぱい。:2008/03/08(土) 08:11:16 ID:xH0DTZtbO
>>234
キーリピート発生するものだと・・・
じゃあ高速でa連打してるようにするしかないか。

ただ単にShift+a-zを楽にしたかったのですが、諦めます。
236名無しさん@お腹いっぱい。:2008/03/08(土) 09:35:30 ID:1dCsOj/k0
やりたいのはキャプスロックなの?
237名無しさん@お腹いっぱい。:2008/03/08(土) 09:46:12 ID:gdlcsZFD0
どなたか>>226をお願いします。
238名無しさん@お腹いっぱい。:2008/03/08(土) 16:32:59 ID:sRcY2mlL0
>>237
メモ帳にRなんか連打して何がしたいんだ
そもそもRなんてショートカットキーあるか
動かないのもしょうがないだろ
テキスト入力したいならコマンドが違う
239名無しさん@お腹いっぱい。:2008/03/08(土) 17:15:19 ID:fACAe+Ks0
>>238
なにがしたいんだって、それは練習作業の「たとえば」の部分だろ。
おまえはツッコミ処が違う。

ただ、>>237みたいに、初回に書き込んだ後、なにも経過を書かず、
アンカーだけで督促するようなゆとりには、アドバイスなんかしたくないが
240名無しさん@お腹いっぱい。:2008/03/08(土) 17:44:40 ID:gdlcsZFD0
>>239
ゆとりみたいな催促ですみません。
書く前まではあまり進展がなかったのですが、
入力するキーを変えたり、キーコードをVK_Rなどにしたり、メモ帳以外のソフトに投げてみたり、
WM_CHARAで投げてみたり、KEYUPを追加してみたり、SendMessageで投げてみたり。

少なくとも上のことはしました。
でも反応がないです。
他に試すものはありますか?
241名無しさん@お腹いっぱい。:2008/03/08(土) 17:50:30 ID:ipRVXXHT0
公式が落ちててDLできないや
242名無しさん@お腹いっぱい。:2008/03/08(土) 18:02:45 ID:2YOSdkCz0
>>240
何がしたいの?具体的にやりたいこと書いたほうがいいよ。
243名無しさん@お腹いっぱい。:2008/03/08(土) 21:39:03 ID:pv+wG3tD0
Oblivionってキーカスタマイズできないの?
不便すぎて死ぬ。
244名無しさん@お腹いっぱい。:2008/03/08(土) 22:15:46 ID:mQS6JGYG0
>>242
>アクティブでないソフトにキー連打を投げようと思っているのですが、
そっくりそのままの意味ですが同じボタンを約1〜5万回押さなければならず、
普通にSendで送ってもいいのですがやってる時間がもったいないので、バックグラウンドで放置して投げようかと思っていた次第です。
245名無しさん@お腹いっぱい。:2008/03/08(土) 22:19:12 ID:fACAe+Ks0
>>244
「具体的に」
246名無しさん@お腹いっぱい。:2008/03/08(土) 22:35:47 ID:TbcOcXMf0
>>116あたりからの流れ見りゃいいんじゃねぇの?
247名無しさん@お腹いっぱい。:2008/03/09(日) 00:15:32 ID:vy5jug8M0
非アクティブウィンドウに Postするサンプルならホイールリダイレクトあたり探せば出てくるんじゃね?
248名無しさん@お腹いっぱい。:2008/03/09(日) 04:30:03 ID:/EsSZJU/0
>>244
キーリピートならループ処理じゃね?
Loop, 50000
Send, a
249名無しさん@お腹いっぱい。:2008/03/09(日) 05:36:33 ID:k1HRQwMn0
何がしたいのなんて関係なくね?
要はできるかできないかだけ
教えてやればいい
250名無しさん@お腹いっぱい。:2008/03/09(日) 10:35:35 ID:xgksTwcV0
>>249
ソフトによってキーメッセージの受け取り方が違ったりすることはザラだし、
質問者が物凄い効率の悪い方法でやろうとしていて、
その効率の悪い方法について聞いてたりすることもあったりするから、
目的をはっきりさせた上で、自分が試したことを書くってのが答えやすい質問なんじゃない?

お望みのことはこれでできるけど応用は勝手にやっておくれよ
PostMessage, 0x100, 0x41, 0, Edit1, ahk_class Notepad
251名無しさん@お腹いっぱい。:2008/03/09(日) 12:54:57 ID:4SvVAdgeO
ゲームを操作しながら他の作業ができるようにスクリプト組めますか?
また、どの関数使えばいけますか?

ControlSendは動いてくれませんでした。
252名無しさん@お腹いっぱい。:2008/03/10(月) 03:41:18 ID:BEWopslV0
あるウィンドウで任意のキーが押されたとき、常に特定のエディットにフォーカスして
押されたとおりのキーを送りたいのですが、どうするのが上手い書き方でしょうか?
今のところ、↓のように全部のキーを書く方法しかわかりませんでした。

#IfWinActive HogeHoge
HogeSendKey(x)
{
ControlFocus, Edit1
Send, %x%
}
*a:: HogeSendKey("{Blind}a")
*b:: HogeSendKey("{Blind}b")
*c:: HogeSendKey("{Blind}c")
*d:: ......
253名無しさん@お腹いっぱい。:2008/03/10(月) 13:52:10 ID:BSxkGXvM0
1.0.47.06
254名無しさん@お腹いっぱい。:2008/03/10(月) 16:54:27 ID:vUAUq/Eu0
Caps LockをCtrlに対応させたく思い、
vkF0sc03A::vkA2sc01D

CapsLock::Ctrl

CapsLock::^
としてみましたが出来ません。どうすればいいのでしょう。
教えてください。よろしくお願いします。
255名無しさん@お腹いっぱい。:2008/03/10(月) 17:24:27 ID:9BCH5cLc0
>>3
256名無しさん@お腹いっぱい。:2008/03/10(月) 19:05:40 ID:Qf9LF4830
mayu とか KeySwap とか併用が前提だな
257名無しさん@お腹いっぱい。:2008/03/10(月) 20:06:01 ID:7U86VYG60
同じキーでSHIFT状態によって別な文字が入る(例:1と!)のを逆転させる方法はないものかって
ずっと心の片隅に引っかかってたけどやっとこさ見つけられて(NT系限定だけど)とってもハッピー
SendしてからRemapすればよかったのか

!::Send, 1
1::!
258名無しさん@お腹いっぱい。:2008/03/10(月) 22:34:56 ID:ffMlG0e60
>>254
自分はChgKeyというソフトで無変換に変更してから、
AHK上で無変換キー(SC79)としてつかってる。
(ちなみに英語キーボードなので無変換は空キー)
259名無しさん@お腹いっぱい。:2008/03/11(火) 18:46:36 ID:8hd1Vj+m0
ALT+左ドラッグで表示画面移動
→ホイールドラッグで実現したく、

MButton::Send, {Alt} down {LButton} down
MButton up::Send, !{LButton} up

など試しましたが、押した瞬間しかALTが押されていないようです。
どこを変えたらよいか教えてください。
260名無しさん@お腹いっぱい。:2008/03/12(水) 09:38:42 ID:7Sj/8niq0
ちょっと質問します。
"アクティブウィンドウ以外を最小化"を行いたく、以下のようなスクリプトを書いたのですが、、、

WinGetActiveTitle, title
WinMinimizeAll
WinActivate, %title%

なぜか自分の環境ではWinMinimizeAllが効かずこの方法は断念しました。
それとは別に、一瞬にしてもアクティブウィンドウは最小化させたくはないので(上記のスクリプトはきっとチカチカする)
できればループ処理でアクティブウィンドウ以外を最小化させたいのですが、
全ウィンドウのコレクションを取得する方法が思いつかず、かつ見つけることもできませんでした。
AHK達人の皆さま、お知恵を拝借できないでしょうか。
261名無しさん@お腹いっぱい。:2008/03/12(水) 09:55:52 ID:BBn5kDvF0
Winget list
262名無しさん@お腹いっぱい。:2008/03/14(金) 01:55:46 ID:X0LgGNT60
キー操作じゃなく
ControlClick, X座標 Y座標, Jane Doe Style, , LEFT, , NA
ってな感じにツールバーボタンをクリックしてやる操作だと
Janeをバックグラウンドで動かせるな
ツールバーにないのはスキンで追加したりして
263名無しさん@お腹いっぱい。:2008/03/14(金) 04:22:47 ID:w2GTXRhg0
マウ筋から乗り換え中ですが、躓きました。どうかアドバイスお願いします。

マウス右ボタン+ホイール上下で、キーボードの「カーソル上or下」を送信し、
右ボタンを放したときに、右クリックメニューを{ESC}で消す動作を想定しています。

RButton & WheelDown::Send,{Down}

RButton & WheelUp::Send,{Up}

ひとまずこれで操作はできたのですが、ホイール操作後に右クリックを離すと、
(当然ですが)右クリックメニューが出てしまいます。

マウ筋でいうところの「アクション終了後に実行」に相当する機能で
ESCを送信すれば解決しそうなのですが、それに相当する機能がどうしても
わかりません。

このあと、右クリックを離したときに {Esc} を送信するには、
どう書けばいいでしょうか。


それと、マウ筋の「トグル動作」に相当する機能は、
AutoHotkeyでも可能でしょうか。
264名無しさん@お腹いっぱい。:2008/03/14(金) 09:02:54 ID:QnXsY3pI0
調べてもわからなかったので質問します。

X単打→A
X長押し→B

といった風に、特定のキーの単打と長押しで動作を変える方法はあるでしょうか。
教えていただけるとうれしいです。
265名無しさん@お腹いっぱい。:2008/03/14(金) 11:23:39 ID:t9zhO3C60
流行らせるページのマウスジェスチャ2なんだけど
explorerにRB_LB_でAlt+F4を送るようにしてあるんだけどマウス直下じゃなくてアクティブウィンドウに利くようになってる。
もちろん設定のアクティブウィンドウをターゲットにするはチェックしていない。
また、ブラウザなどが持っているマウスジェスチャが一部が利かなくなったりする。
どうにかならないだろうか。
266名無しさん@お腹いっぱい。:2008/03/14(金) 13:33:04 ID:0BKa7fCF0
Alt+F4の前にWinActiveを書けばいいと思う
267名無しさん@お腹いっぱい。:2008/03/14(金) 13:33:44 ID:0BKa7fCF0
WinActivateか
268名無しさん@お腹いっぱい。:2008/03/14(金) 17:29:36 ID:P6frNnDA0
RButton & Wheelup::send {Left}
と記述したら、これ以外の右クリック関係が効かなくなってしまいました
以前の動作と共存させるにはどうしたらいいですか?
269名無しさん@お腹いっぱい。:2008/03/14(金) 18:04:12 ID:m2sf8lzZ0
まずは落ち着いて流行らせるページを読んだ方が良いと思うよ
270名無しさん@お腹いっぱい。:2008/03/14(金) 18:06:43 ID:+F3eJm7K0
アフィを踏まないようにな。
271名無しさん@お腹いっぱい。:2008/03/14(金) 18:20:10 ID:khMgy4pn0
>>264
KeyWaitで時間指定してErrorLevelで判断すれば多分出来る
272名無しさん@お腹いっぱい。:2008/03/14(金) 19:34:39 ID:P6frNnDA0
~RButton & Wheelup::send {Left}
としたら動くようになりましたが、アクション後に右ボタンを離したらコンテキストメニューが出てしまいます
出さないようにするにはどう記述すればよいですか?
273名無しさん@お腹いっぱい。:2008/03/14(金) 19:59:10 ID:D9gd79zc0
KeyA & KeyB::
{
 Some Script
}
$KeyA::Send,{KeyA}
274名無しさん@お腹いっぱい。:2008/03/14(金) 20:16:57 ID:khMgy4pn0
なんか、

RButton::
MouseClick, R,,, 1, 0, D
KeyWait, R
MouseClick, R,,, 1, 0, U
return

ってやってもドラッグがうまくいかないな、なんかやり方ある?
どうも、押下時点でメニューとか出るんでKeyWaitがうまく行ってないのかな?
275名無しさん@お腹いっぱい。:2008/03/14(金) 20:20:29 ID:LGlyJ14t0
なまず日記のmigemo_isearchを使っている人に質問です。

「[MIGEMO] I-search:」ウィンドウが開いているときに
ブラウザ内のどこかにフォーカスが移ると、検索ワードの
入力待ちから抜けられなくなりますよね。
そこで、とりあえず、自分でフォーカスを移した場合に
ついては以下のようにして逃げていますが、根本的な
解決策が知りたいです。

#IfWinActive ahk_class IEFrame
^s::MIS_IEMigemoISearchForward()

#IfWinActive ahk_class migemo-isearch
^s::MIS_MigemoISearchNextForward()

Esc::
AppsKey::
+f10::
MIS_MigemoISearchClose()
return

*LButton::
MIS_MigemoISearchClose()
MouseClick, Left
return

*RButton::
MIS_MigemoISearchClose()
MouseClick, Right
return
#IfWinActive
276名無しさん@お腹いっぱい。:2008/03/14(金) 20:47:13 ID:P6frNnDA0
>>273
ありがとうございました m(_ _)m
277名無しさん@お腹いっぱい。:2008/03/15(土) 06:40:10 ID:5wNKe8CI0
>>274
う・・・わ、恥ずかしい。今ごろ気付いた
R待ってても意味無いよな。RButtonだろ俺
ナンダヨー ニヤニヤ スンナヨー><;
278名無しさん@お腹いっぱい。:2008/03/15(土) 13:25:31 ID:MWOMNoQ50
xx分をxx時間xx分に換算する関数を作ろうと思い、できたのがこんなんです。
Conversion(origin){
min := Mod(origin, 60)
h := Round((origin - min) / 60)
Return, (hr ? h " h " : "") min " min"
}
いまいちかっこわるいのですが、こんなもんでしょうか。
279名無しさん@お腹いっぱい。:2008/03/15(土) 13:57:40 ID:A+4bfbKP0
簡単なので言えばこんなのとか
conv(i){
 t = 2000
 t += %i%,Minutes
 FormatTime FormdT, %t%, HH 'h' mm 'min'
 return FormdT
}
280名無しさん@お腹いっぱい。:2008/03/15(土) 20:27:19 ID:LpB2dUsx0
型定義か、オブジェクト作成が出来ればいいんだけどね
static 変数使えば、private変数みたく出来・・・ないか

ま、そこまで求めるような処理系をやるような言語ではないしな
281名無しさん@お腹いっぱい。:2008/03/16(日) 02:40:14 ID:PRavS+EG0
WinGetコマンド等でExclude Titleを指定できますが、
ここで複数タイトルを指定するにはどのようにすればいいでしょうか?
282名無しさん@お腹いっぱい。:2008/03/16(日) 06:18:08 ID:PRavS+EG0
>>281
AddGroupでグループ化して、ahk_groupで除外するというのを試みたのですが、うまくいきませんでした。
283名無しさん@お腹いっぱい。:2008/03/16(日) 20:13:32 ID:L7k3BomJ0
長押しと独自キーリピートのサンプルクレクレ
284名無しさん@お腹いっぱい。:2008/03/16(日) 22:17:10 ID:bN/A5LaO0
Inputbox に数式を入れると、結果を返すだけのツールを
作ったんですが、激しく仰々しくって・・・。もっと簡素に書けませんか?

vk1Csc079 & i::
  InputBox, suushiki, 数式を入力,,, 300, 110, , ,,
  FileAppend, Output:=%Suushiki%`r`n, c:\Enzan.ahk
  FileAppend, Msgbox`,`%Output`%, c:\Enzan.ahk
  Run, c:\Enzan.ahk
  Sleep, 500
  FileRecycle, C:\Enzan.ahk
return

(一行しか式を書き込めないので、拡張性に乏しいです)
285名無しさん@お腹いっぱい。:2008/03/16(日) 22:28:10 ID:6gu0PBjt0
なんでFileAppendなんか使うん?
286名無しさん@お腹いっぱい。:2008/03/16(日) 22:37:17 ID:bN/A5LaO0
FileAppendしか思い付かなかったので・・。行数制限は外したが。

vk1Csc079 & i::
Loop, 20{
InputBox, Suushiki, 数式を入力(Canselで入力終了),,, 300, 110,,,,,Y:=
If ErrorLevel = 0
{
FileAppend, %Suushiki%`r`n, C:\Enzan.ahk
}
If ErrorLevel = 1
{
FileAppend, %Suushiki%`r`n, C:\Enzan.ahk
break
}}
FileAppend, Msgbox`,`%Y`%, C:\Enzan.ahk
Run, C:\Enzan.ahk
Sleep, 500
FileRecycle, C:\Enzan.ahk
return
287名無しさん@お腹いっぱい。:2008/03/16(日) 22:44:09 ID:MFHWv9K4P
>>284
fenrirスレとマルチのうえあっちはほったらかしかよ。死ねよクソガキ。
288名無しさん@お腹いっぱい。:2008/03/16(日) 23:05:49 ID:6gu0PBjt0
俺には付いていけん発想だ
炊飯器に乗って隣の家に行くような
289284:2008/03/16(日) 23:26:39 ID:bN/A5LaO0
ID調べる粘着さんに誤爆をマルチ呼ばわりされてしまった。


>>288 ダイヤログボックスに数式を入れて結果を入力させるのが目的です。
上の文ではMsgboxを使っていますが、使用時はクリップボード&貼り付けにしています。

Google窓やCals.exe等では、結果の閲覧までなので一歩進めて入力までやりたくて・・。
290名無しさん@お腹いっぱい。:2008/03/16(日) 23:29:19 ID:EsUPLoeS0
これはひどい
291284:2008/03/16(日) 23:59:55 ID:bN/A5LaO0
Gui,Edit を出して変数に格納するのですか?

そうだとしても外にAHKを書くためにFileAppend以外に方法はないと思うのですが・・・。
292名無しさん@お腹いっぱい。:2008/03/17(月) 00:32:49 ID:tHZ6lmZ50
まあ、もう少し付き合うけど
変数に入れてそれをLoop, Parseするのでは何がいかんのか?
293名無しさん@お腹いっぱい。:2008/03/17(月) 01:31:27 ID:5FHlkxSn0
結果をほかのものに渡すだけならクリップボードを使えば良いだろ。
ClipBoard= %Suushiki%
294名無しさん@お腹いっぱい。:2008/03/17(月) 05:00:44 ID:w3b2p0Pp0
標準出力でもいいんじゃね
295名無しさん@お腹いっぱい。:2008/03/17(月) 10:40:11 ID:0WAsk9HL0
>そうだとしても外にAHKを書くためにFileAppend以外に方法はないと思うのですが・・・。
FileAppend以前にわざわざ外にAHKを書く意味がわからない。

fenrirスレ見てきたけど、IDなんか調べなくてもまんまマルチじゃん。
しかも向うではツッコミ入れられてから誤爆とか言い訳してるし、お前本当クズだな
296名無しさん@お腹いっぱい。:2008/03/17(月) 12:44:41 ID:vyHUZ/Zr0
数式ならはやらせるページのあぷろだにいくつかあった気がするが
297名無しさん@お腹いっぱい。:2008/03/17(月) 23:36:46 ID:z52UcUVJ0
>>271
遅くなりましたが、ありがとうございます。
298271:2008/03/18(火) 06:36:36 ID:DBpKlb6a0
>>297
いえいえ
299名無しさん@お腹いっぱい。:2008/03/18(火) 16:20:40 ID:p9N7Q+240
Loop の回数を入力して2重ループでキーをsendするマクロを使っているのですが;
たまに回数を間違えて終わるのを待つのがつらいです。
マクロを強制終了する方法はあるのでしょうか?
300名無しさん@お腹いっぱい。:2008/03/18(火) 17:13:36 ID:5EvAikyp0
^ESC:: ExitApp とか適当にホットキー設定しておけば?
マルチスレッドで動いてるはずだから多分大丈夫じゃね?

本当にどうしようもない時はタスクマネージャからプロセスの終了で強制終了汁
301名無しさん@お腹いっぱい。:2008/03/18(火) 19:21:18 ID:+E1ehu8R0
連打だったら、こんな感じで
規定回数orフォーカスずらしたら終わるようにしてるなぁ

renda(key, cnt) {
 WinGetClass, oCls, A
 Loop, %cnt%
{
  IfWinNotActive, ahk_class %oCls%
  Break,
  Send, {%key%}
 }
 return
}
302名無しさん@お腹いっぱい。:2008/03/18(火) 21:31:22 ID:qz5VYRvo0
GetKeyStateで適当なキー押下を調べて
押されてたらBreakするとか
303名無しさん@お腹いっぱい。:2008/03/18(火) 22:42:31 ID:LmQpgVGGO
UWSCのMOUSEORGみたいに、
特定のウインドウにキーを送る関数や方法はありますか?
304名無しさん@お腹いっぱい。:2008/03/19(水) 00:13:54 ID:Qu6VUaAz0
ありまくり
305名無しさん@お腹いっぱい。:2008/03/19(水) 12:12:38 ID:ZHMEY0Ip0
>>301
ありがとうございます。
306名無しさん@お腹いっぱい。:2008/03/19(水) 13:45:53 ID:PsQCSOhe0
>>304
ありがとうございます。
307TWZmalSIIaso:2008/03/21(金) 09:05:57 ID:0s2M9jx00
308名無しさん@お腹いっぱい。:2008/03/22(土) 14:49:01 ID:6t3qgOPy0
・マウスの中ボタンを押すと、(中ボタンを放した瞬間)検索開始
・マウスの中ボタン+ホイール↓で、検索の次候補(F3)
・マウスの中ボタン+ホイール↑で、検索の前候補(shift+F3)

という動作をさせたいのですが、

MButton::send,^f
MButton & WheelDown::send,{F3}
MButton & WheelUp::send,+{F3}

この3行のうち、下の2行を入れると、
先頭の「中ボタンを押しただけの動作」が無視されてしまいます。

希望する動作にするためには、どう書けばいいでしょうか。
309名無しさん@お腹いっぱい。:2008/03/22(土) 15:15:08 ID:UA/65Cwf0
単独と&の組み合わせって駄目じゃなかったっけ。
前試して動かなかったような記憶が。
310名無しさん@お腹いっぱい。:2008/03/22(土) 16:24:18 ID:DRTfcI5V0
MButton Up::send,^f
でできると思う
311名無しさん@お腹いっぱい。:2008/03/22(土) 20:17:36 ID:0AYJpUnlO
マウスボタンの配置を入れ替えることはできますか?

a::b
b::a
↑キーボードはできたんですけど
312名無しさん@お腹いっぱい。:2008/03/22(土) 20:59:20 ID:H09tmeZI0
指をクロス
313名無しさん@お腹いっぱい。:2008/03/23(日) 02:24:18 ID:yu0oJW4R0
>>311
Windowsの設定で左利き用にするのではだめなのか?
314311:2008/03/23(日) 09:32:42 ID:h6Mm6xGhO
右←→X2を交換したいんです
ロジのトラックボール(ST-45UPi)を購入した
ので親指に左右クリックを集めて使いたいなと
SetPoint+UberOptionsで実現できそうなのですが
できればSetPointとか使いたくないんです。
315名無しさん@お腹いっぱい。:2008/03/23(日) 09:37:41 ID:h6Mm6xGhO
間違い左←→X2です
316名無しさん@お腹いっぱい。:2008/03/23(日) 09:57:54 ID:IKb6ZKv10
SetPointつかったほうがいいんでないかい
317名無しさん@お腹いっぱい。:2008/03/23(日) 11:37:05 ID:MbnHXQ3d0
>>308です。

>>309
そのようです。

>>310
これでできました。ありがとうございます。
318名無しさん@お腹いっぱい。:2008/03/23(日) 21:27:50 ID:7xaaJCup0
319311:2008/03/24(月) 11:25:36 ID:Ns5Ryq4zO
>>318 ありがとう。すごく参考になりました。

一応結果を書いておきます。
飛び先にはいくつか方法が書かれているけど,↓がベターだとおもう。

*LButton::
MouseClick, right,,,,, D
KeyWait, LButton
MouseClick, right,,,,, U
return

*RButton::
MouseClick, left,,,,, D
KeyWait, RButton
MouseClick, left,,,,, U
return

KeyWaitの効果??でマウスジェスチャー,範囲選択も標準同様に動作できた。
ちょっと不満なのは右クリするとコンテクストメニューが表示されたり
されなかったりする。それ以外は期待通りでした。
(再現も規則性があって,右ダブルクリックすれば回避できるけど)

>>316
自分の環境だと突然ALTやCtrlが押された状態になってイライラするから
使いたくないんです。原因もわからないし・・
320名無しさん@お腹いっぱい。:2008/03/24(月) 16:06:20 ID:n1SVzXNB0
XPSP3日本語版はキーUp/Down情報が正しく返して(>>3)くれる・・・わけないよなぁ
321名無しさん@お腹いっぱい。:2008/03/24(月) 20:59:47 ID:4Vqa4LsF0
Setpointの押しっぱなし回避のため、Alt/Ctrl/Shift upとSetpoint再起動のスクリプトを書いておくがよろし
322名無しさん@お腹いっぱい。:2008/03/24(月) 22:08:58 ID:m2WbBKQQ0
>>319
スレチだけど、押しっぱなしの件うちも起こるなぁ。>Setpoint
まぁ、ごく稀になんで我慢して使ってるけど。MouseWareの頃はこんな事なかったのになぁ。
どれかが押されたままになったら、そのキー(キーボード実体)を適当にポンポン叩いてると
しばらくすれば直るんだけど。
俺は>>321をやってみようかと思う。アイデアどうもありがとう
323名無しさん@お腹いっぱい。:2008/03/24(月) 23:56:48 ID:4Vqa4LsF0
>>321をやるなら、ホットキーは^!+z::みたいにするのがおすすめ。
押しっぱなしの症状出ていても起動するようにな。
324名無しさん@お腹いっぱい。:2008/03/25(火) 14:08:04 ID:fKCEZ+8l0
Ahkファイルを右クリックしたとき出る「edit script」で使用するエディタを変更する方法は何かないでしょうか?
325名無しさん@お腹いっぱい。:2008/03/25(火) 16:39:51 ID:/e6R/f5R0
>>324
俺は↓のレジストリのnotepad.exeの部分を書き換えてる。
他の方法もあるかもしれないけど。ちなみにOSはXP

HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command
326名無しさん@お腹いっぱい。:2008/03/25(火) 19:23:22 ID:tZ5Dk9KN0
327名無しさん@お腹いっぱい。:2008/03/25(火) 20:01:12 ID:4sJAnoqM0
「フォルダオプション」の「ファイルの種類」で
.ahk->詳細設定->Edit scriptいじってもできるよ。
328名無しさん@お腹いっぱい。:2008/03/25(火) 20:45:40 ID:v2dURCKr0
あとは、Menu, Tray, 〜で全部書き換えてしまうとか
329名無しさん@お腹いっぱい。:2008/03/26(水) 00:45:10 ID:uloWWH/t0
Photoshop、Sai、Neko、ComicStudio共通、3分間操作しないと自動保存を行うAutoHotkeyスクリプト
ttp://blogs.yahoo.co.jp/uwsc_script/31579152.html
330名無しさん@お腹いっぱい。:2008/03/26(水) 10:21:32 ID:rg2QQF050
雑談していいか?デジ絵業界のこと全く知らんのだが、プロにもAutohotkeyは流行ってるの?浸透する余地はあるの?
331名無しさん@お腹いっぱい。:2008/03/26(水) 12:03:00 ID:UhywBhzN0
プロや同人者じゃないけどフォトショやイラレくらい普通に使うっしょ。ビジネスでも個人でも。

スクリプトに免疫ある云々以前に自動保存は危険だから そうそう需要があるとは思えんし
(保存する気は無いけどちょっと試してみた、っつーような状態でオリジナル更新とかされたら泣ける。
MS-Officeみたいに保存でアンドゥバッファがクリアされるようだとかなりアウチな状況になる)
329のブログの人は元々uwscとかやってるから、浸透させたいとかそういう意図じゃなく
単純に自分が使ってるものを公開してるだけじゃないか?
332名無しさん@お腹いっぱい。:2008/03/26(水) 12:27:50 ID:XtKWYjkt0
VAIOノートのボリューム変更が面倒(ミュートボタン+十字キー)なので、ahkでボリュームを変更しようと考えました。
しかし、VistaのせいかVAIOのせいか、XP機では問題なく動作していたコマンド「SoundSet」がまったくききません。

これはVistaで音量管理が変わったせいでしょうか。それともVAIO固有の問題でしょうか。
他にVista機を使ったことがないので、ボリューム関係の命令が通常は問題なくVistaでも動作するのかどうかお教えいただければと思います。
333名無しさん@お腹いっぱい。:2008/03/26(水) 12:28:04 ID:rg2QQF050
イラレを普通の人が使うか?まぁいいや。俺的には糞キーだった無変換と

変換キーがAHKで超活躍したのに感動して、ネタ探しにこのスレに居着いてる。
334名無しさん@お腹いっぱい。:2008/03/26(水) 13:42:09 ID:s4aoxhYc0
無変換は使う人は使うらしい。
うちの親父がひらがな確定するのに使ってた。
AHK立ち上げたまま貸したから誤爆しまくってた。
335名無しさん@お腹いっぱい。:2008/03/26(水) 14:06:53 ID:aFNDPsi80
ドロー系ってイラレくらいしか市販ソフトで選択肢なくなってるじゃん
簡単なものならInkscapeとかでも良いけどちょこっと凝ったことやって
印刷所に渡すとかならイラレ一択だよ

普通の人でもちょっと凝ったチラシ程度は作ったりするでしょ?
336名無しさん@お腹いっぱい。:2008/03/26(水) 14:20:42 ID:mvQbsgET0
作業上、定型処理があってマクロが無い場合、
何らかの補助ツールを用いてバッチ的に処理したいと思うのは
当たり前なんじゃないの?

エクセルとかの事務処理ツールは大抵マクロがあるけど、
オーサリングとか描画とかのツールには無いことがあるし。
その場合、キー送信って方法はわかりやすい手法だと思う。

でも浸透はしてないと思う。

>>332
アプリケーション毎に音量を変えられる Vista の仕様には対応してないとか。
つまり、AHKのプロセスのみの音量が変わるだけ。
システム全体のボリュームを変更したい場合は以下のようにして逃げろと書いてある。

@AHK互換モードで動かす
Aボリューム変更キーを変更してシステム全体のマスタ音量を変えるようにする


ttp://www.autohotkey.com/docs/commands/SoundSet.htm
> [Remarks]
> On Windows Vista, SoundSet and SoundGet affect only the script itself
> (this may be resolved in a future version).
> There are at least two ways to work around this:
>
> 1) In the properties dialog for the file "AutoHotkey.exe" (or a compiled script),
>   change the compatibility setting to "Windows XP".
> 2) Have the script send volume-control keystrokes to change the master
>   volume for the entire system. For example:
> (以下略)

337名無しさん@お腹いっぱい。:2008/03/26(水) 14:22:30 ID:oolhOgY80
>>334
俺も無変換に機能を割り当ててウハウハ気分。
だが、あるとき「あれ?ひらがなにならねぇじゃん」というシーンがちらほら。

・・・あれだけ邪魔扱いしていた無変換キーを、
無意識のうちに微妙に使ってたことに驚愕した。ごめんよ無変換君

まぁ最終的に ~ up で支障のないように割り当てちゃったけど
338名無しさん@お腹いっぱい。:2008/03/26(水) 15:23:42 ID:UhywBhzN0
>>336
コミスタみたいな漫画描き用ツールは使ったことないからわからんが
adobe系ならアクションで操作記憶できるし、jsも使えるからな
外部のソフトでどうこうしようって需要はそんなには高くないんじゃないかな

自分はjsわからんからAHKで適当にやらせちゃったりしてるけど。
339名無しさん@お腹いっぱい。:2008/03/27(木) 12:16:30 ID:YojpcV9k0
>>336
なるほど、Volume_Upを送ればいいんですね。助かりました。
AhkがVistaの仕様に対応してくれると面白いんですがね。
340名無しさん@お腹いっぱい。:2008/03/27(木) 23:12:54 ID:wa/kgMqy0
>>337
変換中にひらがな なら、Ctrl+u、或いはF6使うとか?
Ctrl+u,i,o,pに慣れたんで、変換中は無変換キー使わないです。

無変換キーは、なまず日記(2005-09-16)参考で(Alt複数回押しが元ネタ)
2度押しでF24キー送ってランチャの呼び出しキーにしてるのと
テンプレにもある無変換+IJKLで↑←↓→にして使ってる。
341名無しさん@お腹いっぱい。:2008/03/27(木) 23:45:44 ID:7ph+A4hy0
すみません。全くの初心者です。
マウスのX2ボタン+ホイールで水平スクロールさせたいのですが、つまづいてます。
下の表記ではダメなのでしょうか?どの様に表記すれば良いでしょう?

XButton2 & WheelUp::
ControlGetFocus, fcontrol, A
SendMessage, 0x114, 0, 0, %fcontrol%, A

XButton2 & WheelDown::
ControlGetFocus, fcontrol, A
SendMessage, 0x114, 1, 0, %fcontrol%, A
342名無しさん@お腹いっぱい。:2008/03/28(金) 00:51:14 ID:vippfD4h0
「アクティブウィンドウのアクティブコントロール」だと
実際はどこにフォーカス当たってるのかわからんよ
マウス下のコントロールハンドル送るほうがまだ確実

MouseGetPos,,,,ctrl,3
PostMessage, 0x114, 0, 0, ahk_id %ctrl%

もしこれでもダメなら対象のコントロールがスクロールに対応してない
(見当違いのコントロールをつかんでしまっている)か、
スクロールハンドルも指定してやらないといかんとかだと思う
343名無しさん@お腹いっぱい。:2008/03/28(金) 01:09:11 ID:SNoH02TP0
Mousegesture.ahk使え
344名無しさん@お腹いっぱい。:2008/03/28(金) 08:29:45 ID:1yE4nRrQ0
>>331
使いにくいインターフェースを使いやすくするのには使っている。

http://upp.sakura.ne.jp/src/upp16216.jpg
http://upp.sakura.ne.jp/src/upp16217.jpg
http://upp.sakura.ne.jp/src/upp16218.jpg
345名無しさん@お腹いっぱい。:2008/03/28(金) 20:40:26 ID:lF6janXs0
%00%01%12みたいにエンコードされたURL文字列をデコードしたいのですが、
変数に入っているURLをデコードするには、どのようにすればいいでしょうか。

AutoHotkey本家サイトで、下記のサンプルらしきものをみつけたのですが、
AutoHotkey自体にまだ慣れていない状態で。たとえば %abc% という変数に
入れたURLを変換するには、どのように書けば動いてくれますか?


uriDecode(str) {
Loop
If RegExMatch(str, "i)(?<=%)[\da-f]{1,2}", hex)
StringReplace, str, str, `%%hex%, % Chr("0x" . hex), All
Else Break
Return, str
}

http://www.autohotkey.com/forum/topic18876.html
346名無しさん@お腹いっぱい。:2008/03/29(土) 16:33:33 ID:VfpQtKeR0
これってクリップボード拡張機能があるの?
あるんだったらいくつまでため込んでおけるの?
347名無しさん@お腹いっぱい。:2008/03/29(土) 17:02:54 ID:G6elPIP40
クリップボードをどうにかできる機能はある。拡張は各自で行う。
己の好きなだけためられるようなコードをかけばOK
348名無しさん@お腹いっぱい。:2008/03/29(土) 17:59:21 ID:VdXqTZUN0
cbhistory%num% = cbhistory%num-1%
とか偽配列に溜め込んでいけばいくらでも
349名無しさん@お腹いっぱい。:2008/03/29(土) 20:14:12 ID:T1+UFJiD0
例えばあるキーを押したら「○」と入力されるようにするには
クリップボードを使わずにできるの?
350名無しさん@お腹いっぱい。:2008/03/29(土) 20:59:51 ID:G6elPIP40
できるけど全角文字はOSや入力先コントロールによっては化けるよ
351名無しさん@お腹いっぱい。:2008/03/30(日) 02:53:04 ID:E4XGHc6a0
アニメ「めぐみ」ダウンロードページ
http://www.rachi.go.jp/jp/megumi/index.html#ja
352名無しさん@お腹いっぱい。:2008/03/30(日) 09:32:11 ID:ltQQNcJf0
他のスレでAHKを勧められたんで使ってみようかと思っています。
iniファイルに設定を書けって言われたんで記述しようかと思ったんだけど
落としたzipにはiniファイルがありません。
これは自分で作れってことですか?
353名無しさん@お腹いっぱい。:2008/03/30(日) 09:55:59 ID:gl83dI/t0
>>352
初回にAHKを起動したときに自動で作られる
ttp://d.hatena.ne.jp/ka8823ge/20060214
354名無しさん@お腹いっぱい。:2008/03/30(日) 10:23:13 ID:vGXFRISg0
練習ならデスクトップで、右クリックして
 [新規作成]→[Autohotkey Script]
と選択して新規ファイル作る。

さらに出来たファイルを右クリックして
 [Edit Script]
を選んで編集する。
たぶんメモ帳で編集となる。

何か書いたら*保存して*からダブルクリックして実行。

後はがんばれ。
355名無しさん@お腹いっぱい。:2008/03/30(日) 10:27:04 ID:Ok2aoVwO0
自分も新参なんでそのへんよくわからんですが、
最近のAHKは、ini ファイルあれば読み込むけど、勝手につくったりはしないのでは。
適当な名前(AutoHotkey.ahkとか) を適当なところに置いて起動時に実行させたほうが、
エディタで編集もしやすいし良いような。
356名無しさん@お腹いっぱい。:2008/03/30(日) 10:37:22 ID:UVMk0PgG0
zip版でも.ahk起動でなかったらini作られると思うけど
357名無しさん@お腹いっぱい。:2008/03/30(日) 13:01:06 ID:qN+p1OrA0
AHKでiniファイルを作って使用する場合
その設定はシステム全体に共通するものになってしまうんですか?
ある特定のソフトではその設定を無効にすることってできますか?
358名無しさん@お腹いっぱい。:2008/03/30(日) 15:24:24 ID:Irt6PGPH0
>>357
システム全体に共通のものにすることも
特定のソフトだけに適用させることも
特定のソフトだけを除外することも

皆できます。
359名無しさん@お腹いっぱい。:2008/03/30(日) 16:15:28 ID:WwLdVX2H0
>>358
そのやり方の書いてあるサイトを紹介してくれませんか?
360名無しさん@お腹いっぱい。:2008/03/30(日) 16:47:55 ID:UVMk0PgG0
>1
361名無しさん@お腹いっぱい。:2008/03/30(日) 22:10:05 ID:oszNmWuy0
さすがに春とは言えひどいのがわくなw
362名無しさん@お腹いっぱい。:2008/03/30(日) 22:14:42 ID:mTU/MBw90
いちいちあおんな
363名無しさん@お腹いっぱい。:2008/03/30(日) 22:19:42 ID:JMekhfLu0
>>350
やっぱり化けますか。
クリップボードに文字入れてペーストするしか方法ないのかな。
364名無しさん@お腹いっぱい。:2008/03/30(日) 23:35:22 ID:vGXFRISg0
ttp://lukewarm.s101.xrea.com/myscripts/index.html
の[Sendコマンド用日本語コード変換]
365名無しさん@お腹いっぱい。:2008/03/31(月) 23:53:39 ID:I9uPmNx00
変換キーをシフト+コントロールにしたいんだけど
vk1Csc079::^+
だとうまく動かないんだけどSend使ってもダメだった。
どうやったら出来るの?全然違うことやってるかな…

366名無しさん@お腹いっぱい。:2008/04/01(火) 00:15:47 ID:Bzz1rfhi0
おまえら、AutoHotkeyなんてもう腐りきった言語をいつまでも使ってるんじゃない!
これからはJHotkeyの時代だぞ!!
http://lukewarm.me.land.to/
367名無しさん@お腹いっぱい。:2008/04/01(火) 00:28:52 ID:o19x/qgO0
>>開発途中のため、構想されている機能のうち極一部しか実装されていません。

意気込みはいいが、これじゃな…
368名無しさん@お腹いっぱい。:2008/04/01(火) 00:31:29 ID:VxtyJ8oc0
今日は・・
369名無しさん@お腹いっぱい。:2008/04/01(火) 00:32:21 ID:taqmYof10
ぬるたん、何やってんのw
370名無しさん@お腹いっぱい。:2008/04/01(火) 01:05:47 ID:+YiplxOD0
エイプリルフール?
じゃないのね・・・
さすがスクリプトオタク
371名無しさん@お腹いっぱい。:2008/04/01(火) 01:49:23 ID:Bzz1rfhi0
;# MobileSOS.ahk
Gui, 1:+ToolWindow -Disabled -SysMenu -Caption
Gui, 1:Color, FF0000
Gui, 1:Show, X0 Y0 W%A_ScreenWidth% H%A_ScreenHeight%
Gui, 2:+ToolWindow -Disabled -SysMenu -Caption
Gui, 2:Color, 000000
Gui, 2:Show, X0 Y0 W%A_ScreenWidth% H%A_ScreenHeight%
Loop
{
Gui, 1:SHOW
Sleep, 200
Gui, 2:SHOW
Sleep, 200
Gui, 1:SHOW
Sleep, 200
Gui, 2:SHOW
Sleep, 200
Gui, 1:SHOW
Sleep, 800
Gui, 2:SHOW
Sleep, 200
}
Return

Esc::ExitApp

http://www.forest.impress.co.jp/yashiro/2008/mobilesos.html
372名無しさん@お腹いっぱい。:2008/04/01(火) 02:04:47 ID:rprG/suh0
>>365
AHK勉強中です、正しい書き方でないだろうし
もっとよい記述があると思うんだけど一応書いてみました。
vk1Csc079::
Send,{Shift Down}{Ctrl Down}
loop
{
sleep, 10
GetKeyState, vkstate, vk1Csc079, P
if vkstate=U
{
Send, {Shift Up}{Ctrl Up}
break
}
}
return
373名無しさん@お腹いっぱい。:2008/04/01(火) 02:25:34 ID:+YiplxOD0
>>371
すばやいな
でも、SOSは・・・ーーー・・・だとおもうんだ
374名無しさん@お腹いっぱい。:2008/04/01(火) 03:41:28 ID:xJn9jWDG0
画面の特定の場所(たとえば右上)にマウスオーバーしたら、
特定のアプリを最前面表示、みたいにやりたいんですが、
どこかにそういうスクリプト公開されてますか?
375名無しさん@お腹いっぱい。:2008/04/01(火) 03:48:29 ID:Bx9nGxi10
画面端だけならMouseGesture.ahkにある
376名無しさん@お腹いっぱい。:2008/04/01(火) 03:51:02 ID:xJn9jWDG0
なるほど。ちょっと見てみます。
377名無しさん@お腹いっぱい。:2008/04/01(火) 03:52:36 ID:Bx9nGxi10
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
378名無しさん@お腹いっぱい。:2008/04/01(火) 04:02:39 ID:xJn9jWDG0
         ナ ゝ   ナ ゝ /    十_"    ー;=‐         |! |!
          cト    cト /^、_ノ  | 、.__ つ  (.__    ̄ ̄ ̄ ̄   ・ ・
ミミ:::;,!      u       `゙"~´   ヾ彡::l/VvVw、 ,yvヾNヽ  ゞヾ  ,. ,. ,. 、、ヾゝヽr=ヾ
ミ::::;/   ゙̄`ー-.、     u  ;,,;   j   ヾk'! ' l / 'レ ^ヽヘ\   ,r゙ゞ゙-"、ノ / l! !ヽ 、、 |
ミ/    J   ゙`ー、   " ;, ;;; ,;; ゙  u ヾi    ,,./ , ,、ヾヾ   | '-- 、..,,ヽ  j  ! | Nヾ|
'"       _,,.. -─ゝ.、   ;, " ;;   _,,..._ゞイ__//〃 i.! ilヾゞヽ  | 、  .r. ヾ-、;;ノ,.:-一'"i
  j    /   ,.- 、  ヾヽ、 ;; ;; _,-<  //_,,\' "' !| :l ゙i !_,,ヽ.l `ー─--  エィ' (. 7 /
      :    ' ・丿   ̄≠Ξイ´,-、 ヽ /イ´ r. `ー-'メ ,.-´、  i     u  ヾ``ー' イ
       \_    _,,......::   ´゙i、 `¨ / i ヽ.__,,... '  u ゙l´.i・j.冫,イ゙l  / ``-、..- ノ :u l
   u      ̄ ̄  彡"   、ヾ ̄``ミ::.l  u   j  i、`ー' .i / /、._    `'y   /
              u      `ヽ  ゙:l   ,.::- 、,, ,. ノ ゙ u ! /_   ̄ ー/ u /
           _,,..,,_    ,.ィ、  /   |  /__   ``- 、_    l l  ``ーt、_ /  /
  ゙   u  ,./´ "  ``- 、_J r'´  u 丿 .l,... `ー一''/   ノ  ト 、,,_____ ゙/ /
        ./__        ー7    /、 l   '゙ ヽ/  ,. '"  \`ー--- ",.::く、
       /;;;''"  ̄ ̄ ───/  ゙  ,::'  \ヾニ==='"/ `- 、   ゙ー┬ '´ / \..,,__
、      .i:⌒`─-、_,....    l   /     `ー┬一'      ヽ    :l  /  , ' `ソヽ
ヾヽ     l      `  `ヽ、 l  ./  ヽ      l         )  ,; /   ,'    '^i
379名無しさん@お腹いっぱい。:2008/04/01(火) 15:34:48 ID:PbhXdZno0
SubMakeTxt:
(処理)
FileAppend,%Text%,hoge.txt
Return

このようなサブルーチンで、処理の最中に再び同じサブルーチンが呼び出された場合、
最初に呼び出された方を打ち切って新しく最初からやり直すというのはどう書けばいいんでしょうか。

やりたいのは「さっきのやめて新しい条件でhoge.txt作って」という感じのことです。
380名無しさん@お腹いっぱい。:2008/04/01(火) 21:45:56 ID:taqmYof10
そいつをコンパイルEXE化しといて
呼出し毎にまずプロセスを落としてから処理に入るとか
381名無しさん@お腹いっぱい。:2008/04/01(火) 22:27:43 ID:TzLRdUHG0
偉い先生、教えてください。
スクリプト起動中に Hotstring の設定を書き換えられますか?
たとえば
#Hotstring C
 ↑
 ↓
#Hotstring C0
などとトグルしたいんですが。
382名無しさん@お腹いっぱい。:2008/04/01(火) 23:35:42 ID:iDdNVKh40
>>364
ありがとう!
383名無しさん@お腹いっぱい。:2008/04/02(水) 17:23:33 ID:WduZd3PH0
AHKでマウスのスクロールボタンを押した
動作を設定したいんですがそれってできます?
テンプレにある流行ページ見たんですが
ボタン押しのキーリストがありませんでした。
やりたいことはスクロールボタンを押したまま
スクロールさせてアプリを切り替えたんです。
384名無しさん@お腹いっぱい。:2008/04/02(水) 17:24:05 ID:WduZd3PH0
× 切り替えたんです。
○ 切り替えたいんです。
385名無しさん@お腹いっぱい。:2008/04/02(水) 19:30:07 ID:wPtPDyuj0
下の二行で頭がくらっと来た。
386名無しさん@お腹いっぱい。:2008/04/02(水) 20:57:10 ID:XEaurMqJ0
エディタや入力部分等で選択している範囲の文字列中の一番右側の数値を1増やすのってどうやればいいんですか?

file-01.txt

を選択して実行すると

file-02.txt

になるような感じです
387名無しさん@お腹いっぱい。:2008/04/02(水) 21:08:44 ID:2iojmLuY0
>>386
正規表現で数字部分だけ引っこ抜いたらどうでしょう
388名無しさん@お腹いっぱい。:2008/04/02(水) 22:43:10 ID:d+HQvHP20
Alt や Ctrl や Shift を素早く二回押しして
クリップボードとかを立ち上げようと思っているのですが、
こういう「連続押し」はどうすれば良いのでしょうか?

(窓使いの憂鬱スレで聞いたら「AHKが得意だよ」と言われてやって来ました)
389名無しさん@お腹いっぱい。:2008/04/03(木) 00:02:45 ID:nVgIA2Ke0
390名無しさん@お腹いっぱい。:2008/04/03(木) 01:29:40 ID:k0tD4Xy50
>>389
どうもありがとうございます。
これに何か書き加えれば
連続押しでアプリを呼び出したりできるんですね。
ちょっと勉強してみます。
詰まったらまた質問させて頂きますので
その時はお願いします。
391名無しさん@お腹いっぱい。:2008/04/03(木) 23:44:41 ID:2gOsBbkj0
リファレンス見てて
Exp() ネピア数eのべき乗を返す関数
を見たときに自分の限界を感じた
商業科卒でろくな数学教わってこなかったから
単語調べても説明文から理解できないという詰みっぷり
例題とかどういう時に使うのかないから
プログラミングできなくてもこれ使えばなんとかなるかなフフンって思ってた自信が崩れた
理系の学校に行っとけばよかったと思ったよ後の祭り
392名無しさん@お腹いっぱい。:2008/04/04(金) 00:45:32 ID:7zeiblG+0
>>389のURLで紹介されていた

~CTRL::
if A_PriorHotkey <> %A_ThisHotkey%, return
if A_TimeSincePriorHotkey > 400, return
;some action


return

に、現在クリップボードを呼び出すショートカットである
Ctrl+D を試しに割り当てて呼び出したいのですが、
どうすれば良いでしょうか?
(高校中退の僕にはプログラミングは難し過ぎでした)
393名無しさん@お腹いっぱい。:2008/04/04(金) 11:01:00 ID:pBB/Zv3r0
リファレンスの Send の項を見て来い
わからないんならお前には無理、あきらめろ
394名無しさん@お腹いっぱい。:2008/04/04(金) 17:41:26 ID:1bP2SCxJ0
>>391
eなんて理系でも使わないとこじゃまったく使わねぇよw

ってか何でそんなもんを調べてるんだ?
「米の炊き方が知りたいのですが鉄の熱伝導率を調べても私には意味がわかりませんでした」って言ってるようなものだぞ
395名無しさん@お腹いっぱい。:2008/04/04(金) 18:04:46 ID:G2g11yCV0
"e"をネピア数っていうんだ。知らんかった。一応理系の大学でたけど。
てか、数学をコテコテいじるようなところじゃなかったしな。

自然対数の"底"って書いてあれば、高校数学程度って分かるんだが。
数Uくらいか?(ってか今、数Uってあんのか・・・?)
396名無しさん@お腹いっぱい。:2008/04/04(金) 20:35:03 ID:bHsVIBeM0
>>394
ちゃうだろ
米の炊き方なら目的がはっきりしてるから鉄の熱伝導率なんて知識が
米を炊く時に必要かそうでないか判断できる
知らないものを調べることになんか疑問あるかね
何か思い立ったときそれが必要だったとして知らなかったら不可能として諦めて損になる
397名無しさん@お腹いっぱい。:2008/04/04(金) 20:45:23 ID:bcgYhMW50
日本語でおk
398名無しさん@お腹いっぱい。:2008/04/04(金) 22:48:35 ID:5/uiSusF0
何か不幸な生い立ちでも?
399名無しさん@お腹いっぱい。:2008/04/05(土) 08:23:27 ID:AZM4ch+j0
Cを始めるときにC言語辞典読破してからハローワールドするみたいな
400名無しさん@お腹いっぱい。:2008/04/05(土) 10:04:21 ID:8a6N5frDO
>>396
お前にとってeが必要になる可能性が高いかどうかくらいは今でも判断つくだろ?
おおよそ不必要なら、さっさと基本的な事をマスターして、その後で覚えたらいいやん。
401名無しさん@お腹いっぱい。:2008/04/05(土) 16:47:46 ID:IvDj1tasP
覚えたらeやん
402名無しさん@お腹いっぱい。:2008/04/05(土) 17:49:22 ID:IwMCZKAQ0
つくしが引っ込んだぞ、おい
403名無しさん@お腹いっぱい。:2008/04/05(土) 19:31:49 ID:zWjQS3cI0
ゴメン
404名無しさん@お腹いっぱい。:2008/04/06(日) 21:06:22 ID:FTx5YlaY0
神様
あるウィンドウがクリックされた時に、
そのウィンドウにあるメニューバーの特定のメニュー項目がdisabledならば、
クリックされなかったことにしてreturnしたいのですが、
どこかにサンプルなどないでしょうか。

たとえばIEがクリックされた時、IEのメニューバー->編集(E)->コピー(C)が
disabledならクリックイベントが発生しないようにしたいです。

エロかっこいい神様、どうかおながいします。
405名無しさん@お腹いっぱい。:2008/04/06(日) 21:25:26 ID:nrvmy2DX0
コピー限定だけど、Disableかどうかにかかわらずとりあえず実行して
クリップボードが変更されたなら実行、そうでないなら放置、でいいのでは。
406名無しさん@お腹いっぱい。:2008/04/06(日) 21:34:22 ID:FTx5YlaY0
例は、分かりやすく書いただけなので、「コピー」とは別物です。
フックとかしないとだめなんでしょうか。

エロカッコいい神様、どうかおながいします。
407名無しさん@お腹いっぱい。:2008/04/06(日) 21:47:07 ID:JhcN1jbX0
>>404
サブクラス化
408名無しさん@お腹いっぱい。:2008/04/06(日) 23:24:36 ID:FTx5YlaY0
サンプル見つけました。
http://www.autohotkey.com/forum/topic21451.html
エロスさまどうもあらがとうごあいまさた。
409名無しさん@お腹いっぱい。:2008/04/07(月) 23:41:05 ID:TGYHX9Tn0
$^f::Send {Right}
として、MS Word 上で ^f のキースクロールをくりかえすと、
たまに (数百回に一回ぐらい) Ctrl-F が入力されてしまうんだけど、
こんなもんなのだろうか?

^v::Send {PgDn}
でも Ctrl-V が入っちゃう。Sleep を入れるともっと悪くなるよ orz

410名無しさん@お腹いっぱい。:2008/04/08(火) 01:04:03 ID:IhpfBzS20
AutoHotkeyでも、こういうソースコードっぽいソースを書く人もいるんだな
411名無しさん@お腹いっぱい。:2008/04/08(火) 07:59:06 ID:BaKIsNaN0
素人質問ですが、教えてください。

@ ;右クリック+ホイール↓ = タスク切り替え
  ~MButton & WheelDown:: AltTab

  ;右クリック+ホイール↑ = タスク切り替え(逆順)
  ~MButton & WheelUp:: ShiftAltTab

A ~MButton & WheelDown:: AltTab

   ~MButton & WheelUp:: ShiftAltTab

@の方法で記述すると、ダイアログにアイコンが表示されるんですが
Aだと表示されず、中央ボタンを押したらアプリが切り替わります。
ですのでホイールの意味がまったくないんです。
どこが違うんでしょうか?Aでも@のような操作がしたいんですが。
412名無しさん@お腹いっぱい。:2008/04/08(火) 08:00:03 ID:BaKIsNaN0
@のMButton→RButtonに置き換えてください。
413名無しさん@お腹いっぱい。:2008/04/08(火) 14:24:21 ID:AbWtGmV70
IMEが入力中かどうかを判別する方法はありますか?
変換や確定のSpace,Enterとそれ以外を分けたいんです。
414名無しさん@お腹いっぱい。:2008/04/08(火) 16:01:49 ID:/9Ax63ok0
IME状態を得るのなら探せば幾つか・・と即レスするところだった。
MS-IMEやATOKがはたらいているかどうか、見るスクリプトは見たことないなぁ。
415名無しさん@お腹いっぱい。:2008/04/08(火) 16:52:37 ID:225eMm8v0
OnかOffかという状態をみるだけならなんとでもなるんですけどね…
416414考え中:2008/04/08(火) 18:36:01 ID:/9Ax63ok0
AutoHotKey Threadの>>591で言われているPixelSearchを
実際に使ってみた。やれないことはなさそう。>>413

;0XC56A31 ←ATOK変換時の色(青) 0XFFFFFF ←未確定時の色(真っ白)
X2:=A_CaretX + 5
Y2:=A_CaretY + 1
PixelSearch, Px, Py, A_CaretX, A_CaretY, X2, Y2, 0X0F0400 ,0
if ErrorLevel = 0
IMEFlag=1
Msgbox, %IMEFlag%
417名無しさん@お腹いっぱい。:2008/04/09(水) 00:48:40 ID:8oDip4ta0
>>413に書いてある内容だけ実現したいなら、
"窓使いの憂鬱が"の方が向いている
だが、Vistaだと厳しいな
418名無しさん@お腹いっぱい。:2008/04/09(水) 02:52:04 ID:CYoGSIzg0
AutoHotkey から Text Services Framework (TSF) は使えないのだろうか?
419名無しさん@お腹いっぱい。:2008/04/09(水) 21:39:19 ID:Y/Kzcbh10
最近いじり始めたばかりだが
マウスジェスチャの動作書くのって
素人じゃ難しいかな?
どっかに詳しく書いてあるといいんだが。
420名無しさん@お腹いっぱい。:2008/04/09(水) 22:30:24 ID:j0FC8OmH0
>>419
マウスジェスチャならはやらせるページの作者がかなり高性能なものを作ってくれてる
それをいじるなり参考にするなりすべし
421419:2008/04/09(水) 23:30:39 ID:Y/Kzcbh10
一応それ入れて中見てみたけど
もう自分にはチンプンカンプンでした。
a::bみたいな簡単には行かないんですね。
422名無しさん@お腹いっぱい。:2008/04/10(木) 22:18:00 ID:R9AZZFcs0
RButton →←::〜
みたいな書式なら楽だな

ってか、マウ筋みたいだ
423名無しさん@お腹いっぱい。:2008/04/10(木) 22:35:21 ID:Z+zxLkTQ0
マウ筋をAHKに移行したいのだがマウ筋でつくった設定が膨大すぎてやる気が起きんw
424名無しさん@お腹いっぱい。:2008/04/10(木) 22:39:41 ID:Ys36v7eM0
ttp://www.ms.u-tokyo.ac.jp/~abenori/diary_old/200707.html#200707180
こんなんあるな

はやらせるページに比べたらはるかに低機能だが
425419:2008/04/10(木) 23:29:26 ID:zeB47hBY0
>>424

これは具体的にどうすればいいんでしょう?

ラベルで振り分けるようにしてみました.
マウ筋 に近い挙動にしたつもり.これをincludeして,
設定ファイルにはMG_****(****にはジェスチャの動作を入れる)なるラベルを書けばいいです.
プログラム名とかも指定できて,次のような感じ.
426419:2008/04/10(木) 23:30:29 ID:zeB47hBY0
include?
設定ファイル?
ahkに上の文章を書き込むだけじゃダメ?
427名無しさん@お腹いっぱい。:2008/04/11(金) 03:08:21 ID:uA7AvC520
自分で試行錯誤できないなら止めとけよ。
428名無しさん@お腹いっぱい。:2008/04/11(金) 18:19:46 ID:Pc4g0Pb20
::無変換+E
~vk1Dsc07B & e::Edit
こんなんやってるんだけどIMEオン時にひらがな、カタカナ、半角カタカナと切り替わるんだけど
この切り替わるのを無効に出来ないですか?
429名無しさん@お腹いっぱい。:2008/04/11(金) 22:53:50 ID:JQHzlaNh0
>>428
IME側の設定を変えるのが良いかと思う
430名無しさん@お腹いっぱい。:2008/04/11(金) 23:30:02 ID:1LAD2LgE0
~消して、IMEがOnかOffかを調べてOnだったら無変換送らないようにするとか
431名無しさん@お腹いっぱい。:2008/04/11(金) 23:57:14 ID:8JtpLxde0
>>429
あーそこ忘れた。
ありがとう

430もありがとう
432名無しさん@お腹いっぱい。:2008/04/16(水) 13:59:42 ID:QOZL0eII0
メインスクリプトAとサブスクリプトBがあって、それぞれ共通の変数cを使いたいんだが
いわゆる戻り値という形で変数を使いたい場合はどのようにすればいいかな?
今はその方法がわからないので、iniに読み書きすることでどうにか対応してるけど
もっとスマートな方法があったら教えてくれないか
一応スクリプト晒す

A
;回数入力-確認
;c ループ回数
runwait B.ahk
iniread,lc,ahk.ini,変数,c
msgbox,ループ回数 %c%
433名無しさん@お腹いっぱい。:2008/04/16(水) 14:02:29 ID:QOZL0eII0
つづき

B
;回数入力
;d ループ回数
loop
{
inputbox,d,回数入力,繰り返す回数を入力(1-999)
;Cancelを押した場合
;iniに0を書き出してmsgbox出してループ脱出終了
if errorlevel<>0
{
iniwrite,0,ahk.ini,変数,c
msgbox,終了します
return
}
;1〜999の数字を入力した場合
;iniにdを書き出してループ脱出終了
if d between 1 and 999
{
iniwrite,%a%,ahk.ini,変数,c
return
}
;1〜999以外の数字を入力した場合
;msgbox出してループ戻り
else
msgbox,回数は1-999の間で入力
}

Bはいろいろなスクリプトで使いまわしたいので
それぞれ独立した形でどうにか実現したいんだ・・・
434名無しさん@お腹いっぱい。:2008/04/16(水) 17:55:30 ID:KChtUcd/0
Bを関数化して汎用ライブラリにすりゃいいんじゃないの?
AなりCなり好きなメインスクリプトから Includeして使えばいい
435名無しさん@お腹いっぱい。:2008/04/16(水) 23:07:32 ID:dzf8gFoh0
>>434
(・∀・)デキター
どうもありがとう
436名無しさん@お腹いっぱい。:2008/04/16(水) 23:34:07 ID:fqJFcYl60
このスクリプト(ttp://tryhost.net/~catwalk/?AutoHotKey%2FScript%2FFavoriteFinder#k2e37617
動いている人いますか?

こちらでは

Error at line 94.

Line Text: List %FAV_DIR%
Error: This line does not contain a recognized action.

The program will exit.

というエラーになってしまうんですが。
437名無しさん@お腹いっぱい。:2008/04/16(水) 23:44:44 ID:nEMDvuYT0
そんな行はないぞ。手を入れてないか?
438名無しさん@お腹いっぱい。:2008/04/16(水) 23:46:22 ID:xXoSaRM/0
変数内の文字列で条件分岐したいのですが、
Tabってどうやって検索すればよいのでしょうか。
\tでも`tでもないんですね。
439名無しさん@お腹いっぱい。:2008/04/16(水) 23:54:27 ID:fqJFcYl60
>>437
FavoriteFinder.ahk の94行目を global List, FAV_DIR に変更したら一応動いたんですが
リストが取得できていないようです。

手を加えたのは12行目のMigemoOpenのところだけです。
440名無しさん@お腹いっぱい。:2008/04/17(木) 01:01:28 ID:tiSAGbZG0
>>438
%A_Tab%
441名無しさん@お腹いっぱい。:2008/04/17(木) 07:48:16 ID:pTaNcO/h0
;; EBWinで辞書検索
#s::
clipboard=
Send,^c
ClipWait
SetEnv,word,%clipboard%
run,C:\applications\EBWin\EBWin.exe /C=1 /S=%word%
return
442名無しさん@お腹いっぱい。:2008/04/17(木) 08:27:20 ID:BPEkA5hT0
>>439
気になったので調べてみたよ。

Files = %Files%%fn%`n

ret = %ret%%FAV_DIR%%item%.url`n



Files := Files . fn . "`n"

ret := ret . FAV_DIR . item . ".url`n"

に変える。

`nが何故か消えちゃって全部つながっちゃうのが原因だったみたい。AHKのバグなのかな??
しかし、作者さんの言うように検索がどうもうまくいかないみたい。
443名無しさん@お腹いっぱい。:2008/04/17(木) 08:48:06 ID:BPEkA5hT0
訂正:

ret = %ret%%FAV_DIR%%item%.url`n

の方は修正しなくても大丈夫みたい
444名無しさん@お腹いっぱい。:2008/04/17(木) 15:59:55 ID:pTaNcO/h0
>>442-443
ありがとうございます。

まだ使い始めたばかりなんですが色々できて面白そうですね。
445名無しさん@お腹いっぱい。:2008/04/18(金) 01:51:41 ID:4Mol9YLc0
Send系で、^や+等の特殊キーやアルファベットの大文字等のShiftを押しながら入力する文字が化けることってない?
^vで貼り付けをしたはずが単にvだけだったり、括弧()を入力したはずが89になったりとか…
Delayの値を増やしても時々発生するしバグなのかな
446名無しさん@お腹いっぱい。:2008/04/18(金) 09:22:21 ID:Tx6njfDx0
>>440
助かりました。ありがとうございます。
447名無しさん@お腹いっぱい。:2008/04/18(金) 18:10:02 ID:VCKaK5TL0
;Mac用ユーティリティ Smart Scroll X にlogiマウスのフリースピンっぽいことができるスクロールに慣性つける機能があるけど
;Win用ユーティリティでそれができるものがたぶんないと思うので作ってみたがが・・できたものは別物orz

;ホイールを速く回せば連続スクロールに変わり逆回転で止める(連続スクロール中に速度を変えることもできない・・
~WheelDown::
Wheelstate:=1 ; スクロールUpの停止条件
If (A_EventInfo > 2) ; ホイールの速度が設定値を超えると連続スクロール
Loop, 100 { ; 暴走対策・・
Sleep, 30 ; スクロール速度調整用のウェイト
Acceleration:=A_EventInfo*A_EventInfo*A_EventInfo ; スクロール加速度・・とりあえず3乗してみた
Loop,%Acceleration% {
if (Wheelstate=0) ; WheelUpが入力されるとスクロール停止
return ; breakしないでもいいんだろうか?
send,{WheelDown}
}}
return
~WheelUp::
Wheelstate:=0 ; スクロールDownの停止条件
If (A_EventInfo > 2)
Loop, 100 {
Sleep, 30
Acceleration:=A_EventInfo*A_EventInfo*A_EventInfo
Loop,%Acceleration% {
GetKeyState, Wheelstate, WheelDown
if (Wheelstate=1) ; WheelDownが入力されるとスクロール停止
return
send,{WheelUp}
}}
return

; これをもっとまともにできないだろうか・・?
448名無しさん@お腹いっぱい。:2008/04/19(土) 01:18:50 ID:BmW3iOlc0
~WheelUp::以下の
GetKeyState, Wheelstate, WheelDown
を消し忘れてた・・・それ以前の問題だろうけど・・
449名無しさん@お腹いっぱい。:2008/04/19(土) 02:31:09 ID:iBWV1p7A0
1) スクロール速度用の変数をグローバル変数でもつ
2) ホットキー設定では、スクロール速度の変数だけを操作して、何も送信しない("~"はつける)
3) タイマで一定のサブルーチンがコールされるようにする
4) 3)で呼ばれるルーチン内で指定の速度分のスクロールをPostMessageで利用して送る
ex) PostMessage,522,%wParam%,%lParam%,%cls%,ahk_id %hwnd%

って感じかなぁ。
トラックポイント派なので検証できず。
450名無しさん@お腹いっぱい。:2008/04/19(土) 15:49:36 ID:7DcoF6RP0
zを押したら
jとvをタイプしてくれるようにするには
どう書けばいいのか教えてください
451名無しさん@お腹いっぱい。:2008/04/19(土) 16:07:29 ID:7DcoF6RP0
::send,jv
452名無しさん@お腹いっぱい。:2008/04/19(土) 19:35:50 ID:kQy+E4pv0
なまず日記が復活して、楽しみにさかのぼって読んでたら・・・
もう面白いスクリプトは書いてくれなさそうで残念だ。
453名無しさん@お腹いっぱい。:2008/04/20(日) 06:21:20 ID:QN2yrlSL0
>>449
よくわからなかったが・・それらのキーワードをヒントに調べてみると
どうやら>>1のなまず日記の中で(3)(4)らしいことやってるようなのでそのあたり参考(むしろパクリつつ)作り直してみた・・・
1;
#Persistent
#MaxHotkeysPerInterval 300
FreeScroll("init",0) ; タイマ0でないと遅くなる・・
FreeScroll("setDefault",1.5,120,1) ; 加速度"1.5",最小スクロール幅"120",スクロール開始速度"1"
return
WheelDown::
FreeScroll("down")
return
WheelUp::
FreeScroll("up")
return
FreeScroll(dir = "", param1 = "", param2 = 0, param3 = 0)
{
static WheelDownCounter ; down方向のホイール割り込み回数
static WheelUpCounter ; up方向のホイール割り込み回数
static Acceleration ; スクロール加速度
static MinimumScrollValue ; 最小のスクロール量(1ノッチ
static FreeScrollSpeed ; 連続スクロールに切り替えるホイール速度
global FreeScrollState ; 連続スクロールの状態 0=通常スクロール,1=連続スクロール開始フラグ,2=連続スクロール中
global ScrollValue ; スクロール量(速度)
global cntrl ; スクロールコントロールウィンドウ?
if(!dir){
if(WheelDownCounter || WheelUpCounter){ ; ホイール入力があったとき
CoordMode,Mouse,Screen
MouseGetPos, posX, posY, window , cntrl, 3 ; PostMessageのために位置とウィンドウを取得
; WinActivate, ahk_id %window% ; ホイールでウィンドウをアクティブにする・・しかしスクロールがガクガクになる
454名無しさん@お腹いっぱい。:2008/04/20(日) 06:21:52 ID:QN2yrlSL0
;2
ScrollValue := Round((WheelDownCounter ** Acceleration) * MinimumScrollValue * -1) ; スクロール量の計算
ScrollValue := ScrollValue + Round((WheelUpCounter ** Acceleration) * MinimumScrollValue) ; スクロール量の計算
Critical
WheelDownCounter = ; ホイールDownカウンタをリセット
WheelUpCounter = ; ホイールUpカウンタをリセット
Critical, Off
Gosub, FreeScrollCheck ; 条件が面倒なので外に出した・・
}}
else if(dir == "init"){ ; 初期化
Critical
if(!Acceleration)
Acceleration = 1.5 ; 1で加速なし
if(!MinimumScrollValue)
MinimumScrollValue = 120 ; アプリによってはこれより低いとスクロールしないらしい
if(!FreeScrollSpeed)
FreeScrollSpeed = 1 ; 大きいほどスクロール切り替えに要する速度が速くなる
Critical, Off
if(!FreeScrollState)
FreeScrollState = 0 ; タイマ0でないと遅くなる・・
if(!param1)
time = 0
SetTimer, FreeScrollHandler, %time%
}else if(dir == "setDefault"){ ; Defaultの設定
Critical
if(param1 != 0)
Acceleration = %param1%
if(param2 != 0)
MinimumScrollValue = %param2%
Critical,Off
455名無しさん@お腹いっぱい。:2008/04/20(日) 06:22:17 ID:QN2yrlSL0
;3
if(param3 != 0)
FreeScrollSpeed = %param3%
}else if(dir == "down"){
WheelDownCounter++
if(WheelDownCounter > FreeScrollSpeed && FreeScrollState == 0) ; 連続スクロールのホイール速度取得
FreeScrollState := 1 ; 連続スクロールの開始フラグ
}else{
WheelUpCounter++
if(WheelUpCounter > FreeScrollSpeed && FreeScrollState == 0) ; 連続スクロールのホイール速度取得
FreeScrollState := 1 ; 連続スクロールの開始フラグ
}
if(ScrollValue == 0) ;スクロールしないときは終了。これがないとスクロールバーがアホになる・・
return
WinGetPos,winX,winY,winW,WinH, ahk_id %cntrl% ; コントロールの真ん中の座標・・?
if(posX == "")
posX := winX + winW // 2
if(posY == "")
posY := winY + winH // 2
wparam := (posY << 16) | (posX & 0xffff)
lparam := ScrollValue << 16
PostMessage, 522, %lparam%, %wparam%, , ahk_id %cntrl%  ; メッセージを送りスクロールする
if(FreeScrollState == 0) ; 通常スクロールのときはメッセージを送ったあとスクロール量をリセット
ScrollValue := 0
sleep,20 ; 増やすとスクロールは荒くなるが重いウィンドウでのスクロール停止が早くなる
return
}
FreeScrollCheck:
{ ; 通常スクロール以外の条件分岐
if(FreeScrollState == 0) ; 通常スクロールならさっさと抜ける
456名無しさん@お腹いっぱい。:2008/04/20(日) 06:23:08 ID:QN2yrlSL0
;4
return
if(FreeScrollState == 2 && FreeScrollValue > 0 && ScrollValue < 0){ ; 連続スクロールUpをWheelDownで止める
ScrollValue := 0
FreeScrollValue := 0
FreeScrollState := 0
return
}
if(FreeScrollState == 2 && FreeScrollValue < 0 && ScrollValue > 0){ ; 連続スクロールDownをWheelUpで止める
ScrollValue := 0
FreeScrollValue := 0
FreeScrollState := 0
return
}
if(FreeScrollState == 1 && ScrollValue != 0){ ; 連続スクロール開始時
FreeScrollValue := ScrollValue ; FreeScrollValueは連続スクロールの方向を保持しているような・・
FreeScrollState := 2
return
}}
FreeScrollHandler: ; タイマハンドラ FreeScroll()コールするだけ
{
FreeScroll()
return
}

長くなってしまった・・
スクロールがガクガクならずにホイールでウィンドウをアクティブにするにはどうすれば・?
他にもなにかあれば・・
457409:2008/04/23(水) 22:41:57 ID:FJVhdogM0
$^f::
BlockInput On
Send {Right}
BlockInput Off
return

としたら >>409 の問題現象が出なくなった。こんなもんで良いのだろうか…
AHK Version 1.0.47.06

>>445
同じ問題のように思えるので、BlockInput を追加して試してみてくれるとうれしいな。
458名無しさん@お腹いっぱい。:2008/04/27(日) 01:39:30 ID:TGEhJA8Z0
エクセルの永遠のテーマである
「入力」モードから、「編集」モードに行く時、
F2押さないと、移行しないっていう面倒な仕様。。

ぐぐるとみんなあの仕様にイライラしてて
でも解決策ないみたいで。

autohotkeyなら、
入力開始したら、左下ステータスの文字を判定して、すぐ編集モードに移るのができそうな気がして。

もし「超々々々々」気が向いたら、誰かあの仕様を回避するスクリプト書いてくれませんか
459名無しさん@お腹いっぱい。:2008/04/27(日) 14:50:06 ID:6JZuf2bE0
F1ヘルプさえヌッコロしとけばF2編集は別に苦痛じゃない。
Windows標準ショートカットなので慣れれば忘れることもそうないし。
460名無しさん@お腹いっぱい。:2008/04/27(日) 16:31:27 ID:LWYvIa7f0
F2の何が面倒なんだ?
選択項目編集としては標準キーバインドじゃん
せいぜいF2から他のキーに変えたいなら分かるが

モード移行は自覚的に行いたいし自動的に
編集モードとかのほうが糞仕様だと思うが
461名無しさん@お腹いっぱい。:2008/04/27(日) 16:51:19 ID:4OSW5I0L0
Vimのノーマルモードくらい非編集時に英数字キーに機能が割り当てられているわけではないし、
こういった直接入力の要望が出てくるのはそんなに不自然なことではないと思うけど…

作ってやれよと言うつもりは毛頭ないけど、なんでも頭ごなしに否定するのはどうなのさ。
462名無しさん@お腹いっぱい。:2008/04/27(日) 18:02:31 ID:GNgnzel70
Ctrl+何かにF2を割り当てるような定義じゃ駄目なのか、それほどせっかちさんなのか
463名無しさん@お腹いっぱい。:2008/04/27(日) 18:07:54 ID:fR4TStBp0
セルを上書きしたい場合は、一度内容を消すのかな?

464名無しさん@お腹いっぱい。:2008/04/27(日) 18:13:59 ID:4hZaxx9B0
AHKで、エクセル中は無変換キーあたりをF2に割り当てたらどうよ?
465名無しさん@お腹いっぱい。:2008/04/28(月) 05:57:30 ID:reBjcHgv0
>>458 うちの会社はこうだが、何をぐぐったんだ?みんなってお前一人だろ。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
SendKeys "{F2}"
End Sub
466名無しさん@お腹いっぱい。:2008/04/28(月) 12:08:52 ID:SAJE0Db70
Vistaに導入する際に、UACは特に気にせずインスコしても動きますか?
導入時の注意事項があれば教えてください。

又、mousegesture.ahkをVistaで使ってる人、問題点などないでしょうか?
467名無しさん@お腹いっぱい。:2008/04/28(月) 12:24:34 ID:UjhgWZ4K0
CUIのツールが標準出力に吐き出した値を拾って
ahkのGUIでその数値を加工して表示し隊のですが
どうすれば標準出力から拾ってこれますか?
468名無しさん@お腹いっぱい。:2008/04/28(月) 14:28:05 ID:KqItUE2c0
スレチだけど、Windows Script HostとかPowerShellを使うほうがいいような
469名無しさん@お腹いっぱい。:2008/04/28(月) 15:46:22 ID:Bwb7i5Fk0
>>467
そのCUIのツールは、リダイレクトで結果をファイルにはき出させて、
AHKからそのファイルの中を見る
とか・・・
470名無しさん@お腹いっぱい。:2008/04/28(月) 16:51:32 ID:ARGm8jsa0
>>466
基本、あまり問題は起きない。
マウスジェスチャもつかえる。

でもこれまで遭遇した問題は、
ホットキーをランチャーがわりにして、
メッセンジャーを立ち上げようとしたときにものすごいディレイがあるとかだったかな・・・・

とりあえずオフにしてる。
471466:2008/04/28(月) 17:56:50 ID:mttKTXzzO
>>470
ありがと。勢いインスコしてみたがmousegesture.ahkは問題ないみたい。
会社のXPマシンと、ウチの旧XPマシンで2ヵ月ほど前にmousegesture.ahkを導入したらマウスジェスチャ無しで操作するのが厳しくなっちゃって…。
1年程前に買ったVistaマシンはフリーソフトで汚さないwって決めてたんだけど、マウスジェスチャできないから旧マシンを使う頻度の方が高くなっちゃってたんですよ。
これで快適にVistaが使えます。
472名無しさん@お腹いっぱい。:2008/04/28(月) 19:26:29 ID:UjhgWZ4K0
>>468,469
ありがとうございます
こういう用途にはahkは向いてないみたいですね
おとなしく標準出力以外の出力方法があるソフトを探すか
他のスクリプト言語に切替えます λ..........トボトボ
473名無しさん@お腹いっぱい。:2008/04/28(月) 21:32:35 ID:w8H8giGfO
規制中なので携帯から簡単に。
cmdret.dllを使うと楽。
474467:2008/04/29(火) 00:23:17 ID:TKo6PHKn0
>>473
おお、こういうのがあるんですね
Forumのサンプルコード見ながら頑張ってみます
ありがとうございました
475名無しさん@お腹いっぱい。:2008/04/30(水) 23:31:11 ID:ZElAylVP0
AHKでコンパイルした実行ファイルを2つ起動していると、
片方で#IfWinActiveが効いた瞬間にもう片方が動作
しなくなってしまうのですが、なぜでしょうか。
Reloadすると動作するようになるのですが、いちいち面倒です。
476名無しさん@お腹いっぱい。:2008/05/01(木) 19:30:50 ID:Fgucx+QS0
Menu, Showで表示させたメニューなんですが、
キーボードでEscapeキーを押すと消えてくれますが、
Send,{Escape}で消えてくれません。解決策はあるでしょうか?
477名無しさん@お腹いっぱい。:2008/05/01(木) 20:13:18 ID:agwV3sli0
>>476
別のAHKスクリプトからじゃないと消せないんじゃないだろか。
478名無しさん@お腹いっぱい。:2008/05/01(木) 20:59:51 ID:/6hzVxqK0
{ESC}
でいいんじゃまいか
479名無しさん@お腹いっぱい。:2008/05/02(金) 00:25:36 ID:Q776ljbS0
>>465
そのVBAは矢印キーでセル移動するだけで必ず編集modeになるな
酷すぎるw
480名無しさん@お腹いっぱい。:2008/05/02(金) 05:19:12 ID:34mNTVls0
AHKスレらしくエクセルのdll呼び出してずばっと解決してくれる神はおらんのか?
481名無しさん@お腹いっぱい。:2008/05/03(土) 09:23:38 ID:4YTov+QA0
>>458
ttp://www11.axfc.net/uploader/20/so/He_97006.zip DLKey=ahk
あまり試してない。
古いExcel使って試したから新しいExcelだとだめかも。(Excel 2000使用)

編集状態のままセル移動のオマケ付き。
Excelって、テキストデータの切り貼りとか整形ぐらいで たまにしか使ってなかったから
編集状態維持したままセル移動出来ないの知らんかった。

設定はエディタで編集して。
482481:2008/05/03(土) 10:39:01 ID:4YTov+QA0
483名無しさん@お腹いっぱい。:2008/05/03(土) 15:49:27 ID:cnmVYKra0
ウィンドウを垂直方向・水平方向それぞれに
最大化・リストアのトグルをするには
どうすればいいでしょうか?
窓使いの憂鬱でいうところのWindowVMaximize,
WindowHMaximizeを実現したいのですが・・・
484名無しさん@お腹いっぱい。:2008/05/03(土) 20:16:23 ID:8H08QxQU0
WinGetPosで直近のサイズを取得してクラスやタイトルと一緒に保存、
WinMoveで縦なり横なりを最大化したサイズに変更
戻す時は直近のサイズをまた取得してどちらかがマックスだったら
保存してあるサイズに戻す、とか
485名無しさん@お腹いっぱい。:2008/05/03(土) 21:30:24 ID:g1xl/KBL0
>>458 出てこい。つか、>>482でも動かない希ガス。
486481:2008/05/03(土) 21:45:23 ID:4YTov+QA0
思い付きで機能追加しまくったんで使いもんにならなくなってた。
ttp://www11.axfc.net/uploader/20/so/He_97128.zip DLKey=ahk

・日本語入力確定の為に[Enter]押しても次のセルに移ってしまう。
・「編集開始1発目のキーが [BS]か[Del]でセルクリア」が不完全。
・[F2]自動モードOff時は「[BS]か[Del]でセルクリア」もOffにした。
・[F2]自動モードをOffにした時、[F2]のホットキーまでOffにしていたので、[F2]で
 編集モードに入った時、「自動でカーソル位置の変更」が機能しなかった。

Excel2000しか試せないからExcelのバージョンによって挙動が違う場合は正直お手上げ。

>>485
全く機能が働かないならバージョン違いによる可能性大。
487481:2008/05/03(土) 22:15:29 ID:4YTov+QA0
Excelのバージョン違いによるタイトル違いの可能性を忘れてた。
125:SwitchMode:
126:  Hotkey,IfWinActive,Microsoft Excel -  <-ここが違うと全部だめ
127:  SetHotKeys(Excel_Label,Excel_HotKeys)

あと、設定にあるクラス名が一致してれば ある程度は動くはず。
488名無しさん@お腹いっぱい。:2008/05/04(日) 00:13:11 ID:dJtYYrWj0
斜め黄泉のおっさんですがDLLを1つ作成して
WH_KEYBOARDをグローバルフックをしたらいいとおもうよ
http://www.kumei.ne.jp/c_lang/sdk2/sdk_161.htm
http://www.autohotkey.com/forum/topic19367.html
489名無しさん@お腹いっぱい。:2008/05/04(日) 00:18:30 ID:Jy+nA7+u0
>>486

458じゃないですが、いただきました。

Excel2000と2003で今のところ問題なし。というほど色々弄くってはいないけど・・・
便利ですねー。今まで無変換キーにF2を割り当てていたのだが、これ使おうかなぁ。
ただ、AHKのスクリプト3つ(内1つはMousegesture.ahk)走らす事になるからちと悩みどころ。
とりあえず様子見てみます〜。


490481:2008/05/04(日) 00:47:24 ID:35cVLblb0
>>488
それ作りはじめに思った。
全文字キー1個1個打ちながら、こんなのタイマー回してExcel見つけたらスレッドフック
かけちった方がはえーなって。処理する必要ないときはスルーすれば済むし。

>>489
2003はOKと。報告d。
#Includeで他のスクリプトのケツに読み込んで、このスクリプトの1番上に適当なラベル名を
付けて、他のスクリプトの起動時にGosubで呼び出せば多分問題なく使えるとおも。
491名無しさん@お腹いっぱい。:2008/05/04(日) 18:44:02 ID:jcnqkmNH0
Shift+テンキーの「.」でカンマ「,」を出そうとしていますが
+NumpadDot::,
と記述してもDelete(デフォルトの動作)になってしまいます。
どうすればよろしいでしょうか、お知恵を拝借したいです。
492名無しさん@お腹いっぱい。:2008/05/04(日) 18:44:52 ID:cGN/EYVF0
NumLockオフったら
493名無しさん@お腹いっぱい。:2008/05/04(日) 22:34:17 ID:ydz3yyO/0
Spaceと数字のコンビネーションでプログラムを実行しようと
下のように書いたのですが、単にSpaceを入力するとき
キーリピートが利きません。
キーリピートが利くようにはできないでしょうか?

Space & 1:: Run, "c:\path\to\exe"
~Space:: Send, {Space}
~*Space:: return
494名無しさん@お腹いっぱい。:2008/05/04(日) 23:44:10 ID:KBkpDPw80
~Space & 1:: Run, "c:\path\to\exe"
だけでいいだろ
495名無しさん@お腹いっぱい。:2008/05/05(月) 00:34:26 ID:tOYYOoT+0
>>494
ありがとうございます。できました。
が、当たり前かもしれませんがSpaceを押して1を押す前の間に
Spaceが入力されてしまうんですね。
Spaceを押して直後に1が入力されればSpaceはモディファイアのように働き、
何も入力されなかったときだけSpaceを入力するようにはできますでしょうか?
496名無しさん@お腹いっぱい。:2008/05/05(月) 01:10:00 ID:Tkv85+Ez0
なんでSpaceなんて一番使用頻度の高いKeyを修飾keyとして使うという発想が沸くのかが疑問だ…。
497名無しさん@お腹いっぱい。:2008/05/05(月) 02:14:41 ID:9F1eIESU0
今Windows標準のデフラグソフト「ディスク デフラグ ツール」を起動させてCドライブの
デフラグが終わったら表示されたウィンドウを閉じて次に自動的にDドライブのデフラグを開始
させるような一見簡単そうなスクリプトを組んでいます。Windows標準のデフラグが2つ同時
や1個目終了ご2個目等のように実行できない為、退席時間が長い場合に有用だと思っています。
スクリプトを晒します。
#persistent
run, %SystemRoot%\system32\dfrg.msc, C:\WINDOWS\system32
;sleep, 2000
setKeyDelay, 200
SetTitleMatchMode, 2
;ifWinActive, ahk_class MMCMainFrame
winWaitActive, ahk_class MMCMainFrame
{
send, {TAB}{SPACE}
}
;winWaitActive, ahk_class #32770
winWaitActive, , 最適化が完了しました
{
msgbox, ココまできたよん
sleep, 500
send, {ALT DOWN}C{ALT UP}
sleep, 200
mouseClick, LEFT, 80, 116
sleep, 200
send, {TAB 2}{SPACE}
}
今のところこんな感じなのですが、どおおおおおおしてもCの最適化終了後の「最適化が完了しました」
ウィンドウをwinWaitActiveで取得できません!ahk_class指定してもダメだし(ahk_class #32770)
ウィンドウタイトルは本体のデフラグと全く同じタイトルなのでいきなり判定されてしまうし、
ウィンドウテキストでチェックかけても取得できず。 http://lukewarm.s101.xrea.com/commands/WinWaitActive.html を
見てみるとWinTitleとWinTextぐらいでしか指定できないみたいで、打つ手なしと言う感じです。
いくら試行錯誤しても解決できません・・・。ご教示よろしくお願い致します・・・。
498名無しさん@お腹いっぱい。:2008/05/05(月) 02:38:52 ID:tOYYOoT+0
>>494
一番使用頻度が高いので大きくて押しやすくなっているからです。
AHK自体いじり始めたばかりなのですが、
すばやく操作するのに便利かと思いやってみよう思いました。
やはり何らかのモディファイアとのコンビネーションに
するしかないでしょうか?
499名無しさん@お腹いっぱい。:2008/05/05(月) 02:59:29 ID:3X2C+hLq0
スペースと1では、間違えて意図しないときそれが作動してしまいそうだなあとすごく思いますよ
500名無しさん@お腹いっぱい。:2008/05/05(月) 03:05:06 ID:3X2C+hLq0
>>497
Diskeeper+uwscで似たようなことをやった例
ttp://blogs.yahoo.co.jp/uwsc_script/31027984.html
501名無しさん@お腹いっぱい。:2008/05/05(月) 03:09:03 ID:M3ocFwX1O
>>498
つスペースの隣の無変換キー
502名無しさん@お腹いっぱい。:2008/05/05(月) 03:39:50 ID:M3ocFwX1O
>>491
たぶん…
左側はShift & NumpadDotにせなアカン。右側は,ってエスケープ必要じゃなかつたっけ?
503名無しさん@お腹いっぱい。:2008/05/05(月) 07:37:21 ID:7ihOQ5bQ0
>>497
defrag.exeじゃダメなのかな

自分は JkDefrag 使ってる。これだと JkDefrag.exe -q C: D: だけで期待した動作になる。
Windowsのデフラグよりも速いし、最適化も優れてる。スクリーンセーバ中の動作も可。
ttp://www.kessels.com/JkDefrag/
ttp://pc11.2ch.net/test/read.cgi/software/1169559049/
504名無しさん@お腹いっぱい。:2008/05/05(月) 10:06:33 ID:9F1eIESU0
>>500
おお、ちょっと参考になりました。
UWSCのコードは全く知らないのですが、やはりここでも
>Defrid=GetID("Defragmentation Completed","#32770")
のように、ahk_class #32770が動いてますね。Windows標準のデフラグツールだから無理なのかな・・・。

>>503
defrag.exeがありましたねぇ〜、そういえば。すっかり忘れてました。
これだとAHKで書くよりBatで書いた方が早いかな?w

JkDefragですかぁ・・・・ 私はPerfect Disk7.0を今まで使ってましたが、今回このスクリプトを
書いている理由は、Perfect Disk7.0がない環境においてもWindows標準ツールのみで
2つのドライブをデフラグ出来るようにしたかったという経緯があります。
色々教えて頂きありがとうございました。
505名無しさん@お腹いっぱい。:2008/05/05(月) 10:10:04 ID:igWkcxAk0
>>504
何かのコントロール(ボタン)が押せるようになってるかどうかで判断したら?
そういう変化があるボタンがこのケースであるかどうかは分からんけど
506名無しさん@お腹いっぱい。:2008/05/05(月) 10:11:29 ID:9F1eIESU0
>>503
書いてみた。なんという簡単なコード・・・


@echo off
defrag c: -f -v
defrag d: -f -v
pause

たったこれだけです。こういう用途だとAHK使うよりBatの方がいいですね・・・。
507名無しさん@お腹いっぱい。:2008/05/05(月) 17:10:54 ID:rXDxE/Vg0
ファイルのプロパティ-概要の項目を変更したいんだけど
「エクスプローラ起動→ファイル選択が完了している」という前提でしか
ファイルのプロパティを開けなくて困ってます。
理想としては、ファイル名を渡すだけでエクスプローラなどを経由せずに
直接変更したいんだ・・・AHKでそういうことは実現可能?
もし何かしら方法があるのならご教示お願いします。
508名無しさん@お腹いっぱい。:2008/05/05(月) 17:41:03 ID:igWkcxAk0
すぐ上に出てるだろ、と思ったらここじゃなくてフェンリルのスレだった
509名無しさん@お腹いっぱい。:2008/05/06(火) 23:33:50 ID:o0k8LHCA0
>>481
ExcelAutoF2.ahkの不具合?報告。
オートシェイプに文字を入れようとすると、「参照が正しくありません」になります。
理屈はわかりませんが、とにかくExcelAutoF2.ahkを走らせた状態でオートシェイプに文字を入れようと
するとそうなり、ExcelAutoF2.ahkを落とせば問題ありません。
おそらく関係無いと思いますが、設定は以下の通りです。
Excel_AddMode = 1
Excel_EnterTab = 0
Excel_Space = 1
Excel_HomeOrEnd = 0
Excel_BSDel = 1
510名無しさん@お腹いっぱい。:2008/05/06(火) 23:36:10 ID:nXY1j0ks0
PERSONAL.XLSがおかしいとか?
511名無しさん@お腹いっぱい。:2008/05/07(水) 00:01:06 ID:o0k8LHCA0
>>510
うーん、良くわからないけどデフォのままだからなぁ。
会社のPC(Excel2000)と、家のPC(Excel2003)の両方で確認。

今気づいたけど、オートシェイプに文字入力しようとする時にF2を押して入力すると「参照が正しくありません。」
になるんだわ。
だから、ExcelAutoF2.ahkを走らせてるとそうなるってのは当たり前な訳だが、オートシェイプに入力する時はF2
しない様に組めますか〜作者様・・・
512名無しさん@お腹いっぱい。:2008/05/07(水) 21:02:36 ID:Yjv7RteR0
FileLoopでディレクトリ内のファイル数でループさせ、ファイル名を変更したいのですが、
正規表現の書き方が理解できていないので、アドバイスいただけるとうれしいです。

やりたいこと

|あいうえお 1話
|あいうえお 2話
|あいうえお 3話
|あいうえお 10話
|
|↓
|
|あいうえお 01話 ←0を追加
|あいうえお 02話 ←0を追加
|あいうえお 03話 ←0を追加
|あいうえお 10話 ←そのまま

条件
 半角または全角スペースの後に半角数字がきて、かつ1桁だったら、
 最初の数字の前に0を挟む

> ;ファイル名変更
> Loop, *.flv,0,0
> {
> NewStr := RegExReplace(A_LoopFileName, "\s\d", "\s0\d", ReplacementCount)
> }

これだと、置換後のデータに \s0\d がそのまま出力されてしまい、うまく動きませんでした。

参考にしたページ
http://lukewarm.s101.xrea.com/RegEx.html
513名無しさん@お腹いっぱい。:2008/05/07(水) 22:03:32 ID:9paZiFl90
NewStr := RegExReplace(A_LoopFileName, "(\s)(\d)([^\d])", "$10$2$3", ReplacementCount)
でどう?
[スペース][数字][数字以外]の組み合わせにマッチ
514名無しさん@お腹いっぱい。:2008/05/07(水) 22:32:32 ID:Yjv7RteR0
>>513
ありがとうございます。なるほど、こう指定するんですね。
おかげさまで、見通しがつきましたので、これをベースに仕上げていきます。

完璧に成功
 >MIAU 第1回ダビング10シンポジウム 1(sm2097191).flv
 >MIAU 第1回ダビング10シンポジウム 01(sm2097191).flv
 >
 >MIAU 第1回ダビング10シンポジウム 2(sm2097287).flv
 >MIAU 第1回ダビング10シンポジウム 02(sm2097287).flv
 
要検討
 >AC版 ドルアーガの塔 ALLクリア+ZAP 1ゲーム20円(sm2057056).flv
 >AC版 ドルアーガの塔 ALLクリア+ZAP 01ゲーム20円(sm2057056).flv
 >
 >MSX ガルフォース 高画質版 1of2(sm1325845).flv
 >MSX ガルフォース 高画質版 01of2(sm1325845).flv
 >
 >カダッシュ (タイトー・1990.03) 1/3(sm2294905).flv
 >カダッシュ (タイトー・1990.03) 01/3(sm2294905).flv
 
スラッシュがあったら発動しないとか、法則を見つけて例外パラメータで潰す感じですかね
515名無しさん@お腹いっぱい。:2008/05/07(水) 23:43:59 ID:9paZiFl90
それはもうフォルダまるごとループかけるんでなく、変更したいファイルだけ選択してやった方がいいんじゃ?
選択してるファイルはCtrl+Cで取得できるんで、それに対してループさせるとか。
516名無しさん@お腹いっぱい。:2008/05/07(水) 23:49:52 ID:9paZiFl90
ちなみに、こういったファイルに対する作業をやるために、単機能のahkファイルを作っておいて
XButton1,2にその時々において割り振りを切り替えられるようにしてる。

いまだけXbutton2に 「選択ファイルの更新日時をすべてそろえる.ahk」を割り振ろう、とか
517名無しさん@お腹いっぱい。:2008/05/07(水) 23:51:17 ID:PU1RHSIV0
URLの数字を増やしたり減らしたりするAHKで昔苦労したっけ
アレもいろいろ条件が複雑でな
518481:2008/05/08(木) 02:14:20 ID:J+Y8vwYQ0
>>511
遅くなってごめん。
試しにやってみた。[F2]押すとスクリプトに関係なく上の横長のエディットボックスにフォーカスが
移って、その状態で文字入力すると「参照が正しくありません。」と出るんね。

で、左上のセル番号を表示しているコンボボックスの文字列を取得して分岐しようと思ったら、
実際に画面上に表示されている値と、コンボボックス内部の値が一致してなくて苦戦。という状態。
一度コンボボックスにフォーカス当てれば内部の値も更新されるんだけど。
519名無しさん@お腹いっぱい。:2008/05/08(木) 09:27:37 ID:x5ytqvPG0
>>517
それやりたかったやつなのですが、できませんでした。
よかったらソースいただけますか?
520名無しさん@お腹いっぱい。:2008/05/08(木) 19:43:44 ID:J+Y8vwYQ0
>>511
ttp://www11.axfc.net/uploader/20/so/He_98575.zip DLKey=ahk

標準ツールバー(「上書き」とか「開く」ボタンがあるやつ)の状態を確認してるから、標準ツールバー
が表示されてないとオートシェイプ使用時の不具合は回避出来ない。他は今までどおり。

無駄省き等でちょこちょこいじったからバグあるかも。
521名無しさん@お腹いっぱい。:2008/05/08(木) 22:38:38 ID:+1iNoZSC0
てか、コードじゃなくて正規表現だけのような・・・

1個のパターンだけで表現しようとするから難しい(ってか面倒)かと。

「検索パターン」と「置換文字列」をセットにして、
複数のパターンを順次かければいいんじゃないかと。

INIファイルとかにパターンを外だしすると、メンテ性も良さげ。

多重フィルタみたいな感じ。
522名無しさん@お腹いっぱい。:2008/05/09(金) 01:56:30 ID:oLj4i3l00
既出だと思うけど、
AHKでコンパイルするとマカフィがウィルスですと
ご認識して、勝手に削除しちゃうんだけど、
AHKで作ったものを安全と認識させるにはどうすればいいのですか?

※マカフィを無効にはしたくないです。
523名無しさん@お腹いっぱい。:2008/05/09(金) 02:37:57 ID:XMewj1P/0
UPX圧縮あたりかねぇ
524名無しさん@お腹いっぱい。:2008/05/09(金) 02:45:37 ID:XMewj1P/0
525名無しさん@お腹いっぱい。:2008/05/09(金) 05:03:40 ID:QY922Rg80
まあ実際ウィルスだしな。
キーロガーなんかも簡単に作れちゃうし。
526名無しさん@お腹いっぱい。:2008/05/09(金) 16:08:49 ID:jBwpf+lE0
>>525
その論理はおかしい
527名無しさん@お腹いっぱい。:2008/05/09(金) 16:55:30 ID:idNAx07N0
ccとかも駄目だな。
528名無しさん@お腹いっぱい。:2008/05/09(金) 17:34:25 ID:GpewcdJF0
マカフィーに報告して、埋め込まれたAHKエンジン部分だけで判定しないようにしてもらうとか、
どっか一箇所のフォルダに入れておいて、そこだけスキャンの除外設定すればいいんじゃないかと
529名無しさん@お腹いっぱい。:2008/05/10(土) 16:01:08 ID:cI06fFxv0
UPX圧縮じゃなくて、
AHKのエンジンがウィルスチェックに引っかかっている模様。
マカフィーだけでなく、そこいらのウィルスチェックソフトも同様のご認知をしているみたい。
みんなはどうしてるの?
530名無しさん@お腹いっぱい。:2008/05/10(土) 16:08:02 ID:oHi2W79S0
圧縮すりゃ回避できるかもね
って>>523は言ってると思うんだが
531名無しさん@お腹いっぱい。:2008/05/10(土) 16:28:31 ID:wYoClkp80
>>519
どうせスケベなページ連続で開きたいんだろ?
皆考えることは同じだな
俺はこんなんしか思いつかなかったが、もっと画期的なやつあるなら知りたい

cnt = 0
Loop
{
cnt := cnt + 1
run http://www.hogehoge.com/sukebe/ero/%cnt%/
sleep 1000
if cnt = 100
break
}
532名無しさん@お腹いっぱい。:2008/05/10(土) 16:51:27 ID:pMlcH0Uj0
ウィンドウを相対的に移動するために下のように書いたのですが、
Win+矢印を押しっぱなしにしたときの動きが遅いです。
1回呼び出されるたびに一瞬ひっかかる感じです。
AHKではこんなものと諦めるしかないでしょうか?

WinMove2(dx, dy)
{
WinGetPos, X, Y, Width, Height, A
WinMove, A, , X + dx, Y + dy
}

#Up:: WinMove2(0, -16)
#Down:: WinMove2(0, 16)
#Left:: WinMove2(-16, 0)
#Right:: WinMove2(16, 0)
533名無しさん@お腹いっぱい。:2008/05/10(土) 17:26:46 ID:WSeKGJ880
「おしっぱなし」のときの動作を別に作ればいいんじゃね?
534名無しさん@お腹いっぱい。:2008/05/10(土) 18:08:35 ID:bkFh+con0
キーボードの設定でキーリピートを速くする
もしくは
GetKeyStateでキーを監視しつつLoopで回す
SetWinDelayも忘れずに
535名無しさん@お腹いっぱい。:2008/05/10(土) 22:14:46 ID:pMlcH0Uj0
>>533>>534
キーボードのリピート設定はMaxです。
WinDelayがデフォルトで100になってるんですね。
これを2くらいにすることで満足できるレベルになりました。
せっかくなので「おしっぱなし」のときを考慮して書いてみようと思い、
WinMoveをLoopで囲み、下のようにBreakさせようとしたのですが、
無限ループにキーを放してもループからぬけません。
なぜなんでしょうか?

GetKeyState, s, Left
If s = "U"
{
Break
}
536名無しさん@お腹いっぱい。:2008/05/10(土) 22:18:14 ID:TEwDHYzo0
>>531
HTTPでヘッダ取得して200だったらrunするようにすれば?
537名無しさん@お腹いっぱい。:2008/05/10(土) 22:20:01 ID:wYoClkp80
>>536
言ってる意味がわからない・・・
538名無しさん@お腹いっぱい。:2008/05/10(土) 22:26:14 ID:mttGHkLM0
Loopで日本語ファイル名を取得すると、ファイル名が化けますね。

 ;AutoHotkeyで取り扱えないダメ文字ファイルの場合は、処理を飛ばす
 IfNotExist %A_LoopFileName%
 continue

こんな感じで、あるはずのファイルを読んで見つからなかったら処理を飛ばす
という逃げを作りましたが、できればフルに動かしたいです。

日本語を扱えるパッチか、なにか対策はないでしょうか。
539名無しさん@お腹いっぱい。:2008/05/10(土) 22:30:40 ID:TEwDHYzo0
>>537
サーバーにページが存在するかどうか問い合わせて存在したらrunするということ。
http://www.studyinghttp.net/を読めば出来ると思う
540名無しさん@お腹いっぱい。:2008/05/10(土) 22:43:26 ID:wYoClkp80
>>539
そういうことしたいわけじゃないよ。

エロページはだいたいパスの最後が連番になってるページが多いので
1〜100までページがあるのがわかってる時、片っ端から開いてくのに使ったりする。
Irvineでダウンするにしてもページ内のjpg数がページによってまちまちだしなw

>>517>>519もそういう事がしたいんだろう?
541名無しさん@お腹いっぱい。:2008/05/10(土) 23:29:14 ID:cI06fFxv0
エロを必死に確認したいID:wYoClkp80であった・・・www
542名無しさん@お腹いっぱい。:2008/05/10(土) 23:30:58 ID:iuOrHl4L0
なんで一般的なスクリプトで済むことを
AHKでがんばりたがるのかがわからない。
543名無しさん@お腹いっぱい。:2008/05/11(日) 00:00:09 ID:k8/9xXte0
>>538
>2の なまず日記 を漁ってみ
544名無しさん@お腹いっぱい。:2008/05/11(日) 00:23:08 ID:x2ZUK6I60
>>535
if var = value
なので、その場合は
if s = U
が正しい
あと好みによるけど GetKeyState() って関数も
545名無しさん@お腹いっぱい。:2008/05/11(日) 02:30:35 ID:2QK3XTeB0
>>540
そうそう、連番のエロページを自動でめくってムヒヒwって
ちがわい!

>>536
みたいなことってできるんだ。thx!
546名無しさん@お腹いっぱい。:2008/05/11(日) 02:32:46 ID:v6FefRTW0
>>538
なまずさんのとこの関数は処理が激烈に遅いので、速度を求めるもの(ファイル検索とか)だと目的にあわせて多少技がいると思う。

>>540
1,Alt+DなりでURL拾う
2,そのURLを右から読んで最初に出てきた数字を+1
じゃだめかい?
547名無しさん@お腹いっぱい。:2008/05/11(日) 02:50:33 ID:rCs0tb0O0
文字が化けて困ることをするのなら他のスクリプト言語を選ぶのもひとつの選択ではないか。煽りじゃなく。
548名無しさん@お腹いっぱい。:2008/05/11(日) 09:21:15 ID:3yDLllki0
ttp://lukewarm.s101.xrea.com/myscripts/MouseGesture.html
マウスジェスチャスクリプトで、中央ボタン(MB)のダブルクリックを検知するには
どう書けばいいのでしょうか。
MB _ _ MB _ か、MB _ MB _ か試したけれど動かない…。
549名無しさん@お腹いっぱい。:2008/05/11(日) 09:22:35 ID:QLi8tEuC0
漏れはファイルパスだけダメ文字修正されたヴァージョン使ってるよ
どこで拾ったかは忘れたが
550名無しさん@お腹いっぱい。:2008/05/11(日) 09:24:00 ID:QLi8tEuC0
駄目文字微対策版
ttp://yak.myhome.cx/junks/index.html#ahk.cp932

これだ
551名無しさん@お腹いっぱい。:2008/05/11(日) 13:22:44 ID:2QK3XTeB0
>>539
>サーバーにページが存在するかどうか問い合わせて
これってAHKでできるんですか?
URLDownloadToFileは違う気がするし。
552名無しさん@お腹いっぱい。:2008/05/11(日) 15:12:15 ID:APYiR8av0
>>544
ありがとうございます。
「"」をはずしてGetKeyStateにPをつけることでうまくいきました。
最初はGetKeyState()を使っていたのですが、
どういうわけかキーを放してもループを抜けないのことがあるので
引数3つ版を使いました。
553名無しさん@お腹いっぱい。:2008/05/11(日) 16:48:25 ID:UwM9OJqU0
>>549-550
みごとに動きました!ありがとうございます!結婚してください!

1つ問題を言うなら、AutoHotkeyのトレイアイコンを変更するコマンドで

>Menu,Tray,Icon, .\AutoHotkey.exe,1

という指定をしてるのですが、この行で「アイコンがない」という意味の
エラーが出るようになりました。
しかし、外部のアイコンを指定して回避できました。
554名無しさん@お腹いっぱい。:2008/05/11(日) 17:53:33 ID:FcY1c5ey0
エロ画像のURLを連番でムヒヒって、
AHKじゃなくてブラウザ用の拡張ツールとかダウンローダ用つーるのようなきがする、
ってかそうしないとアクション数が多すぎて面倒。
つか、DOM解析したりとか、マウス直下のエレメントから直に実行した方が効率いいし。

そうえいば、Irvineなら
 http://boo.foo.woo.com/hoge/fuga[00-99].jpg
なんてのを、
 http://boo.foo.woo.com/hoge/fuga00jpg
  :
 http://boo.foo.woo.com/hoge/fuga99jpg
って感じに展開してダウンロードキュー作ってくれたはず。

まぁ、Janeとかから間接的に起動させたいならコマンドラインでAHK経由ってものあるが。

555名無しさん@お腹いっぱい。:2008/05/12(月) 19:22:23 ID:1+Yqvhql0
AutoHotkeyの「Iniwrite」コマンドで書いたiniファイルは、
keyがない項目は最下部に追加される仕様で、
長く使っているうちに、順番が汚くなってしまいます。

これを、セクションまたはキーの名前でソートさせる方法はないでしょうか。

[セクション1]
abc=0
ghi=0
def=0



[セクション1]
abc=0
def=0
ghi=0

みたいな感じにできるとすっきりするのですが
556名無しさん@お腹いっぱい。:2008/05/12(月) 19:43:04 ID:D8UjqaFx0
>>555
Sort使えばいいんじゃね?一回iniファイルを削除して、ソートしてからIniWrite
557名無しさん@お腹いっぱい。:2008/05/12(月) 23:53:58 ID:9MCe40FX0
vk1Csc079 & i:: Send, {Up} などとして、変換キー Down → 「I」キー Down
→ 変換キー Up → 「I」キー Up すると、「i」が勝手に連続で入力され始め
てしまいます。(何か入力すると止まる)
回避方法は無いでしょうか?
558557:2008/05/14(水) 01:07:26 ID:/+0yaezS0
上の質問取り下げます。
キーリピートの補助ツールの影響でした orz
559名無しさん@お腹いっぱい。:2008/05/14(水) 04:58:57 ID:ZOd/0zb80
dllcallのつかいかたについて質問です。

流行らせるページのCPU負荷率取得ライブラリがWindows2000で動かないようなので、
このDLLをつかって取得を試みています。

getcpust.dll(WindowsNT/2000/XP/Vista / プログラミング)
>CPUの使用率を取得 (利用例ソースコードつき)
http://www.vector.co.jp/soft/winnt/prog/se361629.html

それで、下記のように入れてみましたが、

cpu:=DllCall("getcpust.dll\GetCpuStatus") ; get CPU usage

帰ってくる値は常に「1」になってしまい、取得できません。

なお、dllのファイル名を変えたり「GetCpuStatus」を変えると、
1じゃなくてヌルが帰ってくるので、dll自体は認識できているとみて
いいのでしょうか。

DllCallの使い方になれていないのですが、今回の場合は
どのように書けばよいのか、アドバイスをお願いできれば幸いです。
560名無しさん@お腹いっぱい。:2008/05/14(水) 10:39:48 ID:VPcXWzWx0
>>559
昔まったく同じ質問があったらしい。
うまくいかない時とかもそうだけど、何度も呼び出すならLoadLibraryしたほうがいいよ

#Persistent
OnExit, ExitSub
hModule := DllCall("LoadLibrary", str, "getcpust.dll")
if hModule=0
{
ExitApp
}
SetTimer, GetCpust, 500
return

GetCpust:
Ret:=DllCall("getcpust\GetCpuStatus", "Int*", cpust, "cdeclInt")
ToolTip, 返値 %Ret%`ncpust %cpust%`nErrorLevel %ErrorLevel%
return

ExitSub:
DllCall("FreeLibrary", UInt, hModule)
ExitApp
561名無しさん@お腹いっぱい。:2008/05/14(水) 10:52:50 ID:ZOd/0zb80
>>560
どうもありがとうございます!正常に動きました。
562名無しさん@お腹いっぱい。:2008/05/14(水) 21:53:23 ID:qEVMeKsk0
Sendでクリップボードの中身を書き出そうとした時に
2バイト文字が含まれてると正常に書き出せなくない?
563名無しさん@お腹いっぱい。:2008/05/14(水) 23:10:25 ID:P1pe7NoV0
つ Send,^v
564名無しさん@お腹いっぱい。:2008/05/16(金) 10:48:47 ID:PH/VxX9w0
ClassNNの指定方法について質問です。

AutoHotkey付属のAU3_Spy.exeをつかって、
ClassNNを取得するところまでは理解できました。

たとえば下記の例はブラウザのSleipnirですが、マウスカーソルが
FenrirEmbeddedToolBar1の上にあるときのみ、カッコ内のスクリプトを
実行する場合、どのように記載すればよいでしょうか。

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Sleipnir - [WinGet]

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN: FenrirEmbeddedToolBar1

#IfWinActive ,***** ←たぶんここに何かを記載する
 〜実行したいコマンド〜
#IfWinActive
565名無しさん@お腹いっぱい。:2008/05/16(金) 14:47:34 ID:c9i3EJxT0
#IfWinActive, Sleipnirのクラス
***::
MouseGetPos, , , , OutputVarControl ,
If Outputvarcontrol = FenrirEmbeddedToolBar1
{実行コマンド}

こうかな、わかりません><
566名無しさん@お腹いっぱい。:2008/05/17(土) 12:51:31 ID:cUZz5sdV0
特定のウィンドウではキー変更せず
それ以外ではキーを変更するにはどうすればよいでしょうか?
下のようにしてみましたが、NotepadでCtrl+Aすると
#MaxHotkeysPerInterval に達してしまいます。
「~」をつけると逆にNotepad以外でもCtrl+Aが入ってしまいます。

^a::
IfWinActive, ahk_class Notepad
Send, ^a
Else
Send, b
Return
567564:2008/05/17(土) 13:02:38 ID:l+1Pu63/0
>>565
ありがとうございます。おかげさまでヒントになり、解決しました。

 MouseGetPos, , , , OutputVarControl ,
 If Outputvarcontrol<>【指定したいClassNN】
  return ;違うなら無効ということで、戻る

 〜以下やりたいこと

これで認識できました。
568名無しさん@お腹いっぱい。:2008/05/17(土) 14:13:34 ID:hJizOrmY0
>>566
#IfWinNotActiveじゃだめかい
569名無しさん@お腹いっぱい。:2008/05/17(土) 15:41:23 ID:cUZz5sdV0
>>568
ありがとうございます。それでできましたが、
除外したいウィンドウが複数ある場合はどうしたらいいのでしょうか?
単純に #IfWinNotActive を複数書くと
どちらも無効になってしまうようなのですが・・・
570名無しさん@お腹いっぱい。:2008/05/17(土) 18:26:03 ID:L03/NFhv0
>単純に #IfWinNotActive を複数書くと
これがよくわからんが

#IfWinNotActive window1
{
#IfWinNotActive window2
{
#IfWinNotActive window3
{
なんとか
}}}

論理条件だとこうなりそうだがこれだとダメなのか?
571名無しさん@お腹いっぱい。:2008/05/17(土) 20:32:11 ID:/leBUyky0
つウィンドウグループ
572名無しさん@お腹いっぱい。:2008/05/17(土) 22:51:18 ID:cUZz5sdV0
>>570
入れ子にせずに独立に2つ書いてたんですが、
入れ子にしてみるとあとに書いたものしか有効になってないようです。

>>571
こういうのがあるんですね。
ちょっとやってみます。
573名無しさん@お腹いっぱい。:2008/05/18(日) 01:15:23 ID:jn7VlSlu0
ショートカットキーで特定のアプリ(Firefoxとか)に対して
タスクトレイに最小化/最大化をトグルするということはできますか?
よろしくお願いします。
574名無しさん@お腹いっぱい。:2008/05/18(日) 03:25:19 ID:1OtJdJTx0
Access97のモジュールウィンドウでマウスホイールによるスクロールはできないでしょうか?

Visual Basic 6.0 IDE でマウス ホイール イベントが機能しない
ttp://support.microsoft.com/kb/837910/ja

を試してみたのですがAccess2000以降でないと動かないようなので、とりあえずキーを送るだけのものを書いてみたのですが
どうもいまいちな気がしますので。

#IfWinActive ahk_class OMain
*WheelDown::
Send,{DOWN 2}
return

*WheelUp::
Send,{UP 2}
return
#IfWinActive
575名無しさん@お腹いっぱい。:2008/05/18(日) 03:29:23 ID:1OtJdJTx0
ちなみにWheel Redirectorやかざぐるマウスでは動きませんでした。
576名無しさん@お腹いっぱい。:2008/05/18(日) 04:36:47 ID:87P/lABM0
>>574
別にその解決法でいいと思うけど、どうしても気になるなら
WM_SCROLLかWM_VSCROLLメッセージをコントロールに送れば良いんじゃね?
「どこでもホイール」がそんなことやってたような。
Access97は触ったことないので上手くいくか分からないけども。
577名無しさん@お腹いっぱい。:2008/05/18(日) 09:29:46 ID:1OtJdJTx0
>>576
ありがとうございます。

しかしどこでもホイールも試してみましたが動きませんでした。
Access2000以降でないとWM_MOUSEWHEELでホイールメッセージを検出できないようです。(よくわかっていませんが)
このあたり
ttp://www.asahi-net.or.jp/~uk8t-ktu/wincode/global/0010.htm
を参考にすればできそうな気もしますが、AHKはまだ使い始めなのでどう書けばいいのかさっぱりな状態です。
578名無しさん@お腹いっぱい。:2008/05/18(日) 11:25:55 ID:HJA6d0Re0
>>573
タスクトレイにFirefoxがあるなら最大化、無ければ最小化でいいんじゃないか?
タスクトレイのものを操作するサンプルは流行らせるページにあったはず
579名無しさん@お腹いっぱい。:2008/05/18(日) 12:00:49 ID:ab0+UOCY0
>>577
多分 WM_VSCROLLでスクロールコマンド投げる時にスクロールバーのハンドルを
指定してやらんといかんのじゃないかな。

検証してやりたいけどAccess97はもう持ってないので、この辺り使って自分で試行錯誤してくれ
表示ペインとスクロールバーのクラス名や関係性は Winspectorとかで調べると分かりやすいと思う
ttp://lukewarm.s101.xrea.com/up/file/085.zip
580名無しさん@お腹いっぱい。:2008/05/18(日) 12:28:21 ID:q+GwzdQJ0
>>572
Regular Expressions を使うといいんじゃないかな?

SetTitleMatchMode RegEx
#IfWinNotActive ahk_class (window1|window2|window3)
581名無しさん@お腹いっぱい。:2008/05/18(日) 13:50:53 ID:7i8b10K90
1つのPCで、複数のAHKスクリプトを動かす際、
ホットキーの優先順位を決めることは可能でしょうか。

PCを起動している間、必ず常駐させるスクリプトが1つある状況で、
たまに使いたいスクリプトをあとから実行して2つ存在させると、
同じ定義下にあるホットキーを入れた際、発動するスクリプトが
不定期に入れ替わるようです。

2つ目のスクリプトが起動している間は、1つ目のホットキーを
無効にさせたいのですが、ネットワークでいう「メトリック」みたいな
動きは、どのように作るのがベストベストでしょうか。
582名無しさん@お腹いっぱい。:2008/05/18(日) 14:08:37 ID:1OtJdJTx0
>>579
ありがとうございます。

ちょっと今Accessの勉強をしないとまずいので暇を見てやってみることにします。
ハンドルやクラス名の取得はClsinfoというのを使っていたんですがWinspectorは細かく調べられていいですね。
かざぐるマウスとかで簡単にいけると思ったんですが甘かった..
583574:2008/05/19(月) 19:51:51 ID:xrRjgNKk0
579でいただいたスクリプトを適当に書き換えてAccess97でもマウスホイールによるスクロールができるようになったので
一応報告しておきます。場当たり的修正なので汎用性は0です。WheelScrool.ahkは93行辺りで変数を初期化しているよう
なので38行辺りの設定が無効になっているような感じです。
--- WheelScrool.ahk~ Sat Nov 03 00:14:08 2007
+++ WheelScrool.ahk Mon May 19 00:41:40 2008
@@ -137,6 +137,11 @@
scmode = 0
}

+ if (ccls = "OModule") ; 追加
+ {
+ scmode = null
+ }
+
if (!scmode)
MOUSEWHELL(ctrl,mx,my,"",AcclSpeed,AcclTOut)
Else SCROLL(ctrl,mode,shwnd,"",ScrlCount,AcclSpeed,AcclTOut)
@@ -283,6 +288,8 @@
ACount := ScrlCnt
Else
ACount += ScrlCnt * ASpeed
+
+ ACount = 3 ; 追加

;wParam: 方向
if (dir = "")

AutoHotkey.iniには以下で
#IfWinActive ahk_class OMain
#Include, %A_ScriptDir%\Extras\Scripts\WheelScrool.ahk
Gosub,WheelInit
#IfWinActive
584574:2008/05/19(月) 21:58:09 ID:xrRjgNKk0
失礼。これだけでいいみたいです。これなら汎用性もありそうです。
--- WheelScrool.ahk~ Sat Nov 03 00:14:08 2007
+++ WheelScrool.ahk Mon May 19 21:53:35 2008
@@ -94,6 +94,7 @@
,VDisavledList, VScroolList, MdiActivateList
,BypassCtlList, NullShwndTabooList, HDisavledList

+ Gosub,WheelInit
CoordMode,Mouse,Screen
MouseGetPos,mx,my,hwnd,ctrl,3
WinGetClass,wcls, ahk_id %hwnd%
585名無しさん@お腹いっぱい。:2008/05/20(火) 00:01:32 ID:z9u7+QjX0
>>583
>WheelScrool.ahkは93行辺りで変数を初期化しているよう
>なので38行辺りの設定が無効になっているような感じです。

そこは関数内でglobal変数を直に使えるよう再宣言してるだけで初期化はされない筈…
一応うちではちゃんと動いてるんだけど、値引き継がれない?
XP SP2 / AHK Version 1.0.47.06
586585:2008/05/20(火) 02:08:31 ID:z9u7+QjX0
ああ解った、AutoHotkey.ini側の記述の問題だわ
AHK常駐時に初期化する前提だから AutoExecute部(ファイル先頭)に書かないとダメ
;--- AutoHotkey.ini ---
#Include, %A_ScriptDir%\Extras\Scripts\WheelScrool.ahk
Gosub,WheelInit

あくまで#IfWinActiveでAccessにのみ適用したいなら WheelScrool.ahkの Hotkeyの前後に入れる
;--- WheelScrool.ahk : Line 77 ---
#IfWinActive ahk_class OMain
+WheelDown:: WheelRedirect(1)
+WheelUp:: WheelRedirect(1)

WheelDown:: WheelRedirect()
WheelUp:: WheelRedirect()
#IfWinActive

ttp://lukewarm.s101.xrea.com/up/file/085.zip
HDD漁ったらロジクールのチルトでの横スクロールのテストとかした時に作った新しいのがあったんで
上げ直しときます。互換リストにOModule追加してみたんで良かったらコメント外して使って見て下さい。
(ちなみに >583 scmode = null は 0でなく "null"という文字列が代入されてる模様)
587名無しさん@お腹いっぱい。:2008/05/20(火) 20:13:17 ID:zd0pXxS10
AutoHotkeyで取り扱いたいファイルのハッシュ値を計算するための、簡単な方法はないでしょうか。

@IT:Windows TIPS -- Tips:ハッシュ値を利用してファイルの同一性をチェックする
http://www.atmarkit.co.jp/fwin2k/win2ktips/597fciv/fciv.html

上記で解説しているマイクロソフト製の「fciv.exe」をRunで渡してみました。

 cmd=fciv.exe "%hashfile%" -xml hash.txt
 runwait %cmd%,,Hide,pid

が、fciv.exe側が日本語のファイル名に対応していないようで、
ほとんどのファイルが、見つからない旨のエラーになってしまいます。
(コマンドラインで渡してもダメだったのでAHkのダメ文字ではないようです)

日本ではfasthash.dllというのが有名のようですが、
dllを使うには、どのように記述すればよいでしょうか。

FastHash.dll
http://hp.vector.co.jp/authors/VA033110/fasthashdll.htm
588名無しさん@お腹いっぱい。:2008/05/20(火) 21:11:57 ID:+6tZiYR+0
>>587
日本語のファイル名に対応していないなら、一時的にAHKでリネームすればいいじゃない。
589名無しさん@お腹いっぱい。:2008/05/20(火) 22:00:36 ID:jzwbJ8Aa0
>>586
わざわざありがとうございます。

かざぐるマウスと併用できるようなのと加速が意外と便利なのでAccess以外にも適用させて使おうと思います。
というかマウスジェスチャーや音量の調節も出来るようだし、AHKがあればかざぐるマウスはいらなそうです。
AHKになさそうなのは設定ダイアログをだしていてもメインウィンドウを動かせる機能ぐらいじゃないかと思います。
590名無しさん@お腹いっぱい。:2008/05/21(水) 18:01:23 ID:+Xi75qRh0
PCのビープ音を鳴らす「Soundbeep」って、状況把握に便利なんですが、
鳴らしている間はスクリプトが完全に止まってしまいますよね。

ビープは鳴らすけど、スクリプト自体は止まらせない方法ってありますか?
591名無しさん@お腹いっぱい。:2008/05/21(水) 18:02:57 ID:P1fIW2PZ0
別のスクリプトに書いてRun
592名無しさん@お腹いっぱい。:2008/05/21(水) 19:29:17 ID:08CXmI6t0
>>590
SetTimer,Beep,10
Return

Beep:
soundbeep
Settimer,beep,off
return
593名無しさん@お腹いっぱい。:2008/05/21(水) 21:46:37 ID:+Xi75qRh0
>>591-592
ありがとうございます。うまくいきました。
594名無しさん@お腹いっぱい。:2008/05/22(木) 02:08:12 ID:Bhfqc5ef0
WinXPのエクスプローラーでアドレスバーを非表示にしているとき
ツリービューとフォルダビューの間をTabで行き来しようとすると
ツリービュー→フォルダビューはTab1回でいけますが
フォルダビュー→ツリービューはツリービューを閉じるための×印に
一旦フォーカスがあたるため2回Tabを押さないといけません。
これを1回で行うためにフォルダビューにフォーカスがあるときは
Tabが2回送られるように下のようにしたのですが、
なぜか×印がフォーカスされてしまいます。
どうすればよいでしょうか?

#IfWinActive, ahk_class ExploreWClass
~Tab::
ControlGetFocus, ClassNN
if ErrorLevel = 0
if ClassNN = SysListView321
Send, {Tab}
595名無しさん@お腹いっぱい。:2008/05/22(木) 14:35:58 ID:UGRCaXb90
tab送りじゃなくてControlにFocusを合わせるようにすれば?
596名無しさん@お腹いっぱい。:2008/05/22(木) 23:25:56 ID:Bhfqc5ef0
>>595
なるほど
↓でいけました。ありがとうございます。

#IfWinActive, ahk_class ExploreWClass
Tab::
ControlGetFocus, ClassNN
If ClassNN = SysListView321
ControlFocus, SysTreeView321
If ClassNN = SysTreeView321
ControlFocus, SysListView321
597名無しさん@お腹いっぱい。:2008/05/23(金) 10:45:11 ID:NPhBXbgz0
デバッグをするため、ウインドウのClassNNが特定の値になっているときに、
ToolTipメッセージをマウスカーソル付近に連続で表示させる動作をさせています。

しかし、マウスカーソルがToolTip自身に乗っかってしまうと、
ClassNNが「特定の値」ではなく、空白になってしまいます。

ClassNNが空白のエリアを除外させたところ、
ToolTip以外の、本当にClassNNが空白の場所との区別ができなくなりました。

ToolTipを表示させる際、ToolTipのClassNNを指定することは可能でしょうか。
598名無しさん@お腹いっぱい。:2008/05/23(金) 23:56:26 ID:/hthvnSA0
互換シェル使っててLWinをモディファイアに
いろんなソフト起動させてるんだけど

LWinをちょんと押すだけのときにシェルメニュー
表示とか割り当てたい

でもLWinをモディファイアにしてるバインドと
ぶつかっちゃうんだけどどうしたら解決できるか
わかる人いますか?
599名無しさん@お腹いっぱい。:2008/05/24(土) 00:14:55 ID:jR+OEghm0
LoopでGetKeyState取得して
キーが離されるまでのループ回数で分岐とか

KeyWaitで時間指定して
それを越えたときのKeyStateで分岐とか
600名無しさん@お腹いっぱい。:2008/05/24(土) 01:51:22 ID:kkBoRCJr0
GUI画面にテキストを表示させた際、操作者がGUIの内容を更新する操作をしたとき、
表示したテキストを別のテキストに置き換えて再描画したいです。

普通に同じ座標にAddで追加すると、前のテキストと重なって表示されてしまいます。

GUI画面を破棄するDestroyを入れるとできますが、画面の全部を作り直すため、
かなりチラついてしまいます。

症状確認用テストスクリプト

 Test:
 loop
 {
 Gui, Destroy
 Gui, Add, Text,,■■■TESTです■■■→%A_Index%
 Gui, Show,,GUIテスト
 sleep,100
 }

これだと、ものすごくチラついてしまいます。
また、Gui, Destroyをはずすと、最初に表示された内容から変わってくれません。 

おそらく、何かやり方があるとは思うのですが、GUI画面の一部の項目を
書き換えて再描画するには、どのように書けばいいのでしょうか。
601名無しさん@お腹いっぱい。:2008/05/24(土) 02:35:35 ID:kLdoO1vi0
Gui, Add, Text, vMyText
でテキストを変数MyTextに指定

GuiControl,, MyText, 実際に表示する内容
で書き換える

流行らせるページリファレンスのGUI
OSDサンプルとか見れ
602名無しさん@お腹いっぱい。:2008/05/24(土) 14:17:41 ID:kkBoRCJr0
>>601
ありがとうございます。うまくいきました。
100倍くらい速くなりました。
603名無しさん@お腹いっぱい。:2008/05/25(日) 07:38:54 ID:7/PfvJsA0
初心者で申し訳ないんですが、
右Alt+jでテンキー1にしたいんですが、
>!j::Numpad1
だと効きません。
j::Numpad1だと問題なく動くんですが、修飾キーをつけたとたん動かなくなります。
Winキー以外のShiftやCtrlでも効きません。何が間違ってるんでしょうか?
604名無しさん@お腹いっぱい。:2008/05/25(日) 08:14:16 ID:k6NKzcvt0
98とかME使ってんじゃね
605名無しさん@お腹いっぱい。:2008/05/25(日) 15:56:56 ID:7/PfvJsA0
>>604
流石にそれはないですw俺の環境だけかな?
ノートでNumLockしたくないから、右Altや右Ctrl押してるときだけ有効っぽくしたいんだけど。
あふとかフォトショ使うときに楽になるかなと思ったんだけど。
なぜこんなに難しいんだろ。
606名無しさん@お腹いっぱい。:2008/05/25(日) 16:43:04 ID:pwVrvVFl0
>>603
なぜ動かないかはわからんが、
!j::
Send,{Numpad1}
return
で動く。たぶん「仕様」ってやつでは?
607名無しさん@お腹いっぱい。:2008/05/25(日) 17:01:33 ID:DsBFwt0y0
すいません。WheelScroll.ahkですが
Vieasというイメージビューアソフトのマウスホイールでの画像の拡大・縮小が無効になってしまうので
#IfWinNotActive ahk_class Vieas_vwin_class
WheelDown:: WheelRedirect()
WheelUp:: WheelRedirect()

;Shiftホイールで横スクロール
+WheelDown:: WheelRedirect(1)
+WheelUp:: WheelRedirect(1)
#IfWinActive

と書き換えてみたのですが、これだとVieasのウィンドウがアクティブになっているときに下のウィンドウが
マウスホイールでスクロールできません。
マウスホイールが通常動作するクラスを指定するというようなことはできないでしょうか?
608名無しさん@お腹いっぱい。:2008/05/25(日) 17:03:41 ID:7/PfvJsA0
>>606
おおっ
>!j::Send,{Numpad1}と
>^/::Send,{NumpadEnter}
で右Altや右Crtlでいけました。有難うございます。
仕様と思います。AHKさいこー。
609603:2008/05/25(日) 18:20:04 ID:7/PfvJsA0
モバイルノートに右Altが無かったし、右Ctrlじゃキーが押しにくいので結局、無変換+でやることにした。
言語の設定で無変換を無効化して無問題。
以下、簡単だし別に使う人もいないだろうけど報告まで。

~vk1Dsc07B & j::Send,{Numpad1}
vk1Dsc07B & k::Send,{Numpad2}
vk1Dsc07B & l::Send,{Numpad3}
vk1Dsc07B & u::Send,{Numpad4}
vk1Dsc07B & i::Send,{Numpad5}
vk1Dsc07B & o::Send,{Numpad6}
vk1Dsc07B & 7::Send,{Numpad7}
vk1Dsc07B & 8::Send,{Numpad8}
vk1Dsc07B & 9::Send,{Numpad9}
vk1Dsc07B & m::Send,{Numpad0}
vk1Dsc07B & .::Send,{NumpadDot}
vk1Dsc07B & @::Send,{NumpadEnter}
vk1Dsc07B & /::Send,{NumpadDiv}
vk1Dsc07B & sc028::Send,{NumpadMult}
vk1Dsc07B & `;::Send,{NumpadAdd}
vk1Dsc07B & -::Send,{NumpadSub}

右Altや無変換でいろいろホットキーを追加してみよっと。
610名無しさん@お腹いっぱい。:2008/05/25(日) 21:29:11 ID:PNVW0ixZ0
>>607
VieasのメインウィンドウだとControlが存在せずハンドルが取れてなかったみたい。
コントロールが取れない時はウィンドウハンドルを指定してWHEEL投げるように修正かけました。
ttp://lukewarm.s101.xrea.com/up/file/085.zip
611名無しさん@お腹いっぱい。:2008/05/25(日) 23:50:21 ID:DsBFwt0y0
>>610
ありがとうございます。動作確認しました。

やっぱりAHKいいですね。アプリケーションを問わずに操作できるのがいい。
自分もいろいろ書けるようになるといいんですけどね。
612名無しさん@お腹いっぱい。:2008/05/26(月) 23:03:49 ID:xhUv6vGn0
Guiの質問です。


 Gui, Add, Picture,Section,***

で作成すると、ClassNNに「Static**」という名称が割り当てられますが、
作成したGuiのClassNNを、特定の文字列で指定することは可能でしょうか。
613名無しさん@お腹いっぱい。:2008/05/27(火) 01:11:05 ID:0qIAl9sc0
Excelで平成20年1月1日を ^#Dとホットキーを使った場合に
2008/01/01 とするにはどうしたらいいでしょうか?

#IfWinActive ahk_class XLMAIN
^#D::  このあとどのように記載したらいいか教えてください.
よろしくお願いいたします.
614名無しさん@お腹いっぱい。:2008/05/27(火) 01:33:15 ID:10H1JCGL0
2chで使われているような「1201502896」の形式の日付を、
YYYYMMDD形式に変換するには、どのような解決方法が
ありますでしょうか。
615名無しさん@お腹いっぱい。:2008/05/27(火) 01:44:23 ID:mvWayqr00
>>613
Ctrl+CをSendしてStringReplaceしてから
はっつければいいんでは?

>>614
19700101000000 にその数値を秒数で足せば良いんじゃないかな?
616名無しさん@お腹いっぱい。:2008/05/27(火) 03:35:18 ID:4BLlhUiO0
窓キーと3を押すのをトリガーにしようとして
# & 3::hogehoge
と書いたらキーボードの3が効かなくなりました。
そこで、
#3::hogehogeと書き直したら直りました。
これは既知の現象ですか?
617名無しさん@お腹いっぱい。:2008/05/27(火) 03:40:10 ID:4BLlhUiO0
>>616
間違えた。
窓キーと2をトリガーにしようとして
# & 2と書いたら3のキーが効かなくなった、というのが正しいです。
618名無しさん@お腹いっぱい。:2008/05/27(火) 03:46:50 ID:Ci2ft8P00
>>616
一つ目のキー自体のもともとの機能は無効化される。
一つ目のキーにチルダ(~)をつければ、そのキーは無効化されず、普通に入力される。
一つにつけておけば、一つ目のキーが同じほかのホットキーでは指定されていなくても、そのキーは無効化されなくなる。

#はShift+3の#と勘違いされただけ。使い方が間違っている。Win & 3て書かないと。
619名無しさん@お腹いっぱい。:2008/05/27(火) 04:03:06 ID:4BLlhUiO0
>>617
連投済まん。
Hotkeys (Mouse, Joystick and Keyboard Shortcuts)のヘルプにあったこれが答えかも。
lose its original/native function when it is pressed by itself
#がある3のキーが効かなくなることが説明できますね。
人騒がせで済みませんでした。夜中にパニックに陥っていたもので。。。(汗
620名無しさん@お腹いっぱい。:2008/05/27(火) 04:04:31 ID:4BLlhUiO0
>>618
おっ!書き込んでから発見しました。
こんな夜中にありがとうございます。
621名無しさん@お腹いっぱい。:2008/05/27(火) 12:14:58 ID:10H1JCGL0
>>615
ありがとうございます。変換できました。
622名無しさん@お腹いっぱい。:2008/05/27(火) 13:47:20 ID:3gCvGmfE0
>>613
^#D:: Send,^1!c{End}!tyyyy/mm/dd{Enter}

んでも IME ONだと失敗するし、素直にExcelマクロで
Selection.NumberFormatLocal = "yyyy/mm/dd"
したほうがスマートだと思うが。
623名無しさん@お腹いっぱい。:2008/05/27(火) 13:53:59 ID:3gCvGmfE0
↑はExcel2002の場合ね、他のバージョンだとアクセラレータキー違うかもしれんし上手く動くかわからん。
Winキー発動はできんけどやっぱマクロ作ってでショートカットキー割り当てたほうがいいと思う。
624名無しさん@お腹いっぱい。:2008/05/27(火) 19:03:51 ID:10H1JCGL0
・文字列 string を1行ずつループで回す
・取り出した1行にタブが含まれていたら、タブを別の文字「%okikaemoji%」に置き換える
・結果をstringに戻す
・ループをbreakで終了する

という動作を下記の4通りで試しましたが、どれもタブが置き換わってくれません。

1案
 value=`t
 StringReplace, string, A_LoopField,%value%,%okikaemoji%,all

2案
 value=%A_Tab%
 StringReplace, string, A_LoopField,%value%,%okikaemoji%,all

3案
 StringReplace, string, A_LoopField,%A_Tab%,%okikaemoji%,all

4案
 StringReplace, string, A_LoopField,`t,%okikaemoji%,all

どのように書いたら動いてくれるでしょうか。
625名無しさん@お腹いっぱい。:2008/05/27(火) 20:49:16 ID:mvWayqr00
AutoTrimをOffにする
626613:2008/05/28(水) 05:54:16 ID:vTCC4uvQ0
皆さん お返事遅くてごめんなさい

>>615
  ありがとうございます

>>622
>>623
 マクロは考えてなかったです.
 AHKにこだわりすぎました
 EXCELマクロでやらせていただきます.
 ありがとうございます.
 
627名無しさん@お腹いっぱい。:2008/05/29(木) 14:00:51 ID:b2k6dMVD0
CTRLのダブルタップを
http://lukewarm.s101.xrea.com/myscripts/index.html
を参考にしてやってみたんですが、CTRLを少し押し続けた場合も
起動してしまいます。キーリピートのせいだと思うんですが。
>>389も同様でした。

回避策はありますか?
628627:2008/05/29(木) 15:45:51 ID:b2k6dMVD0
キーリピートの設定を遅くしたらましになったんですが、
他のキーは普通にリピートして欲しいです。
CTRLだけリピートを殺すといった事ができるといいんですが。
629名無しさん@お腹いっぱい。:2008/05/29(木) 16:59:33 ID:SXLiQ+Fi0
そもそもCtrlキーにリピートがあるのか?
630名無しさん@お腹いっぱい。:2008/05/29(木) 17:39:08 ID:lv3ZoJSv0
>>628
http://lukewarm.s101.xrea.com/commands/KeyWait.html
ここにサンプルある。2カ所KeyWait入ってるけど上は要らんようなキガス


~CTRL::
if(A_PriorHotkey <> A_ThisHotkey){
return
}
if(A_TimeSincePriorHotkey > 400){
KeyWait, Ctrl
return
}
tooltip, double tap!
return
631627:2008/05/29(木) 17:55:57 ID:b2k6dMVD0
>>630
ありがとうございます。
書いてくださった方法でばっちりダブルタップでき、長押しも回避できました。
632名無しさん@お腹いっぱい。:2008/05/30(金) 20:08:14 ID:yj8hQgNw0
DllCallでLCMapStringを使って文字列を操作したいのですが
引数の型がまったくわからず、どうやってもErrorLevelが-2になってしまいます

どう書けばよいのかお教え願えないでしょうか?
633名無しさん@お腹いっぱい。:2008/05/30(金) 20:47:51 ID:QxYMGk4z0
非アクティブのiTunesの停止、再生をしたくて↓のようにしてみたんですが
動きません。

#i::
DetectHiddenWindows,On
ControlSend,WinTitle,{Space},iTunes
return

下のようにクラス指定しても無理でした。
ControlSend,,{Space},ahk_class iTunes

試してみたら、そもそもアクティブにしてもだめだったんですが、打開策はありますか?
634名無しさん@お腹いっぱい。:2008/05/31(土) 08:25:01 ID:KE70yWJA0
ホットキー以外で初めて書いてみて動作はきちんとするけど、
もっとスマートに書けるんでしょうか?
メモリが2,000か6,000K(1:4の割合で変化)
CPUが0〜4パー
で動いてるんだけど、低スペックってのもあるw(P3-1G)。
プログラミングしたことないんで不安です。

;EBWinが非アクティブになったら終了。
#Persistent
SetTimer , EBWC , 250
return

EBWC:
WinWait , ahk_class EB_POCKET
if ErrorLevel = 0
{
WinWaitNotActive , ahk_class EB_POCKET
if ErrorLevel = 0
{
Process, Close, EBWin.exe
}
}
else
return
635634:2008/05/31(土) 09:24:36 ID:KE70yWJA0
自己解決しました、これでAHKの常時起動しなくて済みます。
スレ汚しごめんなさい。
それとも、まだやりようがあるのかな?・・・わからん。

;EBWinミニウインドー起動が非アクティブになったら終了。
#NoTrayIcon
Run, EBWin.exe -m , C:\Program Files\EBWin
WinWaitActive , ahk_class EB_POCKET
WinWaitNotActive , ahk_class EB_POCKET
if ErrorLevel = 0
Process, Close, EBWin.exe
else
return
636名無しさん@お腹いっぱい。:2008/05/31(土) 16:10:10 ID:ErfB/+jr0
>>634
>メモリが2,000か6,000K(1:4の割合で変化)
の意味が全くわからない

そしてスクリプトで何をしようとしてるのか解説が一切ないので、
なにをやってるのかわからない

結論:いくらチラ裏とはいえ、他人にわかるように書きましょう
637名無しさん@お腹いっぱい。:2008/05/31(土) 16:21:21 ID:nD99XO9q0
>>636
正直それはおまえさんの読解力の問題な気が…
638名無しさん@お腹いっぱい。:2008/05/31(土) 17:51:19 ID:17jzD8JC0
繭からやっと移行できたと思ったら
これSynergy経由じゃ動かないのかorz
639名無しさん@お腹いっぱい。:2008/05/31(土) 19:17:34 ID:nD99XO9q0
>>638
動いたり動かなかったり。
>>4の無変換+ijklの矢印割り当てくらいなら動いたりするけど、
{Blind}の部分が効かなかったりとか。
640名無しさん@お腹いっぱい。:2008/06/01(日) 00:07:10 ID:ErfB/+jr0
プログラムを実行させるとフォーカスを強制的に
フォアグラウンドにしてしまうアプリがあります。

そのアプリをahkからタイマーで呼び出されたのち、呼び出す直前に
作業していた元のウインドウに戻すにはどうしたらいいでしょうか。

その動作を手動で再現させる場合、アプリ呼出し後にALT+TABを押すと
確実に戻れるので、それをAHKで再現できれば解決しそうなのですが。

Run,問題のプログラム.EXE
sleep,2000
send,{ALT DOWN}
sleep,1000
send,!{Tab down}
sleep,1000
send,!{Tab up}
send,{ALT UP}

安全牌で、sleepで余裕を入れてるのですが、タイミングが
合わないことが多く、半分くらいしか成功しません。
641名無しさん@お腹いっぱい。:2008/06/01(日) 00:32:29 ID:f367mMfv0
>>640
SleepのタイミングについてはPCスペックや同時に動いてるアプリとの兼合いもあるので
自力で調整値を探すしかない。
だが、ALT+TAB使うより Activeウィンドウ操作系のコマンド使ったほうが成功率は上がると思われ

WinGet, hwnd,ID,A
Run,問題のプログラム.EXE
WinWaitActive,問題のプログラムのタイトル
Sleep,任意の待ち時間
WinActivate,ahk_id %hwnd%
642名無しさん@お腹いっぱい。:2008/06/02(月) 12:52:34 ID:+6qJMD7A0
質問です。
マウスホイールを下に回した場合batu.bmpを探してそこをクリックしたいのですが、全くできません。
拾い物のスクリプトから考えたのですが・・ご教授お願いします。アプリ名はaaaaに置き換えてます。
Loop {
Sleep,10
IfWinActive,aaaa
{
GetKeyState,mbtn,WheelDown,P
if (mbtn="D") {
Loop {
ImageSearch , OutputVarX, OutputVarY, 0, 0, A_ScreenWidth, A_ScreenHeight, batu.bmp
Sleep,100
Send,{LButton}
GetKeyState,mbtn,WheelDown,P
if (mbtn="U") {
break
}
}
}
}
}
#z::Reload
#x::Pause
#e::ExitApp
#r::return
#u::return
#f::return
#m::return
#IfWinActive aaaa
vk1Dsc07B::Send,@
643名無しさん@お腹いっぱい。:2008/06/02(月) 13:34:40 ID:0QKb9v/r0
探した座標使ってないじゃん
MouseClick使え
644名無しさん@お腹いっぱい。:2008/06/02(月) 13:55:40 ID:Yyr2zU0/0
なにそのLoop
645名無しさん@お腹いっぱい。:2008/06/02(月) 17:51:59 ID:T5SyNYp+0
Loop,fileなどで読んだファイル名にUnicode文字が含まれると、
「A_LoopFileName」などの変数で、ファイル名のUnicode部分が
ハテナに置き換わってしまいます。

結果、ループの中に居るのに対象ファイルが
見つからない事態になってしまいます。

そこで、ループ中にA_LoopFileNameの実体を読んで、エラーなら、
FileMoveで A_LoopFileName → Unicode部分を削除したA_LoopFileName
とリネームを試みたのですが、Renameする時点で元ファイルが
見つからず、できませんでした。よい解決法はないでしょうか。

なお、対象となるファイルは自分で作成したものではないため、
事前にリネームするのは厳しいという状況です。
646名無しさん@お腹いっぱい。:2008/06/02(月) 18:48:58 ID:K9ohG56c0
「IMEが変換中」という状態を取得したいのだけど、できない。。
誰か俺が調べた限りの情報出すから助けて。

1.AHKのSendMessageを使用する

2.使用する(と思われる)API/WM_IME_COMPOSITION
http://kumei.ne.jp/c_lang/sdk3/sdk_281.htm
http://www.winapi-database.com/Message/WM/WM_IME_COMPOSITION.html

おまけ.IMEの参考
http://lukewarm.s101.xrea.com/up/file/029.zip

つってもこれだけなんだけどね。
もうだめぽ・・・
647名無しさん@お腹いっぱい。:2008/06/02(月) 18:50:10 ID:K9ohG56c0
あ、直リンしちゃった。。ごめんちゃい。
648名無しさん@お腹いっぱい。:2008/06/02(月) 20:33:23 ID:0QKb9v/r0
>>645
TransformのUnicode, String
を使えばどうにかならんかね?
649名無しさん@お腹いっぱい。:2008/06/02(月) 21:06:24 ID:B0W6ZYcf0
>>646
俺もいろいろ調べたんだけど、
AHKからは他プロセスの入力コンテキストハンドラ hIMC を取得できない
(ImmGetContext が NULL しか返さない) ので、うまくいかないみたい。

ttp://www.zero.co.jp/develop/free/o1/index.html
こんな情報があるけど、俺には使いこなせない orz
650名無しさん@お腹いっぱい。:2008/06/02(月) 21:25:10 ID:T5SyNYp+0
>>648
ありがとうございます。
さっそく試してみたところ、transformに渡す対象文字「string」の
内容自体がすでに「?」に変わってしまっているようです。
結果をファイルに書き出して確認したところ、壊れた結果でした。
651名無しさん@お腹いっぱい。:2008/06/02(月) 22:59:30 ID:uDIyl+SM0
>>645
過去ログ>538-550あたりを読むと幸せになれるかも。試してないからわからんけど
652名無しさん@お腹いっぱい。:2008/06/03(火) 00:24:59 ID:8JqjvJlr0
AttachThreadInputしてみたら?
653646:2008/06/03(火) 02:00:34 ID:mB5Ni4140
>>649 のくれたリンクからファイル落としたんだけど、その中に
>各々のアプリケーションのスレッドはスレッドにアタッチされた複数のIME ウィンドウを持つようになった
って書いてあったので、GetWindowThreadProcessIdとSpy++使って調べてみました。

試しにメモ帳では、「メモ帳」と「メモ帳の入力域」は同じプロセスID・スレッドIDなんだけど、
問題はアクティブウィンドウではなく、IMEのプロセスID・スレッドIDが必要ってことなのかな?

うーん、わかりそうでわからん。。もうなんか今日は1日中これやってるよ。。
こんなにはまるつもりなかったのにな・・・
654名無しさん@お腹いっぱい。:2008/06/03(火) 02:36:34 ID:5lSXhWR10
>>653
やっぱり解らないが、
グローバルフックを使うプログラムではDLLを作る必要があるそうな。
ttp://hp.vector.co.jp/authors/VA016117/hook.html
655名無しさん@お腹いっぱい。:2008/06/03(火) 04:35:08 ID:gzAwAjm60
タスクトレイに出たアイコンを左シングルクリックしたとき、
特定のルーチンへ飛ばすことは可能ですか?

右クリックの項目はMenuで表示・追加できますが、
そもそも左クリックの設定は、あるのでしょうか。
656名無しさん@お腹いっぱい。:2008/06/03(火) 22:54:44 ID:w/zWe+Un0
AutoHotKeyって標準出力を変数に格納して使う事は出来ないんでしょうか?
コマンドプロンプトに打ち込んだコマンドの標準出力を得るみたいな。
調べてみたところどうにも扱えないっぽいので、仕方なく一時的に作業ファイル・・・
つまり cmd > temp.dat みたいに吐いて、 FileReadLineで一行欲しい部分を読み込んで
対処したのですが、いちいち一時ファイル作るのも大げさかな?と。
その後FileDelete, temp.dat しないといけないし・・・。
657名無しさん@お腹いっぱい。:2008/06/03(火) 23:48:20 ID:Qr7ynoy00
658名無しさん@お腹いっぱい。:2008/06/03(火) 23:55:26 ID:DsQzXGtM0
うわ、その時お世話になった467ですが
cmdret.dllもよかったけど、流行らせるページの管理人さんが作ったMy Scriptsにある
「プロセスを起動して標準出力を読み書き」の方が外部dllが要らない分使い易いかも
659名無しさん@お腹いっぱい。:2008/06/05(木) 00:47:46 ID:IKCvfirm0
ボタンを多数置くときの、飛び先について質問です。

下記のコードで、ボタンを10個設置します。
Loop,10
 {
 button_no=B%A_Index%
 Gui, Add, Button,G%button_no%,ボタン%A_INDEX%
 }

ボタンが押されたときの飛び先ですが、

B1:
B2:
B3:
B4:
B5:
B6:
B7:
B8:
B9:
B10:
ボタンが押された際に行う処理


10個までならなんとかなりますが、
あまり増えるとソースの可読性が悪くなってしまうので、
この「B1:〜B10:」を1つにまとめて書く方法は無いでしょうか。

参考にしたページ:流行らせるページのGオプション
http://lukewarm.s101.xrea.com/commands/Gui_Add.html
660名無しさん@お腹いっぱい。:2008/06/05(木) 08:45:15 ID:de6Gu0Xr0
全部同じラベルに飛ばしといて
押されたボタンの名前で分岐すれば
661名無しさん@お腹いっぱい。:2008/06/05(木) 12:26:20 ID:Vao1bqW80
タブファイラのX-FinderやTTBaseのUpperDirPluginにウィンドウの余白でクリックとかで上階層に移動するのがあるけど
あれこれツール増やすのもあれなのでAutoHotKeyでやろうと思ったのだが
ウィンドウの余白の検出はどうすればいいんでしょう・・?

とりあえずウィンドウの色で切り替えてやってみた・・
; 1/2
;ホイールクリックでウィンドウの余白なら上階層へ移動・アイコンの上ではダブルクリック
#Persistent
SetTimer,BlankClick,100
return
BlankClick:
{
MouseGetPos,posx,posy,WindowClass,ClassNN,1
IfInString,ClassNN,SysListView32 ; ファイルを開く・・すれば大体SysListView321になるような
{
pgx:=(posx-10) ; カーソル直下だと文字の隙間とかでうまくないので
pgy:=(posy-10) ; カーソルから(-10,-10)〜(+10,+10)を斜めにてきとーに走査
BlankState:=0 ; 0のままなら余白
Loop,20
{
PixelGetColor,undercolor,%pgx%,%pgy%
if(undercolor=="0xFFFFFF") ; ウィンドウの色を変えてると変えないと・
{
pgx++
pgy++
}
else
{
BlankState:=1 ; 別の色にかかったとき適当になんか入れる
break
662名無しさん@お腹いっぱい。:2008/06/05(木) 12:27:00 ID:Vao1bqW80
; 2/2
}
}
If(BlankState==0) ; 余白のとき
{
SetMButtonMode:=11 ; Hotkeyの切り替え用 11はBackspace
Hotkey,MButton,On ; ホイールクリックのホットキーを有効に
}
else
{
SetMButtonMode:=1 ; Hotkeyの切り替え用 1はダブルクリック
Hotkey,MButton,On
}
}
else
{
Hotkey,MButton,Off ; ホイールクリックのホットキーを有効に
}
MButton::
{
If(SetMButtonMode==1)
Click,LEFT,,,,2,
else If(SetMButtonMode==11)
Send,{BACKSPACE}
else
return
}
663名無しさん@お腹いっぱい。:2008/06/05(木) 16:58:25 ID:de6Gu0Xr0
#IfWinActiveでやれば?
664名無しさん@お腹いっぱい。:2008/06/05(木) 22:20:16 ID:3BKEexRx0
その座標をクリックしてみれば、余白だったとき選択項目(フォーカスじゃなく)がゼロ個になるのでは
665661:2008/06/05(木) 23:58:37 ID:Vao1bqW80
MButtonの前の } が1個抜けてた・・

>>663
操作対象がClassNNの時に#IfWinActiveをどのように使うのでしょうか?

>>664
なんらかが選択された状態で余白をクリックしたとき、選択数がゼロ個になるのでは?ということでしょうか
ゼロ個になると思いますが・・そういうことではないとか?
666名無しさん@お腹いっぱい。:2008/06/06(金) 00:52:21 ID:lKgCTuVw0
>>665
エクスプローラーの余白ダブルクリックで上階層と理解して最小限でやってみた。
フォルダ選択で1 個のオブジェクトを選択、ファイル選択でファイル情報、余白選択でX個のオブジェクトとステータスバーに表示される。
現状他のホットキー押して左クリックでも発動するけど気になるなら適当に直して下さい。

~LButton::
StatusBarGetText, State,Part1,ahk_class CabinetWClass
If (A_TimeSincePriorHotkey<200 && State<>1 個のオブジェクトを選択)
{
IfInString,State,個のオブジェクト
Send,{BackSpace}
}
Return
667名無しさん@お腹いっぱい。:2008/06/06(金) 01:54:43 ID:UApCHu8G0
AutHotkeyでスクリプトを書き始めました。

デスクトップでダブルクリックした時に、ホットキー(Alt+Numpad1)を実行する
スクリプトを試行錯誤していて、
 ahk_class Progman
での条件判定だとうまくいかなかったところ、>>666のスクリプトを元に、こんな
風にしてみた。

~LButton::
MouseGetPos, MouseX, MouseY
PixelGetColor, color, %MouseX%, %MouseY%
If(A_TimeSincePriorHotkey<300 && color=0x984E00){
Send,!{Numpad1}
}
return

ウチのXPのデスクトップは0x984E00でいいみたいなんだけど、
どんな環境でも、デスクトップ上のダブルクリックを判定できる
ロジックってどんなのがありますか?

668665:2008/06/06(金) 09:59:38 ID:89UJiJcz0
>>666
StatusBarGetTextを使う手がありましたか
ExplorerとBrouseuiはこれ参考にシンプルにできるのがわかりましたが
無数のアプリにある ファイル-開く したときの ahk_class #32770 SysListView321 は対応できないです

>>667
MouseGetPosで拾えるウィンドウIDを
WinGetで調べたデスクトップProgmanのウィンドウIDと比較してみるとか
以下IDのテスト用

~LButton::
MouseGetPos,MouseX,MouseY,WindowID,ClassNN,1
WinGet,DesktopID,,ahk_class Progman
;If(A_TimeSincePriorHotkey<300 && DesktopID==WindowID)
;Send,!{Numpad1}
If(A_TimeSincePriorHotkey<300)
MsgBox,DesktopID %DesktopID% , WindowID %WindowID%
return
669名無しさん@お腹いっぱい。:2008/06/06(金) 10:48:46 ID:P8qHdnIt0
>>668
問題はデスクトップかどうかの判定じゃないと思うのだが。
>667が言ってるのは多分あんたがつまづいてるとこと同じ
670665:2008/06/06(金) 19:45:37 ID:89UJiJcz0
>>669
うあそういうことか

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

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

アイコンのないところでダブルクリックをしたとき、イベントを乗っ取らないダブルクリックなので、
丁度よく最初のクリックの時点でデスクトップがアクティブになって選択状態が外れる
同じ方法でエクスプローラ・Openダイアログ等の余白をダブルクリックで上階層移動もできる
選択項目を利用するので MButton:: 等では途中に左クリック入れるとかしないとそのままではできない・・
671667:2008/06/07(土) 01:12:12 ID:93cVi9ld0
>>670
すごい!デスクトップの色に関係なく動きました!
(ロジックに色判定がないからあたりまえだけど... )

ControlGetを含め、今回出てきた関数を少しずつ把握していこうと思います。

色やステータスバーではなく、コントロールのIDを参照していくのがキモなんですね。

流れをぶった切った質問になっちゃったと思いましたが、意外な関連があり、新鮮な
驚きです。

>>669もありがとうー。

672名無しさん@お腹いっぱい。:2008/06/08(日) 17:38:22 ID:moLBDXbX0
Autohotkeyは日付の扱いは苦手なようなのですが、
「2008年1月1日の0時から10000秒後の時刻を求めたい」
みたいな感じのものを容易に計算できますでしょうか。
vbsならDateAdd("s", 10000"2008/01/01")で終わりなのですが。
673名無しさん@お腹いっぱい。:2008/06/08(日) 19:25:46 ID:jZi2GVYs0
EnvAdd
674名無しさん@お腹いっぱい。:2008/06/08(日) 20:50:51 ID:moLBDXbX0
>>673
日付計算のオプション合ったんですね。ありがとうございます。
675名無しさん@お腹いっぱい。:2008/06/09(月) 15:53:58 ID:R3Wd7FZq0
ControlGetのSelectedでエディットコントロールの選択内容を取得したいのですが、
複数行のテキストを全て選択してる状態だとOutputVarが空になってしまいます。

なんとか正常に取得する方法はないのでしょうか?
676名無しさん@お腹いっぱい。:2008/06/09(月) 16:42:03 ID:beY3nkeJ0
空でエラーレベルも正常なら
ControlGetTextで再取得するとか
677名無しさん@お腹いっぱい。:2008/06/09(月) 18:09:39 ID:R3Wd7FZq0
ControlGetText忘れてましたorz

ErrorLevelも失敗の1が帰ってきますが、その場合はとりあえず
ControlGetTextで取得してPixelGetColorとかで選択状態を判別する事にします。

ご返答ありがとうございました。
678名無しさん@お腹いっぱい。:2008/06/09(月) 21:10:27 ID:ctvGfYpS0
FileInstallでファイルを取り込みたいんですが、
取り込みはどうやら成功しているらしい(.ahk状態で実行して正常に実行可能、コンパイルエラーしない
かつ、Ahk2ExeでコンパイルしてEXE化も正常に出来る)んですが、

いざ出来上がったEXEを実行すると、取り込んだファイル全てが
Could not extract file: っていうダイアログが出てきて取り出せません・・・。
コードはこれです

;driverの中身全部を取り込み
;MsgBox, %A_WorkingDir%
FileInstall, driver\setupdrv.exe, \dest\setupdrv.exe, 1
FileInstall, driver\vnccom.sys, \dest\vnccom.sys, 1
FileInstall, driver\vncdrv.dll, \dest\vncdrv.dll, 1
FileInstall, driver\vncdrv.inf, \dest\vncdrv.inf, 1
FileInstall, driver\vncdrv.sys, \dest\vncdrv.sys, 1
FileInstall, driver\vnchelp.dll, \dest\vnchelp.dll, 1

%A_WorkingDir%からの相対パスで指定したいので、MsgBoxで出力してみると 最後の \ までは
入ってませんでしたので、 \dest とdestの前に\をつけてみました。最初は\なしでやってたの
ですが、どうしてもうまく動作しないので・・・。何がいけないんでしょうか?
679名無しさん@お腹いっぱい。:2008/06/10(火) 21:53:49 ID:SOxaqh3l0
すみません、文字列の扱いについてお聞きしたいのですが、
どういうときに " "をつけて囲んで文字列と認識させる必要があるのでしょうか?
" " で囲まずにMsgBoxで出しても囲んでMsgBoxで出しても同じ結果が返ってくるかと
思いきや、囲んでないと何も出てこない時もあり、混乱しています。
普通C言語やJavaでは文字列は必ず " " で囲む物ですが、AHKではその辺
どうなってるのでしょうか?例えば
MsgBox, 文字列
だと「文字列」が出力され、
strValue := 文字列
MsgBox, %strValue%
だと空文字・・いやnullなのかな?どっちか分かりませんが「文字列」が出力されずに
何も出てきません・・・。
680名無しさん@お腹いっぱい。:2008/06/10(火) 22:02:45 ID:fQ25LVyb0
>>679
× strValue := 文字列
○ strValue = 文字列

:=は、数値の計算結果を代入するときとかに使う。
よって右が文字の場合は、計算のしようが無いので空白になる
681名無しさん@お腹いっぱい。:2008/06/10(火) 22:35:38 ID:BhGK1USa0
:= 使いたい時こそ " "で囲め

× strValue := 文字列
○ strValue := "文字列"
682679:2008/06/11(水) 00:28:19 ID:fVOKMAhU0
レスありがとうございます。
なるほど、分かりました〜。
683名無しさん@お腹いっぱい。:2008/06/11(水) 01:01:13 ID:Vk8WnOSz0
str=hoge (変数strの中にhogeという文字列がある)として、
a=hoge
a:="hoge"
a:=str
a=%str%
以上のaの中はすべて文字列hogeである

また、次のif文もすべて同じ
if a=hoge
if a=%str%
if (a="hoge")
if (a=str)
684名無しさん@お腹いっぱい。:2008/06/11(水) 02:12:24 ID:6MnSS32m0
横から見ているだけでも役に立つスレだ
685679:2008/06/11(水) 07:55:51 ID:fVOKMAhU0
>>683
おお〜、ありがとうございます〜・・・

なるほど・・・道理で素人の私が混乱するわけですよ・・・
色々な書き方があるんですねぇ・・・。

if(a == "hoge")
みたいな、  =(等しいか?)の変わりに ==(等しいか?)を使っても全く同じですか?
だとしたらどうしてこんな演算子があるんだろうかと・・・。

それと自分で試行錯誤して理解したのですが
Loop, 5
{
でブロック開始しないとLoopは正常に処理されない
Loop, 5 {
で開始するとなんかmissing "{" とかエラーが出て・・・。
でもif文は
if(a == "hoge") {
で開始しても
if(a == "hoge")
686679:2008/06/11(水) 07:58:36 ID:fVOKMAhU0
途中で書き込んでしまいました。

でもif文は
if(a == "hoge") {
で開始しても
if(a == "hoge")
{
で開始してもどちらも問題なく動きます。

それとかif(a == str) { と% % で囲まずに変数名指定するだけで中身を見てくれるのに
IfWinExist, str
{
とかだと うまく動作せずに、 IfWinExist, %str% としないとだめのようです。
そしてこの構文も
IfWinExist, %str% {
ってやるとエラーが出て
IfWinExist, %str%
{
ってやると正常に動作するんですよ・・。正直言語仕様を理解するのが凄く大変です・・・。
どうしてこんなにトリッキーなんだろう・・。普通のJavaやCと同じような感じにしてくれれば・・・
687TpMOPuLyPJNoLl:2008/06/11(水) 08:02:18 ID:5Nax1wDx0
comment2, <a href="http://www.titaniuexport.kiev.ua">titanium sheets</a>, [url="http://www.titaniuexport.kiev.ua"]titanium sheets[/url], http://www.titaniuexport.kiev.ua titanium sheets, >:PPP,
688yOUAjPuxjrUJV:2008/06/11(水) 08:13:50 ID:+P08aPt30
comment6, <a href="http://doorppcpc.com/dinosaurs/coloring-pictures-of-dinosaurs.html">coloring pictures of dinosaurs
</a>, http://doorppcpc.com/dinosaurs/coloring-pictures-of-dinosaurs.html coloring pictures of dinosaurs
, atbow, <a href="http://doorppcpc.com/dinosaurs/when-dinosaurs-went-extingged.html">when dinosaurs went extingged
</a>, http://doorppcpc.com/dinosaurs/when-dinosaurs-went-extingged.html when dinosaurs went extingged
, =[[, <a href="http://doorppcpc.com/medicine/humphries-medicine.html">humphries medicine
</a>, http://doorppcpc.com/medicine/humphries-medicine.html humphries medicine
, lsj,
689名無しさん@お腹いっぱい。:2008/06/11(水) 09:13:53 ID:FV4NCQQL0
>>686
始めは %str% しか使えなかったんだよ
わかりにくいからって後から従来言語互換を追加していった結果カオスになった。

ちなみに
if(a == "hoge") だと厳密な文字列チェック(大文字小文字区別)
if(a = "hoge")  はStringCaseSense依存、デフォだと Hoge、HOGE でもOK
690名無しさん@お腹いっぱい。:2008/06/11(水) 09:52:21 ID:1HOSiKnd0
後方互換をちゃんと取ってるのはいいけど、古い仕様はobsoleteで非推奨
ってちゃんとドキュメントに書いてくれたらいいのに
691名無しさん@お腹いっぱい。:2008/06/11(水) 13:47:40 ID:uoudNQeM0
そこら辺たしかになんとかして欲しいな。
時々しかスクリプト書かないので
一度覚えてもすぐ忘れて間違えてしまう。
692名無しさん@お腹いっぱい。:2008/06/11(水) 14:20:51 ID:OcZxtXTQ0
>>691
わかる。最初AHKでと思うんだけど、すぐに面倒になってHotKey以外の部分は
UWSCで書き出す自分…
693名無しさん@お腹いっぱい。:2008/06/11(水) 15:16:17 ID:JuWezgpD0
逆に俺はAHKに慣れすぎてたまにvbsとかjsかくと無意識に変数を%で囲ったりしてる
694名無しさん@お腹いっぱい。:2008/06/11(水) 16:52:35 ID:rC/xuCxH0
俺も変数の使い方の部分で1週間ぐらい悩んだな
今でもたまに間違うし
695名無しさん@お腹いっぱい。:2008/06/11(水) 17:20:20 ID:GfcCYN010
覚えるのもあほらしいから
毎回何パターンか試して動いたらおkってことにしてるお
696名無しさん@お腹いっぱい。:2008/06/11(水) 21:16:10 ID:6MnSS32m0
俺は、%で囲う作業すら面倒になったので、
Win+Vを押すと、クリップボードの内容に%〜%をつけて出力するようにした

string=%Clipboard%
string=`%%string%`%
697名無しさん@お腹いっぱい。:2008/06/11(水) 22:11:00 ID:P7T3f9Wt0
お前ら丸暗記しようとするから混乱するんだよ
値で扱うか、式で扱うかだけだよ

値で扱う物は文字列は値となるので、変数を使いたい場合に%%で展開しなければならない。
式で扱う物は文字列は変数になってしまうので、文字列を値で扱う為には""で囲まなければならない。

 (値) : (式)
コマンド : 関数
  =  :  :=
  if  :  if()

さらに大まかに分けると、:=と()内は式が使えるとだけ覚えればいい
698名無しさん@お腹いっぱい。:2008/06/12(木) 10:10:17 ID:LFiheMSR0
こんにちは。最近AutoHotKeyを使い始めました。

PDF-XChange Viewer にて、以下のように
スペースキーを右矢印
シフト+スペースキーを左矢印
に置き換えようとしたのですが、
シフト+スペースキーが効きません。

; for PDF-XChange Viewer
#IfWinActive ahk_class DSUI:PDFXCViewer
+Space::Left
Space::Right
#IfWinActive

AutoHotKeyのKey history and script infoでみたいたところ、
Left以外に最初に押したシフトが押されたままになってしまっています。
ところが、PDF-XChange Viewerでは、シフト+右矢印は無効になります。
(右矢印のみは問題ない)
シフト+スペースを押したときに、右矢印のみを押すことはできないでしょうか?
つまり、シフト+スペース時に、シフトを無効にしたいのですが・・・
699698:2008/06/12(木) 10:29:25 ID:LFiheMSR0
これでいけました!

; for PDF-XChange Viewer
#IfWinActive ahk_class DSUI:PDFXCViewer
+Space::
Send {Left}
return
Space::Right
#IfWinActive

お騒がせしました。ご協力いただきありがとうございました。
700698:2008/06/12(木) 10:30:33 ID:LFiheMSR0
あ、returnは余計でしたね。一行でいけるのか
+Space::Send {Left}
701名無しさん@お腹いっぱい。:2008/06/12(木) 18:08:31 ID:FoxozYwL0
マウスをドラッグ中にカーソルを変更したいのですが、
AHKスクリプト内で、マウスカーソルを変更する方法はありますか?

現在のカーソルの種類を読み出すコマンドはあるようですが、
指定する方法は見つけられない状態でして・・・
702名無しさん@お腹いっぱい。:2008/06/14(土) 12:42:08 ID:/OJOw/2S0
>>701
ウェブブラウザとかでカーソルによってホットキー変えたりに使えそうなので
現在のカーソルの種類を読み出すコマンド教えてほしい

やったことないのでできるかわからんけど・・
DllCallでWin32APIのCreateCursor・GetCursor・LoadCursor・SetCursor辺り?
703名無しさん@お腹いっぱい。:2008/06/14(土) 13:38:21 ID:KKUZS0/w0
A_Cursor
704名無しさん@お腹いっぱい。:2008/06/14(土) 14:56:44 ID:/OJOw/2S0
>>704
ありがとう組み込み変数のほうにあったんですね。リファレンスだけ見てて気づかなかった・・
705名無しさん@お腹いっぱい。:2008/06/14(土) 14:58:13 ID:/OJOw/2S0
まちg
>>704じゃなく
>>703でした
706名無しさん@お腹いっぱい。:2008/06/14(土) 22:02:17 ID:ymOYz0hv0
Explorerの機能を拡張しています。
ふつうのexplorerと、左側にツリー表示のついたexplorerは、
クラスが異なりますよね。

 #IfWinActive ahk_class CabinetWClass ←ふつう
 #IfWinActive ahk_class ExploreWClass ←ツリー付き

この2つを、同じカッコ内の「IfWinActive〜#IfWinActive」で
条件付けするには、どうまとめればよいでしょうか。
707名無しさん@お腹いっぱい。:2008/06/14(土) 22:10:36 ID:P9QDc1Ur0
>>706
>>580とか?
708名無しさん@お腹いっぱい。:2008/06/14(土) 22:30:32 ID:ymOYz0hv0
>>707
ありがとうございます。

#IfWinActive,ahk_class(CabinetWClass|ExploreWClass)

とやってみたところ、両方とも認識しなくなってしまいました。
709名無しさん@お腹いっぱい。:2008/06/14(土) 23:25:22 ID:P9QDc1Ur0
>>708
AutoHotkeyのバージョンが古過ぎるか、もしくは
SetTitleMatchMode RegEx
↑を書く場所が悪いと予想。スクリプトの先頭の方の自動実行される場所に書いた?
710名無しさん@お腹いっぱい。:2008/06/15(日) 01:05:12 ID:7tnRor9C0
半角スペースが足りないだけじゃね?
711名無しさん@お腹いっぱい。:2008/06/15(日) 01:15:36 ID:jH2VfK0q0
>>709-710

SetTitleMatchMode を部分一致モードにしていたせいでした。
RegExを入れたら、うまくいきました。ありがとうございます。
712名無しさん@お腹いっぱい。:2008/06/15(日) 21:06:56 ID:OcuvWqgY0
すいません、ひとつ質問があります。

例えば、Spaceキーを押すだけで、「LButton + s」の同時入力を行うには
どのように書けばいいの?

もう二時間、悩んでいるw
713名無しさん@お腹いっぱい。:2008/06/15(日) 21:43:46 ID:7tnRor9C0
MOUSECLICKのあげさげではさめば?
714名無しさん@お腹いっぱい。:2008/06/15(日) 22:59:11 ID:Fn6xQx1s0
>>712
Space::Send,{Lbutton}s
とか。それとも、ほんとうの意味で同時入力したい?
715名無しさん@お腹いっぱい。:2008/06/16(月) 00:50:27 ID:s53Akh/30
マウス押下中にsを入力したいってことじゃね
713の言うように
Space::Send,{Lbutton Down}s{Lbutton Up}
みたいにしたらいいんじゃね
716名無しさん@お腹いっぱい。:2008/06/16(月) 08:04:06 ID:rMcmKz300
シフトと0で、0を4つ入力したい(1万円をすぐ入力したい)のですが、
これで合っていますでしょうか?
一応、入力できているみたいですが不安です。

; shift + "0" -> 0000 for shortcut of ten thousand yen
+0::Send, 0000
717名無しさん@お腹いっぱい。:2008/06/16(月) 15:28:41 ID:e6N9rHfy0
ここで聞かずとも、そのまま使ってりゃええやん。
動かないなら聞きに来ればいいだろうけど。
718名無しさん@お腹いっぱい。:2008/06/20(金) 23:32:37 ID:8ANCqge80
選択範囲をクリップボードにコピーして
googleで検索するスクリプトありませんか?
フォルダ毎消してしまったので、
どなたか、スクリプトとue.exe(検索するexe)のダウンロード先を
教えていただけませんか?
719名無しさん@お腹いっぱい。:2008/06/20(金) 23:35:26 ID:/v1U/RX80
作ればいいじゃん。3行でできるだろ。
何のためにこのスレに出入りしてるんだか
720名無しさん@お腹いっぱい。:2008/06/21(土) 00:21:29 ID:5NjH8bU60
素晴らしい丸投げ力ww
721名無しさん@お腹いっぱい。:2008/06/21(土) 00:26:45 ID:d15Akmfo0
ThumbSenseのようなことができないかなと思ったんだけど、タッチパッドに触れているかどうかって取得できる?

ThumbSense
http://www.sonycsl.co.jp/person/rekimoto/tsense/soft/indexj.html
722名無しさん@お腹いっぱい。:2008/06/21(土) 00:33:57 ID:SUb0F13i0
>>721
流行らせるページのMy Scripts
723名無しさん@お腹いっぱい。:2008/06/21(土) 00:35:04 ID:nKHkjySg0
>>721
「ThumbSense AutoHotkey」や「タッチパッド AHK」とかのワードでなぜ検索しなかった。
724名無しさん@お腹いっぱい。:2008/06/21(土) 09:49:22 ID:d15Akmfo0
>>722-723
できるんだ。ありがとう!
725名無しさん@お腹いっぱい。:2008/06/21(土) 15:03:28 ID:HZvBXUF60
#IfWinActiveでアプリのウインドウタイトルに部分一致させようとしたのですけど、
うまくいきません。キーが置き換わってくれないようです。
以下は、エディタxyzzyでスペースキーを jに置き換えようとした例です。

#IfWinActive, xyzzy
Space::j
#IfWinActive
726名無しさん@お腹いっぱい。:2008/06/21(土) 15:08:25 ID:HZvBXUF60
AutoHotkeyのヘルプにj,kを試しに割る振ったところ、うまくいきました。あれ?
エディタコントロールだとうまくいかないのは何故?

#IfWinActive, AutoHotkey
j::Send {down}
k::Send {up}
#IfWinActive
727名無しさん@お腹いっぱい。:2008/06/21(土) 15:15:20 ID:HZvBXUF60
わかった、#IfWinActive って前方一致でマッチなのか・・・
#IfWinActiveではなく、
SetTitleMatchMode, 2使って、IfWinActiveを使えということ?
728名無しさん@お腹いっぱい。:2008/06/21(土) 15:31:29 ID:CJebb/TO0
最初のでダメということは、xyzzyの「キャプションの表示を逆順」にしてるということだよね
部分一致で #IfWinActive xyzzy とかやると、エクスプローラ等でxyzzyのフォルダ開いてもマッチするから正規表現の方がいい
SetTitleMatchMode, RegEx
#IfWinActive,-\sxyzzy\s[0-9.]+@\w+$
729名無しさん@お腹いっぱい。:2008/06/21(土) 15:42:56 ID:HZvBXUF60
>>728
#IfWinActiveだと駄目みたいですね。IfWinActiveだとうまくいきますね。
しかし、IfWinActiveだと、ホットキーごとに逐一書かないといけないから大変だなあ・・・

とりあえず、F9でメニューから機能を呼び出して実行しようとしたのですが、
$を他のウインドウにF9をきちんと送るようにするには、定義時に$を先頭につける、
という認識でよいのでしょうか?

$F9::
SetTitleMatchMode, 2
IfWinActive, Editor
Send, !TD
else
Send, {F9}
return
730名無しさん@お腹いっぱい。:2008/06/21(土) 15:44:19 ID:HZvBXUF60
ああ、すいません、xyzzyはテスト用としてやってました。
本番環境では別のアプリなんです、すいません。
731名無しさん@お腹いっぱい。:2008/06/21(土) 16:44:31 ID:5NjH8bU60
俺のINIではモード2で#IfWinActiveの後方一致も機能している
732名無しさん@お腹いっぱい。:2008/06/22(日) 08:45:30 ID:tjvHat8g0
Windowsの「イベントビューア」の情報を、AHKスクリプト内で選り分け等の
処理ができる方法またはスクリプトはありませんか?

現状、下記のスクリプトを呼び出して、一旦テキストファイルにして情報を取得するところまでは
確認できました。あとは、この情報をLoopで回してフィルタ処理しようと計画しています。

cscript C:\WINDOWS\system32\eventquery.vbs /V /FO CSV > securitylog.csv

もし、これと同じ処理ができる既成のスクリプトがあったら使わせていただきたいのですが、
情報ありましたらよろしくです。
733名無しさん@お腹いっぱい。:2008/06/22(日) 09:37:09 ID:mVxRkpZW0
>>731
あれ?そうですか?おかしいな・・・
よければ、バージョン番号を教えていただけないでしょうか?
こちらは、v1.0.47.06です
734名無しさん@お腹いっぱい。:2008/06/22(日) 09:53:57 ID:mVxRkpZW0
>>731
ああ!いけました!
ホットキーなどの定義にSetTitleMatchMode 書いたら #IfWinActive でも別の一致方法が設定できました。

Auto-execute Sectionを意識してなかった
735名無しさん@お腹いっぱい。:2008/06/22(日) 09:54:29 ID:mVxRkpZW0
x ホットキーなどの定義にSetTitleMatchMode 書いたら
o ホットキーなどの定義の前に SetTitleMatchMode 書いたら
736名無しさん@お腹いっぱい。:2008/06/22(日) 13:21:06 ID:O4x3D91b0
>>732
AHKにこだわる理由やフィルタの具体的な内容も分からんからアドバイスのしようが無い
しいて挙げれば、リファレンスのExamplesの#1や#3とか
ttp://www.autohotkey.com/docs/commands/LoopReadFile.htm
737名無しさん@お腹いっぱい。:2008/06/26(木) 12:00:49 ID:+HOTftFc0
5分間キーボードやマウスの入力がなかったら発動する
関数って指定できる?
738名無しさん@お腹いっぱい。:2008/06/26(木) 12:14:21 ID:HuA5Z6sh0
>関数って指定できる?

739名無しさん@お腹いっぱい。:2008/06/26(木) 12:58:17 ID:Yifr2ElP0
>>737
        ,.-─ ─-、─-、
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ , -─        Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    > ---- r‐'´
      ヽ_         |
         ヽ _ _ 」

     ググレカス [ gugurecus ]
   (西暦一世紀前半〜没年不明)
740名無しさん@お腹いっぱい。:2008/06/26(木) 13:02:08 ID:+Kv8rqWd0
これはまた良いツンデレの見本w
741名無しさん@お腹いっぱい。:2008/06/26(木) 16:32:18 ID:7EPWQR3Z0
ワロタ
742名無しさん@お腹いっぱい。:2008/06/26(木) 19:12:03 ID:TArou/GJ0
見事だw
743名無しさん@お腹いっぱい。:2008/07/04(金) 09:19:26 ID:cDHvtAY+0
AHKでウィンドウのタイトルバーの色を変えたり、
ウィンドウの背景色を変えたりできるのでしょうか。
744名無しさん@お腹いっぱい。:2008/07/04(金) 10:20:44 ID:gMBEDfh00
画面のデザインを変えたいってことなら
該当箇所のレジストリを書換えるようなスクリプト書けばいけるんじゃない?
.regで事足りるような気もするが。
745名無しさん@お腹いっぱい。:2008/07/04(金) 20:27:30 ID:QSekNGUM0
他アプリのツールチップの文字情報を取得することは可能でしょうか?
746名無しさん@お腹いっぱい。:2008/07/06(日) 11:26:18 ID:0IhcnfRb0
文字と文字コードを相互に変換する方法てないでしょうか?
747名無しさん@お腹いっぱい。:2008/07/06(日) 11:57:22 ID:v0EI83tE0
Transform
748名無しさん@お腹いっぱい。:2008/07/06(日) 12:02:09 ID:0IhcnfRb0
すみません、2バイト文字を相互変換する方法でした
Transformだと無理っぽいんで・・・
749名無しさん@お腹いっぱい。:2008/07/06(日) 12:42:22 ID:mOlxYaHY0
2バイトを別々に切り出して変換するしかないね
750名無しさん@お腹いっぱい。:2008/07/06(日) 15:58:45 ID:v0EI83tE0
ue2clip.exe
751名無しさん@お腹いっぱい。:2008/07/06(日) 16:29:13 ID:7VWKEgVf0
>>748

http://www.google.com/search?hl=ja&q=nkf

instr : 変換したい文字列
code : 変換後の文字コード nkfのドキュメント参照
戻り値: 変換された文字列

nkf(instr, code)
{
   outstr:=instr
   hLib:=DllCall("LoadLibrary", "Str", "nkf32.dll", "UInt")

   DllCall("nkf32.dll\SetNkfOption", "Str", code)
   DllCall("nkf32.dll\NkfConvert", "Str", outstr, "Str", instr)

   DllCall("FreeLibrary", "UInt", hLib)

   Return outstr
}
752名無しさん@お腹いっぱい。:2008/07/08(火) 19:42:48 ID:dJe/KcSZ0
alt+zをf3にしたく
!z::f3
としても機能しません
shiftとctrlとの組み合わせはうまくいきます
原因がわかるかたいらっしゃいますか?
753名無しさん@お腹いっぱい。:2008/07/08(火) 20:07:12 ID:TP0RFui+0
!z::{f3}
754名無しさん@お腹いっぱい。:2008/07/08(火) 20:19:42 ID:dJe/KcSZ0
>>753
エラーになります
755名無しさん@お腹いっぱい。:2008/07/08(火) 20:53:40 ID:brHnBsLy0
!z::send,{F3}
756名無しさん@お腹いっぱい。:2008/07/09(水) 20:25:06 ID:gJl8ETQr0
>>755
おかげさまでうまくいきましたありがとう
しかしaltだけ書き方が違うと気持ち悪いですね
いったい何が原因だろうか
こういう納得のいかない部分がなければかなりオキニソフトなんですが
757757:2008/07/11(金) 11:59:42 ID:C5AilJKz0
ちょい長くなるけど。無変換を押してるときだけTop表示するウィンドウを作りたいんだけど、
機能で「Alt+無変換でそのウィンドウ上にカーソルがあればTop表示」する。
下記のやり方だと一度きりのホットキーにしかならないんです。どうすればいいのでしょう?

KeyWait, LButton
ToolTip ,ウィンドウを左クリックすべし。
;左クリック発生を待ち、カーソル下のウィンドウハンドルを変数(henti)に格納。
;そのウィンドウを再背面に表示移動。
KeyWait, LButton,D
ToolTip ,
KeyWait, LButton
MouseGetPos ,,, henti
WinSet , Bottom ,, ahk_id %henti%

1111:
Loop
{
;無変換を押されているときだけ最前面表示。離されると最背面。
KeyWait, vk1Dsc07B,D
WinSet, Top ,,ahk_id %henti%
KeyWait, vk1Dsc07B
WinSet, Bottom ,,ahk_id %henti%
}
Return
758757:2008/07/11(金) 12:01:42 ID:C5AilJKz0
;ホットキー
~^vk1D::
{
WinSet, Top ,,ahk_id %henti%
ExitApp
}
!vk1D::Goto, 2222
Return

2222:
Loop
{
WinSet, Top ,,ahk_id %henti%
MouseGetPos ,,, jentj
Sleep,200
if jentj = %henti%
{
continue
}
else
{
WinSet, Bottom ,,ahk_id %henti%
Break
}
}
Goto,1111

プログラミングやったことないんで、見づらかったらスマン。
759名無しさん@お腹いっぱい。:2008/07/11(金) 13:32:00 ID:N46H5XNF0
>>745
これできませんかね?
760名無しさん@お腹いっぱい。:2008/07/11(金) 14:54:33 ID:5P8qmhwc0
>>757

#WinActivateForce

ToolTip ,ウィンドウを左クリックすべし。
KeyWait ,LButton,D
;左クリック発生を待ち、カーソル下のウィンドウハンドルを変数(henti)に格納。
;そのウィンドウを再背面に表示移動。
ToolTip ,
MouseGetPos ,,, henti
WinSet , Bottom ,, ahk_id %henti%

vk1D::
!vk1D::
WinGet,hwnd,ID,A
WinSet, Top ,,ahk_id %henti%
WinActivate ,ahk_id %henti%

MouseGetPos ,,, jentj
if (A_ThisHotkey = "!vk1D" && jentj = henti)
return

KeyWait, vk1D
WinSet, Bottom ,,ahk_id %henti%
WinActivate ,ahk_id %hwnd%
return

^vk1D::
WinSet, Top ,,ahk_id %henti%
ExitApp
return
761名無しさん@お腹いっぱい。:2008/07/11(金) 14:56:58 ID:5P8qmhwc0
>>759

CoordMode,ToolTip,Screen

Loop {
tip=
WinGet,id_list,List,ahk_class tooltips_class32

Loop,%id_list% {
id:=id_list%A_Index%
ControlGetText,ret,,ahk_id %id%
tip=%tip%%ret%`r
}

StringTrimRight,tip,tip,1
ToolTip,%tip%,300,300
Sleep,300
ToolTip
}
762757:2008/07/11(金) 15:15:58 ID:C5AilJKz0
>>760
マーベラス!スリムだな。
俺のやつ、恥ずかしいわw無駄が多い。
763名無しさん@お腹いっぱい。:2008/07/11(金) 16:42:25 ID:N46H5XNF0
>>761
ありがとうございます。
背景が薄オレンジっぽいやつは取れましたが、
白っぽいものは取れませんでした。
ツールチップのクラスって、ソフトによって違うのでしょうか?
764名無しさん@お腹いっぱい。:2008/07/11(金) 16:47:23 ID:dJanEmIx0
動画再生ソフト(ソフト名:SMPlayer)で、ホットキーでシークさせています。
この際、動画のシーンが変化した(シークが完了した)かどうかを判別させる方法はないでしょうか。

オーバーレイで表示している領域のマウスカーソル上の色を取り出したのですが、うまくいきません。

 MouseGetPos, MouseX, MouseY ,hwnd,ctrl,1
 PixelGetColor, oldcolor, %MouseX%, %MouseY%, RGB
 send,再生ソフトのシークコマンド
 PixelGetColor, nowcolor, %MouseX%, %MouseY%, RGB
 if 色が違ってたらシークされたと判別

これでオーバーレイ表示の色を取ろうとすると、当然のことながらハメコミ合成前の
元の色が毎回取得されてしまい、判別ができません。

オーバーレイを切ると、動画の表示自体が重くなってしまうので、
オーバーレイを切る方法以外で、なにかよい方法はないでしょうか。

最悪、再生時間を表示しているウインドウの色を監視しようと思いますが、
オーバーレイを使用するソフト全般で使えるワザがないかと探しています。
765名無しさん@お腹いっぱい。:2008/07/11(金) 16:55:45 ID:C5AilJKz0
同じスクリプトの多重起動で終了ってできますかね。
Ahk2Exe.exeを使ってexeファイルにしてから、プロセス名を取得して多重起動したら終了はできそうなんですが。
AHKファイルからで出来ればそれに越したことはないんだけど。
766名無しさん@お腹いっぱい。:2008/07/11(金) 17:43:20 ID:tuQIOaY40
#SingleInstance ignore
767名無しさん@お腹いっぱい。:2008/07/11(金) 18:46:02 ID:5P8qmhwc0
>>763
言語によって違う場合もあるし、ツールチップではない可能性もあるよ。

CoordMode,ToolTip,Screen

before:=sub()
Loop {
tip=
after:=sub()
Loop,PARSE,after,`,
{
if A_LoopField not in %before%
tip=%tip%%A_LoopField%`r
}
StringTrimRight,tip,tip,1
if tip=
tip=スクリプト実行後新たに表示された窓無し
ToolTip,%tip%,300,300
Sleep,300
ToolTip
}
sub()
{
WinGet,id_list,List,,,fgfxxngh
Loop,%id_list% {
id:=id_list%A_Index%
WinGetClass,ret,ahk_id %id%
clslist=%clslist%%ret%,
}
StringTrimRight,clslist,clslist,1
return,clslist
}
768名無しさん@お腹いっぱい。:2008/07/11(金) 19:55:12 ID:5P8qmhwc0
訂正

CoordMode,ToolTip,Screen
before:=sub()
Loop {
tip=
after:=sub()
Loop,PARSE,after,`,
{
if A_LoopField not in %before%
{
WinGetClass,ret,ahk_id %A_LoopField%
tip=%tip%%ret%`r
}
}
StringTrimRight,tip,tip,1
if tip=
tip=スクリプト実行後新たに表示された可視窓無し
ToolTip,%tip%,300,300
Sleep,300
ToolTip
}
sub()
{
WinGet,id_list,List,,,fgfxxngh
Loop,%id_list% {
id:=id_list%A_Index%
idlist=%idlist%%id%,
}
StringTrimRight,idlist,idlist,1
return,idlist
}
769765:2008/07/12(土) 01:25:14 ID:i7fYPYmu0
>>766
ども、設定ファイル使えばできたっぽい。

#SingleInstance force
StringTrimRight, A_AhkDir, A_AhkPath, 15
SetWorkingDir, %A_AhkDir%
;[boot]aaa = 0-none 1-起動中
IniRead, kidouVar, .\myahk.ini, boot, aaa

if kidouVar = 1
 {
 IniWrite, 0, .\myahk.ini, boot, aaa
 ExitApp
 }

if kidouVar = 0
 {
 IniWrite, 1, .\myahk.ini, boot, aaa
 a::b
 }
770名無しさん@お腹いっぱい。:2008/07/12(土) 01:50:45 ID:F/Nva7L90
初歩的なことだと思いますが、%20を半角スペースに置換するのってどうやればいいんでしょうか。
StringReplace, clipboard, clipboard, %20%, , All

StringReplace, clipboard, clipboard, %20%,"" , All

StringReplace, clipboard, clipboard, Documents%20and%20Settings, Documents and Settings , All
とやっても置換されません。%20のままです。

正しい記述を教えてください。よろしくおねがいします。
771名無しさん@お腹いっぱい。:2008/07/12(土) 01:58:42 ID:F/Nva7L90
StringReplace, clipboard, clipboard, %20%, %A_Space% , All
でも駄目でした...
772名無しさん@お腹いっぱい。:2008/07/12(土) 02:16:11 ID:pQC3N2kO0
>>769
#SingleInstanceの項ちゃんと読んだか?

>>770
clipboard := "aaaa%20%aaa"
20 := " "
Transform,clipboard,deref,%clipboard%
msgbox, %clipboard%

もしくは
#DerefChar #
clipboard := "aaaa%20aaa"
StringReplace, clipboard, clipboard, %20,#A_Space# , All
msgbox, #clipboard#
773名無しさん@お腹いっぱい。:2008/07/12(土) 02:18:16 ID:pQC3N2kO0
スマソ、エスケープでいけた。
StringReplace, clipboard, clipboard, `%20,%A_Space% , All
774名無しさん@お腹いっぱい。:2008/07/12(土) 02:27:35 ID:dji/JnRm0
;>>345の関数使うと便利んぐ

str:="こんな感じに変換出来るよ"
encStr:=uriEncode(str)
decStr:=uriDecode(encStr)
msgbox, %encStr%`n%decStr%`n%str%

encstr:="Documents%20and%20Settings"
decStr:=uriDecode(encStr)
msgbox, %encStr%`n%decStr%
return

uriDecode(str) {
Loop
If RegExMatch(str, "i)(?<=%)[\da-f]{1,2}", hex)
StringReplace, str, str, `%%hex%, % Chr("0x" . hex), All
Else Break
Return, str
}
uriEncode(str) {
f = %A_FormatInteger%
SetFormat, Integer, Hex
If RegExMatch(str, "^\w+:/{0,2}", pr)
StringTrimLeft, str, str, StrLen(pr)
StringReplace, str, str, `%, `%25, All
Loop
If RegExMatch(str, "i)[^\w\.~%/:]", char)
StringReplace, str, str, %char%, % "%" . SubStr(Asc(char),3), All
Else Break
SetFormat, Integer, %f%
Return, pr . str
}
775名無しさん@お腹いっぱい。:2008/07/12(土) 02:32:58 ID:i7fYPYmu0
>>772
引数なし
実行中のスクリプトがもうひとつ起動されたとき、「既存のプロセスを終了して起動するか」を問い合わせるダイアログが表示し、「はい」と答えると既存のプロセスを終了し新たに実行を開始する。「いいえ」と答えると、何もせず終了する。
FORCE
実行中のスクリプトがもうひとつ起動されたとき、自動的に既存のプロセスを終了して新たに実行開始する
IGNORE
実行中のスクリプトがもうひとつ起動されたとき、何もせず終了する。
OFF
常駐状態やホットキーを含むスクリプトでも複数起動を許可する

やりたいことは「同じスクリプトを実行したときに既存のプロセスも新規のプロセスも終了」したいんだけど、
引数なしは選択してどちらか。
FORCEは新規のプロセスだけ開始。無理やり新規
IGNOREは既存はそのままで、新規は何もせず終了。無視する新規
OFFは両方起動。
だという認識ですけど、違いますか?
776名無しさん@お腹いっぱい。:2008/07/12(土) 02:40:06 ID:zdfxnmG+0
%A_Space%
777名無しさん@お腹いっぱい。:2008/07/12(土) 02:46:23 ID:MKjyb69t0
>>775
>同じスクリプトを実行したときに既存のプロセスも新規のプロセスも終了

(1)プロセスを調べて、起動時に同類が居たら殺す
(2) (1)が成立した場合、自殺。(1)が不成立の場合、作業続行

結果:両方ともプロセスから居なくなる

コレじゃダメなの?
778名無しさん@お腹いっぱい。:2008/07/12(土) 02:55:36 ID:i7fYPYmu0
>>777
プロセス名がAutoHoykey.exeになるから、かぶりすぎる気がするんだけど。
簡単ならそれでいいんだけど、いい方法が思いつかない。
>>765に書いた通りならできるんだろうけど。
固有のプロセス名にしないとダメな気が。
プロセスIDも含めてどうすればいいか、いろいろ見てるんだけど見つからない。
779770:2008/07/12(土) 03:15:19 ID:F/Nva7L90
>>772-773
レスありがとうございます。
「`」を使うやり方でいけました。助かりました。
780名無しさん@お腹いっぱい。:2008/07/12(土) 03:17:15 ID:F/Nva7L90
>>774
こっちのやり方も勉強してマスターしたいと思います。

レス下さった方どうもありがとうございました。
781名無しさん@お腹いっぱい。:2008/07/12(土) 06:15:32 ID:dji/JnRm0
>>778
プロセスを外から殺すのは後始末が悪くなりそうなので、
知らせてあげる方法をとった方が良いと思う。
知ってれば自ら終了出来るので。
色々方法はあるかもしれないけど、メッセージを使ってやってみた。

もっと楽な方法があると良いんだけど、思いつかない。

以下コード
782781:2008/07/12(土) 06:16:36 ID:dji/JnRm0
#SingleInstance, Off
#Persistent
WM_AHK_QUIT=0x5555 ;適当に決めてください。
OnMessage(WM_AHK_QUIT, "OnQuit")
;自分の情報を取得
DetectHiddenWindows, On
Process,Exist
pid:=ErrorLevel
WinGetTitle, g_scriptTitle, ahk_pid %pid%
WinGet, hwnd, id, ahk_pid %pid% ahk_class AutoHotkey
;ahk_class AutoHotkeyのウィンドウを全て列挙
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
ahk_id_list%a_index%=
WinGetTitle, this_title, ahk_id %this_id%
if(g_scriptTitle==this_title && hwnd!=this_id){ ;自分以外で同じタイトルを見つけたら終了メッセージを投げる。
SendMessage, %WM_AHK_QUIT%,,,, ahk_id %this_id%
ExitApp ;仲間を消したら自分も消える。
}
}
DetectHiddenWindows, Off

OnQuit( wp,lp, msg, hwnd ){ ;投げられたメッセージを受け取って自分と同じタイトルだったら終了
global g_scriptTitle
DetectHiddenWindows, On
WinGetTitle, sender_title, ahk_id %hwnd%
if(g_scriptTitle==sender_title){
ExitApp
}
DetectHiddenWindows, Off
}
783名無しさん@お腹いっぱい。:2008/07/12(土) 10:36:55 ID:pQC3N2kO0
>>775
>やりたいことは「同じスクリプトを実行したときに既存のプロセスも新規のプロセスも終了」したいんだけど、
>765の説明じゃさすがにそれはわからんだろう
すまんねエスパーしきれなくて
784765:2008/07/12(土) 11:15:23 ID:i7fYPYmu0
>>782
まさしくこれが望んだ機能です。勉強になります。ありがとー
>>783
言葉足らずorzよくやるんだよ実生活でも。
同じスクリプトの複数プロセスで実行の禁止を脳内で勝手に常識にしてました。
785名無しさん@お腹いっぱい。:2008/07/12(土) 21:09:08 ID:y7FfH+IM0
あるボタンを押している間
マウスの縦の移動量を抑えるものってできますか?
786名無しさん@お腹いっぱい。:2008/07/15(火) 04:25:50 ID:8ZWDgYMy0
>>769よりこっちがベター、一応最後まで作ってみた。ゴミだけ残してもしょうがないし。
;/*
;[boot]
;aaa=0
;*/
;#Include %A_ScriptDir%\ReExit.ahk
;上記5行追加で他からincludeできるかも。
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[boot]
aaa=0
ReExit.ahk-再起動で既存・新規のAHKスクリプトを終了(雛形)。2008/07/12作成07/15変更
;[boot]aaa = 0-none 1-起動中;#SingleInstance force推奨・ignore/off不可
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
#SingleInstance force
;Menu, tray, NoStandard ;標準タスクトレイ右クリックメニュー全削除
Menu, tray, Add, Exit ;タスクトレイ右クリック終了メニュー追加(最下段)
IniRead, kidouVar, %A_ScriptFullPath%, boot, aaa
if (kidouVar = 1){ ;起動済と判定・終了へ
IniWrite, 0, %A_ScriptFullPath%, boot, aaa
ExitApp
}
if (kidouVar = 0){ ;スクリプト実行へ
IniWrite, 1, %A_ScriptFullPath%, boot, aaa
;;;;;;;;;;;;;;;;;;;;;;;;;ここからスクリプト
;;;;;;;;;;;;;;;;;;;;;;;;;ここまでスクリプト
}
Return
Exit:
IniWrite, 0, %A_ScriptFullPath%, boot, aaa
ExitApp
787名無しさん@お腹いっぱい。:2008/07/15(火) 04:33:46 ID:8ZWDgYMy0
でも、結局>>782を使ってる。>>782
WM_AHK_QUIT=0x5555 ;適当に決めてください。
#Include %A_ScriptDir%\aaaa.ahk
の追加で#Includeも簡単にできるし。改めて感謝の意。

俺のはいちいちスクリプト書き換えてて、気持ち悪いw
788名無しさん@お腹いっぱい。:2008/07/16(水) 20:42:47 ID:pzVWMD450
ホットキーではなく通常のキー入力のトグルonとoffって出来ますか?

例えば
aを1回押すとa押下維持
もう一度a押すと押下解除
って感じなんですが…
789名無しさん@お腹いっぱい。:2008/07/16(水) 22:08:24 ID:ntyEAAeP0
a::
{
If Ouka = 1
{
Send, {a up}
Ouka = 0
Retunn
}
If Ouka = 0
{
Send, {a down}
Ouka = 1
Return
}

未検証。「Send」を読んでけれ
790名無しさん@お腹いっぱい。:2008/07/16(水) 22:46:29 ID:vJQuTOPI0
キーリピートしなくね?
791名無しさん@お腹いっぱい。:2008/07/17(木) 02:20:45 ID:8fLX/MP00
>>789
ありがとうございます
ただ書いていただいたものでは出来ませんでした
なので書いていただいたものをベースに編集してやってるんですがうまくいかない…
なんかログ見ると同時に処理されてるっぽいんですが
792名無しさん@お腹いっぱい。:2008/07/17(木) 02:56:21 ID:iTwcb7yi0
>>791
フック使うかSendPlayあたりを使う
793名無しさん@お腹いっぱい。:2008/07/17(木) 09:57:33 ID:9d65/dON0
change := RegExReplace(clipboard, reg1, reg2)

変数が以下の場合
clipboard = "word"
reg1 = "(.*)"
reg2 = "before $1"

changeはbefore wordになると思いきや、before wordbeforeになります。
最後のbeforeはつけたくないのですが、方法はあるでしょうか?
794名無しさん@お腹いっぱい。:2008/07/17(木) 11:13:18 ID:4TKEDV9o0
こちらではならない。

それ以外の変更がどっかで加わってるんじゃないか
MsgBoxでデバッグするとよろ氏
795名無しさん@お腹いっぱい。:2008/07/17(木) 11:18:17 ID:0b4N7olM0
Clipboard = "word"
reg1 = "(.*)"
reg2 = "before $1"
change := RegExReplace(Clipboard, reg1, reg2)
msgbox, %change%

うちの環境だとちゃんと before word になるけど。Ahkのバージョンは?
796名無しさん@お腹いっぱい。:2008/07/17(木) 13:34:31 ID:9d65/dON0
>>795
やっぱだめです。
バージョンは1.0.47.04です。
797名無しさん@お腹いっぱい。:2008/07/17(木) 14:06:58 ID:s2avgFLN0
他のスクリプトが動いてない環境で実行してる?
798名無しさん@お腹いっぱい。:2008/07/17(木) 14:23:51 ID:rmQuckY10
ahkのスクリプトを、1台のマシンで2つ以上起動させ、さらに「同一のホットキー」がある場合、
そのホットキーを押したときに反応するスクリプトが不規則に変わってしまうのだけど、
これを固定化(ahkスクリプトごとに優先順位を与える)ことは可能ですか?
799名無しさん@お腹いっぱい。:2008/07/17(木) 14:58:34 ID:0b4N7olM0
>>796
バージョン確認したなら最新のAHKのバージョンとChangeLogも見ようや。
RecExは 1.0.47.05で修正来てるよ。

http://www.autohotkey.com/changelog/
800名無しさん@お腹いっぱい。:2008/07/17(木) 16:51:23 ID:9d65/dON0
>>799
ありがとうございます。
ただ最新版の1.0.47.06しかなかったので最新版で試しましたがダメですね・・・
私の環境だけなのでしょうか?
801名無しさん@お腹いっぱい。:2008/07/17(木) 18:58:09 ID:4TKEDV9o0
OnClipboardChange
がどっかで動いてんじゃないのとみるが
802788:2008/07/17(木) 20:52:28 ID:8fLX/MP00
>>789
色々やってたら出来ました
ありがとうございます
803名無しさん@お腹いっぱい。:2008/07/17(木) 22:16:12 ID:9d65/dON0
>>801
まさしくこの中でやってます。
どうすればよろしいでしょうか?
804名無しさん@お腹いっぱい。:2008/07/18(金) 00:14:50 ID:4A9T7c000
MouseGesture2の質はここでいい?
それともGestureスレのほうがいい?
805名無しさん@お腹いっぱい。:2008/07/18(金) 00:53:19 ID:wBtEt9Mg0
>>803
OnClipboardChangeの中でクリボを操作すると
その結果に対してもう一度このラベルが発動するから
予期せぬ結果が出ることがあるよ

どうすればいいかというと、上手くやれとしかいいようがない
806名無しさん@お腹いっぱい。:2008/07/18(金) 01:44:09 ID:kn/7NHhD0
ファイルを開く や ファイルの保存 などのダイアログで現在開いてるディレクトリを取得することはできないでしょうか?
807名無しさん@お腹いっぱい。:2008/07/18(金) 15:02:03 ID:Bh8+Z4kQ0
>>805
OnClipboardChangeの中でやっているけど2回呼ばれているわけではなさそう。
というか$1使わなければ、他の置換はまったく問題ないです。
なぜこのパターンだけ・・・・
808名無しさん@お腹いっぱい。:2008/07/18(金) 17:12:44 ID:EVCmy7ET0
他の環境でも再現できる最小のスクリプトを提示するのが近道だと思う
809名無しさん@お腹いっぱい。:2008/07/18(金) 17:19:44 ID:rlPAk6Zb0
>>807
挙動として正しいのかはわからんが ^ 付けたら上手くいったよ

OnClipboardChange:
change := RegExReplace(Clipboard, "(^.*)", "before $1")
msgbox, %change%
return
810名無しさん@お腹いっぱい。:2008/07/18(金) 19:29:41 ID:Bh8+Z4kQ0
>>809
ありがとうございます。
できました!
811名無しさん@お腹いっぱい。:2008/07/18(金) 21:12:06 ID:Ku3iaQvI0
実際には違う正規表現使うもんだと思ってたんだが、そういう処理なら普通に文字列結合じゃダメなんか
812名無しさん@お腹いっぱい。:2008/07/19(土) 18:59:43 ID:qfKMq80Q0
マウスイベントを使いたくて窓使いの憂鬱から移ってきました
まず106日本語キーボードをUSキーボードの配列へリマッピングしたく、
>>1にあるAutoHotkeyを流行らせるページや公式のリマップのページを参照し、
----------------------------
; convert us keymap on jp106
+2 :: @
+6 :: ^
+7 :: &
(以下省略)
----------------------------
といったものを書いてみたのですが、スクリプトをAutoHotKey.exeへD&Dしてロードしても
----------------------------
Line Text: +2 :: @
Error: Invalid hotkey.

The program will exit.
----------------------------
と最初の部分でエラーダイアログを吐いてしまいロードされません。
また、AHKに同梱の^!nでnotepad.exeが実行されるスクリプトは動作します。
OSはWindowsXPSP2、割り当てを行うキーボードはUSB接続のものです。

解決の糸口をいただければと思います。よろしくおねがいします。
813名無しさん@お腹いっぱい。:2008/07/19(土) 19:13:23 ID:kF4ld42q0
>>812
::の両端のスペースを削除するとエラー自体は出なくなるけど、
shift+2で@を出そうとするとshift+@に相当する`が出てしまうね。
もう一工夫必要と思われ。
814名無しさん@お腹いっぱい。:2008/07/19(土) 23:16:22 ID:wUpCAdan0
各々のアプリのショートカットをMenuで表示させようと思うんだけど、
Menu, M1, Add, Aを押す, aaa
aaa:
send, a
return
上記Labelを変えてsen, ^aとかsend, bとかsend, {Home}とかにするんだけど、
ほぼ全てのキーに対してそれぞれ指定するには、地道に記述するほかに何か手はありますか。
815名無しさん@お腹いっぱい。:2008/07/19(土) 23:17:48 ID:YtKqjD8+0
それだとリマップしたいキーが「+2 」とスペース入りで認識されてしまう
あとキーリマップはなんか動作が怪しかったりするので Send 使うのを勧めとく
816名無しさん@お腹いっぱい。:2008/07/20(日) 01:03:31 ID:9H/5TL1P0
>>814
ラベルを1つにして
M1Clicked:
IfEqual,ほにゃらら,1,Send,a
Else IfEqual,ほにゃらら,2,Send,^a
Else IfEqual,ほにゃらら,3,Send,b
・・・
組み込み変数のところを見直す作業に戻るんだ
817814:2008/07/20(日) 01:49:37 ID:/aS3mQLh0
>>816
どうも。
814の方法で、90種のキーを今EmEditorを使い全部書き終わりました。
あとエディタの置換とマクロで6種類。
発想が貧困だと地味な肉体労働に徹するしかない。
AHKではHotstringが大いに役立ちましたw
818812:2008/07/20(日) 05:15:28 ID:O6DTAfF20
>>813>>815お返事ありがとうございます
Sendを使うことで>>812でのエラーは解決することができました。

しかし、また問題がでてきたので質問させていただきます
--------------------------
+2::Send, @
+6::Send, {^}
+7::Send, &
+8::Send, *
+9::Send, (
+0::Send, )
--------------------------
としているのですが、このスクリプトをロードすると
Shift+7 は ^ (つまりShift+6と同じ)
Shift+9とShift+0 は * (これはどちらもShift+8と同じ)
と入力されてしまいます。

この理由をKey history and script infoを使って調べたところ、Shift+2の場合は
--------------------------
A1 136     d   8.88   RShift
32  003    d   0.16   2
A1 136  i  u   0.00   RShift
C0 01A  i  d   0.00   @
C0 01A  i  u   0.00   @
A1 136  i  d   0.02   RShift
32 003    u   0.09   2
A1 136    u   0.06   RShift
--------------------------
と履歴が出ているので、@が入力されるのですが
(続く)
819812:2008/07/20(日) 05:20:42 ID:O6DTAfF20
Shift+7の場合は、
--------------------------
A0 02A     d  4.66  Shift
37 008      d  0.27  7
36 007   i   d  0.00  6
36 007   i   u  0.00  6
A0 02A   i  u  0.02  Shift
DE 00D  i  d  0.00  ^
DE 00D  i  u  0.00  ^
A0 02A  i  d   0.02  Shift
37 008     u  0.06  7
A0 02A     u  0.05  Shift
--------------------------
となってしまいます。つまり、Shift+7は「^」に割り当てたというより、
Shift+6として割り当てられているキーに割り当てられたという結果になってしまっている気がします。

Shift+7がShift+6に展開されず直接「&」に解釈されるようにするためにはどうしたらよいのでしょうか。
もしくは他の方法でも、何か英語キー配列にリマップする方法はないものでしょうか?

よろしくおねがいします。長文失礼しました。
820名無しさん@お腹いっぱい。:2008/07/20(日) 05:46:35 ID:9H/5TL1P0
>>819
予想通りの展開だな・・
そういうときにつけたらいいものがあるんだ

Hotkeysのところを見直す作業に戻るんだ
821名無しさん@お腹いっぱい。:2008/07/20(日) 16:41:12 ID:NvAr4z5y0
質問です。
Excel2003を使用中に、セル内の文字列を編集モードで選択した状態において、選択文字列をコピーするのがうまく行きません。
Send,^c
とか
Send,{ctrl Down}
Send,c
Send,{ctrl Up}
とかやってみましたが、クリップボードに格納されたりされなかったりです。
後ろにClipWaitをつけて確認してみると一生終わらないので、やはりクリップボードに格納されてないようです。
当然キーボードでctrl+cを押した場合はちゃんとクリップボードに格納されます。
何がまずいのでしょうか。
ExcelのバージョンはOffice Personal Edition 2003(11.8211.8202) SP3、AHKは1.0.47.6です。ご教示願います。
822821:2008/07/20(日) 16:46:37 ID:NvAr4z5y0
追記です。
上記の動作をマウスのクリックに割り当ててます。
~LButton & RButton::
~LButton & XButton1::
などです。
823名無しさん@お腹いっぱい。:2008/07/20(日) 17:15:09 ID:/aS3mQLh0
俺ならUpをつけるな…
824名無しさん@お腹いっぱい。:2008/07/20(日) 18:06:13 ID:oJZbAgKO0
WinA
825名無しさん@お腹いっぱい。:2008/07/20(日) 18:07:00 ID:oJZbAgKO0
うわ、失敗

WinActivateでエクセルを強制アクティブにする動作をはさんだらどう
826812:2008/07/20(日) 19:01:07 ID:O6DTAfF20
>>820ありがとうございます。できました〜
ホットキーのラベルに$をつけるか、#UseHookで囲うかすればよかったのですね。
そして、また突っかかってしまいました。
-----------------------
(省略)
 ^::Send, =
+^::Send, {+}
 @::Send, [
+@::Send, {{}
 [::Send, ]
+[::Send, {}}
+;::Send, :
 :::Send, '
+:::Send, "
-----------------------
というスクリプトで次のエラーが出てきました。
-----------------------
Line Text: :Send, "
Error: This line does not contain a recognized action.

The program will exit.
-----------------------
ダブルクォートの行が間違っているようなのですが、「{"}」でも「`"」とエスケープしても
同じエラーが出力されてしまいます。# エスケープが2種類あるのは何故?
ラベル側のコロン3連続が原因かとも考えましたが、同じくエスケープでは解決しないようです。

何度も申し訳ありません。どうかお知恵をお貸しください。
827821:2008/07/20(日) 19:10:16 ID:NvAr4z5y0
>>823-825
レスありがとうございます。

>>823
~LButton & XButton1 Up::
のような記述と言うことでしょうか?トライしてみたんですがコピーされませんでしたorz

>>825
#WinActivateForce
WinActivate,Excel
Send,^c
ClipWait
でやってみたけど駄目でした。他のアプリ上でやるとExcelがアクティブになるので、WinActivate自体はうまく行ってるはずです。

マウスボタンに割り当てずに、適当なキーに割り当てるとちゃんと動作するので、
ボタン割り当ての記述がまずそうというのは分かるんですが...
828名無しさん@お腹いっぱい。:2008/07/20(日) 20:01:47 ID:jlXT1YMo0
>>826
試してみたら:が問題っぽいよ。キーコードで指定するんだ
あと{}はエスケープというよりSend中で{SPACE}みたく特殊なキーを指定するのに使うのが主用途
829名無しさん@お腹いっぱい。:2008/07/20(日) 23:40:15 ID:/aS3mQLh0
>>827
じゃなくて、それだとマウスキーを押したまま^vを押すことになるんじゃないかと思っただけ。
~LButton Up::
だと普通にできるでしょ。で、どうするかは自分で考えてくれ。

+:::send, +2だとダメなんか?
問題あるところがわかってるなら、そこだけ書いてください。
830821:2008/07/21(月) 00:03:11 ID:NvAr4z5y0
>>829
なるほど。Excelはマウスボタンを押したままだとctrl+cでコピーできないということですね。原因分かってすっきりしました。
修正したところ、Excel含む各アプリで問題なく動作するようになりました。ありがとうございました。
831812:2008/07/21(月) 00:30:07 ID:UCVvdXJJ0
>>828お返事ありがとうございます。
これでアルファベットと記号のキーは英語配列にすることができました。

次の質問なのですが(わからないことばかりでごめんなさい)、
Altや、Ctrl、Winなどのモディファイアキーの動作はどう実現したらいいのでしょうか。
例えばここで、
----------------------------------
*vk1Dsc07B::Send, {LALT}  ; vk1Dsc07B:無変換
*vk1Csc079::Send, {RALT}  ; vk1Csc079:変換
*vkA5sc138::Send, {LWIN}  ; vkA5sc138:RightAlt
----------------------------------
としてAltとWinにアサインしてはみたのですが、押している状態が維持されず、キーリピートしてしまいます。
それぞれの状態でif-thenしようとも考えたのですが、ステータスを取得できるのは
CapsLock、Num、Scrollキーだそうで、これも適わないように思います。

また、
----------------------------------
*{無変換 Down}::Send, {LALTDOWN}
*{無変換 UP}::Send, {LALTUP}
----------------------------------
のように押し下げ時と話したときで制御を変えようとしても、この行自体がinvalid keyとして認識されません。
「無変換」ではなく「vk1Dsc07B」としてもinvalid keyでした。

再度ご助言いただければ思います。よろしくお願いします。
832名無しさん@お腹いっぱい。:2008/07/21(月) 00:47:39 ID:HjaC7zAK0
>>830
マウスキーと^vになってたかorz。まあ結果オーライ。
ボタン2つでやるのを止めたのかな?なんか難しそうだもんね。

>>831
それこそ>>812
vk1Dsc07B::LAlt
じゃないのか?
AHKを起動してるときだけ英字配列にしたいってこと。
ずっとそうしたいんなら、レジストリとかドライバをいじったほうがいいよ。
833821=830:2008/07/21(月) 01:01:04 ID:YEEx38LB0
>>832
あら、予想と違ってました?まあ仰る通り結果オーライということで。
ボタン2つでやるのはそのままで、BlockInputとSend,{XButton1 Up}などで強制的にマウスボタンを離してからSend,^cやったら行けました。

それにしてもExcelの挙動(マウスボタン押下中はキー入力を受け付けない)が普通なんでしょうか...
他のアプリでは大抵受け付けてたんで意外でした。勉強になりました。
834名無しさん@お腹いっぱい。:2008/07/21(月) 01:05:32 ID:YEEx38LB0
ああ、^c≠^vってことですか。連投失礼しました。
835名無しさん@お腹いっぱい。:2008/07/21(月) 01:28:30 ID:HjaC7zAK0
>>833
BlockInputか、勉強になった。d
普段使わないコマンドは無いことになってるからw

たぶんIE系ブラウザとかでも出来ないんじゃないかな。MSのことだから。
836名無しさん@お腹いっぱい。:2008/07/21(月) 01:45:13 ID:YEEx38LB0
>>835
あ〜確かにIEでも駄目ですね...BlockInput使ってもうまく動いてくれないです。
もうちょっと修行を積みます。
837812:2008/07/21(月) 04:41:54 ID:UCVvdXJJ0
>>832レスありがとうございます。
割り当てるキーがモディファイアの時はSendじゃなくてよいのですね...難しいです。

おっしゃられた方法でやると、確かにNotepadなどでメニューバーの状態はAltキーを押したときと
同じにはなります。
しかし、そうするとvk1Dsc07B + Tabの組み合わせではAltTabMenuDismissしなくなります。
これを改善するために
~vk1Dsc07B & Tab::AltTab
としてみたのですが、http://lukewarm.s101.xrea.com/Hotkeys.htmlにある説明と異なり
vk1Dsc07B単独押し下げが効かなくなってしまいます。
また、ShiftAltTabをShiftキー追加で行わせるために、
+~vk1Dsc07B & Tab::AltTabとか、+vk1Dsc07B & Tab::AltTabを試してみたのですが、
invalid hot keyだそうです。

後半のご意見ですが、英語配列自体は>>831までで実現できております。
この他にEmacsバインドであるとか、ウィンドウの位置変更など行いたいことがあるため、
AHKで全部変更しようと考えております。

なにか改善案はないでしょうか...何度も申し訳ありません。
838名無しさん@お腹いっぱい。:2008/07/21(月) 10:13:07 ID:qiW+4bUZ0
>>837
修飾シンボル・・・(備考)Alt+Tab代替系コマンドが割り当てられた場合、この指定に関係なく入力は乗っ取られる。
コンビネーションキー・・・+^!#で修飾キーを追加したりは出来ない。
リファレンスは何度でも見直すんだ

Alt + Tab のメニューが残る理由はわからんがとりあえず

Remapのところに
「a::b このとき、Shift+AはShift+Bに、Ctrl+AはCtrl+Bにというように、あらゆる状態でキーの変換が有効になる。」とある
コロンの右に書かれたキーは修飾キーの影響を受けるということだろう(たぶん
ホットキーで送られる修飾キーでもいいんだろう(たぶん
なのでRemapでやるなら・・

vk1Dsc07B::LAlt
Tab::Tab

Send/修飾キーの自動復元・・・略・・・によると{Blind}は修飾キーの状態を維持しつづけるということだろう(たぶん
なのでSendでやるなら

vk1Dsc07B::LAlt
*Tab::send,{Blind}{Tab}

できたような気がするがわからんな
自分のしょぼいキーボードだと 無変換 + LShift + Tab ができないし・・・(2キーロールオーバー・・?
839名無しさん@お腹いっぱい。:2008/07/21(月) 11:08:17 ID:Ku60stOX0
正直窓使いの憂鬱使ったほうが良いと思う…
もしこのままAHKで突っ走るならできたスクリプトはぜひ公開して欲しい。
というかこの一連の流れのまとめとして残しておくべき。
840812:2008/07/21(月) 12:37:15 ID:UCVvdXJJ0
>>838レスありがとうございます。
確かに上のRemapと下のSendの例はどちらも同じ結果になりました。
ただ、これもAltTabMenuDismissしませんでした。
さらに>>837に書いたいずれも、表示された状態でもEscを押したりフォーカスを移すと
メニューが消えたのですが、挙げられた例ではスクリプトを落とす以外にメニューを消せないようです。


自分勝手で申し訳ありませんが、
英語配列(最下列のモディファイアを除く)とEmacsバインドは実現できましたので、
先に当初の目的であるマウスイベントの質問をさせていただきたく思います。
(続く)
841812:2008/07/21(月) 12:39:02 ID:UCVvdXJJ0
現在、マウス側でF14-18の仮想キーを吐かせるようにし、
それをAHK側でマウスイベントに置き換えようとしております。具体的には、
右ボタンのみクリックすると右クリックのイベント、Ctrl+右ボタンでコピー、Shift+右ボタンで貼り付け
と動作させたいと考えております。
--------------------------------------------
vk81 Down::Send, {RButton DOWN}   ; vk81はF18です
vk81 Up::Send, {RButton UP}
^vk81::Send, ^C
+vk81::Send, ^V
--------------------------------------------
というスクリプトを書きました。
上2つは問題なく使用できるのですが、モディファイアをつけた下2つが使用できない場合があります。
(確認できた中では)IE, Opera, V2Cいずれもページ内、アプリのアドレスバーに関わらず使用できません。
Notepadでは使用することができます。
(続く)
842812:2008/07/21(月) 12:40:13 ID:UCVvdXJJ0
ちなみに、右ボタン押し下げ時のkey historyは
--------------------------------------------
81 069  h  d   2.92  F18
81 069  h  u   0.16  F18
--------------------------------------------
であり、モディファイア+右ボタン押し下げ時は
--------------------------------------------
A2 01D  a  d   0.88  Ctrl
81 069  h  d   0.41  F18
A0 02A  i  d   0.00  Shift
43 02E  i  d   0.00  C
43 02E  i  u   0.00  C
A2 01D  i  u   0.02  Ctrl
A0 02A  i  u   0.00  Shift
81 069  h  u   0.09  F18
A2 01D  a  u   0.14  Ctrl
--------------------------------------------
となり、どうやらShift+Ctrl+Cが入力されてしまっているようです。

なぜこんなことが起きるのでしょうか。
また、どうすればCtrl+Cにすることができるのでしょうか。

よろしくお願いいたします。3レスも消費してしまい申し訳ありません...
843名無しさん@お腹いっぱい。:2008/07/21(月) 13:23:56 ID:HjaC7zAK0
>>838
俺のDELLノートだと、ふたつとも両方問題なくいけるな。無変換 + LShift + Tabもできる。
844名無しさん@お腹いっぱい。:2008/07/21(月) 13:27:58 ID:68wXLOuy0
つ Send, ^c
845812:2008/07/21(月) 14:07:20 ID:UCVvdXJJ0
>>843ありがとうございます。環境によるものなのでしょうか...

>>844うわーーーん
OperaでもIEでもできました。
# つまらないことで3レスも使ってしまい、申し訳ないです...
ただsyleraというブラウザではコピー後RButtonされてしまうという問題があったのですが、
^vk81 Up::Send, ^c
+vk81 Up::Send, ^v
とすることでキー離し時のRButton自体をリマップしてくれるようになり、解決しました。

ちなみに現在、(推奨はされていませんが)mayuとAHKを同時使用しております。
>>837など解決していない問題がありますが、しばらくはこれでやってみたいと思います。

失礼しました。
846名無しさん@お腹いっぱい。:2008/07/21(月) 22:21:41 ID:/7tnPs8s0
うちもvk1Dsc07B::LAltで正常にALTTABメニュー動作する
シフト+無変換+TABもおk
他の操作も普通にALTキー押したときと変わらない
2Ksp4
キーボードはPS/2
847名無しさん@お腹いっぱい。:2008/07/22(火) 20:13:07 ID:8GJz6EI90
解決済みみたいけど、昔作った101on106を貼っとく
一部のキーはremapでも書けるはずだけど、メニューから切り替えしようとしたら、これしか思いつかなかった。
簡潔な書き方があったら教えてください。

#IfWinActive
#UseHook,On
+2::Send,{@ Down}
+2 Up::Send,{@ Up}
+6::Send,{^ Down}
+6 Up::Send,{^ Up}
+7::Send,{blind}{& Down}
+7 Up::Send,{blind}{& Up}
+8::Send,{blind}{* Down}
+8 Up::Send,{blind}{* Up}
+9::Send,{blind}{( Down}
+9 Up::Send,{blind}{( Up}
+0::Send,{blind}{) Down}
+0 Up::Send,{blind}{) Up}
+-::Send,{blind}{_ Down}
+- Up::Send,{blind}{_ Up}
^::Send,{= Down}
^ Up::Send,{= Up}
+^::Send,{blind}{+ Down}
+^ Up::Send,{blind}{+ Up}
*@::Send,{blind}{[ Down}
*@ Up::Send,{blind}{] Up}
*[::Send,{blind}{] Down}
*[ Up::Send,{blind}{] Up}
848847:2008/07/22(火) 20:15:40 ID:8GJz6EI90
続き
+`;::Send,{: Down}
+`; Up::Send,{: Up}
:::Send,{' Down}
: Up::Send,{' Up}
*::Send,{" Down}
* Up::Send,{" Up}
*]::Send,{blind}{\ Down}
*] Up::Send,{blind}{\ Up}
sc029::Send,{``}
sc029 Up::Send,{`` Up}
+sc029::Send,{blind}{~}
+sc029 Up::Send,{blind}{~ Up}
#UseHook,Off
101on106Init( sw = "off" )
{
Menu,TRAY,Add,101on106,101on106Menu
Menu,TRAY,Add
Menu,TRAY,NoStandard
Menu,TRAY,Standard
if ( sw = "on" ) {
Menu,TRAY,Check,101on106
101on106Control( "On" )
} else {
Menu,TRAY,Uncheck,101on106
101on106Control( "Off" )
}
}
101on106Menu:
Menu,TRAY,ToggleCheck,101on106
101on106Control( "Toggle" )
return
849847:2008/07/22(火) 20:17:36 ID:8GJz6EI90
101on106Control( sw )
{
Hotkey,IfWinActive
Hotkey,+2,%sw%
Hotkey,+2 Up,%sw%
Hotkey,+6,%sw%
Hotkey,+6 Up,%sw%
Hotkey,+7,%sw%
Hotkey,+7 Up,%sw%
Hotkey,+8,%sw%
Hotkey,+8 Up,%sw%
Hotkey,+9,%sw%
Hotkey,+9 Up,%sw%
Hotkey,+0,%sw%
Hotkey,+0 Up,%sw%
Hotkey,+-,%sw%
Hotkey,+- Up,%sw%
Hotkey,^,%sw%
Hotkey,^ Up,%sw%
Hotkey,+^,%sw%
Hotkey,+^ Up,%sw%
Hotkey,*@,%sw%
Hotkey,*@ Up,%sw%
Hotkey,*[,%sw%
Hotkey,*[ Up,%sw%
Hotkey,+`;,%sw%
Hotkey,+`; Up,%sw%
Hotkey,:,%sw%
Hotkey,: Up,%sw%
Hotkey,*,%sw%
Hotkey,* Up,%sw%
850847:2008/07/22(火) 20:18:39 ID:8GJz6EI90
Hotkey,*],%sw%
Hotkey,*] Up,%sw%
Hotkey,sc029,%sw%
Hotkey,sc029 Up,%sw%
Hotkey,+sc029,%sw%
Hotkey,+sc029 Up,%sw%
}

改めて見たら妙に長かった。ごめん
851名無しさん@お腹いっぱい。:2008/07/22(火) 21:46:26 ID:jubpOyDv0
こんなのもあっさり実現出来そうな気がする
ttp://www.forest.impress.co.jp/article/2008/07/22/okiniiri.html
852名無しさん@お腹いっぱい。:2008/07/22(火) 22:10:25 ID:uDYZO+4N0
Ctrl+カーソルに割り当てとルナ
853名無しさん@お腹いっぱい。:2008/07/23(水) 03:32:19 ID:w0VILZMc0
>>851
この発想面白いね。
854名無しさん@お腹いっぱい。:2008/07/24(木) 02:54:58 ID:Uk0Rhz5r0
>>851 ミニキーボードだと 修飾キー+Fn+UpDown が面倒なのでいいかも・・
ってことでやってみたサンプル,複数タップ後押しっぱなしでそのキーのキーリピート,修飾状態も有効に
$*Up:: ; 行数足りないので削った$*Down::と$*Down up::を追加して。。
$*Up up::
ArrowKey(A_ThisHotkey) ;ホットキーラベルで分岐
return
ArrowKey(param1=""){
Static KeyName,KeyDownCheck="off",KeyRepeat="off",Counter=0
If(param1="$*Up up"||param1="$*Down up"){ ;キーを離したとき
IfEqual,KeyRepeat,on,Send,{Blind}{%KeyName% up} ;キーリピート後はKey up
KeyDownCheck:="off",KeyRepeat:="off"
}Else If((param1="$*Up"||param1="$*Down")&&KeyDownCheck="off"){ ;キーが押されたとき
KeyDownCheck:="on"
IfEqual,param1,$*Up,EnvAdd,Counter,1
Else IfEqual,param1,$*Down,EnvAdd,Counter,-1
Settimer,ArrowKeyTimer,-200 ;タップ数を検出する時間
}Else If((param1="$*Up"||param1="$*Down")&&KeyDownCheck="on"){ ;キーを押しつづけてるとき
KeyRepeat:="on"
Send,{Blind}{%KeyName% down} ; キーリピートはKey down
}Else If(param1="UDcheck"){ ;UpDownタップ数でキーを変える
IfGreaterOrEqual,Counter,3,SetEnv,KeyName,home
Else IfGreaterOrEqual,Counter,2,SetEnv,KeyName,pgup
Else IfGreaterOrEqual,Counter,1,SetEnv,KeyName,up
Else IfLessOrEqual,Counter,-3,SetEnv,KeyName,end
Else IfLessOrEqual,Counter,-2,SetEnv,KeyName,pgdn
Else IfLessOrEqual,Counter,-1,SetEnv,KeyName,down
Counter:=0 ;カウンタリセット
Send,{Blind}{%KeyName%} ;変数の中にキー名
}}
ArrowKeyTimer:
ArrowKey("UDcheck")
return
855名無しさん@お腹いっぱい。:2008/07/25(金) 17:08:35 ID:G7hayDtr0
済みません基本的操作になると思うのですが、質問させて下さい。インストール後
スクリプトを一つ書いて拡張子を.ahkにしショートカットを作りスタートアップに、再起動で
希望どおりの動きになり喜んでいるのですが、この後また別のスクリプトを追加したくなった
場合、スタートアップを増やしていくのでしょうか、何か違うと思うのですが解決方法が
分かりません此方の方々にはアホかと思われそうですが、どうか宜しくお願い致します。
856名無しさん@お腹いっぱい。:2008/07/25(金) 17:23:51 ID:5RAYtbii0
ショートカットを追加してもうひとつ起動してもいいし
#Include scriptname.ahk ってやって最初のスクリプトに読み込ませてもいい
ケースバイケースで使い分けれ
857名無しさん@お腹いっぱい。:2008/07/25(金) 18:38:26 ID:uIA4j8g40
先にスタートアップに登録した.ahk内に
Run,〜.ahkと記述してもいい
858名無しさん@お腹いっぱい。:2008/07/25(金) 19:26:16 ID:q6S8zSiH0
常駐させるならautohotkey.iniでいくね
859名無しさん@お腹いっぱい。:2008/07/25(金) 20:58:12 ID:IlhpeAhI0
WinSetのBottomが正常に機能しない場合があります

対象のウィンドウが手前に表示されたまま
非アクティブになるだけで最背面に移動しません

流行らせるページのWinSetのTopの項目に書いてある
>システムの設定によっては動作しない。
というのがBottomの場合でもあるのでしょうか?
860名無しさん@お腹いっぱい。:2008/07/25(金) 23:26:33 ID:G7hayDtr0
>>856 857 858
御礼が遅くなり失礼しました。即レス感謝致します。
流石にいろんな方法が、あるのですね。ショートカット
追加でも良いとの事で少し安心しましたが、余り
スマートではないので色々と試してみます。
処でこのソフト相当自由度が高く、奥が深そうなのですが
間違ったスクリプトを組んだ場合PCのシステム並びに
対象としたソフトに悪影響を及ぼす事は無いでしょうか

861名無しさん@お腹いっぱい。:2008/07/26(土) 10:23:08 ID:YlZi0RUV0
あるますん
862名無しさん@お腹いっぱい。:2008/07/26(土) 11:08:00 ID:QTRR5XZk0
ありがとうございます
863名無しさん@お腹いっぱい。:2008/07/26(土) 17:59:29 ID:ilxQJz3b0
ホイールスクロールで移動後にコンテキストメニューを残さない方法は
無いでしょうかお願いします。

#IfWinActive ahk_class MozillaUIWindowClass
~RButton & WheelDown::send,^{PgDn}
~RButton & WheelUp::send,^{PgUp}
#IfWinActive
864名無しさん@お腹いっぱい。:2008/07/26(土) 19:19:52 ID:bX23lm3d0
RButton使わなきゃいいんじゃね。ホイールスクロールは関係ない
865名無しさん@お腹いっぱい。:2008/07/26(土) 19:20:13 ID:9Su3XpNF0
~付けなきゃ良いのでは
866名無しさん@お腹いっぱい。:2008/07/26(土) 19:29:36 ID:ilxQJz3b0
>>864
Operaのタブ切り替えと同じくしたいので
>>865
右クリックでコンテキストメニューが出なくなります。
867名無しさん@お腹いっぱい。:2008/07/26(土) 19:49:58 ID:6oe7gP+i0
コンビネーションを使わないで
ホイール回したとき右クリックの状態をGetKeyStateで取得し分岐
右クリック+ホイールのときはRButton upを送らないとか

RButton upしないことで起こる問題については知らんけど・・
868名無しさん@お腹いっぱい。:2008/07/26(土) 20:50:17 ID:bX23lm3d0
一瞬ちらっと出てもいいのなら Send,{Alt} でもしといたら?
869名無しさん@お腹いっぱい。:2008/07/26(土) 22:42:55 ID:6oe7gP+i0
RButton upしないと押しぱなしになるか。。
Opera・・たぶんジェスチャを使うだろうからちょっと複雑になるかも?
試したところ以下の方法できた

$RButton::
開始フラグ、マウスの初期位置取得、セットタイマ

タイマのラベル:
マウス位置が適当に変わったら{タイマオフ、Click,Right,Down、RButtonDownのフラグ}

$RButton Up::
RButtonDownしてた場合{Click,Right,Up}
なにもなかった場合{タイマオフ、Click,Right}
ホイールを回した場合{なにもしない}

$WheelDown::
GetKeyStateでRButtonの状態取得(Hookで
マウス右ボタンが押されている{タイマオフ、Send,^{pgdn}、ホイール回転のフラグ}
それ以外はWheelDown

$WheelUp::
GetKeyStateでRButtonの状態取得(Hookで
マウス右ボタンが押されている{タイマオフ、Send,^{pgup}、ホイール回転のフラグ}
それ以外はWheelUp
870名無しさん@お腹いっぱい。:2008/07/26(土) 23:34:42 ID:ilxQJz3b0
>>869
有難う御座います。昨日から覚え出した処でして、
宜しければスクリプトとして記載して頂けないでしょうか
勉強させて頂きたいので宜しくお願いします。
871名無しさん@お腹いっぱい。:2008/07/26(土) 23:49:39 ID:bX23lm3d0
テストスクリプト作って試したのにもかかわらず
わざわざ文で書き起こした869の親心を理解しろ
872名無しさん@お腹いっぱい。:2008/07/26(土) 23:56:01 ID:G4LRfSeJ0
初歩的な質問で申し訳ないのですが、
#(Win)キーを叩いた時に、スタートのメニューを開かないようにするにはどうすればいいのでしょうか?
#:: return でいけるかなと思ったのですが、、これでは駄目なようで
873名無しさん@お腹いっぱい。:2008/07/26(土) 23:59:44 ID:WW1HWlGt0
LWin::return
RWin::return
874名無しさん@お腹いっぱい。:2008/07/27(日) 00:24:42 ID:KTQIzHRp0
>>869
折角、説明を入れて頂いたのですが、今の私のスキルでは
スクリプトとして組み立てられません。
どのようにスクリプトを書けばよいのでしょうか
875名無しさん@お腹いっぱい。:2008/07/27(日) 01:14:07 ID:t97jkdYn0
>>873
おお、出来ました。ありがとうございます
876名無しさん@お腹いっぱい。:2008/07/27(日) 22:55:34 ID:KTQIzHRp0
>>869のスクリプトの件、自分なりに考えたのですが
どうにもなりませんどうか宜しくお願いします。
877名無しさん@お腹いっぱい。:2008/07/27(日) 23:02:03 ID:BLLdYmKD0
自分なりに試したことを書くべきじゃない?
何が駄目なのか全然分からないから、周りの人もアドバイスしようがないと思う。
878名無しさん@お腹いっぱい。:2008/07/28(月) 03:28:53 ID:H5VuRu5h0
マウスの戻る/進む(XButton1/XButton2)にホイールアップ/ダウンを割り当てる方法を教えてくれませんか。
指が腱鞘炎になってしまいホイールを回すと痛みを覚えるので、押しやすい戻る/進むボタンで
ホイールを操作できるようになれば非常にありがたいのです。

XButton1::Send, {WheelUp}
XButton2::Send, {WheelDown}

と、書いてみたものの。XButton1を押し続けてもスクロールしてくれるのは
1回だけでこれでは意味がありません。
879名無しさん@お腹いっぱい。:2008/07/28(月) 03:45:54 ID:KLS9LeAo0
>>878
フックのコマンド自体はそれで正解。
ただ長押ししてリピートさせる機能はないので、コードを手動で書かないとダメだね。

単発で送信するキー(今回はwheelDown、wheelUp)
長押しと認識するまでの時間(例:300msec)
長押しで認識したとき送信するキー(今回はwheelDown、wheelUp)
長押しで連打する間隔&タイミング(例:50msec)

以上のパラメータが必要。
キーが押されているかどうかは「GetKeyState」コマンドを使う。
Dが帰ってきたら押されっぱなし、Uならキーが離されたと判断できる。

最初は面倒だけど、いったん作ってしまえば、自在に間隔を調整できる。
880名無しさん@お腹いっぱい。:2008/07/28(月) 03:57:32 ID:KLS9LeAo0
さて質問ですが、PCに接続されたキーボードごとに、
それぞれ別のルーチンを走らせる方法って、ありますか?

やりたいことを具体的に書くと、下記の商品のテンキーを押したときに、
本体のキーボードとは別の機能を割り当てたいのです。

マウスとテンキーを1つにしたテンキーマウス
http://www.watch.impress.co.jp/akiba/hotline/20080726/image/mntwlma1.jpg
http://www.sanwa.co.jp/product/syohin_img/N/NT-WLMA2BK_MA.jpg
http://www.sanwa.co.jp/product/syohin.asp?code=NT-WLMA2BK&cate=1

そのまま numpad1:: などで設定すると、PC本体につながれたフルキーボードの
テンキー部分がその機能になってしまい、支障が出てしまいます。

HIDのIDごとに設定を変えられればイケそうなのですが、
そのような指定はahkでは見つけられませんでした。なにかよい案、無いでしょうか。
881名無しさん@お腹いっぱい。:2008/07/28(月) 04:16:04 ID:eK08MVg00
無理なんじゃないのかねぇ、H/W毎に制御ってのは。

発想の転換で、たとえば2ストロークキーでモード切替(キーアサイン変更)するとか
ex)
Numpad0 && NumpadEnter:: ChangeMode(1)
ChangeMode(mode) {
 if (mode == 1) {
  Hotkey, Numpad0, hogehoge ...
   :
 } else {
  Hotkey, Numpad0, fugafuga ...
 }
}
882名無しさん@お腹いっぱい。:2008/07/28(月) 05:40:11 ID:Koe8nJ3/0
>>880
>テンキーはドライバ不要で 「NumLock非連動タイプ」 です。
ここが気になるけど
キーボードはNumLockON状態のキー、マウスはNumLockOFF状態のキーとかはできないの?
キーボードとマウスをNumLock状態に逆にすると一応は別の機能の割り当てってことにはなるが・・
883名無しさん@お腹いっぱい。:2008/07/28(月) 18:20:39 ID:SwIpb/9H0
済みません>>869のテストスクリプトの件どうしても諦め切れず
何とか、スクリプトとして記載して頂けないでしょうか
正直、自分では、どのように組み立てれば良いのか分からない
状態で手の付けようがありません。どうか宜しくお願いします。
884名無しさん@お腹いっぱい。:2008/07/28(月) 19:23:51 ID:SJH64Ch50
>正直、自分では、どのように組み立てれば良いのか分からない
それは今のお前のレベルでは使うべきではないと言うことだ。
流行らせるページ熟読してせめてピンポイントでわからない所を聞けるようになってから来い。

マジレスするとマウスフック関係は暴走するとマウス操作一切不能になる恐れがある。
他人のスクリプト貰ってくるまま自力でどうにもできないようなスキルなら触んないほうがいい
885名無しさん@お腹いっぱい。:2008/07/28(月) 19:41:40 ID:SwIpb/9H0
>>884
#NoTrayIconでタスクトレイアイコンを非表示にしている兼ね合いから
どのスクリプトが暴走しても、終了できるようにキーボードから
ExitAppを実行できるように仕込んでいますので大丈夫かと思われます。
お分かりでしたら、どうか宜しくお願いします。
886名無しさん@お腹いっぱい。:2008/07/28(月) 22:12:12 ID:fN6KKKw/0
>>885
導入当初にしてはハードル高すぎるようだから、簡単なスクリプトから組んで行って、何が分からないのかはっきり分かる程度になったらまた来ればいいと思う。
Firefoxで右クリ+ホイールでタブ切替したいなら拡張で何とでもなるでしょ。FireGesturesとかAll-in-One Gesturesとか。無理に敷居の高い方法取らなくても。

かく言う俺もAHK使い始めたばっかりで、このスレを読んでも半分も理解出来てない。けど勉強してその内ちゃんと理解できるようになりたいと思ってる。
887名無しさん@お腹いっぱい。:2008/07/29(火) 02:01:43 ID:31bQr9Ol0
>>885
                | ̄``''- 、
                |      `゙''ー- 、  ________
                |    ,. -‐ ''´ ̄ ̄`ヽ、_        /
                |, - '´ ̄              `ヽ、     /
              /               `ヽ、ヽ   /
             _/                    ヽヽ/
           / / /   /  /  /            ヽハ
          く  / /!   |   〃 _/__ l|   | |   |  |  | | ||ヽ
           \l// / |  /|'´ ∧  ||   | |ー、||  |  | l | ヽ
            /ハ/ |  | ヽ/ ヽ | ヽ  | || /|ヽ/!  |/ | ヽ
            / |  ||ヽ { ,r===、   \| _!V |// //  .!   |
            | ||   |l |ヽ!'´ ̄`゙   ,  ==ミ、 /イ川  |─┘
            | ハ||  || | """ ┌---┐  `  / //  |
            V !ヽ ト! ヽ、    |     !    / //| /
               ヽ! \ハ` 、 ヽ、__ノ    ,.イ/ // | /
    ┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
    |(/(/(/(/(/(/(/(/(/(/│||      |\  〃
  r'´ ̄ヽ.              | | ト    /    \
  /  ̄`ア             | | |  ⌒/     入
  〉  ̄二) 分ってるが    | | |  /     // ヽ
 〈!   ,. -'                | | ヽ∠-----', '´    ',
  | \| |   .お前の態度が   | |<二Z二 ̄  /     ',
  |   | |               _r'---|  [ ``ヽ、      ',
  |   | |   気に入らない >-、__    [    ヽ      !
  \.| l.              ヽ、      [     ヽ    |
    ヽ|              \    r'     ヽ、    |
888名無しさん@お腹いっぱい。:2008/07/29(火) 02:06:08 ID:a9kkuqi60
AHK初心者かつスレチな感じで申し訳ないが・・・
そのテンキー付きマウス?って、テンキーとマウスでVID、PIDって別々?
もし別々ならMagicKeyPadでテンキー部分は、他のテンキー(メインキーボードのテンキー)とは別に認識させてキー
割り当てできるかも。
F13〜F24とか普段使いそうも無いキーを割り当てれば、後はそれをahkで受けて処理するなり、
直接ショートカットキーなんかを割り当てるなり・・・。

MagicKeyPadはググってみて。
889名無しさん@お腹いっぱい。:2008/07/29(火) 02:07:13 ID:a9kkuqi60
しまった。
>>888>>880へのレス。
890880:2008/07/29(火) 02:19:37 ID:47WfbJ9X0
>>881
なるほど切り替え式か。イイ感じで動きました。ありがとう。

>>882
たぶん、それをやると カーソル、HOME、ENDとかが重複します。

>>888
ヒントありがとう。落としてみたけど、手持ちのUSBテンキーが認識されなかった。
でも、こういう方法で攻めればよいということがわかったので、追試してみます。
891名無しさん@お腹いっぱい。:2008/07/29(火) 06:33:34 ID:jYhz3tiu0
特定のキーを押すと指定したahkファイルを実行する。
同じキーを押すとそのahkだけを終了させる。

ということをやりたいのですが、指定したスクリプトだけを終了させることはできますか?
892名無しさん@お腹いっぱい。:2008/07/29(火) 07:01:51 ID:mI4VZwfs0
キーが押されたらRunでスクリプトを実行して終了するまで待つ
実行されたスクリプト側で同じキー押されたら終了とか
893名無しさん@お腹いっぱい。:2008/07/29(火) 07:03:16 ID:mI4VZwfs0
ミスったRunじゃなくてRunWaitね
894名無しさん@お腹いっぱい。:2008/07/29(火) 08:43:07 ID:4a14wnej0
>>891
これでどうだろうか。

キー::
  t = その ahk のフルパス
  DetectHiddenWindows On
  IfWinExist, %t% - AutoHotkey
    WinClose
  else
    Run, %t%
  DetectHiddenWindows Off
return
895名無しさん@お腹いっぱい。:2008/07/29(火) 13:32:42 ID:jYhz3tiu0
>>892さんの方法でできました。

>>894さんの方法も試したのですが、
一瞬だけタスクトレイアイコンが表示されてすぐに終了してしまうようです。
896名無しさん@お腹いっぱい。:2008/07/29(火) 23:22:22 ID:wTFmj1oV0
漠然とした質問なんですが、

・たくさんの文字列が記入されたtextファイルがあって、
・それらすべての文字列をAHKで生成したGUIのドロップダウンボックスに表示しつつ、
・同じGUI上に設置されたテキスト入力欄にテキストを入力していくと、
・前述のドロップダウンの内容をインクリメンタル検索して候補を絞りながら表示する、

ってなことは可能なんでしょうか?おそらく無理かな〜と思うのですが。
分かりにくい説明ですみません。
897名無しさん@お腹いっぱい。:2008/07/29(火) 23:26:49 ID:KBppVHxk0
流行らせるページに似たようなのがある
898名無しさん@お腹いっぱい。:2008/07/29(火) 23:30:12 ID:wTFmj1oV0
即レスありがとうございます。
同じようなことが出来るという事ですね、すごい。
とりあえず今は全然実装方法が分からないので熟読してきます。
899名無しさん@お腹いっぱい。:2008/07/31(木) 02:40:49 ID:4Phgu3sR0
FirefoxとThunderbirdのahk_class名が一緒なのですが
#IfWinActiveでそれぞれを区別する良い方法はないでしょうか。
900名無しさん@お腹いっぱい。:2008/07/31(木) 09:50:06 ID:BOgiDASl0
MDI子フォームの識別方法てありませんか?
901名無しさん@お腹いっぱい。:2008/07/31(木) 10:15:06 ID:CK8fsRZY0
>>899
タイトル文字列で区別すればいい
SetTitleMatchModeも参照

>>900
ttp://d.hatena.ne.jp/eamat/20051121/p3
902名無しさん@お腹いっぱい。:2008/07/31(木) 10:56:43 ID:4Phgu3sR0
>>900
SetTitleMatchModeなんて命令があったんですね。
てっきりタイトル名は完全一致じゃないとダメだと思ってました。
ありがとうございました。
903名無しさん@お腹いっぱい。:2008/07/31(木) 10:57:25 ID:4Phgu3sR0
アンカー間違えたorz

>>901
ありがd
904名無しさん@お腹いっぱい。:2008/08/01(金) 23:53:58 ID:humHzYea0
以下のスクリプトだとやはりホイールスクロールで移動後にコンテキストメニューが
残り使いにくくて困ってます

#IfWinActive ahk_class MozillaUIWindowClass
~RButton & WheelDown::send,^{PgDn}
~RButton & WheelUp::send,^{PgUp}
#IfWinActive

>>869のテストスクリプトの件どうか上記のようなスクリプトで記載して頂けないでしょうか
お願いします。
905名無しさん@お腹いっぱい。:2008/08/02(土) 00:20:23 ID:J7tYaLm+0
大概にしろよコンチクショウ
ここまでやってみたけどダメでしたとかならともかく、試した形跡皆無だし
906名無しさん@お腹いっぱい。:2008/08/02(土) 00:21:47 ID:wAluoyMR0
これほどしつこい人なかなか居ないな。感心するわ。
907名無しさん@お腹いっぱい。:2008/08/02(土) 04:30:26 ID:y8kwyZ4l0
>>870
>>874
>>876
>>883
>>904
諦めてください。
どうか宜しくお願いします。
908名無しさん@お腹いっぱい。:2008/08/02(土) 10:50:17 ID:fKV1sO1e0
タイマで動かしてる分リスキーな挙動になるだろうから
シーケンスだけでコード出さなかったのは自力かつ自己責任でやってくれって意思表示だろ
869本人も軽く動かしてみただけで常用に耐えられるかまでは見てないだろうしな。

868にも書いたけど、大人しく Alt 送っとけよ。
それすらも意味わかんないってんならもう来るな。おまえにこのソフトは使いこなせないよ。
909名無しさん@お腹いっぱい。:2008/08/02(土) 11:18:11 ID:y8kwyZ4l0
>>904
マウスの設定でスクロールを1画面ずつにすれば?普通のスクロールはTTBaseのdragscrollを使うとか?
その程度でいいと思うよ。

>>869らへんにやり方書いてるんだから、ある程度はつくれるでしょ。
全くしないってのはただの無精。
ことあるごとにあれやって、これやってって言われそうだから誰も手伝わなくなったんだよ。
910名無しさん@お腹いっぱい。:2008/08/02(土) 12:35:34 ID:qOCV/WyI0
素直にFireGesturesとか使えばいいのに
911名無しさん@お腹いっぱい。:2008/08/02(土) 12:54:12 ID:wAluoyMR0
マウスジェスチャ2でやったら右クリックメニュー出ないからそっち使っとけ。もう来るな。
912名無しさん@お腹いっぱい。:2008/08/02(土) 20:11:59 ID:mC5zAzhQ0
みなさんひどすぎますよ!!
私がどれだけブラウザで不便を強いられているのか、
全く理解しようとしてないじゃないですか。
913名無しさん@お腹いっぱい。:2008/08/02(土) 20:36:24 ID:7BntQKh30
何がしたいのがよく解らんけど、
他のマウス系ソフト使った方が早いんじゃない?
914名無しさん@お腹いっぱい。:2008/08/02(土) 22:09:04 ID:liTEcMLE0
おれは画面両端でホイールまわすとPgUp,PgDnするようにしてるよ。
ちなみに画面下をホイールで音量調整、
画面上をホイールで文字の拡大縮小になってる。
915名無しさん@お腹いっぱい。:2008/08/02(土) 23:52:08 ID:hVFA6awd0
試してみるのも>>869の状態ですとスクリプトとして動かす事が出来ません。
何方か、スクリプトで記載して頂けないでしょうか宜しくお願い致します。

916名無しさん@お腹いっぱい。:2008/08/03(日) 02:22:58 ID:gYD83VJo0
動かないのでもいいから貼りゃいいじゃん
917名無しさん@お腹いっぱい。:2008/08/03(日) 04:06:38 ID:Q1Z3qArJ0
流れを無視して、以前出ていた慣性スクロールをやってみた。
ずっと使ってたホイール加速より気持ちよいかも。

Line=5 ;スクロールする行数
Time=50 ;感度
~WheelDown::
~WheelUp::
SetTimer,Scroll,%Time%
Count+=%Line%
StringTrimLeft,Key,A_ThisHotkey,1
Return

Scroll:
Loop,%Count%
{
If A_PriorHotkey<>%A_ThisHotkey%
Break
Send,{%Key%}
Sleep,%A_Index%
}
Count=-%Line%
SetTimer,Scroll,Off
Return
918名無しさん@お腹いっぱい。:2008/08/03(日) 14:14:01 ID:SvJuXXFl0
おまえらのツンデレっぷりに泣いた
そんなアフォはもう放置でいいと思うぞ
919名無しさん@お腹いっぱい。:2008/08/04(月) 03:14:59 ID:1vJ9OXqB0
というか、他のソフトをせっかく教えてもらってるのに
ずっとクレクレしてるってことは大して不便でもないってことだよな
920名無しさん@お腹いっぱい。:2008/08/05(火) 11:23:56 ID:AMEjozU40
途中から騙りが混じってるだろJK
921名無しさん@お腹いっぱい。:2008/08/05(火) 21:18:42 ID:hD9YSkD00
Firefox3の検索バーかアドレスバーってAHKで操作できます?
AHKのWindow Spy使って調べても出来そうにない感じなんですが
使いたいのはControlFocus、ControlSend、ControlSetTextです。
922名無しさん@お腹いっぱい。:2008/08/05(火) 22:18:00 ID:jSBXEUxy0
>>921
何をやりたいのかわからないから正解かどうかも分からないけど
キーボード操作でできるんじゃない?

自分の場合は、Sleipnir+StrokeIt(マウスジェスチャーソフト)で
ジェスチャーを使うと、
Ctrl+Eでフォーカスを検索バーに
Ctrl+Vで貼り付け
Enterで検索
ってコマンドを連続でやらせてる。
923名無しさん@お腹いっぱい。:2008/08/05(火) 23:07:04 ID:dCqC6whQ0
>>922
AHKで外部から検索しようと思いまして
ueでは複数サイトを一括で検索できないので自分的には従来どおり
検索バーにフォーカスを当て(ControlFocus)、検索語句を送って(ControlSetText)
最後にEnter(ControlSend)したいと思ってます。
最低でもControlSetTextが使えないとクリップボードを汚すやり方しかない
のでスマートじゃないなぁと思ったしだいです。
924名無しさん@お腹いっぱい。:2008/08/05(火) 23:08:56 ID:dCqC6whQ0
下はWEB上にあった物をFx用に改造したものでクリップボードを汚すやつ

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 MozillaUIWindowClass
Run, D:\Firefox\firefox.exe
WinWait, ahk_class MozillaUIWindowClass
WinActivate, ahk_class MozillaUIWindowClass
WinWaitActive, ahk_class MozillaUIWindowClass
Sleep, 334
Send, !^+K
Clipboard = 2p %sword%
Send, ^v
Send, {Enter}
Return
925名無しさん@お腹いっぱい。:2008/08/05(火) 23:23:07 ID:jSBXEUxy0
>>924
クリップボードを使いたくない、ってのが自分にはわからないけど
バックアップ取っとくのはダメなの?

bk=%ClipboardAll% ; クリップボードの内容をバックアップ
Clipboard=%bk% ; バックアップした内容を書き戻し

流行らせるページにあったやつだけど。
926名無しさん@お腹いっぱい。:2008/08/05(火) 23:31:47 ID:dCqC6whQ0
eClip使ってるからクリップボードの履歴が残っちゃうんですよね
だから、クリップボードを使いたくないんだけど
と思ったらeClipに無視設定があったので、それで何とか凌ごうと思います。
ありがとうございました。
927名無しさん@お腹いっぱい。:2008/08/06(水) 03:27:20 ID:eLu36YE/0
前にRButtonで騒いでたやつ、
これでできたよ。コンテクストメニューはでるが
マウスジェスチャーは無理かもね。もう騒ぐなよ。
RButton Up::Send,{RButton}
RButton & WheelUp::Send,{PgUp}
RButton & WheelDown::Send,{PgDn}
928名無しさん@お腹いっぱい。:2008/08/06(水) 03:52:20 ID:rpMCvmoJ0
>>927
>これでできたよ。コンテクストメニューはでるが

そもそもコンテクストメニューが出るのが嫌で、困っているのですが、
理解できませんか?
929名無しさん@お腹いっぱい。:2008/08/06(水) 04:37:00 ID:eLu36YE/0
とりあえず一度試してから突っ込んでね。
930名無しさん@お腹いっぱい。:2008/08/06(水) 06:26:25 ID:ndZwMICu0
UEをLOOPで回転させてURLをAHKで受け取って
FIELAPPENDで一時的に書き出してそれをREADすればいいのでは
931名無しさん@お腹いっぱい。:2008/08/07(木) 08:17:40 ID:V4Qd44dy0
>>925
その方法だとしょっちゅう以前のクリップボードの内容がはりつけられたり
おかしな動作になるんですが、対処法ってありますか?
932名無しさん@お腹いっぱい。:2008/08/07(木) 14:59:16 ID:ZonnTPEM0
最小のスクリプトぐらい張ってみたら?
933名無しさん@お腹いっぱい。:2008/08/07(木) 16:21:33 ID:JozaXXTl0
eClipとやらが干渉してるに 10クリップ
934名無しさん@お腹いっぱい。:2008/08/08(金) 01:04:55 ID:wPlZvKU+0
あんの〜?

以下のスクリプトを書いてコンパイルして .exeにしたら
ClamWinでウイルスチェックしたらTrojanって判定されるんですが・・・

#Persistent
;hoge は piyoフォルダのファイルの削除を検出しました。
Loop
{
IfWinExist, hoge, hoge は piyoフォルダのファイルの削除を検出しました。
{
WinClose, hoge, hoge は piyoフォルダのファイル削除を検出しました。
}
Sleep, 2000
}

hogeとpiyoは本来は違う名前ですがプライバシ保護の為置換えました。
なんででしょうね?単なる誤検出ですかね・・・・。
935名無しさん@お腹いっぱい。:2008/08/08(金) 01:58:45 ID:suaKgOME0
AHKに限らずexe化スクリプトが誤検出されるのはよくあること
936名無しさん@お腹いっぱい。:2008/08/08(金) 09:29:21 ID:wXOhi8SF0
::test::
Clipboardbackup=%Clipboard%
Clipboard=これを貼り付けたい
Send,^v
Clipboard=%Clipboardbackup%

とすると、しょっちゅう以前のクリップボードの内容が貼り付けられてしまいます。
eClipを終了して試してみてもダメでした。
937名無しさん@お腹いっぱい。:2008/08/08(金) 09:39:38 ID:adi6JvtK0
938名無しさん@お腹いっぱい。:2008/08/09(土) 13:53:14 ID:wHiOe1Ek0
clipwait入れてもだめでした。
処理速度が速いPCでやったらeclip入れてようが
clipwaitいれなかろうが何も問題が起こらなかったので、
単純にCPU速度の問題みたい(と勝手に予想)
939名無しさん@お腹いっぱい。:2008/08/09(土) 19:19:06 ID:hGDkNjjk0
clipwaitは変化を待つんじゃなくて
テキストとして読み取り可能かどうかだからな

内容の変化を確実に待ちたいなら
OnClipboardChangeとか絡めるといいかもな
940名無しさん@お腹いっぱい。:2008/08/09(土) 19:37:57 ID:aZN+RJKU0
普通にSleep入れるだけじゃダメなの?
941名無しさん@お腹いっぱい。:2008/08/09(土) 23:36:08 ID:wHiOe1Ek0
OnClipboardChangeと絡めるっていいかも。今度やってみます。
Sleep入れると正確に動作させるには何秒も待つことになっちゃうんです。
942名無しさん@お腹いっぱい。:2008/08/09(土) 23:49:17 ID:cN2hF/gD0
何秒も待つなんて、あり得ないだろ。486でも使ってるのか?
943名無しさん@お腹いっぱい。:2008/08/12(火) 17:46:10 ID:dyXct6Wq0
IfWinActiveのクラス名の指定を複数行うことは出来ないでしょうか?
自分なりに調べたつもりですがわかりませんでした。ご教授願います。

【現状】
#IfWinActive, ahk_class ClassName01
#自分好みのショートカットキー指定を羅列 (内容は下と同じ)
#IfWinActive

#IfWinActive, ahk_class ClassName02
#自分好みのショートカットキー指定を羅列 (内容は上と同じ)
#IfWinActive

【こういう風にやりたい】
#IfWinActive, ahk_class ClassName01, ClassName02 (←この指定の仕方では動かなかったですけど・・・)
#自分好みのショートカットキー指定を羅列 (重複した指定は1回で済ませたい)
#IfWinActive
944名無しさん@お腹いっぱい。:2008/08/12(火) 19:08:55 ID:9eGNZCAu0
group
945名無しさん@お腹いっぱい。:2008/08/12(火) 21:54:48 ID:dyXct6Wq0
>>945
レスありがとうございます。流行らせるページを読んで以下のような使い方かと思ったのですが
希望通りには動作しませんでした。使い方間違ってますでしょうか?

GroupAdd, testKey, ahk_class Notepad
GroupAdd, testKey, ahk_class EmEditorMainFrame3

#IfWinActive, ahk_group testKey
!l::Send,{Right} ; 矢印キーの→ Alt+L
#IfWinActive
946名無しさん@お腹いっぱい。:2008/08/13(水) 02:24:05 ID:lprpRZnq0
- メモ帳とEmEditorで [Alt] + [L] 押下で [→] キーを送信

って言うのならスクリプト通りだし、きちんと動くが
947名無しさん@お腹いっぱい。:2008/08/13(水) 02:33:18 ID:hkc6SypU0
>>945
groupとはまた別だけど、>>580,>>708-709とかその辺りは読んで試した?
内容そのままな気がするが。
948945:2008/08/13(水) 14:22:02 ID:6gtl16Ac0
>>946 >>947 レスが遅くなりすみません
アドバイスしていただいた内容を元に色々試行錯誤した結果、>>709で出ている「スクリプトを書く場所」を
AutoHotkey.iniの先頭に持ってきたところ、Group形式もSetTitleMatchMode形式も正常動作いたしました。
最初下の方に書いており、この位置ではどちらの形式でもうまく動作しませんでした。
未だに何が原因かはわかりませんが、ご助言いただいたことで目的の動作にすることが出来ました。ありがとうございました。
949名無しさん@お腹いっぱい。:2008/08/13(水) 15:54:27 ID:1mP2wZRu0
おいおいwwww
950名無しさん@お腹いっぱい。:2008/08/13(水) 16:07:53 ID:0oRKt/fM0
ヘルプを読めば分かるんだけど、
この自動実行の問題は直感的じゃないから
誰もが通る道だよねw
951名無しさん@お腹いっぱい。:2008/08/13(水) 16:33:42 ID:ot6lO2770
AutoExecute Sectionはラベルとか決め事ないからな
ファイル先頭に書くだけなんだが人に教える時は理解させづらいね
952名無しさん@お腹いっぱい。:2008/08/13(水) 16:38:34 ID:lprpRZnq0
まぁ、ウィンドウ指定でのホットキーはスクリプトロード時に決まるわけで、
autoexec section に記載しないと動かんわな。

何らかのサブルーチン内でウィンドウ探すときに
SetTitleMatchMode を変更して探索するのとは違うしな。

まぁ、言語仕様がアレなんで。
953名無しさん@お腹いっぱい。: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.」とかもあった。
あんま時間取れないって書いてるから、期待しすぎは良くなさそうだけど。
954名無しさん@お腹いっぱい。:2008/08/14(木) 08:35:06 ID:2yMmcCqm0
> ToDo見たら「Full unicode build.」とかもあった。
ktkr
955名無しさん@お腹いっぱい。:2008/08/14(木) 09:25:34 ID:jGlRY/Go0
ということは、文字化けと無縁になるのか!?
956名無しさん@お腹いっぱい。:2008/08/14(木) 09:30:17 ID:oPGTwpWy0
>>953
>個人的には #if expression と while の実装が大当たり。

こう書かれても、素人の俺には理解できないので、
なんでもいいので使い方サンプルみたいなの晒してもらえませんか?
957名無しさん@お腹いっぱい。:2008/08/14(木) 10:35:03 ID:igRf18B/0
>>956
ぱっと思いついた範囲で。
Whileは基本的にLoopと似たような動作をするんだけど、
Loopの場合、抜けるまでの回数を数値か変数でしか指定できない。
省略すると無限ループになるけど、抜けるための条件をIfで書かないといけない。
例えばテンキーの0を押している間、aとbを交互に連続して入力するのを
LoopとWhileの場合で書いてみる。

Loopの場合
Loop
{
  If GetKeyState("Numpad0")
  {
    If Mod(A_Index,2) = 1
    {
      Send, a
    }
    else
    {
      Send, b
    }
    Sleep, 10
  }
}
958名無しさん@お腹いっぱい。:2008/08/14(木) 10:35:32 ID:igRf18B/0
つづき
Whileの場合
While GetKeyState("Numpad0")
{
  If Mod(A_Index,2) = 1
  {
    Send, a
  }
  else
  {
    Send, b
  }
  Sleep, 10
}

Whileの場合のほうが、"テンキーの0が押されている間ループする"
って理解しやすいよね。
959名無しさん@お腹いっぱい。:2008/08/14(木) 10:42:28 ID:igRf18B/0
さらにつづき
書き忘れちゃったけど、Whileは抜けるための条件を式を使って書ける、
ってのがLoopと違うとこ。

で次は#if expressionね。これも式を指定できるんだけど、
ホットキーの動作をウィンドウごとに切り替えるための#IfWinActive〜と
同じようなもの。これも式を指定できるようになってる。

例としてフルスクリーン時にホットキーを動作させない設定を。
これは実際に俺も使ってる。

#if !CheckActiveWindowFullScreen()
a::b 等のホットキー定義、複数記述可能
#if

今まで1つ1つのホットキー定義にIf入れてたから、スクリプトがスッキリしたよ。
長くなってすまん。
960名無しさん@お腹いっぱい。:2008/08/14(木) 10:50:39 ID:igRf18B/0
あーもう、急いで書き込むと色々破綻してるな。

>>957
自己レスだけどこれじゃループ抜けないじゃん…
以下修正
Loop
{
  If GetKeyState("Numpad0")
  {
    〜中略〜
  }
  else
  {
    Break
  }
}
まぁこんな感じにできるってことで、適当に脳内補完してくれ。
961名無しさん@お腹いっぱい。:2008/08/14(木) 11:08:54 ID:oPGTwpWy0
なるほど、丁寧な解説ありがとう。
コードがスッキリするとデバッグもしやすくなるし、やる気も出るよね。

そんな俺のコードはifとloopとbreakばっかりだわ
962名無しさん@お腹いっぱい。:2008/08/14(木) 11:19:10 ID:Nf29kKhA0
unicode版は常駐量が増えるとかでマルチバイト圏外の人には疎まれそうだが
whileはぜひとも本家の方にもマージしてほしい機能だな
963名無しさん@お腹いっぱい。:2008/08/14(木) 19:11:22 ID:IHqwnWkQ0
キーボードでIEやJaneをほんの少しスクロールさせたいのですがAHKでできるでしょうか?
少しというのはスクロールバーをドラッグしてちょこっと動かす程度です。
964名無しさん@お腹いっぱい。:2008/08/14(木) 19:47:36 ID:m69VUO8d0
カーソルキーのDownをエミュレートすればいい
965名無しさん@お腹いっぱい。:2008/08/14(木) 19:52:44 ID:IHqwnWkQ0
>>964
カーソルキーのDownだとスクロール量が多すぎるんです。
スクロールバーをドラッグして数ドット動かすくらいと言うか。
最小単位でスクロールさせたいんです。
966名無しさん@お腹いっぱい。:2008/08/14(木) 20:45:02 ID:orFA7PcM0
SendMessage
WM_VSCROLL
967名無しさん@お腹いっぱい。:2008/08/14(木) 21:30:34 ID:IHqwnWkQ0
>>966
ググったんですが、DownやPageDownと同じではないでしょうか?
968名無しさん@お腹いっぱい。:2008/08/15(金) 01:29:58 ID:3MR6kBXG0
説明がめんどくせー

はやらせるページのホイール関係のところの互換スクロールあたりを読むと良い。
969名無しさん@お腹いっぱい。:2008/08/15(金) 01:49:59 ID:QuXAVy5j0
ThinkPadのTrackPointの真ん中ボタンによるスクロールは対応できませんか?
どうもフックで検出するツールだと拾えないみたいです。
TrackPointのドライバは仕様が変わっていて、
Foreground Windowにスクロールバーが存在すると
その窓にWM_V/HSCROLLメッセージが行く様です。
970名無しさん@お腹いっぱい。:2008/08/15(金) 02:00:56 ID:QuXAVy5j0
そして、真ん中ボタンを押したまま、乳首の傾きの強弱をつけると
WM_VSCROLL
SB_LINEUP 軽く↑
SB_LINEDOWN 軽く↓
SB_PAGEUP 強く↑
SB_PAGEDOWN 強く↓

WM_HSCROLL
SB_LINEUP 軽く←
SB_LINEDOWN 軽く→
SB_PAGEUP 強く←
SB_PAGEDOWN (強く→

のイベントが発生します。(デフォルトの動作らしいです)
971名無しさん@お腹いっぱい。:2008/08/15(金) 03:13:42 ID:G9mnnse30
>>968
すみません。
どこに互換スクロールのついて書かれているページがあるんでしょうか?
流行らせるページで探したんですが見つかりませんでした。
972名無しさん@お腹いっぱい。:2008/08/15(金) 09:02:13 ID:fZAloXw10
Down → カーソルの移動(カーソルが最終行付近にいないとスクロールしない)
PageDown → 1ページだか半ページだかの単位でスクロール
WM_MOUSEWHELL、WM_VSCROLL → 2、3行ごとにスクロール

これより細かくスクロールさせる方法はシラネ

>>969
自分も前に試してみたけどよくわからなかった。
OnMessage()では外部のメッセージまでは拾えないみたいだし
DllCall()とかでゴニョゴニョすれば何とかなるのかも知れない。

流行らせるページ管理人氏が ThumbRemapでマウスドライバ弄ってるね
ドライバのライブラリさえあればAHKでもかなりの改造ができるみたいだな。
973名無しさん@お腹いっぱい。:2008/08/16(土) 02:58:00 ID:eFgfhHqr0
Aを押したらアクティブウィンドウを最小化、
Shift+Aを押したら直前に最小化したウィンドウを元の大きさに戻す。
というのはどうしたらいいでしょうか?

普通のウィンドウならできるんですが、
最小化時にタスクトレイに入るソフトだと分かりません。
974名無しさん@お腹いっぱい。:2008/08/16(土) 11:26:21 ID:sGqytH9G0
最小化する前にウィンドウサイズを記憶しておいて
Restoreで戻らないならその数値からWinMoveする
975名無しさん@お腹いっぱい。:2008/08/16(土) 11:57:54 ID:qqrRioFD0
このツールって何するものなの?
説明読んでもよくわからにゃいよ
976名無しさん@お腹いっぱい。:2008/08/16(土) 12:05:51 ID:t9u3PjNO0
>>975
ゆとりを排除するもの
977名無しさん@お腹いっぱい。:2008/08/16(土) 15:03:37 ID:xq2q+cNQ0
>>975
そうだなぁ、ツールとして考えるよりもパーツとか材料の寄せ集めとして考えると分かりやすいかもしれないな
何をする為の道具かではなく、用意された部品や材料を使って何を作りたいかってことだな
978名無しさん@お腹いっぱい。:2008/08/16(土) 23:11:34 ID:dkvzdNlQ0
このソフトおもしろい
プログラミング全然知らなくてもリファレンス通りやれば様になるね
Guiで摂氏と華氏を変換するプログラム作ってみた
うまくできた
自信がついた
979名無しさん@お腹いっぱい。:2008/08/17(日) 13:29:34 ID:3dYC4BCw0
まだThumbRemapの不具合は直ってない?
タッチパッドから指を離してても
ずっとタッチパッド押されたままと認識する状態が時々ある。
980名無しさん@お腹いっぱい。:2008/08/17(日) 14:56:49 ID:Nb9UUn4s0
スクリプトにほころびがなくても
他に重い処理を裏でやってたりすると
押しっぱなしになるとかはよくあるよ
981名無しさん@お腹いっぱい。:2008/08/18(月) 20:11:27 ID:F50J/3C90
Ctrlと数値でブラウザー等を指定の場所並び大きさで
移動させているのですが、此れを各ソフトのパスで
起動時に適応したいのですが、可能なようでしたら
記載方法を教えて頂け無いでしょうか宜しくお願いします。

#NoTrayIcon
^1::WinMove, A, , 40, 100, 1200, 900
^2::WinMove, A, , 0, 90, 1280, 934
^3::WinMove, A, , 0, 58, 1280, 966
^4::ExitApp
#Include Opera MouseGesture.ahk
982名無しさん@お腹いっぱい。:2008/08/18(月) 20:46:57 ID:fl/NDlbO0
日本語、日本語
983名無しさん@お腹いっぱい。:2008/08/18(月) 21:08:58 ID:VaVhnvhl0
今はソフトを起動してから各キーでウィンドウサイズなどを変えているが、これを
ソフトの置いてあるフォルダで判別して、ソフト起動時に自動的にウィンドウサイズを変えたい
ってことじゃない?
984名無しさん@お腹いっぱい。:2008/08/18(月) 21:45:42 ID:F50J/3C90
>>982
説明が下手で申し訳御座いません。
>>983
全くその通りです。現状の設定も残しつつ追加記載したいのですが
どうぞ宜しくお願いします。
985名無しさん@お腹いっぱい。:2008/08/18(月) 22:02:46 ID:VaVhnvhl0
^1::
Run,"***.exe" ;ソフト起動する
Sleep,500 ;ちょっと待つ
WinMove, A, , 40, 100, 1200, 900 ;サイズ等変える

キーでソフト起動しつつサイズ変える、って方法でいいなら
簡単にだけどこんな感じ?
これでダメなら待ち方変えたりWinMoveでソフト指定したり。

ソフトは別の方法で起動して、
ソフトが起動されるのを監視してサイズ変える、
となると全然違う感じになるかな。
そういうのはわからないや。
986名無しさん@お腹いっぱい。:2008/08/18(月) 22:05:43 ID:2iXNPZt50
>>984
起動を監視して調整するより、次のようにしてみたらどうかな?
起動時に何かしたいときはいつもこんな感じでやってるよ。

1 スクリプト書いたAHKファイルを作る
2 そのアプリのフォルダにブAHKファイルを入れとく
3 AHKのショートカットをデスクトップにでも置く


Run,Jane2ch.exe
WinWaitActive,Jane Doe Style
WinMove, A, , 0, 58, 1280, 966
Return
987名無しさん@お腹いっぱい。:2008/08/18(月) 22:07:48 ID:2iXNPZt50
あら。。書いてたらかぶっちゃった。失礼いたしました。
988名無しさん@お腹いっぱい。:2008/08/18(月) 22:40:12 ID:F50J/3C90
Runで起動後にSleepで無く起動完了を検地は出来ないのでしょうか
通常は問題無くても不安定なソフト、(Firefox 3)等が問題に
なりそうです。やはり>>986氏の方法が安全かもです。
989名無しさん@お腹いっぱい。:2008/08/18(月) 22:46:08 ID:9gnDk5aUP
検地したいなら秀吉に頼んでみたら?
990名無しさん@お腹いっぱい。:2008/08/18(月) 23:31:29 ID:LMuNVlnU0
>>988
WinWait又はWinWaitActive
991名無しさん@お腹いっぱい。:2008/08/19(火) 16:20:09 ID:MeIIkzyf0
さすがに990で建ってないとマズいかなと

AutoHotkey スレッド part6
ttp://pc11.2ch.net/test/read.cgi/software/1219130051/
992名無しさん@お腹いっぱい。:2008/08/20(水) 18:20:41 ID:RG8plfSe0
埋めた方が良くね?
993名無しさん@お腹いっぱい。:2008/08/20(水) 18:55:08 ID:gf8grxIK0
産め
994名無しさん@お腹いっぱい。:2008/08/20(水) 18:56:16 ID:Q0G+ZGu10
そうだな、埋め
995名無しさん@お腹いっぱい。:2008/08/20(水) 19:29:20 ID:+Ox3RcU20
埋め
996名無しさん@お腹いっぱい。:2008/08/20(水) 20:17:29 ID:iu65xIpb0
997名無しさん@お腹いっぱい。:2008/08/21(木) 09:57:21 ID:rpicDJpv0
埋め
998名無しさん@お腹いっぱい。:2008/08/21(木) 10:00:19 ID:rpicDJpv0
埋め
999名無しさん@お腹いっぱい。:2008/08/21(木) 10:02:47 ID:rpicDJpv0
埋め
1000名無しさん@お腹いっぱい。:2008/08/21(木) 10:08:39 ID:rpicDJpv0
埋め
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。