1 名前:名無しさん@お腹いっぱい。 [2005/10/21(金) 04:31:53 ID:qy14hWPT0] If You = beginner Read, Template, >>2-6 Previous Thread:: AutoHotKey Thread pc7.2ch.net/test/read.cgi/software/1098531338/ If Res > 950 Please, Build, NextThread
94 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 18:42:44 ID:CgkRLY9O0] あー、Ifがネストしちゃうと漏れは完全アウトだな。 パッと見ではもちろんじっくり考えても全然理解できない。 で、エディタに貼っつけてインデントしてから考えてみたんだけど 一番上位のIfWinExist,A の{ }抜けてるけどいいのんかい? あと 7,16行の { } に意味なくないか、これ
95 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 18:47:37 ID:6IkeUy0z0] >>91 つProcess
96 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 20:16:45 ID:IdqDMTZK0] ThumbSenseのように、タッチパッドに触れているかどうかを判定できるようになるといいなあ。
97 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 21:22:00 ID:myFIFexE0] TAB使えばいいじゃん
98 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 22:56:37 ID:ZNzLxnpo0] もしどなたかソースコード解凍できる人いましたら ソースからShellExecuteというAPI検索して6個目(=最後)の引数何になってるか 確認していただけませんか?
99 名前:98 mailto:sage [2005/11/03(木) 23:06:30 ID:ZNzLxnpo0] ごめんやっぱりいいです。 でもやっぱりなんかおかしい。
100 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/04(金) 22:35:21 ID:GuCt95u60] マウスカーソルを変更したり消去するコマンドは無かったorz ノーマウスカーソルの機能をぱくれると思ったが残念
101 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 00:12:48 ID:1+JQ8ek+0] >>100 前スレより。 DAT落ちしてるみたいなんでコピペ > 627 名前:625[sage] 投稿日:2005/05/20(金) 23:58:26 ID:jhPL19PD > とりあえずLoadCursorFromFileで直接カーソルファイル指定で > システムのポインタは変えれるぽい > (LoadCursorも試してみたがイマイチ挙動がよくわからん) > > #1:: SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoge.cur"),32512) > #2:: SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoga.cur"),32512) > > LoadCursorFromFile(lpFileName) > { ; カーソルファイルからマウスカーソルを作成する > return DllCall("LoadCursorFromFile",Str, lpFileName, Int) > } > SetSystemCursor(hCur,id) > { ;システムカーソルを変更する > return DllCall("SetSystemCursor", Uint,hCur, Int,id ,Int) > } > > 630 名前:592[sage] 投稿日:2005/05/25(水) 12:53:24 ID:62rl7YBY > IME状態表示用のアイコン作ってみた > ttp://lukewarm.s101.xrea.com/up/file/028.zip > > 631 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2005/05/25(水) 12:54:38 ID:62rl7YBY > あ、マウスカーソルに訂正
102 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 03:27:14 ID:kQuWg8rN0] dllcallでShowCursorを使えばいけそうだけど #y::DllCall("User32\ShowCursor", "int", 0) テストで作ってみても反応無かったorz 助けて
103 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 04:50:06 ID:/8hJVayJ0] >>102 それ自分のプロセスのウィンドウにしか利かない
104 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 15:21:11 ID:q4T/nF7a0] ttp://www.autohotkey.com/docs/misc/Clipboard.htm の OnClipboardChange の例にある%A_EventInfo%ですが 誰か解説してほしい・・・ とりあえず、文字やファイルだと1 bmpだと2になるんだが、 文字とファイルの区別はつかないのかな
105 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 16:06:10 ID:1+JQ8ek+0] >>104 lukewarm.s101.xrea.com/commands/indexframe.html
106 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 16:07:29 ID:1+JQ8ek+0] 違った。こっちの下のほう lukewarm.s101.xrea.com/misc/Clipboard.htm
107 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 16:12:49 ID:1+JQ8ek+0] 何度もスマソ、ちなみにクリップボード内のフォーマットはDllCallでAPI使えば取得できる サンプル d.hatena.ne.jp/eamat/20050920/p1
108 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 19:25:38 ID:q4T/nF7a0] >>106 ありがとう。 日本語のヘルプ(chm)しか見てなかった・・・すまん >>107 こっちも参考にしてみる。ありがと 今週初めにAutoHotkey知ったんだがおもしろい。 これでCaps入れ替えができれば完璧なんだが・・・
109 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 20:23:00 ID:YtsoQGy80] やっとサッカーチームが!
110 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/05(土) 20:24:40 ID:rpDKFDGY0] 戦う相手がいません!
111 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 16:38:36 ID:7Hz8Kh6P0] こんなスクリプト書いてくださいってのは、ここ的にアリですか?
112 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 17:44:40 ID:PoGd2lip0] (ω・ )ゝ なんだって?
113 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 19:45:09 ID:7Hz8Kh6P0] >>112 こんなスクリプト書いてくださいってのは、ここ的にアリですか!!!
114 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 19:55:01 ID:FAFXojQr0] /.──┬ /⌒ヽ ┌─┴─┐ . | ヽヽヽ ―┼― .| ヽ | \ /| ┌─┐| ノ  ̄フ .  ̄| ̄ヽ | , | | | \  ̄| ̄ヽ | . | | └─┘| | ─┼─ ,ノ │ ノ . | \ | ゝ | | ノ │ |/ ̄ヽ | J ○ J . ノ ヽノ . J \_ レ ノ ヽノ _ノ _____ ____ー┼ー | / _/_ -- 二二_ /~| ̄/ヽ / ヽ | \  ̄ ヽ | | ノ .| ∨ | / _| | | | ̄| ノ l____, \ノ ノ (_ノヽ レ  ̄
115 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 19:56:57 ID:0hkV63L40] >>111 いちいちそんな無駄レスせずにさっさと本題書けよ。印象悪いぞ。 過去スレからの流れを見てるとこのスレは自分である程度試行錯誤する人間には 手助けするけど、丸投げは(・A・)イクナイ!って感じだからそれを踏まえた上でヨロシク。
116 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 21:48:46 ID:A0mk0Y990] 横やりですいません。>>102 のヒントお願いします。。。
117 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/06(日) 23:40:35 ID:z+zoLLJT0] >>111 無し ヒントを教えてくれとかならまだしも、丸投げはダメだろ
118 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 00:15:52 ID:Lx44qPKh0] >>116 >103で答えは出ていると思うのだが
119 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 04:00:09 ID:S2Pl78Ca0] >>111 とりあえず、なにがしたいんだ?怒らないから言ってみなさい
120 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 18:35:53 ID:7cDsa3uM0] >>111 やっぱり怒る
121 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 20:21:01 ID:rV/rS1+v0] ^p:: IfWinActive, ahk_class Notepad Send, ^o else Send, ^p return こんな感じのスクリプトを書いているんですが、指定ウィンドウ以外で無限ループしちゃいます。 こういう時どうしたらいいんでしょうか?
122 名前:名無しさん@お腹いっぱい。 [2005/11/07(月) 20:39:04 ID:PUaC//G70] >>121 一行目に #UseHook を追加
123 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 21:58:01 ID:Lx44qPKh0] $^p::
124 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 23:09:43 ID:rV/rS1+v0] >>122-123 無限ループしないようになりました。 ありがとうございます。
125 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/07(月) 23:58:04 ID:d1b3VXPA0] >>117 では、ヒントをお願いします。 >>119 優しいお言葉どうもです。書いてみます。 起動していたらアプリをアクティブ、起動していなかったらアプリを起動。 これは出来ました。これにさらに、Ctrlを押していたらアプリを終了。 Altを押していたら、アプリを最前面にをトグルということをやりたいです。 Win + H >秀丸を起動、起動していたらアクティブ。 Win + Ctrl + H>秀丸を終了、起動していなかったら何もしない。 Win + Alt + H>秀丸を最前面に、起動していなかったら起動して、最前面に。 これ単純にすべてのホットキーを設定しちゃえばいいのですが、 いろいろなアプリに対応させたいので、関数っていうんですか? 処理をうまいことまとめられたらいいなぁとおもいまして。 >>120 ひぃ…そこをなんとか。ヒントだけでも。
126 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 01:56:56 ID:BqfIoljv0] どのへんを関数化したいのかわからんのだが 取り零しとかあるしトリガは素直にホットキー使ったほうがよい モデファイヤキーの押下状態で内部分岐もできるが これだとhが入力できなくなるので ~ つけるか中でSendするとかの処理が必要 *h:: dsp= if (GetKeyState("CTRL")) dsp = ctrl if (GetKeyState("SHIFT")) dsp = %dsp% sift if (GetKeyState("ALT")) dsp = %dsp% alt if (GetKeyState("LWIN") || GetKeyState("RWIN")) dsp = %dsp% win ToolTip,%dsp% return
127 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 07:16:19 ID:OmlMtwX30] SetHotkey("n" , "notepad.exe", "C:\WINNT\System32", "max") SetHotkey("c", "calc.exe", "C:\WINNT\System32", "") return SetHotkey(key, appPath, appWorkDir, appWinState) { global appPath%key%:=appPath appWorkDir%key%:=appWorkDir appWinState%key%:=appWinState Hotkey, #%key%, launchApp ;Hotkey, ^#%key%, quitApp ;Hotkey, !#%key%, toggleWindow Return } launchApp: StringRight, key, A_ThisHotkey, 1 appPath:=appPath%key% appWorkDir:=appWorkDir%key% appWinState:=appWinState%key% Run, %appPath%, %appWorkDir%, %appWinState% Return hotkeyが関数に対応してないからめんどくさかった・・ とりあえずこれで動的に割り当てられるはず。 ヤレヤレダゼ( ゚д゚)y─┛~~
128 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 08:00:45 ID:AQU/ZuaD0] 「=」と「:=」ってどう使い分けるんですか?
129 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 10:08:44 ID:U5/qb0is0] >>128 一緒
130 名前:128 mailto:sage [2005/11/08(火) 10:19:07 ID:AQU/ZuaD0] >>129 そうなんですか? あとIfの時()で囲むか囲まないかってのもいまいちよくわかりません。
131 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 10:32:21 ID:w31TiB9U0] >>128 a:=A_AhkVersion と a=%A_AhkVersion% だとaが同じ内容になる。 d=%abc%xyz%% ってやりたくても出来ないので、こんなときは b:=adc%xyz% これで似たような意味になる。こう解釈してんだけど間違ってたらごめん。
132 名前:131 mailto:sage [2005/11/08(火) 10:34:58 ID:w31TiB9U0] ごめん。 d=%abc%xyz%%→b=%abc%xyz%% 間違えました。
133 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 13:01:31 ID:x8v+5Rvv0] >>126 >>127 ずばり答えまで書いてくださって、ありがとうございます。 内容を解釈しながら、改良してみます。
134 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 13:16:32 ID:OmlMtwX30] >>127 あー、寝ぼけてるな・・・ hotkeyが関数に対応してたとしても別段コード変わらんよな・・ >>133 たしかに、ヒントじゃないなw がんばってね
135 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 15:15:11 ID:ZVndp7Og0] >>129 おいおい。。。 違うやろ、ifの = と == は文字列比較以外はほぼ一緒だけど >131の解釈でだいたい合ってる
136 名前:128 mailto:sage [2005/11/08(火) 19:12:51 ID:AQU/ZuaD0] 「=」と「:=」の使い分けはわかりました。 「If」と「If()」は?
137 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 19:27:52 ID:BqfIoljv0] If var = value → 従来仕様、1行に1判定文しかかけない If (var1 = var2) and (var1 = "value") → 後から追加された形式、AND や OR で複数の判定を連結できる AHKは 1.0.25と1.0.34あたり(うろ覚え)で大幅な仕様追加があった。 := や if () 、Functionは従来の記述ルールでできない部分を拡張する形で導入された記述形式 従来仕様とチャンポンになってるので後から入ってきた人には分かりにくいかもしれないな
138 名前:128 mailto:sage [2005/11/08(火) 19:32:07 ID:AQU/ZuaD0] >>137 なるほど。 ありがとうございました。
139 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 22:48:46 ID:x8v+5Rvv0] >>134 続きを改良しつつ、作ってみました。 SetHotkey(key, appPath, appTitle, appWorkDir="", appOpt="") { global appPath%key%:=appPath appTitle%key%:=appTitle appWorkDir%key%:=appWorkDir appOpt%key%:=appOpt Hotkey, #%key%, launchApp Hotkey, ^#%key%, quitApp Hotkey, !#%key%, toggleWindow Return } launchApp: StringRight, key, A_ThisHotkey, 1 appPath:=appPath%key% appTitle:=appTitle%key% appWorkDir:=appWorkDir%key% appOpt:=appOpt%key% ifWinNotExist, %appTitle% Run, %appPath%, %appWorkDir%, %appOpt% else WinActivate, %appTitle% return Return
140 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 22:50:31 ID:x8v+5Rvv0] quitApp: StringRight, key, A_ThisHotkey, 1 appTitle:=appTitle%key% ifWinNotExist, %appTitle% Exit else WinClose, %appTitle% return Return toggleWindow: StringRight, key, A_ThisHotkey, 1 appPath:=appPath%key% appTitle:=appTitle%key% appWorkDir:=appWorkDir%key% appOpt:=appOpt%key% ifWinNotExist, %appTitle% Exit else WinSet, Topmost, TOGGLE, %appTitle% return Return んー >>126 さんの言うとおり、取りこぼしがあるし、 Topmostのトグルが出来てないような。 折角作ってもらったのに、ホットキーの方が確かってことなんですかねぇ。
141 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 23:08:59 ID:BqfIoljv0] いや、取りこぼしが発生するのは LoopやSettimerで自力監視する場合の話 Hotkeyコマンドは動的に割り当ててるだけでトリガはAHKまかせだし 問題ない筈だが
142 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 23:28:51 ID:BqfIoljv0] Returnを2回重ねてるところと Exit使ってるのの意味がわからんのだが toggleWindow: StringRight, key, A_ThisHotkey, 1 appTitle := appTitle%key% ifWinExist, %appTitle% WinSet, Topmost, TOGGLE, %appTitle% Return でいいんじゃね? (If あるんで全角インデントした)
143 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/08(火) 23:38:44 ID:x8v+5Rvv0] >>141 なんか反応が鈍い時があるんですよね。 >>142 メタメタだ…。
144 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/09(水) 07:51:17 ID:HqHg5smR0] ていうかappTitleにどんな値指定してんだか知らんけど 秀丸みたいに多重起動できるアプリだとウィンドウを限定できねんじゃね? 判定は ifWinExist じゃなくて ifWinActiveにして 任意のウィンドウがアクティブなときに動作させないと誤爆するな あと秀のようにアプリ自体がTopmostの機能をもってる場合はSendで ショートカットキー投げるとかしてそっち使ったほうが話は簡単かもしれんよ
145 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/09(水) 15:43:04 ID:+AeGgYao0] >>143 秀丸落として試してみたが、うちでは問題なくトグル出来るが・・・ それと>>141 が言うようにhotkeyコマンド使って設定した場合、ホットキーラベルで設定したのと同じ動作になるはずで、 反応鈍いって事はないだろう。ホントにそうならAHK自身のバグとしか考えられん。 >>144 ifWinExistでもちゃんとできるみたい。 同タイトルのウィンドウが存在した場合、まず最前面ウィンドウが優先され、 最前面がない場合と複数最前面がある場合、アクティブの時にはそのウィンドウに、 非アクティブの場合、最後にアクティブだったウィンドウに適用されるっぽいな。 違ったらごめん。 気になったのが、非アクティブの最前面ウィンドウを非最前面にしたときに 一度そのウィンドウをクリックしてやらないと、 他のウィンドウクリックしても後ろに行ってくれないが、 ここらへんはOSの仕様のような気がする。 topmostトグルするまえにWinActivateつかってアクティブにしてやれば一応解決するが。
146 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/10(木) 21:56:38 ID:RwGjNG9H0] ウィンドウ指定の条件をandじゃなくてorにすることはできないでしょうか。 IfWinActiveとかを何度も書かなきゃだめですか
147 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/10(木) 22:01:45 ID:We9gQrEX0] >>146 ttp://lukewarm.s101.xrea.com/commands/IfIn.htm
148 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/10(木) 22:25:50 ID:RwGjNG9H0] >>147 なるほど。ウィンドウのタイトルを変数に入れてIf var inでマッチリストと 比較するわけですね。 or条件を使うときはIfWinActiveではなくこれを使ってみることにします。 ありがとうございました。
149 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 03:42:19 ID:khVemMEi0] タイマー作るのって無理? InputBoxで入力した時間Sleepしてアクションを起こすってことはできるけど 残り時間の表示をどうやればいいのかわからない。
150 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 04:01:08 ID:xFnBvB+A0] >>149 time=%A_Sec% settimer,count,1000 count: rest:=time-A_Sec+30 tooltip,%rest% return esc::exitapp こんなんでええのだろうか
151 名前:149 mailto:sage [2005/11/11(金) 04:05:08 ID:khVemMEi0] >>150 なるほど! これはは思い浮かばなかった。 迅速なレスありがとうございます。
152 名前:149 mailto:sage [2005/11/11(金) 04:10:33 ID:khVemMEi0] あ、いやちょっと待って。 よく考えたら全然ダメじゃん。 数秒確認しただけでレスしちゃった。
153 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 04:24:46 ID:xFnBvB+A0] returnの前にこれ追加しといて if rest=0 exitapp 的外れだったらすまん。つーか何がダメなんかわからん、とりあえずカウントダウン表示してみただけだし。
154 名前:129 mailto:sage [2005/11/11(金) 04:31:30 ID:khVemMEi0] たとえば、今、○時○分55秒だったとします。 55-55+30=30 55-56+30=29 55-57+30=28 55-58+30=27 55-59+30=26 55-00+30=85 55-01+30=84 こういう計算だと思うんですが・・・・。 私の方が間違っているのかな。
155 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 05:53:00 ID:FTok57/z0] A_TickCountつかえ
156 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 07:51:44 ID:A6pk7vW20] 時間関係の計算はよくわからんルールになってるぞ 一人で脳使ってないでヘルプ熟読してきなされ
157 名前:名無しさん@お腹いっぱい。 [2005/11/11(金) 18:08:09 ID:KIS/mZVoO] ちょっとくらいヒントをくれてもいいじゃないですか。
158 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/11(金) 18:52:34 ID:A6pk7vW20] とりあえず149はA_Sec参照して何がやりたいんだ? 単純に残り秒数カウントダウンしたいだけなら dwncnt := 30 ;残り秒数 settimer,count,1000 count: dwncnt-- tooltip,%dwncnt% return きちっと精度上げたいならSetTimerの値を小さくして>155が言うようにA_TickCount使う
159 名前:149 mailto:sage [2005/11/11(金) 20:12:02 ID:khVemMEi0] ○時間○分○秒というタイマーも使えるようにしたかったので A_TickCountではなく、YYYYMMDDHH24MISSで記述した物からEnvAddでSecondsを指定して 1秒ごとに-1加算するようにしたら上手くできました。
160 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/13(日) 18:02:11 ID:A/9NzbIG0] あるSetTimerがonの時とoffの時で条件分岐って無理?
161 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/13(日) 19:35:11 ID:N8ylNJMv0] タイマーが動いてるかどうかを調べる方法はなかったはず 自分でフラグ変数用意して現在の状態覚えとくようにすればOKだけど
162 名前:160 mailto:sage [2005/11/13(日) 19:37:47 ID:A/9NzbIG0] >>161 どういうことですか?
163 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/13(日) 19:41:43 ID:5IyRr/ha0] 自分で変数を用意する。
164 名前:160 mailto:sage [2005/11/13(日) 19:53:57 ID:A/9NzbIG0] こんな感じ? SetTimer, ABC, 3000 ST_Flag = on #A:: If(ST_Flag = "on") { SetTimer, ABC, off ST_Flag = off } Else If(ST_Flag = "off") { SetTimer, ABC, on ST_Flag = on } return
165 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/13(日) 21:50:43 ID:N8ylNJMv0] そう、それか↓みたいにしてもいいし #A:: If (interval > 0) { interval = 0 } else { interval = 3000 } SetTimer,ABC,%interval% return
166 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/13(日) 21:52:52 ID:N8ylNJMv0] 0だとOFFにならんのか #A:: If (interval > 0) { SetTimer,ABC,OFF interval = 0 } else { interval = 3000 SetTimer,ABC,%interval% } return
167 名前:160 mailto:sage [2005/11/13(日) 22:19:27 ID:A/9NzbIG0] >>166 なるほど ありがとうございます
168 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/14(月) 03:42:28 ID:tpTqEc+p0] >+Up::send,{PgUp} >+Down::send,{PgDn} >+Left::send,{Home} >+Right::send,{End} こんな風に割り当てますよね。 これをあるウィンドウだけは適用したくないのですが、 そういった場合はどう書けばいいんでしょうか?
169 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/14(月) 05:14:00 ID:h9uxRFHg0] >>168 +Up:: WinGetActiveTitle, ActTitle If(ActTitle <> "割り当てたくないウィンドウタイトル") send,{PgUp} return タイトルで上手くいかなかったらウィンドウハンドル取得して分岐
170 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 13:59:54 ID:3R61f5fz0] >>169 どうもです。 169さんの方法だと、一キーずつ割り当てるしかないんですよね。 一気にやる方法があったら、便利だな。
171 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 15:34:14 ID:Qg1alPao0] 一気にやるってどういう意味だよ。
172 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 16:41:57 ID:g/ADYEbp0] +Up:: +Down:: +Left:: +Right:: WinGetActiveTitle, ActTitle If(ActTitle <> "割り当てたくないウィンドウタイトル") { send,{PgUp} } return
173 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 16:44:53 ID:g/ADYEbp0] すまん途中で書きこんでもうた。関数にしてパラメータ指定するようにしたほうがよりスマート +Up:: +Down:: +Left:: +Right:: WinGetActiveTitle, ActTitle If(ActTitle <> "割り当てたくないウィンドウタイトル") { if A_ThisHotkey = +Up send,{PgUp} else if A_ThisHotkey = Down send,{PgDn} : } return
174 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 18:16:51 ID:Qg1alPao0] ヒドスwwwww
175 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/15(火) 18:34:11 ID:Fr3rXntL0] +Up:: Ifwinnotactive,XXXX Send,{Pgup} return これで全部書いたほうが短かくてわかりやすい気がするのだが
176 名前:名無しさん@お腹いっぱい。 [2005/11/16(水) 01:46:01 ID:EX3GaO8n0] 任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか? わからないなりに調べてみたらShell_NotifyIconというAPIがあるようなので これをDllCallで呼びせさばできそうな気が。 DLLについてはまったくの初心者なので今奮闘しています。
177 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 02:17:34 ID:ExozuSiy0] これって構造体扱えるんだっけ? 構造体扱えなかったらShell_NotifyIconも使えないだろ
178 名前:176 mailto:sage [2005/11/16(水) 13:41:19 ID:EX3GaO8n0] >>177 ttp://lukewarm.s101.xrea.com/commands/DllCall.htm ここの「構造体と配列の扱い」によればできるようなのですが、 いかんせんまだ勉強中なので難しくて
179 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 14:43:39 ID:YfyIAE/u0] >>178 うまいこと考えたな〜
180 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 16:26:24 ID:ExozuSiy0] 構造体は扱えないけど、逃げ道はあるってことか 面倒そうなので漏れはパス
181 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/16(水) 17:08:15 ID:YfyIAE/u0] >>178 べつに難しく考えること無いよ。外部にあるからDllCall使ってロードしてやらなきゃならないだけで、 考え方は普通の関数扱うのと変わらない とりあえず、そこにある関数コピペすれば構造体に値をセットしたり読み出したりは出来る。 関数の中身は知らなくていい。 一番下のサンプルみれば使い方はわかるはず。
182 名前:176 mailto:sage [2005/11/16(水) 23:23:04 ID:EX3GaO8n0] WinGet, whd, ID, A VarSetCapacity(NotifyIconDate, 24, 0) InsertInteger(whd, NotifyIconDate, 4) DllCall("Shell_NotifyIcon", Int, 0x00000002, Str, NotifyIconDate) Return InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4) { mask := 0xFF Loop %pSize% { DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index - 1, UInt, 1, UChar, (pInteger & mask) >> 8 * (A_Index - 1)) mask := mask << 8 } } わからないなりに作ってみましたが、うまくいかないです。 たぶん色々勘違いしてると思うのですが。
183 名前:名無しさん@お腹いっぱい。 [2005/11/18(金) 03:16:50 ID:/PztpgYi0] テキスト入力欄かどうかを取得するにはどうすればいいでしょうか? If(A_CaretX <> "")だと入力欄でないところでも反応してしまいます
184 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/18(金) 22:11:48 ID:KVZUSxn10] たしかA_CaretXとA_CaretYはエディット以外の場合は コントロールの左上の座標になるから そんな感じで弾けばいいと思うよ
185 名前:183 mailto:sage [2005/11/18(金) 22:16:55 ID:/PztpgYi0] >>184 例えばSleipnirとかJaneとかでテキストを選択してコピーしたら その位置にキャレットがあると見なしてしまいまして
186 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 01:56:22 ID:adRLoPdI0] EDITコントロールか否かの判定はControlGetでLine数を取得してチェックしてる。 非EDIT コントロールの場合 0が返るので ControlGet,line_cont,LineCount,,%ctl%,ahk_id %hwnd% if line_cont > 0 { ;テキスト入力欄の処理 } あとSendMessageで EM_xxx あたりの情報を調べるとか。 www.winapi-database.com/Message/EM/ 編集不可だがコントロールはEDIT使ってる場合(AU3_Spy.exeとか)もあるので そういう場合はどうにかしてLoked状態を確認しないといかんかも知れん
187 名前:183 mailto:sage [2005/11/19(土) 02:20:34 ID:EUr5m4mr0] >>186 ありがとうございます ですがライン数取得では上手くいかないものが多くて諦めていましたが、 殆どのクラス名に「Edit」が入っていたのでクラス名取得して分岐するようにしました。
188 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 10:46:19 ID:q++McXD/0] >>176 > 任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか? これぜひ俺も知りたい。 自分が使ってる常駐ソフトはほとんどアイコン非表示にできるが、1つ2つできないのがある。 XP付属の「アクティブでないインジケータを隠す」はあまり好きではないし。
189 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 12:11:21 ID:adRLoPdI0] >>182 試してないしちょっとググって調べて見ただけだが、とりあえずhIconをどうにかして 取得して構造体にセットしてやらんといかんのとちゃうか? NOTIFYICONDATA構造体 Type NOTIFYICONDATA cbSize As Long 構造体のバイト数 hWnd As Long 対象のウィンドウハンドル uID As Long タスクバーアイコンのユーザー定義のID (つまり、アイコンを複数使うときのアイコンの番号のこと) uFlag As Long 有効なメンバを示す定数の組み合わせ uCallbackMessage As Long ユーザー定義のメッセージ (アイコンの上でマウスイベント(クリックなど)が発生すると ウィンドウに送られてくるメッセ―ジ) hIcon As Long 追加・削除・変更するアイコンのハンドル szTip As String * 64 チップヘルプのテキスト (アイコンの上にマウスを1秒くらい置いた時に表示される文字列) End Type
190 名前:名無しさん@お腹いっぱい。 [2005/11/19(土) 12:23:12 ID:iPF8NBAy0] 一応聞くけどautohotkeyでやりたいって趣旨なんだよね フリーソフトを使ったら出来るけど
191 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 12:24:18 ID:q++McXD/0] >>190 ちなみにそのソフトとは?
192 名前:名無しさん@お腹いっぱい。 [2005/11/19(土) 13:04:10 ID:z99JDpKz0] 使ったことないけどニュースサイトとかで何種類か見た とりあえず今ぐぐったらコレがあった 常駐しないのがあるかは知らん ttp://www.vector.co.jp/soft/win95/util/se293688.html
193 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 13:51:07 ID:adRLoPdI0] タスクトレイ アイコン 整理 でググると TrayManager とか Tray Wizard とかTrayExpand とか出てくる。 TrayExpandはソースも公開してるみたいだし、AHKでやりたいなら参考にしてみては?
194 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/19(土) 14:04:50 ID:0di78jxb0] >>182 とりあえず、戻り値ぐらいみれ。 >>189 トレイアイコンの削除するだけならhIconはいらないが、uIDが必要。 まぁ、既存のソフト使ってしまった方がいいようなきもする・・・AHKでやるメリットあまりないような・・