1 :
名無しさん@お腹いっぱい。 :
2005/10/21(金) 04:31:53 ID:qy14hWPT0
SendMessage,0x10,0,0,,ahk_id
>>1
#SetThreadMood, Mataari
2つのテキストファイルを比較して、違う箇所を変数に代入するって無理ですよね?
おいおい、マジで1の説明スクリプトネタにしたんかよ。 miscにテンプレ案まとめてくれた人いたのに無視してるし。 しかし解説くらい入れてくれ、始めてきた人が何のソフトかわからんだろ /* AutoHotKeyはキーボードやマウスなどに様々な機能を割り当てる常駐ユーティリティです。 スクリプトで自由に動作を設定できます。 ポップアップメニューや入力ボックスなどのGUIを表示することができ、 応用次第で使い方は無限に広がります。 */
7 :
補足 :2005/10/21(金) 07:32:49 ID:U6Eoic8d0
これってLANで繋がってる別のPCにキー操作を送ることは出来ますか?
(・3・) ?
>>8 確か本家のほうでそういうのなかったっけ?
英語わかんないんでちゃんと読んでないが、向こう製の有名なソフトと組み合わせると
クライアントPCをどうにかできたのあった気がする
12 :
5 :2005/10/22(土) 17:01:31 ID:0mEJt8xM0
やっぱ無理ですか?
がんばりゃ出来るだろ
14 :
名無しさん@お腹いっぱい。 :2005/10/22(土) 17:22:49 ID:T09muY/00
>>12 ロジックが難しいよ
どんな仕様にするか自分で考えてみた?
この難しさは言語関係ないよ
>>12 Windows付属のFCや、GNUのdiffを呼び出して、
結果を標準出力でもらうのがいいと思います。
16 :
5 :2005/10/22(土) 17:56:58 ID:0mEJt8xM0
スクリプト初心者の自分には無理っぽいですね・・・
>>16 私も初心者ですが、
ttp://www.autohotkey.com/docs/ 首っ引きで落書きして遊んでますよ。
今は試しもせずにここに落書きしますが
file1=C:\data\1.txt
file2=C:\data\2.txt
tmpfile:=%TEMP%\A_NowUTC%
RunWait, FC /n %FILE1% %FILE2% > %tmpfile%
FileRead, fc, %tmpfile%
何がしたいか分からないですが、最初はこんな雰囲気じゃないですか?
(上記だとFCの不要な出力まで入るので、FileReadLineで除外しながら読むべき)
>>17 >RunWait, FC /n %FILE1% %FILE2% > %tmpfile%
ここがうまくできないです。
File1 = D:\a.txt
File2 = D:\b.txt
File3 = D:\c.txt
RunWait, FC %File1% %File2% > %File3%
Return
とやっても出力されず。
>>18 コンソールで標準出力取り込みたい場合は
RunWait, %COMSPEC% /C FC /n %FILE1% %FILE2% > %tmpfile%,,hide
詳しい説明知りたかったら、DOS窓開いて cmd.exe /? (9x系は command.com /?)してみれ
20 :
18 :2005/10/23(日) 01:06:30 ID:GKt8y+QZ0
21 :
名無しさん@お腹いっぱい。 :2005/10/24(月) 04:09:18 ID:a7aA78Tt0
正規表現使うのって無理? なんか通すなら何がいいかな
やっぱクリップボード使うしか手段はないのか・・・。
標準出力か直接ファイル書き出しできるツールで出力結果テンポラリに書き出して FileReadで読み込んだらどうだろう ツールはperlでもDMonkeyでもWSHでもエディタマクロでも好きなの使いたまい
RegExp扱えるDLL(各種)をDllCallで利用するのは無しですか。
oioi!
28 :
21 :2005/10/24(月) 21:37:42 ID:a7aA78Tt0
SpilitPathって「ソ」が入ってるとうまく働かないみたいなんですが・・・・ 他にダメ文字ってあります?
30 :
29 :2005/10/24(月) 22:35:41 ID:a7aA78Tt0
よく調べずにすみません。 一般的に言われてる通り、2バイト目に \ を含むとダメなようですね。
窓使いの憂鬱の &EditNextModifier のような機能を持たせる記述はありますかね。 以下,窓使いの憂鬱の Manual から &EditNextModifier の説明です。 ---------------------------------------------------------------------------- 次にユーザーがキーを入力した時に、モディファイヤ が押されていることにします。例えば、 key ESC = &EditNextModifier(M-) とすると、Alt + X などを ESCAPE X などで代用することが可能になります。 -----------------------------------------------------------------------------
ダメ文字回避することって公式で頼まないと無理?
33 :
名無しさん@お腹いっぱい。 :2005/10/25(火) 02:25:47 ID:8o+XQN/n0
多分むかし誰かが頼んだと思う でも英語圏だと全然無意味だし 日本人とかがソース提供しないと無理じゃないかな
ここや流行らせるBBSで話題に上がってるのは何度も見たけど 実際に本家に特攻した人いたんだっけ? (IME云々のあたりはサンプル送ろうかって話も出たけどSendMessageでカタが付いたので 結局フィードバックはしなかった筈)
ゲームオプションを開こうと↓のように記述したのですが、上手く開けません。 Run,c:\windows\rundll32.exe shell32.dll,Control_RunDLL C:\WINDOWS\SYSTEM\JOY.CPL どこか足りない部分でもあるのでしょうか?
, を `, でエスケープすれば?
無事開くことができました。 即レスありがとうございました。
--- test.ini ------ [test] testpath = %A_MyDocuments%\Script ----------------- IniRead, testpath, c:\test.ini, test, testpath , 変数testpath中の %〜%部分を展開させる方法ってありますか StringReplace,testpath,testpath,`%A_MyDocuments`%,%A_MyDocuments% 内容が固定で予測できるものなら↑で置換えられるけど 環境変数とかもフレキシブルに参照できたらなぁと
質問です。
http://www.autohotkey.com/docs/commands/KeyWait.htm のKeyWaitのコマンドリファレンスのサンプル3
*NumpadAdd::
MouseClick, left,,, 1, 0, D ; Hold down the left mouse button.
KeyWait, NumpadAdd ; Wait for the key to be released.
MouseClick, left,,, 1, 0, U ; Release the mouse button.
return
をNumpadAddからShiftやらCtrlやらAltやらに変えると
うまく動かないのですが(どうもキーがリリースされた時点でスクリプトが走る感じになってしまう
修飾キーでも動く、なにかいい方法はありませんか?
Shift::
MouseClick, left,,, 1, 0, D
KeyWait, Shift
MouseClick, left,,, 1, 0, U
return
Shift:: を +Shift:: で一応出来た。これが正しいのかは知らんけど。 ペイント:押してる間ちゃんと描画可能であることを確認。 エクスプローラ:押してアイコンのドラッグ可能であることを確認。 Spy++で一応メッセージもみてみたけど多分大丈夫だと思う。
>>38 Transform,Derefでできる気がする
42 :
38 :2005/10/27(木) 21:26:36 ID:BJupbOTH0
>>41 thx ! ↓で試してみたら上手くいったよ!
/*
[test]
testpath = %A_MyDocuments%\Script
[dmy]
*/
IniRead, testpath, %A_ScriptFullPath%, test, testpath ,
Transform,pathdata,Deref,%testpath%
MsgBox,%pathdata%
return
ついでに Transform,val,HTML も試してみたけどこっちは2バイト文字(日本語)がだめぽ
いつのまにか1.0.40.03 になってる
Set Win = WScript.CreateObject("Shell.Application") 'Win.MinimizeAll '全ウィンドウを最小化 'Win.UndoMinimizeALL 'ウィンドウ操作を元にもどす 'Win.TileVertically 'ウィンドウを左右に並べて表示 'Win.TileHorizontally 'ウィンドウを上下に並べて表示 Win.CascadeWindows ' ウィンドウを重ねて表示 こんなvbsをAHKで賢くやるほうほうはないですかね。 (vbsはコンパル時間がうざい)
なにを言ってるのか解らんのだが・・・
解像度を取得して WinSetで並べる
vbsで何でコンパイルが必要なのかわからん、あれもスクリプトやろ 全最小化と元に戻すのはまんまのがある、コマンド調べろ 並べて表示、重ねて表示はタスクバーのコンテクストメニューから選べるので その辺をエミュレートするとか。
LButtonを押した、離したをキーで代替したいのですが w:: ; Send,{LButton Down} return まではできたのですが、wキーを離したというイベントは取得できないのでしょうか? ???:: ; Send,{LButton Up} return
インタープリタ言語って実行するたびコンパイルしてるみたいな感じなんでしょ?
そんときのウェイトがダルいっつってんだと思うけど、俺も
>>48 に同意
VBSが必要な理由がわからない
>>49 流行らせるページにそのものズバリで解説されてるよ
NT系限定みたいだけど
>>51 目を通してみたつもりだったんですが見落としてました。
NTで検索したら見つかってこれでできました。
ありがとうございます。
w:: ;
Send,{LButton Down}
return
w up:: ;
Send,{LButton Up}
return
>>40 ありがとうできますた。
+Sift::
とか、なんか裏技っぽいですねぇ
クリップボード拡張を作ってみようと思ったんだけど クリップボード内に指定した文字列が入らずに 元からあった内容が貼り付けられたり メニュー操作が無視されたりします(何も起こらない) 書いたのは以下のような内容なのですが、何かいい方法はありませんか? Backup := ClipboardAll Menu,clip_select,Add,line,clip Menu,clip_select,Add,text,clip Menu,clip_select,Show,%A_CaretX%,%A_CaretY% exit clip: if A_ThisMenuItemPos=1 { Clipboard = ―――――――― send,^v Clipboard := Backup Backup := return } if A_ThisMenuItemPos=2 { FileRead,Clipboard,C:\text.txt send,^v Clipboard := Backup Backup := return }
56 :
名無しさん@お腹いっぱい。 :2005/10/30(日) 05:09:41 ID:TyhuAUFb0
音量をCtrl+UpとCtrl+Downで操作し、そのボリュームをGUIで表示して1秒後に消える というものを作ろうとしています。(ようはMasterVCみたいなもの) Gui, +AlwaysOnTop -Caption Gui, Color, 245DDB Gui, Add, Text, vVolume cWhite, *** Return ^Up:: SoundSet, +5, Master Gosub, Sound Return ^Down:: SoundSet, -5, Master Gosub, Sound Return Sound: SoundGet, Vol, Master Transform, Vol, Round, %Vol% GuiControl,, Volume, %Vol% Gui, Show, x624 y998 NA Sleep, 1000 Gui, Hide Return しかし、これだと音量を例えば20上げたくてCtrl+Upを4回押しても 1回押すごとに1秒待たなくてはいけず、反映されません。 どなたかお力をお貸しください。
>>56 タイマーでGui,Hideを1秒後に1回だけ実行させるように取り計らう
59 :
56 :2005/10/30(日) 06:04:03 ID:TyhuAUFb0
>>57 なるほど、こんな方法があったんですね。
ありがとうございます。
ところで、これのGUIウィンドウがタスクバーに表示されないようにできないでしょうか?
60 :
55 :2005/10/30(日) 06:53:42 ID:/Ikc9y6N0
>>58 Clipwaitを入れたりはしてたんですが
そういえばSleepはやってませんでした。
ClipWait
Sleep, 250
ぐらいを挟んだらたまにコケますがうまくいくようになったようです。
とりあえずこれで微調節してみようと思います。
ありがとうございました。
>>59 Gui,+/-Option
>>60 ClipWaitはクリップボードを空にしてからじゃないと意味がないよ
内容が書き換わったか、ではなくクリップボードに何か入っているかを見てるから
62 :
56 :2005/10/30(日) 14:09:58 ID:TyhuAUFb0
>>61 見あたらないんですが・・・。
どのオプションでしょうか?
63 :
56 :2005/10/30(日) 14:23:56 ID:TyhuAUFb0
見つかりました。 +ToolWindowですね。すみませんでした。
64 :
56 :2005/10/30(日) 14:33:52 ID:TyhuAUFb0
もう1つすみません。 +E0x00000020を入れても透過ウィンドウにならないです。
つWinSet
68 :
56 :2005/11/01(火) 22:04:36 ID:hYFbhs5k0
>>66 >>56 のSoud:の部分を
Sound:
SetTimer, GuiHide, off
SoundGet, Vol, Master
Transform, Vol, Round, %Vol%
GuiControl,, Volume, %Vol%
Gui, Show, x624 y998 NA
SetTimer, GuiHide, 1000
Return
GuiHide:
SetTimer, GuiHide, off
Gui, Hide
Return
>>67 >>56 の時点でできた上のスクリプトで動作は満足していましたが、リンクのスクリプトも参考になりました。
ところで、視覚スタイルをOFFにする以外にタスクバーのグラデーションって切れないんでしょうか?
上のスクリプトの色設定だとタスクバー上でしっかり隠れてくれない。
透過も上手くいかないし・・・・
69 :
56 :2005/11/01(火) 22:05:59 ID:hYFbhs5k0
>
>>56 の時点でできた上のスクリプト
>>59 の時点でできた上のスクリプト
間違いです
71 :
70 :2005/11/01(火) 22:30:27 ID:so0ECgfj0
70のエラーになるやつです。 Gui, +AlwaysOnTop -Caption Gui, Color, 245DDB Gui, Add, Text, vVolume cWhite, *** Return ^Up:: SoundSet, +5, Master Gosub, Sound Return ^Down:: SoundSet, -5, Master Gosub, Sound Return Sound: SetTimer, GuiHide, off SoundGet, Vol, Master Transform, Vol, Round, %Vol% GuiControl,, Volume, %Vol% Gui, Show, x624 y998 NA SetTimer, GuiHide, 1000 Return GuiHide: SetTimer, GuiHide, off Gui, Hide Return
>>71 7行目(以降)のどこか(ていうか行頭)に不正な文字がある。
2ちゃんに貼ってて整形が崩れずインデントが保たれている段階で気付こうな
73 :
70 :2005/11/01(火) 23:36:01 ID:so0ECgfj0
全角スペースいれるのやめない? ちょっと見にくいだけじゃん。コピペめんどくせ。
>>74 どっちにしろ、コピペしたのをそのまま使わず
後で自分好みにタブ入れたり改良したり変数変えたりするから
掲示板上での見やすさを優先してほしい。
なんか裏技的にうまくインデントを表現できないかね
漏れは自分が質問するときは除去してるけど、人にレス付ける時は 敢えて全角スペースでインデント入れる場合が多いな。 特にそのままAutoHotkey.iniにコピペして使いそうな相手なら尚更 あぷろだに上がってる投稿モノの中に、全然インデントされてないスクリプトが いくつかある。多分元々プログラミングしない人で掲示板でしか 人のソース見てないとインデントの概念自体がないんだと思う。 コーディングルールは個人の好き好きではあるけど、AHKの場合は 人から貰ったソースを手を入れずにそのまま使えるケースは少ないし 他人が見てもわかりやすい記述は知ってて欲しいと思うので
スペース0 スペース1 スペース2 スペース3 スペース4
スペース0  スペース1   スペース2    スペース3     スペース4
スペース0
スペース1
スペース2
スペース3
スペース4
>>78 はコピペミス。
 または と書くと、半角スペースに変換される。
半角スペースが連続しても1個に変更されてしまうことがないみたい。
ギコナビで特殊文字変換してる
83 :
名無しさん@お腹いっぱい。 :2005/11/02(水) 17:33:22 ID:y7CD98+Z0
>>77 世の中にはインデントがないほうが見やすい人も存在する
>>83 >コーディングルールは個人の好き好きではあるけど、AHKの場合は
>人から貰ったソースを手を入れずにそのまま使えるケースは少ないし
>他人が見てもわかりやすい記述は知ってて欲しいと思うので
85 :
名無しさん@お腹いっぱい。 :2005/11/02(水) 20:23:36 ID:5+koFFKw0
87 :
名無しさん@お腹いっぱい。 :2005/11/03(木) 04:45:03 ID:CGo3fQX00
キャプションを非表示にすることってできますか? たぶんSendMessageを使うんだろうけど、見つかりません。
88 :
87 :2005/11/03(木) 05:08:44 ID:CGo3fQX00
みつかりました。 SendMassageではなくてWinSetだけれど。 WinSet, Style, ^0x00C00000
あるアプリAを起動すると、別のアプリBも自動的に起動するようにするには、どのようにすればよいのでしょうか?
条件をもっと絞ってくれないとな。 単純な方法から高い連動性を求めるものまでいろいろあるから
アプリAが何らかの方法で起動されると、プロセスを監視していたAutoHotKeyがそれを察知してアプリBも自動的に開くようにしたいのです。 何秒後に開く、とかの指定は必要なく、アプリAを終了したらアプリBも終了する、などの機能も必要ありません。 AutoHotKeyの監視はできれば5分ごとに監視するようにしたいのですが、常に監視するのでもかまいません。 方法をご存じの方がいましたら、お願いします。
#Persistent Settimer,kansi,5000 kansi: IfWinExist,A If hoge = 0 { { IfWinExist,B { hoge = 1 } else { Run,B } } return } else { hoge = 0 return } こんな感じでいいんでしょうか?
スレの流れからして俺、最低だな・・・。
あー、Ifがネストしちゃうと漏れは完全アウトだな。 パッと見ではもちろんじっくり考えても全然理解できない。 で、エディタに貼っつけてインデントしてから考えてみたんだけど 一番上位のIfWinExist,A の{ }抜けてるけどいいのんかい? あと 7,16行の { } に意味なくないか、これ
ThumbSenseのように、タッチパッドに触れているかどうかを判定できるようになるといいなあ。
TAB使えばいいじゃん
もしどなたかソースコード解凍できる人いましたら ソースからShellExecuteというAPI検索して6個目(=最後)の引数何になってるか 確認していただけませんか?
99 :
98 :2005/11/03(木) 23:06:30 ID:ZNzLxnpo0
ごめんやっぱりいいです。 でもやっぱりなんかおかしい。
マウスカーソルを変更したり消去するコマンドは無かったorz ノーマウスカーソルの機能をぱくれると思ったが残念
>>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
> あ、マウスカーソルに訂正
dllcallでShowCursorを使えばいけそうだけど #y::DllCall("User32\ShowCursor", "int", 0) テストで作ってみても反応無かったorz 助けて
>>102 それ自分のプロセスのウィンドウにしか利かない
>>106 ありがとう。
日本語のヘルプ(chm)しか見てなかった・・・すまん
>>107 こっちも参考にしてみる。ありがと
今週初めにAutoHotkey知ったんだがおもしろい。
これでCaps入れ替えができれば完璧なんだが・・・
やっとサッカーチームが!
戦う相手がいません!
こんなスクリプト書いてくださいってのは、ここ的にアリですか?
(ω・ )ゝ なんだって?
>>112 こんなスクリプト書いてくださいってのは、ここ的にアリですか!!!
/.──┬ /⌒ヽ ┌─┴─┐ . | ヽヽヽ ―┼― .| ヽ | \ /| ┌─┐| ノ  ̄フ .  ̄| ̄ヽ | , | | | \  ̄| ̄ヽ | . | | └─┘| | ─┼─ ,ノ │ ノ . | \ | ゝ | | ノ │ |/ ̄ヽ | J ○ J . ノ ヽノ . J \_ レ ノ ヽノ _ノ _____ ____ー┼ー | / _/_ -- 二二_ /~| ̄/ヽ / ヽ | \  ̄ ヽ | | ノ .| ∨ | / _| | | | ̄| ノ l____, \ノ ノ (_ノヽ レ  ̄
>>111 いちいちそんな無駄レスせずにさっさと本題書けよ。印象悪いぞ。
過去スレからの流れを見てるとこのスレは自分である程度試行錯誤する人間には
手助けするけど、丸投げは(・A・)イクナイ!って感じだからそれを踏まえた上でヨロシク。
横やりですいません。
>>102 のヒントお願いします。。。
>>111 無し
ヒントを教えてくれとかならまだしも、丸投げはダメだろ
>>111 とりあえず、なにがしたいんだ?怒らないから言ってみなさい
^p:: IfWinActive, ahk_class Notepad Send, ^o else Send, ^p return こんな感じのスクリプトを書いているんですが、指定ウィンドウ以外で無限ループしちゃいます。 こういう時どうしたらいいんでしょうか?
122 :
名無しさん@お腹いっぱい。 :2005/11/07(月) 20:39:04 ID:PUaC//G70
$^p::
>>117 では、ヒントをお願いします。
>>119 優しいお言葉どうもです。書いてみます。
起動していたらアプリをアクティブ、起動していなかったらアプリを起動。
これは出来ました。これにさらに、Ctrlを押していたらアプリを終了。
Altを押していたら、アプリを最前面にをトグルということをやりたいです。
Win + H >秀丸を起動、起動していたらアクティブ。
Win + Ctrl + H>秀丸を終了、起動していなかったら何もしない。
Win + Alt + H>秀丸を最前面に、起動していなかったら起動して、最前面に。
これ単純にすべてのホットキーを設定しちゃえばいいのですが、
いろいろなアプリに対応させたいので、関数っていうんですか?
処理をうまいことまとめられたらいいなぁとおもいまして。
>>120 ひぃ…そこをなんとか。ヒントだけでも。
どのへんを関数化したいのかわからんのだが 取り零しとかあるしトリガは素直にホットキー使ったほうがよい モデファイヤキーの押下状態で内部分岐もできるが これだと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
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─┛~~
「=」と「:=」ってどう使い分けるんですか?
130 :
128 :2005/11/08(火) 10:19:07 ID:AQU/ZuaD0
>>129 そうなんですか?
あとIfの時()で囲むか囲まないかってのもいまいちよくわかりません。
>>128 a:=A_AhkVersion
と
a=%A_AhkVersion%
だとaが同じ内容になる。
d=%abc%xyz%%
ってやりたくても出来ないので、こんなときは
b:=adc%xyz%
これで似たような意味になる。こう解釈してんだけど間違ってたらごめん。
132 :
131 :2005/11/08(火) 10:34:58 ID:w31TiB9U0
ごめん。 d=%abc%xyz%%→b=%abc%xyz%% 間違えました。
>>126 >>127 ずばり答えまで書いてくださって、ありがとうございます。
内容を解釈しながら、改良してみます。
>>127 あー、寝ぼけてるな・・・
hotkeyが関数に対応してたとしても別段コード変わらんよな・・
>>133 たしかに、ヒントじゃないなw
がんばってね
>>129 おいおい。。。
違うやろ、ifの = と == は文字列比較以外はほぼ一緒だけど
>131の解釈でだいたい合ってる
136 :
128 :2005/11/08(火) 19:12:51 ID:AQU/ZuaD0
「=」と「:=」の使い分けはわかりました。 「If」と「If()」は?
If var = value → 従来仕様、1行に1判定文しかかけない If (var1 = var2) and (var1 = "value") → 後から追加された形式、AND や OR で複数の判定を連結できる AHKは 1.0.25と1.0.34あたり(うろ覚え)で大幅な仕様追加があった。 := や if () 、Functionは従来の記述ルールでできない部分を拡張する形で導入された記述形式 従来仕様とチャンポンになってるので後から入ってきた人には分かりにくいかもしれないな
138 :
128 :2005/11/08(火) 19:32:07 ID:AQU/ZuaD0
>>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
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のトグルが出来てないような。
折角作ってもらったのに、ホットキーの方が確かってことなんですかねぇ。
いや、取りこぼしが発生するのは LoopやSettimerで自力監視する場合の話 Hotkeyコマンドは動的に割り当ててるだけでトリガはAHKまかせだし 問題ない筈だが
Returnを2回重ねてるところと Exit使ってるのの意味がわからんのだが toggleWindow: StringRight, key, A_ThisHotkey, 1 appTitle := appTitle%key% ifWinExist, %appTitle% WinSet, Topmost, TOGGLE, %appTitle% Return でいいんじゃね? (If あるんで全角インデントした)
ていうかappTitleにどんな値指定してんだか知らんけど 秀丸みたいに多重起動できるアプリだとウィンドウを限定できねんじゃね? 判定は ifWinExist じゃなくて ifWinActiveにして 任意のウィンドウがアクティブなときに動作させないと誤爆するな あと秀のようにアプリ自体がTopmostの機能をもってる場合はSendで ショートカットキー投げるとかしてそっち使ったほうが話は簡単かもしれんよ
>>143 秀丸落として試してみたが、うちでは問題なくトグル出来るが・・・
それと
>>141 が言うようにhotkeyコマンド使って設定した場合、ホットキーラベルで設定したのと同じ動作になるはずで、
反応鈍いって事はないだろう。ホントにそうならAHK自身のバグとしか考えられん。
>>144 ifWinExistでもちゃんとできるみたい。
同タイトルのウィンドウが存在した場合、まず最前面ウィンドウが優先され、
最前面がない場合と複数最前面がある場合、アクティブの時にはそのウィンドウに、
非アクティブの場合、最後にアクティブだったウィンドウに適用されるっぽいな。
違ったらごめん。
気になったのが、非アクティブの最前面ウィンドウを非最前面にしたときに
一度そのウィンドウをクリックしてやらないと、
他のウィンドウクリックしても後ろに行ってくれないが、
ここらへんはOSの仕様のような気がする。
topmostトグルするまえにWinActivateつかってアクティブにしてやれば一応解決するが。
ウィンドウ指定の条件をandじゃなくてorにすることはできないでしょうか。 IfWinActiveとかを何度も書かなきゃだめですか
>>147 なるほど。ウィンドウのタイトルを変数に入れてIf var inでマッチリストと
比較するわけですね。
or条件を使うときはIfWinActiveではなくこれを使ってみることにします。
ありがとうございました。
タイマー作るのって無理? InputBoxで入力した時間Sleepしてアクションを起こすってことはできるけど 残り時間の表示をどうやればいいのかわからない。
>>149 time=%A_Sec%
settimer,count,1000
count:
rest:=time-A_Sec+30
tooltip,%rest%
return
esc::exitapp
こんなんでええのだろうか
151 :
149 :2005/11/11(金) 04:05:08 ID:khVemMEi0
>>150 なるほど!
これはは思い浮かばなかった。
迅速なレスありがとうございます。
152 :
149 :2005/11/11(金) 04:10:33 ID:khVemMEi0
あ、いやちょっと待って。 よく考えたら全然ダメじゃん。 数秒確認しただけでレスしちゃった。
returnの前にこれ追加しといて if rest=0 exitapp 的外れだったらすまん。つーか何がダメなんかわからん、とりあえずカウントダウン表示してみただけだし。
154 :
129 :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 こういう計算だと思うんですが・・・・。 私の方が間違っているのかな。
A_TickCountつかえ
時間関係の計算はよくわからんルールになってるぞ 一人で脳使ってないでヘルプ熟読してきなされ
157 :
名無しさん@お腹いっぱい。 :2005/11/11(金) 18:08:09 ID:KIS/mZVoO
ちょっとくらいヒントをくれてもいいじゃないですか。
とりあえず149はA_Sec参照して何がやりたいんだ? 単純に残り秒数カウントダウンしたいだけなら dwncnt := 30 ;残り秒数 settimer,count,1000 count: dwncnt-- tooltip,%dwncnt% return きちっと精度上げたいならSetTimerの値を小さくして>155が言うようにA_TickCount使う
159 :
149 :2005/11/11(金) 20:12:02 ID:khVemMEi0
○時間○分○秒というタイマーも使えるようにしたかったので A_TickCountではなく、YYYYMMDDHH24MISSで記述した物からEnvAddでSecondsを指定して 1秒ごとに-1加算するようにしたら上手くできました。
あるSetTimerがonの時とoffの時で条件分岐って無理?
タイマーが動いてるかどうかを調べる方法はなかったはず 自分でフラグ変数用意して現在の状態覚えとくようにすればOKだけど
162 :
160 :2005/11/13(日) 19:37:47 ID:A/9NzbIG0
自分で変数を用意する。
164 :
160 :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
そう、それか↓みたいにしてもいいし #A:: If (interval > 0) { interval = 0 } else { interval = 3000 } SetTimer,ABC,%interval% return
0だとOFFにならんのか #A:: If (interval > 0) { SetTimer,ABC,OFF interval = 0 } else { interval = 3000 SetTimer,ABC,%interval% } return
167 :
160 :2005/11/13(日) 22:19:27 ID:A/9NzbIG0
>+Up::send,{PgUp} >+Down::send,{PgDn} >+Left::send,{Home} >+Right::send,{End} こんな風に割り当てますよね。 これをあるウィンドウだけは適用したくないのですが、 そういった場合はどう書けばいいんでしょうか?
>>168 +Up::
WinGetActiveTitle, ActTitle
If(ActTitle <> "割り当てたくないウィンドウタイトル")
send,{PgUp}
return
タイトルで上手くいかなかったらウィンドウハンドル取得して分岐
>>169 どうもです。
169さんの方法だと、一キーずつ割り当てるしかないんですよね。
一気にやる方法があったら、便利だな。
一気にやるってどういう意味だよ。
+Up:: +Down:: +Left:: +Right:: WinGetActiveTitle, ActTitle If(ActTitle <> "割り当てたくないウィンドウタイトル") { send,{PgUp} } return
すまん途中で書きこんでもうた。関数にしてパラメータ指定するようにしたほうがよりスマート +Up:: +Down:: +Left:: +Right:: WinGetActiveTitle, ActTitle If(ActTitle <> "割り当てたくないウィンドウタイトル") { if A_ThisHotkey = +Up send,{PgUp} else if A_ThisHotkey = Down send,{PgDn} : } return
ヒドスwwwww
+Up:: Ifwinnotactive,XXXX Send,{Pgup} return これで全部書いたほうが短かくてわかりやすい気がするのだが
176 :
名無しさん@お腹いっぱい。 :2005/11/16(水) 01:46:01 ID:EX3GaO8n0
任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか? わからないなりに調べてみたらShell_NotifyIconというAPIがあるようなので これをDllCallで呼びせさばできそうな気が。 DLLについてはまったくの初心者なので今奮闘しています。
これって構造体扱えるんだっけ? 構造体扱えなかったらShell_NotifyIconも使えないだろ
178 :
176 :2005/11/16(水) 13:41:19 ID:EX3GaO8n0
構造体は扱えないけど、逃げ道はあるってことか 面倒そうなので漏れはパス
>>178 べつに難しく考えること無いよ。外部にあるからDllCall使ってロードしてやらなきゃならないだけで、
考え方は普通の関数扱うのと変わらない
とりあえず、そこにある関数コピペすれば構造体に値をセットしたり読み出したりは出来る。
関数の中身は知らなくていい。
一番下のサンプルみれば使い方はわかるはず。
182 :
176 :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 <> "")だと入力欄でないところでも反応してしまいます
たしかA_CaretXとA_CaretYはエディット以外の場合は コントロールの左上の座標になるから そんな感じで弾けばいいと思うよ
185 :
183 :2005/11/18(金) 22:16:55 ID:/PztpgYi0
>>184 例えばSleipnirとかJaneとかでテキストを選択してコピーしたら
その位置にキャレットがあると見なしてしまいまして
EDITコントロールか否かの判定はControlGetでLine数を取得してチェックしてる。
非EDIT コントロールの場合 0が返るので
ControlGet,line_cont,LineCount,,%ctl%,ahk_id %hwnd%
if line_cont > 0
{
;テキスト入力欄の処理
}
あとSendMessageで EM_xxx あたりの情報を調べるとか。
http://www.winapi-database.com/Message/EM/ 編集不可だがコントロールはEDIT使ってる場合(AU3_Spy.exeとか)もあるので
そういう場合はどうにかしてLoked状態を確認しないといかんかも知れん
187 :
183 :2005/11/19(土) 02:20:34 ID:EUr5m4mr0
>>186 ありがとうございます
ですがライン数取得では上手くいかないものが多くて諦めていましたが、
殆どのクラス名に「Edit」が入っていたのでクラス名取得して分岐するようにしました。
>>176 > 任意のアプリのタスクトレイアイコンを非表示にすることってできないでしょうか?
これぜひ俺も知りたい。
自分が使ってる常駐ソフトはほとんどアイコン非表示にできるが、1つ2つできないのがある。
XP付属の「アクティブでないインジケータを隠す」はあまり好きではないし。
>>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でやりたいって趣旨なんだよね フリーソフトを使ったら出来るけど
192 :
名無しさん@お腹いっぱい。 :2005/11/19(土) 13:04:10 ID:z99JDpKz0
タスクトレイ アイコン 整理 でググると TrayManager とか Tray Wizard とかTrayExpand とか出てくる。 TrayExpandはソースも公開してるみたいだし、AHKでやりたいなら参考にしてみては?
>>182 とりあえず、戻り値ぐらいみれ。
>>189 トレイアイコンの削除するだけならhIconはいらないが、uIDが必要。
まぁ、既存のソフト使ってしまった方がいいようなきもする・・・AHKでやるメリットあまりないような・・
TrayExpandが自分には良さそう これ使うことにします
197 :
189 :2005/11/20(日) 05:00:08 ID:zlspGYDE0
>>194 フォローサンクス ええかげんなレスしてスマンカッタ
タスクトレイの項目をメニューで表示させることはできるでしょうか? フリーソフトでもこういった感じのソフトは自分で探した限り見つからなかったので 知っている方がいたら教えていただきたいのです
SetTimerってAutoHotkey.iniに書いても動かないの?
動くよ
>>201 動くのか・・・
特定のウインドウが表示されたらOKボタンをクリックしたいんだけど
.ahkに書くと動くんだけど、AutoHotkey.iniに書いても動かない
これじゃだめなの?
SetTimer,b,250
return
b:
IfWinActive,Aterm WARPSTAR
{
ControlClick,OK,Aterm WARPSTAR
return
}
return
常駐するSetTimerはAutoHotkey.iniの頭に書いて、 サブルーチンをAutoHotkey.iniの終わりに書いてみては 俺はそれで IfWinActive,リンク先を探す,指定したリンク先は、デスクト IfWinExist,ahk_class MSBLPopupMsgWClass などのウインドウを操作できてる
204 :
名無しさん@お腹いっぱい。 :2005/11/20(日) 21:41:56 ID:Gk4qhKIS0
多分常駐させてないだけだろ
SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。
ホットキー指定のないスクリプトは #Persistent入れないと常駐しないから
>>203-206 ありがとう
>常駐するSetTimerはAutoHotkey.iniの頭に書いて、
>SetTimerの上のほうに、Returnかホットキーの設定が書いてある気がする。
これだった。無事に動きました。ありがとう
iTunesを操作させるにはどうしたらいいですかね?
努力したらいいと思うよ
AutoHotkeyでiTunesを操作させるにはどうしたらいいですかね?
「:」に対してキーを割り当てたいのですが、うまくいきませんでした。 ::: ←ここでエラー ごにょごにょ 何か他に書き方があるのでしょうか?
NetworkStumblerというアプリを最大化で起動して、 その中のウィンドウをさらに最大化しようとしています。 NetworkStumblerが最大化で起動しても、アクティブになるまで 3秒ほどかかります。 起動してから「ALT+w+t」で中のウィンドウが最大化できますが AutoHotkey.iniで下のように書いてもうまくいきません。 最初の最大化で起動のみが成功し、中のウィンドウは変化がありません。 "Send, {LALT}wt"の部分は個別に動作確認できていますので、 その間の記述の仕方が問題でしょうか? #0:: run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", , max WinWaitActive, Network Stumbler if ErrorLevel <> 0 Send, {LALT}wt else return
If の判定が間違ってるのと、Elseが不要(書くならもう一行returnが必要) 子ウィンドウを枠一杯に広げるので満足なら Send,!wt でもいいけど SendMessage使えば本当の最大化もできるよ #0:: run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", , max WinWaitActive, Network Stumbler if ErrorLevel = 0 { SendMessage, 0x229, 0,0,MdiClient1,A ;WM_MDIGETACTIVE SendMessage, 0x225, %ErrorLevel%, 0,MdiClient1,A ;WM_MDIMAXIMIZE } return
217 :
215 :2005/11/23(水) 21:55:25 ID:w4Ag56cD0
>>216 ご丁寧にありがとうございます!
しかし、<>を=に変更してelse消しても現象は変わらず。
Send, !wtの後にreturn付けても同じでした。
SendMessage使ったやつをコピペでもダメでした。。。orz
とりあえず、子ウィンドウを広げられるだけで満足です。
もしかしてErrorLevelが0になってないのでしょうか?
大分前に入れた奴なんでバージョン古いけど うちでは上手くいってる XP SP1 Autohotkey Ver 1.0.38.1 NetStumbler ver 0.3.30 とりあえず MsgboxやOutputDebugでErrorLevelの値見たり if msgbox,OK else msgbox,NG とかやって試してみたら?
219 :
215 :2005/11/23(水) 23:56:41 ID:w4Ag56cD0
>>218 ちなみに私の環境は
2000 SP4
Autohotkey Ver 1.0.40.06
NetStumbler ver 0.4.0
>とりあえず MsgboxやOutputDebugでErrorLevelの値見たり
そういうやり方があるのですね。
if ErrorLevel = 0
{
msgbox,OK
return
}
else
msgbox,NG
return
↑を試したところ、タイトルバーが青くなる前に
「OK」が出ました。なのでSend, !wtが実行される
のが早過ぎるみたいですね。
Verupしたね
>>219 MsgBoxに制御が奪われたからアクティブになれなかったってオチじゃないような?
そこまでつきとめたら Sleepでウェイトいれてやればよろし
222 :
215 :2005/11/24(木) 22:05:57 ID:3njavchq0
>>218 >>219 おかげさまで望み通りの動作ができました!
感謝します。
;【NwtStumbler起動】
#7::
IfWinExist, Network Stumbler
{
WinMaximize
WinActivate
return
}
else
run "D:\apli\netstumbler\Network Stumbler\NetStumbler.exe", D:\apli\netstumbler\aplog, max
WinWaitActive, Network Stumbler
if ErrorLevel = 0
{
Sleep, 3000
Send, !wt
return
}
else
return
LastFoundWindowってWinWaitで機能しないんですか?
%1%や%2%はコマンドライン引数が分解されて格納されていますが、 コマンドライン引数全体を表す変数はないんでしょうか?
>>224 引数を「"」で囲めばだいたい解決すると思いますが
Loop, %0%
{
Part := %A_Index%
Unite = %Unite%%Part%%A_Space%
}
MsgBox, "%Unite%"
どうしようもない場面では
「0」に引数の数が入るのでこんなのでどうにかしてます。
>FileAppend [, Text, Filename]
>ファイル名の代わりに「*」を指定すると、標準出力にテキストを書き出せる。
http://lukewarm.s101.xrea.com/commands/FileAppend.htm --- test.ahk --------
FileAppend,Hello,*
---------------------
コンパイルしてプロンプトで test と打っても文字は何も表示されない。
test > a.txt とリダイレクトさせるとファイルには正常に出力される、何でだろ?
A_Indexを1度別の変数に入れちゃえばいいのか。 "でくくられていたかどうかが正確には判断出来ないですけど、 実用上は問題ないですね。 ありがとうございました。
228 :
名無しさん@お腹いっぱい。 :2005/11/27(日) 12:34:40 ID:R5M1hxQO0
Send,{LWin Down}やSend,{LWindown} で押し下げ状態にしたWinキーを元に戻すにはどうすればいいでしょうか? Send,{LWin Up}やSend,{LWin}とやっても戻りませんでした。
任意のアプリをタスクバーにボタンを表示しないようにしたいんだけど Gui,+ToolWindowに相当するものってない? ウィンドウスタイルを見てもそれらしいのがないっぽい
試してないけど 0x00000080 WS_EX_TOOLWINDOW あたりは?
231 :
229 :2005/11/27(日) 17:10:05 ID:GjCd3Btu0
>>230 見落としてた
しかし、小さいタイトルバーになってAltTabメニューにも表示されなくなるけど
何故かタスクバーには表示されたまま
色んなウィンドウで試してみたけど変わらない
WinSet,ExStyle,^0x00000080,A
ひらがなカタカナキ-にaltを割り当てたいのですが *vkF2::Send,{alt Down} *vkF2 up::Send,{alt Up} とするとaltが押しっぱなしになってしまいます 仮想キー押し上げにコマンドを割り当てることは出来ないのでしょうか?
233 :
名無しさん@お腹いっぱい。 :2005/11/28(月) 08:04:43 ID:QtDqyH5O0
TListViewの情報を取得するにはどうしたらいいでしょうか? ContrloGetのListはSysListVew32のようですし
コマンドライン引数の取得の仕方がわかったので書いておきます。 GetArgs() { args := DllCall("GetCommandLine", str) StringGetPos, pos, args, %A_ScriptName% StringLen, length, A_ScriptName count := pos + length + 1 StringTrimLeft, args, args, count return args } args := GetArgs() MsgBox, %args%
トンクス いただいた。
解説サイトの説明が糞だな。 窓使いの憂鬱も分かりづらくて導入しにくいところがあったが こっちはさらダメダメ。アホか。 流行らせる気全然ね〜だろ。ぼけだろ。
236がアホでぼけで理解力がダメダメなのはわかった
単に翻訳してるだけだし その労苦だけでもありがたいと思うけどね
239 :
233 :2005/12/04(日) 01:53:09 ID:c5I9hufm0
WinAPIやWindowMessageもできるだけ調べましたが、未だに解決できません TListViewの情報取得は無理でしょうか?
>239 TListView って SysListView32 のサブクラスっぽいからそのまま使えるんじゃない?
241 :
233 :2005/12/04(日) 11:20:41 ID:c5I9hufm0
>>240 もちろん試しました
SysListView32のところでは取得できたので記述が間違っているってことはないと思います
WindowMessageのLVM_xxxxで色々操作できるみたいなんですが、テキストは取得できないみたいで・・・
まだ悩んでいたのかよ ListVewのこたしらんがTEDITもEditコントロールとして認知、制御できるし ControlGetで取れる名称がSysListVew32だっつうなら その名を指定してやれば情報は取れるだろ。
できないのか、 ならGontrolGetTextでは?
244 :
233 :2005/12/04(日) 11:27:01 ID:c5I9hufm0
>>242 Contolの引数のことろにTListViewではなくSysListVew32を指定するってことですか?
もちろんやってみましたが無理のようです
245 :
233 :2005/12/04(日) 11:29:30 ID:c5I9hufm0
>>243 それも試しました
いくつかのアプリで試しているので取得したいアプリが特殊という可能性は低いと思います
246 :
233 :2005/12/04(日) 19:16:26 ID:c5I9hufm0
VarSetCapacity(LvItem,52,0)
InsertInteger(1,LvItem,0)
InsertInteger(0,LvItem,4)
InsertInteger(0,LvItem,8)
InsertInteger(&pszText,LvItem,20)
InsertInteger(100,LvItem,24)
SendMessage,0x1005,0,&LvItem,TListView1,A
Msgbox,%pszText%
ttp://yokohama.cool.ne.jp/chokuto/urawaza/listview2.html ここを参考にしましたが
これでいけると思ったけど駄目でした
InsertInteger()関数は書いてあります
エラー内容
モジュール 'comctl32.dll' のアドレス 5ABBD830 でアドレス 00D15714 に対する読み込み違反がおきました。
構造体は素人なので見よう見まねで書いてみましたが
どこかおかしいでしょうか?
AHKは万能なソフトってわけでもないのでそれだけ努力してダメなら無理なのかもしらんね とりあえず半端なレスして悪かった。
248 :
233 :2005/12/04(日) 20:29:14 ID:c5I9hufm0
>>247 >とりあえず半端なレスして悪かった
いえいえ
>AHKは万能なソフトってわけでもないので
もしどうしても駄目なら他のソフトやスクリプトを通してでも取得したいのですが・・・
どなかたお知恵をお貸しください
単に別プロセスのメモリー読もうとしてるからエラー出てるのでは? TListViewはListView用のLVM_〜が使えた気がする
250 :
233 :2005/12/04(日) 20:47:32 ID:c5I9hufm0
>>249 >TListViewはListView用のLVM_〜が使えた気がする
そうです、使えるようです。
実際LVM_GETITEMCOUNTでアイテム数は取得できますし。
>>246 のリンク先にもありますが、SendMessageの0x1005はLVM_GETITEMのことです
>単に別プロセスのメモリー読もうとしてるからエラー出てるのでは?
これについては自分にはよくわからないです
>>250 VirtualAllocEx MapViewOfFile
を駆使すれば取得できるが面倒
LVM_GETITEMCOUNTはSendMessageの戻り値がそのままアイテム数だから問題ないけど
LVM_GETITEMはLVITEMのポインタをLPARAMで渡してそこに情報を書き込んでもらう奴だから
LVITEM*が指すメモリーを共有メモリにするか、SendMessageする側でフックをかけてプロセスに割り込まないといけない
共有メモリー使う方法は
ttp://techtips.belution.com/ja/vc/0001/ あたりを参考にすれば出来るかな
253 :
233 :2005/12/04(日) 21:10:52 ID:c5I9hufm0
254 :
233 :2005/12/05(月) 12:27:58 ID:pnvrA0j10
gui,add,edit,vtitle R1 W300 gui,show return こんな感じでエディットボックスを作ってるんですが、日本語入力すると確定するまで表示されません。 普通に変換中に表示されるようには出来ないのでしょうか?何かオプションがあるのかな?
>>255 うちで使ってる簡単なもの。これで試して駄目だったらなんかIMEとかに問題ありそうな。
#NoTrayIcon
#SingleInstance
Gui, Add, Edit, vSrc X Y W210
Gui, Add, Button, Default gSrc x+6 ys-2, &Search
Gui, Show, , Amazon検索
return
Src:
Gui, Submit
Run,
http://www.amazon.co.jp/exec/obidos/search-handle-url/index=blended&field-keywords=%Src% ExitApp
GuiEscape:
GuiClose:
ExitApp
>>255 うちでは普通にでるけどなぁ・・・
win2ksp4 Atok16 MSIME2k どっちもOK
いちおう追記、AHK v1.0.40.05
259 :
255 :2005/12/05(月) 15:14:33 ID:yS+6IGXX0
>>256 >>257 ありがとうございます。早速試しましたが、やはりうまく表示されません。
例えば わたしは と打つと w しか表示されないです。
Returnを押すと、わたしは と表示されます
Version 1.0.40.10をいれてみましたが、症状はかわらず。
どーもうちのIMEの不具合か、設定の問題かもしれません。
ちなみにAHK以外の日本語入力は不具合ありません。
>>259 OSの種類とIMEのバージョンや設定(ナチュラルインプットとか詳細サービスとか)書いたら?
解決したかったら人任せじゃだめだよ
261 :
255 :2005/12/05(月) 16:21:24 ID:ONVNYKfr0
情報が足らず申し訳ありませんでした。 Windows Xp pro sp1 AHK Version 1.0.40.10 Microsoft IME Standard 2002 ver. 8.1 詳細なテキスト サービスをオフにするにチェック IME Watcherを使用 英字を常に半角で変換以外は設定をいじってません。 英語圏のソフトなのでこういう仕様なのかと思っていました。 我が家のPCの問題のようですので自力でがんばります。 皆様のお手を煩わせてほんとに申し訳なかったです。すみませんでした。
262 :
233 :2005/12/06(火) 00:06:41 ID:zKABzlSJ0
TlistViewってそもそも何?
264 :
260 :2005/12/06(火) 00:20:18 ID:061B1eK40
>>261 俺も
>>256 を試したら同じ現象が起きた
XP HOME SP2
IME2002でIME Watcherは使ってない
今さらで悪いけど、むかし同じ現象が出て
InputBoxを使って回避した気がする。忘れてた…
その時は、会社のマシンだったから割と起こりやすい現象みたい
>>262 ぱっとソースを見た感じクラスがListView32じゃないと動作しないように書いてある
これ→if ( strcmp(szClassName, WC_LISTVIEW) == 0 ) {
確かTListViewはクラス名が違ったと思う
266 :
233 :2005/12/06(火) 00:30:50 ID:zKABzlSJ0
>>265 ということは
>>262 のソースを再現すればAHKでも実現できるわけですね
少し希望が湧いてきました
267 :
255 :2005/12/06(火) 20:02:45 ID:BjDsaEX90
exeファイルにして、友達のPCで試してもらいました。 買ったままいじってないWinxp home sp2 やはり同じように入力がおかしかったようです。 これは、エディットボックス自体の不具合かな。あきらめてほかの方法をとることにします。
InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4) ; To preserve any existing contents in pDest, only pSize number of bytes starting at pOffset ; are altered in it. The caller must ensure that pDest has sufficient capacity. { mask := 0xFF ; This serves to isolate each byte, one by one. Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data. { DllCall("RtlFillMemory", UInt, &pDest + pOffset + A_Index - 1, UInt, 1 ; Write one byte. , UChar, (pInteger & mask) >> 8 * (A_Index - 1)) ; This line is auto-merged with above at load-time. mask := mask << 8 ; Set it up for isolation of the next byte. } } ExtractInteger(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4) { SourceAddress := &pSource + pOffset ; Get address and apply the caller's offset. result := 0 ; Init prior to accumulation in the loop. Loop %pSize% ; For each byte in the integer: { result := result | (*SourceAddress << 8 * (A_Index - 1)) ; Build the integer from its bytes. SourceAddress += 1 ; Move on to the next byte. } if (!pIsSigned OR pSize > 4 OR result < 0x80000000) return result ; Signed vs. unsigned doesn't matter in these cases. ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart: return -(0xFFFFFFFF - result + 1) }
GetListViewText(hListView, iItem, iSubItem, ByRef lpString, nMaxCount) { ;const NULL = 0 PROCESS_ALL_ACCESS = 0x001F0FFF INVALID_HANDLE_VALUE = 0xFFFFFFFF PAGE_READWRITE = 4 FILE_MAP_WRITE = 2 MEM_COMMIT = 0x1000 MEM_RELEASE = 0x8000 LV_ITEM_mask = 0 LV_ITEM_iItem = 4 LV_ITEM_iSubItem = 8 LV_ITEM_state = 12 LV_ITEM_stateMask = 16 LV_ITEM_pszText = 20 LV_ITEM_cchTextMax = 24 LVIF_TEXT = 1 LVM_GETITEM = 0x1005 SIZEOF_LV_ITEM = 0x28 SIZEOF_TEXT_BUF = 0x104 SIZEOF_BUF = 0x120 SIZEOF_INT = 4 SIZEOF_POINTER = 4 ;var result := 0 hProcess := NULL dwProcessId := 0
if lpString <> NULL && nMaxCount > 0 { DllCall("lstrcpy", Str,lpString, Str,"") DllCall("GetWindowThreadProcessId", UInt,hListView, UIntP,dwProcessId) hProcess := DllCall("OpenProcess", UInt,PROCESS_ALL_ACCESS, Int,false, UInt,dwProcessId) if hProcess <> NULL { ;var lpProcessBuf := NULL hMap := NULL hKernel := DllCall("GetModuleHandle", Str,"kernel32.dll", UInt) pVirtualAllocEx := DllCall("GetProcAddress", UInt,hKernel, Str,"VirtualAllocEx", UInt) if pVirtualAllocEx == NULL { hMap := DllCall("CreateFileMapping", UInt,INVALID_HANDLE_VALUE, Int,NULL, UInt,PAGE_READWRITE, UInt,0, UInt,SIZEOF_BUF, UInt) if hMap <> NULL lpProcessBuf := DllCall("MapViewOfFile", UInt,hMap, UInt,FILE_MAP_WRITE, UInt,0, UInt,0, UInt,0, UInt) } else { lpProcessBuf := DllCall("VirtualAllocEx", UInt,hProcess, UInt,NULL, UInt,SIZEOF_BUF, UInt,MEM_COMMIT, UInt,PAGE_READWRITE) }
if lpProcessBuf <> NULL { ;var VarSetCapacity(buf, SIZEOF_BUF, 0) InsertInteger(LVIF_TEXT, buf, LV_ITEM_mask, SIZEOF_INT) InsertInteger(iItem, buf, LV_ITEM_iItem, SIZEOF_INT) InsertInteger(iSubItem, buf, LV_ITEM_iSubItem, SIZEOF_INT) InsertInteger(lpProcessBuf + SIZEOF_LV_ITEM, buf, LV_ITEM_pszText, SIZEOF_POINTER) InsertInteger(SIZEOF_TEXT_BUF, buf, LV_ITEM_cchTextMax, SIZEOF_INT) if DllCall("WriteProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0 if DllCall("SendMessage", UInt,hListView, UInt,LVM_GETITEM, Int,0, Int,lpProcessBuf) <> 0 if DllCall("ReadProcessMemory", UInt,hProcess, UInt,lpProcessBuf, UInt,&buf, UInt,SIZEOF_BUF, UInt,NULL) <> 0 { DllCall("lstrcpyn", Str,lpString, UInt,&buf + SIZEOF_LV_ITEM, Int,nMaxCount) result := DllCall("lstrlen", Str,lpString) } }
if lpProcessBuf <> NULL if pVirtualAllocEx <> NULL DllCall("VirtualFreeEx", UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE) else DllCall("UnmapViewOfFile", UInt,lpProcessBuf) if hMap <> NULL DllCall("CloseHandle", UInt,hMap) DllCall("CloseHandle", UInt,hProcess) } } return result }
;const MAX_TEXT = 260 ;var iItem := 0 iSubItem := 0 x := 0 y := 0 VarSetCapacity(szText, MAX_TEXT, 0) VarSetCapacity(szClass, MAX_TEXT, 0) VarSetCapacity(point, 8, 0) DllCall("GetCursorPos", Str,point) x := ExtractInteger(point, 0, true, 4) y := ExtractInteger(point, 4, true, 4) hListView := DllCall("WindowFromPoint", Int,x, Int,y) DllCall("GetClassName", UInt,hListView, Str,szClass, Int,MAX_TEXT) if DllCall("lstrcmpi", Str,szClass, Str,"SysListView32") == 0 || DllCall("lstrcmpi", Str,szClass, Str,"TListView") == 0 { GetListViewText(hListView, iItem, iSubItem, szText, MAX_TEXT) Msgbox, %szText% } return
274 :
233 :2005/12/06(火) 22:52:52 ID:oOmblgWA0
すごい!感動しました! 感謝してもしきれないです 本当にありがとうございます
引数が足りなかった DllCall("VirtualFreeEx", UInt,hProcess, UInt,lpProcessBuf, UInt,0, UInt,MEM_RELEASE)
>>233 具体的にどういう使い方をするのかちょっと興味あるんだけど、教えてくんない?
277 :
233 :2005/12/07(水) 16:47:00 ID:Fl/Gr8/X0
>>275 普通に動いてたので気づきませんでした
どちらにしても感謝です
>>276 ここまでしてもらってなんですが、ご勘弁を
>>277 エロDVDのタイトルの整理か何かですか?
匿名掲示板で詳しく言えないって事は犯罪絡みか
それか業務がらみとか
変数一覧のところの一番上に 0[1 of 1]: 0 ってのが必ずあるんだけどこれって何?
コマンドライン引数の奴
283 :
281 :2005/12/08(木) 19:30:54 ID:kFp6FhOt0
質問なのですが、このソフトでIME起動時に全角文字を入力として挿入することは 比較的楽に出来ますでしょうか? なにがしたいかと言いますと、自分はIMEは「かな入力」の人間でして、 チャット等の、通常会話に近い文を書いてる時は、!や?が、かな文字と 同じくらいの平易さで出現するのですが、かな入力ですと、入力するのが ちょっと面倒なのです(かな/英数を切り替えてからShift+1で再びかな/英数など) そこで、IME(ATOK2005)が起動している時は、かな入力状態でも [Shift]+[1]で“!”を、[Shift]+[/]で“?”を入力出来るようにしたいのですが、 そう言ったことは可能でしょうか? 自分の程度としましては、DOS3からなのでbatは書けますがvbsは読んで修正するのが精一杯、 サイトの引っ越しでUWSCでIEを半自動実行で転記させる50行×8本くらいのサブルーチンを 書いた程度で、最近は正規表現がなんとか使えてきて楽しいというようなレベルです。 外国産みたいなので、IMEの起動を検知できるのかと、起動したIMEに文字を直接送ることが 出来るのかがネックかなと思っているのですが… よろしくお願いします。
> そう言ったことは可能でしょうか? 可能 それと、おまえのレベルなんて知ったこっちゃない このソフトが使えないレベルなら他を当たれ 使えるなら勝手にしろ といっても、流行らせるページ見ればこの程度バカでも出来るがな ソフトに限ったことじゃないが、便利なものを使いたければ それに応じた実力(知識や技術など)を身につけろってこった
まぁ要望を長々と書いたところで、マジメに読んでもらえる訳が無い。 がんばればアンタでもできるんじゃねーの?としか言いようが無い。
287 :
名無しさん@お腹いっぱい。 :2005/12/11(日) 00:59:00 ID:78+mCWVm0
つーか俺なら変換キー連打で解決するね
辞書登録で1→! 0→?(テンキーを使っているなら)とか ぬ→! め→? とでも登録した方が分かりやすい上に てっとり早いんじゃないか?
289 :
名無しさん@お腹いっぱい。 :2005/12/11(日) 01:27:32 ID:78+mCWVm0
290 :
284 :2005/12/11(日) 13:39:45 ID:OA29yvnX0
お返事ありがとうございます。 ソフトによっては、ユーザー側に有る程度の素養が要求されると思いますので、 現実的に見て、自分のレベルで作業するのに問題が無いか、 取り組む前に確認させて貰いたかったのですが、スレの空気を乱す発言になった ようで、すみませんでした。 お返事を見る限り、無理な要求という感触では無いようですので、 参考にさせていただいて、検討いたします。
とりあえずお前が人のアドバイスを試す気がないカスなのは分かった
プッ
しばらく過疎ってる間にえらく空気悪くなってるな
>>290 IME制御に関しては過去何度か話題に上がってるので調べてみれ
なまず氏が自分とこのブログで最近とりあげてたし
もうある
>>295 本当ですか?
一応「migemo ahk」「migemo autohotkey」などで検索しても見つかりませんでした
流行らせるページにある奴じゃないのかな。
>>297 ありました
これ昔からありましたっけ?
299 :
294 :2005/12/13(火) 17:20:20 ID:sRReWFce0
これをブラウザで使うやり方がさっぱりわからない・・・・ そもそもサンプルが上手く動かないです 例えば「a」と打つと「シリアス」だけがマッチ(他にもaはたくさんあるのに) どんな文字でも2文字目を打つと何も表示されず 意味がよくわからないです
300 :
294 :2005/12/13(火) 17:39:57 ID:sRReWFce0
自分でlist=を作ってやってみましたが アルファベットだけがマッチ 漢字・ひらがな・カタカナ全滅 私が何かをすごく勘違いしてる気がしますが・・・・
301 :
294 :2005/12/13(火) 17:52:44 ID:sRReWFce0
ただ単に辞書パスが違っているというアホな間違いでした すみません でもブラウザで使うやり方は未だわからず
いつから日記スレになったんだ
303 :
294 :2005/12/13(火) 18:05:03 ID:sRReWFce0
さっさと消えろよ、うざいなぁ。
なんか最近スレの空気悪いなぁ。
っていうかmigemoの存在を初めて知った。
ちょっと感動。
流行らせるページのスクリプト見てみたけど
>>294 と同じ機能をAHKからブラウザで使うのは無理じゃね?
俺も知識不足でサンプルで何をやっているのか全然わからないので 流用できなかった。 任意のファイラ上でmigemoでファイルを選択したかったんだけどね。 マッチングを行わせたい文字列をリストにしてスクリプトに 読ませるんだというのはなんとなくわかるけど マッチした内容を任意のソフトに対してどうやって反映させたら いいのかさっぱり。 誰か使っている人いたら具体的なスクリプトを教えてくれないかな。
ファイラーはMigemizeExplorer ブラウザは窓使いの憂鬱 2chブラウザはJaneView エディタはサクラエディタ ってな具合にmigemoを使ってる。 ただ、繭で使ってるのはmigemoのみだから繭をなくしたいんだよね。 別に不具合はないけど。 ブラウザ乗り換えも何度も検討した結果、今使ってるものになってるし。
今現在、Win用・繭不要でmigemo対応のブラウザは fub.net ぶら。 ※拡張機能で。 Bagel Firefox ※XUL/Migemo Sylera2 オレはSylera2だけど他にもあるような…
Janeのトレース画面を一発で出し入れできるスクリプトって無理かな
311 :
名無しさん@お腹いっぱい。 :2005/12/15(木) 09:04:11 ID:Oeo3ug/h0
質問ですけど、スクリプトでMSNメッセンジャーを取り込み中に変えたりオンラインに戻したりするにはどうしたらいいですか?
>>311 AutoHotkey以外での実現方法を知っているなら、そのとおりに実装すればいいのでは。
手始めに "MSN Messenger" Messenger.UIAutomation.1 で検索するとかして。(英語も読もう)
313 :
311 :2005/12/15(木) 09:21:36 ID:Oeo3ug/h0
>>312 レスどうもです!
> AutoHotkey以外での実現方法
はタスクトレイのアイコンを右クリックしてやる方法しか知らないです・・・
ちょっとググってみます!
英語は・・・読める限り・・・
>>310 出し入れというかマウス系のコマンド使って瞬間的に
ドラッグして消しているように見せるだけの奴なら作ってみた。
結構良い感じでうまく動いたよ。
そういう意味では出来ると答えておきます。
他に方法があるかもしれないけど漏れにはわかりません。
>>314 やっぱそれしかないかー
と思ったが、Hideenテキストを取得するスクリプト書いて
MSGBOX出せば、トレース画面出さなくても
デバッグログがみれるかもと思った。
あ、トレース画面を別ウィンドウで浮かせたいってことが言いたかったのか。 勘違いしてスマソ。 うーん。Janeのソースいじってしまった方が速いんでないかい? まぁ、でもText拾ってGuiで別Window作成して表示させれば、できるだろな。
>>316 あ、いや、その解釈であってるよ。
最初は外部コマンドからトレース画面をある程度の幅で
ウィンドウ内に出せればいいなと思ってたんだけど。
でも、AU3_Spyで見たらトレース画面のテキストが取得できてたんで
別に本体で見なくてもいいかなと思って。
Jane作者に要望だせば?
>>294 にあるdll使って
DllCall("dllのパス\migemo-isearch.dll\ie_isearch_fmRi",Int,0)
としてみたが何も起こらず。
返り値はなし、ErrorLevelは-4(DLLは見つかったが、Functionで指定した関数が無かった)
どこが間違っているでしょうか?
そもそも無理?
320 :
名無しさん@お腹いっぱい。 :2005/12/19(月) 16:48:21 ID:T6Ojlipz0
>>320 残念ながら力になれないが (DllCallを今初めて使った)、
どのような記述をして、どのように動かなかったのかの説明は書いておいた方が良いと思うよ。
ちなみに自分が試したのはこんな感じ。
;コード
#O::
Ret := DllCall("getcpust\GetCpuStatus", IntP, rate)
MsgBox, 返値:%Ret%`n使用率:%rate%`nエラーコード:%ErrorLevel%
return
;メッセージボックス
返値:1
使用率:0
エラーコード:A4
引数無しにするとエラーは出なくなるけど、それだと意味ないしなぁ。
以下DLLのReadmeから引用。他の人回答ぷりーず。
>int GetCpuStatus( int *rate )
>をEXPORTします。
>第1引数に引き渡したint型のメモリにCPU使用率が格納されます。
>返値は失敗するとFALSE(0)を、成功した場合はそれ以外を返します。
322 :
320 :2005/12/19(月) 17:53:49 ID:T6Ojlipz0
>>321 自分もほぼ同じ記述です
ただ、引数の最後にCdeclを追加するとErrorLevelは0になります(返値1・使用率0は変わらず)
>>322 調べてみたらその関数の呼び出し規約はcdeclだった(関数を公開するなら明示すべきだが)。
mp3でも再生しながら再計測してみては?
324 :
320 :2005/12/20(火) 14:14:45 ID:yg2tqewb0
>>323 ん?つまり記述はあっているけど私のCPU使用率は0だから0を返してるってことですか?
負荷を上げても0のままです
もしかして、とおもってやってみたらドンピシャ。 #Persistent OnExit, ExitSub hModule := DllCall("LoadLibrary", str, "getcpust.dll") if hModule=0 { ExitApp } SetTimer, GetCpust, 500 return GetCpust: Ret:=DllCall("getcpust\GetCpuStatus", "Int*", cpust, "cdeclInt") ToolTip, 返値 %Ret%`ncpust %cpust%`nErrorLevel %ErrorLevel% return ExitSub: DllCall("FreeLibrary", UInt, hModule) ExitApp
326 :
320 :2005/12/20(火) 15:35:13 ID:yg2tqewb0
>>325 なるほど、そうやるんですね
勉強になりました
ありがとうございます
328 :
320 :2005/12/20(火) 15:44:01 ID:yg2tqewb0
>>327 そこには目を通していたはずなのに実行してみなかった自分が恥ずかしいです
平日の真昼間にいきなり活性化してんのな 学生ってもう冬休みに入ってるのかなw
↑末尾のwは Alt+w(書き込み)の押し間違いだorz
Ctrl+Alt+Delを無効にしようと思うんだけど ^!Del::return としても変化なし 何か特別なことをしなければならない?
333 :
332 :2005/12/20(火) 17:22:32 ID:f5Fr+yX00
334 :
名無しさん@お腹いっぱい。 :2005/12/21(水) 22:00:44 ID:C94x2s+u0
>>333 俺もそれほしくてコンパイル済みを探したけど見つからんかった。
どなたかお願いします・・
>>333-334 コンパイルだけなら出来ないこともないが、
さすがにそんなシステムの根幹に関わるファイルは試したくないし、
そのまま上げて、うまく動かなくてシステム復旧できなくなっても責任取れないし。
第一、こんな危険度の高いファイルを匿名掲示板の誰とも知れぬヤツに
頼むのはどうかしてるとしか思えない。
335の言うとおり。どれほど危険かわかっていってんのかね。
何度もいう必要は無いよ 一度言えば分かる もしやる奴がいれば上げればいいし 自己責任で使えばいい
とりあえず自力でコンパイルできる位のスキルがある奴でないと危ないってこった
何度もいう必要は無いよ 一度言えば分かる もしやる奴がいれば上げればいいし 自己責任で使えばいい
乱数が必要なときどうしてます?
Random使ってますが
Random, OutputVar [, Min, Max]
343 :
340 :2005/12/22(木) 23:16:16 ID:1UNMjvMz0
関数の方で探してましたorz
もしかして16進数←→10進数もあったりする?
>>345 ありました
SetFormatですね
今度一からリファレンスを見直そうかな・・・・
一部のソフトのバグが原因(だと思われる)でフォーカスの横取りがうまくされなくなる問題の解決のために、 フォーカスを奪いたいソフトを実行させる前に以下のコマンドを実行するようにしてみた。 GetFocus: RegRead, fore, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout IfNotEqual, fore, 0 { RegWrite, REG_DWORD, HKCU, Control Panel\Desktop, ForegroundLockTimeout, 0 Sleep, 500;反映待ち } return しかし、実際にレジストリの方は書きかわっているものの、きちんとフォーカスを奪ってくれず、 TweakUIで該当の項目を見てもチェックが付いたまま…もちろんTweakUIでチェックを外せば奪うようになる。 他に何をすればAHKでも反映されるようになるんかな。
あーなんか昔クリップボード拡張ソフトのスレでそれっぽいの見たような記憶が 今ちと忙しくて過去ログ探してる暇がないが Charu3起動するとフォーカス関係がおかしくなる奴
349 :
347 :2005/12/23(金) 21:18:22 ID:6+7NW5wO0
>>348 そのスレ自体は知っているんだけど、やっぱり原因となってるソフトを特定して、
作者に直してもらうほか無いのかなぁ。
>>347 その手の設定はレジストリ変えた後に「再設定したよ」ってOSに知らせないといけないのかも
確かそんなAPIがあったはず
352 :
名無しさん@お腹いっぱい。 :2005/12/29(木) 13:16:24 ID:kRbce90V0
age
353 :
347 :2006/01/02(月) 13:16:01 ID:ECSj1xL10
状況報告 Tweak UIの挙動をSpy++で確認。レジストリ変更後、↓を確認。 WM_SETTINGCHANGE wFlag:2001 pszMetrics:0006F4B4 ということで、スクリプトに↓を追加。 SendMessage, 0x1A, 0x0002001, 0x0006F4B4,, ahk_id 0xFFFF これで試したところ、以下のような良く分からん状態に。 Tweak UIでチェックをつけてOKを押す 該当レジストリが200000になる ↓AHK実行 レジストリが0になる ↓フォーカスをきちんと奪うようになる ↓Tweak UI起動して確認するとチェックが付いたまま レジストリの方は0になっている ↓そのままOKを押す ↓AHK実行 レジストリは0のまま ↓フォーカスを奪えない Tweak UIの方もチェックが付いたまま ↓のようにいろいろ変えてみても効果無し。 SendMessage, 0x1A, 2001, 0x0006F4B4,, ahk_id 0xFFFF SendMessage, 0x1A, 0x0002001, "Control Panel\Desktop",, ahk_id 0xFFFF SendMessage, 0x1A, 0x0002001, "HKEY_CURRENT_USER\Control Panel\Desktop",, ahk_id 0xFFFF SendMessage, 0x1A, 0, 0x0006F4B4,, ahk_id 0xFFFF SendMessage, 0x1A, 0, 0,, ahk_id 0xFFFF
354 :
347 :2006/01/02(月) 13:23:01 ID:ECSj1xL10
355 :
名無しさん@お腹いっぱい。 :2006/01/03(火) 07:25:06 ID:jyT5EMJg0
JoeのようなAltTab代替アプリを実現しようと思ったんですが、 アイコンの取得の仕方がわかりません。 インスタンスハンドルを取得できればWinAPIを使ってできそうなんですがうまく取得できず。
HDD漁ったら昔作ったアイコン存在チェックソース出てきた。時間ないので未検証でコピペするお ;WNDCLASSEX 構造体にセットされたアイコン GCL_HICON := DllCall("GetClassLong", Uint,hWnd, Int,-14) ;GCL_HICON GCL_HICONSM := DllCall("GetClassLong", Uint,hWnd, Int,-34) ;GCL_HICONSM ;WM_SETICON メッセージによってセットされたアイコンを取得 SendMessage,0x007F,0,0,,ahk_id %hWnd% ;ICON_SMALL ICON_SMALL := ErrorLevel SendMessage,0x007F,1,0,,ahk_id %hWnd% ;ICON_BIG ICON_BIG := ErrorLevel SendMessage,0x007F,2,0,,ahk_id %hWnd% ;ICON_SMALL2(XP) ICON_SMALL2 := ErrorLevel OutputDebug, GCL_HICON=%GCL_HICON% GCL_HICONSM=%GCL_HICONSM% ICON_BIG=%ICON_BIG% ICON_SMALL=%ICON_SMALL% ICON_SMALL2=%ICON_SMALL2%
357 :
355 :2006/01/03(火) 17:40:06 ID:jyT5EMJg0
>>356 ありがとうございます。
これでアイコンハンドルは取得できました。
ListViewのGuiのIL_Add()ではアイコンのファイル名が必要なんですが
ハンドルからファイル名は取得できるのでしょうか?
取得したアイコンハンドラを元にGUIへ反映する方法はわからんです。
(自分はウィンドウのタイトルバー左上にアイコンがあるのかどうか調べるためだけに
アイコンハンドル取得してみてるだけなので)
APIでどうにかできそうとのことだったので、むしろフィードバックを期待してたんですが
単純にexeのアイコンが表示できればいいのなら、管理人さんの
プロセスIDを指定して実行ファイルパスを得る関数で .exeフルパス取得して
セットしてやればいいと思われ
http://cgi19.plala.or.jp/lukewarm/news/2005_05.html#14
359 :
355 :2006/01/03(火) 21:27:09 ID:jyT5EMJg0
>>358 その管理人さんの関数で解決できそうです。
ありがとうござました。
360 :
355 :2006/01/03(火) 21:45:14 ID:jyT5EMJg0
最後のほうの DllCall("psapi\CloseProcess","Int",hProcess) のErrorLevelが-4になってしまうんですが大丈夫なんでしょうか?
ホイールの挙動がなんかおかしいです SetTimer,tip,1000 return tip: GetKeyState,ks,WheelDown,P ToolTip,%ks% return で調べると、一度でもWheelDownをするとそのあとマウスから手を離しても ずっとksの値はDのままになってしまいます。
>>360 これはCloseHandle()の間違いらしい。
DllCall("CloseHandle", "Int", hProcess)
>361 ホイールの回転はホイール押下みたいなUP/DOWNが有るイベントじゃないから 状態を取ること自体間違ってる気がする
364 :
361 :2006/01/04(水) 17:01:50 ID:SbxpZ6KF0
>>363 ホイールが回転されるまで待機、ってことがやりたいんですが
無理ですか?
単にWheelDown::に処理書いてやって,フラグ立てるなり終了するなりすればいいんでは
366 :
361 :2006/01/04(水) 19:50:45 ID:SbxpZ6KF0
>>365 & WheelDown::の最中で待機したかったんですが
あきらめて他の仕様にすることにします
フォルダのパスを引数として渡し、 「フォルダの参照」ダイアログのツリーを操作して 引数のフォルダを選択させる、ということをしたいのですが、 どのようにすればいいのでしょうか? DialogSetやDialogHandlerが使えないソフトにも 自前で対応させようとしているのですが、 「フォルダの参照」ダイアログがどうにもできず困っています。 助言をいただきたいです。
368 :
355 :2006/01/05(木) 01:17:18 ID:n7Jr+2qn0
>>362 亀レスすみません
エラー出なくなりました。ありがとうございます。
>>367 「フォルダの参照」の場合、パスをセットする場所がないので
ルート(マイコンピュータ)からインクリメンタルサーチで1階層ごとに
フォルダ選択していくしかないのでは?
DialogHandlerは随分とうまいことやってるけど、多分100%の無理そうな気がする。
×多分100%の無理そうな気がする。 ○多分100%の精度での実現は無理そうな気がする。
一応フォルダの参照ダイアログの選択フォルダを指定する
方法はあるが(
>>369 のような不確かな方法ではない)
AutoHotKeyでは無理っぽい気がする。
とりあえずSHBrowseForFolder SHGetPathFromIDList
あたりでググってみるといい。この方法は環境に問題がなければ
精度はほぼ100%だよ。(完全に100%かもしれないが、
言い切れるほどの確認はしてないので)
372 :
367 :2006/01/05(木) 15:29:16 ID:YlkDRsZz0
>>369 >>371 レスありがとうございます。どうも難しいようですね。
「フォルダの参照」の場合はDialogHandlerに丸投げすることにしました。
特定のアプリにのみ有効にすることはできますか? また、マウスジェスチャ(←→ならESCなど)を指定することはできますか?
そのように書けばできますYO!
>>347 AutoHotkeyユーザーではありませんが、347さんと同じような現象で困っていてこのスレにたどり着きました。
tuneappスレ(Windows2000/XP チューンナップ専用スレ Part17)にも書き込んでます。
以前はこんな現象は起こらなかったので困ってます。
常駐ソフト切ったり、バージョンを変えたり(上げたり落としたり)しても同じく原因がわからないんですよね・・・
レジストリを書き換えても(tuneappでも可)、TweakUIの「アプリケーションにフォーカスを横取りさせない」のチェックボックスに変化無し。
チェックボックスを外してもいつの間にかチェック状態に戻ってしまう・・・
Windows2000を普段使ってまして、WindowsXPだと起きていないので
Windows2000の何かが原因なんですかね。
ネットで調べたらWin32 APIてのが関係してるかもしれないようですが、お手上げ状態です。
>>347 今更だが、Regmon辺りで書き換えてるアプリ探すのが一番かと
ForegroundLockTimeoutでフィルタリングして放置しておけばそのうち引っかかると思うぞ
377 :
347 :2006/01/09(月) 21:51:22 ID:gCdov2U80
>>376 残念ながらそれはもう試してた。Regmonでは引っかからなかったよ。
Tweak UI等での正規の方法で変更する場合は関知してくれるけど、このバグの場合は無理らしい。
いっそ、この問題が起こる人用のスレでも立てて、全使用ソフトを書き連ねる→共通するソフトが容疑者
って方法でも取らないと無理かなぁ…ちなみにOSはXP SP2です。
とりあえず原因が除去できないならってことで、
>>347 で書いたものの代わりにこんな感じで無理矢理対処。
SendMessage等を用いたもっとスマートなやり方を誰か分かれば頼む。
TweakFocus:
Run, TWEAKUI.EXE
WinWait, Tweak UI
ControlSend, SysTreeView321, {Down}{Right 2}, Tweak UI
Sleep, 50
Control, UnCheck, ,Button2, Tweak UI
Sleep, 50
ControlClick, Button6, Tweak UI
return
>>377 Regmonでダメだったのか
古典的なwin.iniのCompatibility95セッションに追加する手法は?
379 :
347 :2006/01/10(火) 00:20:10 ID:YKl99lMm0
>>378 こんな簡単な解決方法があったとは…
根本的な解決になったわけではないけど、実用上は何の問題もなし。
激サンクス!
今更かもしれませんが・・・前スレ749さん hModule := DllCall("LoadLibrary", str, "DengakuDLL.dll") p := DllCall("DengakuDLL.dll\TOHANKAKU", "str", "01234567890", "str") msgbox, %p% DllCall("lstrcpy", "str",str1, "str", p) msgbox, %str1% DllCall("FreeLibrary", UInt, hModule) で、動きました。処理途中で解放されていたのが問題だったぽいですね。 すでに解決してたらすいません。
DllCall("SetCaretBlinkTime",UInt,100) とやってもすぐに反映されず、何かアクションを起こさなければ速度はそのままです。 何か足りないんでしょうか?
382 :
前スレ749 :2006/01/11(水) 01:30:09 ID:95IZTI+k0
>>380 あ! LoadLibraryで確保すればOKだったのか。
管理人氏がBRegExp.dll でやってたのは知ってたけど再検証はしてなかったです。
(自分でも忘れてた) 秀マクロ用のDLLが使えるようになるのは結構大きいかも。
教えてくれてアリガトン
てことは、AHKでも田楽DLLのSETVER/GETVERでグローバル変数が扱えるのかな
iniとか経由なしでオンメモリ上で秀マクロや他のアプリとデータを共有化できるのか
うはw夢がひろがりんぐwww
起動するとそのままタスクトレイに入るソフトがあるんですが、 これをScrollLockで起動・終了したいんですね。 で、こんな風に書いてみたんですが…… ~ScrollLock:: Process, Exist, task.exe if ErrorLevel = 0 Run, task.exe else WinClose, ahk_pid %ErrorLevel% return これだとそのソフトの終了ができないんです。 ここの「WinClose」が「Process, Close」にすれば「強制終了」はできるんですが、 強制終了でなくふつうの終了がしたいんです……。ソフトの挙動が変わってしまうので。 タスクトレイアイコンを右クリックでxすると終了できるので、 この「WinClose」の行を「Send, #b & AppsKey & x」とかやってみたんですが、 別のアイコンにフォーカスが当たってしまい、、、どうにもうまくいきません。教えてください。
トレイメニューの「閉じる」のコマンド番号を調べておいてWM_COMMANDで送ってやればいいような
挙動の本質とは関係ないかもしれないけど、Locks系の押下情報は OSが返してくる値がおかしいからホットキーに割り当てるのは控えたほうが良いと思われ
なまず日記すげえな。
387 :
383 :2006/01/12(木) 03:13:12 ID:HWiUEJ9g0
助言ありがとうございました。 Send, #b{APPSKEY}x これでいけました。 これ「ソフトがタスクトレイの左端にある」ことを決めてかかっているのでよくないですが、 紹介いただいた「コマンド番号を調べる」方法を知らないので……(^^; ぐぐって見て、 ResouceHackerでできるという話があったのでやってみたんですが、 それらしいエントリが見つからず……断念。
389 :
383 :2006/01/12(木) 21:12:12 ID:HWiUEJ9g0
ありがとうございます。 ただ、流行らせるページで紹介されている方法も含め、ソフトが特殊なのかうまくいきませんでした……。 件のソフトはWorkCheckerという、キーの押下回数をカウントするソフトなんですが(^^; 終了時にCSV形式でファイルを出力するもので、強制終了するとこれをやってくれないんですよ。 「終了」のほうは、とりあえず何とかなっているのでこれでいいとして、 もう一つうまく行かないことがありますので、よろしければお願いします。 Media Player Classicを「フルスクリーン」にしているときに、 383で挙げているスクリプトを走らせると、MPCのフルスクリーン化が解除されてしまうんですね。 これが「ウィンドウの最大化」なら、特に解除されることもないんですが……。 問題の部分はこんな感じになってます。 WinGetActiveTitle, player Send, #b{APPSKEY}x WinActivate, %player% このSendをした際に、 タスクトレイにフォーカスが移ってタスクバーが出たままになるのを何とかしたくて このような処理をしてみたんですが、先にも書いたとおり、 最大化したウィンドウでは期待どおりに動くものの、全画面化した場合はうまくいきません。 WinGetActiveTitleが、タイトルの取得のためにウィンドウ表示に戻してしまうんでしょうか……。 ちなみに、playerにはMPCの決め打ちができません。
あ、ちなみに、MPC以外でも同じ状態になります。 それと、 WinGet, player, PID 〜 WinActivate, ahk_pid %player% とか、PIDじゃなくてIDだとかの場合も試しましたが、これもうまくいかず。
今プログレスバーを半透明にしようとしているのですが、期待した表示になりません。 Progress,cwFFFFFF ,,name,time winset,TransColor ,FFFFFF 50,time return esc::exitapp ウィンドウを半透明にして文字とバーは透過なしにしたいのですが、出来ないのでしょうか? これだとウィンドウが完全な透明、文字とバーが半透明になります。 Trans ,で設定するとウィンドウは半透明なのですが文字も半透明に。。トホホ。
2枚重ね
393 :
391 :2006/01/13(金) 17:00:20 ID:dZX44Wpz0
>>392 ありがとう!発想を変えれば良かったんですね。希望の動作になったので報告までにはっときます。
オプションでツールウィンドウを指定してるのは、タスクバーに表示させたくないためです。
gui,add,text
Gui, Color,000000
gui,+ToolWindow +AlwaysOnTop +OwnDialogs -border
gui,show,w300 h200,back
winset,Trans, 50,back
Progress,cwC8D0D4 ctFFFFFF B,,name,time
Progress,50,,,time
winset,ExStyle,+0x00000080,time
winset,TransColor ,C8D0D4 255,time
return
esc::exitapp
394 :
381 :2006/01/14(土) 21:15:58 ID:6j6GF4sd0
いまだ解決せず。 キャレットの速度変更した後、Send,{Left}{Right}とか無理やりアクション起こすと 色々不具合がでるソフトもあるし・・・ SmartCaretはどうやってるんだろう。
395 :
383 :2006/01/17(火) 10:21:04 ID:aCgAJjPo0
一段落したのでまとめをさせてください。 したかったのは、プログラム全画面化時のキー押下回数のカウントでした。 カウントには>389で挙げているWorkCheckerというソフトを利用することにしていました。 はじめ>383にてScrollLockを使おうとしていたのは、 全画面化時でもキーボードインジケータによって動作中かどうかがわかるためです。 これによって挙動がおかしくなったかどうかはわかりませんが、>385さんの助言を受け、 起動キーを変更して(NumpadSubに)、動作情報はツールチップに表示させるようにしました。 いろいろ調べてみましたが、WorkCheckerのメッセージによる終了のさせ方がわからず、 タスクトレイにフォーカスを当ててキーをSendするというムリヤリな解決法をとりました。 その後WorkCheckerの使用をやめ、AutoHotkeyスクリプト内部の処理でカウントすることに。 これでスクリプト終了の問題は一応決着がつきました。 が、その数値をファイルに書きこむ際、エントリ名を取得しようとInputBoxを出すと、 >389と同じ状況になり、全画面化が解除されてしまいます。 最大化でなく全画面化なので、WinMaximizeでも状態を復帰させることができません。 いろいろやってみたところ、WinGetActiveTitleとかWinActivateには問題がなく、 プログラムの全画面化が解除されるのは、タスクトレイやInputBoxなど 他のウィンドウにフォーカスが移ったときであることを突き止めました。 また、この現象は、プログラムの最大化時や、 IEのキオスクモード(F11を押すとできる一種の全画面化)では発生しないこともわかりました。 以上です。 全画面化の解除問題は解決してないのですが、うまくいきそうにないので諦めることにしました。 プログラムはPerlのワンライナー程度のスクリプト処理をちょっとかじっていただけ、 Windowsプログラミング経験なしのド素人なので、 コメント行やエラー処理も含めて100行を越えるスクリプトを書いただけでいっぱいいっぱいです(^^; 皆さん、助言どうもありがとうございました。
まとめてみて、もしや、と思って試してみました。 全画面化中にAlt+Tabをしてみると、AHKスクリプトでの全画面化解除の挙動と一緒でした。 つまり、AHKスクリプト中に全画面化解除されるプログラムは、Alt+Tabでも解除され、 AHKスクリプト中に解除されないプログラムは、Alt+Tabでも解除されませんでした。 (最大化した場合や、IEのキオスクモード) この問題の発生はAutoHotkeyに直接関係がなかったようです。お騒がせしました。
全画面化解除されても、復帰させれば問題ないのなら、 全画面化解除されるアプリ毎に全画面化に必要な操作をAHKにさせれば良いんでねーの? 数が多いと嫌になるかもしれんが、大抵全画面化のホットキーは決まってるし。
時間の計算で難儀してます.... 時刻t1〜時刻t2間の時間T[s]を求める際に、 T := t2 - t1 みたいな書き方はできるんですが、 時刻t2と時間T[s]から、 t1 := t2 - T のような式だとうまくいきません。 たとえば、ここでT=300[s](5分)として計算すると、 t2を時間としてでなく、数値として解釈するようで、T=3:00(3分)として計算されてしまいます。 t1 := t2 - T, Second とやると、今度は「TがYYYYMMDDHH24MISSのフォーマットではない」とエラーになるし、 EnvSubのマニュアルを見ていてもいまいちやり方がわかりません....
EnvAddで-300秒を足すんじゃなかったけ?
時間計算はEnvAddとEnvSubの扱いの違いに気がつかないとハマるな 過去スレでも何度か話題になってるから調べてみ
ほ、ほんとだ... >399,400 レスありがとうございました。 EnvAddのマニュアルにも、たしかにそれらしい文言がありますね。 でもこんなのわかんないよぅ...
タイトルバーで中クリックされたら処理を行うってこと(QuickDirみたいなもの)がやりたいんだけど、 どんな感じでやれば良いんでしょーか。とりあえず↓のようにやってみたけど、 SendMessageの使い方が間違ってるのか、うまくいかないっす。(ErrorLevelがFAILになる) ~MButton:: MouseGetPos, x, y, id SetFormat, integer, H x += 0 y += 0 xy := x + y * 0x10000 SendMessage, 0x84, 0, %xy%, ahk_id %id% If ( ErrorLevel == 2 ) { ;ここに処理を入れる } return
1.0.40.12から1.0.41にバージョンアップしたら、 RWin up::Return が効かなくなってしまいました。 AutoHotkeyを常駐させ、右Windowsキーを >#i::Send,{Up} >#k::Send,{Down} のように使っているのですが、Windowsキーを押して そのままはなすとスタートメニューがでるのがいやで 冒頭のものを一緒に書いていました。 ところが1.0.41ではスタートメニューがでてしまいます。 解決する方法があれば教えてください。
0x84 て何だっけ? 値からメッセージ名探すの大変なんで質問する時はコメントとか入れてクレ
405 :
402 :2006/01/22(日) 18:30:09 ID:v9Q+2/T40
>>404 スイマセン。
コメント入れるとこんな感じです。
~MButton::
MouseGetPos, x, y, id ;カーソル下の座標とid取得
SetFormat, integer, H ;座標を16進数に変換
x += 0
y += 0
xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる
SendMessage, 0x84, 0, %xy%, ahk_id %id% ;カーソル下のウィンドウにWM_NCHITTESTを送る
If ( ErrorLevel == 2 ) ;タイトルバーならば処理を実行
{
;ここに処理を入れる
}
return
メッセージに関してはここを参考にしました。
ttp://www.winapi-database.com/Message/WM/WM_NCHITTEST.html
>>403 1.0.41 から流行らせるページの 2 stroke key も動かなくなっちゃいましたね。
本体のバグだと思うんで、本家の更新待ちです。
407 :
406 :2006/01/22(日) 20:00:46 ID:GjGnwmrQ0
すいません。 Ctrl key double tap の方でした…。
>>405 とりあえず2つほど気がついた点。ただこれでも期待通りの値は取れてないが。
・SendMessage はウィンドウ指定より先にControlを指定する。(FAILの原因)
・MouseGetPosのX,Y座標はアクティブウィンドウの左上からの相対座標で取得される。
(CoordMode,Mouse,Screenを実行してない場合)
つかこのWM_NCHITTESTって「非クライアント領域のどの部分でマウスが操作されたか調べる」って
なってるんだけど、いいのだろうか
~MButton::
MouseGetPos, x, y, id,ctl ;カーソル下の座標とid取得
xy := x + y * 0x10000 ;座標を上位ワードと下位ワードにまとめる
SendMessage, 0x84, 0, %xy%, ,A
MsgBox, ErrorLevel=%ErrorLevel%
return
自分もキャプション位置を取得するのにかなり面倒な関数組んでるので
こんな簡単にまとめられるならその方が有り難いんだがね
409 :
402 :2006/01/22(日) 23:52:19 ID:v9Q+2/T40
>>408 座標自体は16進変換しなくても良かったんですね。
自分もその座標の原点をどこにすればよいのか分からなかったので、とりあえずそのままやってみた次第です。
どうやら、Delphi製もしくはWTLを用いて作られたソフトではうまくいくようです。
>自分もキャプション位置を取得するのにかなり面倒な関数組んでるので
どのようなロジックで実装されているんでしょうか。
411 :
403 :2006/01/23(月) 22:02:12 ID:mqTpMs440
>>406 そうなんですか。
では次のバージョンでの改善を望むことにします。
412 :
402 :2006/01/24(火) 01:16:40 ID:JUUu5mZd0
>>410 ありがとうございます。期待通りの動きとなりました。
ご苦労の程お察しします。
自分はSendMessageの挙動はいまいち理解できていなく、
根本的な解決法を考えられそうにないので、誰か識者の方ヘルプ^^
winキーを単体で押したときだけ無効にするにはどう設定すればいいんでしょうか win+Dとかの操作は有効にしたいんですけど LWIN::Return とすると全部無効になってしまいます。
質問前にせめて10レス前ぐらいは読みたまえよ
415 :
413 :2006/01/24(火) 16:50:53 ID:hmUrV7Tv0
1.0.40.12 で LWIN up::Return としても全部無効になってしまいます どうしたらいいんでしょうか
>>413 LWIN::Return
LWIN & LWIN::Return;二つ目のLWIN部分は何でも良い。
裏技的だが・・v1.0.40.05ではこれで動いた。他verではどうなるか知らん。
>>416 あぁ、なるほど、SendMessage自体を直に呼べばいいのか。目から鱗。
そうだよなぁ・・・気が付かなかったなぁ・・
ぬるたん ∩ ( ⌒) ∩_ _ グッジョブ!! /,. ノ i .,,E) / /" / /" _n グッジョブ!! / /_∧ ,/ノ' ( l ∧_∧ / /*´∀`)//∧_∧ グッジョブ!! \ \ (*´∀`)( / (*´∀`) n ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E) / / \ ヽ フ /ヽ ヽ_//
421 :
402 :2006/01/25(水) 02:38:42 ID:XjlFS14L0
>>416 (n‘∀‘)ηキテルワー!!
確かにDllCallから使った方が確実ですね。
さり気なくビットシフトなどを使っている辺り、自分との経験?の差を感じます…
改めてお二人に感謝。
あら・・スクリーン座標にするだけで、AHKのSendMessageでも出来たよ・・・ 問題はそこだったか・・
423 :
413 :2006/01/25(水) 19:22:45 ID:sklEJtBz0
>>417 1.0.41.00 で動きました!
ありがとう
RButton & WheelDownにAltTabを割り振りました 特定のアプリだけ、この機能を無効にしたいのですがそれは可能でしょうか Sendにするとすぐキーを離してしまうし、かといってifで条件分岐したあとにAltTabを置いても機能しません
#IfWinActive
点呼スレがピンポイントで狙われてるな、何でだろ
NP2のウィンドウに対してだけ急にahkが効かなくなっちゃったんですが どうすればまた有効になるんでしょうか?
428 :
403 :2006/01/27(金) 23:27:57 ID:/9813JvU0
>>417 遅ればせながらありがとうございます。
それでうまくいきました。
AHKだと、こういうコメントの書き方できませんね。 /******************************************************************************* * これは、ahkのコメントを確認するためのサンプルです *******************************************************************************/ これもダメ。 /******************************************************************************* * これは、ahkのコメントを確認するためのサンプルです ****************************************************************************** */ これならOK。 /******************************************************************************* * これは、ahkのコメントを確認するためのサンプルです ****************************************************************************** */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; これでいいじゃん ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/* 行頭に無いとコメント終始認識されないよん */
ちょこちょこ弄ってたら常駐スクリプトが16KB突破… Runコマンドで呼び出してるのも含めたら40KB超えてたよ。 AutoHotkeyって自由度高い分、各人がどんな使い方してるか気になる。 自分は無変換、変換、カナ/かなキーを修飾キーとしてキーやコマンド割り当てをするのがメイン。 各ウィンドウ位置の保存とかも簡単だし。 トリプルクリック、クワドロプルクリックでも自由に設定できるのも良いね。 あとは、エディットボックスならどんなソフト上にあるものでも 電卓・検索・辞書・コマンドランチャとして使えるようにしたりとか。
各スクリプトの共通項を切り出してインクルードするのって無理だよね?
AHKがインクルードファイルをサポートしてるか否か。 またそれに類する代替機能があるか。
gdiplus.dllで描画出来ないYO!! GIFとかICONをPictureコントロールで透明色部分を背景透過して表示したいんだが、 うまくいかない・・ Gui, Add, Picture, AltSubmit BackgroundTrans, AAA.ico Gui, Show とかやっても透明部分が透過されないYO!!! ちゃんとgdiplus.dllはAutoHotkey.exeのフォルダに入れてあるのに・・ へるぷみー><; Win2Ksp4 Ahk1.0.41.00
>>437 dllが認識されてないとかかな。
system32ディレクトリに置いてみるとか、regsvr32で登録してみるとか、パス通すとかやっても駄目だった?
Run/RunWaitコマンドでコンソールアプリケーションに引数を与えて実行し、 標準出力を得たいんだけど、とりあえず直接標準出力を得るのは無理っぽいので、 ファイルにリダイレクトし、FileReadLineで読み込む方法をとることにした。 Run, %comspec% /c test.exe "引数" > %A_ScriptDir%\test.dat んで、↑のようにやっても、「 > %A_ScriptDir%\test.dat」部分まで test.exeの引数として認識されてしまうらしく、うまくいかない。 多分AHKは関係ないと思うんだけど、解決策求む。
RunWait は試した?
441 :
439@携帯 :2006/01/30(月) 22:46:29 ID:Spq+eLJkO
>>440 YES
そもそもtest.exeに正しい値が渡っていないのであんまり関係ない感じ。
cmd.exeを経由しなくてもダメでした。
普通にコンソールで、
test.exe 引数 > test.dat
とやる分にはうまく行くんだけど…
うちでもうまく行くのと行かないのがあった気が。 上手く行かないの早々にあきらめて捨てちゃったんでもう憶えてないけど。
なんかダブルクォートをAHKで処理してる感じ パラメータに日本語とか使ってない?
444 :
439 :2006/01/31(火) 03:38:14 ID:iIRAafqH0
>>443 g_calcっていう引数として式を与えると、Google電卓を使った結果を出力するソフトで、
引数としては、1+2*4とか、sin(3.14)のような1バイト文字しか使ってないっす。
ttp://www.vector.co.jp/soft/win95/net/se337404.html …結局面倒なんで、このソフトと同等の機能を持つAHKスクリプトを作って対処してしまいました。
簡単なエラー処理入れても5行程度で済むのね。
なので、自己解決したと言えばしたんだけど、せっかくだから、AHKで標準出力を確実に取得する方法を
後学のためにも知っておきたい。
445 :
名無しさん@お腹いっぱい。 :2006/01/31(火) 11:20:44 ID:333EyHKl0
てst
ニーツオルグ見た?
あそこトップがでかいんだもん。
448 :
391 :2006/02/01(水) 01:02:52 ID:lbQsX6480
名前消し忘れてた。はずかし。。。。
ファイルの名前を、現在アクティブになってるウィンドウのタイトルにつけかえる、 というスクリプトを書いてみたんですが…… #SingleInstance IGNORE ^r:: f0 = test.txt FileAppend, test, %f0% WinGetActiveTitle, title StringReplace, title, title, `:, f1 = %title%.txt MsgBox, %f1% FileCopy, %f0%, %f1% MsgBox, %f0% return まめFileのように、タイトルに「パス - まめFile4」のようになっていると、 ファイルがA_WorkingDirにできてくれないので、 「C:\ほにゃらら」となっている部分のコロンを落とすようにしてみたんですね。 その後のMsgBoxでちゃんと落ちているのは確認できたんですが、FileCopyは失敗してしまいます。 どうしたらよいでしょうか。これがダメ文字というやつですか?
コロンはパスの一部なので削ったらダメ タイトルが「パス - まめFile4」ってなってるのが原因なら、 パスじゃない部分「 - まめFile4」を削る。 ファイル名に日本語使ってないならダメ文字は関係ないよ
あれだ、たぶん、 たとえば、WorkingDirがC\AHKだったとすると C\AHKC\ほにゃらら.txtってことになるってことだろ。
あ、ちょっと、的ずれてた・・ タダ単に、相対パス指定では\以外で始まる指定は出来ないってだけだた・・ ごめん<>
えーと、こんな感じです。 C:\ahk ←これがWorkingDirで、 C:\home ←たとえばまめFile4でここを開いているとします。 「C:\ahk\"C:\home\ - まめFile4".txt」みたいな感じにしたいのですが、 ;;ほんとはこんな名前のファイルはつくりたくないのです。 ;;タイトルにパスが入るソフトの対策のためのテストというわけで。 「C:\home\ - まめFile4.txt」という名前で保存されることになるため、 実際にはC:\homeの下に「- まめFile4.txt」がつくられてしまうんですね。 で、これを回避したい、ということで。 それで、とりあえずコロンを落とすことにしてみたんですが…… あと、「\」も問題だと思ったので、「¥」に変えるとかしてみましたが、うまく行かず。 コロンを残しているとこんな感じになります。 「C:¥home¥ - まめFile4.txt」つまり、「C:」に「¥home¥ - まめFile4.txt」ができちゃう。
119 名前:unnamed.ahk[sage] 投稿日:06/02/01(水) 05:06 ID:???
そんなの聞く必要あるの?
この程度の簡単なものなら、見ればどういう動作するかはすぐにわかるんだから
自分にとって益があるなら使えばいいし、不要なら構わなければいいじゃん。
>>116 を誰が何の用途に使おうとどうでもいいだろ。
↑こいつ何様?
もう少し補足。 タイトルにパスが入って悪さをしさえしなければ問題がないんです。 で、ウィンドウのタイトルを拾うため、どうしてもファイル名に日本語が入ることは避けられません。 たとえば今このスレはJane Doe Styleで見てるんですが、これで同じ操作をすると、 タイトルが「Jane Doe Style 【ソフトウェア】 - AutoHotkey Theread 2」となっているので、 これ+.txtという名前にしたいわけなんです。 やっぱり難しいんですかね……
いや、別に平気でしょ。ただ日本語入るとダメ文字に引っかかる可能性あるのでそこは考慮する必要があるかもしれない。
ただ、さっきの問題とは別だよ。
^r::
WinGetActiveTitle, title
StringReplace, title, title, `:,:
StringReplace, title, title, \,\ , All
msgbox, %title%
FileAppend, , %title%.txt
基本はこんな感じになる。タイトルのファイルがダメ文字無ければ
ワーキングディレクトリにちゃんとファイル出来るよ。
ダメ文字関連はここ参照
ttp://www.tierra.ne.jp/~aki/diary/?date=20060111
>タイトルのファイルがダメ文字無ければ >ワーキングディレクトリにちゃんとファイル出来るよ。 文章めちゃくちゃだな・・(;´Д`) タイトルにダメ文字含まれてなければ、ちゃんと ワーキングディレクトリに狙ったとおりの名前のファイル出来るよ。 と言いたかった・・スレ汚れまくりごめん<>
>>458 えー、そのスレの 118=120 だけど、ここに持ち込まんでも…
ちなみに大元の書込み人からは補足が入った模様です
およよ…? 何かうまくいきますね。 すみません、レスいただいてありがとうございました。
SerchStr=\/:,;*?"<>|
ReplaceStr=\/:,;*?”<>|
^r::
WinGetActiveTitle, title
c=0
Loop{
StringMid, s, SerchStr, c+1, 1
if !s
break
StringMid, r, ReplaceStr, c*2+1, 2
StringReplace, title, title, %s%, %r%, All
c++
}
msgbox, %title%
FileAppend, , %title%.txt
>>463 これでファイル名に使えない文字はOKかな・・
うを、すばらしい! そのまま組み込んでみます。重ね重ねありがとうでした<O>ペコリ
466 :
448 :2006/02/01(水) 21:37:49 ID:+NEdY0Ev0
;メールサーバー
host=mail.xxx.xxx.jp
;表示するメアド
[email protected] ;送り先のメアド
[email protected] filedelete,temp.txt
fileappend,,temp.txt
sleep,100
run,temp.txt
sleep,1000
winwaitclose,temp.txt
run,smail.exe -h%host% -f%mine% -Ftemp.txt %address%
return
こいつをsmailのフォルダにいれてAHKを起動。ノートパッド開くから本文書いて閉じる。これでメール送信完了です。
自分はiniでアドレス帳作って、メニューで選択、確認ボタン、終了後に送信ログ残すようにしてる。
表示メアドに携帯メアド設定しとけば、携帯料金浮いてなかなかおいしいです。
いちいちメールソフト立ち上げてヘッダ変えてっつーのがめんどくさいもんで。
467 :
439 :2006/02/02(木) 17:06:47 ID:T+u93vk30
>>452 何かDllCallだらけで、どういう仕組みになってるか良く理解できてないけど、
とりあえずうまく標準出力を取り込めたよ。サンクス。
出てるスクリプトまとめたいんだが 本人はスクリプト理解してないんだよなぁ。 やっぱある程度分かってる人がまとめた方がいいよね。
Autohotkeyでは上手くテキストを取得できない リストヴューのテキストを取得したいんだけど (Clipyでは取れた。具体的にはnPOPのメール一覧) コマンドラインでWINDOWとかクラスとかを指定してテキストをコピーしてくれるような ツール知りませんか。
ネットの一時ファイルのうち、jpgファイルだけ削除したいのですが、 FileDelete, C:\Documents and Settings\ユーザー名\Local Settings\Temporary Internet Files\*jpg とやっても消えてくれません。 Temporary Internet Filesって、普通じゃ消せないのでしょうか。
実際はその二階層下のフォルダに入っている その書き方だと直下のJPGしか消さないかも Temporary Internet Filesを Loopして拡張子が JPGだったら消すようにしたらいいのではまいか。
>>471 content.ie5以下のフォルダにあるんですね。はじめて知りました。
以下のもので出来ました。感謝。
^#D::
path = C:\Documents and Settings\Admin\Local Settings\Temporary Internet Files\Content.IE5\
Loop, %path%*.jpg , 1 , 1
{
FileDelete, %A_LoopFileFullPath%
}
return
なまず日記さんがすげーことをやってるぞ
あそこはすごすぎてワシャついていけんw
よかった、ついて行けないのは俺だけじゃないんだw すごすぎて感嘆のため息しか出ません
476 :
名無しさん@お腹いっぱい。 :2006/02/06(月) 14:24:28 ID:3MY6UK/h0
>>473 IMEの状態表示っていうの試したけど
iniが初期状態だと何も起きないね
iniの仕様調べてまで試す気起きないな
このスクリプトがうまくいかないのはなぜでしょうか。 Home:: SetTitleMatchMode, 2 /* IfWinExist, メモ帳 { ControlSend,, ^s Send, a } */ IfWinExist, xyzzy { ControlSend,, ^a ;Send, ^a MsgBox, %ErrorLevel% } return Homeキーを押したらxyzzyにCtrl+Aを送る、というテスト用に書いたスクリプトなんですが、 アクティブなxyzzyにSendするのはできても、ControlSendはアクティブかどうかに関わらず動いてくれません。 でもErrorLevelは「0」です。 試しにメモ帳で似たようなことをやってみたんですが(上のコメントアウト部分)、こちらはすんなり通りました。
Home:: IfWinActive, xyzzy send, ^a else send, {home} return
あ。勘違いしてたすまん・・・なかったことに・・・
Home:: IfWinExist, xyzzy SendMessage, 0x102, 0x1, 0x1E0001 ;lParamは指定しなくても動くみたいだが・・。 return よくわからん。。これで一応逝けるけど。非アクティブだと反応が鈍い。 識者頼む。
書き忘れ0x102はWM_CHARです。
出来ないなxyzzy クラスの取得出来ないし、何か特殊なんじゃないか?
>>480 修正
Sendしちゃだめだったみたい。ポストしたらちゃんと動いた。
Home::
IfWinExist, xyzzy
PostMessage, 0x102, 0x1, 0x01E0001
;0x102はWM_CHAR 01E部分はスキャンコード、環境によると思うので適当に修正してくれ。つか、もしかしたらlParamは要らないかも。
return
xyzzyのクラス名は確か " "(スペース)かなんかだったと思う テキスト描画部は "1" とかそんなん。
>483 どうもいろいろ確かめていただいてありがとうございました。 ほとんどスレ違いになっちゃうのでこの書きこみだけにとどめますが、 どうもxyzzyの入力の受け付けはかなり特殊なようです。 他に試した限りでは、 場所に応じてIMEのON/OFFを自動切替する「Dさんの日本語じゃなきゃイヤン」というソフトも、 キーマップを入れ替える「姫踊子草」というソフトも、xyzzy上でだけは挙動不審になりました。 その都度メモ帳でも確かめましたが、こちらでは正常動作してました。 どちらも捨てがたいソフトながら、xyzzyでまともに動かないという一点で泣く泣く使用を諦めました。 ドライバレベルで動作する「窓使いの憂鬱」でもない限り、 入力関係ソフトにとってxyzzyは鬼門のようです。
スクリプトのコマンドラインオプションの出現位置を可変にしたいのですが、うまくいきません。 ^o:: Loop, %0% { ;if (%1% = aaa) if (%A_Index% = aaa) MsgBox, hit! } return Ctrl+Oで引数表示というサンプルを書いてみました。 はじめ引数に「aaa」だけ指定して、 このコメントアウトしている部分の条件で行なうと、きちんとhitしました。 そこで今度は「bbb aaa」を引数に指定してみて、上記のように書いてみたんですが×。 「%A_Index%」を「%%A_Index%%」としてみたら案の定怒られました……。 引数の出現位置って決まってないとダメなんでしょうか???
すいません、本家のサイトで調べて自己解決しました。 しかし、こんなやり方ほとんど裏技っぽい……。 param = %%A_Index%% はダメだけど、 param := %A_Index% ならOK、とのこと。
ネットゲームなんかで割り当てたホットキーが使えなくなるのはなんとかできないものでしょうか? 窓使いの憂鬱でも使うしかないのでしょうか・・・
490 :
sage :2006/02/13(月) 00:13:32 ID:xfk4rPhl0
質問です お試しに使い出したらすごいはまったんですけど 皆さん割り当てるキーってなんかうまいことやってますか? できるだけ他のアプリのショートカットとは競合しないように 設定したいのですが,何が安全なのかわかりません コツがあったらお願いします!
sageはメール欄にどうぞ
492 :
490 :2006/02/13(月) 00:34:08 ID:xfk4rPhl0
だな・・・ 多分生まれて初めてのミスだけど自然と心地良い
>>490 Ctrl+Win+○
をAutoHotKey用のショートカットにしてる。これならほとんど被らないし。
^#G ;選択文字列をググる
^#W ;壁紙変更
^#P ;スクリーンショットを時刻.pngで保存
みたいな感じ。実際はこのショートカットをマウスジェスチャーに割り振ってたりする。
AutoHotKeyのマウスジェスチャーに統合したいんだが、めんどいw
これはバグ? j < %i% で比較すると i < j が表示され、 i > %j% で比較すると i > j が表示される。 両方%で囲むと i < j になる。 ^i:: i = 1 j = 2 ;if (j < %i%) if (i > %j%) ;if (%j% < %i%) ;if (%i% > %j%) MsgBox, i > j else MsgBox, i < j return
そりゃ文字列と数字を比較演算した場合の当然の結果だと思うが。 比較演算で数値と文字列扱えるどの言語だって同じ仕様でしょ。 MsgBoxに i と書いて文字列の"i"が展開されてるのを見れば気付きそうなものだが。
そりゃ文字列と数字を比較演算した場合の当然の結果だと思うけど、
ttp://lukewarm.s101.xrea.com/Scripts.htm 条件分岐
If文で条件分岐が行える。
else文で条件に一致しなかったときの処理も記述できる。
比較条件は、if var = valueという形で記述できる。
比較演算子は、「=」、「<>」(not equal)、「>」「<」「>=」「<=」が使用できる。
左辺には変数名が来るが、右辺には値がこなければならないので、「%」で挟んで変数の内容を展開するようにする必要がある。
↑
この最後の行に書いてあるでしょ。
( )でくくるのがよくないのか。
たしかに、まぎらわしい仕様ではあるな
WinSet, TransColorで透明色を指定できるけど、 この色だけ半透明にするって指定はできない? 例えば、WinSet, TransColor, AABBCC 127, WinTitleと書くと AABBCCは完全に透明になり、それ以外の部分が半透明になってしまう。
>>499 できないんだよそれ。出来たらいいなとは思う。
>>499 以前それがやりたくてここで質問したものです
AUTHOTKEYのウィンドウならこれで出来ました
>>391-393 通常のウィンドウは。。無理なんだろな。。
502 :
499 :2006/02/14(火) 20:23:21 ID:RVF5Wq5S0
>>500-501 なるほど…
AutoHotkeyの仕様なのかOSの仕様なのか知らないけど、ちと残念。
透明になっても良いんだけど、クリックが素通りしてしまうと不便なんだよなぁ。
もっとメニュー作成機能を強化して欲しいかも。 ・アイコン表示 ・1行だけならサブルーチン化しなくてもMenuコマンドにそのまま記述可 ・メニューの複数列表示 ・オーナードローメニュー オーナードローメニューは面倒だと思うけど上3つはできると良いな。
Win起動したときにAutoHotkey.iniが勝手に開くようになったんだけどなんでだろう?
>>504 スタートアップにショートカットじゃなくて実体を入れた罠?
いや、INI本体のショートカットを入れたんだろう INIだからメモ調かなんかで開くわな。
Winnyで広がるahkウィルスとか書いたら楽しそうだな。 インストールベースが少ないからあんま広がらないか。
ahkより素直にjsやvbsで書いた方が広まるジャマイカ
>>506 正解。
なぜかスタートアップにiniのショートカットが入ってた。
入れた覚えないのにってかしばらくAHKいじってないのに。
不気味。
登録も管理も面倒だったけど、これでだいぶよくなった
512 :
名無しさん@お腹いっぱい。 :2006/02/16(木) 14:24:10 ID:nqNAQta60
便利になったとは思うけどホットキーなら ループで監視しなくても押された瞬間だけ判定すればいのでは
>>510 >無限loop
アクティブウィンドウ監視して変わるたびに
Hotkeyコマンド使って切り替えみたいな感じ?
ほっとけい
覚えらんない人のためのオンラインソフト備忘録 でこのソフトの
事が取り上げられてて興味が沸いたので、勢いこちらのスレに来てみたら。。。
>>1 はいったい何なんですか!?さっぱりわかりません!
それともスレ立て主は外人ですか?誰か僕にわかるように説明してくさい!
(´・ω・`)知らんがな
517 :
名無しさん@お腹いっぱい。 :2006/02/18(土) 21:53:53 ID:JQ9unHlx0
なまずの人ってここも見てるよね 2バイト文字対策の使わせてもらいました どうもです
アレの使い方がまだ分かんにゃい…
519 :
名無しさん@お腹いっぱい。 :2006/02/18(土) 22:01:56 ID:JQ9unHlx0
あとせっかく作ったから晒しとく。動けばいいって感じで作ってるから美しくないけど。 ディレクトリをドロップしたら中のファイルを一つ上の階層にコピーしてディレクトリを消すスクリプト if 1 = { msgbox,ディレクトリをドロップしたら中のファイルを一つ上の階層にコピーしてディレクトリを消します`n何か残ったらディレクトリを消しません exitapp } MsgBox , 4355,,移動するファイルに同名のファイルが存在した場合上書きしますか? IfMsgBox, Cancel, exitapp IfMsgBox, yes, SetEnv, oflg , 1 IfMsgBox, no, SetEnv, oflg , 0 Loop , %0% { src:=%A_Index% FileGetAttrib, att , %src% if att<>D Continue MBS_SplitPath( src , outFileName1, outDir1, outExtension1, outNameNoExt1, outDrive1 ) FileDelete, %src%\Thumbs.db if outDir1 = %OutDrive1% FileMove, %src%, %outDir1%\ , %oflg% else FileMove, %src%, %outDir1% , %oflg% Loop, %src%\* , 2 { MBS_SplitPath( A_LoopFileFullPath , outFileName2, outDir2, outExtension2, outNameNoExt2, outDrive2 ) FileMoveDir,%A_LoopFileFullPath% ,%outDir1%\%outFileName2% ,%oflg% FileRemoveDir, %A_LoopFileFullPath% } FileRemoveDir, %src% } exitapp
520 :
名無しさん@お腹いっぱい。 :2006/02/18(土) 22:04:14 ID:JQ9unHlx0
全角→半角関数使わせてもらってます。 ヤフオクなんかで、全角で書かれた口座番号をコピペするのが格段に楽になりました。
単純な#define部分だけで良いから、自動でWINUSER.H等をインクルードして欲しいなぁ。 一々メッセージを使うときにコメントでメモ書きするのめんどい。
523 :
名無しさん@お腹いっぱい。 :2006/02/22(水) 00:15:57 ID:JEPVrHVd0
あるAppのウインドウをWindowSpyで調べたところ、どのウインドウでもWindow Title & Classが すべて同じ値を返す場合、他の方法でウインドウをマッチさせる方法はありますか?
はい
質問です。 AutoHotKeyはイベントに対して処理をするということは可能でしょうか。 具体的には 「あるウインドウが閉じられようとしたら、閉じる代わりに非表示にする」 という動作をするようにしたいのですが。
ポチエスに複数ファイルを送るとショートファイルネームで処理されちゃうんだけど これをAHK内でロングファイルネームに戻したいと思ったんだが、 なんかそれっぽい記述がリファレンスに見当たらない なんかいい方法ない???
>>527 引数でやってきたものを処理したいんだけどできるかな。
しばらく考えたが思いつかない
(1)ぽちエスからショートファイルネームが複数やってくる
(2)それをロングに変換してファイルに書き出す
みたいな感じなんだけど。
>>528 Loop, %0%
{
i := %A_Index%
Loop, %i%
{
MsgBox, %i%`n%A_LoopFileName%`n%A_LoopFileFullPath%`n%A_LoopFileLongPath%`n%A_LoopFileDir%
}
}
すげ、できた!! ファイル名でLoopなんて出来るのか。 サンクス!!!!!
流行らせるページの管理人の日記がすごい TrayCommandもどきに感動 ついでにTrayExpandもどきも作ってくれないかとずうずうしい要望をしてみる
Alt+Tab代価するようなスクリプトつくってほしいな
AltTabコマンドじゃだめなの?
流行らせるページに一つあった
#IfWinActive, AutoHotkey.ini ahk_class Hidemaru32Class ^s:: Send, ^s sleep, 1000 Reload return リロードが面倒くさいのでAutoHotkey.ini編集中に上書き保存したらリロードするってのを考えた 一応sleep入れてみたんだけどこのsleepっているのかな?
すみません、こちらの皆さんには初歩的すぎるかもしれませんが、 マウスのボタンを押している間、 100mm秒間隔でクリックを連打 させるスクリプトはどう書けばいいのでしょうか?
>>535 1000msが妥当かは環境によるので何とも言えんが、ディレイは入れるべきだろうね
好きずきだけど、エディタ側にマクロ機能があるならそっちでやったほうが
無駄な待ち時間も発生しないし安全ではあるな。
自分は秀丸側のマクロでやらせてる
>>535 使ってるエディタが秀丸だったのか。
んじゃ、マクロの方がいいね。
更新日時見れば
loopを使えばいいの?どうやって止めるの?
542 :
531 :2006/02/25(土) 12:53:27 ID:Rs6mXlji0
すごい! たとえ私の要望から作ったのではないとしても本当にありがとうございます!
あんまりクリックしすぎると モニターに穴があくからやめたほうがいいよ。 漏れのディスプレイ、内部配線見えまくりだし
break >マウスのボタンを押している間、100mm秒間隔でクリックを連打 トリガはホイールクリックに割り当てるとか、別のキーでやるつもりなら大丈夫だが 左ボタン押下中に、左クリ連打とかって割り当ててしまうとどえらいことになるぞ あんまり分かってなさそうなので一応忠告しとく
2段階キーマップをやりたくてテストコードを書いてみたのですが わからないことがあるので教えてください。 fx -> f fs -> s ff -> k を意図して書いたのですが ff -> k が上手くいかないんです。 新しいスレッドが生成されるせいかと思うのですが 上手くやる方法ありますか? ちなみにコードはこれです。厨房質問ですいません。 f:: { Input,InputChar,C I L1 ,{Esc},x,s,f if ErrorLevel=Match { if InputChar=x send, f if InputChar=s Send, s if inputchar=f send, k } return }
:*:fx::f :*:fs::s :*:ff::k Hotstringでこうやれば?
>>546 レスありがとうございます。
試してみます。
さっぱりわかりません。 Mbutton:: Count = 1 loop { if Count > 20 break if Count < 19 sleep,50 send {Lbutton} Count = %Count% + 1 } return Lbutton up:: Count = 20 return
MouseClick または send, {Lbutton Down} send, {Lbutton Up}
MButton:: Loop { GetKeyState,keyState,MButton,P If(keyState="D") { Send,{LButton} Sleep,100 } Else Break } return これでできると思う
あんまりよそで迷惑かけちゃダメ!
サブクラス化は時計に描画するときの奴じゃない? TB_SETSTYLEメッセージでTBSTYLE_FLATとかをセットすれば行けるような気がする
554 :
552 :2006/02/27(月) 00:49:18 ID:tOahKDvK0
>>553 SendMessage,0x438,0,0x800,ToolbarWindow322,ahk_class Shell_TrayWnd
;0x438:TB_SETSTYLE 0x800:TBSTYLE_FLAT
こんな感じでしょうか?
OSはXPです。やってもらえるとわかるんですが、フラットに一応なりますがちょっとおかしいです。
あくまでTClockのようなものを目指しています。
それと、
>>552 にの中では「タスクスイッチにアイコンのみ表示」が自分には一番重要なんですが
これもメッセージだけでいけるんでしょうか?
とりあえずGETした値に|や&~でスタイルを足したり引いたりしないと駄目かと
AutoHotkeyでfenrir風スゴス
神
ぬるど
560 :
552 :2006/02/27(月) 14:03:58 ID:tOahKDvK0
>>555 うっかりしてました。
SendMessage,0x438,0,0x52009B45,ToolbarWindow322,ahk_class Shell_TrayWnd
これで「平らなタスクスイッチ」は実現できました。
ただ、同じように
SendMessage,0x438,0,0x56008B4D,ToolbarWindow321,ahk_class Shell_TrayWnd
とやっても何故か「平らなトレイ」はできません。
デスクトップ上やエクスプローラーで、マウスが掴んでいたり、選択状態にあるファイルの収得って出来ます? 選択されてるファイルを移動したり、エディタで開いたりといった、一括処理をしたいんです。
流行らせるページや、なまず日記さんのところにある修飾キーの複数回押しに機能を割り当てる スクリプトを使用したいのですが、キーを長押ししたときに連続入力されて複数回実行されてしま います。 これを回避するために修飾キーの長押し時の連続入力?を無効にして、長押し時は1回の入力と する方法があれば教えていただけないでしょうか。
>>561 ファイラー、スクリプト、ソフトなどでパスを一度クリップボードに送ればできますよ。
>>562 KeyWaitを使えばできます。おそらく。
流行らせるページの例を拝借しますが、
~Ctrl::
if A_TickCount < %ctrldouble%
{
;some action
ctrldouble=0
}
else
{
KeyWait,Ctrl ;これを追加
ctrldouble=%A_TickCount%
ctrldouble+=400
}
return
564 :
562 :2006/02/27(月) 18:29:23 ID:8205XDO60
>>563 ありがとうございます。
思っていたとおりの動作をしてくれました。
コピーをしようとして、設定していたアプリが多重起動したときは焦りました。
>>560 立体的になってるのは枠の部分だから
WinSetでWS_EX_CLIENTEDGEとかを消してやればいいんじゃない?
566 :
552 :2006/02/27(月) 22:38:27 ID:tOahKDvK0
>>565 関係ありそうな、Shell_TrayWnd・TrayNotifyWnd1・SysPager1
の3つのウィンドウでExStyleを取得してみましたが
どれにもWS_EX_CLIENTEDGEはありませんでした。
567 :
552 :2006/02/27(月) 23:42:36 ID:tOahKDvK0
TrayNotifyWnd1からWS_EX_STATICEDGEを外すことで解決しました。 Control,ExStyle,0x0,TrayNotifyWnd1,ahk_class Shell_TrayWnd あとは「タスクスイッチにアイコンのみ表示」「スタートボタンを隠す」の2つ。 スタートボタンはControl,Hideで隠すことはできるんですが、 隠した場所が空白になってしまいます。 空白を埋めるようにウィンドウやコントロールを左に移動してもうまくいきませんでした。
流行らせるページの虫眼鏡、どうも挙動不審で使ってると拡大された画像が更新されなくなるんで、 なんでかなぁっておもってたんだけど、もしやDC絡みかなと思って、Draw()呼ばれる度に 取得と解放するようにしたら、タイマー小さくしてもぬるぬる動くようになったーよ。 カクカクしちゃうのはAHKの限界だと思ってたのでびっくりした。 以下修正した部分。 ;省略 Gui,+E0x00080020 ;myhdc:=DllCall("GetDC",UInt,myhwnd,UInt) ;コレ削除 dthwnd:=DllCall("GetDesktopWindow",UInt) ;dthdc:=DllCall("GetWindowDC",UInt,dthwnd,UInt) ;コレ削除 SetTimer,Timer,100;ここ小さくしてもスムーズに更新されるようになったです。 Timer: Draw() return Draw(){ global Size,Magnification,myhwnd, dthwnd ;ここ変更 myhdc:=DllCall("GetDC",UInt,myhwnd,UInt) ;コレ追加 dthdc:=DllCall("GetWindowDC",UInt,dthwnd,UInt) ;コレ追加 CoordMode,Mouse,Screen ;省略 DllCall("StretchBlt",UInt,myhdc,Int,0,Int,0,Int,s,Int,s, UInt,dthdc,Int,left,Int,top,Int,Size,Int,Size,UInt,0x00CC0020) DllCall("ReleaseDC", UInt, myhwnd, UInt, myhdc) ;コレ追加 DllCall("ReleaseDC", UInt, dthwnd, UInt, dthdc) ;コレ追加 WinSet,Top,,ahk_id %myhwnd% }
やべぇ、虫眼鏡気に入った。 半透明化するとカコイイし使いやすい。 旗+ホイール回転で拡大縮小にしたらこれまた良い感じだ。 Ctrl+旗+ホイール回転でサイズだけ変えるようにしたらまたこれが良い感じだ。 管理人さんコレ結構使えるよありがとう。
570 :
名無しさん@お腹いっぱい。 :2006/03/06(月) 15:39:50 ID:15ZX1WmO0
マルチモニタで使用しています。 WinMoveでウインドウを反対側のモニターに移動させようとしたら、ウインドウが最大化の状態では 移動できないんですね。なんか対策方法ってありますか?
起動中のスレッドの数を取得する方法ってありますか? 一応 ListHotkeys の Running で調べることはできるんですけど、 スクリプト内でスレッドの数を取得することができないで悩んでます。
1.0.42.05 - March 6, 2006 This is functionally identical to the previous release, whose EXE and BIN were about 1% larger than they should have been due to a compiler quirk. 1.0.42.04 - March 6, 2006 Fixed ClipboardAll when used with apps such as Word and Excel (broken by previous version). [thanks Roussi Nikolov] Fixed ClipboardAll to prevent appearance of bookmarks in MS Word. [thanks Laszlo & 02clams] Fixed A_TimeIdlePhysical being disrupted by simulated AltGr keystrokes. [thanks skrommel] Fixed Send{Blind} causing sticking Win/Ctrl/Alt/Shift when the user released such a key in the middle of a Send. Improved the Send command not to press and release the shift key after each uppercase letter (e.g. Send ABC). Improved SoundSet/Get to support ComponentType "Headphones". [thanks Tobias Winkler]
A:: Send,{F1} B:: Send,[F2} ... とやってすべてのキーに対して IfWinActive,TargetWindowTitle { Send, {???} return } したいと思ったら個別に全部書かないといけないの?
今ならこれで行ける A:: #IfWinActive nanntoka A:: #IfWinActive kantoka A::
格ゲーのコマンドを空いたボタンにマクロ化しようと思ったんだけど 十字キーをどうsend,{}に書けばいいのかわからない… 教えてください、お願いします
Send,{Right} Send,{Down} Send,{Right} じゃだめなの?(昇龍拳)
1.0.42.06 - March 7, 2006 Fixed crash of A_ScriptDir (broken by 1.0.42.01).←これがぬるタソがバグレポートしたヤツかな? Fixed Run/RunWait's passing of an extra space character at the end of the parameter list when launching shortcuts. [thanks arbe] AutoHotkey.comなんかもの凄く重い・・・ なにわともわれ、ぬるたんGJ!!
>576 言葉が足りなくてすまん、 えーと、 joypadからの入力としてはどう書くのかなーと。 ボタンは1joy5とかでなんとかなるんだけど 方向キーのjoyXとかの書き方が良く解らなくて。
>579 いや、そりゃそこも見てるんですよ? ただ十時キーの場合右、中、左を 0〜100とかの数値で表さなきゃいかんじゃないですか? それをどういう書き方で書けばいいのかと思いまして。 状態はわかってもsendは出来ないのかな…
>>580 デジタル十字キーは、ボタンのどれかにマッピングされてるはずだが
アナログなら書いてある通りだ
ぬる様を知らないとは・・・。
自分のスクリプトの設定ウィンドウを作りたいんだが ボタンとか部品を値で指定するのが面倒です GUIを設計するのに便利なツールってありませんか? AHK用でなくても 部品の位置(X,Y座標)、width,heightなどが分かればいいんです 私はプログラムを組んだのは CUIベースのやつをちょこっと触ったくらいなので GUIを作るのに便利なツールとかホントよく分からないのです。 どなたかお願いします
必要最小限の記述だけでとりあえず入力できるウィンドウが出せるだろ Delphiのフォームエディタなんかでペタペタ並べていくより楽だと思うが
>585 AHK用のやつをAHKで作ってた人いるんですね。 少し触ってみたんですがなかなか良さそうなので シコシコぺたぺた作ってみます。 ありがとうございました >586 自己満足ながらそれなりの見栄えがほしいのですわ 身内にまわすつもりのスクリプトなんで
本来1行に書かなければいけないものを 複数行に渡って書くことはできないでしょうか?
例えば?
If 1 Contains あいうえお,かきくけこ,(…) って時に分けたいなあって時はある。
591 :
588 :2006/03/10(金) 20:41:18 ID:DvP0u0ni0
>>589 If(WinActive(........) || WinActive(..........) || WinActive(..........) || ..)
などの時です
IME on/off トグルはどのようにすればできますか。 探してみたのですが見つかりませんでした。
原始的な方法は IME ON/OFFを IMEプロパティから適当なキーに設定して それをSend。
>>592 具体的にどういう用途に使うの?
AutoHotkeyを流行らせるアップローダの029.zip使えば解決するとは思うけど。
595 :
592 :2006/03/11(土) 11:16:04 ID:+FW9TX3p0
>>593 ありがとうございます。
英語キーボード なので、Alt+`がデフォルトのIME On/Offなので
これをやったのですがうまくいかなくて。
RAlt:: Send,!`
とやってみたのですが、何が間違っているのでしょうか?
>>594 上に書いたとおり、英語キーボードだとIME起動がちょっと面倒なのです。
今は窓使いの憂鬱で右AltをIME On/Offにしていますが、
まずAHKでも同じことができれば、AHKの他の機能も試用してみたいと思いました。
Send, {ALTDOWN}`{ALTUP} こう書くんじゃないの?
597 :
592 :2006/03/11(土) 13:01:55 ID:mSorvu8J0
>>596 試してみましたが、フォーカスがメニューに移る、通常のAltキーの動作しかしませんでした。
AHKのOpenメニューで見てみましたが、{ALTUP}{ALTDOWN}となっていて、
やはり右Altとしては認識されていないようです。
`は``とエスケープしないと
599 :
yy :2006/03/12(日) 00:16:48 ID:gfXzHMTR0
マウスのホイールup、downをタブ切り替え(ctrl+up、down)に割り当てたいんですが どうやるの?
600 :
yy :2006/03/12(日) 00:18:28 ID:gfXzHMTR0
書き忘れましたが、エクセルでの話です。
601 :
yy :2006/03/12(日) 00:20:21 ID:gfXzHMTR0
またまた書き忘れましたがマウス+ホイールup、downの動作のことを言いたいのです。
602 :
592 :2006/03/12(日) 01:48:47 ID:flSoepXq0
>>598 できました!!
RAlt:: Send, {ALTDOWN}``{ALTUP}
これで右AltでIME On/Offができるようになりました。
窓使いの憂鬱では、押しただけのときはIME On/Off、
押しっぱなしにしてほかのキーと同時に押したときはAltの役割ができたのですが
これをさせるにはどうしたらいいでしょう。
RAlt up:: Send, {ALTDOWN}``{ALTUP}
とやると、右Altを離した瞬間にIMEが切り替わってしまいます。
そういうのはマウ筋使った方が早いな>yy
604 :
592 :2006/03/12(日) 12:11:54 ID:MzJzCq0O0
>>601 はまだ自己解決していないのですが、ほかにも問題が生じてきました。
英語102キーボードなので、デフォルト設定ではCapsLock単押しでCapsLock On/Offになりますが、
これを某アプリケーションのホットキーにし、もとのCapsLockをShift+CapsLockに割り当てようと思っています。
(日本語キーボードと同じCapsLockにしたい)
そこで、
CapsLock:: Run, "application_path"
+CapsLock:: Send, {CapsLock}
としたところ、アプリケーション起動はうまく行きましたがShift+CapsLockが動きません。
SetCapsLockStateを使いたいのですが、On/Offの切り替え方法が具体的にわかりません。
探してみるとAHKではCtrlとCapsLockの交換が難しいとかそんな情報は見かけたのですが、
結局方法が記載されたページが見つけられませんでした。またここの過去ログも参照できませんでした。
基本的な質問が続き申し訳ありませんが、よろしくお願いします。
605 :
592 :2006/03/12(日) 13:37:35 ID:MzJzCq0O0
>>604 +CapsLock::
GetKeyState, state, CapsLock, T
MsgBox, %state%
Return
とやってサブルーチンが実行されているかを試しましたが
期待したメッセージボックスも出ず、どうも+CapsLock::の記述がダメそうです。
+{CapsLock}::もうまくいきません。
コントロールの座標を取得する方法は載ってるけど Guiで生成したウィンドウの絶対座標(スクリーン座標?)を取得する方法が分かりません。 WindowsMessageを送ればできるような気もしますけど そんな事したことないのでどうやるのかさっぱりです。 どうすればウィンドウの座標を取得することができるんでしょうか?
WinGetPosじゃ駄目なん?
Guiの方ばっかり見てて Windows関係の命令見てませんでした。 WinGetPosでいけますね、失礼しました。
質問です。 以下のような書き方をした場合、5行目に何か(この場合はsleep)を入れないと次のifがすっ飛ばされるのですが、この書き方はだめなんでしょうか。 sleepじゃなくても、msgboxでもa=1でも、何か1行入っていれば思った通りに動作します。 が、この行を消したりセミコロンでコメントにすると次のifがとばされるようなので。 ;_____________________________________ StringLen, length, strings if (length = 0) ,continue sleep,1 if (i=1) FileCreateDir, %dir%\%name_no_ext%\ ;_____________________________________
>if (length = 0) ,continue
途中送信してもうた continueはLoopの中でしか使えないんジャマイカ どっちにしてもカンマで区切って一行に納めるのはNGだったと思う 最近バージョンアップチェックしてないので、記述ルール改定されてたらスマソ
;_____________________________________ StringLen, length, strings ifEqual, length, 0, continue ifEqual, i, 1, FileCreateDir, %dir%\%name_no_ext%\ ;_____________________________________
>>611 すみません、これLoopの中です。
で、ご指摘の通り
if (length = 0)
{
continue
}
にしたらちゃんと動きました。
流行らせるページのIfInStringの説明にカンマで区切ってOKとあったので、このifでも気にせずカンマで区切ってました
if単体だとカンマ区切りは動作がおかしくなることあるのかな…?
>>612 すごいスマートです。
ifEqualを使えばよかったんですね。
ありがとうございます。
流行らせるページを再読したら >IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。 しっかり書いてありました。お騒がせしました。
ただし、コマンドしか使えないみたいなので気を付けて。 Another command can only appear on the same line as the IF statement if you use the command-name style. In other words, these are valid: IfEqual, x, 1, Sleep, 1 IfGreater, x, 1, EnvAdd, x, 2 ←EnvAddはコマンドなのでこれは正しい記述。 But these are not valid: if x = 1 Sleep 1 IfGreater, x, 1, x += 2 ←これは式なのでNGらしい。 if文まわりはややこしい・・・
ややこしくなるから if(式){ } その他のIFコマンド { } 以外は使わない方がいいよ
システム以外のマウスカーソルの情報を取得する方法ってありますか? A_CursorでUnknownになってしまうようなカーソルを知りたいのです
Hotkey sでループをスタートさせて、無限ループになってしまった場合に Hotkey hで止めたいのだけれど、どうすれば良いのでしょうか?助言おねがい。 s:: Loop { 〜処理〜 if abc = 1 break } return h::ExitApp
>>619 何故その記述では駄目なのか、ってことを書かなきゃ助言しようがない
621 :
名無しさん@お腹いっぱい。 :2006/03/17(金) 18:12:51 ID:zTH699bB0
それで動くかどうか検証めんどいからしないけど 無理だっていうならループ内でsが押されてる状態かを毎回判断すればいい
622 :
619 :2006/03/17(金) 18:38:40 ID:FiSk8Qjk0
Sleepいれてみたら止めることができました。 くだらないことでスレ消費してごめんなさい。 レスありでした>620、621 s:: Loop { 〜処理〜 Sleep, 0 <-ここ if abc = 1 break } return h::ExitApp
またきました。sとhでスクリプトを終了させないままスタート/ストップを繰り返すために 以下のようにしたんですが、もっと上手いやり方とかありますか?添削おねがいします。 s:: loopflg = 1 Loop { 〜処理〜 Sleep, 0 if abc = 1 break } abc = loopflg = return h:: if loopflg = 1 abc = 1 return
一時的なデバッグで永久ループから脱出したいって話じゃなかったのか? 一旦リセットしたいなら h::Reload
>623 GetKeyStateじゃだめなの?
KeyWait ってのもあるでよ
627 :
623 :2006/03/17(金) 21:47:02 ID:hFQNB0xp0
>624 最高。今回の目的にバッチリ適合です。 デバッグが楽になったのも思わぬ収穫^^ s:: Loop { 〜処理〜 Sleep, 0 if abc = 1 break } return h::reload
>625のもやってみた。 s:: Loop { 〜処理〜 Sleep, 0 if abc = 1 break GetKeyState, state, h, P if state = D break } return これも目的の動作はしたけど、今回は>624案を採用。 >626のはLoopを抜ける時どう使うのか分からず・・・orz 皆様レスありでした。
DonationCOdeでなんかおもしろそうなんが出てた
>>628 便利! ワンキーでできないかな?
s::
cnt++
Loop
{
Sleep, 0
If cnt > 1
{
Exit
}
}
cnt--
Return
これは駄目みたい…。
>>630 これでいけるっぽい。
#MaxThreadsPerHotkey 1
s up::
if state = D
state =
else
Loop
{
〜処理〜
Sleep, 0
if abc = 1
break
GetKeyState, state, s, P
if state = D
break
}
return
ところでデバックってなんだ?
632 :
630 :2006/03/18(土) 02:14:02 ID:C4FDHepp0
>>631 おおお、素晴らしい。感謝です。
答えを出してもらいながら申し訳ないが、例えば、
Gui, Add, Edit, Gtest ←これ
みたいなサブルーチンの中に、今までのサンプルみたく無限ループがあったとして、
同じサブルーチンをもう一回呼び出したときにループを終了させたいときには、
GetKeyStateだと煩雑になる予感。
こういう場合にも、ビシッとループを終了できないかな?
>630 英語HelpのFAQにある How can a repeating action be stopped without exiting the script? って項にあるサンプル使うとワンキーでLoopのスタート/ストップできた。 多重ループで使ってみたいのだけども、もっとエレガントになるかな? #MaxThreadsPerHotkey 3 s:: #MaxThreadsPerHotkey 1 if KeepLoopRunning = y { KeepLoopRunning = return } KeepLoopRunning = y Loop { 〜処理〜 Sleep, 0 Loop { 〜処理〜 Sleep, 0 if KeepLoopRunning = break } if KeepLoopRunning = break }KeepLoopRunning = return ・・・全角スペースいれてます
634 :
名無しさん@お腹いっぱい。 :2006/03/18(土) 15:20:28 ID:Yl3U5BIi0
スレッド優先度ってマイナスの値入れちゃっても大丈夫ですか?
つhelp
>>635 ありがとう、もう一度読み直してみたら書いてありました。
637 :
630 :2006/03/19(日) 00:46:48 ID:5zHaODEE0
>>633 サンクス! レス遅くなって申し訳ない。
英語Helpにそれらしいのがあったとは…。読み足りてなかったです。
ホットキー(今回の場合 s::)だと凄いいい感じに動いてるんだけど、
それを Gui, Add, Edit, Gtest とかのサブルーチン(ここでは test:)に置き換ると、
3回目のキー押下時にどうもミスります。
…よく分からないんで、ちょっと考えてみます。
>>637 そういうのはTimer使った方が楽じゃない?
用途間違えてるかもしれないけど。
Gui, Add, Edit, Gtest
GUI, Show
return
test:
if TimerOn = 1
{
SetTimer, Timertest, Off
TimerOn =
}
else
{
SetTimer, Timertest, 55
TimerOn = 1
}
return
Timertest:
count++
if count > 100
count =0
tooltip, てすと %count%
return
>>638 ありがとう! まさに求めてたものです。
具体的には、スレッド実行中に新しいスレッドが呼び出されたとき、
後のスレッドは前のスレッドが終了するまで後回しにされるか無視される仕様からか、
スレッドの処理がスルーされるのが少し困ってたんです。
これで、前のスレッドを途中で停止して後のスレッドを実行する、
みたいなことができるぽいです。他にも色々と効用ありますし。
感謝感激、みんなありがとう〜!
640 :
名無しさん@お腹いっぱい。 :2006/03/21(火) 04:23:15 ID:y745q5bd0
カナロックONの時は Joy1::Send, 3 ; ジョイパット1キーで"あ" を入力 Joy2::Send, e ; "い" を入力 … カナロックOFFの時は Joy1::Send, a ; "A" を入力 Joy2::Send, b ; "B" を入力 … となるようにしたいのですがカナロック状態の取得の仕方が分かりません GetKeyState, OutputVar, vk15, T は試してみたのですが常に OutputVar = D となってしまうようです。 流行らせるページのアップローダにあったIME_Func.ahkも試しましたが IME OFFの時などいくつかの条件ではうまく判別することが出来ませんでした。 外部ツールやDLLを利用する方法でもよいので、もしあれば教えてください。
文字列をURLで使える %E5とかに変換する方法ありまっか? Yahooの検索で日本語がうまくいきまへん Proxomitronでも頑張ったんだがなんか無限ループとかで挫折。
1バイトずつチェックして変換するしかないんじゃない? 日本語で検索できないのは、リクエストの文字コード指定が悪い所為のような気がするけど。
>>641 おみとろん使えるなら$ESCでダメか?
とスレ違いレスをしてみる
>>642 うん、基本そうなんだろうけど
Proxomitronでがちがちにフィルターしてるから何が何だかわからなくて
そちらでやるのをあきらめて最初からあの文字列でINPUTから
リクエストできればいいかなあとか思ってしもうた。
>>643 どうもフィルターの相性なのか思ったとおりにならなくてお手上げ中。
も少しがんがってみる。
このソフトでパスワード入力ソフトの代わりはできますか?
>>645 出来るとは思うけど、素直に既存のソフトを使った方が良いよ。
CapslockにCtrlを割り当てたくて Capslock::Ctrl ; Make Capslock become a Control key. を試してみたのですが, Capslockを離した後もCtrlを押したまんまの状態になります どうすればよいでしょうか?
キーの履歴を開いてみたらCapslockは押し下げだけ感知して離すのは無視されてるみたい。 どうしてもAHKでCapslockが使いたいのなら押されてから数秒たったらCtrl Upを送信するようにするとか InputでCapslockの次に押されたキーを読んでみるとか方法が無いことも無いんだろうけど とりあえず他のソフトで出来るかどうか試してみては?
649 :
647 :2006/03/24(金) 08:37:38 ID:Se2Qk5Yk0
CapsLockにCtrlを割り当てるとCapsLock Upが返ってこないですね exeにしてどこでもすぐ使えるようにしたかったのですが…… とりあえずレジストリをいじって解決しました
流行らせるページのどっかに記述あったと思うけど Locks系は日本語環境だと正しく取得できない。 OSがドライバレベルでなんかやってる。(ダブルバイト環境共通なのかどうかは知らん) 過去ログでも何度も話題になってる。次スレではテンプレに入れたほうがいいかもね。
うちだとCapslockで CTRL+C,Vが送られるお。なんだこれって感じ。
>>646 これでできれば、常駐ソフトを減らせるなーと思いまして
人の作ったahkファイルを、自分のAutohotkey.iniにIncludeで組み込もうとするとき、 モノによってはAutohotkey.iniの#Persistent内にあるSet timerが無効になるんですが、これはどの辺が原因なんでしょう。 流行らせるページにあるのだと、mbstring.ahkはOKだけどInlineCalc.ahkはだめです。
654 :
名無しさん@お腹いっぱい。 :2006/03/26(日) 00:23:53 ID:b3Nu7QpN0
>653 もしかしてAuto-executeセクション中にIncludeしてないですか?
>>654 思いっきりしてました。
AHKのルールあまりよくわかってないんですが、こういう使い方ってNG?
AHK2つ常駐させるのがいやで一つにまとめたいっていう場合、Autohotokey.ini内にIncludeで組み込むって言うのは間違った使い方なんでしょうか。
>655 とりあえずInlineCalc.ahkに関しては引数が重複してなければAuto-executeセクション外に インクルードすれば使えるかもしれないけど、インクルードした後の動作を予測することなしに よそから拾ってきたスクリプトを次々とインクルードして使うのはおすすめしません。
>>656 そうですか。わかりました。
拾ってきたスクリプト解析して、自力で組み込めるよう努力します。
*z::f でzをfキーへ入れ替えが出来る事がわかったけど これを瞬時に元に戻したり又入れ替えた状態にするには? ALT+1でデフォルトのキー配列、ALT+2でキー入れ替えた配列にしたいです
HotkeyコマンドでONとOFFを切り替えらられるよ
読み出したスクリプトに!1::ExitAppを加える事で解決出来ました。また質問ですが MButton::3でホイールボタンを3、SHIFT押しながらホイールボタンを4に割り当てたいのですが SHIT押しながらホイールボタン押すとSHIT+3となり#が入力されてしまいます どの様な記述になるのでしょうか
>>660 もうちょい本家ヘルプなり流行らせるページなりを読んだ方が良いと思う。
一部vbsを使い、Autohotkeyで以下のようなサウンドプレイヤーの作成に挑戦してみました。 1.選択ファイルのパスをコピーして 2.そのパスをvbsに渡して、GetDetailsOfで曲の長さを取得 3.テキストファイルにファイルのパスと曲の長さを書きだして、プレイリスト作成 4.AHKでプレイリスト読み込んで、「SetTimer,再生実行サブ,曲の長さ」でリストのファイルを連続再生 5.変数に演奏中のトラックナンバーを保存し、ホットキーで曲の移動も可 という感じで作りましたが、見てわかるとおりソースがスマートじゃありません(動作は期待通りのモノですが)。 AHKでやるのが間違っているというのは十分わかっているんですが、そこにこだわりたいんです。 軽いし。 何かスマートになるアドバイス合ったらお願いします。 2,3がvbsなので、このへんをAHKでできればいいんですが。
>>661 色々試したんだけど結局できません
とりあえずkeylay21で凌いでますがkeylay入れてあるとマウスドライバが書き換えられる
みたいでなんかいまいち 4000円も出すんじゃなかったと
LCtrl::LShift
LShift::LCtrl
MButton::3
^MButton::4
SHITとCTRLを入れ替えてある状態で、CTRL(指はシフトキー)押しながらホイールボタンで4を
入力させたいのですがAHKじゃ無理なのでしょうか?
出来るか出来ないかだけでも教えてくださいorz
出来るのであればもう少しカンバッテみます
終了時にウィルススキャンしてから終わるってできますか?
これでシャットダウン時にウィルススキャンをしてから終了ってできるのですか?
667 :
名無しさん@お腹いっぱい。 :2006/03/30(木) 18:23:58 ID:F2a/hdHF0
自分で努力しないと出来ません
なるほど。 足りなかったのは努力なんですね。 ありがとうございますた。
子ウィンドのハンドルがうまく取得できないのは仕様? MouseGetPosでマウス下の領域のウィンドハンドル取得しようとしても、ウィンド全体のが帰ってくる
>>660 MButton::Send, 3
+MButton::Send, 4
>>663 ;****** Script01.ahk ******
OnExit, ExitSub
Run, C:\Program Files\AutoHotkey\Autohotkey Script02.ahk,,,PID
esc::exitapp
LCtrl::LShift
LShift::LCtrl
ExitSub:
DetectHiddenWindows On
PostMessage, 0x5555,,,,ahk_pid %pid%
Exitapp
;****** Script02.ahk ******
OnMessage(0x5555, "MsgMonitor")
MButton::Send, 3
^MButton::Send, 4
MsgMonitor(){
Exitapp
}
同一プロセスだとうまく動かないので2つのスクリプトに分けた。
Script01を実行すればScript02が立ち上がって、Script01が終了すればScript02も終了する。
うちでは一応それなりに動作しているように見えるけど、うまくいかなかったらごめん。
(ところで、秀丸エディタって修飾キー絡むとうまくうごかないのね・・・
秀丸上で試してたからうまく動かないので悩んだ。)
>>671 様ありがとうございます!
何がなにややらな状態ですがとりあえず動いてます
こんなきっかけが欲しかった所です
このスクリプト一行一行勉強してみます
>>662 そういうこだわり好きだぜ。
FileSelectFile, SelectedFiles, M3, ,Open, Media Files (*.mp3;*.wav)
Loop, parse, SelectedFiles, `n
{
if(A_Index = 1){
CurrentDir=%A_LoopField%.
}else{
SoundPlay, %CurrentDir%\%A_LoopField%, wait
}
}
exitapp
#down::SoundPlay, NULL ;存在しないファイルを指定。(たったこれだけのことを思いつくのにどれだけ掛かったことか・・)
win+↓キーで次の曲に飛ぶ。応用すれば自由に移動可能ではないかと。
色々試して無理だコリャとか思っていたら、あっけないほど簡単な解決策だったりする罠。
頭が固くなってきてるなぁ・・orz
しっかし、たったこれだけで簡易メディアプレイヤーが出来てしまうなんてスゴス。
ぬる℃家さんのHPの移転先どこ?
避難所じゃない?
>>673 662です。すばらしい。非常に参考になります。
プレイリストをGui表示したりすれば、かなりまともなメディアプレーヤーになりそうですね。
にしても、言われてみれば簡単だ。俺も頭固いな…。
単純にファイル渡しでもファイラーから フォーカスを奪わずに試聴できるね
678 :
674 :2006/04/06(木) 21:38:00 ID:7OM6hwZV0
679 :
673 :2006/04/07(金) 16:28:37 ID:oc5/fhnE0
SoundPlayで長い曲再生すると戻ってこなくなる?
>>673 のスクリプトでアルバムを聞いてて気付いたんだけど、
なぜか、最後まで再生し終わってスクリプトが固まった。
よく考えてみたら最後の曲だけ長くて8分あるので
試しに別の7分ちょいの曲と6分ぐらいの曲を連続で再生してみたら、7分の曲再生し終わった時点で固まって
次の曲再生されなかった。
うちだけ?
試してみようと長めの曲投げてみたら再生しなかったな VBRとかもあんのかな。
30分のネトラジ(wma)投げたけど、問題なかったな とりあえず最初に依頼したので、完成品を貼っておきます #p:: ;選択したファイルでプレイリスト作成&再生 OverWrite = True ;上書き StopFlag = Flase Gosub,MakePlaylist TrackNumber=1 GoSub,Player Return !#p:: ;選択したファイルをプレイリストに追加&再生 OverWrite = False ;追加 StopFlag = False Gosub,MakePlaylist GoSub,Player Return #PgDn:: ;次の曲再生 SoundPlay, NULL Return #PgUp:: ;前の曲再生 TrackNumber-- TrackNumber-- SoundPlay, NULL Return #End:: ;再生を停止 StopFlag = True SoundPlay, NULL return
682 :
続き2/3 :2006/04/07(金) 23:27:54 ID:EWcuZxfA0
MakePlaylist: ClipSaved := ClipboardAll ;クリップボードの中身を一時待避 Clipboard = ;とりあえずクリップボードを空にして Send, ^c ;Ctrl+C ClipWait,1 ;クリップボードが読み取れるようになるのを待つ(最大1秒) i = 1 Loop, Parse, Clipboard , `n, `r ;クリップボード内のものを改行区切りに分解して { SplitPath, A_LoopField , FileName , Dir , Extension ,, Drive ;パスかどうか判定 StringLen, length, drive ;ドライブ文字の長さを見て ifEqual, length, 0, continue ;パスっぽくなかったらやめる if ( Extension != "mp3" && Extension != "wav" && Extension != "wma" && Extension != "ogg" ) ;拡張子が音楽ファイルじゃないならやめる continue if i = 1 ;テキストファイルにファイルのパスを書き込み OutputText = %A_LoopField% else OutputText = %OutputText%`n%A_LoopField% i++ } If OverWrite = True FileDelete , %CurrentDir%\Playlist.txt FileAppend , %OutputText%, %CurrentDir%\Playlist.txt Clipboard = %ClipSaved% Return
683 :
最後3/3 :2006/04/07(金) 23:28:46 ID:EWcuZxfA0
Player: Loop { FileReadLine, OutputVar, %CurrentDir%\playlist.txt, %TrackNumber% If ErrorLevel = 1 ;リストの最後まで行ったら { TrackNumber = 1 ;最初に戻る FileReadLine, OutputVar, %CurrentDir%\playlist.txt, %TrackNumber% } SplitPath, OutputVar , FileName ToolTip, %TrackNumber% - %FileName% ;再生するファイルをツールチップ表示 SetTimer, RemoveToolTip, 1000 Soundplay,%OutputVar% , wait IfEqual,StopFlag,True,Break ;ループ抜ける TrackNumber++ } return RemoveToolTip: ;ツールチップ削除 SetTimer, RemoveToolTip, Off ToolTip return
684 :
673 :2006/04/08(土) 05:37:18 ID:EzpMT1rj0
>>681 気軽に再生出来てなかなかいいっすねこれ。なんつっても軽いし。
ところで、長い曲(が原因か判らないけど)で固まる問題ですけど、
>>681-683 のスクリプトでもやっぱり再現した・・・
MCI内部で呼んでるみたいなんで試しにMCI直で呼んでみたけど、やっぱり同じ状態になったので、
MCI自体の問題なのかも。
>>680 VBRって言われてみれば確かにVBRのファイルなんですよねこれ。
VBRで長いmp3だとおかしくなるのかな?
検証するのに何度も同じ曲聞かなきゃなんないから疲れるょ・・
AHKが悪い訳じゃないことが解っただけでも良かったけど・・
WでRClick, AでCtrl+RClick, DでAlt+RClickをやりたいんですが 下のコードだとDを押してDを離してもRClickは解除されるもののAltが押しっぱなしの状態になってしまいます。 どうすればいいんでしょうか? w:: Send,{RButton Down} return w up:: Send,{RButton Up} return a:: Send,{Ctrl Down} Send,{RButton Down} return a up:: Send,{RButton Up} Send,{Ctrl Up} return d:: Send,{Alt Down} Send,{RButton Down} return d up:: Send,{RButton Up} Send,{Alt Up} return
流行らせるページにある「システムモニタ用関数群」を有難く使わせてもらっています。 これでだいたい取得したい情報は得られたのですが、 CPUの周波数だけまだ解決せず。 非常に厚かましいのですが どなたか作っていただけないでしょうか?
流行らせるページが見られない
ほんとだwww.xrea.comじたいが見れなくなってる。
689 :
673 :2006/04/10(月) 04:43:55 ID:kIM2G0lg0
MCI使用したプレイヤー(HSP製)DLして問題のあるファイルを再生してみたら、 時間表示はおかしいけど、固まることなくちゃんと連続再生された。 試しにVC++でMCI使って再生するコード書いてみたら やっぱり固まることなく連続再生できたし・・。 AHKでmciSendString直に呼んで色々試したところでは、 どうも再生は正常に終わっているけど、デバイスが閉じられくなるみたい、 問題のファイル再生終了後にclose投げるとそのまま制御が戻ってこなくなることが解った。 SoundPlayでも同じようなことが起きてるのかも。 とりあえず、AHKでSoundPlayコマンド(MCI関連)を扱うと VBRのmp3で問題が起きる可能性があるということでFA。 マンドクセシ モーイイヤ・・('A`)
乙 madとか123とかをHideで使っちゃうというほうがいいのかね DLLならBassとか
クリップボードの内容を一時的にする場合に、 TempClipboard:=ClipboardAll Clipboard= ;適当に処理して Clipboard:=TempClipboard ;元に戻す としたとき、元々クリップボードの中にテキストや画像データが入ってる分には問題ないのですが、 パスやURLがショートカット形式(ファイルをコピーしたときや、ネットのリンクを右クリ→ショートカットのコピーしたとき) になぜかクリップボードが復元されません。 この辺は仕様でしょうか。
一行目 一時的にする→一時的に退避する 失礼
MsgBox, %ClipBoard% をいろんな個所に挟んで中身を確かめながら実験すると良いかも。
>>692 FileAppendでファイルに落としてバイナリみると解るけど、復元出来ないんじゃなくて、
ClipboardAllコマンドでクリップボードを正常に参照出来てないと観た方が良さそう。
つまり、変数やファイルにクリップボード内のデータを待避する時点でデータがすでにおかくなっている。
でもClipboardコマンドだととれているから仕様と言うよりもClipboardAllコマンドのバグじゃないかなぁ?
仕様だったら普通最低でもClipboardコマンドと同じテキストデータがとれるようにすると思うんだよね。
初歩的な質問していいですか。 EDITコマンドで*.ahkスクリプを好きなエディタで開けません。(notepadで開く) *.iniだとちゃんと秀丸で開くのに・・・ *.ahkも*.iniもシェル関連付けはされています どうすれば*.ahkも秀丸で開けますか?
ダブルクオーテーションを外して試してみて 漏れはそれで上手く行ったことがある。 何故か c:\hogehoge\hoge.ahkをエディットしようとすると c:\hogehoge\hoge.ah っていうパスが送られちゃって悩んでたんだが。
>>697 ありがとうございます。でもダメですOTZ
スクリプト自体はうまく動作しているようですが・・・。
インストーラなしのzipファイルでインストールしたのがまずいのかな。
ヘルプの
”関連付けで「Edit」コマンドが設定されていれば、そのコマンドで開く。なければ、notepad.exeで開く。”
というのがイマイチ分かりません。AHKで開くエディタを指定できるんでしょうか。
俺の場合は「Edit Script」に設定したらできた。
>>699 レスサンクスです
皆さんは問題なく出来てるようですね。やっぱり俺だけですね・・
とりあえず・・・Run,〜\Hidemaru.exe 〜\AutoHotkey.ahk
で開いてます。全然スマートじゃないなw
701 :
名無しさん@お腹いっぱい。 :2006/04/16(日) 17:45:25 ID:IfQvUwVz0
>>700 AHKファイルの関連付けを、ちゃんとしてる?
フォルダオプション > ファイルタイプ > AHK を選択
"拡張子AHKの詳細"項目内の詳細設定ボタンを押す。
アクションのEditを選択して編集ボタンを押す。
そこで自分の好きなエディタを指定する。
"関連付けで「Edit」コマンドが設定されていれば、そのコマンドで開く"というのはこの設定のことを言ってる。
デフォルト項目じゃなくてコンテクストメニューの「Edit」項目を変えてやらないといかんよ レジストリの↓の値ね HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command たぶん前スレでも貼ったような気がするが、UIで対話的にエディタ変更してみるahk。 RegRead, OldData, HKCR, AutoHotkeyScript\Shell\Edit\Command MsgBox,36,AutoHotkey Scriot Editor Changer,現在ahkのEditに設定されている値`n`n %OldData% `n`n別のエディタを指定しますか? IfMsgBox,No, ExitApp SplitPath,OldData,,EditorDir FileSelectFile,MyEditor,3,%EditorDir%,ahkを編集するエディタを選択,*.exe IfNotExist, %MyEditor%, ExitApp RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit\Command,,%MyEditor% `%1 RegRead, NewData, HKCR, AutoHotkeyScript\Shell\Edit\Command MsgBox,64,AutoHotkey Scriot Editor Changer, %OldData% を`n`n%NewData% `n`n へ変更しました。
>>701 >>702 丁寧にホントにありがとう!遂にできましたよ。
Helpの意味がようやく分かりました
Ctrl+Vでペーストできないソフトにクリップボードの内容を送るにはどうしたらよいのでしょうか? 試したのは↓なんですが、当然できませんでしたw Send, clipboard クリップボードと同じ内容のテキストのキーストロークを発生させればいいと思うんですが・・ どなたかご教授下さい
一生そこで止まっててください。
残念ながら出来ましたよwスマソw
AutoHotkeyでネットワークプログラムを作るにはどうすればいいですか? DLLの関数を呼び出すんであろうということは分かるのですが具体的なやり方が分かりません。
何がしたいのよ
mayuから乗り換えたいのですが、 Space押しながら別のキーを押すとShift扱い Spaceをすぐに離したらSpace で、できればSpaceを押して一定時間経過後に離すときは無効 みたいなことってできますか?
>>709 AutoHotkeyを流行らせるアップローダの029.zip
一定時間経過後に〜の方も少し弄ればできる。
>>710 ありがとうございます!
SandSって言うんですね!
ちょっと弄ってみます!
712 :
名無しさん@お腹いっぱい。 :2006/04/29(土) 18:55:41 ID:58FQTls70
zキーを押してる間zキーを10秒毎に2秒間押す、といったコマンドがやりたいのですが どなたかご存知ありませんか?
タイマ、スリープ どんな方法でも実現できるじゃん
キーボードでボリュームを操作する方法を探していて
>>71 に書かれて内容を試してみましたが
タスクバーにAutoHotkey.iniと表示されるだけで、GUIが表示されません
助言お願いします
>>715 ありがとうございます
勉強になりました
調べた末
SoundGet,volume,MASTER
SetFormat, float, 5.2
volume += 0
ToolTip,%volume%,800,700,
を使うことにしました
試作中のやつ貼ってしまった orz volume += 0要らないです
1.0.43.11 - May 1, 2006 Fixed %A_WorkingDir% on Windows 9x, which was sometimes blank. [thanks Points] Improved BlockInput with a new mode that blocks only physical movement of the mouse, not keystrokes or mouse clicks.
BREGEXP.ahk、便利なんだけども、良く分からないことがいくつかあります。 list = aaaaxxxxaaaa|bbbxxx|xxxxcccc Loop, Parse, list, | { test := RegExpReplace(A_LoopField, "x*", "", "") MsgBox, %test% } とかやると、前回のデータが残ってしまうんですが…。 皆様どうやって対処してるんでしょうか?
720 :
719 :2006/05/12(金) 21:32:58 ID:aSuNSZC/0
連稿すみません。途中で投稿してしまいました。 orz test := RegExpReplace(tmp, "[ \t]*`;[ \t]*$", "", "") みたいな正規表現もうまく行かなかったり。 $が効かない(?)感じがします。 解決案もってましたらどなたかご教授ください。
721 :
719 :2006/05/15(月) 14:14:36 ID:I+/Q9YXe0
自己解決しました。 前回のデータが残ってしまうのは、 BREGEXP.AHKの return result の部分を、 test:=result VarSetCapacity(result,64) return test のように変更することで解決しました。 $が効かないのはオプションにgを入れてないからでした。
723 :
名無しさん@お腹いっぱい。 :2006/05/18(木) 16:34:36 ID:CPxUZBn80
AutoHotKeyのスレあったんですか。
前スレ
>>848 さんを参考にスクリプトを書いてみたのですが
右ダブルクリック時処理が実行された後に右シングルクリック時処理も実行されてしまいます。
これを回避するにはどうしたらいいのでしょう?例えば・・・
848 :名無しさん@お腹いっぱい。:2005/09/26(月) 20:54:01 ID:Owez+5cA0
>>847 Rbutton Up::
;システムのダブルクリック時間取得
WClickTime := DllCall("User32.dll\GetDoubleClickTime",Int)
if (A_PriorHotkey = A_ThisHotkey) && (A_TimeSincePriorHotkey < WClickTime)
{
;ダブルクリック時処理(例:Run explorer.exe)
}
else
{
;シングルクリック時処理(例:Run notepad.exe)
}
return
とすると
シングルクリック→notepad.exeは正しいのですが
ダブルクリック→explorer.exeだけでなくnotepad.exeも実行されてしまうのを回避したいのです
どなたかお願いします
>>723 自分だったらこんな感じでやってる。これだとトリプルクリック、クワドロプルクリックへの対応も大した手間無くできるし。
一々システムからダブルクリック時間を取得するのもあれなので決め打ちで書いてる。
RButton::
KeyWait, %A_ThisHotkey%, T0.2
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, D T0.2
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%
Run, explorer.exe
return
}
Run, notepad.exe
return
}
return
>>724 ありがとうございます。いろんなアプローチがあるんだなぁ・・すごいですね。
なんだかもうチンプンカンプンです><
>>724 ちなみにトリプルクリックの場合どうやるんでしょうか?(自分が試した奴ですが・・↓)
本当に馬鹿で・・・すみませんw
RButton::
KeyWait, %A_ThisHotkey%, T0.2
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, D T0.2
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, D T0.2
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%
Run, explorer.exe
return
}
Run, notepad.exe
return
}
Run, calc.exe
return
}
return
>>726 RButton:: ;1回目の押し下げ
KeyWait, %A_ThisHotkey%, T0.2 ;1回目の押し上げ待ち
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, D T0.2 ;2回目の押し下げ待ち
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, T0.2 ;2回目の押し上げ待ち
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey%, D T0.2 ;3回目の押し下げ待ち
If ErrorLevel = 0
{
KeyWait, %A_ThisHotkey% ;3回目の押し上げ待ち
Run, calc.exe ;トリプルクリック処理
return
}
}
Run, explorer.exe ;ダブルクリック処理
return
}
Run, notepad.exe ;シングルクリック処理
return
}
return
>>727 なんとお礼を言っていいのやら…。本当にありがとうございます(´Д⊂グスン
特定のボタンを押している間だけ、Dを押しつつキーマップの変更(q→a, a→z, etc)を行いたいのですが、 Hotstringを使ってやる場合、どのように記述すればいいんでしょうか どなたか教えていただけませんか
キーマップという言い方からすると繭使いか? 冗長になるけど、コンビネーションキーでいいんじゃねーの? [特定のボタン] & q::a [特定のボタン] & a::z
731 :
名無しさん@お腹いっぱい。 :2006/05/19(金) 23:10:55 ID:NLL2TGQ40
意味不明で大変場違いな事かもしれませんが・・・ たとえばゲームなどで必殺技のコマンドをマクロ化するスクリプトってどういう感じでしょう? 例としてはジョイスティックのボタンAを押すと昇竜拳が出るというような。。 先月からいじっているのですが、まったく突破法を発見できません(汗 どなたかお知恵を拝借していただけませんでしょうか?
>731 ジョイスティック系のスレ行って それ用のソフト探した方が早そう。
JoyToKeyかJoyAdapterだな。
JoyToKeyは使ってるけど必殺技コマンドのマクロ化は無理っぽい。
Perl厨なのでPERLAHKで楽しく書かせてもらってます。 AHKのお手軽さとPerlのモジュール+正規表現が 合わさってちょっとすごい感じです。
mayu でマウスいじれないので、 ahk でそのうちやろうやろうと思いつつも やり方がよくわからないんで放置してたんだけど、 昨日一晩調べてやっと使えるようになった。 サイドボタン+ホイールとか 右クリック+ホイールとか サイドボタン+右クリックとか、 いろんな組み合わせが使えるようになって かなりブラウザが使いやすくなったよ。
>>735 PERLAHKってなんですか?
検索してもいっこもヒットしません・・・
複数のahkをひとまとめにコンパイルとか出来ちゃったり出来ないですか?
関数の中でラベルを作ることは出来ないのでしょうか? ホットキー定義の中で SetTimer とかを使って サブルーチンを監視するような処理を、 ;;キー定義 F1::DoHoge() ;;関数 DoHoge(){ SetTimer,Hoge return Hoge: なんたら return } みたいにキー定義部分と関数定義で分割して書いて、 コードを読みやすくしたいのですが、うまくいきません。
おいおい…なんつー強引なコード書いてんだよ そんなん全然読みやすくも何ともないから、素直にサブルーチン使え
読みやすくない、、、、つーか、そういうのバグの温床になるよ。
ホットカーペット? オンドル?
743 :
739 :2006/05/24(水) 05:08:37 ID:UOl7EfWn0
なぜキー定義と関数を分割したいかというと、 #IfWindowActive でウインドウごとにキー割り当てを変えているときに、 同じ処理を何度も書くよりは一箇所にまとめたかったのです。 autohotkey の関数の意義がよくわかってなかったので おかしなことを書いてしまいました。すみません。 Gosub を使えばできそうです。
alt+WheelUp/Downでボリューム操作したいんですがどうやればいいですか? SendKey,{Volume_up/down}で一応できるんですが MSのユーティリティの機能で画面にメーターが出てきてしまうので 直接操作したいんですが。
SoundGet SoundSet
F6:: LoopFlag = 0 return F5:: if LoopFlag = 0 LoopFlag = 1 else LoopFlag = 0 loop { if LoopFlag = 0 break Send,{v} Sleep,1000 } return このスクリプトでF5を押すと一秒ごとにSend,{v}し、F6を押すと止まります。 ここまではいいんですが、ループ中に再度F5を押すと止めるようにしたつもりがうまくいきません。 F5を処理中に再度F5を実行する事は出来ないんでしょうか?
F6:: LoopFlag = 0 return F5:: if (LoopFlag) { LoopFlag = 0 } else { LoopFlag = 1 } SetTimer, Sendkeys, 1000 return Sendkeys: if (LoopFlag) { Send, v } return とりあえずこれで動いてるもよん
>>746 returnまで行ってないスレッドを呼び出すことはできないはず。たとえば、
a::
gosub,b
return
b::
loop{なんたらかんたら}
return
bをLoopしてる間は、Returnまで行ってないa,bともに機能しない
俺も
>>747 みたく、Settimerでいったんreturnまで行くことで回避してる
FAQ@ヘルプファイルの"How can a repeating action be stopped without exiting the script?"でいいんでね?
CTRL+ALT+DELは送れない? ランチャーから「プログラムの強制終了」出したいと思ったんだけど
>>750 Run, taskmgr.exe
で良いんじゃないの?
98なんでないのよ
Clipboard変数について質問させて下さい<(_ _)> クリップボードの中身から最初のn文字(例えば5文字分)だけを抽出する方法はありますでしょうか?
754 :
名無しさん@お腹いっぱい。 :2006/06/07(水) 15:37:12 ID:zBVvY4Eq0
>>753 StringLeft
せっかく日本語のコマンドリファレンスがあるんだから
ちゃんと見た方がいいよ
>>754 早速ありがとうございます〜!基本的な事でスマソ
リファレンスよく勉強させて頂きます
思い出したように保守 日本語リファレンス更新されてるね。管理人さん乙です
日本語版とか無いみたいだけど日本語の処理問題ないの?
ある。
FileInstall, Source, Dest, Flag について質問です。 ・・・と書き込もうとしてたんだけど自己解決 FileInstallを使用した際、スクリプトファイルまでのパスに日本語が使われていると スクリプトファイルをexe化するときにエラーを吐いて上手く変換されないぽい 全部1byteに変えたら上手く変換された Convert .ahk to .exe で変換するときだけの問題ぽいので 実際のスクリプトファイルや実行ファイルがあるパスに日本語が含まれていても大丈夫みたい 一応そういうことがあったと報告、重複してたらゴメ
>757 IMEの状態管理用プラグインは日本人が作ってる。
そういう事じゃないと思うんだ
>>757 とりあえず文字化けとかはしない。
ただ、ダメ文字(文字の2バイト目に0x7C等)が含まれてたりすると、
文字列処理(StringReplaceとかSplitPath等)がうまくいかないこともある。
そのへんはなまずさんのところの文字列処理ライブラリを使えば対処可能。
初歩的な質問ですいません 例えば ary1〜ary3 と言う名の変数があり それぞれの中身を参照したい場合に ary1=変数1 ary2=変数2 ary3=変数3 loop,3 { msgbox,%ary%A_Index%% } return と言うスクリプトを考えたのですが、エラーを吐き動作しません。
そこで暫定的に ary1=変数1 ary2=変数2 ary3=変数3 loop,3 { test( ary%A_Index% ) } return test( tmp ) { msgbox,%tmp% return } このような処理方法にしたのですがもっとスマートな方法はありませんか?
temp := ary%A_Index% msgbox,%temp% これでいける
俺は = と := の使い分け方が理解できてませんね これならスマートにできそうです。 ありがとうございました。
右コントロールをAltにしたいんですが、 RCtrl::Send,{Alt}だとCtrlがAltにかわるだけで、 Alt+別のキーを認識してくれないんですが、 どう設定すればいいのでしょうか。
かぶった
むけばいいさ
文字列サンクス。 国際化きぼんしといたほうがよさそうだな。
773 :
名無しさん@お腹いっぱい。 :2006/06/25(日) 07:19:11 ID:2OPiWT000
Shift+Space で IME のトグルを行いたいのですが, Meadow では除外するために以下の設定をしました. $+Space:: IfWinActive, ahk_class MEADOW { Send, +{Space} return } Else { Send, {vkF3sc029} return } しかし Firefox で Scroll with IME を有効にしているとき, Shift+Space を押すと IME がトグルしかつ, Space の入力による下方向スクロールが行われてしまいます. これを回避するにはどうすればよいでしょうか?
#IfWinActive じゃないの?
775 :
773 :2006/06/25(日) 23:46:38 ID:2OPiWT000
>>774 なるほど #つきのコマンドでできるのですね.
以下のようにして実現できました.
#IfWinNotActive, ahk_class MEADOW
+Space::Send, {vkF3sc029}
#IfWinNotActive
UWSCとどっちが強い?
>>776 [AutoHotkey] 攻撃:87 素早さ:59 防御:39 命中:18 運:48 HP:277
[UWSC] 攻撃:41 素早さ:95 防御:98 命中:18 運:88 HP:288
AutoHotkey vs UWSC 戦闘開始!!
[UWSC]の攻撃 MISS [AutoHotkey]は攻撃を回避した。
[AutoHotkey]の攻撃 HIT [UWSC]は74のダメージを受けた。
[UWSC]の攻撃 HIT [AutoHotkey]は113のダメージを受けた。
[AutoHotkey]の攻撃 MISS [UWSC]は攻撃を回避した。
[UWSC]の攻撃 MISS [AutoHotkey]は攻撃を回避した。
[AutoHotkey]の攻撃 MISS [UWSC]は攻撃を回避した。
[UWSC]の攻撃 HIT [AutoHotkey]は94のダメージを受けた。
[AutoHotkey]の攻撃 MISS [UWSC]は攻撃を回避した。
[UWSC]の攻撃 HIT [AutoHotkey]は79のダメージを受けた。
[UWSC]が[AutoHotkey]を倒しました(ラウンド数:5)。
orz
マルチャン
>>776 ぬるさんとこの旧サイト過去ログが参照できないんでうろ覚えだけど
uwscとDMonkeyか何かと演算速度比較してぶっちぎりトップだったような
AHKだとCapsLockをControlにできないそうですが では皆さんは何を使っていますか?
WinMinimizeで最小化するとデスクトップの左下にタイトルバーのみの状態になるソフト(たとえばJane)を、 最小化ボタンを押したときのように完全に最小化するにはどうすれば良いんでしょう。
ファイルのドラッグ&ドロップに対応してないアプリに AutoHotKeyを使って対応させたいとか思ってます. 1.LButton Upで該当アプリにフックかける 2.今つかんでいるファイル名を手に入れる 3.ファイル名つかってアプリになんかする ...という手順で実装しようと思っていますが, 2.をahkでどうやったらいいものか困っています. なにかいい方法ないでしょうか?
Ctrl+Cでクリップボードにファイル名を入れて、吸い出す
ExplorerならF2押してリネームモードにしてからCtrl+Cか。 誤動作したら嫌なことになりそうだがw
どういうことがしたいのかよくわかってないけど ファイル名が欲しいならF2押さなくてもctrl+cだけで フルパスで取得できない?
できるよ、しかもフルパスで取れる
ドロップ先にGuiウィンドウを挟んでGuiDropFiles:で知る
>>782 えっとじゃあ CapsLock をコントロールにするだけなら
↓でいいんでしょうか?
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,3a,00,1d,00,00,00,00,00
792 :
785 :2006/06/29(木) 17:49:04 ID:mOUKYabn0
>>786-789 言葉足らずで申し訳ありません.
「ExplorerでCtrl+cをおしてファイル名を取得」
→「該当アプリにファイル名使ってなにかする」
というのをやりたいわけではなく
「該当アプリにファイルをDropしたときにファイル名を使ってなにかする」
を実現したいのです.
>>790 LButton Upしたときに
MouseGetPosしてその位置に透明なGUI窓を即座に作って
GuiDropFiles: でファイル名をゲットするということでしょうか.
ちょっと考えてみます.
あほには何言っても無駄か
ドラッグ&ドロップするアイコンはその「該当アプリ」のものじゃなくちゃ 絶対だめなの? そうじゃなくていいなら run,c:\program files\hoge.exe %1% みたいなスクリプトを書いてexeにコンパイルしたファイルに ドラッグ&ドロップという方法でも いいような気がするんだけど、だめかな コンパイルしたファイルにドラッグ&ドロップで%1%が使えるかは わからなかったので今試した msgbox,%1% ;終わり exit こんなスクリプトを書いてコンパイルしたものにファイルを ドラッグ&ドロップしたら投げたファイルのフルパスがメッセージ ボックスで出たから大丈夫じゃないかな
やりたいことは理解できるが何で説明し直してるのかがわからん ファイル名取れたらその後は自力でなんとかするって話じゃないの? 785でも「何か」のしかたついては聞いてきてないようだが。
ごめん今理解した。掴んだ時じゃなくて話した時にファイル名取りたいのか んでショートカットアイコンじゃなくて起動中の該当アプリに ファイルをドロップさせたいんだよね? 790のは該当アプリに直接ドロップするのではなく、 マウス監視してドラッグしたら最前面の小窓出してそこにドロップてことでは? irvineみたいな感じで。 ウィンドウを透明化したら制御権取れないような希ガス
>>796 あーそうなのか
オレはファイルへのドラッグ&ドロップだと思ってたごめん
面倒なので検証してないが、 1,#Ifwinexistで該当アプリがあるときのみ以下を実行 2.左ボタンを押し下げた時点で、Ctrl+C 3.左ボタンを押し上げた時点で、 a、もしマウスの下のウィンドが該当アプリならば→2のファイル名を使って処理 b、違うなら放置 ではいかんのか?
799 :
785 :2006/06/29(木) 22:08:24 ID:mOUKYabn0
>>794-797 「離した時にファイル名取りたい」まさにそれです.
たしかに「別ショートカット作ってそこにドロップ」「別GUIにドロップ」
に逃げればなんにも問題ないんですが...
>>798 電卓で試してみました.
#IfWinExist ahk_class SciCalc
$LButton::
ClipSaved := ClipboardAll
Clipboard =
Send, ^c
ClipWait, 0.1
SelText := Clipboard
Clipboard := ClipSaved
ClipSaved =
Send, {LButton Down}
Return
#IfWinExist
800 :
785 :2006/06/29(木) 22:09:59 ID:mOUKYabn0
#IfWinExist ahk_class SciCalc $LButton Up:: Send, {LButton Up} MouseGetPos, mX, mY, mID, mCtrl WinGetClass, mClass, ahk_id %mID% if (InStr(mClass, "SciCalc") > 0) { MsgBox %SelText% } Return #IfWinExist $LButton Up:: Send, {LButton Up} Return なんとか目的の動作は実現できそうです.ありがとうござしました. ただ...LButton Down/Up奪っちゃうと他の動作が怪しくなりますね...
>>800 最後の3行いらないだろ
他の動作でUp/Downを奪わないための#IfWinExistなんだから
802 :
名無しさん@お腹いっぱい。 :2006/07/01(土) 12:37:26 ID:kCidEIr20
バックグラウンドにあるウィンドウを指定して キーをSendするにはどうすればいいですか? WinActivate するとフォーカスが切り替わってもとに戻せないし できればフォーカスを切り替えたくありません
WinexistとかMouseGetPosで目的のウインド取得してSendMessageは?
>>804 ControlSend, , i, ahk_class Notepad
なら希望の動作になりましたが
実は送りたいアプリは mAgicTV という TV 視聴ソフトで
ControlSend, , i, ahk_class mAgicTVWindow
とすると mAgicTV がアクティブになってしまいました。
WinGet, id, ID, A
と
WinActivate, %id%
ではさんでみてもダメでした。
なんとかフォーカスを変えない方法ないでしょうか?
キーのリピート入力ってよくやると思うんですが、 loop と sleep でぐるぐる回すしか方法ないんですか?
キーダウン キーアップで間に間隔入れたら勝手にキーリピートになるんじゃないの
808 :
806 :2006/07/02(日) 00:09:52 ID:Ab02y6aS0
>>807 実際今そういう風にやってるんですが、
なんか無理やりなやり方のように思えるので、
こんなやり方でいいのかと思って。
ちなみに今使ってるのはこんな感じです。
F1::MyKeyRepeat("^{Right}",200}
F1 Up::MyKeyRepeatStop()
;;
MyKeyRepeat(key,sleep=80){
global MyKeyRepeatLoop
MyKeyRepeatLoop = 1
loop {
if MyKeyRepeatLoop != 1
break
Send,%key%
sleep,%sleep%
}}
MyKeyRepeatStop(){
global MyKeyRepeatLoop
MyKeyRepeatLoop=0
}
イベントじゃなくて SendコマンドのほうをUp/Downで指定したらどうよ 勝手にリピートしてくれないのか? 試してないけど F1:: Send,{Right Down} F1 Up:: Send, {Right Up}
#p::SendMessage, 0x111 , 1007, 273, , ahk_class PrxTronCls で、Proxomitronのバイパスの切り替えをしたいですが、ウインドウが無い限りできません。 どうしたらいいでしょうか?
POstMessageでは?
>>810 俺もやってみようとしたができないな。
AHK使わないでWPara1007 LPara273をSend/Postしたら、タスクトレイにあるときでもちゃんとできたんだが。
ウインドの指定のやり方かな。
813 :
806 :2006/07/04(火) 21:59:05 ID:G6/vCvv+0
>>809 返事が遅れてすみません。
いままでその方法ではリピートできないと勝手に思っていたのですが、
普通のキーでならそれでできますね。
実はマウスボタンで使うのが目的だったので、
マウスボタンでしか実験していなかったのですが、
マウスでは同様の方法でリピートしてくれなかったため、
勘違いしてました。
>>810 DetectHiddenWindows, On
SendMessage, 273, 1007, 0,, ahk_class PrxTronCls
DetectHiddenWindows, Off
return
ではダメですか?
>>813 マウスだったら Sendより MouseClickのがいいんじゃまいか
D|Uで押し下げ/押し上げ状態もキープできる。
あとホイールでスクロールをどうにかしたいって話だったら過去レスに漁れば出て来ると思う
>>815 810じゃないけど、これで動きますね
DetectHiddenWindowsなんてコマンドあったのか
不具合でまくりそうだけど、
SendMessage, 0x111 , 1007, 273, , ahk_id 0xFFFF
でもいけました。
存在するすべてのウィンドにSendMessageですw
別にクラスをちゃんと指定すればおkでしたね。ごめんなさい。 需要無いかもしれませんが、foobar2000でsendmessageを使う方法と、疑似Open/Hideコマンドです。Winキーを多用する人はうはうはかもしれません。0.8.3 (もしくはすでに知ってるかもしれませんが。) #q:: DetectHiddenWindows, On SendMessage, 273, 40010, 0,, ahk_class {DA7CD0DE-1602-45e6-89A1-C2CA151E008E} DetectHiddenWindows, Off return #o:: ;最小化時、トレイに格納する場合だけ動作確認 IfWinExist, ahk_class {DA7CD0DE-1602-45e6-89A1-C2CA151E008E} { WinMinimize, ahk_class {DA7CD0DE-1602-45e6-89A1-C2CA151E008E} return } else { DetectHiddenWindows, On WinActivate, ahk_class {DA7CD0DE-1602-45e6-89A1-C2CA151E008E} DetectHiddenWindows, Off return }
AHKから録音ソース(マイクやライン入力)を切り替えたいのですがどうすれば良いのでしょうか? SoundSetで色々試してみたつもりですが録音ソースを切り替える機能は見つけられませんでした...
漏れも前やったな〜 見当たらないんだよね
DllCall("winmm.dll\mixerGetNumDevs") みたいな感じで、MixerのAPI呼び出していけば行けるんじゃないか APIはさっぱりわからんのであとはまかせるw
いざとなったらプロパティ表示してソース選び直して[OK]押下、をエミュレートするとか 見た目はあまり美しくはないが
>>821-823 簡単には行かないみたいですね
API呼ぶのはちょっと敷居が高すぎる気がするので
sndvol32.exe /r にMessage投げてごまかすことにします
ありがとうございました。
Guiのタブがえらく使いにくい 3つのタブをGui,Addで作成すると、 1 2 3 ○ ▲ ◆ ↑こうなるんだけど(上段:タブ番号、下段:それぞれのタブに配置したコントロール)、 そこからさらに2つタブを追加しようとすると 5 4 1 2 3 ○ ▲ ◆ ↑このように追加される 1 2 3 4 5 ○ ▲ ◆ か、 5 4 1 2 3 ○ ▲ ◆ せめてこうして欲しいんだが、何とかなりませんか
ソースを弄る
autoitはどうなの?
ホットキーで Ctrl-マウスクリック の組み合わせのキーを書いているのですが、 時々コントロールが抜けて出力されることがあります。 例えば firefox では 拡大縮小が Ctrl-WheelUp, Ctrl-WheelDown に割り当てられてるのですが、 a:: Send,^{WheelDown} こういうようにキー割り当てして a をリピートすると、 なぜか時々純粋な WheelDown が送られ、画面がスクロールしていってしまいます。 他にも、エクスプローラではCtrl-ダブルクリックで フォルダを新しいウインドウで開けるのですが、 MButton:: Send,^{LButton 2} こう記述しても新しいウインドウが開く時と開かないときがあります。 原因がよくわからないのですが、 確実にCtrl-マウスクリックの組み合わせが出力できる方法はないでしょうか。
SendMode Sleep 色々ある
どうもありがとうございます。 MButton:: Send,^{LButton 2} こちらについては、sleep を間に入れて時間を置くことで きちんとダブルクリックと認識させることができました。 a:: Send,^{WheelDown} こっちは、いままで firefox でしか検証していなかったのですが、 先ほど OpenOffice で試したところ、 なんとそのままでまったく問題なく動いていました。 firefox でのみ、どうしてずれるのかよくわかりませんが、 a:: Send,{Ctrl Down} Send,^{WheelDown} sleep 300 Send,{Ctrl Up} return このようにしてみたところ、とりあえずうまくいくようになりました。
ウインドウの操作を行いたいと思うのですが,思うようにいかないので質問させてください. 目標としては,ウィンドウをhoekeyのようになめらかに移動させること, トグルでの水平方向,垂直方向への最大化です. 色々なスクリプトを参考に以下のように書いてみました. ディレイを小さくしたのですが,移動がカクカクしてしまうこと, 水平方向,垂直方向の最大化は同時に複数最大化するとサイズが上書きされてしまう問題があります. ご意見を頂けないでしょうか.
;●ディレイの調節 SetWinDelay, 0 ;● ウインドウ位置移動 #Left:: ;[Win] 移動 (←) #Right:: ; (→) ^!h:: ;Ctrl+Alt+Hで水平方向の最大化 ^!v:: ;Ctrl+Alt+Vで垂直方向の最大化 WinGetPos,x,y,w,h,A if A_ThisHotkey = #Left ; x -= 5 else if A_ThisHotkey = #Right ; x += 5 else if A_ThisHotkey = ^!h{ if(w = A_ScreenWidth and x = 0){ w := w_h_old x := x_h_old }
else{ w_h_old := w x_h_old := x w := A_ScreenWidth x := 0 } else if A_ThisHotkey = ^!v if(h = A_ScreenWidth and y = 0){ h := h_v_old y := y_v_old } else{ h_v_old := h y_v_old := y h := A_ScreenWidth y := 0 } WinMove,A,,%x%,%y%,%w%,%h% return
タスクトレイにある特定のアプリのアイコン(例hoge.exe)1個だけを 左クリックするだけのスクリプトを作ろうとして挫折してます。 このアプリは、コマンドラインの引数を指定できず、 とにかくタスクトレイのアイコンをクリックする以外にどうしようもないやつで。 いい方法はないですかね。
837 :
835 :2006/07/24(月) 03:41:24 ID:DNeHp1KC0
>>836 おーこんな便利なのがあったんですか。
さっそく引数をつけて、適当なキーでiniファイルに登録しました。ありがとう。
どういたしまして
流行らせるページにある
前スレのjaneのdatもらえませんか?
プロセスの「ユーザー名」(Windowsタスクマネージャ→プロセスタブで見られる) を取得する方法はありますか? よろしくお願いします!
こちらこそよろしく! 俺は雅也。まー坊って呼んでくれ!
( ^ー゚)
まー坊って呼べっつってんだろ。日本語通じないんか?
やん某
”マー坊“くん ”!?“
>>841 ありがとうございます
亀レスごめんなさい
これで勉強できます
マウスカーソルを右端に寄せてホイールスクロールするとボリューム操作 みたいな事って出来ますか?
頑張れば多分できる
>>849 MouseGetPos…マウスの座標等を取得
SoundSetWaveVolume…音量を変更する
WheelDown/WheelUp…ホイールを回転させたとき
神
Logicoolのマウスドライバ、SetPointがよく落ちてプロセスだけ残ってしまいます SetPoint.exeを殺して再起動するスクリプトを書いてくださいませ
Process Close, SetPoint.exe Process, WaitClose, SetPoint.exe Run, **ふるぱす**\SetPoint.exe 落ちてからならこれでもいいだろうけど 監視したいならちょっとややこしいかも
MX1000 使ってるけど setpoint 落ちたことないよ? マウスによって安定度が違うのかもしれないが、 バージョンあげてみたら?
USB接続のKVMスイッチ使ってて切り替えたときによく落ちるのです 各種バージョンは試してみました
858 :
名無しさん@お腹いっぱい。 :2006/07/31(月) 20:31:27 ID:zq3T1Gna0
夏だなぁ
8月でもクリスマス島か
特定ブラウザを起動しているときだけ、insert、break、capsLockキーあたりのあまり使わないキーに 「ワンクリックで画像保存」を割り当てたいのですがうまくいきません。 Break:: IfWinActive,ahk_class IEFrame { Send,{RButton} Send,s Send,!s } else { Exit } 上うまくいかない例、Sendのあたりをいろいろいじってみてもどうもうまくいきません。 どうかアドバイスをお願いします。
とりあえずコマンドの合間にsleep入れないとだめそうではある
>>861 適当にsleep,250いれて、
キーをcapslock::から、Ins::にしたらうまくいった。
日本語環境だとcapslockはうまく利用できないみたいですね。
os、imeあたりの制御が優先されるためかも。
>>862 日本語版だとCAPSのKeyUpが取得できないらしい。
UWSCとAHKの比較 AHKの長所 --- AU3_SPY これがいちじるしく使える。クラス名取得が便利すぎ。 AHKの短所 --- ヘルプ、解説 海外ツールゆえの弱点。 日本語化されてないとこもある。 その他文法解説が弱い。 UWSCの長所 --- ヘルプ、国産、解説本
やる気さえあれば、言葉の壁なんてたいしたことないと思うけど。
スクリプト系のツール使おうって奴が英語読めない方がおかしいんだから 日本語(2byte文字)が全く扱えないとかならまだしも日本語化されてないとか、 解説が英語だとかなんて短所にならん。それにAHKは文法解説もきちんとしてる。 弱いと感じるなら、それは君の英語読解力が弱いからだ。 つまりAHKに海外ツールゆえの弱点があるのではなく、 君自身に英語力が低いという弱点があるってことだなw
まるで留学先で日本語が通じないことにキレてるようなもんだよな。 コンピュータがどこで発明されたか知らんのか。
おれは英語そこそこ出来るからそこそこ使えて問題は感じないぜ、 英語できない奴はかわいそう、 なんて考えてる奴こそ、いつまでたってもそこそこしか使えないんだよ。
完璧に使えないと駄目だったらあれだな。 UWSCのドキュメントも見てみたけど、文法解説はいまひとつだと思った。実用には十分だと思うけど。 AHKは流行らせるページの文法解説ってそんなに弱いか? 個人的には、AHKの最大の長所は「過去の資産が膨大にある」点だと思うんだが。
ここ耐性低いな
入れ食いだな。
フレーミングは参加した時点で(何を言おうが)負け。 見かけたら、通り過ぎるまでじっと待つのが最善の策。 よって、俺も負け。
874 :
名無しさん@お腹いっぱい。 :2006/08/09(水) 01:53:27 ID:9toRUw2f0
俺も負け
耐性とかどうでもいいんだけど そもそも俺は荒れても構わないし 反応したやつに反論できないなら普通にそいつの負け
ネット上での言い争いの事をフレームというのだな >873のおかげでひとつ賢くなった
というか AHK と UWSC って比べるようなソフトだっけ? 用途が違うような気もするが。
要は、必死で煽り文書いてみたけど、 反論に答える力がないから、すぐに釣り宣言して逃走ってことでいいの?
>>232 と(たぶん)同じだから環境特有の問題じゃないと思うんだけど、
vkF2 & up::SoundSet,+2.5
vkF2 & down::SoundSet,-2.5
ってスクリプト動かすと、ひらがなキーを一度でも押すとずっとvkF2押しっぱなしな状態になってしまう。
以降はもうupかdown入力するだけでSoundSet実行。
mayuでひらがなキーをmod0にして使ってたのを乗り換えたいんだけど解決方法無いかな?
>>878 しかし、まともに反論しても、
フレーミングに参加するやつは負け組みといわれるのが2チャンネル。
もしくは、「ねたにマジレスすんな、お前は釣られているのだが……」
蒸し返すなYO
>>881 だからこっちは常駐してるスレが荒れてもいいって言ってんだよボケ
釣りなら釣りでやり遂げろよ
あと自演するなら文体変えろド素人が
フレーミングは参加した時点で(何を言おうが)負け。 見かけたら、通り過ぎるまでじっと待つのが最善の策。 よって、俺も負け。
アジャパーヽ(´ー`)ノ
flaming 覚えたてで使いたかっただけちゃうんかと
コピペ
AAAというソフトがアクティブな時 マウスカーソルがソフトAAAのクラスBBBとクラスCCC上にある場合 マウスの拡張ボタン XButton1を押すとXButton1がそのまま送られ、 クラスBBB、CCC上以外の場所にカーソルがある場合は XButton1を押したらEnterキーが送られる。 という物を作りたいのですが、どうすればいいでしょうか?
>>888 MouseGetPosでいいんじゃない
IfWinActive…該当ウィンドウがアクティブか MouseGetPos…マウスカーソルの位置、マウスの下のウィンドウやコントロールを取得 Send…キーストロークを発生させる 851に倣って必要なコマンドあげてみたが、わざわざ解説するまでもなく基本機能だったな まぁせっかくの夏休みなんだし、頑張ってみれ
変数名とキー名は流行らせるページに一覧が乗っていたので分かるのですが、 構文が分からないんです。
> どうすればいいでしょうか? 勉強
>>891 まず、最初から丸投げしないで、自分なりに書いてみる。
それで動かなかった場合、何故動かないかをここで聞いてみれ。
さすがにそれをスルーする程にはここの人達も冷たくなかろう。
すみません、ちょっとお伺いします これってコンパイルするときに、例えば画像や音声ファイルを 一緒にパックしてexe化することって可能ですか?
895 :
894 :2006/08/16(水) 00:22:57 ID:uW+77TpF0
すみません、見つかりました。自己解決です。
>>894 アイコンは含められるけど、その他のファイルは(実用的には)無理だと思う。
そうみたいですね マニュアルで FileInstall っての見つけて、これでパックしてみたんですが 何故だかいざ実行してみるとファイルが見つかりませんってなりますね なにか使い方を根本的に間違っているなかな? ともかく、お返事ありがとうございます。
898 :
896 :2006/08/16(水) 01:09:20 ID:1qUWJw7B0
>>897 あ、ごめん。FileInstallの存在忘れてレスしてた。
FileInstall使えばできるよ。
できないとしたらスクリプトの先頭の方に書いてないとか。
カーソルが画面隅にあるときホイールを無効化するスクリプトを組んだのですが WheelUp:: IfWinActive, Sleipnir { Send, {F1} } else { Send, {WheelUp} } return IEなのでページをスクロールするときのホイール動作がもっさりしている気がします。 else文で WheelUp::WheelUp こうなってるのが原因な気もしますが・・・ なにかいいアイデアは無いですか?
誤:IEなので 正:IEなどで
PostMessageでWM_MOUSEWHELLを投げる それか,加速処理を入れ込んでみたら? 前スレにサンプルあった筈
>>902 ホイールリダイレクトも試しに使ってみたのですが、やはりもっさりしてしまいました。
加速度はマウスドライバで細かく弄ってあるので、できれば加速処理等はしたくないです。
あとWheelUp::WheelUp この処理が原因かと思って↓こんなのも試したのですが
IfWinActive, Sleipnir
{
WheelUp::F1
}
else
{
;何も無し。うまくいけばホイール回転をスルーしてそのままの加速度でいけるかも?
}
return
これだと、どの場所でホイールしてもホイールが全てF1に変換されてしまい失敗でした。
ちなみにマウスはMicrosoft IntelliMouseOpticalです。ドライバは純正でVer5.2です。
小ネタ ; irfanViewのexe を指定 iview32 := "C:\Program Files\irfanview\i_view32.exe" ; 画像の拡張子を指定 screenShotExt := "png" ; 保存先のディレクトリを指定 screenShotDir := userprofile "\デスクトップ" 任意のキーバインド:: ; yyyyMMdd-hhmmss 形式を生成 file := A_YYYY A_MM A_DD "-" A_Hour A_Min A_Sec ; capture=0 なら 画面全部、 1ならアクティブウィンドウ Run, "%iview32%" /capture=1 /convert=%screenShotDir%\%file%.%screenShotExt%
irfanviewでも出来たのか・・・ 俺もちょうど昨日winshot非常駐化した 常駐ソフトがどんどん減って面白いわ
流行らせるページ落ちてる? ようやく始めようと思って開いたら無かった。 復旧町か。
907 :
名無しさん@お腹いっぱい。 :2006/08/23(水) 04:15:23 ID:52TsQxrC0
「;」キーを「a」にするのってどう書けばいいんですか? ;;;aだと.ahk実行しても出来ません 多分「;」をなにかで囲んだりするんだろうけど、どうやるか分かりません どなたか教えてください
つ キーコード
910 :
907 :2006/08/23(水) 14:50:08 ID:52TsQxrC0
911 :
名無しさん@お腹いっぱい。 :2006/08/23(水) 20:36:48 ID:52TsQxrC0
>>575-576 みたいに
格ゲーのコマンドをボタン一発で出したい時ってどう書けばいいんですか?
d→d+f同時押し→f+j同時押し(ちなみにd=下、f=前、j=弱パンチ。波動拳コマンドです!)
とやりたいんですけど、
a::
Send,{d}
Send,{f}
Send,{j}
と書いて.ahkで保存したんですけど、まったく機能してません
どなたか教えてください
ゲームだと、ツールでの不正防止(格ゲーでは必要ないだろうけど)とか、 入力制御の都合とかで、通常のキーコードを拾わないものが腐るほどある。 とりあえず複数キーではなく、単発キーで試して、それすら拾わないならAHKでの対応は諦めよう。
913 :
911 :2006/08/23(水) 20:54:32 ID:52TsQxrC0
>>912 レスありがとうございます
f::dとして入れ替えてみたんですが、ちゃんと入れ替えできました
.ahkに書く内容って
a::
Send,{d}
Send,{f}
Send,{j}
だけでいいんですか?
なんかこれだとD(十字キー↓)、F(十字キー→)で、J(ボタンA)って割り当ててるんで
斜め押しがないような気がするんですけど。
Send, afj これだけでいいんじゃまいか
915 :
911 :2006/08/23(水) 21:39:23 ID:52TsQxrC0
>>914 a::Send, dfj
をsenddfj.ahkで保存してやって見ましたがダメでした_| ̄|○
書き方間違ってますか?
send,{d down}{f down}{d up}j{f up} あとSetKeyDelayの値とか。
917 :
911 :2006/08/23(水) 22:22:39 ID:52TsQxrC0
>>916 これってaボタンにこのコマンドを登録するには
a::send,{d down}{f down}{d up}j{f up}って
a::はいらないんですか?
918 :
911 :2006/08/23(水) 23:40:00 ID:52TsQxrC0
どなたか!
920 :
911 :2006/08/24(木) 00:02:41 ID:52TsQxrC0
a:: send,{d down}{f down}{j down}{d up}{f up}{j up} でやったらなんとか出るんですけど、時々パンチだけ打ったりします どこがわるいんでしょうか?
921 :
391 :2006/08/24(木) 00:05:02 ID:N+GjQWMF0
922 :
911 :2006/08/24(木) 00:07:29 ID:52TsQxrC0
>>921 了解! く(`・ω・´)行って参ります
てめーSendコマンドの説明読んでないな
どうでもいいけど 2行以上にするなら return入れなさいよ
どうでもいい
926 :
911 :2006/08/24(木) 01:50:07 ID:TebRODsR0
全然出来ない・・・
何回か連打してると確実にパンチとか出る
>>923 すみません
読んだけど全然出来ません
>>924 ありがとうございます
入れなくても動くけど入れた方がいいんですね
もうひとつ聞きたいんですが、aキー押したら、Jキー1秒間に20連打とかって出来ますか?
a::{j 20}
で1秒間に20連打いきますか?
ディレイの設定次第ではそうなる
毎度のことだけど合間にpauseが無い性じゃないかと
929 :
連続で申し訳 :2006/08/24(木) 06:41:53 ID:e+RPRV6N0
sleepでした。すみません
930 :
911 :2006/08/24(木) 16:40:26 ID:TebRODsR0
>>929 ヘルプ見たけどこれをどう組み込むかが全然分からない
どうやるんですか?
Sleep, 1000 ; 1 second
SetKeyDelay, 0
931 :
911 :2006/08/24(木) 16:40:56 ID:TebRODsR0
とりあえず一回ごとに聞きに来ないで、流行らせるページをきちんと熟読しろ こないだ落ちてたけど今はもう復旧してるから
933 :
911 :2006/08/24(木) 23:17:24 ID:TebRODsR0
>>932 見たけど、何がなんだかさっぱり・・・
なんというかもっと書式の具体例が多く載ってるサイトってありませんか?
というか、誰か書いてよ。・゚・(ノД`)・゚・。
いい加減自重しろ。only1の存在だか何だか知らんが無知である事ぐらいは恥じてくれ。
以後放置かレスするなら丁寧に教えるかどっちかにしてもらえるかな キリがないから
936 :
名無しさん@お腹いっぱい。 :2006/08/25(金) 00:17:13 ID:1crmFTa/0
どんどん質問してくれ、ここの人は親切だから答えてくれるよ
正直、流行らせるのとこのサンプルどんな挙動するのか書いてないから 全然参考にできない。キー置換くらいしかできない人だから・・・
939 :
391 :2006/08/25(金) 00:46:09 ID:PBih+xe80
>>938 このスクリプトいいすね
保存とかしなくても動作確認出来るのか!サンクス
また名前が残ってたよ。。orz
もうちょっとモジュール管理とかしやすくならないかな。 自分のコードをそれなりに育ててると他人のコードを導入しにくい。
月曜日に使い始めて初めて作ったスクリプdがどうにか想定どおりに動いたので記念カキコ
943 :
名無しさん@お腹いっぱい。 :2006/08/25(金) 15:34:19 ID:B5FGjtB30
AHK使いこなせてる人がうらやましい。 俺が知らないちょー便利なスクリプトがあるかと思うと腹が立つ!
>>943 あんなことやこんなことにちょー便利なスクリプト
作って運用してるよ〜 ムフフフ
羨ましかったらがんばりな〜
マウスに機能振付ける程度しかしてねえ。 みんなAHKでなにやってんの?
よく使うソフトが存在して非アクティブならアクティブに、アクティブなら非アクティブに。存在しないなら起動する、ってのが一番使ってるのかな?
一番使ってるのは、Alt+英字キーでそれぞれ特定窓のアクティブ化かな あとはAlt+↑で窓最全面固定、Alt+↓で解除
俺もウインドウ操作が多いかな。Win+中クリックでアクティブウインドウをシェードが一番お気に入り。
X1,X2にマウスジェスチャ
Winシェード、助けっててば〜もどき、キーボードでのウィンドウ操作(移動、大きさ変更等)、 ホイールリダイレクトとか 後は普通にキーボードランチャとか 一時期 TTBaseをやたらとパクってた
漏れは、DVという動画再生ソフトをコントロールするのに使っている。 DVは動画の特定場面を(始点終点を指定して)ブックマークできるので、 これをAHKを使って外部からコントロールしている。 これで何が出来るかというと、いきなり動画を立ち上げたら 特定場面を繰り返し再生するようなことができる。 用途は
アプリ起動時に何か作業させたいときとか キーカスタマイズできないアプリ使うときに重宝してる スクリプトごとにAHKファイルを作って使う事が多いかな フリーソフトはカスタマイズして好みの動作に出来るのにさ パッケージソフトって融通効かないのが多いよね
953 :
名無しさん@お腹いっぱい。 :2006/08/25(金) 22:20:34 ID:B5FGjtB30
俺がよくつかうスクリプトは画面のガンマを明るくしたり暗くしたりするスクリプトかなぁ。 フルスクリーンのゲームとかやるときに重宝する
毎回決まった操作するソフトのバッチ化とか便利だよな マウス操作しか受けつけないソフトとかでもエミュレートできるし、ゲーム系は知らんけど
みんないろいろな使い方してるんだね。 自分で作ってこれがないとイヤって気分になったのは ・タスクトレイの不要なアイコンを消す。消したアイコンはGUIで作ったメニューで操作 ・コモンダイアログ操作(新規フォルダ作成や上のフォルダへ移動をキーで行える、よく使うフォルダをGUIメニューで選べるなど) ・自作コマンドラインランチャ ・クリップボード拡張に似た定型文貼り付けツール ・ファイルを開くときに起動ソフトを選べるポチエスもどき ・非アクティブ状態の音声プレイヤーをキー操作 ・音声ボリュームをキー操作 ・壁紙を10分ごとに変える ・メッセンジャーのアラートをすぐ閉じさせる こんなとこかな。
結構人いるじゃん。普段どこにいるのよw
自慢大会
958 :
名無しさん@お腹いっぱい。 :2006/08/26(土) 00:28:44 ID:JO8noLou0
いろんなスレで宣伝されてるから結構ひとは増えてるな
キーロガ(ry として・・・
ひでえw
スレのまとめサイトを作るときの省力化に使ってる スレの書き込みをコピーすると、自動でまとめの形式に整形してペーストできるようにしたりとか
>>955 >>タスクトレイの不要なアイコンを消す
これ便利そうですね
どんな感じで実装したか教えていただけませんか?
#NoTrayIconがそれ系の設定かと思ったんですが
自身のアイコンしか設定できないみたいですね
流行らせるページに置いてあるっしょ
>>963 見落としました、ありがとうございます。
965 :
911,913,920 :2006/08/27(日) 01:33:14 ID:HA7NngEi0
もうなんか全然出来ません_| ̄|○ どなたかキー設定はこれとしてどのように書くか教えてください 上=E 左=S 下=D 右=F パンチ=J 波動拳コマンド(下→右下→右+J)←最後の右と同時にJ押す ため技(左2秒間押しっぱなし→右+J) 連射(Jボタン1秒間に20連射)
>>965 教えてあげたいけどもうなんか全然出来ません_| ̄|○
>>965 UWSCでその操作を記録する
↓
再生する
↓
>>967 >
>>965 > UWSCでその操作を記録する
> ↓
> 再生する
> ↓
じゃあまずJボタン1秒間に20連射することからはじめなきゃな
> Jボタン ボタンかよwww
悩むよりパッド買ったほうが早いんじゃねえ?
>>970 正論だな
1000円以下で買えるんだし、
あれこれ悩む時間と比較したらやすいもんだ
というか、レスの流れみてると一生スクリプト組めそうもないし
家庭用ゲーム機の格闘ゲームを買う ↓ PCのことは忘れる
>>942 のように言っておきながら、いざ実際に使ってみるとまったく動かなかったり…
〜1
ToolTip, *加工中*
Sleep, 200
BlockInput, On
send, {Lbutton Down}
send, {Lbutton Up}
Sleep, 50
Send, w
Sleep, 50
Send, a
Sleep, 50
〜2
ClipSaved := ClipboardAll
Run,E:\softwares\refo\refo.exe E:\softwares\refo\recipe\■■■■_resban.rrf
Sleep, 200
FileAppend, %Clipboard%, E:\■■■■_temp.rrf
〜3
Sleep, 200
Clipboard := ClipSaved
Run,E:\softwares\refo\refo.exe E:\softwares\refo\recipe\■■■■.rrf
Sleep, 200
Run,E:\softwares\refo\refo.exe E:\■■■■_temp.rrf
Sleep, 200
FileDelete, E:\■■■■_temp.rrf
ToolTip,
BlockInput, Off
Janeでレスの全文を自動でコピー(〜1まで)、それをセーブしてから クリップボードの書き込みからrefoで2次加工をするためのマクロを作成してファイル化(〜2)。 〜1でセーブしておいた全文を復活させrefoで1次加工したあと〜2で作ったマクロで2次加工。 〜2のマクロを消して完了 正規表現ではちょっとやりにくいことをさせてるんで その場でマクロを作成してテキストを加工するという流れ。 USBメモリにexe化して使ってるが、 家のw2kでは問題なく動くんだが出先のxpの入ったpcだとロクに動かない…
>家のw2kでは問題なく動くんだが出先のxpの入ったpcだとロクに動かない… と思ってたが、実際使うのと同じような環境で使ってみると 家のPCでもやはりうまく動かないことが多い… どうすればいいのじゃ
昔のヴァージョンだとFileAppendで 存在しないパスを指定してもファイルが新規作成されなかったけど XpでのAHKヴァージョンはどう? あとRunWAitでREFOを終了を待ってみるとか >Run,E:\softwares\refo\refo.exe E:\■■■■_temp.rrf >Sleep, 200 >FileDelete, E:\■■■■_temp.rrf ここで間に合わないと削除の方が早くなるかも
マウスの中ボタンでアプリの切り替えをおこなおうとおもい、 いろいろ試したのですがうまく操作を受け付けてくれません。 MButton::AltTabMenu ↑を起点にして、sendとかいろいろしてみたのですがうまくいきません。 どうか知恵をおかしください。
>>976 >XpでのAHKヴァージョンはどう?
最新版の入った家のPCで作ったexeをUSBメモリに入れて使っていますので
そっちの問題ではないと思われ
refo使用後に必ずRunwait、それからSleepを全動作の間に狂ったようにはさみまくってどうにか成功率が上がりました
…といっても10%以下だったものが50%くらいにですが。
微調整すれば期待通りに動くと信じていじってみます
何か別のクリップボード監視系ソフトが入ってるとか
tomoclipというソフトは使ってますが、 使用を止めてみても変化がありませんでした。
あとはFileAppendで時間がかかってるという線かな これもWait出来ればいいんだけど。 FileGEttimeとかIfExistとかで 書き込みが終了してファイルが解放されたことを調べられないかな?
MsgBoxデバッグ
>>978 中央ボタンがマウスドライバかなんかで
別なのにのっとられてるんじゃないの。
logitech の setpoint なんかだとそうだよ。
設定で直せる。
>>984 レスありがとうございます。
サンワのマウスつかってます。
ドライバがくそです。ハードは軽くて、ボタンとかも押しやすいんだが……
やっぱりMSのマウスかな。
986 :
911,913,920,965 :2006/08/30(水) 20:11:37 ID:YWVqs1GT0
誰か〜。・゚・(ノД`)・゚・。
まだいたのか・・・
>波動拳 920じゃdキーを押したまま(downのまま)jキーを押してる。dを離してからjだろ? >ため技 sを押してから2000ミリ秒sleepしてsを離してfとjを押せ。 >連射 SetKeyDelayを適当に設定して{j 20}。
send,{した down}{みぎ down}{した up}{パンチ down}{みぎ up}{パンチ up} こうじゃないの。 あとは必要なら間にスリープ入れてタイミング取る。
MButton:: RButton:: Hotkey,LButton,MRtoLButton If 条件 ジェスチャー発動 Else キャンセル処理 Hotkey,LButton,Off Return MRtoLButton: Lジェスチャープラス Return こんな感じで、普段 LButton は拾わず、MButton か RButton が押された時だけ LButton を Hotkeyコマンドで登録して MButton or RButton 始動のジェスチャーに LButton を からめたいんだが、LButton が登録されず どうしても上手くいかない。 (MR , MM , RMMM , R→M↑ 等のジェスチャーは上手くいっている) なぜだろう?
991 :
990 :2006/08/31(木) 13:52:02 ID:J2AR2qUd0
自己解決・・・・・・たぶん。
BuildWait, NextThread
993 :
911,913,920,965 :2006/08/31(木) 20:58:47 ID:zM1AWgyN0
>>988 >>989 ありがとうございます!
>>965 の波動拳コマンドはなんとか安定して出るようになってきました
波動拳コマンド
a::
send,{d down}{f down}{d up}{f up}{j down}{j up}
が、ため技が全然出ません。。。
h::
send,{s down}Sleep, 2000{s up}{f down}{u down}{f up}{u up}
こう書いてみたのですが、なんかまったく違う動きをします。
どこが違うのでしょうか?
>>993 このスレも残りわずかだし、乗りかかった船だ。
オマエのミスその1:1行に命令文はひとつしか書けないことがわかってない。
オマエのミスその2:複数行にわたる場合は最後にreturnが必要。
オマエのミスその3:jキーを押すだけならdownとかupとかは不要。
オマエのミスその4:そもそも人生の大切な時期をゲームに費やしている時点で負け組。
以上を踏まえて。
>波動拳⇒自分が書いたものとjキーの扱い方を比べてみろ。
a::
send,{d down}{f down}{d up}j{f up}
return
>ため技⇒命令はsend、sleep、sendと3つあるので3行にならなくてはいけない。
h::
sキーを押下
2秒スリープ
sキーを離してfとjを押下
return
繭スレの奴に比べればかわいいもんだわ。
996 :
911,913,920,965 :2006/08/31(木) 22:56:03 ID:zM1AWgyN0
>>994 おお、ありがとうございます
なんかすごく安定しました
波動拳は、ほとんど余計な動作が入らなくなりました
ため技は完璧です
あとは、いくつかのゲームで試したのですが、相性みたいのがあるみたいなので
Sleep入れたりしてこれから試して生きたいと思います。
また、分からなくなったら聞きにきますのでよろしくお願いします。
どういたしまして またいつでもどうぞ^^
こうしてまた役立たずの低脳が1匹居付いたのであった。
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。