[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 14:54 / Filesize : 298 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

AutoHotkey Thread 2



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

87 名前:名無しさん@お腹いっぱい。 [2005/11/03(木) 04:45:03 ID:CGo3fQX00]
キャプションを非表示にすることってできますか?
たぶんSendMessageを使うんだろうけど、見つかりません。

88 名前:87 mailto:sage [2005/11/03(木) 05:08:44 ID:CGo3fQX00]
みつかりました。
SendMassageではなくてWinSetだけれど。

WinSet, Style, ^0x00C00000

89 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 16:00:33 ID:aDGTml8d0]
あるアプリAを起動すると、別のアプリBも自動的に起動するようにするには、どのようにすればよいのでしょうか?

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 16:16:15 ID:RQBG0Gu80]
条件をもっと絞ってくれないとな。
単純な方法から高い連動性を求めるものまでいろいろあるから

91 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 16:53:28 ID:aDGTml8d0]
アプリAが何らかの方法で起動されると、プロセスを監視していたAutoHotKeyがそれを察知してアプリBも自動的に開くようにしたいのです。
何秒後に開く、とかの指定は必要なく、アプリAを終了したらアプリBも終了する、などの機能も必要ありません。
AutoHotKeyの監視はできれば5分ごとに監視するようにしたいのですが、常に監視するのでもかまいません。

方法をご存じの方がいましたら、お願いします。

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 17:47:09 ID:GMRToEkf0]
#Persistent
Settimer,kansi,5000
kansi:
IfWinExist,A
If hoge = 0
{
{
IfWinExist,B
{
hoge = 1
}
else
{
Run,B
}
}
return
}
else
{
hoge = 0
return
}

こんな感じでいいんでしょうか?

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/03(木) 17:49:07 ID:GMRToEkf0]
スレの流れからして俺、最低だな・・・。

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」が入っていたのでクラス名取得して分岐するようにしました。






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

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

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