(^-^)
流行らせるページのBBSがここと同じ形式なので 重複スレ?みたいに思ったが、2ちゃんにはスレなかったんだね むこうのBBSはあまり書込みない状況っぽいが ここでスレ伸びるんかな、伸びるといいな
使ったこと無いが
>>1 の日本語ページを見た。
プログラムをかじった人以外には敷居高いねぇ。
これに限らず独自のスクリプト言語って微妙にCなんかと
変えたりするのやめて欲しいな。ifに括弧無かったりとか。
ややこしいからCそのまんまでいいじゃん、とか思う。
そう考えると秀丸エディタのマクロは入りやすくて(・∀・)イイネ!!
C言語なんてやったこと無いし、 HSPで遊んでた漏れとしては覚えやすかった。 ただ変数を%で囲むってのがややこしい。
>>4 自分は未知言語アレルギー体質のプログラムをかじった人だけど
これに対しては割とすんなり入れたな
汎用言語採用してるマクロなんかは「○○準拠なんで詳しくは自分で調べてね」
みたくなるので予備知識入ってないとしんどいけど、
流行らせるページでかなりしっかりした日本語訳リファレンス作ってくれてるからやりやすい。
コマンド数多くないぶんやりたいこと探しやすいってのもあるかな
(逆に言うとできないことも多々あるってことだけど)
とりあえず関数とパラメータの間をカッコで括りたいな
VBなんかだと頭にCall付ければ戻り値のない関数でも括れるんだけど
Call aaa(p1,p2) みたいな感じに
2chにもスレ立ったか。俺も立てようか迷ってた 俺は ( をネスティングする言語嫌いだから、めちゃ使いやすい
8 :
7 :04/10/24 00:08:41 ID:/knjExuH
とりあえず具体的に何が出来るか書いといたほうがいいだろ
シフトを押しながらaを押すとabcと入力されるようにする→ a::send,abc
ホイールクリックでIEが起動するようになる→ mbutton::run,C:\Program Files\Internet Explorer\IEXPLORE.EXE
この一行をAutoHotkey.iniに追加するとその機能が追加される
あとUWSCのように操作の自動化もできるが詳しくは
>>1 のリンク先で
9 :
7 :04/10/24 00:11:53 ID:/knjExuH
間違った… ×シフトを押しながらaを押すとabcと入力されるようにする→ a::send,abc ○シフトを押しながらaを押すとabcと入力されるようにする→ +a::send,abc
あとこのソフト名前が悪いんじゃないの? 俺もつい最近までAutoHotkey? ああホットキーのランチャか、と思ってたからね。
欲しい機能 ・DLL呼び出し(Dynacall.dllみたいな感じのやつ) ・DLL呼び出しで使う構造体の取り扱い ・ソケット通信(socket,closesocket,connect,bind,listen,accept,select,recv,sendなど) ・COMオブジェクト(UWSCみたいな感じ?) ・正規表現(Perl風がいい)(nScriptみたいにサブマッチを直接変数に代入できると便利) ・サブルーチンの引数、戻り値 ・ローカル変数 ・Runで標準出力を得る ・自分の標準入出力を読み書き
あんまり命令を増やすと敷居が高くなるしそれなら普通の言語使えって話だと思うんだけど 俺は数行あれば出来ることはむしろ命令にして欲しくない
14 :
名無しさん@お腹いっぱい。 :04/10/24 10:42:50 ID:HkFmtChi
しまったage忘れた
ちょっとつかってみたけど、私にはさっぱりだった。
>>15 無理もない
マウス関係 ⇒ マウ筋、 X Wheel
ホットキー ⇒ ホットキー系のランチャ
操作自動化 ⇒ UWSC
と、それぞれフツーの人が使えるインターフェースをもった良質
ソフトがあるんだから、わざわざコレを使う必要もないよ。
AutoHotKeyはスクリプトを弄ることに喜びを感じる一部のマニア
向けって気がする。
わたしゃ職業プログラマだけど、あえてコレを使おうって気には
ならんなぁ。
>>17 マウ筋やランチャじゃ押したときの状況によって操作を分岐させられないだろ
UWSCは同じスクリプトだろが。しかもautohotkeyより機能低いし
>>18 だからそこまで細かいことを自動化したいって人が
どれだけいるかってことですよ。
20 :
19 :04/10/24 13:30:32 ID:e3Ewzv4X
もちろんこのソフトや、使っている人を非難している わけではなですよ。 念のため...
21 :
19 :04/10/24 13:32:58 ID:e3Ewzv4X
>>18 >UWSCは同じスクリプトだろが。
しかし操作を記録することが出来ます。
22 :
名無しさん@お腹いっぱい。 :04/10/24 13:35:44 ID:Eo0uLruI
>>21 autohotkeyも操作を記録できるが?
23 :
19 :04/10/24 13:52:45 ID:e3Ewzv4X
>>22 そうですか、それは失礼。
しかし
>>1 の日本語説明ページの「AutoHotkey入門」のところには
書いてないようですよ。
一般の人が使うならまずそこからだと思うのですが。
UWSCは
・日本語である。
・立ち上げた状態で記録再生など分易いボタンが表示されている。
・スクリプトなど全く意識しなくても普通につかえる。
といった点で一般向けとしては大きなアドバンテージがあると思うのです。
ここはAutoHotKeyのスレッドです UWSC信者なのは構いませんがUWSCのスレに行った方がいいんじゃないですか?
25 :
名無しさん@お腹いっぱい。 :04/10/24 14:00:15 ID:Eo0uLruI
>>24 いやもっと盛り上げようよage進行で
こういうやり取りでソフトの利点とかが説明できるんだし
すいませんねぇ、私も何か変な方向になってきたと思ってたんですが。
私が
>>17 で言いたかったのは、プログラム経験のないライトユーザー
にはそれなりに使いやすいソフトがあるから無理する必要はないって
ことなんですよ。
>>15 氏に対してね。
このソフトが初心者向けでないということは、ここにいる誰もが認め
るところではないでしょうか?
>UWSC信者なのは構いませんがUWSCのスレに行った方がいいんじゃないですか?
たまにしか使わないので信者ではありませんが、この辺で失礼します。
AutoHotKeyは窓使いの憂鬱と用途が似ているような気がする。 どのようなメリットがあるのだろうか。繭は最近更新がないので、 乗り換えを検討しているのだが。。。誰か比較して。
漏れはJoyToKeyから乗り換え検討中。というか魅力は充分なんだけど…マンドクセー('A`)
そこでロケットマウスですよ
>>18 >メール欄:煽りが来たから盛り上げてみよう…
全然煽りに見えないと思うが。
31 :
18 :04/10/24 17:48:23 ID:qLxHlf/+
>>30 それは全体を読んだからだろ。
>>17 の時点では煽りだと思った
初心者はGUIのあるソフトを使うし、職業プログラマはこんなもの使わないって全否定だろ
プログラマのくだりが無ければそうは思わなかったが…
あと、しばらくはageようよ。布教しないなら2chにスレ立てた意味無いと思うし
32 :
30 :04/10/24 18:55:45 ID:icr/KnK7
>>31 いや、普通に
>>17 だけを見ても煽りには見えなかったよ。
言い方悪いけど、広まらないのには理由があるんじゃないかなぁって…(複雑&むずい)
このソフトを的確に表してるレスだと思う。
使いこなせる人には便利だけど…って。
布教したいってのは分かるけど、それが必死すぎて煽りに見えたんでしょ。(言い方悪くて済まない)
33 :
18 :04/10/24 19:19:17 ID:m9YJUqHh
>>32 そうか?ま、どうでもいいよ。怒ってるわけじゃないし
とりあえず否定意見があると説明しやすいし利用しようと思っただけなんで…
あと、俺ソフトウェア板って全然見ないんだけどひょっとしてキレてるように見えるんかな
普段いく板だと皆こんな感じなんでよく分からんが、次からもうちょっと丁寧語で書くようにするよ
34 :
名無しさん@お腹いっぱい。 :04/10/24 19:29:19 ID:uei0iiz3
語り口云々というより単にメール欄が問題なのでは 未だ使ってない人間からすると、他のランチャーとの違いが明確になるという意味でも、 こういうやり取りは有り難いんだけどね
スクリプトだけどexe化すればどこでも持っていける。 試しにexeにしてAutoHotkey入ってないPCで実行したが無問題 DLL不要ですた。スプリクト内で自分で弄ってない限りレジも触らない模様 っつーわけでexeにすれば、USBメモリのようなリムーバブルメディアでもランチャとして使えますよ ドライブは、自分の起動パスから取れるので可変にしとけばよろし #A:: SplitPath, A_ScriptFullPath , , , , , drive Run,%drive%\hoge\hoge.exe return でOK
36 :
18 :04/10/24 19:55:30 ID:8Catkk+A
あ、肝心なこと書いてないな
煽りだと思ったのは勘違いだったそれは認める
>>22 の時点で気づいたが
>>17 がメール欄を見てないようだったんで何も言わなかった
俺は普通に反論してるだけだし謝る必要も感じなかったし
じゃ、うざいんでこれでコテバンやめますね
HoeKeyから乗り換えた。
38 :
名無しさん@お腹いっぱい。 :04/10/25 23:01:39 ID:1gv5IO53
ぬる℃家さん、このスレ見てますね。今日の
http://cgi19.plala.or.jp/lukewarm/ に「AutoHotkeyのパフォーマンス」として、DMonkey、UWSC、AutoHotkeyの能力比較をしてますな。
話は変わりますが、AutoHotkeyでマウスポインタを特定の場所に移すことはできますか?
うちのOSはXPですけど、デフォルトで「ポインタを自動的に既定のボタン上に移動する」
というオプションがあるのは知っています。
でもYes or Noで既定と反対のほうにポインタを移動したい場合は、
チユーチユーマウスやBearMouseなどのアプリを導入しないと無理ですよね。
AutoHotkeyを常駐させてそれらのイベントを監視して、望む動作をさせることはできますかね?
できるならスクリプトを例示してもらえませんでしょうか。
ControlGetPosとMouseMove使えばいいんじゃね?
40 :
38 :04/10/25 23:26:23 ID:1gv5IO53
>>39 早速のレスありがとうございます。
ControlGetPos : コントロールの位置とサイズを取得
MouseMove : マウスカーソルを移動する
ですね。おぼろげにはわかります。
MouseClickを使うとそのボタンを押すこともできますね。
ただ、Yes or No等のダイアログが発生するのをどうやって監視するか方法がわからないのです。
よければご教授願えませんか。
>>38 なにかを監視して待つ場合のCPU使用率も低いよ
俺が乗り換えた一番の理由
>>40 loop
{
IfWinActive, WinTitle,
{
}
sleep,100
}
てな感じで無限ループ作って監視すればいいんじゃね?
SetTimer
あ、ホットキーで割り込まれることもあるから無限ループはマズいのか
45 :
38 :04/10/25 23:59:15 ID:1gv5IO53
>>42-44 なるほど、それならわかりやすいですね。
SetTimerでサブルーチンを実行し、その中でWinTitleが一致するかどうかを見ればいいんですね。
WinTitleの方は誤検出の可能性がありますが(特にexplorer発の場合)、
その時はAU3_Spy.exeで調べればいいんですね。
厨質問に付き合ってくださってありがとうございました。
試してみて、不具合があればまた伺いますんで
よろしくお願いします。スレの皆さん。
>>38 流行らせるページは毎日チェックしてたけど、このページは知らなんだ。
やっぱ時代はRSSなんかのう
>>44 ホットキーはループとは関係なく割り込むよ
それがすごい所
48 :
名無しさん@お腹いっぱい。 :04/10/26 06:41:24 ID:m2i/TlUM
>>47 SleepやWait系のコマンド使ってないのに割込まれるのは逆にトラブりそうな気ガス
それって同じ名前のワーク変数使いまわしてたりすると、
内容壊れる可能性があるってことだよね。
んー、やっぱローカル変数は欲しいなぁ
49 :
名無しさん@お腹いっぱい。 :04/10/26 10:22:45 ID:2FuMZGan
>>48 どのコマンド使おうが一緒だと思うけど…
そんなに気になるならワーク変数はラベル名+なんちゃらって自分で法則性を決めれば?
>どのコマンド使おうが一緒だと思うけど… 明示的にシステムに処理を明け渡す命令以外でも1ステップごとに割り込みが発生する っつーのはローカル変数ないと厄介だよ マイコンプログラムなんかの場合は割込みルーチン内で対策するんだけど イベントドリブンを自動でやってくれる環境だとどこに飛んでくかわからないから (スレッド管理すりゃいい話だがそんな面倒なことはしたくない) >そんなに気になるならワーク変数はラベル名+なんちゃらって自分で法則性を決めれば? LoopやSetTimerで複数ルーチン動かす場合は現状ではユーザー側でそうやって対策するしかないかな。 正直使い捨てのワーク変数なんて管理したくないんだけど ユーザーが任意のタイミングで稼動させるホットキーイベントの場合 操作体系として 複数のイベントが同時に動くようなことはそうない筈なのでさほど問題にならないと思うけどね (ラベル先頭に$つけず、フックを使わない場合はその限りではないか) ちなみに SetBatchLines,-1 にすれば割り込みは回避できるっぽいが マウスジェスチャスクリプトなどでマウスフックしている環境だと バグで永久ループ作っちゃった場合かなりのっぴきならない状況になりそう
>>50 だったらスクリプトを複数起動すりゃいいんじゃないかな
同じスクリプト内にはその処理中でも割り込ませたいホットキーのみ定義して
環境変数=グローバル変数って感じで
なんにしてもそんな複雑で巨大なもんは想定してないだろうしし
まともなプログラム言語でやったほうがいいと思うけど
レスサンクス 常駐アプリを減らす目的でAH使ってるので、常時常駐のスクリプトを複数作るのは 正直言って避けたいところ 今のとこ複雑で巨大なもんを作っているわけでもなく、変数たくさん作って メモリ使用量を増やしたくないがゆえに i や whdなど使いまわしてるだけだしね 設定用のGUIを表示する時などは Suspend,ON RunWait,hoge.ahk Suspend,OFF とかやってるが、ホットキーイベントごとに別スクリプト飛ばすようなのは #A:: RunWait,hoge.ahk は起動処理に時間がかかるのであんまり使えそうもない。 まぁでも気をつけないとバグを作りやすい構造だなぁと思っているだけで 個人的レベルでの解決方法は割とどうでも良かったり
>>50 割り込まれるのがいやならThread,Priorityで優先度をあげるといいよ。
SetBatchLines,-1は自動的なSleepを無くすコマンドだから割り込みは関係ないはず。
マ板に逝ってください。
55 :
49=51 :04/10/26 20:18:58 ID:SgzS3eIs
なんか話がかみ合ってない気がするが(51と52)…ま、いいや モニターをサスペンドする方法見つけたんで貼っとく SendMessage, 0x112, 0xF170, 1, , A
一時的にエラーが発生してもダイアログを出さないように出来ませんか?
v1.0.22 released
キタ━━━━━━(゚∀゚)━━━━━━ !!
>>56 コマンドラインパラメータでも指定可
一時的ならこっちのほうがいいかも
>/ErrorStdOut
>文法エラーをダイアログ表示せずに標準出力に出力する
あと、RunのエラーはUseErrorLevelオプションで抑止できる
個人的にFileRenameとメモリとかCPU使用率を取得できるようになれば、 もちっとGUIコマンドを使う機会が増えるんだが…
62 :
56 :04/10/28 00:17:34 ID:QUJnS9WF
エラーが発生する可能性があったコマンドはMenuだったので UseErrorLevel を使うことで解決できました。
DL版リファレンスができたのでトレイメニュー改ざんしてみたり Menu,TRAY,NoStandard Menu,TRAY,Add,流行らせるページ&DL版,Sub_MenuTray Menu,TRAY,Add,フォルダを開く(&F),Sub_MenuTray Menu,TRAY,Add Menu,TRAY,Standard Sub_MenuTray: if A_ThisMenuItemPos=1,Run,%A_ScriptDir%\html\index.html if A_ThisMenuItemPos=2,Run,%A_ScriptDir% return MButton:: WinWait,A Menu,TRAY,Show WinActivate Return
Pre-1.0.23 Changesで文字だけ表示する透明ウィンドウができるようになってるね
StringReplaceでSearchTextに`tを指定するとエラーになってしまうんですが、 バグですかね?
と思ったら%A_Tab%を使うんですね… `nとかは使えたから…
Sendで変数を送るのは不可能ですか?
aaa=bbb Send,%aaa%
特定キーを離す命令を行うか、またはスレッドが終了するまで押しっぱなしにすることは出来ないですかね? SetKeyStateみたいなのはないし、 send,{Alt Up}、または、send,{Alt Down}などにようにしてもすぐに元に戻るし…
普通にできてるけど
ホントだ。 ただ自分のやりたいのはAltキーを一時的に無効にしておきた… ああ、Hotkey,{Alt},で逝けそうですね。 ありがとう。
タブブラウザで、あるタイトルのタブがアクティブになったら 自動でCtrl+Wを送りたいのですが、何も押さずにIfWinActiveを 発動させる方法が分かりません。おしえてください。
>>72 ホットキー使わない監視は>42-43あたり
IfWinActiveでタブブラウザ上の特定タブのアクティブ状態を見るのは…
タイトル文字で検索すればいいのか。
んでもポップアップ広告を自動で閉じたいのならブラウザ側の
ポップアップ抑止機能を使ったほうがいいよ。大概のタブブラウザなら付いとる。
できました!有り難うございました〜 SetTimer, PopUpClose, 250 return PopUpClose: IfWinActive, 100% Free Hentai Pics!! Send, ^W return
単純にマウスのXButton1を、押して離すことをエミュートしたいのですが、うまくいきません。 <+!q::{XButton1} (Shift + Alt +Q を押すとXButton1の連打状態になる) <+!q::{XButton1 Down}{XButton1 Up} (やはりXButton1の連打状態になる) <+!q::{XButton1 Down} (でもXButton1の連打状態になって押しっぱなしにならない) 何かいい方法はないでしょうか?
KeyWait
!q:: Send, {XButton1 Down} KeyWait, q ; Wait for the key to be released. Send, {XButton1 UP} return でも、押しっぱなしにならない。Send, {XButton1 Down} 自体がダメなのか。
MouseClick
81 :
名無しさん@お腹いっぱい。 :04/11/08 10:48:59 ID:qqC7KO6v
age
^x::Send,^x ってやっても対象アプリが受け付けないんだけどこれは9xだから?
左様
ありゃー どうもです
このソフト、旧OSに対する制限や支障自体はあまりないのでNT4で重宝してる。 けど 9x系とNT系ではだいぶできることに差があるみたいね。 Meな人とかはかなり(´・ω・`)なのかな
XKeymacs風にキーバインド変更するスクリプトください
ぬるさん、リファレンスのClipWaitを日本語訳していないのは仕様ですか? 日本語訳しなくても誰でもわかるけど
じゃええやん。
DL版では日本語になってる
連携用にとDelphiでコンソールアプリを必死になって作ってたのだが RunWaitで標準出力内容取得できないことに今気がついた orz
>>82 最新版では
$^x::Send,^x
でできるようになってる気がする
しょぼいスクリプトしか書けないのでアップデートしても意味がなかった
>>93 changelog情報が1.0.22のままだぞ?と思ったら
NotFoundのときはオミトロンでgoogleキャッシュを開くようにしてるからだった
>93のリンク末尾に&nbsp; (半角)が付いるからか
CapsLockにCtrlを割り当てたいんですが 普通にCapsLockにCtrlをSendしても押し下げなどの状態が再現できません どうすればいいでしょうか
99 :
名無しさん@お腹いっぱい。 :04/11/17 13:57:31 ID:edtOjVBX
マウスジェスチャをマウ筋から乗り換えようかと思ったけど 設定の移行が面倒くさいな
(読んでもいないのにレス)マウ筋より実用になるん?
101 :
名無しさん@お腹いっぱい。 :04/11/17 18:36:59 ID:K021bBCt
あれだな。
>>1 はこのソフト流行らせたいんだろ?
だったら「何でも自動化AutoHotKeyのスクリプト承ります」みたいなスレ立てて
みんなが欲しい機能のスクリプトを作ってやれよ。
敷居が高いせいで流行らないんだからさ。
お、俺は釣られないぞ
すみません。AutoHotKey で次のような動作をマウスに割り当てる事はできるのしょうか? 右クリック + 左クリック = Ctrl + 左クリック 右クリック + 左ダブルクリック = Shift + 左クリック 右クリック + ホイールクリック = Delete 右クリック + ホイール上 = PageUp 右クリック + ホイール下 = PageDown X Wheel NT では出来なかったので、これができるなら使用してみようと思っています。
釣りか罵倒だな。X-WHEELで全部できる。設定見直せ。
>>104 何時間も試したのですが無理でした。例えば 右クリック + 左クリック = Ctrl + 左クリック などの設定は、
「無限ルーブに陥る可能性が有るので出来ないようにしました云々」とヘルプに書いて有りました。
それとも別のやり方でもあるんでしょうか?
マウ筋でもできるぞ
他のソフトの紹介してどうするよ
>>103 X-WHEELは知らんがAutohotkeyでやってやれないことはない
単純に~バイパスすると左クリやらホイールやらの元々の機能も働いてしまうだろうから
結構めどいスクリプト書かにゃならんと思うけどね
>>106 えっ?できるんですか? 右クリック + 左クリック = Ctrl + 左クリック とかを割り当てても、
全く反映されなかったし、設定が難しすぎてで投げ出したのですが・・・。
ロジクールのマウスウェアとかとの相性が悪いんでしょうか。
ここ二三日、X wheel とマウ筋の設定に何時間もかけても思い通りになってくれないので、
いい加減いやになってきています。初心者はカスタマイズなんかするべきではないんですかね。
>>108 AutoHotKeyはサンプルを貼り付けるだけで欲しい機能(の一部)が実現したので、
「これはいけるかも」と思いました。でも御指摘の微妙な不具合(?)が気になってはいました。
スクリプトとか全然分からないし・・・。素人としては流行らせるページの管理人さんの
マウスジェスチャーのスクリプトがこなれるのを待つ方が良いのかもしれませんね。
(現在はマウ筋並に設定の仕方が分からなかったですが)
>>110 ありがとうございます。さすがに今は疲れ果てましたので、元気が戻ったらヘルプや
解説ページ等をもう一度読んでみようと思います。御紹介の2ちゃんねるのスレの
方でも質問させて頂く事もあるかもしれませんが、その時は宜しくお願いします。
>>103 マウスジェスチャスクリプトでできる
ダブルクリックはなんか条件判定使わないといけないけど多分できる
他人に有効そうな部分をうまく切出して投稿スレに張れればとは思うんだが なかなか… ちょっとした事をiniにどんどん追加していけるのはすごくいいんだけど 局地的なカスタムに終始してるな。汎用スクリプトって微妙に書きにくい
>>111 終わった話題で揚げ足とって悪いが、それは
そういう設定なのであって不具合じゃない
元の機能を殺したいのなら ~を外せばOKだよ
ただそうすると左右ホイール単独での操作も一切効かなくなるので
それらを補完するスクリプトが必要だってだけだ
コンビネーションキーで元の機能が使えなくなるのは右クリックだけじゃないか? それと、マウスジェスチャスクリプトはうまくやってるんで右クリックも普通に使える。
スマソ、テスト用スクリプト新たに作って試してみたら RButton & LButton::Send,{MButton} ↑ こっち側に書かれてるキーが効かなくなるだけだった 前に試した時は&側も効かなくなってパニクったような記憶があったんだが 何か勘違いしてたのかも ホイールに関してはサブノートなので試せてない、重ねてスマソ
E-MACS Likeにするのに引っかかることない? kill-word(1単語消し) や kill-region (1段落消し)のコツとか。 kill-line(一行消し)なら ^k :: send {shift Down} send {end} send {delete} send {shift Up} ruturn で何も考えずにでkるんだが。
ファイル名を指定して実行を出すにはどうすれば・・・orz
ミ田(ウィンドウズキー)+Rを押す
>>120 互換シェル使ってるのでautohotkeyから呼び出してほしいのですが
すいません・・・消えます
124 :
122 :04/11/21 18:09:49 ID:fuq0evGX
質問は流行らせるページの掲示板に書いたらどうだろう
119の時点で121の情報も出して欲しかった 小出しにする人間に答えるのよくない
気にしすぎ。
HoeKeyの%sみたいな、選択文字列を他のツールなり検索なりに飛ばすような事はできる? これができれば乗り換えようと思ってるんだけど。
ちと繁雑になるが、Send,^c で一旦クリップボードに取り込んでからツールに飛ばせばOK クリップボードの内容書き換えたくない場合はバックアップ取っとけば元に戻せる。 (ただしテキスト情報のみだが) hoeでも%s使った後クリップボード内容が選択文字列に置き換わってるので 内部でやってることは多分一緒 wcpbak = %clipboard% ; クリップボード内容待避 clipboard = Send,^c ClipWait, 0.5 Run,hoge.exe %clipboard% clipboard = %wcpbak% ; クリップボードリストア(テキスト情報のみ) wcpbak =
クリップボード拡張ソフト入れてる人は履歴が増えるだけかもしんないね
ControlGetFocus ControlGetのSelected
>>130 wcpbakのある3行を削除しる
クリップボード拡張ソフト常駐してるなら、そっちのオプション調べたほうが幸せになれるかもだが
>>131 クリップボードは使わないがエディタなど編集可能な領域の選択文字列しか取得できないので
IEのブラウザ領域などの選択文字はむりぽ
最新バージョンではわからんが、昔試してみた時はフォーカスがエディットコントロール上に
あっても結構しくじることあった。
CtrlとCapsを入れ替えるにはどうやって記述したらいいのでしょうか? AutoHotkeyを流行らせるページを読んだのですがわかりませんでした_| ̄|○
134 :
133 :04/11/28 00:33:11 ID:c7aIhnXT
すいません、>97にありました。スレをもっとちゃんと読めばよかった_| ̄|○
135 :
sage :04/12/06 17:49:15 ID:iniyGzU5
ファイラからスペースがある引数(ファイル名)を渡すと、スペースおきに引数が分割されます。しかもTRIMしてくれます。 スクリプト中に Arg = %1%%2%%3%%4%%5%%6%%7%%8%%9% とつなげても意味ないですし・・・。 かといって、 Arg = %1% %2% %3% %4% %5% %6% %7% %8% %9%にやっても半角スペース1文字は挿入できるけど意味ないですし・・。・ あきらめるしかないのでしょうか? ファイラ等がSFNをあつかえれば良いのでしょうが・・・。
136 :
135 :04/12/06 17:51:09 ID:iniyGzU5
sage間違えました。失礼しました。
よく分からんけどレス。 gosub GetCmdFilePath msgbox, %cmd% return GetCmdFilePath: cmd= loop, { StringTrimRight, this_cmd, %A_Index%, 0 if this_cmd = return if A_Index = 1 cmd = %cmd%%this_cmd% else cmd = %cmd%%A_Space%%this_cmd% } return
"C:\Program Files" "C:\Program Files\hoge" みたいに複数ファイル渡すと C:\Program | Files | C:\Program | Files\hoge って感じで分割してくれるな。
というわけで修正。 多分動くと思う。 gosub GetCmdFilePath loop, %cnt% { StringTrimRight, this_cmd, cmd%A_Index%, 0 msgbox, %this_cmd% } return GetCmdFilePath: cmd= cnt = 0 loop, { StringTrimRight, this_cmd, %A_Index%, 0 StringTrimRight, currcmd, cmd%cnt%, 0 if this_cmd = return ifInString, this_cmd, :\ { cnt++ currcmd = cmd%cnt% = %currcmd%%this_cmd% } else cmd%cnt% = %currcmd%%A_Space%%this_cmd% } return
これは作者に何とかしてもらったほうがいいと思う
141 :
135 :04/12/06 19:05:52 ID:iniyGzU5
お忙しい中、お付き合いいただきましてありがとうございます。 自分のショボイスクリプトに組み込んで利用させて頂きます。
msgbox,cnt=%0% @=%1% A=%2% B=%3% C=%4% ってahk作って試してみたんだけど、漏れの環境では (機種依存文字スマソ、数字だとわかりにくいんで) Cnt=2 @=C:\Progra~1\hoge\hoge.txt A=C:\Progra~1\hoge\hoge.2txt てな感じでDosチックなパスが帰ってきた。スペースはあっても実質上問題なさそうな感じだけど んー何が違うんだろ WinXP Home SP1a Autohotkey V1.0.23
ファイラーかなんかで渡してたりして。
終わってる話題にしつこく自己レス プロンプトから Start test.ahk "c:\program files\hoge\hoge.txt" ってしたら cnt=2 @=c:\program A=files\hoge\hoge.txt ってなった。 エクスプローラからファイル選択してスクリプトにドロップした時や XFから「送る」の動作でスクリプトに渡したときは>142になるですね。 >135 >ファイラ等がSFNをあつかえれば良いのでしょうが・・・。 って最初に書いてあるし orz スレ汚しスマソ
1.0.24 で直ったらしい
これか Improved behavior of command line parameters on Windows NT/2k/XP so that: 1) more than 8 files can be dragged and dropped onto a .ahk script (if the drag-and-drop option was enabled during installation); and 2) .ahk files launched directly via shortcut or command line can receive parameters containing spaces if they are enclosed in double quotes.
個人的には↓あたりが嬉しい スペシャルフォルダ調べんのに{20D04FE0〜 とかやんなくて良くなった Added the following built-in variables: A_Language, A_ComputerName, A_UserName, A_Desktop, A_DesktopCommon, A_StartMenu, A_StartMenuCommon, A_Programs, A_ProgramsCommon, A_Startup, A_StartupCommon, and A_MyDocuments.
148 :
135 :04/12/10 09:41:01 ID:tjcJeaTT
おー直ってるっぽい。 (前ver)HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Open\Command\: "D:\tool\AutoHotkey\AutoHotkey.exe "%l" %2 %3 %4 %5 %6 %7 %8 %9" (今) HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Open\Command\: "D:\tool\AutoHotkey\AutoHotkey.exe "%1" %*" (前ver)HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Run\Command\: "D:\tool\AutoHotkey\AutoHotkey.exe "%l" %2 %3 %4 %5 %6 %7 %8 %9" (今) HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoHotkeyScript\Shell\Run\Command\: "D:\tool\AutoHotkey\AutoHotkey.exe "%1" %*" ここが変更されただけかな? それにつけても良かった良かった。 >>猫さんありがとうございました。
SysGetで SM_CXSIZE、SM_CYSIZEの値がうまく取れなくて悩んでたが ヘルプの Sub-command一覧表の対応数値が間違ってた模様 × SM_CXSIZE、SM_CYSIZE= 29, 30 ○ SM_CXSIZE、SM_CYSIZE= 30, 31 全部調べたわけではないので他の数値についての整合性はわかんないけど ハマったのでとりあえず貼っとく どなたか英語できるかた本家フォーラムへの代理報告キボンヌ
どうぞジャンプして来てください。川幅はそれほど広くないですよ。 あなたならきっとうまく跳べるはずです。そして、黄金の国ジパングを さらに魅力的なものにしてくれることでしょう。
AutoHotKeyの機能のいくつかをCの関数として用意しているようなライブラリってないの?
AutoHotkey自体はC++で書かれてる ソースコード配布されてるから拾ってきて解析汁
ウインドウ閉じる前に処理を入れ込みたいんだけど、うまいこと制御奪うことって できないですかね。WinWaitCloseだと閉じてから戻ってくるので間に合わないし、 地道に Alt+F4,アイコンダブルクリック、[X]ボタン当たりを張るしかないかな
意味が分からんとです…
必ず特定のホットキーで閉じればいいやん、と適当にレス。
>>155-156 WindowShadeをやりたくて公式にあるWinowShading.ahkを改造してるんだけど
Shadeしたままアプリを閉じてしまうと次回起動時タイトルバーのみのウインドウになってしまう
ウィンドウが閉じられる前につかまえてシェード解除してから閉じるようにできたらなと
>>156 特定の操作以外で閉じたウィンドウはシラネで通そうかと思ったんだけど
OSシャットダウンや再起動のときちょっと困るです。
スクリプト終了前に全部アンシェードはするけど常駐のAutohotkeyより先に終了させられてしまう
ウィンドウをどうしようかと思って
タイトルバーのみのウィンドウが出てきたらログを調べて適当に復元すれば?
再起動とかもAutoHotKeyでやれば(ry
>158 そうですね。ログに関してはスクリプトリロード対策用にID情報だけiniに保存してるんだけど、 一回閉じられるとID変わっちゃうから、やるならClassで管理かな でもエクスプローラとか多数窓開いてるとわかんなくなるか。 面倒なんでとりあえず決め置き値400くらいで復元するの作ってみて様子見ることにします。 >159 そこまでやれば確かに無問題かも ノートでPowerボタンを押してWinの終了メニュー出すようにしてるので それをAutoHoekeyでフックできればいいのかな
AutoHoekeyって何だよもう orz
ワラタ。混ざってるな
そういやしばらくAutoHotKeyとHoeKeyを併用していた時期が合ったな…
GUIのgオプションのやつで、 A_GUIEventで呼び出された時の操作を調べられるが、 どうやっても空かNormalにしかならない気がするんだけど、 ver1.0.25以降の機能だったりするのかな?
DoubleClickはなるよ 1回目でMsgBox出しちゃうと2回目のクリックができないが
うお、Sleepが入ってたのが原因だったのか。thx ためしに↓を動かしてみるとちゃんとDoubleClickになるね。 GUI, Add, ListBox, gClicked, aaa|bbb|ccc GUI, Show return Clicked: if A_GuiControlEvent = DoubleClick Msgbox, %A_GuiControlEvent% ;sleep, 300 return GUIClose: ExitApp
素朴な疑問なんだが、AutoHotkey.iniがデカくなりすぎている人、 速度とか低下するもん?それとも、殊更軽さが変わらない?
ありがとう!安心して拡張に励めるよ。
大して参考にならないと思うが、 ホットキー型ランチャの部分のスクリプト2KBと、 普段使ってるマウスジェスチャー・仮想デスクトップ・MinimizeToTray・IntelliSenseその他もろもろ32KBの 起動直後のメモリ使用量をConfigInspectorで見てみたが、1MBほど増加している。 仮想メモリ使用量は大して変わらなかった。 機能を見比べると、1MBくらい大したこと無いか
スプリクト内で使ってる変数の数とか格納内容によってメモリ使用量は変動すると思われ まぁスクリプト内容そのものもオンメモリに取られてはいると思うけど、 コメント多く書くとそのぶんメモリ使用量増えるのかとかはちょっと気になるな
そうだね。 配列を大量作成するIntelliSenseを切ったら300KB程減った。 …ホットキー型ランチャの部分のスクリプト2KBと ホットキー型ランチャの部分のスクリプト+コメント文64MBで比べてみた。 おお、全く同じだ。 さすがにスクリプトの解釈に時間が掛かったが
>>172 おぉわざわざ調べてくれたんか、検証乙
まめにコメント付けるべきか省くべきか迷ってたんだけど
起動速度には多少影響あってもそれ以降は問題なしってことなのか、安心した
ちなみにIntelliSenseってのはどこのスクリプトだろう
ググッて見たけどわからんかった。自作でつか?
d Tooltipに構文ルール表示してくれるスクリプトか ちょっと確認したい時にヘルプ立ち上げなくてすんで楽そう こういうのはエディタの機能領分だと思ってたが、Autohotkeyでやっちゃうのか、スゴイな
Alt + ^ キー に Alt + F12 を割り当てたいのですが、 どのように書けばよいのでしょうか? !^::Send,!{F12} じゃだめなので よろしくお願いします。
環境
178 :
176 :04/12/31 07:42:49 ID:XFMh0Zp+
!sc00d::Send,!{F12} でいけました。 スレ汚してすみません。
ここが盛り上がらないのは流行らせるページに2ch型掲示板があるせい
wiki が欲しい
>>179 本気でそう思ってるならあっちに書けばいいよ
自分ぬるさんではないけど、正直盛上がるならどっちでもいい …でもあっちは書込み度更に低いしなぁ
質問やスクリプト晒しは向こうでやって、こっちは他ツール儲との罵り合いとか、 教えて厨叩きとか、Dat落ちで読めなくなっても困らない内容に使うってのはどうだ。
185 :
名無しさん@お腹いっぱい。 :05/01/08 16:50:48 ID:bpoRGJtM
一定時間操作しなかったら、特定のアプリケーション(ACCESS)を終了させたいのですが サンプルを利用して下記のスクリプト実行したのですが、うまく作動しません どこが悪いのでしょうか? #Persistent SetTimer,ExecWWWC,60000 return ExecWWWC: If A_TimeIdle < 100000 Process, Close, -MSACCESS.EXE return WinXP HOME OfficeはXPです お願いします
>>185 If A_TimeIdle < 100000
↓
If A_TimeIdle > 100000
Process, Close, -MSACCESS.EXE
↓
プロセス強制終了するよりWinCloseかWinKill使ったほうがいいと思う
あと、A_TimeIdle は「アクセスlを操作しなくなってから」ではなく
PCの操作をしなくなってからの時間だけどその辺の認識はOKなの?
それと動作に関係ないけどサブルーチンの名前はCloseExcelとかに変えたほうがいいかも
まず SetTimer,ExecWWWC,60000 → SetTimer,closeACCESS,1000 /*一秒ごとに監視*/ ExecWWWC: → closeACCESS: If A_TimeIdle < 100000 →If A_TimeIdle > 100000 /*100秒無操作だったら*/ にかえる あとファイル名ちがくない?アクセス使わないから知らないけど あとifの後って{}いらないのかな?俺は必ずつけるけど…
188 :
名無しさん@お腹いっぱい。 :05/01/08 21:35:10 ID:bpoRGJtM
>>186-187 有り難うございます
#Persistent
SetTimer,closeACCESS,60000
return
closeACCESS:
If A_TimeIdle > 1000000
WinKill,Microsoft Access
return
でウィンドウを閉じる事はできました。
ただ、アクセスのフォームによってウィンドウのタイトルの名前が変わるので、
WinKill,Microsoft Access では不都合です。
やはりプロセスの終了を試してみましたが、
Process, Close, -MSACCESS.EXE
ではなぜか終了できません。
>>187 さんの言うとおりプロセス名がちがうのでしょうか?
使ってないから知らんけど、 SetTitleMatchModeでなんとかなるんじゃまいか?
名前の最初にハイフンが付いた実行ファイルなんてあるのか?
191 :
187 :05/01/09 05:37:19 ID:X+WIco3/
俺もそれが言いたかった…
192 :
186 :05/01/09 06:45:29 ID:uWx5n3Wv
CloseExcelってなんだ、トンチンカンな回答してどうするよ漏れ orz
>>187 CとかでもそうだけどIFやLoopの{}は中身が1行(1命令)のみの時は省略可能みたい
>>188 Process, Close使ったことないのでようわからんが
タスクマネージャのイメージ名でそれっぽいもの探すか
WinGetでプロセス名調べて見たらどうだろう
名前の最初にあるハイフン削ってみたら?
リロードを繰り返すと、パス文字列が増えていくんだが・・・ AutoHotkey.iniに Path = %Path%;D:\hoge1 Path = %Path%;D:\hoge2 Path = %Path%;D:\hoge3 ・ ・ ・ 最後に EnvSet, Path, %Path% としてる。 書き方がまずいのかなあ? あとパスには文字数制限があるのかなあ? 一応、AutoHotkeyを再起動すると直りますけど・・・ Version 1.0.24 Windows XPです。
リロードはAutoHotkeyからAutoHotkeyを起動する形になるので、 環境変数がそのまま引き継がれるような気がする。
確かPATHの文字数制限は127バイトだったかな DOSの時代の話なので今は違うかも。 文字列が増える件は>195っぽいけど、 Path=%Path%;D:\hoge1 とかやるのは混乱の元になると思う。 %Path% で環境変数PATHを参照してしまうので、Autohotkey内部で使う変数名に 環境変数と同じ名前付けるのは止めたほうがいい。
猫まねきから乗り換え完了 メモリ使用量が寝こまねきの半分くらいで、出来ることは格段にこっちが上 ただのキーカスタマイズソフトだと思っていたんだが、何のソフトか分からないくらい何でも出来るのね X Wheel もAutoHotkeyで代用したいけどこれはちと大変そうだなあ 問題点はスクリプト作るのが楽しすぎて時間を忘れるってとこだろうか
「ホイール加速」だけ実現できれば、漏の場合は「X-WHEEL」の役割が終わるなぁ。
199 :
194 :05/01/11 18:26:03 ID:qMv34yIJ
>>195 >>196 返信遅れました。
その様な感じみたいですね。ご意見ありがとうございました。
あと環境変数をそのままダイレクトに使うのは混乱の元なので、止めました。
200 :
名無しさん@お腹いっぱい。 :05/01/13 14:44:55 ID:nDw3vddS
AutoHotkey1025age
zipで配布してくれねえかなあ
GPLなので流行らせるページに奇態 ついでに日本語化も
203 :
名無しさん@お腹いっぱい。 :05/01/13 20:52:49 ID:sBv98Ic3
日本語化なんてする必要あるか? 中学卒業してれば読めるレベルだと思うが
向こうのソフトの常駐サイズ見て思うんだけど、コンパイラそのものが軽めだったりするのかな 日本語環境でリコンパイルしたらメモリ常駐量が増えたりしたら…嫌だなぁ ヘルプなどのドキュメントだけ日本語化してくれたら… 流行らせるページのDL版HTMLで間に合ってしまうな
v1.0.25バージョンうpしたら今まで作ったのスクリプトエラー出まくりで 起動できなくなってもうた(つд`) XP SP1a if ErrorLevel <> 0,return とか、行分けないとダメっぽい しかし if ErrorLevel <> 1,return はOKなんだよね、何なんだろ
IfNotEqualにする
>>206 0以外でも
OK: if A_ExitReason=Single , xxxx
NG: if A_ExitReason=Logoff , xxxx
だったり。そもそもこれってイリーガルな記述だったのかな
早まって本家に書込んできてしまったんだけど
等号、不等号のが分かりやすいので、至る所で使ってる死 ⊂⌒~⊃。Д。)⊃
全部修正するようだとかなりしんどい
if ErrorLevel <> 0 return みたいな書き方してたから助かった。
日本語化でユニコード対応なんてできるわけないじゃん
211 :
205 :05/01/14 18:55:23 ID:zmmQYEjF
ExciteのWeb翻訳でエラるので、OCNでリトライして見たら… ChangeLogに思いっきり書いてあった orz Chrisさん えろうすんません。
マウ筋から移行中。 出来ることが多過ぎだなこりゃ。
213 :
名無しさん@お腹いっぱい。 :05/01/17 03:00:56 ID:E7AfJ3rN
exe化した実行ファイルを逆コンパイルしてソース表示するのってどうやればいいの? ソース間違って消しちゃって。パスは掛けてない
公式のどっかに逆コンパイラがある
昨日導入した初心者です スクリプトごりごり書いているのですが こういう事はできるのでしょうか Windowキーだけを押した時は無視 (スタートメニュー出さない) Windowキーと何かを押した時は実行 (Windowキー + D でデスクトップ) LWIN::return #D::(Windowキー + Dと同じ処理) と登録してもだめでした よろしくお願い致します
ここまで書いて諦めた。 inputのところで上手く動いてくれん。 LWin:: send, {LWin Down} input, output, I L1, {LWin Up} if output <> send, #%output% return
公式でZIP配布キター
C-\ キーに 全角/半角 を割り当てるために ^\::Send,{vkF3sc029} と書いているのですが、 これをメモ帳が Active なときは無効にして、 それ以外のときは有効にしたいのですが どのように書けばよいでしょうか? よろしくお願い致します
zip キテタ Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!!
221 :
216 :05/01/20 16:42:09 ID:6X76Nm0d
>217 スクリプトありがとうございます 後は自力で頑張ってみます
>219 こんな感じ? ^\:: WinGetClass, winclass1 , A if winclass1=Notepad send,{vkF3sc029} return
223 :
222 :05/01/20 22:50:27 ID:8GMFYf6M
>219 本文読み間違えました(;´Д`)スミマセン これでどうでしょ。 ^\:: WinGetClass, winclass1 , A if winclass1<>Notepad send,{vkF3sc029} return
^\::     IfWinNotActive, ahk_class Notepad         send,{vkF3sc029} return
WheelRedirectorやWheelPlusみたいにマウス直下のコントロールに ホイール情報を送れないもんかね。 WM_MOUSEWHEELをコントロールにPOST すればいいらしいが、 常にMouseGetPosし続けるのは重すぎる…
加速とか気にしないのであれば WheelUp:: WheelDown:: で引っかけて MouseGetPosすればそんなに重くないと思うが 前に試した時はアプリによってMOUSEWHEEL、WM_VSCROLLと 使い分けないといけない感じで結構面倒そうだった あと xyzzyとかスクロールできないものもあった。
~WheelUp:: MouseGetPos,,,winclass, newclass IfWinNotActive,ahk_id %winclass% winactivate,ahk_id %winclass% if newclass<>%oldclass% ControlFocus ,%newclass%,ahk_id %winclass% oldclass=%newclass% return こんなんじゃあかんの?ホイール加速も間にかませて使ってるけど普通に動いてる たまにホムペの画像とかにひっかかるんがよくわからん 変数の比較も結構負荷かかってるんかなぁ。。動いてるからまあえっか。。
228 :
219 :05/01/21 05:01:54 ID:pF8nqZbc
>>227 それだとマウス下のウインドウがアクティブになってしまう
フォーカスは奪わないまま裏でスクロールさせたいってことじゃないの?
ちなみにControlSend だとウインドウ自体アクティブなってしまったり裏で動いたりで
効いたり効かなかったりで安定しなくて、PostMessage使ったほうが良さげな感じだった
最近のバージョンでは試してないけど
おまえらすごいな!ぜんぜんんわかんねえ
>>229 PostMessageだとWheel Redirectorでいうところの互換モードとかの扱いがあるので
アプリごとの設定を覚えさせたりかなり面倒そう
>>231 だったら全て互換モードを(WM_VSCROLL)使えばいいかっつーとそうでもないのが
また面倒なんだよね。ExcelとかはWM_MOUSEWHEELじゃないとあかんみたいだし。
Excelで思いだしたけど、現状だとMDI子ウィンドウは操作できないよね。
シェードにしてもリレダイレクトホイールにしてもフォーカスのある子ウィンドウしか制御できないぽい。
233 :
225 :05/01/22 00:29:49 ID:VfzxxRIk
重かったのは漏れのゴッタ煮糞スクリプトにぶち込んでたせいだった(;´Д`)
一応、加速付き。かっ飛びスクロールが好きだから増加分とリミットは変えてくり。
#SingleInstance
#HotkeyInterval 5000
#MaxHotkeysPerInterval 130
;#NoTrayIcon
SetMouseDelay, -1
CoordMode,Mouse,Screen
Hotkey,WheelDown,Wheeling
Hotkey,WheelUp,Wheeling
Wheeling:
If (A_PriorHotkey <> A_ThisHotkey || A_TimeSincePriorHotkey > 50)
delta = 120
Else If delta < 1000
delta+=120
IfEqual,A_ThisHotkey,WheelDown
wParam:=-delta*65536
Else
wParam:=delta*65536
MouseGetPos,x,y,hwnd,cnn
lparam:=y*65536+x
PostMessage,522,%wParam%,%lParam%,%cnn%,ahk_id %hwnd%
;PostMessage,277,%wParam%,%lParam%,%cnn%,ahk_id %hwnd%;WM_VSCROLL
return
>>232 それとWM_VSCROLLだと▼▲押したときのスクロール量がアプリによって結構違うのも痛いな。
エディタでスクロールさせたら1行毎だったしorz
>>233 v.1.0.24 なのですが、試したところエラーがでました。
うpだてしる これからは 1.0.25以降じゃないと動かないコードたくさん貼られるぞ
or(||) って 1.0.25 からかも新米。つか、エラー内容書けよな。 それなら If (A_PriorHotkey <> A_ThisHotkey || A_TimeSincePriorHotkey > 50) delta = 120 ↓ If (A_PriorHotkey <> A_ThisHotkey) delta = 120 Else If (A_TimeSincePriorHotkey > 50) delta = 120
ネ甲光臨!キター
なるほろ。ホイール加速は、こうやってするんだ。
>>233 乙
unDonutだとマウス下のClasNNが拾えないみたい?
MouseGetPosのあとに
WinGetClass,cls,ahk_id %hwnd%
if (cls == "WTL:Donut")
    cnn:= "Internet Explorer_Server1"
で強制的にコントロール指定したら何とか動いたみたい
XP SP1 v1.0.25.5
PostがだめなアプリもSendやMouseClickはOKみたいなので
アクティブ時はそっち使うようにしてもいいかも
240 :
名無しさん@お腹いっぱい。 :05/01/24 17:41:23 ID:TlkEn5+f
1.0.25.06 age?
241 :
233 :05/01/26 02:28:05 ID:gpg/BsZT
結局このスクリプトは常用してないなぁ(藁 いちいち対応させるのが面倒でだし。 設定GUI作るのも面倒だ。
>>241 お前さんが張ってくれたのと前に手前で作りかけだったのと混ぜ合わせて
今ゴリゴリ作ってまふ。
設定GUIは面倒なんで漏れもあんまマジメに作る気はないんだけど
もうちっと推考したら うpろだのほうに上げてみるわ
>>242 そうか。適当にガンガッテ栗。できたらどこぞにうpしてくれたら嬉しい。
やっとahkに慣れてきて、今自分用のスクリプト組んでるけど、この構文は正直いって厳しい。
比較や呼び出しに一時変数に格納したり、あとは配列の扱いも…
実質的に仮想配列使えるからいいけどさ。
もっさりしないためにこういう仕様なのかもしれないけど。
if else が多すぎて疲れる。
で、いま作ってるのがマウスが端にくるとdockが出てくる部分で、
LRTBに対して汎用に使える判定部分が↓。
なんとかすっきりさせることが出来たが、さて…
MouseGetPos, x, y, hwnd, cnn
Check_Left := ( x < ( DesktopLeft + Sensitivity ) && DockPosition == "Left" )
Check_Right := ( x > ( DesktopRight - Sensitivity ) && DockPosition == "Right" )
Check_Top := ( y < ( DesktopTop + Sensitivity ) && DockPosition == "Top" )
Check_Bottom := ( y > ( DesktopBottom - Sensitivity ) && DockPosition == "Bottom" )
if( isGuiShow != 1 && Check_%DockPosition% )
{
DockX := (DesktopLeft-1) * (Check_Right != 1) + (DeskTopRight - DockWidth + 1 ) * ( Check_Right )
DockY := (DesktopTop -1) * (Check_Bottom != 1) + (DeskTopBottom - DockWidth + 1 ) * ( Check_Bottom )
DockW := (DesktopRight-DesktopLeft) * ( Check_Top || Check_Bottom ) + DockWidth * ( Check_Right || Check_Left )
DockH := (DesktopBottom-DesktopTop) * ( Check_Right || Check_Left ) + DockWidth * ( Check_Top || Check_Bottom )
Gui,Show,x%DockX% y%DockY% h%DockH% w%DockW%
:
}
うーむ、どうやらマウス下ウィンドウのコントロールClassNNが正常に取れないっぽい? CoordMode,Mouse,Screen MouseGetPos, X ,Y, OutputVarWin, OutputVarControl >239でDonut云々書いたけど、MDIアプリの場合、マウスポジション下に 複数子ウィンドウが重なってたりすると最前面の子ウィンドウ上を透過して 下の子ウィンドウ(or MDI親ウィンドウ)のコントロールが入ってくることがある。 最前面かどうか見ないで最初に見つかったモノを返してるっぽい気がする。 V1.0.25.08 NT4SP6 / XP SP1a っつーわけでMDIアプリのホイール全滅くさい orz 何かうまい対策ないっすかね。
PnirのIEコンポもそうだし、Beckeyのメールビューとかもそうだし…
おまけに、Janeの板一覧のカラムはVM_HSCROLL送るとスクロールするわで
もう大変で漏れは挫折したんよ。 ~~
コントロールの多層構造をちゃんと把握してるんかいな?と思うときがある。
プニルで
>>233 試してたとき、全くスクロールしないときがあって何でかな?と思って
他の窓にフォーカス変えて、また戻したらスクロールしたり、と。
やや挙動がおかしいなと思ったことはあった。
窓使いの憂鬱みたく、コントロールの重なりを取得・指定できたらいいんだけど。
たとえば、explorerのアドレスバーなら
/explorer\.exe:CabinetWClass:WorkerW:ReBarWindow32:ComboBoxEx32:ComboBox:Edit/
みたいに、きちんと取得できるし、指定もできる。
AHKだとEditだったりComboBoxだったりと不安定なときがちらほら…
WIndowSpyはmayuの方を信頼してたりする。
色々出来る代わりに器用貧乏のような感じ。
まぁでもこれからのverうpに期待はしてるけど。
メールビューって3ペインの右下のこと? Becky!でホイールトラブったことはないけど。 あとうちのJaneDoeViewだと板一覧はVM_HSCROLLでも無理だったorz スレ一覧、トレース、スレ欄はOKなのになあ V1.0.25でifや数値計算あたり楽できるようになったので 自分的にはかなり助かってる。
>>246 > メールビューって3ペインの右下のこと?
そう。
AHKのWindowSpyで見ると、ペインの枠ギリギリが DanaEditWindowClass1 で、
その内側の文字のある本文が #327703 。
で、スクロールバーのあたりじゃスクロールしたけど、本文の部分は無反応。
ここまで書いてもう一度試したら、スクロールするし…
と、思ってたらまた動かん…
プニルでもそうだったけど、子ウィンドウの場合、
何回かリサイズすると反応することがあったんで
最大化←→元に戻すを数回繰り返したらまたスクロールできた。
なんだかなぁ…。
AHKで、キーを押したときと、離した時を 別のイベントとして拾うのは無理ですか?
updateおおすぎよ
Version 1.0.25.09 >Launching a script should no longer switch you out of a full-screen application such as a game. In addition, there should be less disturbance/redrawing of the taskbar. [thanks Tekl] >Improved "Control Choose/ChooseString" to work on multi-select listboxes. >Added "ControlGet List" to retrieve the contents of a ListBox or ComboBox. [thanks Rajat & mallow] ZIP配布してくれるようになったのはいいけどソースコードがインストーラ付きのみになったのは どうしてだろう。それこそZIPだけで良さそうな気がするけど。
秀丸でAutohotkeyスプリクトを編集してる人向け Tipsなど (EmEditorに移行しようと色々見直しているうちに気づいてしまったのだが これらの機能はEmにはついてないっぽい?) ・Include先ファイルをタグジャンプで一発オープン #Include MyScript\hoge.ahk → NG #include MyScript\hoge.ahk → OK ※相対パスもOK ただし"include"は全て小文字でないとダメらしい。 ・ラベル(hotkey:: label:) を行の強調に指定する。(正規表現はONで) ^[^;\t].[^:^;]*:(;|\t| |$) → 行の強調1 ^[^;\t].[^:^;]*::.*$ → 行の強調2 にそれぞれ割り当てておく :と::で色分けしないなら、^[^;\t].[^:^;]*:.*$ だけでOK 秀の強調は単純な色分けだけでなくマークアップとしても機能するため ・上/下の強調行 でラベル間ジャンプ(Ctrl+↑/↓などに割当てるのがお薦め) ・強調表示一覧の枠 ・ダイレクトタグジャンプ/バックタブジャンプ などでCの関数ジャンプみたいな使い方が可能になります。 ・サブルーチンへダイレクトタグジャンプで一発移動 対象ファイル: *.ahk;autohotkey.ini ルール:自動で tagsファイルを作成すると Gosub,hoge でダイレクトタグジャンプすると hoge: に飛んでくれる hoge:でバックタグジャンプすると Gosub,hogeに戻ってくれる ・あと 前/後の編集マーク をAlt+↑↓などに割り当ててとくと便利かも 変更された行(行番号が太字のところね)に素早く移動できます。
>>251 > これらの機能はEmにはついてないっぽい?)
ないよ。ラベルジャンプとかはマクロ(wsh)で強引にやろうと思えば出来るけどキー割付も面倒だし非現実的。
↑の機能が常用してるものなら乗り換えはよした方がいいんじゃない。
>>252 情報サンクス、結構本気で乗り換える気だったんだけど、どうしようかな
一応Em軽く使ってみて秀より良いなと思った部分も揚げとくね
・AutohotkeyのパッケージにEm用の強調言語ファイルが含まれているので
自分で一から強調言語育てていかなくていい。
・範囲コメント /* */ と 行コメント ; を混在できる(秀はどちらかしか選べない)
・強調文字列カラーを9種類指定できる
(秀は強調4、特に強調2、行の強調2、しかも;をコメント色にするのに1個潰してる orz)
・検索文字列のハイライト
・ファイル別の設定を、標準からの差分って形で指定できるのがスゴク(・∀・)イイ!!
まるおエディタが行コメント、範囲コメント共存不可なのね。俺的には致命的かも。 外部ファイルから強調語インポートできるんならAHK公式からスタイルファイル落として やればいいとおもうけど。単なるテキストファイルだから。 レジストリならそれこそAHK使って書き込むのも手か?w まぁEmユーザが増えると嬉しいけど、慣れた環境を変えるのは結構大変だと思うしねぇ… wshを割と使ってるならマクロは取っつきやすいとは思う。とはいってもperlやrubyは対応してないけど。 サブルーチンジャンプかぁ。いいねぇ。画面分割と行ブックマークとでなんとかやっていけるけどね。 あと、AHK公式のスタイルにラベル強調はいってないから ^\s*\w+:{1,2}(?!=) って感じで行を強調表示してラベルとしての視認性上げてるくらいかな。
255 :
名無しさん@お腹いっぱい。 :05/02/09 21:31:54 ID:YiiBiFhj
ネタねぇなw 保守がてらチラシの裏にでもするか。 ahkあると単機能ツールのいくつかはいらなくなるな。 - 単純に - SendToにぶち込んでファイルのパスを取得してClipboardに入れるやつ - 同じくSendToから呼んで任意のフォルダに移動させるやつ。 - メモ帳トラッパー(Notepad.ahkをコンパイルして %systemroot%へ) - 常駐してexploreの表示状態を特定のモノにさせるやつ - キーを送るやつ - キーボードで音量変えるツールやコマンドラインから音量変更するツール - コマンドラインから電源落としたりサスペンドさせたりさせるやつ ガンガレば代替させられるかもってやつは - クリップボード履歴(テキストオンリー) - WheelRedirect(漏れの作ったヤツは動きが怪しいがw - マウスジェスチャ - ランチャ とはいっても、タスクトレイのアイコンは全く減っていないのだがw
そこまでやるのしんどいから使いなれた常駐物で済ましてるな
漏れは主に常駐メインで ・ タスクバーと重なったら押し戻す ・ キーボードで WinMove/Resize/Snap ・ qdirもどき ・ Windowシェード ・ RedirectWheel ホイールは Ver1.0.25.10で MouseGetPosにオプション追加してもらったので ガンガレば結構まともに動作するものが作れそう。 ただセッティング部分作り込むと手抜きでもメンドイがなl 非常駐物は(スクリプトの性質上)どうしても起動が遅いのがネックかなぁ 環境変数セットして指定のexe起動とかできるので、batの代わりに使おうと 思ってた時期もあったんだけど。 > - 常駐してexploreの表示状態を特定のモノにさせるやつ TTBaseのプラグインなんかにあったやつみたいのかな? よければ詳細キボン
>>257 CabFixer や SetDetail とかに相当するやつ。
TTBaseだと、Explore Contかなぁ…。
SetTimer で窓監視のプロセスを入れて、explorer なり開くダイアログだったりしたら
Send でキー送るなり、 PostMessage するなりして詳細表示にしたり窓位置・サイズを変えたりする。
TTBaseといえば、TTBaseのプラグインって殆どAHKで実現できるのが多いね。
そういえば、SysMenuとか閉じる([X])ボタンとかってクラス指定してトラップ出来る?
>>257 まとめたい機能がいっぱいだ…よければ流行らせるあぷろだで投稿してほしい
>>258 [X]は漏れはMouseGetpos & SysGet でポジションチェックしてる
SysMenuはタイトルバー右クリック時に Alt送ってキャンセルとかくらい。
SysMenu自体を操作する方法は不明、つかメニューへのPostって全然わからん
エクスプローラ制御でも Send, !fwfとかやってるし orz
CabFixer とかは具体的に何送って制御してんのかな
漏れはahk始めるにあたってTTBaseのパクリから始めてるので(w
Autohotkeyはああいう小物系は結構いけるね
>>259 一度にあちこち手をつけてしまったので、どれも実装が中途半端なんよ。
もうちっと整理してたら少しずつあげてみる。
猫まねきや窓使いの憂鬱みたいに キーボード置換をメインに考えているんだけど、 そういう意味でこのソフトウェアの機能・使いやすさはどうですか?
そういう用途ならmayuの方が融通が利く なんか扱いが難しいから使ってないけど。
>>261 やりたいこと次第かねぇ。単純にキー入れ替えだけなら、レジストリいじるだけってだけでも実現出来るし。
猫まねきは知らんから繭とAHKの比較だけ書く。
窓ごと、もしくはコントロールのクラスごとに動作を指定したいっていうんなら、結論から言えばどちらでも出来る。
手間さえ惜しまなければ、どちらも2ストロークキーや任意のキーをモディファイアキーにしたりも出来る。
↑を、踏まえた上で、
繭
○ 正規表現を用いた窓・クラス判定が出来る。コントロールの重なりも考慮されている。
○ ドライバレベルでの実装のため他のアプリに制御が来る前にキーをトラップできているので
あらゆるアプリでのキーバインド変更が可能。(無理なヤツもあるかもしれないけど漏れは知らない)
○ 国産ソフトなので、IMEのon/offや変換中かどうかなどでも挙動を変えることが出来る。
○ キーバインドに特化したソフトなので、AHKよりは定義ファイルをいじるのが楽かも(人によるとは思う)。
○ 様々な日本語入力メソッド(AZIK,さくら,TCodeとかか?よく知らんけど)に対応した定義ファイルが出回っている。
○ Unix使いだった人は幸せになれるかも。
×標準ドライバでないキーボード・マウス(PS/2)ドライバの場合うまく動作しないことがある。
×AHKと比較での話だが、単なるキーバインド変更ソフトなのでそれ以上のことは無理。
(外部でWSHなどと連携という手はあるが、色々限界はある)
AHK
○ キーだけでなく、マウス・ジョイステックにも対応。
○ スクリプトなので複数のアクションを定義したり、条件分岐したりも可能。
○ 内部のスクリプトでかなりのことができる。単機能ツールをわざわざ呼び出すまでも無く色々できる。
○ ↑と絡むが、GUIを作成出来るのでユーザに処理を聞いたりも出来る。(MsgBoxなど)
△ なんでも出来る代わりにいちいち全てを自分で書く必要がある。これは柔軟性とのトレードオフか。
× 国産でないので、日本語処理が面倒なことがある。ドキュメントは英語。
>>1 から和訳は見られる。
× ソフトウェアレベルの実装なので、うまくキーを拾えない事がある。
漏れ的には…繭は外せないって結論になったけどね。
>>262 が的確だなorz
ま、もうちょい補足するなら…
繭はアプリ起動と窓操作(最大化・最小化・移動など)はデフォで出来る。
あと、プラグインで多少の機能拡張は可能。
ahkはexe化してUSBメモリとかに入れればすりゃどこでも同じ環境にできるってのは
場合によってはかなりのアドバンテージかと。管理者権限のないPCでつかうとか。
265 :
261 :05/02/10 20:07:49 ID:rgpCohSH
とても参考になりました。詳しく書いてくれてどうもありがとう。
現状は mayu を UNIX 風キーバインド+窓ごとのいくつかの拡張
の目的で使ってるんだけど、機能上不満はないものの、
ロジマウスやタッチパッドの関係で動作が不安定なときがあるので、
代替として考えてました。
思った以上に高機能な感じですが、単なるキー入れ替えソフトでないので
結構カスタマイズに時間がかかりそうですね。
>>263 さんは mayu と併用してるような感じなので、
とりあえずどんな感じかみるために自分も併用してみます。
$!f:: IfWinExist, Untitled - Notepad WinActivate Else Send,!f Return こんなようなものを書いたんですが(これは例ですが)、 メモ帳が存在しないときにアクティブなウインドウの メニューを開くためAlt+Fキーを押すと、 メニューバーが一瞬開かれてすぐ閉じてしまいます。 ElseのあとをSend,{ALTDOWN}f{ALTUP}とかSend,!f{DOWN}とか いろいろやってみたのですがうまくいきません。 上記のような書き方は間違っているのでしょうか?対策はありますか?
うちですぐ閉じちゃった奴は Send,{AltDown}f でとりあえず開いたままになったけど
>>266 SetKeyDelay, 0, 100 位をセットする手もあるよ。
>>265 スレ違いだが、繭は路地みたいなマウスドライバ入っているとうまく動かないことがあるよ。
つーのも、PS/2(丸いコネクタ)キーボードのドライバはマウスドライバも同時に置き換えるため。
ロジマウスといえば、logigamer という、アプリによって ボタンの役目を変えられるソフトがあるんだけど、 その代用になるね。 ただマウスの速度とか加速の on off はかえるの無理かな。
1.0.26 キター。 ImageSearchなるものが追加された模様。 UWSCにあるやつみたいなやつか。
272 :
253 :05/02/13 04:14:27 ID:pHsNHbEE
互換シェル(bbLean)にしたら、WinMaximizeが効かなくなった… まぁ、プラグイン(bbKey)でなんとかなるから実害はないけど。
>>272 GJ!
これで秀丸でAutoHotkeyの作業がしやすくなりました。
>>274 (・∀・)人(・∀・)ナカーマ
お役に立てたなら幸いです。
ただ秀は次期バージョンで強調回り見直されるみたいなので
hilightのフォーマット変わっちゃわないかちと心配
AutoHotkey\bin\Extras\Editors\Syntax内のテキストの活用方法とか 自動補完のついてるエディタだと補完辞書として使えるので便利そうだ EmEditor AutoCompletmentプラグインで自動補完が利用できる模様 CommandNames.txt, Keywords.txt, Variables.txt, Keys.txtをインポートすればOK サクラエディタ 本体の機能で利用可能 (タイプ別設定-支援-入力補完機能) 単語ファイルの指定は1個だけなので上の4ファイルを一つにまとめとく必要あり 秀丸 ConpleateXマクロで利用可、詳しくは>272のリンク先参照 xyzzy abbrevとかdabbrevとかが補完に相当する機能らしい。 lispわからんので詳細は不明 TEditor系 よくわからんが j( ゚ー^) WSH補完クン とかでは対応不可なんだろうか 某管理人氏がVxEditor使いらしいので、いづれ改善されるかも?
VxEditorは富強に補完スクリプトがあるよ
おいこれいいじゃないか! ホットキーなんていらねーよと馬鹿にしてたが、 柔軟なカスタマイズ性と多機能性に驚いた。 CD のトレイの開け閉めまでできるとは気に入った。 何がしたいというのが今あるわけではないが、 いろいろできそうなので夢がひろがリング。 常駐メモリもいまどきにしては少ないし。
色々出来る器用貧乏のような気がしないでもないがね。 WSHでやっていたSendkeyなんてもう使えない罠w
Craftとあふの連携でとりあえず満足していたがまたりと導入してみよう。
>>281 漏れもその組み合わせで満足してるなあ
なんか便利な使い方あったら教えてくれ。オレも試してみよう
283 :
名無しさん@お腹いっぱい。 :05/02/23 08:01:10 ID:4rvGJl80
1.0.28 age 個人的に目を引いたのはahk_pid とキーUpイベントサポートかな mButton up:: tooltip, up mButton:: tooltip,down マウスUpで使えばドラッグキャンセル考えなくて良くなりそう 単独ShiftとCtrlは元々Upのタイミングで発生してたから Downタイミング取れないみたいだけど
ダブルクリック実装してくれたらX Wheelから乗り換える。
キーうpきたかー。
これでCapsLockをCtrlに交換しつつCapsLock自体にも機能を割り当てられそうだな。
>>284 具体的に何をしたいのか知らんけど出来るよ。
ホットキーイベントとしてはない
key double tapの要領でやればそれっぽい事は可能だが
ドラッグやシングルクリック時の処理も入れ込んでやらないといけないし
結構面倒だと思う
>>285 Lockキー系はGetKeyStateでもキーUP状態拾えなかった気がするが
その辺改善されたんだっけ?
>>287 それは知ってるけど
それじゃ実装されてるとは言わないよ
いや、漏れ 285じゃないから むしろ突っ込みのつもりだったんだが
外人さんは Ctrl と CapsLock 入れ替えるような 使い方しないのかな。 デスクトップはともかくノートでは入れ替えないと どうしようもなく使いにくいと思うんだけど。
NECとか国産のPCは昔はAの隣がCtrlなのが多かったな。 いま主流のキーボード(A脇CapsLock)はIBMのが元だからでないのかねぇ。 いまだにPC/AT互換機とかOADG仕様とかいってるわけだしw
>>285 流行らせるページの中の人によるとうまく行かないらしい
*CapsLock::Send,{LCtrl Down}
*CapsLock up::Send,{LCtrl Up}
ここができないとキー入換えしたい派は絶対取り込めないだろうから そこが惜しいね 個人的にはCtrlの位置は慣れちゃったから別にいいんだけど 滅多に使わない割にいい位置にあるCapsLockは有効活用したいかな
294 :
名無しさん@お腹いっぱい。 :05/03/01 15:22:58 ID:LDpcqQ8b
1.0.29出てるんで一応age
Fixed key-up hotkeys to work on the neutral keys Control, Shift, and Alt. [thanks jonny] キタ━━━━━(゚∀゚)━━━━━!!!!
ClipboardAll ついにキタ 種類とかは見れないみたいだから一時待避の復旧以外はあんまり役にたたんのかな? でも これでSend, ^c で選択文字列をどうにかしたあとは完全復旧できるようになった。
Tww = WindowsForms10.Window.8.app45;ウィンドウクラス名 Twc = WindowsForms10.SysTabControl32.app451;タブのクラス名 $WheelUp:: IfWinActive,ahk_class %Tww% MouseGetPos,,,,cn IfEqual, cn, %twc% Send,{F2} return return $WheelDown:: IfWinActive,ahk_class %Tww% MouseGetPos,,,,cn IfEqual, cn, %twc% Send,{F3} return return 2chブラウザのtwintail2でホイールによるタブ切り替えを実装するために上のようなコードを 書いたんだけど、この条件を満たさないときにWheelUp&Downをそのまま送る様にするには どんなコードを追加すれば良いのん? 一応環境書いておきます。 XP Pro sp1 AHK 1.0.29
IfWinActive,ank_class %Tww% hoge else Send,{WheelDown} return
299 :
297 :05/03/03 20:05:42 ID:un1waaJf
>>298 レスd
自分もそれと似たようなコードを書いて、elseに対応するifが無いぞというエラーが出るので
どうしたもんかと思ってたんですが、どうやら原因はreturnを入れすぎていたことみたいっす。
if文の後には必ず書かなきゃいけないと思い込んでました。
ということで、正常に実行できたスクリプトも後学のために貼っておきます。
もっと効率の良い書き方があったら教えて下され。
Tww = WindowsForms10.Window.8.app45
Twc = WindowsForms10.SysTabControl32.app451
$WheelUp::
IfWinActive, ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %Twc%
Send,{F2}
else IfWinNotActive Or IfNotEqual
Send,{WheelUp}
return
$WheelDown::
IfWinActive, ahk_class %Tww%
MouseGetPos,,,,cn
IfEqual, cn, %Twc%
Send,{F3}
else IfWinNotActive Or IfNotEqual
Send,{WheelDown}
return
>299 >IfWinActive, ahk_class %Tww% >MouseGetPos,,,,cn >IfEqual, cn, %Twc% >Send,{F2} この書き方だと アクティブウィンドウがツインテールじゃないときも IfEqual, cn, %Twc% 以下を実行してしまうので{}で括ったほうがよい WheelUp:: WheelDown:: /* フォーカスがツインテールのタブ上にある時は特殊処理 */ IfWinActive, ahk_class %Tww% { MouseGetPos,,,,cn IfEqual, cn, %Twc% { ifEqual A_Thishotkey, WheelUp, Send,{F2} Else Send,{F3} return } } /* それ以外は普通にホイール */ Send,{%A_Thishotkey%} return >else IfWinNotActive Or IfNotEqual これはちょっとわからん、つかこんな書き方ってできるんだ? エラーにならんのか
302 :
297 :05/03/03 23:51:23 ID:un1waaJf
どうにも初スクリプト書きなんで駄目駄目っぽい(ノ∀`)
>>300 >WheelDown:: <-この Hotkeys というサブルーチンに必要らしい。
そう、それを勘違いしてました。
>>301 うまく動きました。dクス
{}の位置を間違えていたために、エラーが出てしまっていたので付けてませんでした。
C言語より改行やスペースの扱いが難しい…
んで、else IfWinNotActive Or IfNotEqualについてですが、
何か適当にこう書いたらうまく実行できたのでこんなもんなんかなぁと。
自分も何かおかしいとは思うんですが。エラーは出てません。
else if 〜 ってよくやると思うんだが… if (A_ThisHotkey == "〜") Send, boo else if(A_ThisHotkey == "〜") Send, foo else Send, woo case とか switch が使えたらなぁと想うけどね。
The list of upcoming/planned featuresの真ん中らへんに書いてある
書き込み失敗 orz swicth caseは実装予定だよ The list of upcoming/planned featuresの真ん中らへんに書いてある
最近のverUpが激しすぎてついていけね('A`)
>>303 else ifはもちろんアリだが
If
If
else If Or If
なんて書き方が許される言語は初めてだよ…
それとも漏れが使ったことないだけでCとかでも有効なのか?
許されるというよりエラーにならないだけで 意味を成してないんじゃないの。
ミュートのオン・オフをしたい場合どうすれば良いのでしょうか?
Volume_Mute を割り当てる。
1.0.31 - March 7, 2005 1.0.30 - March 5, 2005
流行らせるページの日本語リファレンスに 「タイマーは、前回のスレッドが開始されたときから指定時間後に次が実行されるので、 スレッド終了後から一定時間経過後に次回を実行したい場合、サブルーチンの最初で いったんタイマーをOffにして、サブルーチンを抜ける前にOnにしなおす必要がある。」 ってあったけど これは管理人さんの解釈なのかな 下の書き方だと待たずに速攻で再起動されてしまうみたいなんだが。 WinNT4 SP6 / ahk ver 1.0.30.01 ;2.5秒(+?) かかるルーチンを 2秒アイドルごとに実行しようとしたサンプル #SingleInstance FORCE SaveTime = %A_TickCount% Settimer,Test1,2000 return test1: Settimer,Test1,OFF reStartTime := (A_TickCount - SaveTime) Tooltip, %reStartTime%ms後にタイマ起動したよ Loop,10 Sleep,250 Tooltip, SaveTime = %A_TickCount% Settimer,Test1,2000 return ~ESC:: ExitApp
確かにSetTimerやり直してもカウントはリセットされないな
1.0.31導入。 XButton1とXButton2をShift, Ctrlに割り当ててるのを key up で書き直した。 だいぶすっきりした。 でもダブルクリック検出させるときは A_Priorkey に key up の方が入っててちとハマった。 で、うまくいってたんだが。ちと調子が悪いときがある。 自前のマウスジェスチャー搭載のソフト(JaneやSyleraなど)を利用しているとき、 AHK、上記のソフト、およびマウ筋のいずれかのアクションが認識されないことが多々あった。 3つのうちどれが反応しなくなるのは毎回違う。 リロードしたりソフトを再起動させたりプロパティ開いて閉じたりしているうちに治る。 起動順を変えてみたりしたんだがいまいち原因がつかめない。 3つのマウスジェスチャーで重複するような設定は無いんだけどなぁ。
フックの問題じゃね?
S and S がうまくいかねぇ。 あ、いや、別に常用するわけじゃないんだが、なんとなくやってみたくて。 ごり押しなら可能なのは分かるんだが、スマートに実現出来んもんか…
こんなのみつけた > tp://limz80.at.infoseek.co.jp/program/old_ctrl.html > グローバル・フックという Windows の機能を使用して、CapsLock キーの挙動を見てみた事があるのですが、 > このキーは特殊な扱われ方をしているらしく、普通のアプリケーションやサービスでは > 「キーが押された事は分かっても、キーが離された事は分からない。ついでにキーが押され続けている事も分からない。」キーです。 > キー入力を司る何かのデバイス・ドライバ (多分 IME…ひょっとしたらキーボード・クラス・ドライバや日本語 106 キー・フィルタ・ドライバかも) が > このキーの入力に手を加えているのでしょう。 ctrl と capslock の入れ替えは日本語Windowsでは無理っぽいな。 AutoHotKeyのページのChangeLog 1.0.26 で、capslock のサンプルが載っていることから、 多分英語Windowsでは使えてるんだろうな。 俺はAutoHotKeyを起動しているときだけのキー入れ替えは諦めた。 レジストリでキーマップ変えてる。
入換えは別にいいんだけど(ctrlの位置は慣れちゃったし)
ベストポジションに使いもしないキーがあるのは勿体ないんだよね
>317のリンク先のヲサンも書いてるけど何とか活用したかったんだが、残念
>>316 S and S ってなんだ?よくわかんね
LShift & RShiftってことか?
S and S は Space & Shiftの略。 Spaceキー普通に押して離したらA_Space出力 押しっぱなしで、他の文字キー押すときはシフトキーの働きするヤツ。
320 :
名無しさん@お腹いっぱい。 :05/03/18 09:10:22 ID:pvMfLqSV
GUIのeditboxってIMEの変換中に一文字しか表示されないんだけど回避方法しってるやつ居る? INPUTBOXは大丈夫なんだけど…
>>319 Space Up:: Send,{Space}
Space & a:: Send,+a
Space & b:: Send,+b
Space & c:: Send,+c
:
みたいな?
CapsLock ONの状態でも大文字出力になっちゃうけど
(うちの環境だとCapsONで Send,+A しても小文字出力にはならなかった)
解説が足りなかったな。俺も入れ替えはしてないよ。 CtrlはそのままでCapsLockを色々活用してる。 具体的に言うと、CapsLockと変換キーをレジストリで入替えて、 スクリプトは変換キーで書く。 こんな具合 ↓ 1. まずこれをダウンロード tp://homepage2.nifty.com/winfaq/w2k/capsctrl.reg メモ帳などで開くと、 1d となっている箇所が2箇所あるので、 この値を2箇所とも 79 に書き換える。 2. 保存したファイルを実行すると、レジストリに取り込まれる。 3. Windowsを再起動 (再起動後はCapsLockと変換キーが入れ替わっている。) 4. スクリプト例 sc079 & $j::Send,{Left} sc079 & $m::Send,{Return} sc079 & $c::Send,^c sc079 & $v::Send,^v 大文字固定/元に戻す がShift + 変換 だから注意。 他の人がPC触るときは、レジストリの該当値を削除して再起動の必要あるが、 大文字に固定する人はあまりいなそうだからそんなことしなくても気づかれないかも。 変換キー使う人は他のキーに変えればいいだろ。 レジストリは正しく使えば別に問題ないから毛嫌いしなくてもいいだろ。 キーボードドライバいぢってそうな訳分からんソフトいれるよりいいと思う。
GPLなんだし、 そこらへんの日本語環境特有のバグをフィックスしたAutoHotKeyJPみたいなのキボン…
S and S、結構おもろいかも aList=1|2|3|4|5|6|7|8|9|0|-|\|q|w|e|r|t|y|u|i|o|p|@|[|a|s|d|f|g|h|j|k|l|;|:|]|z|x|c|v|b|n|m|,|.|/|Tab|Enter|Esc|BS|Del|Ins|Home|End|Pgup|Pgdn|Up|Down|Left|Right|F1|F2|F3|F4|F5|F6|F7|F8|F9|F10|F11|F12 aList=%aList%|sc00D /* ^ */ aList=%aList%|sc073 /* 右下 \ */ Loop,Parse,aList,| Hotkey, Space & %A_LoopField%, SandS return SandS: Loop,Parse,A_ThisHotkey,%A_Space% ifEqual A_index,3, SetEnv,Key,%A_LoopField% StringLen, len, key ifNotEqual,len,1, SetEnv,key,{%key%} GoSub, ModifierKeyCheck Send,%modifier_key%%key% return ModifierKeyCheck: /* 同時押し修飾キーチェック */ modifier_key = + /* Shift */ GetKeyState,work,Ctrl,P ifEqual,work,D, SetEnv,modifier_key,^%modifier_key% GetKeyState,work,Alt,P ifEqual,work,D, SetEnv,modifier_key,!%modifier_key% GetKeyState,work,LWin,P ifEqual,work,U, GetKeyState,work,RWin,P ifEqual,work,D, SetEnv,modifier_key,#%modifier_key% return Space Up:: Send,{Space}
326 :
名無しさん@お腹いっぱい。 :05/03/19 00:53:16 ID:39aRjgDj
>>323 >>263 をみればわかるように、AutoHotKeyはドライバレベルの実装ではないと思う。
だから、原理的に無理だと思う。
ドライバ書くしかないし、書けても新しいIMEでたらまたドライバ書き直し(多分)。
きちんと書かないと、ノートパソコンなどで使ったときに下手するとOSハングアップするかもしれん。
そこで繭と合流
タスクトレイすっきり化計画はなかなか上手くいかないなw
autohotkey みたいなスクリプト的な拡張はともかく、 単なるキーボード入れ替え機能は windows で提供してくれても いいと思うねえ。X なんか実際ユーザーレベルで変えられるんだし。
>>321 ,324
そうそう、そんな感じ。
一部の人にはキーカスタマイズソフトではコレができるか否かが肝になるらしい。AHK布教にはいいかなと。
繭では One Shot Midifier ( modifer = 広義のシフトキー ) と言う機能で一発登録できる。
>>329 ユーザにカスタマイズさせない方向に持っていきたいのがM$でしょ。
S and S に興味が有って >324 をコピペしたんですが エラーになってしまいます。何故?他の人は大丈夫だったんですか。
332 :
324 :05/03/20 16:19:31 ID:DfvGvyZp
全角スペース → 半角2スペース あとスレに張るのに行コメント ; だとわかりにくいんで範囲 /* */ にしたんだけど、 /* 同時押し修飾キーチェック */ と /* Shift */ がエラってるっぽい → 行コメント ; (半角セミコロン) へ置換えてクレ
あぁ、何となく思いつきでやってみたら出来たわ。数分で書いたスクリプトだから色々詰めなきゃいけない所はあるけど。 本来ならShiftDownの間にいずれかのキーが押されてなきゃSpace吐くようにしたいんだけど 「どれでもいいからキーが押された」ってことを拾えない(漏れが知らない?)んでキャレットが動かなきゃSpace吐くってようにした。(つまりバグは内包してる。) ; S and S Gosub,InitCaret Space:: if(CX == -9999 && CX == -9999) { CX := A_CaretX CY := A_CaretY } Send, {ShiftDown} return Space Up:: Send, {ShiftUp} If(CX == A_CaretX && CY == A_CaretY) { Hotkey,Space,off Send,{Space} Hotkey,Space,on } Gosub,InitCaret return InitCaret: CX := -9999 CX := -9999 return
行頭インデント全角スペースの方が分かりやすいね orz
>どれでもいいからキーが押された 漏れも最初Inputでいけそうな気がして軽く試してみたんだが Spaceのキーリピート発生しちゃうのとEndKeyを ShiftUpに指定できないので諦めた うまいこと設定してやれば使えるのかも知んないけど
× EndKeyを ShiftUpに ○ Space Up をEndKeyに
よく見たらひどいスクリプトだなぁ。CXとCYのつもりだったが… 推敲はするもんだねorz
339 :
333 :2005/03/21(月) 19:58:02 ID:5M52dZ2k
>>338 あぁ推敲っていっても
>>333 そのままでも動くと思うけど、訂正点は、
4行目
if(CX == -9999 && CX == -9999)
↓ ~~~
if(CX == -9999 && CY == -9999)
~~~
下から2行目
CX := -9999
~~~ ↓
CY := -9999
~~~
にするだけ。
>>333 でも書いたけど、S and Sってこんな感じってサンプルでバグ内包してるから常用しないように。
キャレットの移動がないキーとの組み合わせをやったあとにスペース吐くんで。
(分かってて使うぶんにはいいけど。)
340 :
324 :2005/03/21(月) 23:17:36 ID:HpFCrz0e
基本姿勢は>333の方向でキャレットが進まなくてもOKにしてみた。 NT系限定 例によって全角スペース → 半角2スペース置換えで MatchList=1,2,3,4,5,6,7,8,9,0,-,^,\,q,w,e,r,t,y,u,i,o,p,@,[,a,s,d,f,g,h,j,k,l,;,:,],z,x,c,v,b,n,m,,,.,/ EndKeys = {Tab}{Enter}{Esc}{BS}{Del}{Ins}{Home}{End}{Pgup}{Pgdn}{Up}{Down}{Left}{Right}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{sc073} return $Space:: Send,{Shift Down} keycnt = 0 Loop { Input,key,I L1 T0.1,%EndKeys%,%MatchList% ifInstring ErrorLevel, EndKey: { StringReplace,Key,ErrorLevel, EndKey: key = {%key%} } StringReplace,key,key,%A_Space%, StringLen,len,key if len > 0 { ;; Gosub, ModifierKeyCheck ; 同時押しチェック (>324) Send,%modifier_key%%key% keycnt += len } GetKeyState,work,Space,P ifEqual, work,U, break } Send,{Shift Up} ifEqual keycnt,0, Send,{Space} return
324さんと333さんは私の中で神と認定させて頂きました。 333での書式はバグを内包しているとの事ですので340をコピペして使わせて頂いています。 「猫まねき」でSandSを知ってから、ずっとこの機能を使ってみたかったのですが 私が同時打鍵入力方式の親指シフト配列の愛用者なので泣く泣く諦めていました。 それで質問なのですが以下のような事ってAutoHotKeyで実現できるのでしょうか? 1.IME/OFFの時だけSandSが機能するようにする 2.IME/OFFの時だけ無変換(変換)をスペースキーにする 3.無変換と変換の同時打鍵でIME ON/OFFを切り換える 実はAutoHotKeyには前から非常に興味が有ったものの、初心者には敷居が高く 掲示板をたまに覗く程度で済ませていました。質問した機能を実現させたい とは思ってはいたものの、私の実力では無理っぽかったので諦めていました。 AutoHotKeyは外国産のソフトなのでIME ON/OFFと日本語専用キーの判定が 難しい云々という話も見た事が有るのですが、どんなものなのでしょうか? 実現できそうならインストールとアンインストールを繰り返していた AutoHotKeyを本格的に導入したいと思っています。敬白 m(_ _)m
342 :
340 :2005/03/22(火) 00:21:34 ID:u8g20rRv
StringReplace,key,key,%A_Space%, → StringReplace,key,key,%A_Space%,,ALL の方が安全カモ ウチの環境だと>333や↓のスクリプトで何故かSpaceキーリピート発生しちゃう XP Sp1a ahk Ver.1.30.04 Send,{Shift Down}すると押しっぱなしにしてても勝手にSpace Upになってしまうらしい >340は何故か大丈夫なのだが…? >317のIME関係かしらん $Space:: Send,{Shift Down} KeyWait,Space,U Send,{Shift Up} Send,{Space} return
>>341 その目的だと、
AutoHotKey より「窓使いの憂鬱」の方が向いてる。
猫まねきより高度な設定ができる分、設定が難しいけど、
設定の仕組みさえわかれば
>>341 に書いてあることがすんなりできると思うよ。
確かに
>>341 やるなら繭だわな。数行で出来る。
やっぱ専用ソフトっつーのは便利だな。
以下チラシの裏
現在の言語仕様じゃ他人のスクリプト組み込むのに手直しは必須っつーのが…
まぁ、その辺を変えることで重くなったりバギーになったりしたら本末転倒だが。
布教するにもマニアにしか受けんし。スクリプト仕様みてイラネって言う香具師もいる。
VBでSendKey連発するようなスクリプト書いてる香具師には訴求力ありそうなんだが。
ロカル変数くらいは欲しい。
>現在の言語仕様じゃ他人のスクリプト組み込むのに手直しは必須っつーのが… スクリプト自体に手を加えないでいい作りにしたいなら カスタマイズオプションを.iniから読込むように作ればできないこともない 小規模のスクリプトだったら直書き換えさせちゃったほうが手軽だけどね
これ、アプリごとにキーバインド変えようと思ったら、 アプリごとにキーバインド設定をするんじゃなくて、 キー設定の中でアプリ判定→分岐 するしかないの? ようは if (アプリ A){key a=hoge;key b=fuga} じゃなくて key a=(if (アプリ A){key a=hoge}else{key a=gaga}) こんな風にしかできない?
SetTimer か Loopで IfWinActiveすればアプリごとの設定のできないことはないけど ホットキー登録しないので取りこぼしが発生する可能性大
>>348 基本的にはそうかな。
SetTimerで指定間隔毎にアクティブ窓で分岐させてキー割付を動的に切り替えるって方法もあるけど…
SetTimer,Hoge,100
:
:
Hoge:
WinGetClass,class,A
If(Class == "〜")
{
HotKey,〜,〜
HotKey,〜,〜
}
Else If(Class == "〜")
:
以下略
:
return
うは、かぶったw
352 :
348 :2005/03/23(水) 20:51:59 ID:0rrNT0fg
どうもです。 window が切り替わったときのフックみたいなのがあれば もっときれいにできそうですね。
353 :
341 :2005/03/23(水) 21:41:19 ID:jdrum20v
>>345 さん
わざわざありがとうございました。まさかこんな事までして頂けるとは! ありがとうございます。m(_ _)m フカブカ〜
ただ、挙動に関しては少し問題が出ています。実は私、親指シフトのエミュレーションのため
に富士通製のOASYS系のIMEであるJapanistを愛用していて、それでツールバーからIME
の状態を取得する方法が上手く行かないようです。IME/ONの状態の時に変換(無変換)
との同時打鍵が正常にできなくなってしまいます。
ちらっと覗いたらAHKを流行らせるページさんの方のBBSでも親指シフトの方がいらっしゃったり、
IMEの検知について書いておられる方が居るので、そちらも参考にしてみようと思います。
まぁ、あそこの管理人さんのマウスジェスチャーのスクリプトすら設定できなかったヘタレ初心者なんで、
どれだけ時間が掛かるか分かりませんが・・・。
何にせよ、私なんぞのためにわざわざ手間暇かけてまで尽くして頂いて非常に感謝しています。
改めて御礼申し上げます。
>>344 ,
>>346 さん
どうも。窓使いの憂鬱の存在は知っているのですが、猫まねきと共存できないとの事ですので、
色々と細かい事ができて良いという話は聞いていても今まで諦めていました。興味は有るんですが、
作者の方も更新を止めておられるようですしWindowsXPに完全に対応していないとかの話も聞くので、
初心者としては手が出しにくいです。う〜ん。
漏れはAHKと繭との併用がかなりしっくりくると思うんよね。 AHKより繭の方が(PC界でいう)低レベルだからバッティングしない。(ハズ) まぁどのソフト使うかっつーのはそれぞれだから何とも言えんが。 スレ違いだけど、繭の最新版(Snapshot20040810)だとXPで安定っつー報告が多い。 つか、繭スレ過疎ってるなぁ。いい意味で枯れてるからなんだが。
>>354 繭は過去ログとML読めば、大体やりたいことはできるからなー。俺もsnapshot+XPで安定。
おっさん的には枯れてるメディアの方が肩が凝らなくてイイ。
ただ、「ランチャ-ファイラ-AutoHotkey」をフラッシュメモリかなんかに入れて持ち歩けたら
めちゃくちゃ便利な気がするんで、ただ今移行試行中。
ランチャ持って行ってどうするよ システム関連のしか起動できないだろ
アプリもメモリに入れていくんじゃね? Autohotkeyなら作り方しだいで相対パスランチャも作れるし。
まあ、絶対パスにしか対応してなくても、subst使えばいいんだけどね。
文字列を計算式として認識させられないかな 例えばエディタで 1+2 を打って、それを選択して3に書き換えるようにしたいんだけど これが出来れば常駐ソフト一つ減らせる
>>359 そういや、ATOKプラグイン?であったぞ。
>>360 AMET Multi だな。ATOKの入力文字列を引数にコマンドラインで何でも(perlとか)起動できるやつ。
でも、IME On/Offの面倒さはあるなぁ。
AHKでもやろうと思えば出来なくは無い。スクリプト投稿スレにも似たようなのでてたし。
>>360 IMEのATOKと無関係かと思って探してたけど
まんまATOKのプラグインだったんですね->AMET ATOK入れてないんで・・
AHK単体でやるのは無理なのかな
>361 かぶった・・すいません 投稿スレ見てきます
365 :
名無しさん@お腹いっぱい。 :2005/03/24(木) 17:17:39 ID:lCSIfVGc
soft1では右クリックとホイールでPageUp soft2では右クリックとホイールでF2 を押したようにしたいとします。 AutoHotkey.iniに ---------------------------------------- IfWinExist, soft1 { ~RButton & WheelUp::Send,{PgUp} } IfWinExist, soft2 { ~RButton & WheelUp::Send,{F2} } ---------------------------------------- と書いてみましたが、うまくいきません。 根本的な勘違いをしているような気がしますが、 どうすれば希望の動作が実現できるでしょうか?
条件分岐でホットキーを設定するにはホットキーラベルじゃなくてHotkeyコマンドを使う。 ただこの場合SetTimerでループさして アクティブなソフトを監視しないといけなくてめどいから、 ~RButton & WheelUp:: IfWinExist, soft1 { Send,{PgUp} } IfWinExist, soft2 { Send,{F2} } という風にする。
IfWinExist → IfWinActive でそ
368 :
365 :2005/03/24(木) 19:44:17 ID:lCSIfVGc
>>366 ありがとうございます。
AutoHotkey便利そうです。
^!C:: ToolTip,[Calc], %A_CaretX%, %A_CaretY% Operand1 = Operand2 = CalcStr = math = Loop { Input, key, L1 If(key == "") ; ""内は 0x1B { break } Else if(key == "`n" || key == "=") { If(Operand2) { if(math = "+") Operand1 := Operand1 + Operand2 Else If(math = "-") Operand1 := Operand1 - Operand2 Else If(math = "*") Operand1 := Operand1 * Operand2 Else if(Operand2 = "" || Operand2 = 0) Operand1 := "NaN" Else Operand1 := Operand1 / Operand2 }
Else { Send, %Operand1% Break } Operand2 = math = } Else If key in 0,1,2,3,4,5,6,7,8,9,0,. { CalcStr = %CalcStr%%key% If(math) Operand2 := CalcStr Else Operand1 := CalcStr } Else If key in +,-,/,* { If(math == "") { math := key CalcStr = } } Tooltip,[Calc] %Operand1%%math%%Operand2%,%A_CaretX%,%A_CaretY% } Tooltip return
適当に作ってみた2項の四則演算のみ。 バグがあるかもしれない。 あくまで叩き台ってことなんで、叩かないでw
あぁ、行数制限で説明抜いてたわ。 Alt+Ctrl+[C]でインライン(?)電卓モードに。 数字 演算子 数字の並びになったときに Enter で計算 結果はツールチップに。 ツールチップに1項のみが表示されているとき Enter で数字を出力。 つか0割の所うまく動いてないわw
374 :
359 :2005/03/24(木) 22:54:16 ID:PlnAtin8
>>364 369-372
ありがとうございます!
>>369 せっかく作ってもらってすいませんが 秀丸-サクラマクロマクロがよさげなのでこっち
使ってみます ヒマな時にこれも解読してみます
>>373 使ってみました
かっことか使えないと不便かと思ったけどこれはこれで実用的
計算結果をもとに続けて入力出来るのが良いです
AHK内だけででここまでやれるとは思わなかった
autohotkey に lisp インタープリタ内臓して欲しい
lispイラネー
skk乗っけてAutoHotKeyだけで漢字変換か。
Numpad0 & Up:: { CLipboard=↑ Send,^v return } Numpad0 & Down:: { CLipboard=↓ Send,^v return } Numpad0 & Left:: { CLipboard=← Send,^v return } Numpad0 & Right:: { CLipboard=→ Send,^v return }
380 :
379 :2005/03/25(金) 01:00:12 ID:vzJGrVeL
↑のようなものを作ってみたのですが、 これをもっと短縮あるいは効率よく書く方法はありますか? クリップボードの履歴を監視するソフトを導入しているため、 なるべくクリップボードを介したくないのですが… ClipboardがCLipboardになってるのは単なるミスです^^
send,^Vした後クリップボードの内容を元に戻す。
流行らせるページにSendで2バイト文字を入力するサンプルがあったような。 長い文字列にはむかないけど、1文字程度ならいけるんじゃないか。
>>379 Cじゃないのでサブルーチンの括りに{ }は不要、書いても間違いじゃないみたいだが
ルーチンの終わりが分かりやすいので漏れは↓みたいなインデントにしてる
label:
code
:
return
>>380-382 流行らせるページのサンプルはクリップボード使ってるみたい
使えるのかどうかわからんがUnicode関連のコマンド
とかできたから
そっちチェックしてみたらいいかも
(Transformの見た感じだとそっちもクリップボード経由っぽいが)
384 :
名無しさん@お腹いっぱい。 :2005/03/25(金) 09:01:49 ID:9HGHpGci
自治する気ないし俺の意見として言うけど
スクリプト自体の投稿は流行らせるページにしてほしい
情報を見に来るのに見づらい
質問に答える
>>366 みたいなのはいいけど…
>>384 >369-370あたりは漏れもそう思った。あっちのが1レスに貼り付けられる量が多いので
投稿スレかあぷろだに上げてリンク張ったほうがいいと思う。
と、書きつつも貼り付ける漏れ
Numpad0 & Up::
Numpad0 & Down::
Numpad0 & Left::
Numpad0 & Right::
ifInstring, A_ThisHotkey, Up, SetEnv,PasteData,↑
ifInstring, A_ThisHotkey, Down, SetEnv,PasteData,↓
ifInstring, A_ThisHotkey, Left, SetEnv,PasteData,←
ifInstring, A_ThisHotkey, Right, SetEnv,PasteData,→
ControlGetFocus, Actrl,A
Control,EditPaste,%PasteData%,%Actrl%,A
return
Control使えばクリップボードは汚さないけどEditコントロール限定なのでいまいち汎用性無いな
1行だったら大体OKそうだけどマルチラインだと殆どだめぽ
秀丸 W
EmEditor ○
メモ帳 ○
サクラ W
xyzzy W
Becky!2 エディタ部 W
W -> X 職場からは2ch-modeで見てるんだが書き込みで記号が化ける orz
笑ってるのかと思った。w←これ
>>380 こういうこと?
Numpad0 & Up::Send,{ASC 33194}
Numpad0 & Down::Send,{ASC 33195}
Numpad0 & Left::Send,{ASC 33193}
Numpad0 & Right::Send,{ASC 33192}
>>388 NT4だと ェォゥィ ってなる orz
XPだとおkっぽい。
390 :
379 :2005/03/26(土) 01:19:46 ID:F+IEPJ/l
皆さん色々とありがとうございました。
Alt+Numpad[0-9]で文字コードを送信するという方法があったのを失念していたため、
Sendではできないものだと思い込んでました。
>>388 さんの書き方でできました。
>>385 さんの方法だと確かに独自のコントロールを使っているエディタでは入力できないため、
残念ながら使えませんでした。
ただ、特にフォーカスを移したり、明示的に指定しなくても、
ウィンドウ内のEdit部に入力してくれるというのは別の用途では使えるかもしれません。
SendMessage って何か魔法の呪文っぽい感じだな。 IME関連以外にも色々何かできそう。
マジッスカ このソフトを知って4ヶ月、なんとなくromってて ようやく入れる決心がつきますた(・∀・)
昨日から使い始めました。 質問なんだけど、AutoHotKeyって日本語化パッチある? 探してみたけど見つけられなかったんで。 あ、ないならないで別にいいんだけど、あるかどうかを知りたいな、と。
ない。というか、全く必要ないと思うよ。 どの部分を日本語化したいの? 強いていえばメインウインドウのメニューぐらいしかローカライズ するところはないと思う。 タスクトレイの右クリックメニューはMenuで自分で日本語のを作れば いいわけだし。
エラーメッセージじゃないか。 394じゃないけどそういうレスがくることは分かってたんだ…
inputoboxは日本語化しといたほうが何かとイイかも あんま初歩的なんでここの猛者は使わないかもしれんが
>>395 MsgBoxとか日本語でメッセージ出そうとすると化けるダメ文字が結構ある。
漏れは諦めてるけど。
それより 流行らせるページの .chm版ヘルプがほすぃ…
必要性を聞きたいんじゃない、ってことが分かるように質問したつもりだが。 だから、ないならないで別にいい、と書いた。 英語うざいから目につくところだけ日本語化しようかな〜と思ってね。 やっぱりないんだね、サンクス。
だからどこの英語がうざいのよ? キミの投稿じゃどこの英語がうざいのか分からないから 確認したかったんだけど? つーか、日本語化したい>どこがしたい?>ここ という流れにならず なんでそんないきなりギスギスした 態度になるのかわからんよ。 ちょっとは対話を心がけてくれまいか。
いちいち噛み付くなよ、そんなことでよ。
単純に日本語化したいなら AutoHotkey.exe を UPX 解凍してリソースハッカーでも使えばいいんじゃねーの。
>>399 今まで文字化け経験してないけど、 \(0x5C)が含まれてたりとかってやつかねぇ。
その文字を晒してくれればある程度特定できるかもしれない(出来ないかもしれない)。
.chm欲しいならHelpMachine使えば作れる。インデックス作るのマンドクセーけど。
# 最近またスクリプト熱が出てきた。春だからだろうか…
せっかくソースがあるんだから そっち書き換えたほうがいいよ
一瞬荒れたのかと思ったが、
>>394 の4行目の意図が全く読み取れなかった
ID:sb/4Ivmuが(2レスとも)的外れなこと書いてるだけか。そりゃ怒る罠。
そんな中、ちゃんと礼を言ってるところがなかなか。
俺も最近使い始めたんだけど、これが日本語化できたらやっぱりうれしいな。
今のところ特に困ってないけど、英語普通に苦手だから、使い込んでるうちに
エラーメッセージとかが出てきたらだるくなりそうな予感。
なにをそんなにカリカリされてんのかちっともわからんよ(;´ー`) つーかぎゃーぎゃー怒られるぐらいなら親切に「どこが必要?」とか 対話せず「ある」とか「ない」だけ書けばよかったよ。 全くその通りだ。
>>406 >>394 が有るか無いかだけの答えを求めている(4行目で明確)のに対して
>>395 が余計な事言ってくるのがウザかったってだけだろ。
おれの職場にもいるよ
>>395 みたいなタイプ。 そういうやつにものを聞くときは場合を考えるようにしてる。
うざくてかなわん。
なんか知らないけど 外国のソフトのスレでは 日本語化を求める人と 英語のままで十分と過剰に主張する人の間で 必ずごたごたが起こるね。
>395じゃないけど「ないならないで別にいい」を見て「必要性を聞きたいんじゃない」って思う人はあんまりいないと思うよ。 「ないならないで別によくない」なんて書く馬鹿はいないだろ、というか最初から「必要性を聞きたいんじゃない」って書けばいいのに、というか。
>>407 ふむ、それもあるのかもしれんが、それだけでいきなり
>>400 にはならないのでは?
>>395 には明らかにいらん一文(←
>>400 と合わせるとより明らか)がある。
例の4行目にはそれを書いてほしくない、という意図もあったのだろう。
>>408 よく見るけど、だいたいそれは後者が前者を逆撫でしてるな。
>>409 俺は普通に「必要性を聞きたいんじゃない」と読み取れたよ。
「ないならないで別によくない」人は、わざわざあんな4行目は書かない(=不要)から。
俺には、「必要性を聞きたいんじゃない」って言う、カドのたつ言い方を避けた
気を使った表現に思えた。
あんた達いい加減にせい。板違いのことでグダグダ議論してんじゃね。( ゚Д゚) わざわざこのレスにまでレスつけんじゃねぇぞ。
んじゃぁプログラミングのプの字もわからない漏れからの初歩的質問。 たとえばF12を押したときの挙動を複数のアプリで割り当てたいとき、 現時点では ~F12:: IfWinActive, ahk_class abcd send,!fa IfWinActive, ahk_class wxyz send,!daa return みたいな感じで書いててとりあえず問題ないんだけど、これって記述的にはおかしい? 何も知らない漏れが言うのも変だけど、「もし」ばっかり何個も続くのっておかしいような気がして。
大丈夫おかしくないよ 強いて揚げるなら2個目のif以降は Else If使ったほうがいいかも知らんけど
ダメ文字は何回か経験してる 2バイト扱うならUWSCの方が安全か。新しいのも出た。
>>412 んにゃ、たいていどの言語でもそれが常套手段。
ただし、
>>412 の場合、一つ目の
IfWinActive 〜
でマッチしたら、他の IfWinActive は評価する必要が無いから2つ目以降は
Else IfWinActive 〜
としたほうがいい。
言語によっては、case とか on 〜 gosub … みたいに特定の中身によって
飛び先を指定するってやつがあるけど、基本的な考えは上のやつと同じだし。
>>403 ひらがな、カタカナだと「チ」の字とか。0x5Cではないみたいなんだけど
msgbox,ぁ ぃ ぅ ぇ ぉ っ`nあ い う え お`nか き く け こ`nが ぎ ぐ げ ご`nさ し す せ そ`n
ざ じ ず ぜ ぞ`nた ち つ て と`nだ ぢ づ で ど`nな に ぬ ね の`nは ひ ふ へ ほ`nば び ぶ べ ぼ`n
ぱ ぴ ぷ ぺ ぽ`nま み む め も`nや ゆ よ`nら り る れ ろ`nわ を ん`nァ ィ ゥ ェ ォ ッ`n
ア イ ウ エ オ`nカ キ ク ケ コ`nガ ギ グ ゲ ゴ`nサ シ ス セ ソ`nザ ジ ズ ゼ ゾ`nタ チ ツ テ ト`n
ダ ヂ ヅ デ ド`nナ ニ ヌ ネ ノ`nハ ヒ フ ヘ ホ`nバ ビ ブ ベ ボ`nパ ピ プ ペ ポ`nマ ミ ム メ モ`n
ヤ ユ ヨ`nラ リ ル レ ロ`nワ ヲ ン`nァ ィ ゥ ェ ォ ッ`nア イ ウ エ オ`nカ キ ク ケ コ`nサ シ ス セ ソ`nタ チ ツ テ ト`n
ナ ニ ヌ ネ ノ`nハ ヒ フ ヘ ホ`nマ ミ ム メ モ`nヤ ユ ヨ`nラ リ ル レ ロ`nワ ヲ ン`n゙ ゚
去年の10月位までは自分で .chmに直してたんだけど
どうにも使い勝手が慣れなくて >へるぷましん
差分のインデックス作ったりとか、手作業前提なのがとにかくしんどい
あとからドロップしたhtmlの階層メタメタになるしで
フリー作家の人は偉いなぁと心底思ったよ。
名前欄に 削除 っていれると ” ”で括られるのか、初めて知った。
>>416 そういや「\」がエスケープ文字じゃなかったわ。「`」だった。
「チ」は0x8360、「`」が0x60。まさか……
419 :
412 :2005/03/28(月) 22:20:17 ID:zpfXdbTz
dクス。 基本がわかってないからちょっと不安だったのですが、安心しました。 二度目以降のIfの前にはelseをつけるようにします。
「〜」もだめぽ
やっぱ ` でのエスケープっぽ MsgBox,チ〜 MsgBox,チ`〜`
キター(`〜`)
423 :
名無しさん@お腹いっぱい。 :2005/03/29(火) 10:55:28 ID:+Zu/56Y7
ホイールクリックで基本的にEnter、AutoCADの場合はそのまま、としたいです。 下の例だとクリックが送られてしまい、押しっぱなしができません。 どうすれば良いでしょうか。 あと、mayuでいうところの&Defaultがあれば教えてください。 ~MButton:: IfWinActive, AutoCAD Send,!{MButton} else Send,!{enter} return
>>423 キー押し上げと押し下げに分けて処理すればOK
425 :
423 :2005/03/29(火) 17:23:55 ID:+Zu/56Y7
>>424 どうも。できました。
GetKeyStateのサンプルそのまんま。
MButton::
IfWinActive, AutoCAD
{
MouseClick, middle, , , 1, 0, D
Loop
{
Sleep, 10
GetKeyState, state, MButton, P
if state = U
break
}
MouseClick, middle, , , 1, 0, U ; ホイール離す
}
else
Send,{enter}
return
KeyName:: KeyName Up:: って今は出来るんだけどな。動けばいいか。
>>423 ラベルに ~つけるならMButtonの処理を自分でやる必要はないと思われ
~MButton::
IfWinNotActive, AutoCAD
Send,!{enter}
return
でいいんとちゃう?
昨日とか一昨日の日付を得たい。AHK ver 1.0.30.1, W2KSP4。 dt := A_Now dt -= 1,days MsgBox,%dt% これで、現時刻より1日前のものが表示できるかと思いきや Error: This date-time string contains at least one invaild component. と、おっしゃりやがって止まる orz EnvSub, dt, 1, days でも同様。実行時エラーの文句には -= の形式で出る。 ごり押しスクリプト書けばどうにかなるけど、どうしたもんか……
EnvSub,Var,Value,days は 引いた値をの日付を返すのはなく、日付同士の計算を日数で出すらしいね。 × 20050401 - 1 = 20050331 ○ 20050401 - 20040401 = 365 ちなみにFormatTimeも年/月越しでダメっぽい dt = 20050401 dt -= 1 dt = %dt%%A_Hour%%A_Min%%A_Sec% FormatTime,dt,%dt%,yyyyMMddHHmmss MsgBox,%dt% %A_YYYY%%A_YDay%→ YYYYMMDD 逆変換とかできりゃいいんだろうけど
>>430 サンクス
やっぱそうかぁ…。「流行らせるページ」のEnvSubのところに、
> たとえば、Valueを100、TimeUnitsを「Days」とすると、Valueの日付を100日進める。
ってあるからなぁ。コレが違ってるんかな(EnvAddのコピったままの部分は除く)。
ちょっとしたファイル整理の書き捨てスクリプト作ろうと思ったんだがハマってしまったよ。
日付処理のサブルーチン作るの面倒だから他の言語でやるわ…
EnvAddは負の値も使えなくない?
ver1.0.30.04で、""で括って渡しても、また空白でコマンドラインをぶった切るようになってない?
やべ、噛ませてたAutoHotKeyスクリプトの問題だった
>>432 本当だ↓だと上手くいく。年/月越しもOKだね
var1 = %A_Now%
var1 += -1, days
MsgBox, %var1%
EnvAddとEnvSubて単に加算減算の違いなんだと思って見てなかったよ orz
EnvAdd → 足した(引いた)値の日付を返す: 20050401 - 1 = 20050331
EnvSub → 日付同士の計算を日数で出す : 20040401 - 20040401 = 365
てことなのね。
にしてもコンパクトな中にいろいろ入ってるねえ、こいつは。 だいぶ依存度が増してきた…
437 :
429 :2005/04/02(土) 22:10:20 ID:z4/57e82
ナナンダッテー (AAry そうだったんかぁ。コレで日付でファイル振り分けが楽になるわ。
438 :
名無しさん@お腹いっぱい。 :2005/04/03(日) 11:12:08 ID:ZfS+Xv1s
質問です。 これをインストールするときは 窓使いの憂鬱はアンインストールしておいた方がいいですか?
必要ナス。併用可能。 ただし、キー割り当ては窓使いの憂鬱が優先する。 つまり、窓使いの憂鬱が吐き出すキーコードを受け取ってAHKが動作する。 例) 窓使いの憂鬱で Ctrl + A に Ctrl + B を割り当てる AHK で Ctrl +B に Enter を割り当てる → Ctrl + A を押すと Enter が出力される。
IDが惜しかった…
doma
関数
ChrisたんGJ
1.0.31 ついに関数とローカル変数きたね。
・SetTimer
>>312 の問題修正
・関数サポート: result = Function(palam) みたいのが有効に
・ローカル変数: local x, y, z とかで宣言できるっぽい
・A_LineNumber、A_LineFileで #Include先ファイルの行番号、ファイル名が取得可能に
・他いろいろ
しかし仕様変更だかバグだかよくわからんがエラー出まくりで全然うごかねぇ orz
Menu,TRAY,Add,流行らせるHelp(&C) ,Sub_MenuTray
メニューにアクセラレータキー入れるのに()で括ってたら、そんな関数ないって怒られた
今常用してるスクリプトはコンパイルして新しいのにしてみっかな。
手軽さがなくなって来た気が… 次スレはプログラム板かな
ver2はECMA準拠で
いちいちオブジェクト作ってたらメモリとCPU喰いまくりそう… function と local valuables は歓迎かな。
mayuのドライバを使ってフックかけられないかな?
ローカル変数ってアルファベット1文字だと怒られる… ループに使う i, j とか、 座標の x, y とか面倒すぎ。
452 :
451 :2005/04/16(土) 08:54:54 ID:J3RVri/i
漏れはスレッドストッパー orz
イ`
454 :
451 :2005/04/17(日) 12:45:27 ID:9YkLHgvW
健気でワラタ 乙
456 :
名無しさん@お腹いっぱい。 :2005/04/20(水) 21:46:44 ID:SMytWmy0
少しは努力の成果を見せろよw
よくわからんがこんな感じ? #SingleInstance FORCE #Persistent Autoexecute: ;10秒ごとにテキストファイル監視(間隔は適当に変えれ) SetTimer, Watch, 10000 return Watch: ;hoge.txt内の改行が 3個未満かチェック Loop,READ, c:\hoge\hoge.txt { MaxLineNo := A_Index if A_Index > 3 ;3行以上あるので処理中止 return } ;指定のソフトを終了 WinClose , WinTitle ; ;タスクトレイ収納型などのWindowがないソフトの場合はプロセス強制終了で。 ; Process, Close, hoge.exe return
459 :
456 :2005/04/20(水) 22:22:30 ID:SMytWmy0
>>457 今頑張っています。先に聞くのは失礼だと思ったんですが
何分こういうソフトは初めてなもので・・・。
>>458 ありがとうございます!
これと
>>1 のサイトの解説で試行錯誤したいと思います。
MaxLineNo := A_Index の行はいらなかったな、何か後で判定しようと思って入れたんだけど
あ、漏れ IDがAhkだよ、今気づいた それはそうと静観してるうちに、1.0.31.05までバージョン上がってるね >444のバグも直ったっぽい。あと引っかかってたのはバージョンチェックで If A_AhkVersion < 1.0.25.00 などの比較してたんだけど、数値認識できずエラーになるようになったみたい。 1.0.30まではOKだったんだけど元々イレギュラーな比較の仕方だったのも
463 :
456 :2005/04/20(水) 23:55:03 ID:SMytWmy0
>>462 nyってこの機能使うんでしょうか?
>>459 のレスからずっと弄ってるのに未だできません・・・。
ずっとって…ヲイヲイ 初めて触るスクリプトを2時間かそこらでうまく走らせるようになるなんてあり得んぞ。 つか、にテキストファイルが読み込んで何行あるか読ませるのとか プロセスや窓を閉じるのとか部品部品を試すもんだろ、最初は。 自分がどうやったとかが全然書いてないし、コマンド一つすらレスにないっつーのはどうよ。
nyのDLリストがクラスタワード3つを残して空になったらnyを終了させたいんだろ
それはまた贅沢な悩みだな
ヒント >332 あとは勝手にガンガレ nyに詳しい人降臨してるな、漏れは使ったことないから知らんかったよ
>>456 ;--------------------------------------------------------------
SetEnv, filename, aaaa
SetEnv, WinTitle, bbbb
#Persistent
SetTimer,watch,500
return
watch:
FileReadLine, dummy, %filename%, 4
if ErrorLevel = 1
WinKill , %WinTitle%
return
;---------------------------------------------------------------
点線内を a.ahk って名前で保存
aaaaを監視したいファイル名→C:\Program Fil…
bbbbを終わらせたいアプリのタイトルバーの文字→文書 1 - Microsoft Word
みたいに変えて実行
>>462 スレ違い
>>456 一応言っとくとファイルが書き換わる瞬間にチェックしてしまったら
終了させてしまうかもしれない
それに対応するのはアプリの特性とかが分からないと無理だし
わかってもめんどくさい
ahk ってそういう cron 的な使われ方も想定されてるの?
Menuお手軽に使えていいんだけど垂直セパレータ追加する方法って 今のところない…よね? 職場で使ってる業務用ソフト、ボタンで3階層くらい辿るようになってるんだが アクセラレータキーもなくでマウス操作するしかないという。 しんどいんで ahkでメニュー化してキー操作できるようにしようとしてるんだが 項目多すぎてもう死にそう
ShorterとSendではだめかいね? ------------------ %1 {autohotkeyのパス} %2 {キー送るだけのスクリプトのパス} A | %1 | %2 a = B | %1 | %2 b 新規作成 | %1 | %2 {ShiftDown}a(…略) ------------------ みたいな
文字ラベルのボタンならControlSetTextで "更新(&U)" みたいにすれば Altキー併用のキー設定できるけどな。
>>472 Shorter NT4だと正常に動かないっぽ orz
あーでも ver. 0.18以前ならかろうじてOKなんで試してみようかな
>>473 うーん、ネットワーク越しの鯖のウィンドウを呼び出してるらしくて
ControlClassもテキストも取得できないんですよ...
WindowTextだけはなんとか取得できるので、かろうじて制御は可能なんだけど
(Ahk_Classは兄弟ウィンドウ全部同じクラス名になってしまいNG)
最初の階層のボタンをMouseClickで叩けばフォーカスが定まるんで
2階層目以降は Send,{Tab n}{Enter}てな感じでいけるんだけど
_をシフト押さずに入力したいんだけど _::send,+_ と設定しても出来ませんがどうしてでしょうか?
478 :
名無しさん@お腹いっぱい。 :2005/04/25(月) 22:52:53 ID:5GoYBG9c
クリップボードにあるパスの親フォルダのパスを参照するって無理ですか? 例えばクリップボードにD:\AAA\BB.txtがあった時のD:\AAAって意味です。
SplitPathで余裕じゃないか?
480 :
478 :2005/04/25(月) 23:06:32 ID:5GoYBG9c
>>479 見落としてました。
これでできました。ありがとうございます。
右クリックを押しながらホイール上下でアプリを切り換えに Alt+Tab の機能を持たせたいんですがどうすれば良いのでしょうか。 あと、右クリック+左クリックを コントロール+左クリックにもしたいです。 教えてエロい人!
for NT or higher ~RButton & WheelDown::AltTab ~RButton & WheelUp::ShiftAltTab
1.0.31.06
>>482 ありがとう。ところでこの書き方だと切り換え後に切り換え前の
アプリの右クリックメニューが表示されてしまうんだけど
これをキャンセルする方法は無いかな?激しくウザくて。
書式の先頭のチルダを削除したら大丈夫だけど
それだと右クリック自体がキャンセルさせてしまうし。
何か良い方法は無いかな。
Send,{Alt}]で右クリメニューはキャンセルできるよ
>>484 ~RButton Up::
If(IsTaskChange)
{
Send,{Alt}
IsTaskChange := 0
}
return
WheelDown::
GetKeyState, RB, RButton, P
If(RB = "D")
{
IsTaskChange := 1
Send,{AltDown}
Send,{Tab}
}
Else
Send,{WheelDown}
return
WheelUp::
GetKeyState, RB, RButton, P
If(RB = "D")
{
IsTaskChange := 1
Send,{AltDown}
Send,+{Tab}
}
Else
Send,{WheelUp}
return
>>487 ClockLauncher使っとけ。全部対応してるから。
>>487 ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1092315194/ リネームは、ここの102
ダブルクリックで上の階層はこんなんでええんかな?
~Lbutton::
ifwinnotactive,ahk_class CabinetWClass
return
tapcount=1
wingetactivetitle,wintitle1
loop,
{
KeyWait,Lbutton
sleep,50
KeyWait,Lbutton,t0.1 d
if ErrorLevel=0
tapcount+=1
else
break
}
if tapcount=2
{
wingetactivetitle,wintitle2
if wintitle1=%wintitle2%
send,{bs}
}
return
491 :
487 :2005/04/29(金) 15:56:37 ID:nR+7qyF1
>>489 なるほどSetTimer使った監視は必要ないんだなぁ、
リネームのと階層移動のを一緒に使うと
~LButtonがダブってると怒られるんだけど、
これはリネームの方の~Lbuttonを切るのが一番だろうか。
作らせて置いて悪いんだけどエクスプローラー自体使ってなくて
なんていうかスクリプト見たいだけなんです、すみません。
>>488 もわざわざ代用ソフトすみません
今TTBaseのスレが地味に盛上がってるからなぁ、気持ちはわかる
>>491 >489の~Lbutton::の直下にでもcount=0の行を追加すればええんちゃう?
493 :
487 :2005/04/29(金) 19:13:41 ID:nR+7qyF1
>>492 なるほど、言われてみればそうでした。しょぼいなぁおれ
Autoit で書かれたソフトなん?
AutoItはCOMのことでそ 使ったこと無いけど
窓のプロセスのフルパスって取得できないもんかねぇ。 Winget, OutputVar, ProcessName, A じゃパス無しファイル名だけだし。
QuickDIrを絡ませるのは同かね INIが一行だけなら即実行するのでフルパス取得スクリプトへ飛ばしたり
>>497 フリーのツールかぁ。コマンドかと思ってリファレンス探しちまったよw
キー割り当てて使いたくてね。
繭だと現フォーカスのクラス名が「ファイルパス:クラス名:クラス名…」って感じで
取得できるからそれを引数にwsh起動して2個目の「:」以降を捨てれば
ファイルパス取得できたんよ。
で、wshから「explorer ファイル名」を実行すれば起動窓のディレクトリ開けたわけ。
でも情報サンクス。
小ネタ、AHKからオミトロンのバイパス on/off トグル DetectHiddenWindows, On IfWinExist, ahk_class PrxTronCls PostMessage,0x111,1007,0,,ahk_class PrxTronCls
流行らせるページのような辞書的なものとは別に、 逆引きリファレンスみたいなものもあるといいなぁ。 できればwikiで。(人任せ)
コントロール押したままホイルマウスをくるくるすると 強制的に横スクロールするようにしたいのですが なかなかうまくいきません どなたかヒント頂けませんでしょうか LCtrl & WheelDown:: MouseGetPos,OrgX,OrgY,hwnd,cls PostMessage, 0x114, 1, %hwnd% ;Send,!{PgUp}これならエクセルだとうまくいきます よろしくお願いします。
~LCtrl & WheelDown:: MouseGetPos,,,hwnd,cls PostMessage,0x114,1,%hwnd%,%cls%,ahk_id %hwnd% return # wParamとlPramを指定しているだけで、PostMessageをどの窓に送るかが指定されていない。 # また、LCtrlが使えなくなってもいいなら別だが、コンビネーションキーで使うなら ~ あったほうがいい。
>>503 <^WheelUp::
<^WheelDown::
MouseGetPos,,, hwnd, cls
IfEqual A_ThisHotkey, <^WheelUp, PostMessage, 0x114, 0, %hwnd%, %cls%, ahk_id %hwnd%
Else PostMessage, 0x114, 1, %hwnd%, %cls%, ahk_id %hwnd%
return
こんな感じのほうがLCtl使うより良いと思う。ただ、エクスプローラでしか動作確認できてない。
メッセージの送り先が違うんかな…
506 :
503 :2005/05/03(火) 08:15:58 ID:ipiKQDcN
>>504 >>505 ありがとうございます。
両者ともエクスプローラ・メモ帳だとうまくいきました。
ExcelとかのMDI形式のものはやはりきつそうですね・・・
MouseGetPos,,,hwnd,cls ↓ MouseGetPos,,,hwnd,cls,1 でMDIでもマウス下のコントロール正確に拾えるようになる。 ただWM_HSCROLLを投げてもダメなアプリもある、EXCELとか。 あと lpalam(スクロールバーのウィンドウのハンドル) ってのは よくわからんがウチだと0にしといても動いてる。 指定するのは目的のウィンドウハンドルではないのかしらん。 EXCELは現在アクティブな子ウィンドウ(マウス位置ではなく)に対しての WM_MOUSEWHELLしか効かないみたい。スクロールは縦も横も全然ダメっぽい。
アクティブ窓のクラス名でMouseGetPosでAltMethodをとるかどうか 挙動を変えた方がいいみたいだな。
タスクトレイに入っているものを復活させたり操作することは無理ですか? タスクトレイでのそのアプリのアイコンの位置は決まっていません。
隠し窓操作でなんとかなるやつもあるかも試練。
>>500 参照
スクリーンショット取って任意のアプリのアイコン画像をbmpなどに切出しておいて ImageSearchで位置をとり、MouseClickとかで制御すればいけると思う ただ状況によってアイコンが変わるアプリのなんかの場合は アイコン数ぶんだけの画像をチェックしないといかんかも知れんが。 ;タスクトレイアイコン左クリでアプリが復活右クリ ;X1〜Y2:タスクトバー座標 CoordMode,Pixel,Screen ImageSearch, OutputVarX, OutputVarY, X1, Y1, X2, Y2, c:\hoge\icon.bmp MouseClick,R,OutputVarX, OutputVarY ;アプリコンテクストメニュー表示 Send,{Down 3}{Enter};メニュー選択
書きかけで送信してもうた orz ;タスクトレイアイコン左クリでアプリが復活右クリ の行は消し忘れ、無視してくれ >510確かにこっちのが手軽だな 今はahk_pidが使えるから、プロセス名(hoge.exe)とかからPID取って それで制御すると良いかも。
WM_COMMANDだろうと調べずにレス。
515 :
513 :2005/05/04(水) 00:09:55 ID:N+nfMXby
516 :
509 :2005/05/04(水) 00:15:17 ID:N+nfMXby
でもまだ
>>510 の意味がよくわからんです・・・。
>>516 結局具体的にはどういうことがしたいのよ。
518 :
509 :2005/05/04(水) 00:22:55 ID:N+nfMXby
ものすごく具体的に言うと、 kbMediaPlayerで音楽を再生するときにタスクトレイに入れているんですが その状態で一時停止とかをホットキーに割り当てたいのです。
519 :
517 :2005/05/04(水) 00:54:54 ID:/j9C8CcH
>>518 んー、AutoHotKeyだとちょっと辛いかも。
てか、kbMediaPlayer自体にあるホットキー機能じゃだめなのか?
ツール(I)→その他の設定(A)→ホットキー有効(H)にチェック入れて、
Ctrl+Shift+Pで再生とか。
>>519 あ、ホットキーってトレイに入っていても効くんですね。
勘違いしてました。ありがとうございます。
なんだこのつまらない落ちは・・
おっと、ほっとけ
523 :
名無しさん@お腹いっぱい。 :2005/05/04(水) 21:33:08 ID:rODwuneF
GetKeyStateでマウスのホイールクリック 押し下げ・上げ状態が収得できないのは仕様でしょうか? 常に変数にはDが入ります
524 :
523 :2005/05/04(水) 21:38:27 ID:rODwuneF
すいません間違えました 変数には常にUが入ります
>>524 取得できたけど。(XP SP2, AHK 1.0.31.07)
↓のスクリプト試してみて。つか、環境ぐらい書いてや。
GetKeyState, M, MButton
If M = U
MsgBox, Up
Else If M = D
MsgBox, Down
Else
MsgBox, Null
return
526 :
523 :2005/05/04(水) 22:57:41 ID:rODwuneF
>>525 ありがとう
でも、なんだか自分の書いたコードでは動きません
環境は WINXP SP2 AHK 1.0.31.07
ホイールクリックしたときに常駐AutoHotKey.iniから以下のコードを書いたファイルをRunで呼び出します。
IfWinActive ahk_class MyApp
{
loop
{
GetKeyState OutputVar, MButton, P
If OutputVar = D
MouseClick left
else
break
}
}
MouseClick MIDDLE
ExitApp
ホイールクリックされたときに任意のアプリがアクティブだったとき
ホイール押してる間は左クリックの連打をしたいのです。。。
よろしくお願いします。
>>526 GetKeyStateのところで P をつけてるけど、
ちゃんと#InstallMouseHookしてるの?
528 :
523 :2005/05/04(水) 23:14:34 ID:rODwuneF
529 :
525 :2005/05/05(木) 00:31:55 ID:iGuOrAOW
>>528 なんとなく原因は分かるんだけど、どうにもうまい解決策が書けない…
とりあえず試したコード置いとく。
RIGHTをMButtonにすると動かんね。
他の人にパス。
;テストコード
;メモ帳で右矢印を押しながらミドルクリックすると、
;右矢印が離されるまでAを出力
;メモ帳以外では右クリック
MButton ::
IfWinActive, ahk_class Notepad
{
Loop
{
GetKeyState, M, RIGHT
If M = D
{
Send, A
Sleep, 100
}
Else Break
}
}
Else Send, {RButton}
return
>IfWinActive, ahk_class Notepad こういうクラスを複数指定したい時はどうしたらいいですか?
WinGetClass,cls,A If cls contains Notepad,CabinetWClass,#32770,… MsgBox,hoge
532 :
523 :2005/05/05(木) 16:26:59 ID:D9lN4zz2
>>529 ありがとう、ホイールボタンはひとまずあきらめて
キーを絡めてコードを書き直してみます。
533 :
名無しさん@お腹いっぱい。 :2005/05/05(木) 16:38:15 ID:J9J/cHxU
ローカル変数マンセーってことで 既存ルーチンをFunctionに書き直したらメモリ常駐量増えたorz やっぱ>448ってことなんかな
タスクトレイのデフォルトメニュー (Pause Script)を選ぶと 何かエラーメッセージ出る。NT4SP6 1.0.24 , 1.0.30.03 , 1.0.32 (ホットキー or 自分で追加したメニューでのPauseはOK) 以前のバージョンではちゃんと効いてた気がするんだけど、何だろ SetTimer,test,5000 Menu,TRAY,Add Menu,TRAY,Add,Pause_2 ,#p return #p:: Pause,Toggle return test: cnt++ tooltip,%cnt% return
根本的な解決にはならないけど、ラベル列挙はどうよ。 Menu,TRAY,Add,Pause_2 ,hoge : hoge: #p:: : 脱繭はかなりうまくいってるけど、脱マウ筋は厳しい・・・
537 :
535 :2005/05/07(土) 00:52:53 ID:ypW7J0hR
いや、Pause_2のほうはラベル列挙しなくてもちゃんと効くんですが 元々ある StandardMenuの方の 「Pause Script」がエラーになるのです。 いつのバージョンからかアラートが出てPauseしてくれなくなっちゃって。 仕様なのかもしんないけど、これだと標準メニューに入れてある意味がないし、 何かバグっぽいのかなと思って。 タイマー使ったテストスクリプトとかちょっと書く時とか、わざわざコードに 入れ込まなくても使えたんでちと不便。
538 :
233 :2005/05/09(月) 01:41:23 ID:zU71pxGA
WheelUp:: WheelDown:: MouseGetPos,x,y,hwnd,cls MouseGetPos,,,,cls2,1 if(cls != cls2) cls := cls2 accel := (A_PriorHotkey == A_ThisHotkey && A_TimeSincePriorHotkey < 80) + (A_PriorHotkey == A_ThisHotkey && A_TimeSincePriorHotkey < 250) + 1 wParam := 0x780000 * accel * (1 - 2 *(A_ThisHotkey = "WheelDown")) lParam := x + y*0x10000 PostMessage,0x20A, %wParam%,%lParam%, %cls%, ahk_id %hwnd% return ホイールリダイレクト。例によって加速付き。 だいぶ短くなった。今のところMDIを含め殆ど動ようになった。 W2kSP4, AHK1.0.32.00
539 :
名無しさん@お腹いっぱい。 :2005/05/10(火) 11:12:56 ID:yD/HtF4C
A_TimeIdleって操作するとクリアされないの? 下のスクリプトだと、600秒たつと常に実行されるみたい。 使い方を勘違いしてたら教えて。 #Persistent SetTimer, test, 600000 return test: If A_TimeIdle > 5000 Send, hoge return
540 :
名無しさん@お腹いっぱい。 :2005/05/10(火) 11:38:37 ID:6L+Y9uvQ
A_TimeIdle 最後に何らかの入力があってからの経過時間をミリ秒で格納。(NT系専用) PCが放置されているときにアクションを起こすのに使える。 何らかのプログラムが生成した入力イベントでもリセットされてしまう。
って環境のせいだろと思ったら 不等号逆じゃん
逆なの? 俺の理解では、A_TimeIdleは入力がないと値が増えて、 何か入力がないと0になる。 下の説明でも、 IfGreater, A_TimeIdle, 600000, MsgBox, The last keyboard or mouse activity was at least 10 minutes ago. は、 IF A_TimeIdle > 600000, MsgBox, 10分間入力がなかった ということだと思うんだが。 The number of milliseconds that have elapsed since the system last received keyboard, mouse, or other input. This is useful for determining whether the user is away. This variable will be blank unless the operating system is Windows 2000, XP, or beyond. Physical input from the user as well as artificial input generated by any program or script (such as the Send or MouseMove commands) will reset this value back to zero. Since this value tends to increase by increments of 10, do not check whether it is equal to another value. Instead, check whether it is greater or less than another value. For example: IfGreater, A_TimeIdle, 600000, MsgBox, The last keyboard or mouse activity was at least 10 minutes ago.
失礼。 何か入力があると0になる。
545 :
541 :2005/05/10(火) 21:18:40 ID:BRBDtpga
>>539 結局どうなってほしいの?
内容は合ってるから、入力があっても無くても実行されるんなら
やっぱり環境のせい
素直にA_TimeIdlePhysicalを使えばいいと思う
どうしても、原因を知りたければ
SetTimer, test, 1000
test:
ToolTip, %A_TimeIdle%
return
にするとか
>539 10分ごとに 5秒間無操作だったら hoge送信する 何がやりたいんだがよくわからんが 5秒間無操作状態なんてちょっと小休止してたらすぐだし。 SetTimer→60秒 TimeIdle > 15秒くらいで とりあえず動作チェックとかしてみてはどうか
指定した時間が経つとPCをロックする。 LockOutTime に分を入れておく。0ならオフとなる。 LockOutTime = 10 SetTimer,LockPC,on return LockPC: OrgFormat := A_FormatFloat SetFormat,Float,0.0 LockOutRemain := (LockOutTime * 60000 - A_TimeIdlePhysical) / 1000 if (LockOutTime < 1) SetTimer,LockPC,off else if (LockOutRemain < 1) { SetTimer,LockPC,10000 tooltip,,,,15 Run, rundll32.exe user32.dll LockWorkStation } else if (LockOutRemain < 61 ) { SetTimer,LockPC,1000 x := A_ScreenWidth / 2 - 50 y := A_ScreenHeight / 2 tooltip, あと %LockOutRemain% 秒でロックアウトします,%x%, %y%,15 } else { SetTimer,LockPC,10000 tooltip,,,,15 } SetFormat,Float,%OrgFormat% return
548 :
539 :2005/05/11(水) 13:07:01 ID:wsBZ7SSX
5秒は短すぎたというのもある。 実際はこう書いていて、 test: If A_TimeIdle > 600000 Send, hoge MsgBox, 10分間入力がなかった return これは、 test: If A_TimeIdle > 600000 { Send, hoge } MsgBox, 10分間入力がなかった return つーことだったのかと気づいた。今は、 test: If A_TimeIdle > 600000 { Send, hoge MsgBox, 10分間入力がなかった } return こうしている。
549 :
541 :2005/05/11(水) 14:12:49 ID:hbgHet1s
>>548 分かりにけーよ
結局解決したの?してないの?
あとsettimerが10分のままだったら誤差が10分だっつーの
550 :
539 :2005/05/11(水) 16:08:15 ID:wsBZ7SSX
解決したよ。
誤差はあるが、要は操作していないときに動いてくれればいいからOK。
んでだな、流行らせるページの
ttp://lukewarm.s101.xrea.com/Tutorial.htm #Persistent
SetTimer,ExecWWWC,60000
return
ExecWWWC:
If A_TimeIdle < 300000
Run,d:\app\wwwc\WWWC.exe
return
は違うと思うが、どーよ。
で?
急激にスレのレベルが下がったな・・・
だな。 何の情報もなく、スレの感想書くやつが現れるまでになったな。
>>552-555 の事だよ!
つーかそれも含めて分かった上で書いてるんだから
面白いレスが思いつかないなら書くなよ
> 面白いレスが思いつかないなら書くなよ それってID:SGxNRc0tのことですか?
あのさ、お前それ書くとき何秒考えた? 誰でも考え付くってことはわかるよな。それも無理か? 俺を叩くのもスレを荒らすのもとりあえずはどうでもいいんだよ ちょっとは考えろって言ってるんだ で、次あたり俺の書いたレスをコピペして適当に変える気だろ? ってかいたら「ああコピペされたらむかつくから予防線はってるのか」だろ 誰でも考え付くことを得意げにやってるお前の馬鹿さ加減にいらいらしてることに気付づけやカス とりあえず次は頑張って捻ったことを書けよ
風俗行って「なあ、お前の両親はこの仕事してること知ってるのか」って言ってそうなやつだな。
そんな奴っているのか 少なくとも俺がとった客には居なかったな
560 :
名無しさん@お腹いっぱい。 :2005/05/12(木) 14:12:51 ID:Q0/HDweD
マウスの左ボタンを押しながらホイールで Alt押しながらホイール、にしたいのですが、 どうすればよいでしょうか。 下のだと駄目でした。 LButton & WheelUp:: IfWinActive, Sleipnir Send,!{MouseClick, WheelUp} return
ミスってるな…一応 Send,!{WheelUp}
563 :
560 :2005/05/12(木) 15:44:43 ID:Q0/HDweD
>>561 レスどうも。
>>538 のホイールリダイレクト(←便利)を切ったら、それでできました。
同時に走らせられないもんですかね。
よくわからんが ~LButton & WheelUp:: じゃあかんのか?
565 :
560 :2005/05/12(木) 19:06:25 ID:Q0/HDweD
あかんです。
ほんなら↓はどないだ? 例によって全角スペース→半角2スペで。
WheelUp::
GetKeyState,key,LButton,P
if(key = "D")
{
IfWinActive, Sleipnir
Send,!{WheelUp}
}
else
Gosub,WheelRedirect
return
WheelDown:: Gosub,WheelRedirect
WheelRedirect:
>>538 の中身
return
567 :
560 :2005/05/12(木) 20:55:15 ID:Q0/HDweD
うまくいきました。ども。 ただ、~LButton & WheelDownすると「きた」と入力されるのが謎。 スクリプト見てもそんなのないし。
>>547 =538=500=486=454=451=373=333= etc. だが(藁
やっぱ住人は少ないのかなぁ。今日も3人(+愉快な仲間たち)で会話っぽいし。
>>500 とか
>>547 みたく思いつきで適当に書いたりしてるけど、反応ないと何かツマンネ。
プギャーくらいは欲しいぜよ。
他スレで工作員をたまにやったりしてるんだが、やっぱ布教が足りんのかな。
興味の有るネタじゃないとわざわざ書いてやるのマンドクセ
質問だと自分のわかる範囲ならレスつけやすいんだがな 投稿系スクリプトは己に必要がないとなかなか試さないからなぁ 使ってないソフトの制御とかだと試しようもないし ちなみに漏れは、このスレ内の流れと関連のないスクリプトは なるべく流行らせるページの投稿スレのほうに貼るようにしてる。 どっちに貼ってもレスつかないって点では同じだし。
すいません、あるファイルが選択されている状態で、 (たとえば)「Ctrl+Alt+P」が押されたときに、 そのファイルのフルパスを取得するにはどうすればよいのでしょうか?
エクスプローラ (ahk_class CabinetWClass) での話なら、 コピー(^C)してやればファイルパス取得可能。 ^!P:: ifWinActive,ahk_class CabinetWClass { ControlGetFocus,cls,A IfInString,cls,SysListView32 { Backup := ClipboardAll clipboard := Send, ^c selected_file_path := clipboard clipboard := Backup Backup = tooltip, %selected_file_path% } } return ちなみに、複数ファイルのパスを改行(`n)区切りで取得されるので、 場合によっては parsing loop で処理する必要がある
エクスプローラは←側にフォルダツリー出すとClass名変わるよ(ExploreWClass) 任意のホットキーで意識的に発動したいってことみたいだし デスクトップや他ファイラなんかでも効いたほうがいいだろうから WindowやControlはチェックしないほうが良いと思われ ^!P:: Backup := ClipboardAll clipboard = selected_file_path = Send, ^c ClipWait,0.5 IfNotEqual,ErrorLevel,0, return ;コピー失敗 Loop,Parse,clipboard,`n,`r { IfExist,%A_LoopField% { ;some action ifEqual selected_file_path, ,SetEnv,selected_file_path,%A_LoopField% else SetEnv,selected_file_path,%selected_file_path%`n%A_LoopField% } } clipboard := Backup Backup = tooltip, %selected_file_path% return
尚、ショートカット(.lnk)のリンク先のパスを取りたい場合は FileGetShortcutを使うといい
>>568 >>486 に関しては同情するが
基本的に人の作ったのに興味ない人間しか常駐してないだろ
分からない奴は読まないで質問するだろうし
>538みたいなのはビギナーがコピペで即動かせる反面
ある程度自力で環境作ってる人間には>563のように干渉したり
組込みが面倒だったりするんだよな。
関数も使えるようになったことだし、汎用モジュール化して>451みたいに
配布したほうが他人からは使ってもらいやすいかも。
>>575 逆に言うと人のソースをあてにせずとも自分で何とかできる人間は
多少は存在しているということなので
(漏れみたいに自分が書いたモン以外理解できないだけなヤシもいるが)
「要望出すと誰かがスクリプトを書いてくれるスレ」とかを立てたら
需要と供給が一致して多少にぎわうかモナー
577 :
576 :2005/05/13(金) 22:16:30 ID:2VWAiMYh
何かうまく説明できてないな(´・ω・`) 汎用モジュール化云々の下りは別に ホイールリダイレクトに対して どうこうしろって要求ではなくて 今後自分が投稿する時とかのことを言いたかった。
1.0.33 DllCall()実装キタ
拡張してんなぁ。 いっそのことコンパイルしてDLLも作れるように汁。
ArgTypeの指定がようわからん(´・ω・`) ↓の HMODULE* なんつーのはどういうTypeにすればいいんだか… BOOL EnumProcessModules( HANDLE hProcess, HMODULE* lphModule, DWORD cb, LPDWORD lpcbNeeded );
>>580 DllCall("psapi\EnumProcessModules","Int",hProcess,"Int*",hModule,"Int",4,"UInt*",dwNeed,"Int")
>>581 サンクスです。EnumProcessModulesまでOKになりました。
Ahkでウィンドウのアプリのフルパスが取れれば…と思ったんだけど
次のGetModuleFileNameExが ErrorLevel = -4になってまう(´・ω・`)
#a::
WinGet,PID,PID,A
hProcess := DllCall("OpenProcess", "int","0x410", "int","false", "int",PID)
Msgbox,Open ErrorLevel=%ErrorLevel% PID=%PID% hProcess=%hProcess%
if (ErrorLevel = 0) && (hProcess <> -1)
{
if(DllCall("PsAPI\EnumProcessModules","Int",hProcess,"Int*",hModule,"Int",4,"UInt*",dwNeed,"Int"))
{
Msgbox,Enum ErrorLevel=%ErrorLevel% hModule=%hModule% dwNeed=%dwNeed%
result := DllCall("PsAPI\GetModuleFileNameEx","Int",hProcess,"Int",hModule, "Char*",PName, "Int",1000,"Int")
Msgbox,ex ErrorLevel=%ErrorLevel% result=%result% PName=%PName%
}
}
result := DllCall("CloseHandle", "int",hProcess)
Msgbox,Close ErrorLevel=%ErrorLevel% result=%result%
return
何かもうここまでやるならCで書いたほうが早い気がしてきた。
>>582 ここにもうある
cgi19.plala.or.jp/lukewarm/news/2005_05.html#14
あー本当だ…管理人さん仕事早いな、そして考えることは皆同じということか 今まではDelphiで作った外部のEXE通してたんだけど、やっぱahk単体でできるのはいいね。 psapi.dllならAutohotkeyのパッケージに含まれてるし、w2k以前のOSでも使えるのがイイ
選択したテキストをクリップボードにコピーするのは↓でいいのですかね? 一応、機能しているようには感じるのですが。。。 ~LButton Up::Send,^c
>>586 それだとクリックアップがあるたびにCtrl-C送っちゃうから誤爆も多いかもね。
ある程度クラス名とかで制限したほうが良いと思う。
>>587 ホントだ。
Shift押しながらとかにしようと思ったけどうまくいかない。。。
Shift & ~LButton Up::Send,^c
>>589 う〜ん、色々試しましたが、ギブアップです。。。
~+LButton Up::Send,^c
unixみたいに選択即コピーって動作にしたいってことだと思うが Shift自体が選択開始キーなのでマウスと組み合わせると意図しない部分まで 選択されてしまったりしないか? ^c送信前に選択文字列があるかどうか調べられればいいんだろうけど Selectedが取れるのは一部のEditコントロールだけだしな。 PixelGetColor or PixelSearch でマウス(キャレット)付近に選択色があるか チェックするとか…
ある条件でマウスポインタのアイコンが変わるようにしたいんだけど どうすればいいか分かる人いる? 特殊なアプリ上は無視してマウスのプロパティの通常の選択を変更するだけでいいんだけど ちなみにOSはXP
593 :
名無しさん@お腹いっぱい。 :2005/05/17(火) 22:02:59 ID:ak4lmF1P
JavaDog みたいなの、あると便利ですよね・・・ 誰か作ってくれないかな(汗) 自分が作れないこともないけど、 そもそもJavaDogについて知ったのがつい最近だから、 作ってみても、質の悪いものしか作れなさそうで(汗)
594 :
名無しさん@お腹いっぱい。 :2005/05/17(火) 22:14:07 ID:aI7rmV96
AuoHotKeyで実現できる機能で、あると便利な機能のアイディアを出し合わない? ↓↓↓たとえばこんなの↓↓↓ 「を入力&」を入力&カーソルを「と」の間に移動
誰かエニグマ持ってきて
整理してみた↓↓↓ カーソル移動の間に「を&を&を」と「入力入力」
つまり、先にカギカッコを”「」”と打ちこんじゃうと。 すると”「”と”」”の間にカーソルを戻してくれると。 あまり意味ないんじゃないか? 各種括弧を効率よく入力する方法はいろいろ模索してるけど
つまり 1.入力:「 → 「▎ 2.入力:」 → 「」▎ 3.自動: → 「▎」 こういうことか。( ▎ はキャレット) ワープロでそういう機能が付いてるものはいくつかあるね。(一太郎とか) でも有っても使いたいとは思わないな。
>>600 サンクス。
このまま使わせてもらいます。
>601-602 解説サンクス、やっと理解できた。 JaneDoeだと見え方違うのかと思ってわざわざIE互換ブラウザで開き直しちゃったYO 「」は個人的にはあんまり必要性は感じないけど ソース書いてる時の {} () は閉め忘れ防止で、閉じてから 中身に取りかかるようにしてるのであったら便利かも知れぬ。
そんなのエディタやIMEにまかせりゃいい
このスレは、他のソフトで容易に可能なことを如何にしてAHKのみで可能にするか、というスレじゃないの? なんかここ最近ずっとそんな感じなんだけど
だな、「俺がこう言ってるから、お前らこうしろ」 ってむかつくよな。
>他のソフトで容易に可能なことを如何にしてAHKのみで可能にするか そうやって書かれると何かムダな努力をしているかのような(w 冷静に考えてみると確かにそうかもしれんがー
少しでも無駄な常駐ソフトを減らすためでもあるな
win9xの時代なら意味も大きかっただろうけど、今だとそれほど大きな意味は 無いよなあ、常駐減らし。もちろん少ないに越したことはないけど。
つうか、AutoHotKeyの可能性を試すスレじゃないのか? 様々なスクリプトを書くことに意義があると思うのだが。
>>613 じゃあ無駄なレスつけてないで、ゴリゴリとスクリプト書けば〜?
>>614 何イライラしてるの?煽ってる意味がわからん・・
言ってることとやってることが違うって言いたいのだが、 間違ってるかい?
>> 616 広く需要がなさそうだったり、個人的に(゚听)イラネって思ってても 面白そうだと思った誰かがコード書いて貼り付けるかもしれないし いちいち否定的なレス入れんでもいいよ ってなことを>606,613あたりは言いたいだけではないか そう書いたからって、別に要望受けつけの義務が生じるわけではないし 興味ないネタにスルーするのは自由だと思うが。
ソフト自体の有用性は疑うべくもないが、 素直にホットキーにvbsでも割り当てれば?って感じるケースもあったりなかったり
ん、まぁ、なんだ、少しイライラしてた。 すまんかった。
とか何とかやってるうちに v1.0.33.01 出てた。
DllCall()が使いやすく(見やすく)なった。
同じマウス操作を、異なるアプリに異なるキー操作で割り当てようとしたら、 Duplicate label って出てエラーになるんですが、どうやったら回避できるんでしょうか?
ラベルが重複してるって言ってるじゃん 同じラベルにぶち込んでIfWinActiveとかつかって窓判定させて 分岐させて各処理をさせるように汁。
624 :
592 :2005/05/20(金) 13:55:52 ID:cx7cMcWi
>>592 の質問
流行らせるの方で聞くので取り下げます
626 :
592 :2005/05/20(金) 16:10:55 ID:cx7cMcWi
>>625 質問する前にぐぐった時点でそれは分かったんだけど
もともとdllの呼び出し方を知らない上に
autohotkeyから呼び出すサンプルも少ないんで
類推出来ずお手上げなので質問してみた
627 :
625 :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) }
↑ あ、ahkのバージョンは v1.0.33.01 でね。
629 :
592 :2005/05/22(日) 01:27:55 ID:pD90cfjA
>>627 出来ました
やっぱり俺のDllCallのやり方は全然間違ってました
どうもありがとう
630 :
592 :2005/05/25(水) 12:53:24 ID:62rl7YBY
あ、マウスカーソルに訂正
会社のにはATOK入れられないし言語バー邪魔なんで、
IME状態が切り替わったり、フォーカスが変わったりしたら
キャレット位置に [あ] [A_] のようにATOKナビもどきを表示させようと思い、
投稿スレの
>>94 を独自にFunction化して状態表示させるのやってみた。
試みとしてはうまくいって便利だったけど、上にもあるように重かった。
ダブルクリックを拾ってくれないし・・・
やっぱ定期的に SendMessage で応答待つのが痛いのかな
IMEヲチャ外しはまだ先になりそう・・・
IMEウォッチャー相当のDLLを作ってAPIでAHKのプロセスにスレッドを作って監視とか出来ないかな 敢えてAHK内でやる意味が皆無だが
635 :
632 :2005/05/25(水) 20:45:39 ID:jjP0j4R+
API使えるようになったんで、IME関係の制御とかググって見たんだが 自アプリ以外のIMEの状態はAPIでは見れないらしい。 …ってことでAutohotkey以外でもSendMassageで問い合わせ してるんだろうと思ってたんだけど。 IMEウォッチャーはどうやって制御してるんだろか
AHKってオープンソースなんじゃなかったっけ? 改造できないの?
ImmGetConversionStatus()とか。
重いって言ってる人はどのくらい重いの? 俺は100msで監視してるけど特に重くないけど
>637
他アプリのIMEのハンドルがImmGetContextで取れないので…(´・ω・`)
よく考えたらSendMessageでもシステムメッセージフックして盗み見するのと
毎回自分で投げて問い合わせするのじゃ重さ違って当然だわ。
何いってんだ漏れ orz
こういうのはTTBaseのが得意そうだな
現状のAhkでやるなら高速で常時回すのは諦めて
IME ON/OFFキー押下 と アクティブウィンドウが切替わったタイミングで見る
& EXCELなどセル単位で自動でモードが変わるアプリだけ1秒間隔で見る
とかかな
>>636 開発環境とスキルさえあれば可(漏れには無理ぽ)
>>639 AttachThreadInputで対象プロセスに入り込んでからでもダメですか?
会社からなんでID変わってますが 639です
>>640 ごめん意図が汲み取れない。hWndとhIMCにあえて0突っ込んでみたけどだめだった。
とりあえず自分はこの辺りまで試して挫折しました。
WinGet,hWnd,ID,A
hIMC := DllCall("imm32.dll\ImmGetContext",Uint,hWnd, Uint)
ret := DllCall("Imm32.dll\ImmGetConversionStatus",Uint,hIMC, Uint*,lpfdwConversion, Uint*,lpfdwSentence, Int)
msgbox, hWnd=%hWnd% hIMC=%hIMC% lpfdwConversion=%lpfdwConversion% lpfdwSentence=%lpfdwSentence% ret=%ret%
DllCall("imm32.dll\ImmReleaseContext",Uint,hWnd, Uint,hIMC, Uint)
>>641 ググッたらこんなページが。仕事中なんでちゃんと見てないけど
ttp://forums.belution.com/ja/vc/000/190/55.shtml つか正直もうよくわかりません、誰かパス
1.0.34 組み込み関数が増えた。
644 :
名無しさん@お腹いっぱい。 :2005/06/01(水) 12:43:29 ID:qIOPObk6
保守
645 :
名無しさん@お腹いっぱい。 :2005/06/07(火) 16:24:29 ID:ZMpkIRz1
だれもいない・・・・
1.0.35.05 - June 6, 2005
質問があるのでよろしくお願いします エクスプローラーで複数ファイルを選択後、右クリックから送るでそのディレクトリにフォルダをつくり 選択したファイルをそのフォルダに入れようとおもってます GUIを表示してそこにドロップすればファイル名とパスは取得できるのですが スクリプトを起動してない状態から送るでファイル名を取得するやり方がわかりません コンパイルしたスクリプトだと送るに登録は出来ました 実際にはさらにそのフォルダを別アプリに送る予定です
つか、コマンドラインとかそういうのまず覚えれ。 バッチファイルで同様のもの作れんようじゃAHKは無理だぞ。
651 :
647 :2005/06/10(金) 14:44:08 ID:FA9JzWUy
説明が下手で申し訳ありませんでした。
>>650 ありがとうございます。スクリプトのコマンドライン引数の項を見逃しておりました
item1=%1%
SplitPath,item1,OutFileName,OutDir
move1=%OutDir%\file\%OutFileName%
FileCreateDir,%OutDir%\file
FileMove,%item1%,%move1%
return
実際にはloopで30ほどやってます
これをコンパイルして送るに登録したら望みどおりの動作になりました
複数ファイルのドロップに対応していないDVD書き込みソフトでしたので非常に助かりました
vk1Dsc07B & M::MouseClick, L,,,,,D
vk1Dsc07B & M up::MouseClick, L,,,,,U
vk1Dsc07B & N::MouseClick, R,,,,,D
vk1Dsc07B & N up::MouseClick, R,,,,,U
こんな感じでキーボードにマウスクリックを割り当ててるものの,
キーに一切さわらない状態でも一部のアプリケーションでM,Nが押しっぱなしとして認識されてしまう。
ゲームで起こることが多いのでDirectXとか絡みなのかなぁ…
これとか↓で確認できる。
ttp://www.vector.co.jp/soft/win95/edu/se368955.html 環境はXP SP2,AHK1.0.34.00
原因分かる人います?
>>652 AHKに限らずこの手のソフトはDirectXと相性悪いよ。
怒涛のばーじょんうぷage
655 :
名無しさん@お腹いっぱい。 :2005/06/21(火) 16:56:38 ID:BpI1xQw10
でも日本で使ってるやつは7人だけ
まさに七人のオタ…いや、侍!
本家ではマイナーバージョンアップが続いてるようだけど Show Menu後の動作が微妙に改善されてるね ESCで抜けた時とか、ちゃんと直前のアクティブウィンドウに戻ってくるようになった。
658 :
名無しさん@お腹いっぱい。 :2005/06/26(日) 18:57:24 ID:H0kSirzq0
みんなフルパスからファイル名取得するときどうしてる? SplitPathだと「ソ」とかダメ文字入ってたら変になるよね。 オレDLLつくって、DllCallして取得してるけど、もっと簡単な方法ある?
「DLLつくって、DllCall」が一番簡単だと思う。 作るのも使うのも。
あれ、パス切り出すAPIがあったような無いような
ダメ元でクリスちんに要望出してみるとか。 本家BBSの常連さんたちは結構攻撃的なので必要性がわからんとか 無駄にメモリ食うだけとかって猛反発されるだろうけど、 サンプルソースの一つも付けてお願いしたらクリスちんは案外対応してくれそうな気もする。
ver 1.0.36 ClipboardのChangeイベントキタ
1.0.35からのキーマクロの仕様変更にまだ対応できてない俺がいる
664 :
名無しさん@お腹いっぱい。 :2005/06/30(木) 05:54:39 ID:iGtXyAyT0
とうとうダブルクリック実装された?
とりあえず保守 現在の最新のバージョンは1.0.36.02 (released July 3, 2005)
666 :
名無しさん@お腹いっぱい。 :2005/07/08(金) 15:15:12 ID:90AmP/Jj0
そこそこ利用者は多いのにスレが伸びないのは何故
それぞれ自足してんじゃない?
プログラミングを既習でないので、変数が出たり長い行にはついていけません。
>666 点呼スレではまだサッカーができない状態だがナー
わかる人にはわかるけど、わからない人には全く手がつけれれないこのソフト。
行き当たりばったりに機能追加しすぎてるから、 みんな2.0で作り直されるのを待ってるんだよ
最近のはエンバグ大杉。
#\::run, notepad.exe でwinキー+\(右シフトキーの横)でメモ帳が起動するようにしたいんですが起動しません。 これじゃ何でだめなんでしょうか?
#vk74sc03F::run, notepad.exe
>>674 ありがとうございます。動かなかったですがバーチャルキーを色々試してみます。。。
ホントだオレもうごかねーや('A`)
#sc073::run, notepad.exe これでいけました。メニューのview -> Key history and script infoで調べればよかったですorz
特定のファイルとアプリケーションを関連づけて起動することが できるのですか。 #sc073::run, notepad.exe,c:\hoge\foo\bar.txt みたいにしてみたのですがリロードエラーになります。
> リロードエラーになります。 当たり前だろw
680 :
678 :2005/07/10(日) 19:50:06 ID:sXwd0jjA0
#sc073::run, notepad.exe c:\hoge\foo\bar.txt いじっていたらできました。
これって実行してるスクリプトを停止する方法ってどうやるんでしょ プログラムミスって無限ループって止めらんなくてちょっとあせった
無限ループになったら割り当てておいたキーでリロードしてる 若しくはループしそうな所に抜け出すキーを置いておく
マウスが効く時はタスクトレイ操作で何とか終わらせてるけど いざとなったら Ctrl+Alt+Delでタスクマネージャ呼び出してプロセス殺すしかないかも 動作確認中はリロードと終了はホットキー割り当てといたほうが無難だな
684 :
名無しさん@お腹いっぱい。 :2005/07/17(日) 20:48:28 ID:joMCoDhK0
このソフトで、 非アクティブを自動操作(キー連打など) しながら、アクティブウィンドウで自由操作 するという、状態を作り出すことってできますか?
出来る。
>>685 どうやって設定すればいいですか?
初心者なので、基礎の基礎から教えていただけませんか?
OSはMEです。お願いします
>>686 SendMessageでも送ってやればいいじゃん。
SendMessageの使い方についてはスレ違いなのでここで聞かないように。
>>686 流行らせるページ見て自分で試行錯誤してから聞けよ…
このソフトは自分である程度調べられないヤツには使えない。
ほんとに
>>684 のことが出来るの?
できなかったら、だいぶ時間を無駄に使っちゃうけど。
>>689 時間を費やす気がないなら諦めれ、自称初心者ならそれこそ腰据えてやる覚悟が必要
あと98系OSは結構機能に制限出るぞ、SendMassageくらいなら変わらんと思うが。
692 :
684 :2005/07/18(月) 03:31:02 ID:MgOOM9cI0
SendMassageですよね。それってたしか第3引数。 だとすると、直接、そのウィンドウに反映するキー操作ではなく 内部からのもの。ということは、メッセージは打てても、 テンキーなどの操作はできないってことですよね。 じゃあ、私のやりたいことはできないかな。
なに、この人。
情報小出しにするなら早く出てけよ…?ビキビキ
まぁなんだ、夏休みだな
>>692 おめーのやりたいことなんてシラネーヨ。
エスパーじゃねーっつーの。
>>684 ではないんだが
SendMassageを勉強するのにいいサイトってどこ?
698 :
684 :2005/07/18(月) 23:53:09 ID:MgOOM9cI0
>>697 SendMassageの使い方覚えるのに、
いいサイトも糞もあるかよ。
引数の概要だけわかればそれで充分だろ。
ハンドルの取得方法がわからないとか、仮想キーコードがわからないってなら
SendMassageとは関係ない次元の話だし。
>>698 間違いなく出来るからがんがれ。
がんがる気の無い奴にはこのソフトは使えない。
702 :
684 :2005/07/19(火) 08:14:55 ID:Q81VsW9F0
Loop, 5000 ControlSend, WA_INACTIVE , F8, ウィンドウ名 #Hotstring EndChars F2`t 非アクティブのとき、そのウィンドウでF8ボタンを5000回押す。(できれば無限がいいのですが) というスクリプトを作ってみましたが。しかし、このスクリプトでは、うまく機能しませんでした。 いろんな説明を読んで作ってみましたが、やはり、ちょっと難しかったのでアドバイスください お願いします。
SendMassage なんて隠し API があったのかよ。すげぇな。
まるごと教えてクンなら放置しようかと思ったが、何やらガンガっている様子
>>702 上にも書いたけど Send(ControlSend)とSend(Post)Massageを混同しちゃいかんよ
前者はAutohotkeyの内部コマンド、後者はWin汎用機能へのバイパス用だ
ControlSendが使えるならその方が手っ取り早い、がこいつは送り先によって
効かなかったりするので、まずはWin+AとかのホットキーでF8送れるか試してみれ
#a:: ControlSend,コントロール名,{F8},ウィンドウ名
コントロール/ウィンドウ名は 付属の Window Spyで調べられる。
その他のヒント: #Persistent、ifWinNotActive、SetTimer
706 :
684 :2005/07/19(火) 21:45:47 ID:Q81VsW9F0
>>705 回答ありがとうございます。
まず、コントロール名に何を打ち込んだらいいのかわかりません。
ahk_class と ClassNN を試してみました。インスタンス番号はわかりませんでした。
たとえば、ギコナビなら ahk_class TGikoForm なので、 #a:: ControlSend,TGikoForm,{F8},ギコナビ
という感じでやっていました。
コントロール名が間違っているかもしくは、使いたいウィンドウにはControlSendは使えない、ということがわかりました。
その他のスクリプトも試していこうと思います。
>>706 つか、具体的にどのソフトでどういうキーを連打させたいとか書いてみれば?
…レス抽出8件中3件が漏れでした (ノ∀`)
教えて君、長居する気満々だな
711 :
684 :2005/07/20(水) 03:54:41 ID:H8DNMD750
なんだか罪悪感に苛まれたので、質問はもう止めます。 回答してくれた方ありがとうございました。
あーあ追い出しちゃった。点呼スレで10人しかいないのにw
いくら過疎スレでも教えて君はいらないだろ・・・
目的さえしっかり書いてくれればスクリプト書くのは楽しいからいいんだけど、 教えるのはめど過ぎる
非アクティブウィンドウをそのまま操作するのって結構面倒なんだよね。 それはそうとキー連打で何をやりたかったのか気になる… 田代砲もどきとか、2ちゃんビューア上でのオートリロードとかかな。 アイドルディレイ一切なしじゃ遅延キーリピート発生しまくりでどえらいことになりそうだけど
そのときそのときで異なるファイルを暫定的にホットキーに オートマチックに登録したいのですが、AHKでファイル操作 はできますか。 @ ファイルパスをクリップボードに取得(手動または 他のアプリケーションにまかせる) A そのパスのファイルをホットキーに登録するには iniファイルを自動的に書き換える そのためのファイル操作はどうすればいいですか。 一応ひまわりとの連携でならできるのですが。
718 :
716 :2005/07/25(月) 12:35:24 ID:SM6uSrdh0
THX 暫定的というよりも当面というべきだったか、とりあえず 別のファイルを登録するまでは有効な設定にしておける ような使い方なもので。 それにしてもAHKやひまわりはクリップボードの利用が 手軽にできていいね。
>>717 お優しい人、ありがトン
>>718
まあ、FileAppendとかINI処理コマンドで行けるんちゃいますか
ファイルパスは別のファイルに書き込んで常駐スクリプトはいじらなくてすむようにするとか
>>718 iniを別ファイルに取らないで自分で自分を書き換えてみるテスト
ホットキーと実行先サブルーチンもコード追加してやれば動的に変えられまふ
(このままじゃわざわざiniReadで読み出してる意味ないけど)
/* ------ 設定部ini (AHK上ではコメント扱い)
[section]
HotKeys=#a
subName=exec_sub
path=C:\Documents and Settings\tama\デスクトップ\DllCallTest.zip
;---------------------------------------------
*/
;AutoexeCute部
IniRead,myhotkey,%A_ScriptFullPath%,section,HotKeys
IniRead,mysub,%A_ScriptFullPath%,section,subName
hotkey,%myhotkey%,%mysub%
return
;実行部
exec_sub:
IniRead,mypath,%A_ScriptFullPath%,section,path
run,%mypath%
return
;書換部
#c:: IniWrite, %Clipboard%, %A_ScriptFullPath%, section, path
しまった path= のとこテストしたままだった。 よりによってデスクトップだし orz
724 :
716 :2005/07/26(火) 12:19:10 ID:tnSi/fCr0
ソース自体を書いてもらって恐縮です。 /* [section] path = ;暫定ファイルのパス */ ;ラン #a:: IniRead,mypath,%A_ScriptFullPath%,section,path run,%mypath% return ;ini書換え #c:: IniWrite, %Clipboard%, %A_ScriptFullPath%, section, path 上のようにして意図したとおり動かせました。 当方タイムフォーマットするにも骨がおれたレベルで、 ありがたたく頂戴します(ホットキーは別のキーに 割当てさせてもらいました)。 またiniファイルをリロードしなくてもよいとはAHKのほうも よくできていると思います。 自分のやり方に比べるとクールなやり方を教えていただき ありがとう。
せっかくなんでエラー制御も。 ;ini書換え #c:: IfExist,%Clipboard% IniWrite, %Clipboard%, %A_ScriptFullPath%, section, path return 0x5C(\)を含む全角ファイルを扱う場合はこれだと多分だめぽ Ahkは向こうのソフトなんでファイル操作関係のコマンドは\がダメ文字になってる
誰か他のソフトと連携させて面白いことやってる人いないの 停滞気味だ
個人的なスキマを埋めるようなスクリプトが多いので、 ここで書けるようなネタがない。
#NoTrayIcon #SingleInstance Gui, Add, Edit, vArg X Y W220 Gui, Add, Button, gRef x+6 ys-2, 参照(&B) Gui, Add, Button, Default gArg x+6 ys-2, &OK Gui, Show, , 引数の指定 return Ref: FileSelectFile, select, , %A_MyDocuments% IfNotEqual, select GuiControl, , Arg, "%sel%" return Arg: Gui, Submit SplitPath, 1, , dir Run, %1% %Arg%, %dir% ExitApp GuiEscape: GuiClose: ExitApp
#NoTrayIcon #SingleInstance Gui, Add, Edit, vArg X Y W220 Gui, Add, Button, gRef x+6 ys-2, 参照(&B) Gui, Add, Button, Default gArg x+6 ys-2, &OK Gui, Show, , 引数の指定 return Ref: FileSelectFile, select, , %A_MyDocuments% IfNotEqual, select GuiControl, , Arg, "%sel%" return Arg: Gui, Submit SplitPath, 1, , dir Run, %1% %Arg%, %dir% ExitApp GuiEscape: GuiClose: ExitApp
#NoTrayIcon #SingleInstance Gui, Add, Edit, vArg X Y W220 Gui, Add, Button, gRef x+6 ys-2, 参照(&B) Gui, Add, Button, Default gArg x+6 ys-2, &OK Gui, Show, , 引数の指定 return Ref: FileSelectFile, select, , %A_MyDocuments% IfNotEqual, select GuiControl, , Arg, "%sel%" return Arg: Gui, Submit SplitPath, 1, , dir Run, %1% %Arg%, %dir% ExitApp GuiEscape: GuiClose: ExitApp
#NoTrayIcon #SingleInstance Gui, Add, Edit, vArg X Y W220 Gui, Add, Button, gRef x+6 ys-2, 参照(&B) Gui, Add, Button, Default gArg x+6 ys-2, &OK Gui, Show, , 引数の指定 return Ref: FileSelectFile, select, , %A_MyDocuments% IfNotEqual, select GuiControl, , Arg, "%sel%" return Arg: Gui, Submit SplitPath, 1, , dir Run, %1% %Arg%, %dir% ExitApp GuiEscape: GuiClose: ExitApp
#NoTrayIcon #SingleInstance Gui, Add, Edit, vArg X Y W220 Gui, Add, Button, gRef x+6 ys-2, 参照(&B) Gui, Add, Button, Default gArg x+6 ys-2, &OK Gui, Show, , 引数の指定 return Ref: FileSelectFile, select, , %A_MyDocuments% IfNotEqual, select GuiControl, , Arg, "%sel%" return Arg: Gui, Submit SplitPath, 1, , dir Run, %1% %Arg%, %dir% ExitApp GuiEscape: GuiClose: ExitApp
鯖重いからって連投すな(´д`)
うは、なんかやけに重いと思ってたけど多重投稿になってる… マジごめん。15分以上経ってから一気に書き込まれてたよ… えーと、なんかネタ書けってことなのでexe実行時に引数を渡せるスクリプトです。 fenrirを使ってると、たまに引数を指定して起動したいときがあるんで作りました。 fenrirだったら↓みたいな感じで登録してみてくださいな。 [.exe; 引数をつけて実行(&A)|AutoHotkey.exe D:\ap\AutoHotkey\Scripts\arg.ahk %P ] ほんとスイマセン。荒らしとかじゃナス。
うは、なんかやけに重いと思ってたけど多重投稿になってる… マジごめん。15分以上経ってから一気に書き込まれてたよ… えーと、なんかネタ書けってことなのでexe実行時に引数を渡せるスクリプトです。 fenrirを使ってると、たまに引数を指定して起動したいときがあるんで作りました。 fenrirだったら↓みたいな感じで登録してみてくださいな。 [.exe; 引数をつけて実行(&A)|AutoHotkey.exe D:\ap\AutoHotkey\Scripts\arg.ahk %P ] ほんとスイマセン。荒らしとかじゃナス。
学習しる
(;^ω^)
わろーた(´・ω・`)
740 :
名無しさん@お腹いっぱい。 :2005/07/28(木) 05:13:32 ID:tI1HClDB0
ジョイパッド関係で質問です。 Joy1を押したらキーボードのAを入力みたいなのは出来るんですけど、 その逆はできないのでしょうか? ジョイパッドを(接続はしている)触らずにジョイパッドでの操作がやりたいのです。 ジョイパッドエミュ見たいなものを探していて、 このソフトに出会ったのですが、 やり方が悪いのか出来ませんでした。 もし出来るのであればスクリプト例を教えてください。 お願いします。
ジョイパット持ってないのでよくわからんが、 レスないみたいだから、試しに書いたスク リプトを披瀝してみては(できた方とできな いものを)。
>>740 できない希ガス。
出来たとしてもDirectXとの相性問題で使い物にならない可能性大。
こないだやろうとして失敗した。
\\PC1\A001 A001-001.txt A001-002.txt ←全角混じり A001-003.txt \A002 ←全角混じり A002-002.txt A002-003.txt ←全角混じり サーバーの中の連番フォルダ/ファイルが上みたいな感じになっちゃってるんだけど 文字列の全半変換とかAutohotkeyで扱うのは大変かな?
>744 キー入力関連とか操作系のことを考えないなら、あえて AutoHotkey を選ぶ理由はないと思う。 他のもっと汎用的なスクリプト系言語を使う方が楽だと思う。
747 :
744 :2005/07/30(土) 11:22:38 ID:BmwQ4i3R0
>>745-746 うーん、やっぱそうですかね。
自分スクリプトはAutohotkeyと、せいぜいエディタ(秀丸)のマクロくらいなんで
つい何でもahkでできればと考えてしまうんですよね。
WSHとかPerlとかDMonkeyとかはどうにも敷居が高い感じがして。
(VB(A)は仕事で使ってたけどファイル操作系は結構たいへんだったような)
ahkは(流行らせるページ管理人さんによる)リファレンスがしっかりしてるので
とっかかりやすかったんだけど。
748 :
名無しさん@お腹いっぱい。 :2005/08/10(水) 17:12:26 ID:9uVaFUC10
age
DllCallで LPCSTR型(const char*)の戻り値ってどう設定したらいいんだろ 一応↓だと8バイト目までは取れるんだけど、それ以降ぶっちぎれてしまう。 "Str" "Str*" "UStr" "Ustr*" あたり指定するとアプリエラーで落ちてしまうし(´・ω・`) dengakudll = D:\Ap\_reg\Hidemaru\DengakuDLL.dll p := DllCall(dengakudll "\TOHANKAKU","str","01234567890","Uint64*") DllCall("kernel32.dll\lstrcpy", "str",str1, "char*", p) msgbox, "%str1%"
なんだか変なことになってますねぇ・・
AHKみたいなことのできるPerlモジュールとかってない?
>>752 有り難う
これでわけのわからんAHK文法を覚える必要がなくなったよ
せめて他の言語に似せればいいのにな・・・
確かに今のAHKの文法はdでもない…。
下のような感じでスクリプトを書いてみたのですが >if 文字入力中だったら というところがime_func.ahkを見てもよく分からないのですがこんな感じのことは出来ますか? よろしくお願いします。 やりたい事> "/"から打ち始めたときにIMEがONだったらOFFにする。 入力途中の場合は何もしない(”・”等もそのまま入力) #include ime_func.ahk $/:: IfWinActive,ahk_class sample_class { if IME_CHECK("A") = 0 { Send,/ { else { if 文字入力中だったら { Send,/ } else { IME_OFF("A") Send,/ } } } return
757 :
755 :2005/08/15(月) 16:51:09 ID:QJns5zAD0
>>756 そっか出来ないのか。残念
情報ありがとでした
左WINでIMEをONOFF 一個目のsendmessageのerrorlevelでIMEの状態を取得 見当違いでしたらごめんなさい lwin:: winget,hWnd,ID,A IMEWnd:=dllcall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint) detecthiddenwindows,ON sendmessage 0x283,0x005,,,ahk_id %IMEWnd% if errorlevel=0 sendmessage 0x283,0x006,1,,ahk_id %IMEWnd% else sendmessage 0x283,0x006,0,,ahk_id %IMEWnd% return
URLDownloadToFileを使うと、実行している間PCが完全に固まります なんとかならないでしょうか・・・
>>759 ダウンロードするファイルがでかすぎるんじゃない?
cURLかWGet使うとか。
誰かメモスクリプトを作ってください! ・なんかキー押すと起動 ・タブ式で、Ctrl+Nでダイアログが出て、名前をつけたタブを追加できる ・内容を書き込んで終了するとかってに保存 ・タブ名.txtでどこかにテキストを保存、起動すると読み込み こんなの!!
素直に紙2001とかその辺使った方がいい気がするけど・・・
あれ作ってほしい D&Dでアイテム落とすとそこのマスクが解除したりボタンが有効化するやつ。
アイテムってなんのアイテムや
>・タブ式で、Ctrl+Nでダイアログが出て、名前をつけたタブを追加できる これのやり方がいまいちよくわかんないんだよなぁ。似たようなメモスクリプトはちょっと前に作ったんだけど。
AutoHoeKeyでパスマスク取る関数は無かったと思う
>>765 p://hai-office.ath.cx/soft/soft.html
Passenger
こういうのだろう
AutoHoeKey
769 :
160 :2005/08/20(土) 20:22:29 ID:CQrJj7Hz0
>>770 そうです、今QuickmemoをAHKで起動させているんですよ。
それでEscで閉じるとか少し機能つけたんですが、
常駐できないのでAHKで作れたらいいなとおもったんです。
常駐ソフトでなくてもホットキー一発で呼び出せるのがAHKの良いところだと思うけど。 まぁ使い方は人それぞれか ESC → WinHide 使って裏で待機 Ctrl+N → WinShow で表示とかにしたら?
やっぱりAHKに限らず発想の転換って大事だよな。
時間が取れたので、本家のwikiを読んでみた。 自動インストーラやGUIクリエーターみたいな便利な物あったのな。 アドレスバーでDOSコマンドを実行するスクリプトは応用できそうだ。
775 :
名無しさん@お腹いっぱい。 :2005/08/27(土) 11:53:01 ID:L28OZRmI0
AHK、まだなれてないんですが、 サブメニューつき(できればショートカットキーつき)のランチャ作ろうかな、とおもってます。 が、車輪の再発明はなんなので、もしよろしければどなたか、 同じようなのをつくってたら、ソースみせていただけませんか?
そんな程度ならShorter使えば?
>>775 Menu,hoge,Add,menu1,menu1
Menu,hoge,Add,menu2,menu2
Menu,hoge,Show ,550,300
return
こんな感じに地道に追加してくしかないと思う。
激しくめんどうなので
>>776 の言うとおりshorter使った方がいいよ。
iniを読み込んでメニュー化するスクリプトならある。 何となく動くところまでは書いたが途中で興味を取られ放置したので 結局使ってないが。
最近、キーのラベルに~をつけて Ifの条件にマッチしなかったら何もせずにスクリプトを 終わらせる書き方をよくやってるんだけど、 ~を付けないで条件にマッチしなかったら ラベルのキーをsendして終わりにする方が 本来正しいのかな? sendでキーを発行すると、たまに正常に動作しないことが あるんだけど。
「Shiftを押しながらだとキーを二連打する」や 「Aを押せば1が入力され0.5秒後に2が入力される」といような設定はできるのでしょうか。 何分ソフトウェアに無知なので設定がわからないのですが、できるのならガンバテみようと思います。
>>779 システムのキーはなるべくなら奪わない方がいいような気がしてるので
「状況によっては 押下内容をキャンセルする」ような処理をしたい場合以外は
~付きでやってまふ。 好みの問題だけどコードも最低1行は減るしね
上で車輪の再開発とかの話題あったけど
一生懸命書いたルーチンと同機能のものが投稿スレに上がってたよ
つか、それ自分で投稿したやつだった。(書いたことすら忘れてた)
しかも同じところでつまづいて質問スレで教えて貰ってるし orz
783 :
名無しさん@お腹いっぱい。 :2005/09/06(火) 21:41:53 ID:ehOzHD4l0
このソフトで懸賞自動応募などは、できますか?
>>784 Cで書かれているんだ。
大変だったろうな。
786 :
783 :2005/09/06(火) 23:38:33 ID:ehOzHD4l0
>>784 むずかしそうですね。
とりあえず、ブラウザウインドのメッセジボックスに自動入力と
ボタンの自動クリックはできますよね。
operaやFireFoxは知らんけど、IE系ブラウザの場合 ブラウザ領域は全て Internet Explorer_Server1 になってしまう。(フォームのテキストボックスやボタンは 個別コントロールとして認知されないからSetFocusとかが効かない でもMouseClickで座標値指定してクリックすればフォーカスは移せるので 任意のページ限定でやるならできないことはないけどな。まぁがんがれ
つーか、IEならWSH使う方が早い。
Perlの=pod〜=cut みたいな複数行コメントは出来ませんか?
791 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 00:37:12 ID:pzUkXhi60
久々に日本語マニュアル更新された
792 :
名無しさん@お腹いっぱい。 :2005/09/14(水) 02:54:10 ID:woPB05vR0
昨日、autohotkeyを知った。xkeymacs+ssimeの環境をこれ一つに まとめたかったので、emacsバインドのスクリプトを探したが 見当たらなかった。 仕方がないから、練習を兼ねてなんとかそれっぽく動くのを作った。 需要があるかもしれないから、うpしようかと思ってみたら、 そこには既にemacsバインドのスクリプトが・・・orz
3ボタンになるやつが実現できなかったのでうpしてくれ
794 :
792 :2005/09/14(水) 21:02:25 ID:woPB05vR0
>>793 「3ボタンになるやつ」ってどういうのでしょう?マウスの処理ですか?
私が作ったのは、カーソルの移動、検索、ファイルの処理、アプリの終了
のキーボードショートカットをemacsライクにするあたりしか対応していないです。
しかも私のものよりも、きれいに作られたものが、「流行らせるページ」の
うpろだにありました。今は、これを改造して使っています。
どの動作を指しているのかわかれば、試せるかも。でも使い始めて間もないから
役に立たなかったらごめんね。^^
Viewたん、お気に入りにSEPARATORを入れられるようにして欲しいです。
誤爆orz
View使ってんなら誤爆警告をONにしとけ
798 :
名無しさん@お腹いっぱい。 :2005/09/15(木) 22:42:49 ID:Qg4sVzPN0
マウス下のウインドウタイトルにMajorが含まれていたらaを実行したいのだが、 うまくいきません。どなたかご教授いただけませんか? MouseGetPos, , , id, control WinGetTitle, title, ahk_id %id% IfInString, title , "Major" { a } Eles { b }
799 :
798 :2005/09/15(木) 22:43:28 ID:Qg4sVzPN0
Eles→Elseです。
"が余計
801 :
798 :2005/09/15(木) 22:55:07 ID:Qg4sVzPN0
メモ帳の上にマウスをもっていくとメモ帳が他のウインドウに隠れて、 それ以外のところにマウスをもっていくと再びメモ帳を表示させたいのですが、 メモ帳がActiveの時はうまくいきますが、ブラウザなどをActiveの状態で実行すると、 うまくメモ帳が表示されません。「WinSet,Top」ではまずいのでしょうか? #Persistent #WinActivateForce SetTitleMatchMode, 1 DetectHiddenWindows, On SetTimer,WindowView,500 Return WindowView: IfWinExist, 無題 - メモ帳 { MouseGetPos, , , id, control WinGetTitle, title, ahk_id %id% IfInString, title , 無題 - メモ帳 { WinSet,Bottom,,無題 - メモ帳 } Else { WinSet,Top,,無題 - メモ帳 } } Return
何がやりたいんだかいまいちよくわからんが アクティブにしたいなら WinActivate 非アクティブで常に手前にしたいなら WinSet,Topmost
タスクバー上をマウス中クリックすると特定のアプリが起動するようにするにはどうしたらいいでしょうか?
>>804 今シェルがエクスプローラじゃないんでこれを元に試してくれ。
~MButton::
MouseGetPos, , , , cls
IfEqual, cls, 「タスクバーのクラス名」, Run, 「実行ソフトと引数」(, 「作業フォルダ」)
return
>>805 参考にして少し弄ったらできました
ありがとうございます
ツールチップをマウスの位置じゃなく文字入力のときに出る点滅してるこれ→「 | 」の位置に表示するようにはできますか?
>>807 A_CaretXとA_CaretYを使う。
ToolTip , Text, %A_CaretX%, %A_CaretX% あと必要なら、CoordMode, ToolTip|Caret あたりも見とけ
かぶった上に間違えた ×ToolTip , Text, %A_CaretX%, %A_CaretX% ○ToolTip , Text, %A_CaretX%, %A_CaretY%
右手マウス、左手トラックボールに違う設定をすることはできますか?
ホットキーでコントロールパネルの項目を開けるようにはできますか? できれば開いたときのタブ位置も指定して
>>811 マウスの接続数はSysGetあたりで取れた筈だが、どのマウスが操作されたかは判別不能
ただAPIとかでどうにかなるかも知らんのでがんがって探しちくり
>>812 クラッシック表示にしてるのでタブ云々はわからんが
Run,Control.exe
でコンパネは開ける。
Run,Control.exe desl.cpl
みたいにコンパネファイルをパラメータ指定してやれば
直接 「画面のプロパティ」とかも開ける
>>811 OSには別デバイスとして認識されてるの?
されてないならAutoHotkey以前の問題。
給湯付きの水道で、水と湯を同時に出し
蛇口から出てきたぬるま湯を冷たい水と熱いお湯にきっちりわけるのは無理でしょ。
温度から水と湯の両方を出してることは判別できるけど。
>>812 ファイル名を指定して実行等からなら以下のようにすればできる。
rundll32.exe shell32.dll,Control_RunDLL 「*.cpl」,,「タブ番号」
例:スクリーンセーバーの設定
rundll32.exe shell32.dll,Control_RunDLL Desk.cpl,,1
ただしAHKではカンマはそのまま使えないのでエスケープしなきゃいけない。
Run, rundll32.exe shell32.dll`,Control_RunDLL Desk.cpl`,`,1
816 :
815 :2005/09/20(火) 21:13:34 ID:OH+j09el0
追記
>>813 にもあるように
「rundll32.exe shell32.dll,Control_RunDLL」は
「control」に置き換えられる。
タブってそういう意味か、クラシック関係なかったなスマソ
818 :
812 :2005/09/20(火) 22:11:09 ID:vK52910z0
>>813-814 AHKだけでは無理ってことですね。
Raw Input APIあたりを調べてみます。
例えばAlt+EndキーにF1+左クリックを割り当てる事は出来るのでしょうか?
thx、とりあえず色々試してみま
タスクトレイに入っているプログラムを全て取得するにはどうすればいいですか?
824 :
名無しさん@お腹いっぱい。 :2005/09/24(土) 13:59:56 ID:aaRxe7JA0
マルチモニタ機能の使用、不使用を切り替えしたいのだが、画面のプロパティの モニター2の「Windowsデスクトップをこのモニター上で移動できるようにする」の チェックを付けたり外したりする方法はありますか?
>>824 ウィンドウが出てもいいのなら
>813-815あたりを参考に画面のプロパティの「設定」タブを呼び出し
Windowsデスクトップをこのモニター上で移動できるようにする(E)の
アクセラレータキー送信 → Send,!e{Enter}
もっとスマートにやりたいのなら、まず手動でON/OFFしてみて
レジストリ番犬ロンとかでレジのどこが変わってるか確認後、
RegWriteで該当箇所を書き換えるスクリプトを組む
826 :
824 :2005/09/24(土) 21:49:11 ID:iNBVHFVi0
>>823 使ってるアプリが特定されているなら
DetectHiddenWindows, On
WinGet, OutputVar, List, , , タイトルとしてあり得ない文字列
で、とりあえず全ての可視、不可視ウィンドウのハンドルが取得後
WinGet, OutputVar,ProcessName, ahk_id %hWnd%
でEXE名でタスクトレイに入るタイプのアプリかチェックする
もうちょっと難しいことをやりたいなら
スクリーンショット取ってImageSearchとかでタスクトレイの絵と
ttp://cgi19.plala.or.jp/lukewarm/news/2005_05.html#14 を参考に起動中アプリのEXEフルパスを取得してそのアプリに含まれる
アイコンを見比べるとか。
828 :
名無しさん@お腹いっぱい。 :2005/09/25(日) 00:23:36 ID:2qa3f8v90
下記のようにWinMoveを実行しても指定ウインドウが移動する時と 移動しない時があるのですが、何が原因でしょうか? ex) WinMove, Notepad,, 465, 700
Ahk_classが抜けとる
830 :
828 :2005/09/25(日) 01:47:48 ID:2qa3f8v90
OSとAHKのバージョンは? もし最新版入れて動かないんなら本家フォーラムにバグ報告しにGO
漏れの環境では設定何もなしで WinActivateで大文字と小文字を区別するんだよな TaBrowserだとOKでTabrowserだとダメだった これでしばらく悩んだ ヘルプに書いてあるかもしれんけど
Windows標準の「画像とFAXビューア」で ホイール↓↑で Right & Left (次の画像と前の画像)を 実現したいのですが、どうすれば良いのでしょうか。 AHKを流行らせるページなども一応目を通してみたのですが 初心者の私には難し過ぎて・・・・。 正直、教えて君のようで心苦しいのですが どうか御教示頂けないでしょうか。お願い致します。m(_ _)m
>>833 WheelUp::
WheelDown::
IfWinActive, ahk_class ShImgVw:CPreviewWnd
{
if (A_ThisHotkey = "WheelUp")
Send,{Left}
else
Send,{Right}
}
else
Send,{%A_ThisHotkey%}
return
835 :
名無しさん@お腹いっぱい。 :2005/09/25(日) 18:19:12 ID:jmAi5JOx0
みんなどんな使い方してるか教えて欲しい。
837 :
833 :2005/09/25(日) 18:54:20 ID:oNg/0d3+0
>>834 できました!ありがとうございます!
これを実現したくてAHKをインストールしては挫折して
アンインストールを繰り返していたので凄く嬉しいです。
どうもありがとうございました。m(_ _)m
838 :
名無しさん@お腹いっぱい。 :2005/09/26(月) 00:29:27 ID:AOfmaA+e0
WinSetとWinMoveのTITLE指定の仕方って一緒だよね?
指定方法そのものは一緒だがパラメータの指定位置が違う WinSet, SubCmd, Value [, WinTitle, WinText, ExcludeTitle, ExcludeText] WinMove, WinTitle, WinText, X, Y [, Width, Height, ExcludeTitle, ExcludeText] どうでもいいことだが日本語版Winの場合、大抵タイトル表示が ファイル名 - アプリ名 ってなってるので、デフォの設定だとタイトルにアプリ名入れただけじゃ ウィンドウ選択できないことって結構あるんだよな。 まぁ SetTitleMatchMode ,2 にしときゃいいだけのことなんだが。 初心者は意外とこの辺りではまってるのかも
変数の中に変数をいれるにはどうすればいいですか?
>>840 意味ワカンネ、も少しちゃんと説明汁
変数の中に他の変数の値を代入なら
hoge1 = %hoge2%
か
hoge1 := hoge2
変数の中に変数名入れて値を代入なら
hoge1 = hoge2
%hoge1% = hogehoge
msgbox, hoge1の内容=%hoge1% hoge2の内容=%hoge2%
変数の中に変数のアドレス代入なら
hoge1 := &hoge2
842 :
名無しさん@お腹いっぱい。 :2005/09/26(月) 11:56:39 ID:Ugq2p8NF0
ctrlキーのダブルクリックって^^::では動かないんですが、無理でしょうか?
コントロールキーをダブルクリックしたいなら キーボードの上にマウスを置かなきゃ
FileAppendで改行を入力したい場合にはどうすればいいんでしょうか?
`r`n
847 :
名無しさん@お腹いっぱい。 :2005/09/26(月) 18:11:32 ID:HjQrCqQl0
右ダブルクリックを取得する方法ってありますでしょうか?
849 :
842 :2005/09/26(月) 21:48:18 ID:lwmU12EX0
ホットキー駆動後に取得するより autoexecute部で取得しておいたほうが速度的によさそう
WinSet, Topで「システムの設定によっては動作しない」とあるけど、 具体的な条件はどういものがあるの?
>>850 ですな。あと面倒だから入れなかったけど
厳密にシステムのダブルクリック動作に近づけるなら
マウス移動量が大きすぎる時は弾くっつー処理も入る。
ダブルクリック許容範囲はSysGetで取得する
SysGet,cx,36 ;SM_CXDOUBLECLK
SysGet,cy,37 ;SM_CYDOUBLECLK
右ダブルクリックするたびに、画面上の特定の2つのウインドウの前面・背面を入れ替えるには、 どうしたらよいでしょうか?
XXX1,XXX2,XXX2,・・・・・・ というように変数の連番をループでとりたい場合はどうすればいいですか? "%XXX%Y%%"←イメージ的にはこんな感じなんだけど書き方が分からない Y+=1
俺も知りたいや。 結構そこであきらめたスクリプトある。
何かここんとこ質問ラッシュだな
それは別にかまわんのだけど、たまには完成形のフィードバックもしてくれYO
>>853 ifWinActive hoge1
WinActivate hoge2
else
WinActivate hoge1
これを >848のやつに入れ込む。
てか853は上でWinSetにこだわってる人と同一人物なんだろう思うけど
「各ウィンドウをアクティブ化させないで」という条件は付いてないので
敢えてこのまま出してみる
>>854 Xmax = 10 ; 連番配列の個数
Loop, %Xmax%
{
save := XXX%A_Index%
; saveをどうにかする処理
}
857 :
853 :2005/09/28(水) 11:21:35 ID:Sz0LP/aa0
>>856 ありがとうございます。実際はそれ以外にもウインドウが存在するので
下のやつでできるようになったけど、右Clickができなくなりました。
;--------------------------------------------------------------------------------
; 右DubleClickでSleipnirとJaneDoeを入れ替える
;--------------------------------------------------------------------------------
Rbutton Up::
;システムのダブルクリック時間取得
If (A_PriorHotkey = A_ThisHotkey) && (A_TimeSincePriorHotkey < 300)
{
;ダブルクリック時処理
MouseGetPos, MX, MY, id, control
WinGetTitle, title, ahk_id %id%
IfInString, title ,Sleipnir
{
WinActivate,JaneDoe View
}
Else IfInString, title ,JaneDoe View
{
WinActivate,Sleipnir
}
}
Else
{
;シングルクリック時処理
Return
}
Return
~Rbutton Up:: そんかわりコンテクストメニューが出てきてうざいけど。
859 :
853 :2005/09/28(水) 21:56:37 ID:E+e6frGI0
>>858 おっしゃる通りでした。他のキーに割り当てることにします。
右クリックのメニューはESCかALTを送ってやると消えるよ。
全てのウィンドウをメニューで一覧表示してそこから選択してクリックで ウィンドウがアクティブになるタスクバーの代わりになるような イカすスクリプトは作成可能ですか?
可能
普通にALT+TABを割り当てれば良いような気がするのだが気のせいですか?
WinGetTitleから表示するとき変数の値が空になるのがあり それの上手い処理の仕方が分からなくなって挫折しました
漏れはWinGEtでまずID一覧とって、 それをParseしてタイトルを取得してメニューに出してるけど タイトルが空ならWingetTextしてどうにかするとか
class取得してソレを表示するとか。いっそタイトルのないアプリは無視するとか Wingetでリスト取得すると、tooltipとかメニューもウィンドウとして 取れちゃったりすることあるし、案外支障ないかもよ
867 :
名無しさん@お腹いっぱい。 :2005/10/01(土) 17:25:41 ID:aMUUCKx00
>>864 具体的にどんなことがしたいか教えてくれれば、なにかアドバイスできるかもです
868 :
名無しさん@お腹いっぱい。 :2005/10/02(日) 08:08:42 ID:37BNmN4a0
^h::Send,{BS} といった具合に、Ctrl+Hをバックスペースに割りあえるのはイイんですけど、 しかし、こうすると、Ctrl+H を今後永遠に入力できないことになる・・・ 別々に、 +^h::Send,^{h} と割り当てても、結局Backspaceに入力されてしまう これは、どうすりゃいいですか
1. if で分岐して状況に合わせて使い分ける。 2. #hにでも割り当てとく。 3.現状で ^hを入力する機会がないならとりあえず無視 必要な時はタスクトレイから Suspend Hotkeyを選べばいい
ていうか $^h::Send,{BS} で解決するか
上のレスみて思ったんですが、 「キーボードフック」ってのがいまいちよくわからないのです。
873 :
名無しさん@お腹いっぱい。 :2005/10/02(日) 22:59:37 ID:X3j7Rz5j0
MouseGetPos,MX ,MY , id, control If (890 <= MX And 1250 >= MX) And (700 <= MY And 970 >= MY) { WinMove,Cast,, 890, 300 } Else { WinMove,Cast,, 890, 700 } マウスの位置によってウインドウ位置を移動させたいのですが、 移動しません。 何が悪いのでしょうか?
>>872 どの程度の説明を求めているのか知らんけど、
要は「あるキーが押されたり離されたりしましたよ」って言うメッセージを
いったん途中で奪って、状況に応じてそのまま本来渡されるべき場所に渡したり、
別のメッセージに置き換えたりして渡したりするようなもの。
>>873 何が原因か分からないときは一時的にMsgBox等を使って、
変数は取得できているか、If内に入れているか等の状況の切り分けをするんだ。
サブルーチンの実行間隔は環境に合わせて適度に。
CoordMode, Mouse, Screen ;取得座標をスクリーンの絶対座標に
SetTimer, Wmove, 200 ;200msごとにサブルーチンを実行
Wmove:
MouseGetPos, MX, MY
If (MX>=890 && MX<=1250 && MY>=700 && MY<=970)
{
WinMove, Cast, , 890, 300
}
Else WinMove, Cast, , 890, 700
return
875 :
873 :2005/10/03(月) 00:13:31 ID:vD6MFskv0
>>874 レスありがとうございます。
他のアプリでは正しく移動するので、固有の相性みたいなんであきらめます。
>>874 漏れも大体そうやっちゃうんだけど
何気にデバッガ機能もデフォでついてたりするんだよな
タスクトレイ右クリで OpenでLineトレース履歴と変数内容は見れたりする
小一時間ほどホームページ見ながら使おうと頑張ってみたんですが 言語のげの字も知らないド素人なものでまるで使えませんでした。 すいませんが少しだけお教え願えませんでしょうか? Numpad1を押すとNumpad1が2回タンタンと素早く押されるようにしたいのですが、 たったこれだけが1時間かけてもわからない_| ̄|○
>>877 それ流行らせるページで管理人さんが書いてる
俺も作ってから気づいた・・・
と思ったら違う奴だった
あのページですら難しすぎてわからない_| ̄|○
Beep音を鳴らすにはどうしたらいいでしょうか? 「SoundBeep」はコントロールパネルのサウンドのプロパティで設定してある「一般の警告音」が鳴るようですし・・・
>>877 ~Numpad1::send,{Numpad1}
これじゃ駄目かな?テンキーが無いものでaでチェックしました。
883 :
877 :2005/10/05(水) 17:47:16 ID:iiOTk+eg0
ありがとうございます。 早速試してみます(`・ω・´)
884 :
877 :2005/10/05(水) 18:26:13 ID:iiOTk+eg0
2回入力できました、ありがとうヽ(´□`。)ノ・゜ ご迷惑ついでにもう一つお聞きできたら嬉しいのですが・・ この2回押される間の時間というのは調節できますか?
886 :
881 :2005/10/05(水) 22:50:38 ID:m7HsE3Sf0
>>885 すみません。最初に書くべきでした。
XP SP2です。
教えてください。 ^!P:: WinGet, t, Transparent, A if t = WinSet, Transparent, 164, A else WinSet, Transparent, Off, A return これで半透明のトグルが出来ますよね。 これの最前面化のトグルはどうやればいいのでしょうか?
ギャグか? WinSetのとこに載ってるぞ。
ギャグです。 ではなくて、どう最前面化かどうかを判断すればいいんでしょうか?
勝手にやってくれんじゃねえの?
あ、ズバリTOGGLEってありましたね。 やっぱギャグでした。
誰か完成形をさらさないか?
^!T:: WinSet, Topmost, Toggle, A return こうですかね。
The latest version is 1.0.39.00 (released October 3, 2005) -- changelog | download Wolfgang Reszel wrote an article for c't Magazine to introduce and demonstrate the benefits of AutoHotkey.
ちょっと変えてみた。 ^!T:: WinGetActiveTitle, Title1 IfNotInString Title1, ■ { WinWaitActive, %Title1% WinSetTitle, ■%Title1% WinSet, Topmost, On, A } else { WinWaitActive, %Title1% StringReplace, Title2, Title1, ■, WinSetTitle, %Title2% WinSet, Topmost, Off, A } return プログラミングとかわからんから 誰かもっと効率よく使い易く変えみてくれませんか?
Toggle使えば確かにAHKが勝手にやってくれるけど 今現在Topmostに設定されてるかどうか知りたければWingetでExStyle取得すればよろし。
897 :
881 :2005/10/06(木) 18:12:36 ID:ixt2lg000
やはりどうやってもBeep音鳴らせないです・・・・。
>>897 スピーカーから鳴ってる?それともケーススピーカー?
>>898 システム起動時に鳴るビープ音はケーススピーカーだと思います。
>>899 ケーススピーカーで鳴るのがビープ音じゃなかったっけ?
>899がいってんのはPCの電源入れた時の( ゚д゚)、ペッって音のことだと思うが システム起動時つと普通はWindowsの起動音を指すんではなかろうか SoundBeepは >サウンドカードのBeep音を鳴らす って書いてあるから環境によるのかもしらんね
>>900 ケーススピーカーで鳴らすのも
サウンドデバイスから鳴らす一般警告音もどちらもビープ音だよ。
サウンドデバイスの有無でケーススピーカーを鳴らすか
一般警告音を鳴らすか自動で振り分けてる。
>>902 サウンドデバイスがある状態でケースのビープ音を鳴らすのは不可能なんでしょうか?
>>903 可能
俺は
SoundBeep,1000,100
でケーススピーカからBeep音がなっている。
XPSP2 + SoundBlasterLive
>>904 >SoundBeep,1000,100
試しましたが鳴りませんでした。
XPSP2+SoundBlasterDisitalMusic
906 :
名無しさん@お腹いっぱい。 :2005/10/10(月) 13:52:00 ID:5MwEDXsm0
あげ
907 :
名無しさん@お腹いっぱい。 :2005/10/10(月) 17:29:33 ID:jVBMvfsw0
ド素人です。 ^y:: Send,{x 5} SetKeyDelay, 1000 Send,{t} Return ctrl+y押し>xxxx連続>wait1s>t と言う風にしたいんだけど xxxxtとつながって出てきます。 wait1sをいれようと思ったら SetTimer, Label を用いて ^y:: Send,{x 5} SetTimer, LabelT ,1000 Return LabelT: Send,{t} Return と言う風にしてみたんですがこいつはx5回>t連打になってしまいます。 tを一回でとめたいのですが、どうしたらいいでしょうか? もしくはラベルを使わずにwait1sとかでポーズをかけることは出来ないのでしょうか?
>>907 SetKeyDelayはWaitじゃなくてSendの間隔を空けるコマンド、単純ウェイトなら>908のようにSleepを使う。
あと{ }はTab とか F1とかのキー用のくくりなので、t 一回なら Send,t で平気
それとSetTimerは、繰り返し実行用コマンドなので、一回だけ実行させたい場合は
飛び先でOFFにしてやればおk
LabelT:
SetTimer,LabelT,OFF
:
Return
911 :
名無しさん@お腹いっぱい。 :2005/10/12(水) 12:43:32 ID:iJy0j5As0
おもろい小物がいっぱいだね。
914 :
911 :2005/10/12(水) 19:59:41 ID:qz4p9ed/0
>>913 何をするスクリプトかさえ分かればそれでいいんですが・・・
>>914 機械翻訳である程度のことは分かるし。
実際に動かしてみればいいんジャマイカ?
# ちなみに
>>913 のは
>>910 のとは
少し趣が違うツールだけど、 和モノよん。
AutoHotkey1.0.40 up! Added a new remapping method that is more simple and powerful than the old methods. For example: : Capslock::Ctrl ; Make Capslock become a Control key. これでいよいよMayuとお別れかと思ったら、やっぱりまだ日本語の環境では CapsLockをCtrlにすることは出来なかった。Ctrlを押しっぱなしの状態にな るんだよね。
消ポップアップは無理だって流行らせるページの中の人が
TTBスレの奴じゃないけど、消ポップアップ ・MS-Office上で効かない ・通常メニュー上の右クリでもメニュー消しちゃう て問題があるが、これは本家も同じ動作。回避するならもちょっと付け加える必要がある ~RButton:: IfWinExist , ahk_class #32768 rflg = 1 return ~RButton up:: if (rflg) WinClose, ahk_class #32768 rflg=0 return
ちゃんとフックかけないとしくるか RButton:: IfWinExist , ahk_class #32768 WinClose else { Send,{RButton Down} KeyWait, RButton Send,{RButton up} } return
PressItはUIの作りこみがめんどいな。とりあえず簡単な実装例 autoexecute: gui,add,checkbox,-Wrap GPressIt,Shift gui,add,checkbox,-Wrap GPressIt,Ctrl gui,+AlwaysOnTop -MaximizeBox -MinimizeBox gui,show settimer,keywatch,100 return keywatch: GuiControl,,Shift,% GetKeyState("Shift") GuiControl,,Ctrl, % GetKeyState("Ctrl") return PressIt: ToggleKey(A_GuiControl) return ToggleKey(keyname) { if (GetKeyState(keyname)) Send,{%keyname% Up} else Send,{%keyname% Down} } GuiClose: if (!GetKeyState(Shift,"P")) Send,{Shift Up} if (!GetKeyState(Ctrl,"P")) Send,{Ctrl Up} exitapp
TAALT キーボードでのウィンドウ移動については投稿スレで既出なので割愛 Alt:: return
消ポップアップってどういう場面で便利なのか理解できない
どういう場面で便利とかそういう話じゃないと思う。 好みの問題だよ。
>>910 アイコンもセンスいいし,Giraffeに放り込むと無茶苦茶幸せだわ。
早速何個か使わせていただきますた。
927 :
名無しさん@お腹いっぱい。 :2005/10/15(土) 12:18:14 ID:5Q2YK87j0
>>910 誰かどういうスクリプトがあるか説明していただけませんか?
ウェブページ翻訳かけてみたら? 英語全然わからん自分でもそこそこ理解できたよ
929 :
927 :2005/10/15(土) 14:30:04 ID:FKsIHUfr0
>>928 ウェブページ翻訳やってみたんですが、微妙なニュアンスがおかしいようでよくわかりませんでした。
ざっと見ただけなので間違ってるかも。 -------------------------------------------------------------- TimeStamp クリップボードに時刻をコピー ColorTaskbar タスクバーの色を変える。グラデーション的にできる。お遊びツール。 WinLock Windowsをパスワード保護する MinimOther アクティブウインドウ以外を最小化 ShowDialogsToo ダイアログボックスをタスクバーに表示できるようになる BigByte 指定したファイルサイズのファイルを作る。アスキー・バイナリ共に可能 ToddlerTrap マウスとキーボードを無効化。子供対策や掃除に。 RunAsTools システムツールを別のユーザー権限で実行 MouseActivate マウスポインタの下にあるウインドウやコントロールをアクティブ化して操作 PixelNotifier 画面上の色の変化を検出したらアラートを出す ProcessGuard プロセスを監視し、条件にマッチしたらアラートを出す ZoomSaver 画像のスライドショー的スクリーンセーバー。起動中に操作可能 NoStrayClicks マウスクリックを無効化する。文書編集中などに。 ShowOff 押されたキー名を表示 WinWarden ウインドウの表示方法を任意に。最大化最小化から半透明まで
AutoClip クリップボード拡張&自動キー入力(AutoHotkey準拠) Ghoster アクティブウインドウ以外をぼやけさせる(半透明化) DragKing クリップボードにコピーしたテキストの行数と文字数を表示 RecentRun 最近使ったプログラムをメニュー表示して起動 ClipStep キーボードのCtrl+X、Ctrl+C、Ctrl+Vのみで操作可能なクリップボード拡張 CAPshift CAPSキーを制御。さらに選択したテキストの大文字小文字の入れ替えなど Desktop! 「デスクトップ」をタスクバーアイコン化 TakeABreak 一定時間Windowsをロック Noise キーストロークを発生させてパソコンのスリープを防ぐ TicTocTitle 日時をアクティブウインドウのタイトルバーに表示 StartClock スタートボタンに時間を表示 MouseClock マウスカーソル横に時間を表示 CutAway ウインドウの一部を切り取る Mute 音声出力のミュート&その解除 MicMute 音声入力のミュート&その解除 Run 「ファイル名を指定して実行」ウインドウを起動 Find ファイル検索画面を表示 EjectCD CD-ROMドライブのトレイを開く CloseCD CD-ROMドライブのトレイを閉じる OnTop 指定したウインドウを最前面化 LiP サイト内にリンクされている画像をすべてフルサイズでウインドウ中央に表示する
NoStrayClicksがちょっとわかりにくいかな。 文字列入力中はマウスポインタが退避して 変な所をクリックするのを防ぐというツールでした
流行らせるページを見て,Alt×2に機能を割り付けることは出来たんだけど, Alt×1に割り付けることはできる? 具体的には Alt押し離し×1→ime on Alt押し離し×2→ime off Alt押し+キー→そのまま入力 が出来るようにしたいっす。
ALT:: KeyWait,ALT,T0.2 if ErrorLevel = 0 { KeyWait,Alt,D T0.2 if ErrorLevel = 0 { KeyWait,Alt tooltip,on ;test ime offの処理を入れれ return } } tooltip,off ;test ime onの処理を入れれ return
936 :
名無しさん@お腹いっぱい。 :
2005/10/17(月) 12:49:19 ID:nZX61Cbj0 ae