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


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

AutoHotkey スレッド part8



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

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

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

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

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

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


116 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 09:19:45 ID:dyra48CT0]
マウスの下のWindowTitleを取得する方法を教えてください。

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 11:24:00 ID:39eHpjNw0]
>>116
lukewarm.s101.xrea.com/commands/WinGetTitle.html

#Persistent
#SingleInstance, force
SetTimer, MouseShitaWindowTitle, 50
Return

MouseShitaWindowTitle:
MouseGetPos, , , HWND
WinGetTitle, Title, ahk_id %HWND%
Tooltip, %Title%
Return


118 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 15:38:47 ID:dyra48CT0]
>>117
助かりました。ありがとうございました。

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:13:54 ID:6AUpOLN+0]
>>115
処理完了までの時間がどのくらいなのか取得したいんで
Loop,200だか300なんて固定じゃしょうがない

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:31:03 ID:39eHpjNw0]
>>119
固定も何も>>115のサンプルを応用すればいいよってことじゃないのかい。


121 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:48:28 ID:SXDlYEUH0]
>>119
すまなない
何が分からないか分からない
完了時間の予測なら、全体量と1回の処理時間から自分で毎回計算するしかないと思う

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 17:06:34 ID:6AUpOLN+0]
なるほど
そういうことならしょうがないですね
ありがとう

123 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 17:40:27 ID:TWv1vctD0]
具体的な秒数を事前に出すのはAHKに限らずむづかしいと思うけど。
ダミー進捗が嫌なら、メクラループやめて具体的気に処理が終わるたびに更新すればいいだけっしょ

やらなきゃいけない処理の数(分母)と、そのうち何個目が終わった(分子)か、で
進捗グラフ更新してくのがProgressなんだから

124 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 19:36:13 ID:nKWMwvxe0]
>>99
Firefox3.0.10上だと文字入力中をうまく検出できないんだけどどうしてだろう
0が返ってくる



125 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 21:14:42 ID:6pR9OPq00]
>>99-101
窓使いの憂鬱でIMEのON/OFFでキー割り当て変えられることに気づいた・・・
もしかしたらAPI一発で取得できたりして・・・
窓使いのソース見たらよいかも

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:05:15 ID:TWv1vctD0]
ん? >99がすごいって言われてんのは「IME ONかつ変換中か」を見てるからっしょ

ON/OFF状態や変換モードだけなら SendMessageのWM_IME_CONTROLでとれるよ
lukewarm.s101.xrea.com/up/file/089.zip

127 名前:99 mailto:sage [2009/06/04(木) 22:10:50 ID:duXuCFzc0]
IMEが描画する窓の存在を見てるんで、インライン描画するタイプだと検出出来ないのはしょうがない...
IE, FireFox, Office系とか、、ダメじゃんorz
でも、API一発で取れないのは数々の先人達が試みて失敗してる(スレ1で既出)

>>125
ちょっと見てみた・・・
ttp://mayu.cvs.sourceforge.net/viewvc/mayu/mayu/hook.cpp?revision=1.34&view=markup の428行目あたりから
グローバルフックでメッセージとらえているようだ。
IL (IME_Lock、 On/Off)はAPIで取得しているみたい(実質的には IME.ahkと同じ)
IC(入力中かどうか)は WM_IME_(START|END)COMPOSITION を見て内部でフラグ管理しているみたい

低水準マウス/キーボードはフックできるけど、これだとDLLが必要だぬ。俺には無理ぽ。

128 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:51:48 ID:hfmiG/aI0]
メールの内容を読み込んで、そこにあるフレーズで次の処理をするっていうのを作りたいのですが
何かいい方法ないでしょうか?どうにかしてメールをtxtファイルにしてFileReadで変数に読み込む
ぐらいしか思いつかないんですが

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:56:27 ID:gv6ECyM30]
ごりむちゅうで何がなにやら。
次の処理が何かわからんのに、答えるのは難しい。

130 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 23:23:25 ID:hfmiG/aI0]
>>129
情報不足過ぎですみません
家で常時動いているPCにメール送って、PCを遠隔操作したいんです。
具体的には本文にAいう単語があったら、そのあとの文をファイルとして保存するとか
Bという単語があったらaというソフトを起動するとかです。

131 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 00:13:11 ID:e7k/ar4E0]
>>126
IME.ahkでは Office 系の IME の On / OFF を
正しく取得出来なかったと思う
改善された?

132 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 01:31:04 ID:T3bmGBtQ0]
ウチでは IME.ahkで Office 系「で」 IME の On / OFF を正しく取得出来る

133 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 02:44:19 ID:fBYNAlWU0]
>>130
常時起動ならリモートデスクトップでいいんでないの?
それとも携帯からかな?
メールでやるなら、面倒くさそうだね。

134 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 10:57:01 ID:TiIrn5XK0]
>>128
>どうにかしてメールをtxtファイルに
あるかどうかわからないけど、ログをテキストで保存してるメーラーを使えばいいんじゃないか。
今見てるメールに対して処理をしたいだけなら、スマートではにけどCtrl+A & Ctrl+Cで本文を内容読めばいい



135 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 12:30:07 ID:TL25cwxb0]
POPなりIMAPのプロトコルが分かるなら英語のフォーラムにあるWinSockのライブラリ使えば
メールをファイルに落とさなくても直接接続して処理できるけど、エラーハンドリングなどかなり面倒。

次点は、コマンドラインレベルのクライアントを探して連携するとか。
POPならこういうやつとか>ttp://www.codeode.com/popclient/index.html

普通のWindowsのMUAでも、大抵は開けば普通にtextで読めるからそれでもいいかも。
メール毎に個別にファイルに保存するやつの方が楽だとは思うけど。

136 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 12:38:48 ID:gplHJn2c0]
スレどころか板違いだが、sshで入れるようにすると楽なんじゃないかな。
携帯用のクライアントアプリもあるみたいだし ttp://mutil.jp/。
鯖にするのはリ便利さと管理コストのトレードオフだけど。

ahkでやるならメーラによると思うけど、メールデータをテキストそのままで
保存してるメーラも結構あるんでファイル監視でいくのもアリ。

現段階でメールのヘッダと本文の解析の仕方を知らないなら、敢えてメールチェッカ入れて
新着通知の窓が出るのを監視してその本文を取得ってのもありかも。

あとはBASP21あたりで自前でPOP3鯖見に行くとか。。。

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 13:58:03 ID:SxfMtifS0]
出先からメールで自宅のPCを操作できるソフトて結構あるような気がするんだが

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 19:52:28 ID:BSIYPVRTO]
TaskTrayIcon.ahkを眺めてたんだが、
クリックされたトレイアイコンの番号は取得できないのかな?

139 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 19:56:05 ID:esdfKZUa0]
出先から指定ラベル実行できたらちょっと面白いな

140 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 20:40:42 ID:O6B2s5Qx0]
>>133,134,135,136,137
レス遅れてすみません。携帯は焼かれているもので
いろいろな手段を教えてくださってありがとうございます。
じっくりググって作りたい物を作ってみます。また行き詰ったら質問に来るかもしれません
そのときはよろしくお願いします

141 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 23:04:28 ID:NwioFG9O0]
z::yのようにリマップし、alt+zとやると、
余計なCtrlが入力されます。なぜでしょうか。

Key history
74 03F u 0.08 F5
A4 038 d 2.25 Alt
5A 02C h d 0.05 Z
59 015 i d 0.00 Y
A4 038 u 0.16 Alt
A2 01D i d 0.00 Ctrl
A2 01D i u 0.00 Ctrl
5A 02C h u 0.03 Z
59 015 i u 0.00 Y
74 03F d 0.53 F5


142 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 19:35:48 ID:RpRz7vLw0]
Guiでボタンを押すとListBoxが更新されるようにしたいのですが、
Gui, Add, ListBox, vList,
Gui, Add, Button, gTest1, Button1
Gui, Add, Button, gTest2, Button2
Gui, Show,
Return

Test1:
GuiControl,, List, test||..
Return
Test2:
GuiControl,, List, hoge|..||
Return
これだとリストの末尾に追加される形になってしまいます。
リストを入れ替えるようにするにはどうしたら良いでしょうか。

143 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 19:44:21 ID:nz9UkNk/0]
先頭にデリミタ。
GuiControlの頁を要再読。

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 20:09:54 ID:RpRz7vLw0]
>>143
即レスありがとうございます。
見落としてました...orz



145 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 03:46:36 ID:6gUtZr/R0]
しつもーん。
指定アプリ上でzを押した時、aの動作→bの動作→cの動作→aの動作→bのry
と言った事をやりたいんですが、どう記述したらいいですか。。。

#IfWinActiveを使うって事と、個別の動作(sendでいくつかキーを送るだけ)は分かってできたんだけど、
それを同じキーで繰り返したいです。

ご教授願います。。。

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 04:20:29 ID:64k7gMDb0]
>>145
質問がいまいちわかりにくいけど、こういうこと?

#IfWinActive 指定アプリ
z::
Loop,n ;nは繰り返したい回数
{
aの動作
bの動作
cの動作
}
Return
#IfWinActive

147 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 09:24:01 ID:tkyz3VGy0]
同じキーで
1回目押したら aの動作
2回目押したら bの動作
3回目押したら cの動作

って意味じゃなかろうか

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 09:37:04 ID:ZORhP0Gy0]
z::
count++
if(count=1){
tooltip, aの動作
}else if(count=2){
tooltip, bの動作
}else if(count=3){
tooltip, cの動作
count=0
}
keywait, z
Return


149 名前:145 mailto:sage [2009/06/07(日) 16:40:24 ID:6gUtZr/R0]
>>146
質問がわかりにくくてすいませんしたっ_| ̄|○

>>147
そうです。その意味です。。。

>>148
希望通りの動きが出来ましたっ!
ありがとうありがとう(つД`)

リファレンス読んで処理内容を解読できるようにがんばってみます(´・ω・)、

150 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 01:08:14 ID:mPjxZMt70]
AutoHotkey.ahkの書き換え、再起読み込み
を自動化した。
Aキーを押したらA用途のAutoHotkey.ahkを
Bキーを押したらB用途のAutoHotkey.ahkを
読み込んでそれ用の設定になるので、便利。
perl使って書き換えしてるだけだが。

151 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 02:18:59 ID:VN+15O/CP]
何故ahkでやらない

152 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 10:20:12 ID:aCqJ4TQP0]
流行らせるページの中の人、ネトラン関係者になってたのか

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 10:20:50 ID:Gscpj3Zd0]
書き換えって、毎回 マイドキュにある AutoHotkey.ahkを削除だのリネームだのしてるのか?
スクリプトは別に「AutoHotkey.ahk」の名前じゃなきゃ動かないわけじゃないし
多重起動もできるんだが。

154 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 15:15:28 ID:mPjxZMt70]
>>153
AutoHotkey.ahkの指定箇所A〜B部分をキー一発で交換します。
マウスのM、X1,X2ボタンやテンキー機能は衝突するしな。
複数キーバインドで使い分けってめんどいし。なんかのキー押しながらマウスのX1ボタン押すっても・・



155 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 16:48:40 ID:VN+15O/CP]
何によって用途が違うのか知らないけど、
ホットキーラベル内に条件分岐作ればいいだけの話じゃ

156 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 16:53:37 ID:mkWh48Pk0]
----- ScriptA.ahk ------
#include common.ahk
; 以下A用キー定義

----- ScriptB.ahk ------
#include common.ahk
; 以下B用キー定義

----- common.ahk ------
A::Switch("ScriptA.ahk")
B::Switch("ScriptB.ahk")
Switch(script){
Run,"%A_AhkPath%" "%A_ScriptDir%\%script%"
ExitApp
}
; 以下共通用キー定義

157 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 17:01:01 ID:NOGmzyJY0]
AutoHotkey_L 使えば楽

158 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 18:08:44 ID:WA7XkMG90]
ahkで起動するのとexeに変換して起動するのではどっちが高速ですか?

159 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 18:26:19 ID:mkWh48Pk0]
exeの場合は、起動時に解凍する処理が入る
その後はどっちも同じ

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 19:42:44 ID:GcGcBK5q0]
すいません教えてください。
Loop, Read, exclude.txt ; 削除したい行を改行区切りで列挙したファイル
{
 match := A_LoopReadLine
 Loop, Read, %1%, *temp.txt
 {
  if (A_LoopReadLine != match)
   FileAppend, %A_LoopReadLine%`n
 }
 FileMove, temp.txt, %1%, 1
}
こんな感じでマッチした行を削除したいのですが、元の場所に改行が残ってしまいます。
削除した行だけ改行を詰めるにはどうやったら良いでしょうか。
FileReadして Loop, Parse, var, `n, `r, でも同じでした。

161 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 19:50:53 ID:WA7XkMG90]
>>159
なるほど
ありがとうございました

162 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 20:48:11 ID:NOGmzyJY0]
>>160
ループの入れ子が想定と逆だったから分かりづらかった。
それと、ファイルI/O多すぎじゃない?
どっちのファイルも巨大(100M〜)ならしょうがないけど、
どっちかをメモリに積んだ方がいいと思う。

俺ならこうする。
FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines%`n
Loop, READ, src.txt, output.txt
 If InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  FileAppend, %A_LoopReadLine%`n

163 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 21:55:55 ID:GcGcBK5q0]
>>162
ありがとうございます。
うーm、しかし他の場所の改行も削除されてしまうYO

FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines% ;改行残る
Loop, READ, src.txt
{
 if InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  var = %var%`n%A_LoopReadLine%
 else
  count = %A_Index%`,%count%
}
StringTrimLeft, var, var, 1
StringTrimRight, count, count, 1
Loop, Parse, var, `n, `r
{
 if A_Index not in %count%
  FileAppend, %A_LoopField%`n, output.txt
}
;FileMove, output.txt, src.txt, 1
return
こんなんしか思いつきません><;

164 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:41:24 ID:wStbLZev0]
Hayateというフリーソフトでキーのリピート速度やリピート開始時間を変えても
AutoHotKeyのホットキーラベルを介すとデフォルトのリピート速度になってしまいます
 ex) Down:: Send, {Down}
Hayate側のキーリピート速度でホットキーラベルを実行する方法はないでしょうか
ちなみにHayateというフリーソフトは検索してもなかなか出てこないですがfrozenlib.net/app.htmlにあるものです



165 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:50:30 ID:Ezplb6lV0]
SetKeyDelay
SendやControlSendコマンドでの1キーごとに挿入される間隔を変更

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:56:50 ID:wStbLZev0]
SetKeyDelayを小さく設定することは試したのですがキーリピートが開始されるまでの時間が変化無しです

167 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:12:29 ID:Ywd4Dynt0]
SendPlay

168 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:31:21 ID:wStbLZev0]
試しに以下のように設定してみましたが改善されませんでした
SetKeyDelay,-1,-1
SendPlay, {Down}

SendPlay以外も一応試しましたがうまくいきませんでした
あきらめるしかないですかね

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:35:48 ID:N+aijEuz0]
その何とかってのは知らないけど、仕組み的に両立は無理なんじゃないのかね

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:57:24 ID:wStbLZev0]
そうですか。残念
ありがとうございました

171 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 21:58:14 ID:kA+0+7DI0]
>>162
ごめんなさい163です。すんごい初歩的な所で勘違いしてました。
>>162のでバッチリです。本当にごめんなさい

172 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 22:18:00 ID:o631qgYJ0]
>>160
perl使えばいいよ。2GBのテキストでもperlなら処理できる。

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 20:49:55 ID:i0OR+VsR0]
キーの取りこぼしが生じるときには
どのパラメーター設定をいじればいいのでしょうか
現在この5つを設定しています

SetWinDelay, 0
SetControlDelay, 0
SetKeyDelay, 0
SetBatchLines, -1
SendMode Input


174 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 21:42:19 ID:tNiIalHL0]
キー入力イベントの取りこぼしだとしたらどうしようもない(原理的には無いはず)
GetKeyState などでの状態取得で取りこぼしがあるのだとしたらスクリプトが悪い

もしくは AutoHotkey_L の #If でものすごく重い関数呼んでいるとか



175 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 22:03:41 ID:i0OR+VsR0]
>>174
ふむふむ
スクリプトを見直します

176 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 22:11:54 ID:OK2G++4p0]
ホットキーラベルを実行した後そのホットキーの修飾キーが押され続ける現象がよくあります
根本的に起こらなくすることは出来ないのでしょうか
もしくは発生しやすいホットキーの設定の仕方とかあったりするのでしょうか

過去ログにあった押され続けていることをツールチップで知らせる対策は一応やってます

177 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 13:54:37 ID:RYxlht2m0]
ホットキーの修飾キーが押されっぱなしになる現象は
ウチの環境では発生した記憶は無いけど
考えられる可能性としてCPU負荷が高いときに発生してるのかな?
CPU負荷が高いときは各Delayを長くしたり、一時的に停止させたりすると発生率が下がるかも。
CPU使用率を取得するには流行らせるページ(↓)の「システムモニタ用関数群」を使うと簡単
lukewarm.s101.xrea.com/myscripts/index.html

178 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 20:40:44 ID:nqDZEveb0]
>>176
自分も <+WheelUp::ShiftAltTab
を使った後によくShiftが押されっ放しになります。
CPU負荷は10%くらいでも起きますね。なんでだろう

179 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 20:53:04 ID:Jqjy1sE50]
Safari4を使われている方は、御存じだと思うのですが
このブラウザはリンクを新しいタブで開くのに
control + クリックの操作となり非常に不便でして
AutoHotkeyのスクリプトで、リンクをクリックだけで
タブを開く事は可能でしょうか

180 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 21:50:16 ID:tOyf+Vjo0]
状態に応じてタスクトレイアイコンが3種類に変化するスクリプトを
コンパイルしてexe化することを考えています。
ahk2exeでコンパイルするときにiconを埋め込むことができますが、
ここで3種類のiconを埋め込むことも可能なのでしょうか?
外にiconを用意せずに、内部に埋め込んで利用するにはどうすればよいのか
お知恵を拝借したくて参りました。どうぞよろしくお願いします。

181 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:40:41 ID:Act1V8T40]
>>176
>過去ログにあった押され続けていることをツールチップで知らせる対策
どういうものですか?
興味があります。

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:45:35 ID:wKap2oAj0]
>>181
これです

782 :名無しさん@お腹いっぱい。:2008/11/27(木) 01:43:58 ID:pOwnMABe
よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。
if書きたくないから、三項演算子だいすきif書きたくないから、三項演算子だいすき

#SingleInstance
#Persistent
keys = Ctrl|Shift|Alt|LWin|RWin
alertDur = 3000 ;(ms)
SetTimer, Alerter,200
return
Alerter:
alert =
Loop, PARSE, keys, |
{
%A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField%
alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : ""
}
Tooltip, %alert%
return

183 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:47:40 ID:Act1V8T40]
>>182
ありがとうございます。
勉強になります

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:56:12 ID:g3bI05W70]
WheelScroll.ahk の作者さん、見てらっしゃいますかー? (´∀`)ノ
前スレ809でご相談した、 マルチモニタで座標がマイナスのときスクロールしない件、ようやく調査できました。
どうやら Firefox と Google Chrome に特有の問題?だったようです。

> 1.スクリプト殺したノーマルの状態で通常のホイールが効いているか
Yes

> 2.ToolTip,mx=%mx% my=%my% とか追加して値がマイナス値になってるかどうか
OK

> 3.互換モード(WM_SCROLL)で動かした場合も動かないのか
アプリによって違う
[初期設定]
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,
[互換モード] ※
OK: Word 2007, Excel 2007, VBE, Explorer, Hidemaru, Google Chrome 2.0,
NG: Firefox 3.0.10 (プラス座標でも動かない),

※「if (!scmode)MOUSEWHELL() 」の部分をコメントアウトして「SCROLL()」だけが使われるようにした

> 4.管理人さんのホイールリダイレクト で正常に動くかどうか
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,

というわけなのですが、何かおわかりになりますか?



185 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 09:13:09 ID:xwya5VPS0]
>>182
三項演算子を使えるのか
AutoHotkeyでは使えないものだと早とちりしていた


186 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 20:35:06 ID:UekHVJ+l0]
>>179
済みません、このスクリプトの作り方を
ご存じの方、教えて頂けないでしょうか
宜しくお願いします。

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:03:44 ID:bITW0WaS0]
それってSafariに限らずIE7以降やFirefoxでも一緒なのでは…。人間側が対応すれば?

どうしても作りたいなら、単に左クリックにCtrl+左クリックのショートカット割り当てて
常駐させればいいんじゃね?

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:09:54 ID:36hO0FeI0]
IEはデフォでミドルクリック新タブに対応したけど
Safariはまだなのか

189 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:20:51 ID:ZrrVWnQk0]
>>184
作者とは関係ないけど、

MOUSEWHELL関数内の

; lParam: XY座標
lpalam := (my << 16) | mx

って所を

VarSetCapacity(tmp, 4), NumPut(mx, tmp, 0, "Short"), NumPut(my, tmp, 2, "Short")
lParam := NumGet(tmp, 0, "UInt")

に変えてみたら動くかな?

190 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 00:15:39 ID:dhbOZypN0]
>>184
どもです。XPSP2で現象確認しました。
>189氏でも突っ込み入ってますがバッファサイズと符号の問題っぽいですね。
ただ、VarSetCapacity() & NumPut()は自分もやってみたんですが上手くいかず。
泥臭いけど↓の記述でいけました。

; lParam: XY座標
my += (my < 0) ? 0xFFFF : 0
mx += (mx < 0) ? 0xFFFF : 0
lpalam := (my << 16) | mx

初めはアプリ固有の問題かと思ったけど、問題が起こってたのはlParamの値を
ちゃんと見てるアプリだったですね。
(逆に言うとほとんどのアプリはlparam値をデタラメに指定しても動くんだな)

いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎるんで
ちょっといつになるかわからんです。
とりあえず当座は個々でのモデファイで対応をお願いします。

191 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 08:25:43 ID:FZfPnSVw0]
AutoHotKeyではないあるウィンドウに
ファイルがドロップされたことを知りたいんですが何か方法ありませんでしょうか

192 名前:名無しさん@お腹いっぱい。 [2009/06/13(土) 09:59:23 ID:tz1EHr/W0]
三項演算子の話が出ていたので便乗して質問します

if (key = "q" or key = "w" or key = "e")
{
key = ok
}
の条件の部分を
if key in q,w,e
{
key = ok
}
のように省略化して三項演算子を書きたいのですが無理でしょうか

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 10:20:05 ID:zUCF2v8d0]
>>191
他のウィンドウへのD&DはWM_DROPFILESを検知しないとダメかも
hook用のdllが英語のフォーラムにあったような記憶

>>192
一般論で言えば無理だけど、
instr("qwe",key) ? "ok":key
みたいなことは書けると思う

keyが複数文字なら instr("_q_ww_ee_","_" . key . "_") ? "ok":key とも書けるけど、
選択肢の数によっては普通に or で結んだ方が速いかも

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 11:49:58 ID:tz1EHr/W0]
>>193
どうも
この手は思いつきませんでした



195 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:15:03 ID:TEt0QNw/0]
高級なツールチップ表示関数を作ろうと思ってます
ツールチップ番号ごとに独立した表示時間を持たせたいのですが
作り方が分かりません
ツールチップ削除用ラベルも関数内で完結させようと思ってます
とりあえず現時点のツールチップ削除機能がない関数です↓

ToolTip(msg, dur=2000, tipNumber=20, x="88%", y="95%")
/******************************************
* スクリーンの絶対座標にツールチップ表示
*
* @param msg - 表示メッセージ
* @param dur - 表示時間(ms)
* @param tipNumber - ツールチップ番号(1~20)
* @param x - スクリーン座標。絶対値または%指定が可能
* @param y - スクリーン座標。絶対値または%指定が可能
*******************************************
*/
{
ifinstring, x, `% ; xに%が含まれていた場合の座標を算出する
{
StringReplace, x, x, `%
x := A_ScreenWidth * x / 100
}
ifinstring, y, `% ; yに%が含まれていた場合の座標を算出する
{
StringReplace, y, y, `%
y := A_ScreenHeight * y / 100
}
CoordMode, ToolTip, Screen
ToolTip, %msg%, %x%, %y%, %tipNumber%
return
}

196 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:32:17 ID:uM8h8kxB0]
チップ番号毎に消去用のタイマ設置じゃないの

197 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:37:14 ID:TEt0QNw/0]
20個ラベル作るってことですか?

198 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 19:06:14 ID:TEt0QNw/0]
とりあえずラベル20個作って望み通りの挙動になりました
ありがとうございます

199 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 04:29:55 ID:uW112SM80]
プログラマブルテンキーのリマップで困っているのですが
VK SC Type Up/Dn Elapsed Key
------------------------------------------
A4 038 d 43.83 Alt
60 052 d 0.05 Num 0
60 052 u 0.02 Num 0
66 04D d 0.02 Num 6
66 04D u 0.00 Num 6
61 04F d 0.02 Num 1
61 04F u 0.00 Num 1
A4 038 u 0.02 Alt
こんな入力があって発動するスクリプトは可能でしょうか?

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 10:26:41 ID:aFW/syKk0]
ALT押しながらテンキーの061ということでいいのかな。
前にも似たようなスクリプト貼られた気がするけど。

seq:="!Numpad0!Numpad6!Numpad1|UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba" ; 検出するキーシーケンス
endkeys:="{Backspace}{Enter}{Left}{Right}{Up}{Down}{Delete}{Insert}{Escape}{Home}{End}{PgUp}{PgDn}"
. "{Numpad0}{Numpad1}{Numpad2}{Numpad3}{Numpad4}{Numpad5}{Numpad6}{Numpad7}{Numpad8}{Numpad9}"
. "{NumpadDot}{NumpadDiv}{NumpadMult}{NumpadAdd}{NumpadSub}{NumpadEnter}"
. "{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Pause}{Break}{PrintScreen}"
. "ba" ; endkeysには検出するキーを含める
hist:=""
Loop
{
Input, var, L1 V, %endkeys%
if ErrorLevel=Max
hist:=""
else if InStr(ErrorLevel,"EndKey:")
{
hist.=GetKeyState("Alt","P") ? "!":""
hist.=SubStr(ErrorLevel,8)
}
Loop,Parse,seq,|
if ( SubStr(hist,StrLen(hist)-StrLen(A_LoopField)+1) = A_LoopField )
Gosub % A_LoopField . hist:=""
}

!Numpad0!Numpad6!Numpad1:
TrayTip,, %A_ThisLabel%:%A_TickCount%
return

UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba:
TrayTip,, FullPower:%A_TickCount%
return

201 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 16:34:29 ID:uW112SM80]
>>200
ありがとうございます。
参考にさせて頂きます。

202 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 23:30:20 ID:DC/htVT+P]
つい2,3日前に,このツールの存在を知りました。

いままで自分で欲しかった,
 1 ブラウザやエディタ上で範囲選択
 2 ホットキーでポップアップメニュー
 3 Firefoxに送る,EBViewに送る,Googleで検索,Wikiで検索……
などの機能を持つスクリプトが,見よう見まねで書けたんですが,
(かなり細かくTPO次第の条件分岐になるので,自動認識はさせない方針)
ただ一つ「IE8にURLを送る」だけがうまくいきません。

仕事でどうしてもIE8が必要なので,あとここだけ動くと
言うことなしなんですが,何か良い手はありませんでしょうか。

Run, C:\Program Files\Internet Explorer\iexplorer %Clipboard%

は駄目でした。

203 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 00:27:40 ID:t4Kz1iJG0]
#1:: run, "C:\Program Files\Internet Explorer\iexplore.exe" "%clipboard%"

http::// はいらんでしょ。そういう使い方してるんだったらごめん。

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 00:37:59 ID:DfoIckCV0]
>>202
IE8をインストールしていないけど
iexplorer.exe ではなく iexplore.exe じゃないかと。

それとパス中に含まれる半角スペースは %A_Space% に置き換えた方が確実に動くと思う
Run, C:\Program%A_Space%Files\Internet%A_Space%Explorer\iexplore.exe %Clipboard%



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

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


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

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

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

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

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

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

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

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

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

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

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

#IfWinActive ahk_class Progman

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

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

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

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


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



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

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

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

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






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

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

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