- 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以降も参照
- 38 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 02:49:14 ID:Y7ZtP0Kd0]
- そんなところだろうね。たぶんDirectInput
- 39 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 10:46:40 ID:WTUueAPd0]
- >>38
DirectInputはキー切ったり、送ったりはできないのですか?
- 40 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 11:33:39 ID:24/J68kf0]
- 公式のFAQにあるけど、DirectInputでも一部は動くこともある
・SendPlayを使う ・SetKeyDelayを増やしてみる SetKeyDelay, 0, 50 SetKeyDelay, 0, 50, Play ・ControlSendを使う GameguardやNPro使ってるんだったら、ドライバレスでマクロができるゲーマー用のマウス買った方が楽かと
- 41 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 17:13:05 ID:QN5A7Hfw0]
- If A > %A_Index%
Count ++ Hoge%Count% = hogehoge みたいに配列的に変数を使ってその数が不定の場合、これらのメモリを一括で開放する方法はなにかありますでしょうか。 Loop,%Count% { Hoge%A_Index%= } Loopで回せばいいのはわかりますが、Countの値を保持してなければならずあまりスマートな感じがしないので、「配列のメモリを解放」みたいなコマンドがあればと思って。
- 42 名前:24 mailto:sage [2009/05/26(火) 18:39:35 ID:qcaMCxpC0]
- >>36
うお、よくわかんないけど直りました ありがとうございます >>26 ちょっとした記憶用ソフト作りたくて頑張ってました すでにCSVで問題、答え、苦手度、最後に解いた日、間違ったフラグ(次正解すれば解除)とか記録してて そのCSVを読み込んで出題するAHKはほとんど完成系で作ってあるんだけど いろんな条件で抽出するときやっぱりCSVよりSQLのWHERE文があればと思ったのがきっかけ
- 43 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 18:48:49 ID:24/J68kf0]
- >>41
内部的には配列ではなくそれぞれ独立した変数として扱われてるのだから一括解放は無理なんじゃないかな どうしても一括解放にこだわるなら、以下のようなライブラリを使ってみるとか ttp://www.autohotkey.com/forum/topic36600.html ttp://www.autohotkey.com/forum/topic35041.html ttp://www.autohotkey.com/forum/topic14881.html それから余計なお世話かもしれないけど、hoge=ではメモリが解放されない場合がある この辺はVarSetCapacity()のヘルプに書いてあるけど、一度64にセットしてから0で解放する必要がある
- 44 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 06:01:02 ID:49MLE6WY0]
- 前スレでVista+Word2007でダイアモンドカーソルを実現しようと思った者です。
返信すごく遅くなって申し訳ありません。 今日試してみたらなぜか普通に動くようになってました。 1日潰してあんなに動かそうとしても全然動かなかったのに…。 前スレでレス下さった皆様ありがとうございました。 お騒がせしました。
- 45 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 22:13:25 ID:ghabN5mP0]
- 先輩方 初めてのAutoHokeyで書いてみたのですが
おかしなところを突っ込んで頂けると嬉しいです。 #Persistent SetTimer, Note, 3000 Note: Process, Exist, notepad.exe NewPID = %ErrorLevel% if NewPID = 0 { Run, notepad.exe, c:\, /UseErrorLevel } 3秒ごとにメモ帳が動いてるか確認 動いてなければ メモ帳を起動する notepad.exeなんか存在しませんのときにエラーウインドウが立ち上がらないように処理 作業ディレクトリがc:\は良く意味がわかっていないorz メモ帳が動いてた時の処理はループするだけだから問題ないのかな(´・ω・`)
- 46 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 23:03:39 ID:2RG+Zvrk0]
- >>45
SetTimerの後と、最後の行にreturn入れてる?
- 47 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 23:19:55 ID:HF3buD8W0]
- >>45
うごくから、いいんじゃないのかな。 >>46のツッコミはもっともだが、起動時に1回処理を噛ますと言う意味では処理としては良いと思う。 (SetTimerの後にreturnをわざと置いていないのだとしたら) 第2引数は作業フォルダ。ショートカットを右クリックし見たてプロパティ画面のと同じ。 メモ帳なら空でもいい。 プロセスが無くなるまで待つ方法もある。 Process, WaitClose, %pid%
- 48 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:06:27 ID:wZfk3OyC0]
- >>46
>>47 ありがとうございます。 settimerの後はreturn入れると挙動がおかしかったので入れてません。 最後の行に入れてないのは入れたら終わってしまうと思っていれてないです^^; 作業フォルダのご説明大変わかりやすいです^^ この場合は特になくても大丈夫そうですね。 作業フォルダがいつか消滅したときのことを考えてエラーを吐かれると嫌だったので 絶対存在し続けるc:\にしてみました。 returnを入れてもう一度ためしてみます。
- 49 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:10:25 ID:wZfk3OyC0]
- #Persistent
SetTimer, Note, 3000 return Note: Process, Exist, notepad.exe NewPID = %ErrorLevel% if NewPID = 0 { Run, notepad.exe, c:\, /UseErrorLevel } return 言われた通りにretrun二つ突っ込んで見ましたがちゃんと動きますね return入れてないと処理がきちんと修了しないからだんだん重くなっていったりしますかね? 違いが全くわかりません^^;
- 50 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:14:22 ID:wZfk3OyC0]
- Return
GosubやHotkeyのサブルーチン処理から戻る Remarks GoSubでジャンプしていないときにReturnを実行すると、 Exitを実行したときと同様にスレッドを終了する。 サブルーチン処理をしていない場合はなくてもよいのかなと思い込んでみる。。
- 51 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:18:11 ID:k3jZrIoJ0]
- これだけでいい気がする
Loop RunWait, NotePad.exe
- 52 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 01:23:49 ID:g2Gpk75K0]
- SetTimerって待機スレッド(プロセス?)がどんどん溜まって
重くなったりしないかと不安であまり使ってない…。実際のところどうなんでしょ?
- 53 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 05:19:31 ID:UHCBZ4+L0]
- Autohotkeyの中で疑似スレッド的に動いてるだけで、OSから見たら常に単一プロセス単一スレッドだから
CPUやメモリリソースへの負荷はあまり考える必要が無いと思うけど。 疑似スレッドの制御は本物のプロセス/スレッドのように複雑じゃないので、 実質上の負荷は、実際にタイマースレッドで動作するAHKコードの量で判断してもかまわないと思う。 それにスクリプト実行中はSetBatchLinesで指定した間隔で10msのスリープも入って、 OS全体の負荷を高めないような作りにもなってるし。
- 54 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:22:04 ID:ar6yU5aO0]
- AutoHotKey、さっきはじめて知りました。
スクリプトとか全然わかりませんし、わかるのはBASICぐらいですw でもなんとかマニュアルを参考にして10分ぐらいいろいろやってるのですが。。。 たとえば、Winキー+y で、iTunesがアクティブなときだけ最小化したいんですが、 スクリプトは、これでOKでしょうか? 一応動いているのですが、なにか問題があるでしょうか? >>>>>>>>>>>>( iTunesがアクティブなら最小化 )<<<<<<<<<<<<< #y:: IfWinActive iTunes WinMinimize,iTunes IfWinActive return レベルが低い質問でごめんなさい...orz そもそも、なにがやりたくてAutoHotKeyを知ったのかといいますと、 任意のホットキーを押したとき、 (1)任意のアプリが起動していなければ起動する。 (2)任意のアプリが起動していて、かつ、最小化状態またはバックグラウンド状態なら、アクティブに(最前面に持ってくる)。 (3)任意のアプリが起動していて、かつ、最前面(アクティブ)ならば、最小化する。 こういうのをやりたかったんです。
- 55 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:24:36 ID:ar6yU5aO0]
- そもそもなぜそんなことをやりたいのかといいますと、、、
最近、プログラマブルキーボードを買ったのですが、 1つのキーだけで、任意のアプリのアクティブ化と最小化をトグルしたい。 あるキーを押したら指定したアプリのウィンドウが最前面に来て、 そのアプリが最前面にあるときに、そのキーをもう一度押したら そのアプリのウィンドウが最小化する、みたいな感じです。 でもそんな簡単なことすらプログラマブルキーボード付属のユーティリティーではできず。。。 で、いろいろ考えて、その任意のアプリにWindows標準のホットキーを割り当て、 プログラマブルキーボード側の任意のキーにそのホットキーをアサインすれば、 上記の(1)と(2)だけは実現できるんですが、(3)がどうしても実現できないんですよね。 んで、国内外のフリーウェアをかなりいろいろ試したんですが、(1)(2)と同時に(3)ができるものが 数時間探しても見つけられず、また、こういうのって、 検索ワードがホットキーとか最小化とか一般すぎる言葉になっちゃって 自分の求めているソフトを検索エンジンで探しにくいんですよね。。。。 てなわけで、長くなってしまいましたが、AutoHotKeyにこれからハマってみる予定です GUIまで作れちゃったりするみたいで、恐ろしいほど高性能でびっくりですよ、ほんと。
- 56 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:25:18 ID:ar6yU5aO0]
- コメントアウトは
>>>>>>>>>>>> で大丈夫でしょうか?
- 57 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:32:10 ID:Rj+x9ILK0]
- まだ初心者の俺が、試しもせずにしゃしゃり出てみる
#y:: IfWinActive, iTunes { WinMinimize,iTunes }else{ Process,Exist,notepad.exe If ErrorLevel<>0 WinActivate,ahk_pid %ErrorLevel% else Run,notepad.exe } return
- 58 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:06:51 ID:ar6yU5aO0]
- >>57
早速、ありがとうございます! notepad.exeになってしまってますが、 iTunes.exeに変えると動きますね!
- 59 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:08:03 ID:ar6yU5aO0]
- >>55,56を書き込んだあとに、自分で考えたものは以下でした。
以下でも一応ちゃんと動くみたいです。 でも、>>57さんのように、ちゃんとahk_pid %ErrorLevel%みたいに 指定したほうが確実ですよね? #y:: IfWinActive,iTunes { WinMinimize,iTunes } else { WinActivate,iTunes Process,Exist,iTunes.exe If ErrorLevel=0 { Run,iTunes.exe } } ;;;IfWinNotExist iTunes ;;; Run,iTunes.exe return ただ、iTunesって名前が付いたフォルダとかアプリが開いていると そっちのほうが最小化しちゃったりしますけど、それも本当は、キッチリPIDを調べてやれば、誤動作もなくなるんですよね? 数時間いじったらかなりわかってきました!ありがとうございます!! 本当に面白くて可能性を感じるソフトですよね!
- 60 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:08:51 ID:ar6yU5aO0]
- ありゃりゃ、
;;;IfWinNotExist iTunes ;;; Run,iTunes.exe の部分はコメントアウトでした..orz
- 61 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 19:31:15 ID:Rj+x9ILK0]
- ちなみに>>57のやつはAutoHotkeyを流行らせるページに載ってたヤツのコピペです。
暇なときにでものんびり読んでみるといいよ。
- 62 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 21:32:48 ID:jz4l290M0]
- >>36
これはいいね。使わせてもらうよ ところでライセンスは何?
- 63 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 22:02:37 ID:k3jZrIoJ0]
- マウス周囲のを指定した大きさの正方形でデスクトップまで穴をあける。再度呼び出すと元に戻す。
~RCtrl::ClipWindow() ClipWindow(size=200, ignoreClassPattern="Shell_TrayWnd|BaseBar") { static clipped If (!clipped) { DetectHiddenWindows, Off CoordMode, Mouse, Screen MouseGetPos, mx, my WinGet, list, List Loop, % (list-1) { IfWinNotExist, % "ahk_id " list%A_Index% continue WinGetClass, class If ignoreClassPattern && RegExMatch(class, ignoreClassPattern) continue WinGetPos, x, y, w, h mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2 If (mx1>w || my1>h || mx2<0 || my2<0) continue WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h% clipped := list%A_Index% . (clipped ? "|" : "") . clipped } } else { DetectHiddenWindows, On Loop, PARSE, clipped, | WinSet, Region,, ahk_id %A_LoopField% clipped= } }
- 64 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 22:33:50 ID:qyNknqLm0]
- >>63
これいいね ちょっと感動した 使わせてもらいます。
- 65 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:36:46 ID:DA5drrjA0]
- Vistaじゃ動かないな
- 66 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:37:02 ID:u1yo0xzx0]
- >>63
面白いな 穴あいてるときにSetTimerでマウス追従するとさらに便利 堪能するためにわざわざ壁紙張ってしまったw
- 67 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:40:11 ID:0CBSOWcu0]
- もちろんエロい壁紙だよな
- 68 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:12:50 ID:ZNykQa940]
- s = %A_thishotkey%
s1 = %s%% msgbox,%s1% return s の変数の値の末尾に % を付け加えて それを s1 に保存したいのですが (A_thishotkey が a だとすれば "a%") こうかくとエラーになります。 どうすればこれを実現できますか。
- 69 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:19:50 ID:keMVWhB40]
- 敷居が高いのもあるからどんどん流行ってくれ
- 70 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:25:55 ID:5w+b34I70]
- >>68
s1 = %s%`% 最後の % をエスケープする(デフォならShift + @)
- 71 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:27:23 ID:y2qE0/Pv0]
- >>68
エスケープ s1 = %s%`% MsgBox, %s1% 式を使う方法もあり s2 := s1 . "%" MsgBox, % s2
- 72 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:29:55 ID:ZNykQa940]
- >>70-71
ありがとうございます!
- 73 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:36:17 ID:HnnwY0C40]
- 少しお聞きします。
無変換とシフトと任意のキーというホットキーの定義の仕方はありませんでしょうか? vk1Dsc07B & +g:: SplashTextOn,,, Test... Sleep, 600 SplashTextOff return などとやっても、無変換+シフト+Gを拾ってくれないのです・・・ +vk1Dsc07B & gだと読み込み時にエラーがでるし…。
- 74 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:42:33 ID:vciG3EmH0]
- >>73
コンビネーションキー 「&」を使うことで、2つの任意のキー(ジョイスティック以外)の組み合わせをホットキーに指定することが可能。 3つ以上のキーを指定したり、+^!#で修飾キーを追加したりは出来ない。 If GetKeyState("Shift","P")
- 75 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:54:53 ID:vciG3EmH0]
- 最初に
vk1Dsc07B & g:: If !GetKeyState("Shift","P") return を追加すれば大丈夫か
- 76 名前:1/2 mailto:sage [2009/05/29(金) 13:22:46 ID:u1yo0xzx0]
- >>63 のマウス追従Ver 作ってみた。 タイマ未使用、Shiftで固定、ESCで終了
#1:: ClipWindow_MouseFollows() ClipWindow_MouseFollows(size=200, Pause="Shift",endKey="ESC", ignoreClassPattern="Shell_TrayWnd|BaseBar") { static list IfNotEqual,list,, return ;semaphore DetectHiddenWindows, Off CoordMode, Mouse, Screen WinGet, list, List Loop, %list% l := list%A_Index% . (l ? "|" : "|0x0") . l While !GetKeyState(endKey) && Instr(l,WinActive("A")) { if GetKeyState(pause) { KeyWait,%pause% pmode := (pmode!=1 ? 1 : 0) } IfEqual,pmode,1, continue MouseGetPos, mx, my if ((mxs-10 < mx) && (mx < mxs+10) && (mys-10 < my) && (my < mys+10)) continue mxs:=mx, mys=my
- 77 名前:2/2 mailto:sage [2009/05/29(金) 13:24:56 ID:u1yo0xzx0]
- Loop, % (list-1) {
IfWinNotExist, % "ahk_id " list%A_Index% continue WinGetClass, class If ignoreClassPattern && RegExMatch(class, ignoreClassPattern) continue WinGetPos, x, y, w, h mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2 If (mx1>w || my1>h || mx2<0 || my2<0) continue WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h% if !Instr(clipped,list%A_Index%) clipped := list%A_Index% . (clipped ? "|" : "") . clipped } Sleep,50 } DetectHiddenWindows, On Loop, PARSE, clipped, | WinSet, Region,, ahk_id %A_LoopField% list= } >>67 プリインスコのメーカーロゴ、エロいの持ってねぇ(´・ω・`)
- 78 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 13:36:25 ID:tLIgPVbp0]
- 最小化したときにタスクトレイにアイコン化するアプリを
タスクトレイに入った状態からアクティブ化するのは無理でしょうか? その手のアプリ、みんなWinActiveが効きません...orz
- 79 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 15:06:40 ID:+GBy9qZg0]
- DetectHiddenWindows, On
- 80 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 15:41:21 ID:tLIgPVbp0]
- >>79
そんなコマンドがあったとは! 即レス本当にありがとうございます! ほんと、ahkってなんでもできるんですねー
- 81 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 23:08:59 ID:IKD+qEU60]
- おもしろいな
解除はどうやるんすか?
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 23:13:54 ID:y2qE0/Pv0]
- タスクトレイw
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 06:17:34 ID:84IZ3aep0]
- >>74-75
2つ以上ダメなんですね。以外に不便…。というかホットキー扱いじゃないのかな ありがとうさんです。試してみまする
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 13:39:34 ID:pp0cJZID0]
- >>36のSQLite_GetSelect関数ってフィールドの数が10個以上あると変数重複するよね?
例えばLV111の場合11行目の1列目、1行目の11列目で重複みたいに 俺が頭悪いだけ?
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 14:25:44 ID:yxno/H630]
- それが仕様だと思うよ。
> %接頭辞%%行番号%%列番号% := 値 って風に代入してるし > %接頭辞%_%行番号%_%列番号% とかにすれば平気なんだろうけど
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 14:40:43 ID:pp0cJZID0]
- なるほど。
ライブラリいじらないとだめか。
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 01:53:08 ID:jQyIS5jG0]
- >>36関連でわからないことがあったので便乗して質問します
SELECT * FROM test WHERE 〜 というところで、 ' が含まれる項目をうまく探し出してくれません autohotkey 特有のエスケープ処理か何かのせいか?と思ったのですが いまいちよくわかりません ' が含まれる項目を処理するときに同じような症状に出会った人はいますか?
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 20:18:32 ID:g4+Xfjng0]
- 引数の基準フォルダと対象ファイルパスを元に相対パスを返す関数ってありますか?
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 21:59:11 ID:g4+Xfjng0]
- >>90
ありがとうございます 無事できました
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 01:21:39 ID:nMoGzHYT0]
- AutoHotkey v1.0.48.03.L30
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 15:00:23 ID:KxOltqgo0]
- 変数%aaa%の中に変数%bbb%を組み込みたいです。
%aa%bbb%%では駄目でした。 どうすれば出来ますか?
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 15:57:15 ID:nMoGzHYT0]
- 「%aaa%」と書いた場合、
・コマンド内は、変数に格納された値 ・式や関数の中では、%〜%を展開した文字列が名前となる変数 となるけど、 「組み込みたい」の意味が分からないから具体例で。
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 16:27:57 ID:5kiaGP5n0]
- よくわからんが多分 Transform,Deref, String あたりではないかとエスパーしてみる
- 96 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 17:36:14 ID:9Rwj7uYk0]
- >>97
試してみたところ意図した動きになりました。感謝です! ^x::Returnでキーの動きを無効化しても組み込み変数に値は入るんですね 勉強になりました。ありがとうございました>< 2ストロークで設定しているキーバインドが多く、書き換えが面倒なので、 勉強もかねて関数をつくってやってみたいと思います
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 19:44:30 ID:rJZ7jJ5w0]
- >>99
昔から何度も質問に出てましたよね。IMEで変換中かどうかを知る方法。 ついに実現できる人がいたとは。 さっそく試してみます。
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 19:56:13 ID:osRS2DeA0]
- >>99
おおーありがとう これがあったら無変換にIMEOFF、変換にONにする関数割り当てられる
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:18:55 ID:ftcLo5Gk0]
- けっこう既出な気がするけど
他のIMEでもウィンドウクラス一覧表示するスクリプト書けば怪しいクラス名が分かる 注意する点はWinActiveで判断するんじゃなくExistで判断するところ
- 103 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:23:03 ID:xwgWw2A40]
- BOOLを返さないのに Is〜 とは変な名前だったorz。好きに替えてくらはい。
自分が使ってるIMEしか調査してないから、 SKK、VJE、WXG、松茸、その他IMEへの対応は出来ないので自分で追加してくれ。 あああ ← 入力窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加  ̄ ̄ ̄ 愛 |愛 | ← 候補窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加 |亜依 | |あい .| |藍 | | : .|  ̄ ̄ ̄
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:30:06 ID:xwgWw2A40]
- >>102
おっしゃるとおりで #IfWinNotExist, ahk_class 入力窓|変換窓 vk1Csc079::IME_Set(!IME_Get()) とかのほうが楽ではある
- 105 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 21:37:03 ID:Kr4mD/Ke0]
- MS-IME2000までなら
WinExist("ahk_class msime") でいけそう
- 106 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 22:31:33 ID:P6oxe9UG0]
- autohotkey以外の任意のウィンドウをタスクバーから消す方法ってありませんか
toolwindow作ってSetParentすればいいのかなと思ったけど同じプロセスじゃないとできないみたいで
- 107 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:37:26 ID:fHhPIlcJ0]
- ここのTrayIcon.ahkの中にあるTaskButton.ahk
www.autohotkey.com/forum/topic17314.html
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:43:09 ID:cMFaAOnD0]
- 実行中のスクリプトのファイル名を取得する方法を教えてください。
実行中と同じスクリプト名のiniファイル読み込みにしようしたいです。
- 109 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:58:06 ID:fHhPIlcJ0]
- 組み込み変数 A_Script○○○
- 110 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 11:03:28 ID:cMFaAOnD0]
- >>109
ありがとう。
- 111 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 00:17:18 ID:QQ0YUUDy0]
- 任意のアプリケーションのメニューバーを非表示にする方法ってあります?
AU3_Spy.exe で調べてもメニューバーの Class_NN なんかが判らなくて…。
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 01:16:22 ID:6AUpOLN+0]
- 処理が終わるまでの間を進歩状況を表示させたいんだけど
Gui,Add,Progress見つけたけどできそうなのか使い方がさっぱりわからなかった
- 114 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 01:49:52 ID:QQ0YUUDy0]
- >>112
おおお、ありがとうございます!助かりました
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [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 名前:名無しさん@お腹いっぱい。 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を眺めてたんだが、
クリックされたトレイアイコンの番号は取得できないのかな?
|

|