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

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

AutoHotkey スレッド part8

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

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

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

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

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

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


81 :名無しさん@お腹いっぱい。:2009/05/29(金) 22:49:46 ID:y2qE0/Pv0
昨晩のやつの改造版。アクティブウィンドウ以外に黒いシェードを掛ける。2K/XP用。ビデオ鑑賞にでもどぞ

Gui, +LastFound -Border +ToolWindow +AlwaysOnTop -Caption +0x02000000 -0x0CC00000 +E0x00080020
Gui, Color, 000000 ; ここで色をかえてもおk
WinSet, Transparent, 200 ; 透明度(1-255)
Gui, Show, NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
SetTimer, Timer1, On
Timer1:
SetWinDelay,-1
WinGetPos,x,y,w,h,A
x1:=x, y1:=y, x2:=x1+w, y2:=y1+h
If (lx1==x1 && ly1==y1 && lx2==x2 && ly2==y2)
return
Gui, +LastFound
Gui, +AlwaysOnTop
WinGetPos,,,ww,hh
WinSet, Region, 0-0 %ww%-0 %ww%-%hh% 0-%hh% %x1%-%y1% %x2%-%y1% %x2%-%y2% %x1%-%y2% %x1%-%y1% 0-%hh%
lx1:=x1, ly1:=y1, lx2:=x2, ly2:=y2
Return


82 :名無しさん@お腹いっぱい。:2009/05/29(金) 23:08:59 ID:IKD+qEU60
おもしろいな
解除はどうやるんすか?

83 :名無しさん@お腹いっぱい。:2009/05/29(金) 23:13:54 ID:y2qE0/Pv0
タスクトレイw

84 :名無しさん@お腹いっぱい。:2009/05/30(土) 06:17:34 ID:84IZ3aep0
>>74-75
2つ以上ダメなんですね。以外に不便…。というかホットキー扱いじゃないのかな
ありがとうさんです。試してみまする

85 :名無しさん@お腹いっぱい。:2009/05/30(土) 13:39:34 ID:pp0cJZID0
>>36のSQLite_GetSelect関数ってフィールドの数が10個以上あると変数重複するよね?
例えばLV111の場合11行目の1列目、1行目の11列目で重複みたいに
俺が頭悪いだけ?

86 :名無しさん@お腹いっぱい。:2009/05/30(土) 14:25:44 ID:yxno/H630
それが仕様だと思うよ。
> %接頭辞%%行番号%%列番号% := 値
って風に代入してるし

> %接頭辞%_%行番号%_%列番号%
とかにすれば平気なんだろうけど

87 :名無しさん@お腹いっぱい。:2009/05/30(土) 14:40:43 ID:pp0cJZID0
なるほど。
ライブラリいじらないとだめか。

88 :名無しさん@お腹いっぱい。:2009/05/31(日) 01:53:08 ID:jQyIS5jG0
>>36関連でわからないことがあったので便乗して質問します

SELECT * FROM test WHERE 〜

というところで、 ' が含まれる項目をうまく探し出してくれません
autohotkey 特有のエスケープ処理か何かのせいか?と思ったのですが
いまいちよくわかりません

' が含まれる項目を処理するときに同じような症状に出会った人はいますか?

89 :名無しさん@お腹いっぱい。:2009/05/31(日) 20:18:32 ID:g4+Xfjng0
引数の基準フォルダと対象ファイルパスを元に相対パスを返す関数ってありますか?

90 :名無しさん@お腹いっぱい。:2009/05/31(日) 21:26:54 ID:3pSi+qBb0
Path_RelativePathTo(From,atrFrom,To,atrTo)
; 相対パスを作成
; From : ベースパス
; To : 相対にするパス
; atr : ファイル属性を指定
; ディレクトリ 0x10 (FILE_ATTRIBUTE_DIRECTORY)
; ファイル 0x20 (FILE_ATTRIBUTE_ARCHIVE)
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathRelativePathToA", Str,t , str,From, Uint,atrFrom, str,To, Uint,atrTo)
return t
}

Path_CommonPrefix(p1, p2)
; 2つのパス名の先頭から共通するディレクトリ名を取得する
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathCommonPrefixA", Str,p1, Str,p2, str,t)
Return t
}

91 :名無しさん@お腹いっぱい。:2009/05/31(日) 21:59:11 ID:g4+Xfjng0
>>90
ありがとうございます
無事できました

92 :名無しさん@お腹いっぱい。:2009/06/01(月) 01:21:39 ID:nMoGzHYT0
AutoHotkey v1.0.48.03.L30

93 :名無しさん@お腹いっぱい。:2009/06/01(月) 15:00:23 ID:KxOltqgo0
変数%aaa%の中に変数%bbb%を組み込みたいです。
%aa%bbb%%では駄目でした。
どうすれば出来ますか?


94 :名無しさん@お腹いっぱい。:2009/06/01(月) 15:57:15 ID:nMoGzHYT0
「%aaa%」と書いた場合、
 ・コマンド内は、変数に格納された値
 ・式や関数の中では、%〜%を展開した文字列が名前となる変数
となるけど、
「組み込みたい」の意味が分からないから具体例で。

95 :名無しさん@お腹いっぱい。:2009/06/01(月) 16:27:57 ID:5kiaGP5n0
よくわからんが多分 Transform,Deref, String あたりではないかとエスパーしてみる

96 :名無しさん@お腹いっぱい。:2009/06/01(月) 16:33:11 ID:9Rwj7uYk0
流行るページを参考にしたのですが、わからない箇所があるので教えてください

Ctrl-x,Ctrl-sで保存(Ctrl-S)の実行、Ctrl-sで検索(Ctrl-f)の実行をしたいと思っています
ところが下記のスクリプトでCtrl-x,Ctrl-sを実行すると、Ctrl-fが送られてしまいます

このように置き換え対象のキーも別のキーに置き換えてしまっている場合、どのように対処すれば意図した動きになるのでしょうか?

^x::
    Transform,CtrlS,Chr,19
    Input,InputChar,C I M L1 T1,{ESC}
    If InputChar=%CtrlS%
        Send,^s
Return

^s::
    Send,^f
Return

97 :名無しさん@お腹いっぱい。:2009/06/01(月) 17:02:21 ID:nMoGzHYT0
いろいろやり方はあるけど、^s:: のところでA_PriorHotkeyで分岐すりゃいいんじゃないの

^x::Return
$^s::
 If A_PriorHotkey = ^x
  Send, ^s
 Else
  Send, ^F
 Return

98 :名無しさん@お腹いっぱい。:2009/06/01(月) 17:36:14 ID:9Rwj7uYk0
>>97
試してみたところ意図した動きになりました。感謝です!
^x::Returnでキーの動きを無効化しても組み込み変数に値は入るんですね
勉強になりました。ありがとうございました><
2ストロークで設定しているキーバインドが多く、書き換えが面倒なので、
勉強もかねて関数をつくってやってみたいと思います

99 :名無しさん@お腹いっぱい。:2009/06/02(火) 18:58:42 ID:xwgWw2A40
対象窓で、文字入力中or変換中なら1を、変換候補窓が出ているなら2を、それ以外なら 0を返す。
ATOK2007とMS-IME8.1で確認。クラス名がバージョンの数値違いだけなら別verでも通用するかも。

IME_IsConverting(winTitle="A") {
 hwnd:=WinExist(winTitle)
 WinGet, pid, PID, ahk_id %hwnd%
 tmm:=A_TitleMatchMode
 SetTitleMatchMode, RegEx
 ret := WinExist("ahk_class ATOK\d+Cand|imejpstCandList\d+ ahk_pid " pid) ? 2
  : WinExist("ahk_class ATOK\d+CompStr|imejpstcnv\d+ ahk_pid " pid) ? 1
  : 0
 SetTitleMatchMode, %tmm%
 return ret
}


100 :名無しさん@お腹いっぱい。:2009/06/02(火) 19:44:30 ID:rJZ7jJ5w0
>>99
昔から何度も質問に出てましたよね。IMEで変換中かどうかを知る方法。
ついに実現できる人がいたとは。
さっそく試してみます。

101 :名無しさん@お腹いっぱい。:2009/06/02(火) 19:56:13 ID:osRS2DeA0
>>99
おおーありがとう
これがあったら無変換にIMEOFF、変換にONにする関数割り当てられる

102 :名無しさん@お腹いっぱい。:2009/06/02(火) 20:18:55 ID:ftcLo5Gk0
けっこう既出な気がするけど
他のIMEでもウィンドウクラス一覧表示するスクリプト書けば怪しいクラス名が分かる
注意する点はWinActiveで判断するんじゃなくExistで判断するところ

103 :名無しさん@お腹いっぱい。:2009/06/02(火) 20:23:03 ID:xwgWw2A40
BOOLを返さないのに Is〜 とは変な名前だったorz。好きに替えてくらはい。
自分が使ってるIMEしか調査してないから、
SKK、VJE、WXG、松茸、その他IMEへの対応は出来ないので自分で追加してくれ。

あああ ← 入力窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
 ̄ ̄ ̄

|愛   | ← 候補窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
|亜依  |
|あい  .|
|藍   |
| :   .|
 ̄ ̄ ̄

104 :名無しさん@お腹いっぱい。:2009/06/02(火) 20:30:06 ID:xwgWw2A40
>>102
おっしゃるとおりで

#IfWinNotExist, ahk_class 入力窓|変換窓
vk1Csc079::IME_Set(!IME_Get())

とかのほうが楽ではある

105 :名無しさん@お腹いっぱい。:2009/06/02(火) 21:37:03 ID:Kr4mD/Ke0
MS-IME2000までなら
WinExist("ahk_class msime")
でいけそう

106 :名無しさん@お腹いっぱい。:2009/06/02(火) 22:31:33 ID:P6oxe9UG0
autohotkey以外の任意のウィンドウをタスクバーから消す方法ってありませんか
toolwindow作ってSetParentすればいいのかなと思ったけど同じプロセスじゃないとできないみたいで

107 :名無しさん@お腹いっぱい。:2009/06/03(水) 09:37:26 ID:fHhPIlcJ0
ここのTrayIcon.ahkの中にあるTaskButton.ahk
http://www.autohotkey.com/forum/topic17314.html

108 :名無しさん@お腹いっぱい。:2009/06/03(水) 09:43:09 ID:cMFaAOnD0
実行中のスクリプトのファイル名を取得する方法を教えてください。
実行中と同じスクリプト名のiniファイル読み込みにしようしたいです。

109 :名無しさん@お腹いっぱい。:2009/06/03(水) 09:58:06 ID:fHhPIlcJ0
組み込み変数 A_Script○○○

110 :名無しさん@お腹いっぱい。:2009/06/03(水) 11:03:28 ID:cMFaAOnD0
>>109
ありがとう。

111 :名無しさん@お腹いっぱい。:2009/06/04(木) 00:17:18 ID:QQ0YUUDy0
任意のアプリケーションのメニューバーを非表示にする方法ってあります?
AU3_Spy.exe で調べてもメニューバーの Class_NN なんかが判らなくて…。

112 :名無しさん@お腹いっぱい。:2009/06/04(木) 01:01:23 ID:duXuCFzc0
クラスが取れないのは昔ながらのメニュー(メモ帳、電卓など、Ahkもそう)、非クライアント領域と言われているところ。

^F12::
 hwnd := WinExist("A")
 hMenu := DllCall("GetMenu", "UInt", hwnd, "UInt")
 If (hMenu) {
  DllCall("SetMenu", "UInt", hwnd, "UInt", 0)
  Sleep, 2000
  DllCall("SetMenu", "UInt", hwnd, "Uint", hMenu)
 } else {
  MsgBox, Menu not found
 }
 return

ttp://msdn.microsoft.com/ja-jp/library/cc364679.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc411047.aspx

113 :名無しさん@お腹いっぱい。:2009/06/04(木) 01:16:22 ID:6AUpOLN+0
処理が終わるまでの間を進歩状況を表示させたいんだけど
Gui,Add,Progress見つけたけどできそうなのか使い方がさっぱりわからなかった

114 :名無しさん@お腹いっぱい。:2009/06/04(木) 01:49:52 ID:QQ0YUUDy0
>>112
おおお、ありがとうございます!助かりました

115 :名無しさん@お腹いっぱい。:2009/06/04(木) 08:17:20 ID:SXDlYEUH0
>>113
ttp://www.autohotkey.com/docs/commands/GuiControls.htm#Progress

Progress, R0-200 W400 H70 Hide
Progress, Show
Loop, 200
Progress, %A_Index%, Number:%A_Index%, Counting..., Title
Progress, Off

Gui, Add, Progress, W300 h10 cBlue vMyProgress
Gui, Add, Button, Default, Start
Gui, Show
return

ButtonStart:
Loop, 300
GuiControl,, MyProgress, %A_Index%
return


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

117 :名無しさん@お腹いっぱい。:2009/06/04(木) 11:24:00 ID:39eHpjNw0
>>116
http://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 :名無しさん@お腹いっぱい。:2009/06/04(木) 15:38:47 ID:dyra48CT0
>>117
助かりました。ありがとうございました。

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

141 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/06/06(土) 19:44:21 ID:nz9UkNk/0
先頭にデリミタ。
GuiControlの頁を要再読。

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

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

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

ご教授願います。。。

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

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

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

って意味じゃなかろうか

148 :名無しさん@お腹いっぱい。: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:2009/06/07(日) 16:40:24 ID:6gUtZr/R0
>>146
質問がわかりにくくてすいませんしたっ_| ̄|○

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

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

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

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

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

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

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

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

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

156 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/06/08(月) 17:01:01 ID:NOGmzyJY0
AutoHotkey_L 使えば楽

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

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

160 :名無しさん@お腹いっぱい。: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 :名無しさん@お腹いっぱい。:2009/06/08(月) 19:50:53 ID:WA7XkMG90
>>159
なるほど
ありがとうございました

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

355 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)