09/06/20 19:19:19 Z+MpXoRr0
ID:yGrRFejp0 = ID:yzkbbsVb0 だろ
264でヒントもらっといて 265みたいな再質問ってあり得ない
質問するなとはいわんが答えてもらった内容をちゃんと噛み砕いて飲み込む努力しろよ
調べる能力つけないとこのソフト使うのは難しいぞ
270:名無しさん@お腹いっぱい。
09/06/20 19:58:07 Kh84drTR0
多少なりとも前進はしてるようだけど、調べる気がないのはちょっとな
271:名無しさん@お腹いっぱい。
09/06/20 23:35:06 yzkbbsVb0
そんな風にみえちゃんだろうけど相当検索し調べその結果ですw
調べ方が悪いのかしら・・・
272:名無しさん@お腹いっぱい。
09/06/20 23:57:07 LyIyydqb0
調べ方も頭も態度も悪い
273:名無しさん@お腹いっぱい。
09/06/21 01:19:42 LY2SRQDx0
hoge.ahkが起動しているかを別のahkから調べる方法はありますか?
プロセスがあるかで調べようと思ったのですがどれもAutoHotkey.exeで調べられませんでした
274:名無しさん@お腹いっぱい。
09/06/21 01:34:59 LCii9rhx0
>>273
もらいもの
DetectHiddenWindows, On
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
WinGetTitle, this_title, ahk_id %this_id%
msgbox, %this_title%
}
それか、AutoHotKey.exeをhoge.exeにリネームコピーしてhoge.ahkをhoge.exeに送れば問題なし。
275:名無しさん@お腹いっぱい。
09/06/21 01:38:33 gJSSJElb0
SetTitleMatchMode, 2
#SingleInstance, force
DetectHiddenWindows, On
WinWait, \hoge.ahk - AutoHotkey, , 0.1
DetectHiddenWindows, Off
msgbox, % Errorlevel ? "ないよ" : "あるよ"
276:名無しさん@お腹いっぱい。
09/06/21 01:46:22 ylbkYADc0
コマンドラインを読む関数がどこかになかったっけ?
それ使えばいいような
277:名無しさん@お腹いっぱい。
09/06/21 01:53:22 LY2SRQDx0
>>274-275
出来ましたありがとうございます
278:名無しさん@お腹いっぱい。
09/06/21 03:28:19 LY2SRQDx0
すみませんAHK連携絡みでもう二つ質問させてください。
あるAHKから起動中の別のAHK内の指定処理(ラベルなり関数)を実行させる最適な方法は何でしょうか?
起動中のAHK間の変数の受け渡しはファイル書き出し、読み込み以外で方法ありますか?
279:名無しさん@お腹いっぱい。
09/06/21 04:22:12 gUuxFMOa0
隠し(じゃなくてもいいけど)GUI作って、ボタンを押す。パラメタ渡しは隠しGUIのEditとかに書く
280:名無しさん@お腹いっぱい。
09/06/21 05:14:16 gJSSJElb0
関数ならAutoHotkeyをインストールしているディレクトリにLibフォルダを作って
そこに入れておけばいいんじゃないかな
変数の受け渡しはクリップボードを軽油する方法もある。
一定間隔でクリップボードを監視し、特定の文字列から始まるなら
変数の受け渡しと見なし、変数に置き換えてやるとか。
281:名無しさん@お腹いっぱい。
09/06/21 05:15:29 gJSSJElb0
;例えば特定の文字列を ahk9999999 とし、
;クリップボードコピーする形式を ahk9999999,変数名,値 というにようにする。
;下記スクリプトを実行中に ahk9999999,hoge,5 をクリップボードにコピーすると
;msgboxに hoge = 5 と表示。
#Persistent
#SingleInstance, force
hoge=1 ; テストで変化を確認するために初期値を 1 にしておく
SetTimer, ClipBoardCheck, 100
return
ClipBoardCheck:
if(Instr(Clipboard, "ahk9999999")=1){
loop, parse, Clipboard, `,
{
if A_Index=2
hogehoge=%A_LoopField%
else if A_Index=3
%hogehoge%=%A_LoopField%
}
Clipboard= ; クリップボードを空にする
msgbox, %hogehoge% = %hoge%
}
return
;変数を渡す方のスクリプトはClipboardの内容のバックアップしておき、
;Clipboardが空になったらバックアップしていたのを戻すようするといいかも。
282:名無しさん@お腹いっぱい。
09/06/21 15:21:49 ZMhX9OF60
>>279
仕組みは分かったのですがやり方が分かりません(´;ω;`)
よかったら簡単な例を教えてください
試しにこういうふうに作ったのですがGUIがHideだからなのかクリックしてくれません
操作する側に
ControlClick, Button1, HideControl
操作される側に
GUI, Add, Button,,Exit
Gui, Show, Hide, HideControl
return
ButtonExit:
ExitApp
>>280-281
なるほどクリップボードですか
接頭辞を決めておくというのは思いつきませんでした
283:名無しさん@お腹いっぱい。
09/06/21 16:13:59 gUuxFMOa0
>>282
操作側で DetectHiddenWindows,On
284:名無しさん@お腹いっぱい。
09/06/21 16:33:39 16cGC6mhP
受け渡しなら、OnMessageとPostMessageでしょjk
英語公式のリファレンスに詳しいサンプルがある
285:名無しさん@お腹いっぱい。
09/06/21 16:43:17 ZMhX9OF60
>>283
早速試しましたが変化無しでした
286:名無しさん@お腹いっぱい。
09/06/21 17:36:28 gUuxFMOa0
>>284
まぁそれが普通だと思うけど、GUIのボタン押すのもあまり変わらないと思う
---- server.ahk ----
Gui, Add, Button,gSub1
Gui, Add, Edit, vParam
Gui, Show,Hide, HiddenWindow
Return
Sub1:
Gui, Submit, NoHide
MsgBox, % Param
Return
---- client.ahk ----
Gui, Add, Edit, vParam
Gui, Add, Button,,Go
Gui, Show
Return
ButtonGo:
Gui, Submit, NoHide
DetectHiddenWindows, On
ControlSetText,Edit1,% Param, HiddenWindow ahk_class AutoHotkeyGUI
ControlClick,Button1,HiddenWindow ahk_class AutoHotkeyGUI
Return
287:名無しさん@お腹いっぱい。
09/06/21 17:56:23 16cGC6mhP
じゃあ、先に普通のやり方教えてあげなよw
余計なGUIリソース消費するし、コードの可読性や保守性を考えるとあまり一般的な解決法とも思えない
288:名無しさん@お腹いっぱい。
09/06/21 18:09:32 ZMhX9OF60
>>286
おー無事出来ました
どうもありがとうございました
>>284
やっぱりそっちのほうがいいんですかね
でも英語読めないので諦めますw
289:名無しさん@お腹いっぱい。
09/06/21 18:33:01 gUuxFMOa0
普通のアプリならそうすると思うけど、色々覚えなきゃいけないことが多いから
AHKのコマンドだけで出来る事に意義はあると思うよ。
リソースったってたいしたことないよ。
290:名無しさん@お腹いっぱい。
09/06/21 18:58:11 16cGC6mhP
まあ、人それぞれだから好きにすればいい
一応OnMessageだってahkのコマンドだし、覚えるのが大変なのはGUI絡みだって同じだと思うけどね
文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む
--- receiver.ahk ---
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg)
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}
--- sender.ahk ---
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return
291:名無しさん@お腹いっぱい。
09/06/21 22:46:25 q3qyIN4s0
人それぞれって言われたらそれまでだが、GUIはちょっとな
AHKのGUI関連って無駄にイベントラベル増えるからコードぐちゃぐちゃになるし。
自分だったら窓表示する必要があってもGUIコマンドは可能な限り使いたくないな。
>>276
管理人さんのマウスジェスチャ2の中だな。hh.exeなんかからでもchmファイルのフルパス抜けるし便利だよ
GetCommandLine(pid=0,WinTitle="A"){
if (!pid)
WinGet,pid,PID,%WinTitle%
; kernel32\GetCommandLineA のアドレスへのポインタを設定?
ptr:=(NumGet(DllCall("kernel32.dll\GetProcAddress",UInt,DllCall("kernel32.dll\GetModuleHandle",Str,"Kernel32"),Str ,"GetCommandLineA",UInt)+1))
; プロセスのハンドルを取り出す
hp:=DllCall("kernel32.dll\OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,UInt)
VarSetCapacity(res,1024)
; GetCommandLineのメモリアドレスを取得してからコマンドライン文字列を取得
DllCall("kernel32.dll\ReadProcessMemory" ,UInt ,hp ,UInt ,ptr, UIntP,addr ,UInt ,4 ,UInt ,0)
DllCall("kernel32.dll\ReadProcessMemory" ,UInt,hp ,UInt,addr ,Str,res ,UInt,1024 ,UInt,0)
DllCall("psapi\CloseProcess", UInt,hp)
return res
}
292:名無しさん@お腹いっぱい。
09/06/21 23:48:05 ZMhX9OF60
>>290
これはスマートでいいですね
使わせてもらいます
293:名無しさん@お腹いっぱい。
09/06/22 02:55:22 9141GuF00
>>200
この方法ではNumpad0,Numpad6,Numpad1に割り当てできなくなります。
何とかなりませんでしょうか?
294:名無しさん@お腹いっぱい。
09/06/22 03:00:20 2F0zdoiY0
キーを押し続けている間連続で加速しながら処理
プレイヤーのシーク操作やボリューム操作など
Left::
sleepTime := 80 ;初期待ち時間
While GetKeyState("Left","p")
{
send, {Left} ;任意処理
sleep, %sleepTime%
sleepTime := sleepTime > 20 ? sleepTime * 0.95 : 20 ;加速
}
295:名無しさん@お腹いっぱい。
09/06/22 22:47:42 Qq8KUG5Y0
AHK使い始めたばかりなんですが、ウィンドウタイトルの無いウィンドウを
操作するのはどうしたらいいでしょうか?
具体的にはURLリンク(novolization.hp.infoseek.co.jp) のMovieOperatorを
操作したいんですが。自分ではウインドウタイトルが無いとマウスで絶対座標指定して
いちいちクリックとかしか考え付かないです。
ちなみに前はUWSC使ってました。こいつでもウィンドウタイトルが無いとどうにもならなかったんで
ツール変えてみようかと思い立ったわけなんですが…
296:名無しさん@お腹いっぱい。
09/06/22 23:08:50 HdFC8Trn0
ウィンドウクラスとプロセス名(PID)で絞り込みかなl
Process, Exist, MovieOperator.exe
IfWinExist,ahk_class #32770 ahk_pid %ErrorLevel%
{
; ここにウィンドウ操作
ControlGetText, text, ComboBox1
MsgBox, % text
}
297:名無しさん@お腹いっぱい。
09/06/22 23:35:44 Dlle25nB0
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
JPG2AVI
ahk_class Afx:00400000:b:00010011:00000006:0594124D
AU3_Spy.exeで見ると普通にウィンドウタイトル取れてるみたいだが。
これで操作できないんか?
298:名無しさん@お腹いっぱい。
09/06/22 23:40:34 Dlle25nB0
ってスマソ、思いっきりソフト間違えとる。
299:名無しさん@お腹いっぱい。
09/06/22 23:41:31 Jnu5lPCA0
JPG2AVI じゃなくて MovieOperator じゃないの?
ウチの環境でMovieOperatorをAU_Spy.exeで取得してみたけど
タイトル無しの ahk_class #32770 だったよ
300:名無しさん@お腹いっぱい。
09/06/22 23:57:31 Qq8KUG5Y0
>>296
ありがとうございます。PIDで取れました。
これで色々操作するめどが立ちます。
301:名無しさん@お腹いっぱい。
09/06/23 00:15:03 ZOyW9r5y0
先の質問とは関係ないですがエディタにサクラエディタ使ってる人居ないですかね?
キーワード定義既存のがあったら欲しいです…
302:名無しさん@お腹いっぱい。
09/06/23 01:08:54 K2VHacbK0
>>301
昔どこかで拾ったんだよなあ。再びググったが見付からず。
黙ってあげてみるが、明日の昼には消す。
URLリンク(aaabbbccc.s6.x-beat.com)
303:名無しさん@お腹いっぱい。
09/06/23 02:46:42 ZOyW9r5y0
>>302
ありがとう。頂きました。
304:名無しさん@お腹いっぱい。
09/06/23 13:43:55 WplNcnsp0
コントロールのウィンドウハンドルからClassNNを取得するにはどうすればいいんでしょうか
305:名無しさん@お腹いっぱい。
09/06/23 15:41:53 4VER+fnU0
最近使い始めたばかりなのですが URLリンク(hp.vector.co.jp)
このRespというソフトとの連携がうまくいきません
IfWinExist, RESp
{
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
}
Run, Respのぱす
WinWait,Resp
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
ソフトが立ち上がっている場合はうまくいくのですが立ち上がってからの検索ワードが渡りません
よろしくご教授のほどお願いします。
306:名無しさん@お腹いっぱい。
09/06/23 15:58:32 uY1EeqKp0
うまく動かないときは、適当にスリープを噛ませると、動く場合がある
検証してないけど↓はサンプル。
ControlFocus, TButtonEdit1
sleep,100
ControlSetText , TButtonEdit1, %1%
sleep,100
Send, {ENTER}
動けば、徐々にsleepの値を小さくしていけば、おk
307:名無しさん@お腹いっぱい。
09/06/23 16:19:32 4VER+fnU0
Sleepかましてやってみたんですが10秒 5秒 1秒
でも
Resp起動→スクリプト→検索はうまくいくのですが
スクリプト→Resp起動→検索は起動はするのですが検索ワードがわたりません
二度手間になりますが起動はするのでこのまま使用して
また時間のあるときにいじることにします。
ありがとうございました。
308:名無しさん@お腹いっぱい。
09/06/23 16:42:43 63qINAR80
× WinWait,Resp
○ WinWait,RESp
309:名無しさん@お腹いっぱい。
09/06/23 18:31:10 4VER+fnU0
いけました。大文字と小文字で違うんですね。勉強になりました。
RESPで検索=D:\~\AutoHotkey.exe "D:\~\RESp\Resp_SelecitonSearch.ahk" "$TEXT$LINK"
Janeからこんな感じで使ってます
ありがとうございました。
310:名無しさん@お腹いっぱい。
09/06/27 16:12:17 kilshKVq0
アクティブウィンドウの枠に色をつけたいです。
Progress / SplashImage使えばいいんですかね?
方法を教えてください。
311:名無しさん@お腹いっぱい。
09/06/27 16:19:28 TU1fJsoo0
アクティブウインドウの大きさを調べて、
それより少し大きいGUIを作って、背景の色を変えればいいだろう
そのやり方を教えてってことなら、勉強するしかない
312:名無しさん@お腹いっぱい。
09/06/27 20:43:29 mjW9CgOJ0
画面のプロパティで出来るだろ
313:名無しさん@お腹いっぱい。
09/06/28 02:43:19 H2leh/Na0
下のように設定するとAlt+AでもHomeキーが押されたことにるんだけど
Alt+AのときにはCtrl+Aが押されたことにするにはどうすればいいですか?
^A::send {Home}
!A::send ^a
314:名無しさん@お腹いっぱい。
09/06/28 03:18:30 gb9fK4qR0
>>313
>>4 A7
315:名無しさん@お腹いっぱい。
09/06/28 04:45:22 H2leh/Na0
>>314
サンキュ。うまくいきました
316:名無しさん@お腹いっぱい。
09/06/29 22:45:37 e/W0qJft0
ahkでFizz-Buzz問題の解答ください
URLリンク(www.aoky.net)
317:名無しさん@お腹いっぱい。
09/06/29 23:09:18 roKbqfx60
読んでみたけど、これってフィクションだよね?
ド素人の自分でもわかるのにプログラマ志望の人が分からないとか・・・
318:名無しさん@お腹いっぱい。
09/06/29 23:57:56 yHCDc8410
loop,100{
tr++
fi++
tr:=tr=4 ? 1:tr=3 ? "Fizz":tr
fi:=fi=6 ? 1:fi=5 ? "Buzz":fi
valu:=tr="Fizz" && fi="Buzz" ? "FizzBuzz" : tr="Fizz" ? "Fizz" : fi="Buzz" ? "Buzz" : A_Index
MsgBox,%valu%
}
Return
こんなんでいいのかな?
319:名無しさん@お腹いっぱい。
09/06/29 23:58:11 CtyaNjiT0
URLリンク(rosettacode.org)
320:名無しさん@お腹いっぱい。
09/06/30 00:03:39 j31Q4+5v0
>>318
わかりづらいから駄目。
と言ってみる(´-ω-`)
321:名無しさん@お腹いっぱい。
09/06/30 00:13:58 T80ICC0z0
if mod(a_index,3)=0
{うんたら}
if mod(a_index,5)=0
{かんたら}
で適当に分岐させればいいんじゃないの
322:名無しさん@お腹いっぱい。
09/06/30 00:17:09 p76oAck30
こんな感じか
Loop,100{
a := (!Mod(A_Index,3) ? "Fizz" : "") . (!Mod(A_Index,5) ? "Buzz" : "")
msg .= (!(a) ? A_Index : a) . "`n"
}
msgbox %msg%
>>317
プログラマ「志望」なら案外そんなもん。
趣味でフリーソフト作ってるような人ばっか応募してくるわけじゃない。
シーケンスの基本概念なんて実務でもやってなきゃ案外頭に入ってないもんだよ。
323:名無しさん@お腹いっぱい。
09/06/30 00:18:37 MqDPxJU80
こんなの?
Loop,100
Fizz:=Mod(A_index,3) , Buzz:=Mod(A_index,5) , output.= (Fizz = 0 && Buzz = 0) ? "FizzBuzz'n" : Fizz = 0 ? "Fizz'n" : Buzz = 0 ? "Buzz'n" : A_index "'n"
MsgBox, %output%
output =
324:名無しさん@お腹いっぱい。
09/06/30 00:22:04 T80ICC0z0
みんな可読性わるすぎw
大括弧だけで1行
1命令1行
を徹底してる俺は異端なのか・・・
325:名無しさん@お腹いっぱい。
09/06/30 00:35:09 j31Q4+5v0
MsgBox, 1
MsgBox, 2
MsgBox, Fizz
MsgBox, 4
MsgBox, Buzz
MsgBox, 6
326:名無しさん@お腹いっぱい。
09/06/30 00:36:33 rzfPOy180
俺の頭の悪さに絶句・・・
Loop 100
{
outLine := A_INDEX
Loop 3
{
check := outLine
if A_INDEX = 1
subVal = 15
else if A_INDEX = 2
subVal = 5
else if A_INDEX = 3
subVal = 3
Loop
{
check := check - subVal
if check < 0
break
if check = 0
{
if subVal = 15
outLine = FizzBuzz
else if subVal = 5
outLine = Buzz
else if subVal = 3
outLine = Fizz
break
}
}
}
FileAppend, % outLine . "`n", %A_ScriptDir%\FizzBuzz.txt
}
327:名無しさん@お腹いっぱい。
09/06/30 00:40:37 xs+OUAE+0
Loop,100
{
If Mod(A_Index,3)=0
value=Fizz
If Mod(A_Index,5)=0
value=%value%Buzz
If value=
value=%A_Index%
Msgbox,%value%
value=
}
これで最後にして寝よう。なかなかおもしろかったー。
328:名無しさん@お腹いっぱい。
09/06/30 00:47:38 j31Q4+5v0
まあ、基本形はこれで
Loop,100{
if !Mod(A_index,15)
MsgBox, FizzBuzz
else if !Mod(A_index,3)
MsgBox, Fizz
else if !Mod(A_index,5)
MsgBox, Buzz
else
MsgBox, % A_index
}
329:名無しさん@お腹いっぱい。
09/06/30 00:48:16 EZ0ubY2h0
考え方としては
3で割り切れるなら[Fizz]
5で割り切れるなら[Buzz]と表示
どちらでも割り切れないなら数字を表示
改行
だな
330:名無しさん@お腹いっぱい。
09/06/30 00:51:54 T80ICC0z0
>>319
↓懐かしすぎて涙が出た
FOR A = 1 TO 100
IF A MOD 15 = 0 THEN
PRINT "FizzBuzz"
ELSE IF A MOD 3 = 0 THEN
PRINT "Fizz"
ELSE IF A MOD 5 = 0 THEN
PRINT "Buzz"
ELSE
PRINT A
END IF
NEXT A
↓Perl。さすが変態
sub f { $_[0] % $_[1] ? '' : $_[2] }
print f($_, 3, 'Fizz') . f($_, 5, 'Buzz') || $_, "\n"
foreach 1 .. 100;
331:名無しさん@お腹いっぱい。
09/06/30 11:22:41 ZWlKlVyy0
SHIFT+カーソルの範囲選択を
SHIFT+無変換+IJKLでやる書き方って出来る?
三つのコンビネーションって指定できないっぽいんだけど
332:名無しさん@お腹いっぱい。
09/06/30 11:45:52 z7lSMuFpP
通常のカーソル移動も兼ねて良いのなら
~SC7B & i:: Send, {Blind}{Up}
~SC7B & j:: Send, {Blind}{Left}
~SC7B & k:: Send, {Blind}{Down}
~SC7B & l:: Send, {Blind}{Right}
333:名無しさん@お腹いっぱい。
09/06/30 16:39:04 gVhvA3S20
今更ながら>>63と>>76-77を試したんですが、これすごい良いですね。
自分は単なるリマップとマクロにしか使ってなかったので、こんな事も
出来るのかと驚きました。
334:名無しさん@お腹いっぱい。
09/06/30 21:34:48 WurnbeTc0
>>332
うまくいった。ありがとう。
キーボード眺めてたら変換キーが丸々あいてるんだよな。
JKでタスク切り替え、残りのA-Zをランチャなんかに割り当てたら
めちゃくちゃ便利そうな気がしてきた。
335:名無しさん@お腹いっぱい。
09/06/30 23:43:51 hpTcuIjN0
ひらがなキーを押したときの動作を key stroke and script info で見てみたら
ひらがなキーがなぜか押上されることが解りました
この不具合?を解消するにはどうすればいいのでしょうか
336:名無しさん@お腹いっぱい。
09/07/01 02:28:14 JH7gYY9R0
∧∧∧∧∧∧∧∧∧∧ ___/ ̄ ̄ ̄\
< ┌┐ ┌──┐ > / / / ̄ ̄ ̄ ̄\
< ││ │┌─┐│ > /  ̄ \
< ││ └┘ // >/ □ \
< ││ // >// ̄~\ / ̄ ̄ ̄\ |
< ││  ̄ >|//\ヽ ∨〃/\ \ /\
< ││ _ >//(・) \ゞ/ /(・) 〉 | | ∩|
< ││ // >| \_/ノ \_/ ノ し|: | ∪|
< ││ / | >l:::::::::∠~ ⌒ | \/
< ││ //|| >|:::::::::r~~‐、ヽ / /
< ││  ̄ || >|:::::::::)jjjjjjjjjjjヽヽ / /
<  ̄  ̄ >|:::::::::|,, || / /
<. ロロ┌┐┌┐┌┐ >!:::: ヽiiiiiiiii// / /
< ┌┘│││││ >ヽ ヽ~~"/ /
<  ̄ ̄ └┘││ > ヽ、__,,,_∠__/
< ┌┐┌┐ ││ > _]::::::: [_
< ││││ // > ̄~ ゙ ̄ ̄ ̄ ̄ヽ
< ││││  ̄ > ,~ヽ
< └┘└┘ > ~ ノ ̄\
< [] [] > ’ノ⌒⌒⌒⌒〉〉
∨∨∨∨∨∨∨∨∨∨∨ { Y∫
337:名無しさん@お腹いっぱい。
09/07/01 11:19:06 qaOF2plA0
2バイトコードの処理方法で質問です。
TV録画用途のPCで、テレビ番組名をINIファイルのセクションに割り当てて、
いろいろ自動処理しています。
INIコマンドで、セクションに使ってはいけない文字(たとえば括弧「[」「]」)
が入ると、INI自体は書けるものの、同一のセクションに書いてくれなかったり、
セクションを正しく読めないなどの不具合が出ます。
とりあえず、使ってはいけない特定の文字をアンダーバーに置換してみました。
name := RegExReplace(name,"(\.|\*|\?|\+|\[|\]|\{|\}|\||\(|\)|\^|^$|\\)","_")
成功
前 [道徳ドキュメント[再]]
後 [道徳ドキュメント_再_]
失敗1
前 [スパイスTVどーも・キニナル!]
後 [スパイスTVど\も・キニナル!]
失敗2
前 [暴れん坊将軍[再]]
後 [棒れん坊将軍_再_]
これって2バイトコードが1バイトずつ処理されてるのが原因っぽいですね。
2バイトコード部分に混入する文字は無視し、1バイト部分だけ置換したいのですが、
なにかうまい回避策はないでしょうか。
338:名無しさん@お腹いっぱい。
09/07/01 11:49:08 qJNMhI6B0
>>337
マルチバイトの1バイト目の文字コードは 0x80~0x9F 0xE0~0xFC の範囲のはずなので
(?<=^|[^\x80-\x9F\xE0-\xFC])
で弾けると思う
>>335
OSやAHKのバージョンも書かずにそんなこと言われても答えられるやつはいないだろ。
マジレスするとKeyHistory まわりの問題は環境依存の可能性が高い。
(OS側が返してくる値自体が問題なのでAHK側でどうにかするのはたぶん無理)
現実的な解決策としてはキーボード変えるとかしかないと思われ
339:名無しさん@お腹いっぱい。
09/07/01 11:52:56 ll+32tHk0
>>1の
駄目文字微対策版
って消えてない?サイトに繋がらない
>>337
RegExReplaceじゃなくて
流行らせるページのBREGEXP.ahkを使えばいけると思う
340:名無しさん@お腹いっぱい。
09/07/02 11:36:06 i54unxpm0
しつもーん。
自分で作成したGUIのウィンドウを
WinSetのTransparentで半透明にしようとすると透過度の数値に関わらずウィンドウが消えるけど、バグ?
341:名無しさん@お腹いっぱい。
09/07/02 12:11:48 rnkVZ9Ym0
そんな事起きた事がない
342:名無しさん@お腹いっぱい。
09/07/02 12:14:52 i54unxpm0
↑
だけど、いろいろ実験したら、半分自己解決。
一定サイズ以上のGUIウィンドウを、半透明にしようとすると、ウィンドウが消えるみたい。
たとえば、30000×10000のウィンドウを半透明にしようとすると消える。
ウィンドウサイズが超でかいのを半透明にするとすごく重そうだしそれを防止するための処理が組まれてるのかな?
回避方法はないだろうか。。。。
343:名無しさん@お腹いっぱい。
09/07/02 12:20:25 i54unxpm0
ちょっと極端な数値を書いたけど、
5000×2000のウィンドウでもダメみたい。
というか、マルチモニタ環境だけかもしれないけど、
挙動がちょっとおかしい。
5000×2000のGUIウィンドウを半透明にしようとすると
なぜかプライマリモニタにはウィンドウが表示されず、セカンダリにだけ表示される。
セカンダリにウィンドウが完全に移動したわけではなく、
プライマリとセカンダリの両方にウィンドウがまたがっているはずなのに、
プライマリの部分だけが表示されない。
マルチモニタ環境用にちょっとでかいウィンドウを使っていろいろやりたいのだけれど、
想定されていないバグってしまうサイズなのかな?。。。。
344:名無しさん@お腹いっぱい。
09/07/02 13:25:08 YojB3hE5P
ウチは6000x6000くらいはOKだったな
というか、ウィンドウスタイルでWS_EX_TRANSPARENTを指定してるだけだし
AutoHotkeyのバグではないと思うが
そもそも透明にする必要性があるのか分からんし、回避方法は勝手に探求してくれ
345:名無しさん@お腹いっぱい。
09/07/02 15:07:53 0ufGIgHi0
DOSの
%1
%~d1
%~p1
%~n1
%~x1
%~s1
のようなコマンドはありますか?
346:名無しさん@お腹いっぱい。
09/07/02 15:18:55 odzNiaBs0
えっ
347:名無しさん@お腹いっぱい。
09/07/02 15:32:24 6MEA84T00
ない
文字列操作、正規表現ライブラリ駆使して頑張れ
348:名無しさん@お腹いっぱい。
09/07/02 15:38:42 LzARIfnI0
>>345
コマンドラインからの引数で、なにかを利用したいなら
%1%
%2%
%3%
%4%
・・・
で取れる。使い方はDOSの%1と同様。
ファイル名に含まれる各種情報を取り出したいなら、
URLリンク(lukewarm.s101.xrea.com)
SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]
>InputVar 分解するファイルパスを格納した変数名
>OutFileName フォルダパスを除いたファイル名を格納する変数名フォルダパスのみの場合は、空になる
>OutDir フォルダパス(最後の「\」を含まない)を格納する変数名
>InputVarがファイル名のみの場合は、空になる。
>OutExtension ファイルの拡張子(「.」は含まない)を格納する変数名
>OutNameNoExt 拡張子を除いた名前部分を格納する変数名フォルダパスのみの場合は、空になる
>OutDrive ドライブ文字(「:」付き)やネットワーク上のパスのマシン名を格納する変数名 InputVarが相対パスなどの場合は、空になる。
349:名無しさん@お腹いっぱい。
09/07/02 15:50:24 0ufGIgHi0
>>348
ありがとうございます。
350:名無しさん@お腹いっぱい。
09/07/02 17:05:05 YojB3hE5P
ダメ文字があるので、BREGEXP使ってごにょごにょした方が確実かと。
>>1の対策版は繋らないね…
351:名無しさん@お腹いっぱい。
09/07/02 18:37:31 0ufGIgHi0
SplitPath, %1%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
で、 %1%,を使えないです。
X:= %1%,
も使えないです。どうすれば使えるようになりますか?
>>350
Batでダメ文字があったので逃げてきたのに・・・
352:名無しさん@お腹いっぱい。
09/07/02 18:42:48 LzARIfnI0
X= %1%
SplitPath, %X%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
でどうよ
353:名無しさん@お腹いっぱい。
09/07/02 18:47:08 LzARIfnI0
おっと間違ったかも
手元のコードを見直したら
X= %1%
SplitPath,X, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
これで動くはず
354:名無しさん@お腹いっぱい。
09/07/02 19:09:24 0ufGIgHi0
>>353
ありがとうございます。動きました。
がんばってみます。
355:名無しさん@お腹いっぱい。
09/07/02 22:17:47 0ufGIgHi0
DOSのSHIFTコマンドの代わりになるようなコマンドありますか?
また、X= %1%
の中の1の部分を
%%y%%として数字を増やしたいのですが出来ません。%%の間に%%を入れることは不可能なんですか?
356:名無しさん@お腹いっぱい。
09/07/02 22:23:21 F+s6QMxA0
演算子を:=にして式にする
X := %y%
357:名無しさん@お腹いっぱい。
09/07/02 22:34:25 qjImDfCp0
;AutoHotkey Help の「command line parameters」をそのままコピペ
Loop, %0% ; For each parameter:
{
param := %A_Index% ; Fetch the contents of the variable whose name is contained in A_Index.
MsgBox, 4,, Parameter number %A_Index% is %param%. Continue?
IfMsgBox, No
break
}
358:名無しさん@お腹いっぱい。
09/07/02 22:41:42 0ufGIgHi0
>>356
>>357
度々すみませんでした。ありがとうございました。
がんばってみます。
359:名無しさん@お腹いっぱい。
09/07/03 05:14:43 c5pAeyeU0
>>335
環境依存ではなく、Windowsの仕様(?)らしい。
URLリンク(lukewarm.s101.xrea.com)
URLリンク(d.hatena.ne.jp)
2番目のリンク先のコメントによると他のキーと違いひらがなキーは Up → Down ということらしいので
(UWSCでキーのOn/Offチェックをしてみたけど、AutoHotkeyのKeyHistoryと同様にOnのままになってた)
ひらがなキーをAutoHotkeyでカスタマイズしたい場合はドライバレベルで別のキーに変更しておく必要があるみたい。
別キーに置き換えるなら他のキーと重複しないF13~F24がいいかも。
ということでひらがなキーをF13に置き換える手順。
AutoHotkeyで任意のキーをF13にリマップする。
例:F12をF13にリマップし、スクリプトを実行させる。
F12::F13
Changekeyを起動する。(Changekeyが無いならググって入手する)
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」、該当するキーは「該当なし」と表示される。
(0x0064 はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると
「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。
「登録」をクリックし、Windowsを再起動する。
リマップ( F12::F13 )を解除する。
360:名無しさん@お腹いっぱい。
09/07/03 19:37:40 RmoLSHNq0
クリップボード内のテキストの中に、機種依存文字がないかチェックする処理って
どうやって書けばいいかな。メール送信前にチェックするのに使いたいと思ってるんだけど。
機種依存文字一文字一文字について、検索処理するのは非効率だと思うんだけど
ほかに何か良い方法ある?
361:名無しさん@お腹いっぱい。
09/07/03 19:53:11 eBItoHy+0
それぞれ(非)存在チェックするしかないと思うが。
If var [not] contains values
で一発じゃないの
362:360
09/07/04 01:39:53 NLnkQJFM0
今、こんな感じに書いてて、処理を呼び出しとります。
m0:
sleep,200
Send,^a
sleep,200
Send,^c
ClipWait
sleep,200
Words = ①,②,③,④,⑤,⑥,⑦,⑧,⑨,⑩,⑪,⑫,⑬,⑭,⑮,⑯,⑰,⑱,⑲,⑳ … (略)
Loop, parse, Words, `,
{
StringGetPos, pos, clipboard, %A_LoopField%
if pos >= 0
MsgBox, %pos%文字目に機種依存文字の%A_LoopField%が使われています。
}
return
>>361
If var [not] contains values を使って書くと、どんな感じになるんでしょう?
363:名無しさん@お腹いっぱい。
09/07/04 02:09:25 NLnkQJFM0
おぉお…機種依存文字じゃない文字が機種依存文字として認識されてしまう…
ムズかしい。
364:名無しさん@お腹いっぱい。
09/07/04 02:33:45 RHUozl570
正規表現か何かで文字コードを指定した方がいいんじゃない?
365:名無しさん@お腹いっぱい。
09/07/04 16:48:06 RdF1EmR40
指定ドライブの空き容量を取得する方法はありますか?
366:名無しさん@お腹いっぱい。
09/07/04 16:52:03 RdF1EmR40
自己解決しました
DriveGetっていうのが用意されてたんですね
無駄にSystemMonitor関数とか探してました
367:名無しさん@お腹いっぱい。
09/07/05 05:31:00 rCPgZ7Wd0
質問よろしいでしょうか?
タイトルバーの中クリックを検出する方法はないでしょうか?
具体的にやりたいことは、タイトルバーの中クリックを押すとウインドウを最小化する機能をつけることです。
他のソフトでもできそうなのですが、
というか同機能のすでにTTBaseのMinimizeプラグインを使っているのですが、
これだと、Office2007系(Excel2007とか)のメニューがバグって最小化できずしかも操作不能になってしまうのです。
その点をカスタマイズしたいのです。
(TTBaseのプラグイン作者はすでにおられないみたいでした)
368:名無しさん@お腹いっぱい。
09/07/05 05:39:38 1ELefC3x0
~MButton::
CoordMode, Mouse, Screen
MouseGetPos,x,y,hwnd
SendMessage, 0x84, 0, x|y<<16,, ahk_id %hwnd% ; WM_NCHITTEST
If (ErrorLevel==2) ; HC_CAPTION
PostMessage, 0x112, 0xF020,,, ahk_id %hwnd% ; WM_SYSCOMMAND / SC_MINIMIZE
Return
369:名無しさん@お腹いっぱい。
09/07/05 07:16:54 rCPgZ7Wd0
>>368
すげええw
WM_NCHITTESTにメッセージ送ったらどこにあるか状態返ってくるんかw
知らんかった。サンクス
参考:WM_NCHITTEST [WinAPI Database for VB Programmer]
URLリンク(www.winapi-database.com)
Excelだと WM_NCHITTEST だと 1(クライアント領域内)が返ってきてうまくいかないけど、バグるよりはよいや…
これでしばらく使ってみます
ありがとうございました。
370:名無しさん@お腹いっぱい。
09/07/05 16:17:11 cg382fnr0
#q::
Loop{
延々ループ処理
}
return
こんな感じのホットキー作ったんだけど
別のホットキーで、#qで動作させているホットキーの内容を強制的に停止させる方法って無い?
#e::
ExitApp
return
こういうのしてみたけどプログラム終了しなかった(´・ω・`)
371:名無しさん@お腹いっぱい。
09/07/05 16:32:19 1ELefC3x0
普通に動くけどなぁ
#q::
exec:=true
While (exec)
Tooltip, Mouse is Here!
Tooltip
Return
#e::exec:=false
372:名無しさん@お腹いっぱい。
09/07/05 17:13:15 cg382fnr0
>>371
んーだめっぽいなぁ
CoordMode,Mouse,Relative
CoordMode,Pixel,Relative
SetDefaultMouseSpeed,0
SetMouseDelay,10
SetKeyDelay,10,10
SendMode EVENT
hModule := DllCall("LoadLibrary", str, "***.dll")
こんな感じにやってるけど設定になんか問題でもあるのかなー
373:名無しさん@お腹いっぱい。
09/07/05 18:12:19 bzcOmVnlP
そもそも>>370の方法で終わらないのがおかしい
#MaxThreadsが1になってるとか、OnExit絡みがおかしくて失敗してるのでは
とは言え、1行目がExitApp等なら割り込まれるから(#MaxThreadsヘルプ参照)、
純粋に>>370のコード例は動くはずなんだけどな
374:名無しさん@お腹いっぱい。
09/07/05 20:47:52 lEC8MHrV0
%A_YYYY% %A_MM% %A_DD%
これらの組み込み変数で、
・昨日
・先月
を、うまく呼び出す方法ってないでしょうか。
単純にマイナス1でやると、あたりまえですが1月や毎月1日の時に、
先月や昨日が0月 や 0日になってしまいます。
375:名無しさん@お腹いっぱい。
09/07/05 21:09:54 1ELefC3x0
タイムスタンプ形式文字列(YYYYMMDDHH24MISS)にして、負数を加算
dt = 20090101000000
dt += -1, Days
MsgBox, % dt
376:名無しさん@お腹いっぱい。
09/07/05 21:13:06 lEC8MHrV0
>>375
ありがとうございます。
これでstringmidで抜き取れば、ゼロ桁揃えもバッチリですね。
377:名無しさん@お腹いっぱい。
09/07/05 21:42:40 TpLw+W1E0
>>375
横レスだが、こんなことができることに驚いた
378:名無しさん@お腹いっぱい。
09/07/06 11:18:51 +bpunDPa0
特定アプリケーションの特定クラスで
マウスを1クリックしたときは、そのアプリケーションクラスにキーを送る
マウスをWクリックしたときは、ダブルクリック
マウスを3回連続クリックしたときは、そのアプリケーションを閉じる
マウスを2秒以上押したときは、閉じる
そのほかのアプリケーションでは通常動作。
って設定するにはどうすればいいですか?
379:名無しさん@お腹いっぱい。
09/07/06 11:57:42 D5LcDuIT0
解説読んでその通りに作ればいい
380:名無しさん@お腹いっぱい。
09/07/06 13:12:35 afPTjDljP
dt:=DllCall("GetDoubleClickTime")/1000
#IfWinActive hogehoge
LButton::
t:=A_TickCount
KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
if( A_TickCount-t > 2000 ) {
ToolTip Press 2sec %A_TickCount%
return
}
ToolTip SingleClick %A_TickCount%
return
}
KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
ToolTip DoubleClick %A_TickCount%
return
}
ToolTip,TrippleClick %A_TickCount%
return
381:名無しさん@お腹いっぱい。
09/07/06 16:06:11 +bpunDPa0
>>380
ありがとうございました。
382:名無しさん@お腹いっぱい。
09/07/10 12:19:20 n1t9ih6R0
全角英数字→半角英数 と 特定文字列を置き換えたいのですが
どういう手順が一番いいですか?
外部ソフト使ったほうがいいですか?内部で処理できます?
383:名無しさん@お腹いっぱい。
09/07/10 15:00:57 h/ikD8t3P
それくらいの内容だったら1バイトずつチェックして自分で変換してもいいし、
外部のツールを使ってもどちらでもいいと思う
BREGEXP.DLLのBTransを使えば比較的楽だと思うけど、
流行らせるページのラッパーには無いんだな…
次に貼っておく
BTransの返値には置換された個数が帰ってくるので、
ちょっと変えれば>>360の用途にも使えると思う
384:名無しさん@お腹いっぱい。
09/07/10 15:23:04 h/ikD8t3P
; 省略してるけど、2, 3番目のパラメータに変換前、後に対応する文字列を指定する。
str:=_BTrans("abc cba AutoHotkey", "[a-z]", "[A-Z]", "k")
str:=_BTrans("ABXYZ", "ABCDEFGXYZ", "abcdefgあいう", "k")
_BTrans(target,pattern,trans,opt="")
{
s:="tr/" . pattern . "/" trans . "/" . opt
t:=target
outendp:=&target+StrLen(target)
pRExp=0
VarSetCapacity(msg,256)
hModule:=DllCall("LoadLibrary", str, "BREGEXP.DLL")
if(DllCall("BREGEXP.DLL\BTrans", Str,s, Str,target, Int,outendp ,IntP,pRExp, Str,msg, "Cdecl int")) {
start:=StructGetInt(pRExp,0)
len:=StructGetInt(pRExp,4)-start
VarSetCapacity(result,len+1)
DllCall("RtlMoveMemory", Str,result, UInt,start, UInt,len+1)
}
else {
result:=target
}
DllCall("BREGEXP.DLL\BRegFree",Int,pRExp)
DllCall("FreeLibrary", UInt, hModule)
return result
}
StructGetInt(pStruct,offset)
{
DllCall("RtlMoveMemory", UIntP,r, UInt,pStruct+offset, Int,4)
return r
}
385:名無しさん@お腹いっぱい。
09/07/10 16:00:26 n1t9ih6R0
>>383
ありがとうございます。ちょっと試してみます。
386:名無しさん@お腹いっぱい。
09/07/10 16:10:24 UjJB4Kmb0
>>302のサクラエディタ用のキーワード定義をひろった方がいたら
再upしてもらえないでしょうか?
お願いします。
387:385
09/07/10 16:29:10 n1t9ih6R0
試してみました。
むずかしくて意味がわかりませんでした。
せっかく教えていただいたのでじっくり取り組んでレベル向上するように頑張ります。
388:名無しさん@お腹いっぱい。
09/07/11 14:07:36 cI0LSYAf0
マウスの左メイン押下&サイドボタンクリックでスクリプト発動したいんですが、
マウス左ボタン押下状態でちょっとでもカーソル動かすとうまく発動できません。
何かうまい方法ないでしょうか?
~LButton & XButton1::
hogehoge
return
389:名無しさん@お腹いっぱい。
09/07/11 14:29:41 xRlAh2IZP
~XButton1::
if( GetKeyState("LButton", "P") ) {
hogehoge
}
return
ちなみに>>388はウチではうまく動作する。
390:名無しさん@お腹いっぱい。
09/07/11 21:37:47 cI0LSYAf0
>>389
レスthxです。
教えていただいたスクリプト、ダメでした・・・
何も反応しません。
LButtonとXButtonが逆なのかと思って逆にしてみてもダメでした。
~LButton & XButton1::Send ^tをgoogle chromeで使っているんですが、
XButton1をクリックする前にマウスが動くとうまくいかないんですよね・・・
391:名無しさん@お腹いっぱい。
09/07/11 21:47:30 SAtGLE1R0
>>390
ふつうにLButton:: でまずスレッドを立てて、その中で
LButtonが離されるまでLoopさせ、そのループ中にXButtonが押されているか検知し、
そこで分岐させればいいんじゃね?
392:名無しさん@お腹いっぱい。
09/07/11 21:50:14 e08r4NpA0
というか、コンビネーションキーが認識出来ていない段階でおかしい
何らかのマウスユーティリティ入れてたりしないよな?
393:名無しさん@お腹いっぱい。
09/07/12 09:23:18 PeyC4smHP
Chromeが原因っぽい
ウチのSRWare Ironで確認したんだけど、他のアプリでは大丈夫だけどIronでだけダメだった
以前からChrome(Iron)は、Sendで取りこぼしがよく発生すると思ってたんだけど
これもそのうちの一つかもしれない
(例えばコンテキストメニュー出して即アクセラレータキーを送っても、それを拾ってくれない場合があったりする)
どうやらLButtonでドラッグしている間はキーを無視してるらしいので、
無理矢理LButton Upを送ってからキーを送ったらうまくいくようになったけど、
ちょっと試しただけなので、副作用があるかもしれないし、Ironでしか確認してないが、
参考にでもなれば
~LButton & XButton1::
Send {LButton Up}
Send ^t
return
394:390
09/07/12 18:27:18 sKIcc7dc0
>>391-393
>>393の方法でうまくいきました。ありがとうございます。
確かにchromeが問題っぽいですね。
試しにドラッグ中にキーボードでCtrl+tを押してみても新タブ開かないですし
ともあれ、これで快適にAHKを活用できそうです。ありがとうございました。
395:名無しさん@お腹いっぱい。
09/07/12 21:31:22 tYrCWj8c0
じぐざぐマウス
URLリンク(lukewarm.s101.xrea.com)
396:名無しさん@お腹いっぱい。
09/07/12 21:41:42 XcNgENWm0
>>395
なにこれ?
説明もないし、実行しても何も起こらないし、意味が全くわからない
397:名無しさん@お腹いっぱい。
09/07/12 22:04:43 4APWhaXL0
DllCallでimm32.dllのImmGetContextを呼んでhIMCを取得したいのですが、0 しか返ってきません
ErrorLevelは 0 になってるので書き方は↓であってるはずなのですが・・・
WinGet,hWnd,ID,A
hIMC := DllCall("imm32\ImmGetContext",Uint,hWnd, Uint)
どなたか解決方法をご教示願えないでしょうか
398:名無しさん@お腹いっぱい。
09/07/12 22:12:49 tYrCWj8c0
>>396
すまん、マウスを横にギザギザするだけ。
DExposE2とかと使ってSend, !{tab}を送ったりするといい。
最後らへんは、下手したら多重起動しちゃう。
まだまだ、要変更でしたorz
DExposE2を使うなら最後のReturn前に、KeyWait, LButton, D T1とか。
399:名無しさん@お腹いっぱい。
09/07/12 22:19:20 XcNgENWm0
>>398
あぁやっと意味がわかった。ギザギザにカーソルを移動するんじゃなくて、
マウスを縦横に振り回すと、縦横に応じたRunが発動されるってことね。
それなら、名称がギザギザよりもフリフリのほうがいいんじゃないの?
ソースを見ても何をやりたいのか全く理解できなかったコードは、
これが初めてだわw
こういった公共の場にリンクを貼るなら、最低限の説明は書いてくれよ。
だれも俺みたいな暇人じゃないんだから。
400:名無しさん@お腹いっぱい。
09/07/12 22:43:47 /CYjiatT0
>>397
無理。対象ウィンドウを生成したプロセスでしか操作出来ない。
AttachThreadInputしても同じ。
>>99とかその辺りの流れで我慢汁
401:名無しさん@お腹いっぱい。
09/07/12 22:44:29 tYrCWj8c0
>>399
まあそうなんだけどね\(^O^)/
じぐざぐマウスはClockLauncherの機能で、それをパクって、縦横で分け判定を厳しくしただけだから、
名称は統一感があったほうがいいかなと。
ソースはくるくるスクロールをリスペクトw
402:名無しさん@お腹いっぱい。
09/07/13 03:02:54 9veVwPlv0
>>395
くるくるじぐざぐマウスに修正(´・ω・`)
403:名無しさん@お腹いっぱい。
09/07/13 15:24:53 EfchmhA10
あるペイントソフトで
デフォルトで画面の拡大・縮小がそれぞれ
num+ nun-と割り当てられている状況で
これをマウスホイールのwheelup,wheeldownにできないかと
#IfWinActive, ahk_class Afx:400000:8:10011:x:xxxxxxxx
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
としてみたのですが、AU3_Spyで調べた
ウインドウクラス名が起動毎に変わってしまいます
このウインドウクラス名は特定する事はできるのでしょうか?
404:名無しさん@お腹いっぱい。
09/07/13 15:47:32 L6IuKEblP
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:.*
;ウィンドウのタイトルが Untitled - hogehoge paint だったら、さらに
#IfWinActive, -\shogehoge\spaint$ ahk_class Afx:400000:8:10011:.*
自分の使う環境で誤爆が起きない範囲で調整すればいいと思う
405:名無しさん@お腹いっぱい。
09/07/13 17:04:24 9QQrzBKg0
なんで「あるペイントソフト」とか意味もなく隠すんだろうか。
具体的にソフト名を書いておけば、
別の方法で回避する方法がわかるかもしれないのに
406:名無しさん@お腹いっぱい。
09/07/13 17:43:13 EfchmhA10
403です、間違えましたahk_class Afx:400000:8:10011:0:xxxxxxの
x以下六桁が変動でした。ソフトはpaintgraphic2ですが(スレ違いかなって思って)
続け様で申し上げないのですが
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
でいいのかなと思って色々弄ってみたけど駄目でした
因みにウインドウクラス名は新規作成(Untitled )を開いても
変化はありませんでした
407:名無しさん@お腹いっぱい。
09/07/13 17:52:58 Jqm7FBF10
SetTitleMatchModeコマンドがきちんとAutoexecブロック内にあるかい?
408:名無しさん@お腹いっぱい。
09/07/13 19:11:45 EfchmhA10
何度もすいません
Autoexeもブロック化もしていなかったのでしてみました
{
SetTitleMatchMode RegEx
}
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
こういう感じでしょうか?(しつこくスイマセン)
409:名無しさん@お腹いっぱい。
09/07/13 19:14:52 gpgKXs+F0
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
return
WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
かな?ァァァアアアアア~アッヒャッヒャ!ヽ(;`・∀)ノ
410:名無しさん@お腹いっぱい。
09/07/13 20:45:49 6dlsOKO00
>>400
ahkじゃむりですか・・・
何か他の手を考えてみます、ありがとうございました
411:名無しさん@お腹いっぱい。
09/07/13 21:13:28 nb47aZHk0
>>408
URLリンク(lukewarm.s101.xrea.com)
の「スクリプトの起動とAuto-executeセクション」を熟読
412:名無しさん@お腹いっぱい。
09/07/14 16:57:18 3/lvv1eT0
F12::#D
こんな感じのキー変更を行いたいのですがなんか上手く動作しません
キー変更先にWINキーは使えない仕様なのか、それとも環境の問題か…
デスクトップ表示の命令が分かれば解決しそうだけど誰か情報あったらplz!
413:名無しさん@お腹いっぱい。
09/07/14 17:04:03 4gFEIoud0
大文字のDだとシフト押した扱いになるんじゃないかな
F12::#d
414:名無しさん@お腹いっぱい。
09/07/14 17:05:29 3/lvv1eT0
えー事故解決しますた。。。あまりスマートな方法じゃないけど
デスクトップ表示のショートカットアイコンを起動する形で実現出来ました
415:名無しさん@お腹いっぱい。
09/07/14 17:07:21 3/lvv1eT0
>>413
うわっホントでした、なんという恥ずかしい間違いw
ありがとうございました。
416:名無しさん@お腹いっぱい。
09/07/14 18:01:13 tjaNVAHDP
Run, shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}
417:名無しさん@お腹いっぱい。
09/07/14 19:03:55 rlrvyAbn0
403です
おかげでなんとか
動くようになりました
ありがとうございます
418:名無しさん@お腹いっぱい。
09/07/14 19:32:35 v50nfNmk0
質問の際、ソフト名を書かない
解決の際、解決に至った情報を書かない
まさに自分のことしか考えていない。
情報を共有する場所で、あるまじき行為
419:名無しさん@お腹いっぱい。
09/07/14 20:48:40 rlrvyAbn0
嗚呼失礼そういうルールでしたか
直接に解決に至った情報は409の方が提示されていたんですが
スペルチェックというか「,」であったり半角スペースを忘れる
イージーミスだったので
ちゃんと
SetTitleMatchMode, RegEx
#IfWinActive, Paintgraphic2 ahk_class Afx:400000:8:10011:0:.*
return
WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
return
で今のところ順調に動くようになりました
ご忠告を含め大変感謝です!
420:名無しさん@お腹いっぱい。
09/07/14 20:59:28 v50nfNmk0
よし、合格!
これで、同じ悩みを持つ人の糧になる。
421:名無しさん@お腹いっぱい。
09/07/15 04:48:01 ZstWjcqp0
FavoriteFinder.ahk消えちゃったね(´-ω-`)
422:名無しさん@お腹いっぱい。
09/07/15 09:05:36 0bQiTwD20
Internet Archiveにも情報が残ってないとか
423:名無しさん@お腹いっぱい。
09/07/15 09:44:47 NhmkqrjQ0
AutoHotkeyでマルチバイト(全角)文字を文字化けなしで出力する関数 - Knowledge Database IT
URLリンク(it.kndb.jp)
これを使うと、文字が確定した状態で出力されてしまいます。
文字を未確定のまま出力させるにはどうすればいいのでしょうか。
424:名無しさん@お腹いっぱい。
09/07/15 10:29:13 eRZrTUyIP
日本語入力モードにしてローマ字(ひらがな)を送った後、スペース等の変換キーを送るとか、
IME_Set(1)
Send mikakuteide{Space}
IMEが再変換に対応してれば>>423で漢字を送った後、再変換させるキー(MS IMEだと変換)を送るとか、
mb_send("未確定で")
Send {SC79}
※厳密に再変換させるなら、日本語文字数分だけShift+←を送って選択させた後に再変換