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


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

AutoHotkey スレッド part7



1 名前:名無しさん@お腹いっぱい。 [2008/12/31(水) 12:39:34 ID:ROX9gd900]
■公式
www.autohotkey.com/

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

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

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

136 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 19:32:57 ID:xTILthLA0]
ver というコマンドプロンプトで使えるコマンドがあってだな

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 22:59:29 ID:C2p4wSr10]
報告その一

流行らせるページのリファレンス、ControlGetの説明の項
>Choice
>リストボックスやコンボボックスで選択されている項目の番号
>(TListBox/TComboBoxコントロールにも対応)
ってなってるけど

ControlGet,var,Choice,,ComboBox1,画面のプロパティ
msgbox,%var%

でやってみたら、選択されている項目の"番号"ではなく"文字列"が取れた。

ちなみに本家ヘルプの説明はこんな感じ
>Choice: Sets OutputVar to be the name of the currently selected entry in a ListBox or ComboBox.
>To instead retrieve the position of the selected item, follow this example (use only one of the first two lines):
>
>SendMessage, 0x188, 0, 0, ListBox1, WinTitle ; 0x188 is LB_GETCURSEL (for a ListBox).
>SendMessage, 0x147, 0, 0, ComboBox1, WinTitle ; 0x147 is CB_GETCURSEL (for a DropDownList or ComboBox).
>ChoicePos = %ErrorLevel% ; It will be -1 if there is no item selected.
>ChoicePos += 1 ; Convert from 0-based to 1-based, i.e. so that the first item is known as 1, not 0.

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 23:27:14 ID:NAyEbsnB0]
むしろ、番号が取れなくて困った覚えがある。
日本語取得出来たけど再利用出来ないよ!な感じで

139 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/25(日) 23:28:39 ID:C2p4wSr10]
報告その二

TrackWheelでタイトルバーをクリックしてもアクティブウィンドウが切替わらなくなることがあるです。
[Alt]+[Tab]で切り替えてやると復活するが、以降のドラッグ操作に支障が出る。
 → ドラッグ&ドロップが効かなくなる。(ポインタはドラッグの絵になるがドロップができない)
 → マウスジェスチャ対応アプリでマウスジェスチャが効かなくなる。
スクリプトをReloadしても直らず、諦めてしばらく使ってるといつの間にか復旧してる。

vmWareのゲストOS画面(MKSEmbedded)上でうっかりスクロールさせようとした時によく起きた。
vmWareを一切起動させてなくても時々なる。

再現パターンは今のとこ不明だけど、発生直前に本来のマウスポインタとスクロールポインタが
二重で表示されていたような気がする。
WinXP SP2 AHK ver 1.0.47.06 AutoHotkey.iniに組込み利用


あとスクロール制動についての感想というかできれば要望です。
(これは多分に好みの問題かも知れないので気に入らなかったら無視して下さい)
横スクロールしたい時にブレで縦方向までスクロールしてしまうことがよくあり、縦横自在杉な制動が
ちょっと仇になっているような印象を受けました。

ThinkPad標準のスクロールではあまりその辺を意識したことがなかったんですが
直前に移動した位相(xもしくは、y方向)で固定し、別の位相へのスクロール時は閾値と感度を
通常より多めに取る。もしくは縦横の移動を同時には行なわない。
(xのが移動量が多いなら横のみスクロールさせてy値はあえて無視)
みたいな対処が入っているような気がします。

140 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 00:08:35 ID:OzaHopDg0]
>>139
TrackWheelの中の人だす。

> TrackWheelでタイトルバーをクリックしてもアクティブウィンドウが切替わらなくなることがあるです。
> [Alt]+[Tab]で切り替えてやると復活するが、以降のドラッグ操作に支障が出る。

認識していまつ。同症状がこっちでも起きていて、原因は分からない。orz。
こっちは、再現性っていうか、今のところFireFoxでしか起きないんだけど・・・。
申し訳ないが、今のところメドはなし・・・です。

> 再現パターンは今のとこ不明だけど、発生直前に本来のマウスポインタとスクロールポインタが
> 二重で表示されていたような気がする。
ふむ。。。TrackPointのツールだとFireFoxの場合カーソル消えない(というかちらつく)し、ちょっと手がかりかも。

不具合でどうしようもねぇ!っていうのなら、以下のオプションをIniで設定して様子見してくれるとありがたい。
マウスポインタは消えないけど・・・
> ; マウスカーソル消去を無効にする場合は 1、しない場合は 0 にする
> NoHide=1

> 横スクロールしたい時にブレで縦方向までスクロールしてしまうことがよくあり、縦横自在杉な制動が
> ちょっと仇になっているような印象を受けました。
> :
> 直前に移動した位相(xもしくは、y方向)で固定し、別の位相へのスクロール時は閾値と感度を
> 通常より多めに取る。もしくは縦横の移動を同時には行なわない。
これは、好みっつーか仕様の範囲だね。数式いじるだけだから実現は楽なはず。
オプションで変えられるようにすればいいだけだから、気が向いたらやってみる。

141 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 06:04:32 ID:VuJfFU6y0]
trackwheel便利なんだけど
外付けマウスまで同じ挙動になっちゃうのは避けられないのかな。

142 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 09:52:19 ID:z8Mo5hpU0]
>>139
dです
発生頻度はそれほど高くないんだけど、リブート以外の復旧方法がわからないのが痛いところ。

>気が向いたらやってみる。
>申し訳ないが、今のところメドはなし・・・です。
更新とか急かすつもりはないんで報告も参考程度で見といて下さい。
もうTrackWheel依存しすぎでThinkPad標準のドライバには戻れない状況ですわ。

>ふむ。。。TrackPointのツールだとFireFoxの場合カーソル消えない
そういえばVMWareも消えないですね。ゲストOSにマウス制御全部渡してるらしくトラックポイントでの
スクロールも一切できないです。
ちなみにVmWareのゲストOS内でTW.ahkを動かすことはできます。
でも仮想マシン内は普通よりディレイが発生しやすいためかスクロールはカクカクで例の現象も
比較的高頻度で起こってた気がします。

直近での発生はVMではなく Jane Styleのスレ欄だったんだけど
・その前にシェルが一回落ちていて窓切替にやたら時間がかかる状態だった。
・トラックポイント操作してもスクロール制御ができてない(間に合ってない)うちにmbuttonを離してしまった。
のが原因だったような。(いやそもそもシェルが落ちてる段階で参考にならないか)

> NoHide=1
今すでに現象が起こってるので、後でOSリブート後に試してみます。
あとTW_POSTACTIONを設定してるのでそれ解除しても起こるかも見てみます。

143 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/26(月) 09:53:17 ID:z8Mo5hpU0]
レス番まちがい
×139
>>140

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 14:21:32 ID:paF95q4q0]
ControlGetTextとかって「ahk_pid %pid%」が上手に使えない。
「ahk_id %id%」等なら使える。はまった。



145 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 17:39:54 ID:lduHMXnK0]
Jane Doe Styleってなんでタスクバーで左右になべて表示ってやると
二つ分として扱われるの?これAHKでなんとかならん?

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 17:45:58 ID:Ny4HM/7G0]
>>132,133
遅くなりましたがありがとうございました

147 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 18:26:19 ID:eAnAnnBW0]
>>144
一つのプロセスで窓はいくつでも持てるんだぜ。

>>145
以下を実行した直後なら・・・
WinSet, Style, -0x10000000, ahk_class TApplication ; WS_VISIBLE

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 19:56:41 ID:t0VmE1Ht0]
質問です
特定の動作をさせる為のホットキーを設定ファイルで設定する方法はありませんか?

例えば設定ファイルに#Eと書かれていればwin+Eで動作
#Qと書かれていればwin+Qみたいな感じで

149 名前:名無しさん@お腹いっぱい。 [2009/01/27(火) 20:15:43 ID:X4tsXHNf0]
僕も質問です。
アプリ上で開いているファイルの名前を取得する方法ってありますか?

例えば、エディタでc:\***.docというファイルを開く。
c:\***.docはエディタ上ではアクティブな状態だとして、
このc:\***.docという名前をAHK上で取得したいのです。

無理かなあ。

150 名前:cbibnvn mailto:trpavd@bkxwln.com [2009/01/27(火) 20:17:47 ID:nCQqd/B10]
4fr8vT <a href="awqiefzmnckd.com/">awqiefzmnckd</a>, [url=ohcwsocuvnsl.com/]ohcwsocuvnsl[/url], [link=fyltntzeasap.com/]fyltntzeasap[/link], hzumapjsvzmu.com/

151 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 20:27:41 ID:WqNNCHEs0]
>>149
一番お手軽なのはエディタ側でタイトルバーにファイルパス表示する設定にしといて
それ取得して加工すれば?

152 名前:名無しさん@お腹いっぱい。 [2009/01/27(火) 20:41:15 ID:X4tsXHNf0]
>>151
そか、ありがとう!

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 21:18:33 ID:paF95q4q0]
>>147
なるほど…常識…。はまると往々にして単純で当たり前の理由なんだなwまた間違えそうで怖い。

>>149
MouseGestureのコマンドラインを取得する関数が使える時もある。

俺が使ってるのはMenuHackerで、%arg%%titlepath%を使って、ポチエスに投げる。
メモ帳から使い慣れたエディタに開き直すときに使っている。

154 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 21:28:17 ID:hKjgB29J0]
>>148
IniRead と Hotkeyコマンド使え

>>149
コマンドライン文字列を取得するという方法もある
pc11.2ch.net/test/read.cgi/software/1219130051/683-691



155 名前:148 mailto:sage [2009/01/27(火) 21:56:28 ID:t0VmE1Ht0]
>>154
設定ファイルから設定を読み込むのは出来るのですが
割り振るキーを設定に応じて変更する方法が無いものかと。


156 名前:148 mailto:sage [2009/01/27(火) 22:05:14 ID:t0VmE1Ht0]
読み違えてました
Hotkeyコマンドで出来ますね
すみませんでしたm(_ _)m


157 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 22:19:04 ID:eAnAnnBW0]
>>142
TWのテスト版だけど、こっちを試してくれるとありがたい。
一応 *今のところ* 不具合は出ていない。
あと、縦横どっちかにスクロールを固定するオプションを追加(dx, dyの大きい方のみを採用、手抜きw)
ttp://sites.google.com/site/agkh6mze/strage/TrackWheel_RC.zip?attredirects=0

もしこれで直ったてら単純なコーディングミスだな...

158 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/27(火) 22:50:56 ID:hKjgB29J0]
>>157
お疲れさまです
ちょうど今の時期、在宅でのPC仕事なんで(自宅警備じゃないよ)しばらくこれで酷使テストしてみます。
つか今日気がついたけどリモートデスクトップ上でもホイール相当のスクロールは効くんだな。
さすがにマウス下ウィンドウの認識まではしてくれなかったが。

>縦横どっちかにスクロールを固定するオプション
DenyBoth=1にしてみたらWinMergeでスクロールさせる時カクカクしなくなったヽ(´ー`)ノ
ありがとです

159 名前:名無しさん@お腹いっぱい。 [2009/01/29(木) 06:09:04 ID:LOmhUipb0]
QWERTY 配列の109キーボード用を dvorak 配列に変更しようとして

#InstallKeybdHook
#UseHook

*z::;
*+z:::

と書いたところ、
Shift + z で + が表示されるようになりました。
意図しているのはもちろん : の表示です。
どのようにすればよいのでしょうか?
またなぜこのように表示されてしまうのでしょうか?
AutoHotkeyは最新版を使用しています。

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 09:10:03 ID:b+H6/CBd0]
+z::Send,:
z::Send,;

Remapは面倒な事があるねぇ。
これはキーコード送信でなくて、「キー置き換え」なんだわ。
つまり、
 z::;
と書くと以下のようになる、([]内はキー名)
 [Shift] +[z] -> [Shift] + [;]
 [Ctrl] +[z] -> [Ctrl] + [;]
 [Alt] +[z] -> [Alt] + [;]
ってなる。
QUERTYキーボードだとおもうけど、キーに印字されたものを見れば・・・

161 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 09:40:20 ID:qrvrUYM20]
*z::send,;
*+z::send,:

162 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 14:19:47 ID:SY+Fy4ud0]
>>160-161
ありがとうございます。sendでしたか。

*z::send,;
*+z::send,:

を記述すると常に ; が表示されるようになったので
もしやと思い

*+z::send,:
*z::send,;

と表記したらうまくいきました。


163 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 21:38:27 ID:aLpAKfgd0]
CAPSLOCKをCTRL(左)に置き換えるには
どのように設定すればよいのかわかりません

旧雑記サルベージ
lukewarm.s101.xrea.com/test/read.cgi/bbs/1157529465/62

>CapsLockCtrl入れ替えは実現できず

こういう情報がありますが
やはりレジストリを弄るしかないのでしょうか

164 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 21:48:36 ID:PtNO3FlD0]
>>163
Change Keyでサクッと弄っちゃえばいいじゃない
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html



165 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 22:25:49 ID:Of1QsQUs0]
テンプレ>3

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/29(木) 22:45:33 ID:wR4WwhsC0]
>>164--165
そうでしたか
ありがとうございました


167 名前:名無しさん@お腹いっぱい。 [2009/01/30(金) 20:57:31 ID:w6m+xv+i0]
TrackWheelの中の人です。
>>139の症状としては依然として再発する・・・orz
詳しく書くと非クライアント領域(タイトルバーとかメニューとかサイズ変更とか)でマウス押下が効かない。

いろいろググってみたけど、
新・なまず日記(このスレでは既出中の既出)のIME状態取得のところで、
AttachThreadInput の多用で問題発生とのこと。
ttp://endoh-namazu.tierra.ne.jp/diary/?date=200512

TrackWheelは 危なさそうなのは ControlClick と Send かなぁ。。。
あとは自前の 組み込み用の PostAction で A_Cursor 参照してる。。。

AHKのコマンドをあまり使わずに DllCall でゴリ押しすれば何とかなるのかなぁ・・・
ちょっと根が深いかもしれないので、同症状で悩んでいる人は Ini で NoHide=1 でよろしく

自分は頻発するわけじゃないので [Alt] + [Tab]で逃げている。

>>141
すっかり見落としてた。ソフトウェア層でやっているので無理。
Hotkeyコマンドでマウスボタンに割り当てているんで、何らかの方法(ホットキー割り当とか)で
Hotkey, *MButton, Off
とかで一時的に解除するとか

168 名前:158 mailto:sage [2009/01/30(金) 21:53:26 ID:HlJEMNMH0]
>>167
>A_Cursorの参照
>A_CaretX(Y)の参照
>ControlClick
>ControlGetFocus
>ControlFocus
>Controlコマンドの、Check,Uncheck

やばい。バリバリ使ってる。特にControl関係は最近作ってる奴でテストしまくってた。
ってことは現象が出るのはTWじゃなくて自分が書いたスクリプトだった可能性も大だ orz

ちなみにRC版導入以降、こちらでは問題は起こってないです。
(仕事が込んできてスクリプト弄る余裕がなかっただけかも知れないが)

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 22:44:06 ID:w6m+xv+i0]
> ちなみにRC版導入以降、こちらでは問題は起こってないです。
発生していないなら何よりだけど、、、

>>140書いた段階で単純なバグ(コーディングミス)を見つけて直したので、
4日くらいは大丈夫だったので、発生頻度は確かに減った気はする。
だけどさっき出たんで・・・。

原因はこっちだと思うなぁ。
というか、列挙されたコマンドってAHKでは肝なところだと思うし、
他スレッドに長い間(マウス押下中ずっと)アタッチしっぱなしって、想定してないはず。

というか、これも自体が的外れな見解なのかもしれないけどorz

ちなみに、AHK の C++ のソースコードを分かりもしない癖にふいんき(何故かry で斜め読みしたら
1.0.42.02以降ではA_Cursor では実質使わないようになっているみたいだけど他は変わってない。

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 22:49:38 ID:HlJEMNMH0]
自分も今 ソース眺めてたんだけど、ControlClickもv1.0.45 以降の"NA"モードでは
AttachThreadInput()使ってないみたい。

コメント読む限りでは AttachThreadInput()で何かしらの問題が起こることは作者氏も
たぶん認識していて使用頻度は極力減らしているような印象。
(テキスト翻訳で適当に解釈してるから実際はわからんけど)

171 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/31(土) 12:06:50 ID:DjmYD3GA0]
>170
あんまりそんな風には読めなかった。別のコメントならごめん。
ちなみに AttachThreadInput() は SetActiveWindow() するのに必要なはず。

// It was reported (and confirmed through testing) that this new NA mode (which avoids
// AttachThreadInput() and SetActiveWindow()) improves the reliability of ControlClick when
// the user is moving the mouse fairly quickly at the time the command tries to click a button.
// In addition, the new mode avoids activating the window, which tends to happen otherwise.
// HOWEVER, the new mode seems no more reliable than the old mode when the target window is
// the active window. In addition, there may be side-effects of the new mode (I caught it
// causing Notepad's Save-As dialog to hang once, during the display of its "Overwrite?" dialog).
// ALSO, SetControlDelay -1 seems to fix the unreliability issue as well (independently of NA),
// though it might not work with some types of windows/controls (thus, for backward
// compatibility, ControlClick still obeys SetControlDelay).

この(AttachThreadInput() と SetActiveWindow() を避ける)新しい NA モードは
コマンドがボタンをクリックする時にユーザーがマウスを素早く動かしている場合に
信頼性が向上することが報告され(またテストを通じて確認され)ている。
加えて、新しいモードでは避けようとしなければ発生しがちであるウィンドウの
アクティブ化を避ける。
「しかし」、対象のウィンドウがアクティブウィンドウである場合には、新しいモードは
古いモードよりも信頼性が高いとは言えないようである。さらに新しいモードには副作用が
あるかもしれない。メモ帳の「名前を指定して保存」ダイアログで上書きするかを
たずねるダイアログが表示されている最中に一度ハングしたことがある。
「また」、SetControlDelay -1 は同様に信頼性の問題を(NA とは独立に)解決するよう
だが、動作しない Winow や Control が存在するかもしれない。
そのため、互換性のため ControlClick は依然として SetControlDelay の設定に従う。


172 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/31(土) 13:46:06 ID:g43WAhtb0]
アウチ、AttachThreadInput()でgrepかけたら、コメントで
「AttachThreadInput()を避ける」みたいなのが結構出てきたんで勝手に解釈してた。

SetForegroundWindowEx()とかの中でも使ってるし、WinActivateする度に呼ばれてるのか
コーディングを工夫して避けるは無理そう。
普通のホットキー駆動だとユーザー操作が発生してからのアクションが多いから
あまり問題にならないみたいだけど
間隔短くとってタイマーぶん回して高度なことやらせるのは避けたほうが無難?

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/31(土) 16:44:41 ID:XA0EcD/m0]
そこまで分かる人でもAHKを使うんだな

174 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 03:06:41 ID:Ul6ytoNp0]
2ストロークで特定の語句を出力したいのですが、
(以下では見やすくするため全角空白を使用してます)

#v::
  Input, InputChar, C I L1 T2,{Esc}, n, h
  if ErrorLevel=Match
  {
    if InputChar = n
      Send, win + v -> n
    if InputChar = h
      Send, win + v -> h
  }
  if ErrorLevel=Max
  {
    Send, %InputChar%
  }
  return

これでは、 Win + v を押して n を押したときのみ正常に動作し、
それ以外の場合はまったく動きません。

意図しているのは
Win + v, そして n で Send, win + v -> n
Win + v, そして h で Send, win + v -> h
Win + v, そして n と h 以外のキーで Send, win + v -> それ

どこを変更すれば正常に動くのでしょうか



175 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 03:41:30 ID:+8QlN44X0]
>>174
流行らせるページより
>MatchList
>「,」で区切って文字列を列挙する。
>入力内容がここに列挙したものに一致した場合、コマンドは終了しErrorLevelが「Match」になる。
>カンマ区切りだが、引数の区切りとは扱いが違い、カンマの前後の空白文字などは、文字列の一部とみなされる。

これが原因?

176 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 04:11:44 ID:Ul6ytoNp0]
>>175
ありがとうございます!うまくいきました

177 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:20:16 ID:WFl1N4Nl0]
名前を付けて保存ダイアログってスクリプトから出せないのかな?
ファイル選択ダイアログを表示・フォルダ選択ダイアログを表示 はあるんだけどなー。


178 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:32:19 ID:5OtrqmWb0]
選択ダイアログを出して
ウィンドウタイトルとかボタンのテキストとか書き替えて
無理からControlとかでテキスト拾って
保存用に利用してみるとかw

179 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 16:35:34 ID:gM29b+OF0]
FileSelectFileでできるだろ?

180 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 17:16:49 ID:WFl1N4Nl0]
>>179
リファレンスよく見たら保存ダイアログにする方法書いてあるな
気付かなかった

181 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 19:02:57 ID:o14t9yXp0]
アイドル状態ってどうやって調べてるんだろ?

5分ごとに、アイドル状態ならば検索ソフトのインデックス作成を行うように設定してるのだが、
Civilization4っていうゲームをプレイ中に、5分ごとにフォーカス奪われちゃってすごく困ってる。

なんか改善策ないかなー

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 19:09:30 ID:zLFlCA+70]
組み込み変数の A_TimeIdle や A_TimeIdlePhysical じゃ用はなさないってこと?
というか、プレイ中と書いてあるけど、起動して放置中ってことか?

183 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 19:24:13 ID:nES9c2H30]
Civilization4がどこまでマルチスレッド対応してるかにもよるかもね。
ウィンドウでもプロセス検知でもいいから、ゲームが起動中かどうかで判断するのが一番簡単じゃない?

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/01(日) 22:31:29 ID:IsdiFXGP0]
スレッド毎のCPU占有率調べて処理すればいいんじゃね
除外設定付けておけば望みの動作になると思われ



185 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 00:37:36 ID:ghjeIC8V0]
直前に閉じたウィンドウを開くスクリプトは書けますか?

186 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 00:41:16 ID:/eytDMHF0]
>>185
無理。具体的に言ってよ。
アクティブウィンドウを再起動させるのならできると思う。

直前に閉じちゃったのなら、常に何かしら監視していないといけないから面倒かも。

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 00:59:40 ID:1rUYw8J20]
ワークステーションがロックされてる、で、パスワードを入れて復帰する。
この直後に処理を挟みたい。
OnMessageとかでトラップなのかな?

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 01:43:07 ID:ghjeIC8V0]
>>186
操作ミスで閉じてしまったときに楽に復帰できたらいいなと思ったんだ。(´・ω・`)

189 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 02:02:47 ID:09XryvuG0]
>>185
これか?外人がAutohotkeyで色々作っていたやつ。試してレス横瀬。
窓の杜 - 【NEWS】誤って閉じたウィンドウを60秒以内なら復活できる「GoneIn60s」
www.forest.impress.co.jp/article/2007/01/11/gonein60s.html

190 名前:185 mailto:sage [2009/02/02(月) 04:29:43 ID:ghjeIC8V0]
>>189
サンクス!さっそく使ってみたので以下報告。結論としては不採用。
Alt + F4を押すとWinHideする仕組みらしい。で、
・GoneIn60sのアイコン右クリックして閉じたアプリを選択 ⇒ WinShowで復帰。
・指定時間後までに何もしない ⇒ WinCloseで閉じる。

なぜかWinKillでなくWinCloseだから、「保存しますか?」と出るはずのときに、
・指定時間後までは何もなしで閉じたように見える。→後で急にあらわれて「保存しますか?」
となる。これは気持ち悪い。
しかも右上の×でも同様なんだけど、こっちはもっとひどくて、位置が正確でないから
誤動作する場合がある。最小化ボタンの位置で反応したり、閉じるに反応しなかったり。

WinHideの仕組みはいいアイデアだと思った。
ちなみに窓の杜の紹介記事からバージョンアップしてて、今はv1.4。

191 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 05:46:25 ID:BYiuvhuI0]
DDWinというソフトの小窓をESCキーで閉じて
他のソフトの時は標準の動作をするようにしたいのですが

Esc::
IfWinActive, ahk_class TDefForm
{
Send,WinClose
}
else{
Send,{Esc}
}
return

だとDDWinの小窓では何も起きませんし
それ以外のところでは

xx hotkeys have been received in the last xxxxms

Do you want to continue?

というエラーメッセージが出てしまいます。

192 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 07:28:16 ID:ghjeIC8V0]
>>191
このスレでhotkeys have been receivedを検索。
特定のウィンドウでの動作は
#IfWinActive, ahk_class TDefForm
;ここに処理を書く。
#IfWinActive
って具合に書くといいよ。

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 08:46:33 ID:BYiuvhuI0]
>>192
ありがとうございます。うまく行きました。

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 22:31:32 ID:kP24v5Wa0]
www2.atchs.jp/test/read.cgi/pcpc/5/l50
こちらもつかってください。



195 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/02(月) 22:52:47 ID:99xZfHQW0]
なぜ情報を拡散させたがるのか。
ここと流行らせるページの掲示板で十分だろ。

196 名前:187 mailto:sage [2009/02/02(月) 23:15:39 ID:1rUYw8J20]
自己レス。
WM_POWERBROADCAST(0x218)じゃ捕まえられないっぽいので、
フォアグランド窓をとれるかで判断した。

SetTimer, HogeHoge, 1000
HogeHoge:
 WinGet, fgId, ID, A
 if (!fgId) {
  Loop {
   WinGet, fgId, ID, A
   if (fgId)
    break
   Sleep, 1000
  }
  // ここに処理を書く
 }
 return


197 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 19:09:41 ID:d0uBooiq0]
あるウィンドウがアクティブなときのキー設定を
#IfWinActive, WinTitle
1:: F1
2:: F2
3:: F3
という感じで書いています。

そのウィンドウが非アクティブのときでも、
Win+Space 1 のように2ストロークキーで
同様のキー操作ができるようにしようと、
#Space::
Input, key, C I L1 T2, {Esc}, 1,2,3
IfWinExist, WinTitle
ControlSend, , key
という感じに書いたのですが、当然というか
1,2,3 が直接送られるだけで、F1,F2,F3 になってくれません。
If key = 1
ControlSend, , {F1}
というように逐一書いていくしかないでしょうか?
定義を二重に書かないといけないのでできれば避けたいんですが…

198 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 19:18:13 ID:qfq9gHtT0]
残念ながら無理(なはず)。
窓使いの憂鬱(のどか)とかkeyhacでいう「キーマップ」とか「キープレフィックス」に相当するものはない。
強いて言えば同じサブルーチンに飛ばすくらい。
ex) Gosub, 1 ; 1のキーに割り当てられている機能を呼ぶ

199 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 20:57:50 ID:LGJ9Ljgs0]
ControlSend, , {F%key%}
でできない?
 
あと、そういう場合は Autohotkey_L の #if expression 使うと
楽に実現できそうな気がする。

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 23:23:58 ID:LGJ9Ljgs0]
>>197
せっかくAutoHotkey_L使ってるので、試してみた。
あとこのスレでURL出てなかったので出しておく。
ttp://www.autohotkey.net/~Lexikos/AutoHotkey_L/
 
;---------------------------------------------
#if WinActive("無題 - メモ帳")
or (A_ThisHotkey=="#Space"
and A_TimeSinceThisHotkey<=2000
and WinExist("無題 - メモ帳"))
1::msgbox, syori 1
2::msgbox, syori 2
3::msgbox, syori 3
#if
#Space::Return ; A_ThisHotkeyに記録するために必要
;---------------------------------------------
 
これでメモ帳がアクティブな時か、
メモ帳がある時にWin+Spaceしてから
2秒以内に各キーを押すと処理が実行されて、
そうでない時は普通に各キーが送られる。


201 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/03(火) 23:26:30 ID:LGJ9Ljgs0]
ちなみにキーマップはこんな感じで書ける。
 
;---------------------------------------------
keymap:=0
Exit
#if keymap==1
1::a
2::x
#if keymap==2
1::b
2::y
#if keymap==3
1::c
2::z
#If
; F12を押すたびにキーマップ切り替え
F12::keymap++ == 3 ? keymap:=0 :
;---------------------------------------------
 
AutoHotkey_L便利だと思うんだけど…
こういう需要あんまり無いのかな?

202 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 00:16:05 ID:53JDVpb00]
いや、あると思う。
窓使いの憂鬱とかでkeymapでの定義に慣れた人には断然分かりやすいとは思う。

というか _L って安定してる?
ウニコード化してくんないかなぁ。

203 名前:199 mailto:sage [2009/02/04(水) 00:50:50 ID:mEq9h9q70]
>>202
環境によるかもしれないけど、むしろ
俺の環境では本家より安定してるかな。
WinXP SP3。
本家の使ってるとスクリプトリロードさせた時に、
たまにエラー出るんだけど_Lだと今のところない。
単に俺の書いてるスクリプトがおかしいのかもしれないが…
 
もし使う時に注意する事があるとしたら、
#if expression使う時に、時間かかる判定しないように
気をつけるくらいかな。一応タイムアウト時間も指定できる。
 
3ヶ月くらい使ってるけど今のところ不満は無いです。
 
Unicode化は…して欲しいね。

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 15:39:07 ID:MFTbk+bR0]
時間がものすごくかかる演算をDLLで組もうと思うんだけど
参考になるサイトとかないかな
中身は単純にfor文とかを大量に繰り返して結果を返す、といったものなんだけど
ためしに
extern "C" __declspec(dllexport) INT WINAPI extracter(int x){
return 5*x;
}
こんな感じのDLL組んでDLLCALLで呼び出してみたけど上手く動作しなかったんだ…



205 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 18:27:03 ID:k5e6IctL0]
>>204
時間掛かる処理をさせるならLoadLibraryしてみたほうがいいよ

206 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 21:27:31 ID:Ut7+efCd0]
>204
多分呼び出し規約が stdcall になってるので関数名を extracter@4 にすれば呼び出せるかも。

207 名前:206 mailto:sage [2009/02/04(水) 21:38:23 ID:Ut7+efCd0]
補足。
dll 側のコードはそのままで、DllCall するときに extracter@4 で呼ぶって意味ね。VC だと _extracter@4 かも。
@以降の数字は引数に使用するスタックのサイズ。今回は int が 1 つなので 4。
gcc だと -Wl,-kill-at というオプションを渡すと @ 以降がなくなって extracter で呼べるようになるはず。
VC 側の同等オプションは知らね。DEF ファイル使えば制御はできると思う。

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/04(水) 23:14:11 ID:MFTbk+bR0]
>>206-207


問題解決しますたありがと><

209 名前:197 mailto:sage [2009/02/04(水) 23:30:00 ID:uksORcM50]
>>198-201
ありがとうございます。
>>200 の方法でできました。
>>201 とか面白いですね。

210 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 03:44:32 ID:He1nXNrH0]
白背景に黒い文字を書いた画像を用意して
ImageSearchで*TransWhiteをオプションに指定したら真っ黒な場所に反応してしまう…
何か良い方法はないかな

211 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 03:58:21 ID:Ctlz88MC0]
初心者質問で申し訳ないんだけど、入力キー、回数、間隔時間を指定して
直前にアクティブなウインドウに対して、キー(コード)を送るスクリプトってどう書くの?
現状↓のような感じで詰まってる

DefaultKey=Enter
InputBox, OutputKey ,入力設定,KeyName で指定,,200,150,,,,,%DefaultKey%
if ErrorLevel != 0
 exit
else
 counter = 1
 Loop, 3
 {
  SendEvent, {%OutputKey%}
  SetKeyDelay, 100
  counter += 1
 }

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 05:28:16 ID:JN8SH5jU0]
連続した入力
{BS 5}のように、「{}」で囲んで、右に数値を指定すると、複数回押すことができる。
って書いてるけど。

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 11:01:00 ID:6B3J8+du0]
212の言うように
SetKeyDelay,100
SendEvent, {%OutputKey% 3}

とするか

Loop,3
{
 SendEvent, {%OutputKey%}
 Sleep,100
}
でいいんでね?

あとIfでExitしてるからこの場合の動作には影響ないと思うが
文法上はElseのあと { } で囲わないとまずくね?

214 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 14:59:25 ID:Ctlz88MC0]
>>212-213
レス、サンクス
やっぱ質問が悪かったか。今分からないのが、
・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)
・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
という感じ。ま、挫折するまで調べてみる



215 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 15:57:17 ID:rxk2q+A70]
アクティブウィンドウのプロセスのフルパスを
Autohotkey単体で取得することはできますか?
Winget, OutputVar, ProcessName, A で実行ファイル名は取得できたのですが
それから先がわかりません

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 16:12:39 ID:JN8SH5jU0]
>>215
ほい、前スレから。俺が教えて貰ったんだけどw
47 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/08/25(月) 23:01:23 ID:O2etOCIT0
eamatの日記
ttp://d.hatena.ne.jp/eamat/
にあると思う

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

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

217 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 20:19:48 ID:n8B6a3aC0]
>>214
> ・入力キー、回数、間隔 を一括で各変数に入れる関数(方法)

こんな感じか?
HogeInputBoxを呼ぶと変数にキー名、回数、ディレイが入る
Gosub, HogeInputBox
return
HogeInputBox:
 Gui, Destroy
 Gui, +LastFound
 Gui, Add, Hotkey, vKeyName
 Gui, Add, Edit, vCount Number
 Gui, Add, UpDown
 Gui, Add, Edit, vDelay Number
 Gui, Add, UpDown
 Gui, Add, Button,, OK
 Gui, Show
 WinWaitClose, % "ahk_id " WinExist()
 return
ButtonOK:
 Gui, Submit
 return
GuiEscape:
 return

> ・入力キーはKeyNameで指定じゃなく、キーコードを直接受け取りたい
キー名から頑張って変換する・・・かな。
というか、キーコードって手入力前提でないの?
(上のサンプルだと KeyNameになるけど)


218 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 21:45:16 ID:dLfvsoZw0]
今押されているVirtualKeyCodeを得るならこんな感じ?
#Persistent
CoordMode,ToolTip,Screen
SetTimer,TipView,10
Exit
TipView:
ToolTip, % GetAllVirtualKeyState(),0,0
Return
GetAllVirtualKeyState(){
str:="",tf:=A_FormatInteger
SetFormat, Integer, H
Loop, 0x100
str:=str (GetKeyState("vk" SubStr(A_Index-1,3),"P") ? A_Index-1 "," : "")
SetFormat, Integer, %tf%
Return SubStr(str,1,-1)
}

219 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 03:17:46 ID:wnkD34rd0]
クリップボードに変更があったらその内容をテキストファイルに追記する、
というのを作ったのですが、下のだと数時間経つと使えなくなってしまいます。
AHKを再起動すればいいんですが毎回再起動するのも面倒です。
何か対策とか無いでしょうか?

#Persistent
Clipboard=
OnClipboardChange:
Run,"テキストファイルに追記するソフト起動"
tooltip clip
sleep,300
tooltip
return

220 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 03:43:37 ID:/VPzv7st0]
俺も過去にそれを作ったことがあった。

クリップボードバッファの領域に、スクショ画像などのテキスト以外の
巨大データが出現すると、エラーメッセージなしにAutoHotkeyが死んでしまう。

解決策は見つからなかった。うまい回避法はあるのかな?

221 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 05:09:20 ID:ka9EMbek0]
>>201を見て
キーマップのきりかえができることにおどろいたので


222 名前:214 mailto:sage [2009/02/06(金) 05:58:59 ID:NAAOC5m30]
>>217-218
こいつ・・・動くぞ、すげーー!

>というか、キーコードって手入力前提でないの?
最終的に send,{vkXX} という感じでやった方が楽かなーと思ったので

さて、>>218 の解読作業に移ります。ありがとう!!

223 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 02:39:29 ID:81yNBSmE0]
>>216
参考になりました
ありがとうございました

224 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 15:22:29 ID:WmNZzOvm0]
スクリプト内にGUIを表示するサブルーチンが複数あって、
それぞれのGUIの中で同じ名前のボタンを追加した場合、
ボタンを押したときに呼び出されるサブルーチンを区別することは
できないのでしょうか?
↓のようにすると二重定義でエラーになってしまいます。

Test1:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test1
Return

Test2:
Gui, Add, Button, , 1
Return
Button1:
MsgBox, 1 in Test2
Return



225 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 15:33:57 ID:AcAuyp/00]
押しいなぁ。
ボタン名省略時のデフォルトサブルーチンラベルまで分かってて、ボタン名重複時のところが分かってない、と。
もう一度解説読んでみ。

226 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 15:37:05 ID:AcAuyp/00]
ん?もしかして Test1 と Test2 って別窓(GUI)にしたいのかな?
だったら、GUI番号を変えた二つのGUIを用意するか、毎回破棄(Destroy)するとかすればいい。
どっちにしろサブルーチンラベルの重複で怒られるとは思うけど。

227 名前:224 mailto:sage [2009/02/07(土) 15:46:42 ID:WmNZzOvm0]
>>225-226
あぁ G オプションってこういうときのためか
Gui, Add, Button, GButton1inTest2, 1
でいけました。ありがとうございました。


228 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 18:34:02 ID:OHL9IjH/0]
語学関係のもの(英検、TOEIC、留学)がまったくない私が
語学について聞かれたらなんて答えるべきですか?

229 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 22:07:43 ID:vTbfdAUL0]
ジュワワワジュワワ、 ジュワジュワジュジュワワワワワ?

230 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 22:16:28 ID:WFpsFaYj0]
面接官「ジュワ!ワタシジュワワイイビョウインシッテルヨワワ」

231 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 23:02:35 ID:SzMrA22TP]
Vista環境だと、コンマ使うショートカット(#,::Run,cmd みたいな)
のが動作しないみたいのがえらい不便だ。
これだけでXPに戻しそう…

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/07(土) 23:46:19 ID:+Kjk/oX50]
>>231
スクリプトに何か問題があるんじゃない?
Vista64Ultで普通に動く・

233 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 13:37:15 ID:lpNI9P4b0]
>>231
原因決め付けすぎわろた。
おいらもVista環境だけど、そのスクリプトでまったく問題なく動くぜ。
AutoHotkey ver 1.0.47.06

234 名前:名無しさん@お腹いっぱい。 [2009/02/08(日) 20:56:33 ID:sclNqxNe0]
AutoHotKey.iniに、ウインドウなどを定期監視するルーチンをつけくわえたいと思っているのですが、
上手く動作しません。

AutoHotKey.iniの最後に以下のように書き足して、reloadしているのですが、SplashTextがでてくれないのです

#Persistent

SetTimer, OnTimer, 1000
return

OnTimer:
SplashTextOn,,, MAGE...
Sleep, 2000
SplashTextOff
return




235 名前:234 [2009/02/08(日) 21:13:15 ID:sclNqxNe0]
SetTimer, OnTimer, 1000
をAutoHotKey.iniの先頭の方に記述したらいけました。

これだと、上記とSetTimerとOnTimerの位置がちらばってしまうので、

SetTimer, OnTimer, 1000
Goto, NextOnTimer
OnTimer:
 SplashTextOn,,, MAGE...
 Sleep, 2000
 SplashTextOff
return
NextOnTimer:

+0::Send, 0000
: ;以下、ホットキーの設定が続く

という風にAutoHotKey.iniの最初の方に書いたら、
今度は、NextOnTimer: の後のホットキーの入力が、起動時(reload時)に誤爆してしまうようになりました。
上記例では、0000が強制発動します。

この辺の挙動がいまいちわかりません・・・
どこかに記述はありませんでしょうか?

236 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/08(日) 21:14:11 ID:yKg3PII70]
> AutoHotKey.iniの最後に以下のように書き足して
            ~~~~~~~
ってのがマズいんじゃないかと。

> #Persistent
> SetTimer, OnTimer, 1000
この2行は多分ホットキー定義より後ろに書いてあると思うんで
ファイルの頭に持ってきた方がいい。

頭から読んで順次実行するところ(Autoexecブロック)として扱われていない
死にコード担ってると思う。






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

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

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