1 :
ぬるぽ :
2007/07/16(月) 12:30:27 ID:cd0T6xfs0
おつ
FAQ Q:CapsLock(英数)キーの割り当てがうまくいかないよ A:日本語環境だとLock系キーの動作は不定。 OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。 OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。 対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13〜F24など)に割り当ててから AHKで利用すべし。 Q:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ A:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。 対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、 #EscapeCharでエスケープ文字を別のものに変えるべし。
Q:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など A:Remap機能は記述が簡単になる反面、細かい指定がしにくい。 流行らせるページのHotkeys, キーリスト, リファレンス→Send, #IfWinActive, GetKeyState()なども参照すること。 なお、例の場合は以下のように記述する。 sc07B & I:: Send, {Blind}{Up} sc07B & K:: Send, {Blind}{Down} sc07B & J:: Send, {Blind}{Left} sc07B & L:: Send, {Blind}{Right}
>>1 msgbox, 乙
send, {ガッ!!}
前スレ
>>996 へ
>わざわざFileZillaを導入して
>調べてみたところHidden Window TextにFTP操作ログが丸ごと
>入っておりAutoHotkeyにはなんら問題がないことが証明された
それはどうも。 確かにHidden Window TextにFTP操作ログがありますが
それを元にどう判定すればよいのでしょうか?
転送が全て終わるとFTP転送ログが全部消えるとか言うなら
if Hidden Window Text = null Then みたいな処理が可能かもしれませんが
終わってもずっと残り続けていますし、最後のファイルが何なのかも分からない。
これをトリガにする事は可能なのでしょうか?
もっと自分の頭を使って楽しんだらいいじゃないか。
まだやってるのか
もう相手にするな。
>>7 そろそろ消えろよ。
ahkの話題なら答えてやれるかも試練が、
お前しか使ってないようなソフトの実装の話題出されても困る。
実装以前にBASIC脳だからなあw
13 :
757 :2007/07/17(火) 17:31:18 ID:RNxERrJe0
>>11 AHKの話題なんですが。AHKを使ってどう処理させれば良いのか。
こういうWindowに対してはどう処理させれば良いのかをお聞きしています。
>>13 > よってこの話題は次スレにもちこさず終了でokだな
> さよなら
>>>>( TitleMatchMode=slow Visible Text )<<<< 内のテキストのみを取得するにはどう書けば良いのでしょうか? WinGetText, OutputVar, App だと全てのテキストが取得出来てしまう・・・・。
ポカーン
やっぱりこれが必要だな わからない七大理由 1. 読まない ・・・説明書などを読まない。読む気などさらさらない。 2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。 3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。 4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。 5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。 6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。 7. バカだから ・・・バカだから。
>>19 1. 読まない ・・・説明書などを読まない。読む気などさらさらない。
読んだ。最初付属の英語のドキュメント見たけど これ流行らせるページのリファレンスと
同じ内容じゃんとか思ってリファレンスの知りたいコマンドを3回ぐらい読み直した
2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。
ググった。コマンド名で調べたりしたけど知りたい情報が出てこない
3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。
実行した。実行したがなぜか全くテキストが取得できない。オプション省略したら
全部取得できてしまうから困るし、指定したら全く取得できなくて・・・
4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。
理解しようとはしているが理解力が劣っているのは今更どうしようもない事では・・・
5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。
少しあるかもしれない。マニュアルがもう少し細かく解説してくれていれば・・・と思ってしまう。
6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。
そんな事は無い。だが自分で出来る最大限の努力をして解決できないのだから
やむを得ず最終手段としてココに書き込んでいる
7. バカだから ・・・バカだから。
そんな事言われても・・・
何言っても、つけあがるだけだから、もう相手すんなよ。
新スレ快調な滑り出しだなw
そうそう、何いっても偉そうに語るだけだからな。不愉快になるだけだよ
よくここまで叩かれて、いけしゃあしゃあと出てこられるなww
このスレ時々教えて君がいつまでも粘着するね、同一人物なのか?
>>20 しつこく食い下がったところで答えは得られないよ。
あんたの説明ではFileZillaとやらを使ってる人間でないとわからない。
まずソフトの挙動がわからん。駄目出しばかりで使えそうなネタもなく、
回答者に丸投げしてるがそれでは使ったことない人間には答えられんぞ。
そしてここにはFileZillaとやらを使ってる奴はいない。
制御方法にある程度アタリを付けた上で、FileZillaというのはこれこれこーいう動作をするので、
ここを利用してどうにか制御できないか、っつー質問ならまだアドバイスのしようもあるが。
使わんソフトをインスコしてまで教えようとは思わん
ましてや
>>20 みたいな奴には絶対いやだね
>>25 そういう話は
>>11 で既に出てる気がする。
言うだけ無駄じゃない?
ここまで努力したんデス何とかして下さいと、試しているスクリプトを
貼り付けてみたら?運が良ければ、通りすがりのイケメンがアドバイスをくれる
かも知れないし。流石に
>>20 では、誰も手を差し伸べる気にはならないでしょ。
流れをぶち切って質問 #IfWinactive,hoge F11:hoge0 F12::hoge1 #IfWinactive F12::hoge2 ソフトhogeがアクティブになっているときにF12を押すとhoge1、 それ以外はhoge2としたいわけですが、常にhoge2が実行されてしまいます。 hoge0は動作するのですが、思い通りにするにはどうすればいいでしょう。
F11のあとにコロンが1つ抜けてますが、そのせいじゃないです。
リモートデスクトップ環境で使ってみたんだが、なかなか微妙な動作だた。 全画面にしないで使うとWindow情報取れない。まぁ子ウィンドウで動いてるわけだから これは考えてみれば当たり前の話なんだけど。 で、全画面にしたときは、WinActiveが取れたり取れなかったりする。 そしてホットキー制御も微妙、つかこういう場合はローカルとリモートの どっちにスクリプトを常駐させたらいいのやら。
ControlSendでF5やEscなどは反応するんですが、 普通のキーは反応しないのですがどういうことが考えられるでしょうか
>>34 どこにキーを送ろうとしているのか答えてみ?
>>35 WinTitleでウィンドウだけ指定してるのですがそういうことでしょうか?
>>36 そういうことです
テキストボックスに送りたいなら指定してやらないと
>>37 忘れてましたすみません
一応うさみみハリケーンで調べてクラスを指定してやってもみたんですが、全て反応しませんでした
39 :
名無しさん@お腹いっぱい。 :2007/07/19(木) 03:58:21 ID:puYLD4eI0
Winキーによるスタートメニュー開くのを無効しつつ、#Rとか#Eは使えることはできますか?
できるお
vistaで#lをRightにしたらロックされてしまいすごく悲しい気分なのですが どうにか無効にできませんの?
>>38 AHKのClassの場合は後ろに連番がつくよ。
うさみみじゃなくて、AHK付属のAU3_spy.exeで調べてみ
>>31 素直に#なしの方でよかったか…
#ありとなしの使い分けがいまいちわかってませんでした。ありがとう。
44 :
33 :2007/07/19(木) 16:32:59 ID:gz2gvc190
通りすがりのイケメンに見た頂く前にファイルが消えてしまっているようなので再アップ・・・
と言うかスクリプトかなり改良した。
http://www.geocities.jp/hokaan/ahk_fz.txt 今困っている事
1.ログに余計なものが入りまくっているので >>>>( TitleMatchMode=slow Visible Text )<<<< 内の
テキストのみを取り出せるように出来ていない点
2.FileZillaは相手のサーバがダウンしたりして接続が切れてしまうとキューを保持し続けているので
キューが0MBになったら終了するっていう書き方をしている為、もし相手のサーバがダウンして
切断されてしまったら永久にFileZillaを自動終了しない。
自動終了しないどころかログも吐き出さない。終了直前でログを吐き出すようにしているから。
この辺のアルゴリズムが分からない・・・。 "切断されました"等のテキストがもしログウィンドウに
含まれていれば強制終了させる等の分岐をするわけにもいかない(接続が切れて再接続を
自動でFileZillaが試して、再び接続に成功する事はしょっちゅうあるのでその際にまだ転送終わってない
のに強制終了させられてしまう為)。
もう少しなのですがギリギリのところで実用できるレベルには達していませんOTL
基本的な質問ですが、同時に複数のスクリプトを起動してもいいのでしょうか? 私の場合はいつの間にか動かなくなっていてリロードすると動き出すという現象に悩まされていますが、複数起動が原因の可能性は御座いますでしょうか? スクリプトは vkEBsc07B & h::send,{left} vkEBsc07B & j::send,{down} vkEBsc07B & k::send,{up} vkEBsc07B & l::send,{right} vkEBsc07B & `::send,{PgUp} vkEBsc07B & '::send,{PgDn} return (vi風) IfWinActive,無題-仕事 { vkEBsc07B & 2::send,!dtoday{F10}{Enter}{Enter} return } (outolookの仕事の〆切日を今日に設定) のような単純なものばかりです。
>>45 キーフックの種類によっては複数起動時に問題になることがある気がする。
といっても注意してみてないから、自分もよくわからないのだが。
下のは#IfWinActiveにしなくてええのんか? その書き方だと意味がないように思うが
Joy5:: Send,{Joy1} なんてことは出来ないの? エラーにはならないんだけど反応がない・・・
>>41 多分無理。中の人がVistaについて頑張ってくれないと
>>41 Vistaだとやはり動作に問題多い?
そろそろPC買い替えたいなーとか思っていたんだが
もはやAHKの動かない環境ではダメな身になってってる。
しばらく買い替えは見合わせたほうがいいかね
>>50 買い換えて、Vista消してXPぶちこめ。
>>47 そうなんですか?
ヘルプのIfWinActiveの項目にあったexampleをパクッたんですが・・・
ところで、エディタを変更するのにレジストリをいじるしかないのですか?なんか、怖いですよね。
>>52 漏れならコウカクYO
#IfWinActive,無題-仕事
vkEBsc07B & 2::send,!dtoday{F10}{Enter}{Enter}
または(こう書く意味はほとんどないと思うけど)
vkEBsc07B & 2::
IfWinActive,無題-仕事
{
send,!dtoday{F10}{Enter}{Enter}
Return
}
>>45 の書き方では「無題-仕事」がアクティブでも何も行われないと思うし
Returnがどこに帰るかではスクリプト動作に影響がでると思う
54 :
52 :2007/07/21(土) 01:10:44 ID:Bthn1Xs/0
>>53 ありがとう御座います。実は指摘を受けてはじめて#IfWinActiveを知りました。。。
ところで、私はヘルプにあった下記のスクリプトをまるまるパクったのですが・・・
私のスクリプトをさっき試したらちゃんと期限が本日の日付になりましたので、動くことは確認出来ました。
IfWinActive, Untitled - Notepad
{
WinMaximize ; Maximizes the Notepad window found by IfWinActive above.
Send, Some text.{Enter}
return
}
>>52 過去スレに貼ったような気もがするがまぁいいや。
↓ファイル選択ダイアログで任意のエディタを指定するスクリプト
; --- AhkEditChanger.ahk ---
RegRead, OldData, HKCR, AutoHotkeyScript\Shell\Edit\Command
MsgBox,36,AutoHotkey Scriot Editor Changer,現在ahkのEditに設定されている値`n`n %OldData% `n`n別のエディタを指定しますか?
IfMsgBox,No, ExitApp
SplitPath,OldData,,EditorDir
FileSelectFile,MyEditor,3,%EditorDir%,ahkを編集するエディタを選択,*.exe
IfNotExist, %MyEditor%, ExitApp
RegWrite, REG_SZ, HKCR, AutoHotkeyScript\Shell\Edit\Command,,%MyEditor% `%1
RegRead, NewData, HKCR, AutoHotkeyScript\Shell\Edit\Command
MsgBox,64,AutoHotkey Scriot Editor Changer, %OldData% を`n`n%NewData% `n`n へ変更しました。
それだとAutoHotKey.iniをタスクトレイから開く時には デフォではメモ帳が起動するかも 洩れはWIN+Hに常用エディタで開くように設定してるけど
>>45 いいか悪いかの答えになってないけど
desktop.ahkに
#Include %A_ScriptDir%
#Include Common.ahk
#Include Explorer.ahk
#Include WMP.ahk
...
とか並べて一つにまとめてる。何書き換えても一括してリロードできるし特に重くもないし。
>>53-54 returnはifの外出したほうがよくね?
>>56 出先なんで確認できないけどレジ書き変えてるから大丈夫だったと思う
確か#系コマンドでは上手くいかなくて作ったやつだから
自分もAutoHotkey.iniはホットキー割り当ててるんだが
単発スクリプト起動してるときとかいちいち組みこんでないときも多くて不便なんだよね
59 :
54 :2007/07/21(土) 21:07:14 ID:Bthn1Xs/0
だ か ら な に ?
おれは頭を使っていない ということだろうよ
>>60 >>61 お前らこそ馬鹿か?
ヘルプという圧倒的に信頼が置ける文献に対して間違いを指摘しているということは重大なことだぞ。
文句があるなら本家に言うべきだろう。
そういう指摘をしているのではなかろう……
教科書やマニュアルに従って生きて行く事が悪いと言う訳じゃないし、 それが君の全てだというなら、それは立派な事かもしれない。 けれど、僕らはほんの少し寂しい気持ちになるんだ。
IfWinActiveのExample(s)に書かれているのは、一連の処理の途中での使い方に過ぎない。 ホットキーに処理を割り当てるときは、確実に実行される場所にreturnを書いて、 関係ないサブルーチンが誤って実行されてしまうことを防がなくてはならない。
問題は54の気持ち悪さだ
>>65 なるほど。勉強になりました。
いろいろ言われていますが、頑張って英語マニュアルを読破していきます。
学ぶは真似ぶと考えていますので、最初はマニュアルに従っていきます。
とりあえずは初心者から初級者へのステップを目指します。
54,62以外はわかってると思うけど、マニュアルは間違ってないよ。 何のExampleなのかを理解せずにそこだけコピペして 「思った通りに動かない」って言われても困る。 もしかして62=54?
>>69 そうです。でも、私が言いたいのはexampleを丸写しで思った通りに動いているのに、
文法間違いを指摘されている点です。繰り返しますが、思った通りに動いているのです。
ただ、時々動かなくなってリロードが必要になるので困っているということです。
こんなに早く↓を再コピペする時が来るとは思わなかったぜ わからない七大理由 1. 読まない ・・・説明書などを読まない。読む気などさらさらない。 2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。 3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。 4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。 5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。 6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。 7. バカだから ・・・バカだから。
>>71 おきまりのパターンですね。罵倒、罵詈雑言は2chの花なんだから、こっちの頭に血がカーッと上るようなのを御願いします。
開き直るバカほど始末におえない物は無いな
教えてくんから構ってちゃんへと、「おきまりのパターン」の厨房は置いといて・・・。 皆、本家の掲示板ってどれ位読んでる? 俺はScripts&Functionsだけ機械翻訳でチマチマ読んでるけど、 便利な関数とかあって、結構タメになってるんだが。
最初に構ってやった俺が馬鹿だった。
>>75 いやいや、そんなことはないよ。ありがたかったよ。スルーされるよりは罵られても新しい情報が得られるほうが有益ですから。
罵りつつ情報を提供したり、されたりが出来ない無知な俺はしばらく黙りますね。本家の掲示板とヘルプをコツコツ読んでから他人のふりして戻ってきます。
>>72 罵倒とかそんなの以前に、自分で解決できないバカが周りを振り回してる時点でおきまりのパターンですけどね。
>>74 本家は読んでないなぁ。
流行らせるページも読んでないけどね。
> 便利な関数とかあって、結構タメになってるんだが。
便利な関数というか、拡張ライブラリ見たいな物があるとうれしいんだけどなぁ。
文字列処理とか数学関数があまり充実していなくてたまに困る。
>>77 それに関しては感謝に堪えません。阿呆を相手してくれる皆様の度量の広さに感服しています。
私も、鋭意努力をして後進の指導が出来るように邁進する所存です。とりあえず、錆び付いた英語をなんかしますわ。
自分の業界の英語文献は楽勝なのに、畑が違うと今一判らないことが多いですね。case sensitiveとかはじめて見ますわ。
プログラム業界周辺では常識的な単語なのでしょうね。
やっぱりマトモなAHK導入サイトが無いからこういうことになるんだと思う 初心者が増えるから余計に面倒になると思う人もいるだろうけど AHKとは自分でコツコツ調べて学んでいくもんだという姿勢が身につく チュートリアルが皆無なんだよ 某流行らせるページはこの点まったくなっちゃいないしね
>>80 流行らせるページはヘルプの抄訳だからね。
まあ、蘭学の時代を思い出して辞書片手にコツコツやるのが筋だろう。
面白いソフトなんて日本以外からもドンドン出てくるんだから、英語力を鍛えるべきだろね。
このスレって本当に初心者にひどいな。
ココまでひどすぎなくてもって思うが。
>>80 マトモなAHK導入サイト無いね。
ココで「自分で調べろ!ググレ!」等と言うからには ググった時にちゃんとそれなりのサイトや
情報が出てくるようになっているべきでしょ。
ググっても現状ではサイトも情報も少ないのだからこういう事になる。
誰かマトモなサイト作ってくれないかなぁと他力本願になってみる。
このソフトを自分で使いこなせるようにするには 自由にプログラミングできる能力が求められるから、 AutoHotKeyの他にプログラミング入門の要素も内包する必要があり 面倒が多い。 プログラマ相手ならこれこれこういう文法でこういうコマンドや関数があって… とかいとくだけでいいんだけんども。
自分で使ってるスクリプトにちょこちょこと コメントでも入れて紹介したらどうだ? ここで他人を不愉快にするより、よほどいいぞ。
>>83 そうですね。
初心者には敷居が高いソフトという事になりますね。
初心者はUWSCにすべきなのでしょうか。
AutoItもAutoHotKeyと同じようにスクリプト言語みたいですし。
流行らせるページの「使用例」ではだめということかな どういうのを想像しているのだろう?
せめて繭からスムーズに移行できるくらいには チュートリアル的なもの充実させたほうがいいかも
>>87 とか言う奴に限って自分では何もしようとしない世の不思議
不思議でも何でもないだろ 普通にそんなもの自分でやるのは面倒 しかし「流行らせる」ページといいながら 一向にその気が感じられないサイトを 意見する権利くらいはある もちろんこの意見を批判しようがそれも結構
>>90 私も貴方の意見に同意。
流行らせるページとうたっていながらあまりにも不親切すぎる気はする。。。。
不親切とかその気がないとかではなく、具体的にどこがダメでこうこうこうすべきだと言えばもうちょっと建設的になるのではなかろうか?
社会の最底辺から高所から物を言うというのもある種の芸だなw
>>92 それじゃあ私が思いつくままに言ってみます。
といいつつ上手く言えないので
http://www9.plala.or.jp/sgwr-t/ ↑C言語の解説サイトですが、 こんな感じに出来ないかと。
流行らせるページはいきなり高度な事をしすぎているというか、順を追って1つ1つ解説していく
方がいいと思うんですよね。つまり
クイックスタート みたいなリンクを一番上に置いといて、そこをクリックすると
1.画面にメッセージを表示してみる
MsgBox, 表示したいメッセージ
例: MsgBox, メッセージ表示テスト
なお、, の後スペースを入れても入れなくても動きますし、文字列を" "で囲む必要もありません。
みたいなところから始めて、徐々に高度な事を紹介していくというか。
文法も何も全く知らないのに流行らせるページで一番最初に見るスクリプトが
#IfWinActiveとか Process, Waitclose, notepad.exe みたいな引数がたくさんあるコマンドとか、
一見して複雑そうに見えるのがいきなり載ってるから「これは無理そうだ・・・」となるわけで。
簡単な所からいくべきじゃないですかね。
流行らせるページは入門ページとしてはダメですが、実際に何度かスクリプトを書いて動かした
経験がある人がちょっと調べる程度の場合は機能すると思います。
それでも情報が少なく感じます。
Javaの公式APIドキュメントやLinuxのmanページみたいなものすごく固い必要最小限しか
書かれてないものを見ても 初めてAHKを使う人には分かりませんよ。
>>90 意見はそりゃ自由だが、こんなところでグダグダ書いて、それで意見を言った気になっているのは頭が悪すぎる。
言いたいことは直接流行らせるページに言えよ。
それすらも面倒か?
それで「意見を言う権利はある」なんてギャグの極みだな。
どうやら貴様の考えでは、流行らせるページの管理人はここの書き込みを逐一チェックしなければならないようだ。
>>85 > AutoItもAutoHotKeyと同じようにスクリプト言語みたいですし。
UWSC もスクリプト言語だけど?
>>89 > 繭って何?
窓遣いの憂鬱の実行ファイルが mayu.exe。
通称繭。
>>91 そう陰口言うだけなら自分で作ってごらん。
ちょっと話変わって申し訳ないんだけど 皆はAutoHotKeyをどういう理由で選択した? 他にロケットマウス、UWSCとAutoIt、窓使いの憂鬱等あるみたいですが、 あえてこのAutoHotKeyを選択した理由が知りたいです。 他のソフト群には無い優位性があるんですかねぇ? ちなみに私自身が選択した理由ですが UWSCは有料化の流れっぽい、フリー版はあるけど、実行ファイル化出来ない(確か。) ロケットマウスは完全に有料 AutoItは目をつけたけど日本語の情報が超少ない 窓使いの憂鬱 使った事が無い+自動操作っていうよりキーバインド変更ソフトっぽい って事で残ったAutoHotKeyになったのですが。これは実行ファイル化も出来ますし 完全フリーですし、(一応)日本語の情報もありますし。
三十路工員の俺的チュートリアル 其の壱(何が出来るのか) 1.AutoHotKeyを起動する 2.Win + Z を押してみる。公式サイトが開いたら成功。 3.Ctrl + Alt + N を押してみる。メモ帳が開いたら成功。 其の弐(どうやって書かれているのか) 1.AutoHotKey.ahk をメモ帳で開く。具体的にはタスクトレイHを右クリック-Edit This Script 2.上記の機能がどこに書かれているかを、なんとなく探してみる。必要なら印刷しとく。 其の参(試しに編集してみる) 1.上記機能の指示と思われる行の頭に;を挿入、コメントアウトする。保存。 2.Hを右クリック-Reload This Scriptで、スクリプトを読み直し、機能が死んだ事を確認する。 3.割り付けられたキーを変えてみたりしてみる。 これで導入チュートリアルは終了です。AHKの世界にようこそ。
>流行らせるページ プログラムの知識も何もなくてWSHくらいしか触ったことのない俺でもすぐ使えるようになったわ
ここに長文書く気力があるんなら Wikiでも立てて関数ごとのサンプル補完集でも作ってみたら。
>>101 WSHやってるだけでも十分でしょ。全くこういう類の、Batファイルすら書いた事が無い人だって
いるわけで。そういう人たちには門が狭すぎないかい?ってはなし。
ブラウザ上のリンクをクリックさせたいです しかしこれをやるには、COMというのを利用しないといけないらしい なにがなんだかサッパリわかりません サンプルを探そうとググっても、外国のフォーラムでAHKのGUIにブラウザ画面を追加するものが見つかったくらいで リンクをクリックさせるという事は見つかりませんでした。 どなたか助け船を。。。 甘えて言えば、簡単なサンプルがほしいです。(傲慢ですいません!)
流行らせるページは本家のドキュメントの簡約版で、初心者への布教目的じゃないだろ。
本家からして初心者向けは「Quick-start Tutorial」くらいしかないわけだろうし。
>>78 その辺り纏まって在れば便利だと思うが、如何せん機械翻訳なので少ししか理解しきれない。
もっとキチンと読めてる人が居たらと聞いてみたのだが・・・。
例えば、初心者にAutoHotKeyの使い方を手っ取り早く知ってもらうのに、 こんな例から入るのはどう? AU3_Spy.exeを起動して、その状態で、エクセルならエクセルの ウィンドウをアクティブにする。 で、AU3_Spy.exeに表示された、ahk_class XLMAINの部分をコピーして #IfWinActiveの後ろに貼り付ける。 で、その下に処理内容として、^+c::Send, {F2}^+{Home}^c{Esc}みたいなのを 書いてやると、エクセルがアクティブな時にコントロールとシフトとvを同時に 押したら、セルの中身だけがコピーされるスクリプトの完成、とかね。 一応、完成品は以下の通り。 #IfWinActive ahk_class XLMAIN ^+c::Send, {F2}^+{Home}^c{Esc} まぁ、分かってる人には退屈極まりない例だろうけど、 流行らせるのが目的って事でどうでしょう?
>コントロールとシフトとvを同時に vじゃなくてcでした、スマソ…
>>104 リンクをクリックできるとどうなるの?
なんでマウスじゃだめなの?
そもそも設定ファイルを自分で書かないとならない時点でそういう意味での敷居の高さはあるわけだが
そこで逃げなくてすむならば
>>99 程度で十分な気もする
プログラムの基礎から教える必要はないと思う。 ただ、こういうことをしたい気はこういう感じでやる、みたいな 雛形サンプルは結構いいかもね。
すげえ伸びてる。結構見てるやついたんだな とりあえずWikiでもつくるってのはどうだろう?まあ、むりか。
入門編は書籍で出して小遣い稼ぎするつもりで封印してる。
そうか夏休みか
>>104 wsh のサンプルなら結構あると思うから、そっちで探してみたら?
繭もPerlもその他スクリプト言語は殆ど挫折した自分だが AHKはすんなり入れたよ。 スクリプト言語なんだしプログラミングの基礎を踏まえた上での チュートリアルになるのは別に不親切でも何でもないと思うが。 もちろんズブの素人むけチュートリアルを作ろうプロジェクトが発足するなら 素直に応援するが、流行らせるページへの批判とか要望とするのはお門違い ここの住人が不親切ってのも違うだろ。今回にしろ前回のFTP厨にしろ 明らかに質問者が厨丸だしだったし 厨だと判る前はちゃんとしたレスしてやってる奴だっていたんだし
ついでに106キーボード使いのためのアイデアを投下。 vkE2::Send, {AppsKey} 上のように書いておくと、右シフトの横のバックスラッシュキーで コンテクストメニューが出せるので、カーソルキーに右手を置いた ポジションから親指で操作出来て、シフト+F10よりもラク。 vkで指定しているので、バックスペースの左のバックスラッシュとは 区別される。 もちろん、アンダーバーはシフトを押しながらで普通に入力出来る。 レジストリをいじってリマップするやり方だとこうは行かないので、 このやり方は、AutoHotKeyならでは。
皆もうちょっと初心者向けのサイトがあってもいいと思っているんじゃないの? だからこういう話題が出たときに書き込みが増えたんだと思うけど。 こういう話題に興味が無いなら一言文句言って後は相手にせずに放置だろうし。 結構反応あるってことは そういう考えの人もいるけど、ここで私みたいに言うと 叩かれるかもしれないからいえないでだまってるだけじゃ? なんかそういう空気を感じる。
>>117 > 皆もうちょっと初心者向けのサイトがあってもいいと思っているんじゃないの?
じゃあ作れば?
自分でやらずにgdgd言ってれば叩かれる罠
2chでリア厨ありがちな言動。 「頭脳明晰な俺様が全部指示してやるからお前らはその通りに動くんだ。」
別に無理してつかわなくていいよぉ。 代替ソフトがないワケじゃないしぃ。
>>117 最初から、作るよor作ろうよって切り口だったら誰も文句言ったりはしなかったと思うが。
現存するサイト批判に始まって、もっとこうあるべき(誰か作って)的な
厨思想じゃあなぁ
あったほうが便利だよねって賛同意見集めてる間に材料集めてwikiでも起こしゃええ
おまいさっきからgdgd言うばっかでなんのネタ出しもしてないじゃん
三十路工員の俺的チュートリアル 其の四(代行入力1) 1.右側Winキーを押すだけで、円周率20桁を代打ちさせてみる。 AutoHotKey.ahkのどこか(#z::RUN www…の下とか)に次の追加&保存、そしてReload。 RWin::Send,3.1415926535897932384 2.メモ帳上で右側Winキーを押してみる。3.1415…とタイプされたら成功。 其の四(代行入力2) 1.先ほどのスクリプトを変更する RWin::Send,これで定型句入力はマスターだぜ! 2.メモ帳上で右側Winキーを押してみる。…現象の原因に見当が付くなら成功。ここでは詳しく説明しない。 ちなみにどうやれば上手くいくのかは流行らせるページにヒントがある。探してみよう。 其の五(代行入力3) 1.先ほどのスクリプトを変更する。 RWin::Send,! n 2.メモ帳上で右側Winキーを押してみる。メモ帳が最小化したら成功。 これはAlt+Space,N(今居るウィンドウの最小化)という操作を代行入力させた。 これで流行らせるページを読み解く足掛かりは出来ました。 以上の知識だけでも色々と応用は利くはずです。手近な所で2ch専ブラのメニューとかで 実験してみてはどうでしょうか?
ああなるほど、「其の四」みたいな持って行き方は良いですね。 慣れてくると初心者の時のつまづきは忘れてしまいますよね。
こんな賑わいは始まって以来だ
流れに乗じて更に小ネタを投下。 ^[:: Clipboard=「」 Send, ^v{Left} Return コントロールキーを押しながら[を押すと、「」が挿入されて カッコとコッカの間にカーソルが移動する。 クリップボードに「」が残ってイヤーンと思ったら 流行らせるページにヒント(ry 「エクセルなんとか本」みたいに、「使えるTips」を 【初級】【中級】【上級】みたいな見出しを付けて 連発すれば、文字通り「流行る」んじゃないかと今ふと思った。
流行って裾野が広がるとどうしても弊害が出てくるからなぁ… 今来てる厨みたいなのが大挙して押し寄せてきたらどうするよ?スレ終わるよ?
ID:CkCN0Ddx0 って空気読めないやつだな。
>>117 >結構反応あるってことは そういう考えの人もいるけど、ここで私みたいに言うと叩かれるかもしれないからいえないでだまってるだけじゃ?
おめえだけだろ。
俺個人の意見だけど、最初でも流行らせのチュートリアルで十分だし、あれくらいの情報量で頑張ろうとすると結構知識付く。
調べたくないから、初心者様用のサイトを作れなんて言ってるんだろおめえは。阿呆か。
>>125 同じようなこと考えてる人いるもんだね
自分はhotstringで
::()::(){Left}
ってやってたんだけどそっちのほうがいいかも
hotstringはメールアドレスとか定型文の打ち込み楽になるし
::cmd::
run %SystemRoot%\system32\cmd.exe
return
見たいに書けば文字だけじゃなくてahkのスクリプト普通にかけるから
結構便利だよ
>>125 のクリップボードを残す方法
^[::
ClipSaved := ClipboardAll ; クリップボードの全内容を保存
Clipboard=「」
Send, ^v{Left}
Clipboard := ClipSaved ; クリップボードの内容を復元
ClipSaved = ;保存用変数に使ったメモリを開放
Return
>>128 ヘェー
HOTSTRINGは誤動作恐くて使ったことなかったわ
後半の正解は蛇足っしょ
初心者に調べるクセつけさせる目的なんだから
三十路工員の俺的チュートリアル 其の六(特定アプリ上のみで有効) 1.Jane Doe Styleの「更新チェック」と「ログから検索」をワンキー化 #IfWinActive ahk_class TMainWnd F12::Send,!op ^+f::Send,!sg #IfWinActive F12一発で更新チェックが、Ctrl+Shift+Fでログから検索が使えたら成功。 ahk_classはタスクトレイのH右クリック-Window Spyで調べられる。 # ちなみに書いた当人は流行らせるページに掲載されているネタを一部書換しているだけで、 # 意味などほとんど理解してはいない! TMainWndって何?とかこっちが聞きたいッ! # というか教えてくださいおねがいします。
Janeのワンキー化はJaneだけで出来るんじゃ?
>>131 たぶんkeyconf.iniだったかで出来ると思いますが、身近な例って事で。
本日の成果
>>99 ,122,130
^h::Send,{BS} ; Ctrl+HでBS。括弧に気付くまでの数日間の軌跡をチュートリアルに再利用w
!vk1Dsc07B::!F4 ; Alt+無変換でウィンドウを閉じる(Alt+F4)。猫まねき時代からのお気に入り。
^RWin::Reload ; Ctrl+Winでスクリプトのリロード。初学者必須の定義。
ところで一つ質問なのですが、「昨日の日付」をペーストする機能を作る事は可能でしょうか?
AHKの書き方と言うより、プログラミング知識のような気もしますが…。
昨日は今日の前の日。
>>132 こんな感じ?
^t::
Test := A_Now
EnvAdd, Test, -1, d
FormatTime, Test2, %Test%, yyyy-M-d
Clipboard = %Test2%
Send, ^v
>>129 誤動作って多分普通の文字入力中にhotstringが発動しちゃうことを心配してるんだろうけど
子音三つ続きとか普通絶対打たない組み合わせなら大丈夫だよ
#Hotstring EndCharsで終了文字列指定することも出来るし
日本語の場合IMEに登録しちゃったりするしあんまり使うこと無いんだけどね
>>134 リロードだけでは不十分なケースもあるって事ですか?
>>135 文字列変数を減算してる!?。一応A_Nowまでは見つけてましたが、
EnvAdd、TimeUnitsまでたどり着けていませんでした。ありがとう。
たぶん、必要な事は全て流行らせるページに載っているのだろうけど、
そこまでたどり着けないんだよね。ポインタだけでも示してもらえるととても助かります。
夏休みが始まったな
うーむ・・酷い流れだ・・色々と書こうと思ったけどアホらしくなってきた。 なんでも人に頼ろうとするような奴はスルーするのが一番だな。 相手にすると余計無駄にスレ消費するだけだ。
流行らせるページを読んでも理解出来ないレベルだと、 結局使い続けるのは無理だと思うぞ その手の知識や能力が無い訳なんだから 元々万人向けのツールでは無いのだから、今のレベルで十分でしょ
^S:: Send,{Y} ... ^S:: Send,{X} といった重複定義を許すような設定ってないの? Includeでテンプレを使いつつ 必要なところだけをカスタマイズみたいなことをやりたいんだけど。
>>141 その前に {Y} って何? {Enter}とかなら分かるけど。 普通のYとは違うの?
デフォルトを変数に設定しておいて、 カスタマイズしたいところは変数の値を変える、 ってなことでもできるんでは。
>>141 つまり、Ctrl+Sを押したときにどうしたいんだよ?
YとX両方おしたいわけ?
IfWinActiveとかで解決する話なような。
>>74 いままで見たこと無かったけど、本家のScripts&Functionsすげーな。
なんか粘着っぽいヤツもいるのが笑えるけど。
マジで参考になる記事も多い。
なんとなくスルーされちゃってるけど、教えてくれた74には感謝。
初心者向けに何かって流れになっていたけど、そういった高品質のものを
どんどん輸入していって、スレ全体のレベルを上げたほうが良いと思う。
>>146 wikiの方にも掲示板からのが纏まっているので、ご一緒にどうぞ。
公式すげえ Lil' Builderっていうやつなんかわかんないけどすげえ。VBみたいにGUIつくれるぽい
AHKってスクリプト部分がウンコすぎて大作作る気にならない
そうか
>>147 >初心者向けに何かって流れになっていたけど
夏休みサービスって事で、たまには良いんじゃないか?
とりあえずこれからAHKをはじめる人は 流行らせるページのどこからどういう順番で読んでいけばいいかは知りたいと思う。 そういうフローチャートぐらいはあってもいいんじゃないかな?
イントロダクションから順番に全部目を通した方がいいと思う。 レファレンスは必要な時くらいでいいけど。 式、関数、コマンドあたりの区別がつかないと結構落し穴になる。 いきなり全部読んでも感じがつかめないなら 少しずつ書いてみながら読めばよい。
#IfWinActive ahk_class Notepad a::b ここから入れば、初心者でも楽しく遊べると思うyo!
>>154 それだけだと a って打てなくなるのですか?
a::b
b::a
入れてるなら打てますけど。
初心者ネタは新手の釣りとしか思えない
>>156 いんじゃね?確かに
>>157 みたいなのは、技術的には何の面白みも
ないかも知れないけど、アイデア自体は面白いと思うぞ。
プログラミングのスキルは無いけど、面白いアイデアを持ってる
人の書き込みには、期待しても良いと思うけど。
マウスカーソル位置がX=0,Y=0の時に、 特定のアプリを起動させるにはどうすれば いいんですね!
SetTimerで位置を監視してってのが一番なんじゃないですね!
あ、書き忘れました。 上記の参照 をクリックしたら FileSelectFolderが動作して フォルダを選択してOKクリックしたら 左側の空白のボックスに選択されたフォルダのフルパスが自動的に書かれて、手動で それを編集する事も可能にしたいです。
これがゆとりか
本日の成果
>>134 を教材に、サクラエディタで保存&リロード
右Win+HでAutoHotKeyヘルプ日本語版の表示
括弧「」囲み機能のバグフィックス
目標のWebフォーム入力支援のパーツ検討(1.正規表現置換)
括弧内を選択状態に戻すつもりで、文字列長取得&ループ処理で試してみましたが、
全角文字に対応できず…。この件は棚上げにして次へ。
>>161 書込む前に現スレ内くらいは読んでみろ。まだ160位しかいってないんだから。
読み終わったら、その手の質問が受けつけられる雰囲気かどうか考えてみろ。
ココ糞スレだな。存在する意味が無い
伸びてるだけでもたいしたもんなんだぜ?
まぁ、考える能力が無い奴にとっては意味が無いスレだろうね
自分で考えない人と日記スレになってるよね。 自己紹介版に移動するかblogでやった方が良いんじゃね?
糞スレage
>>161 1.Gui , Add で画面にコントロール(Text,Edit,Button)を追加
2.ボタンを押したときにFileSelectFolder を動作させる
3.2で取得したパスをEditに出力(設定)する
以上でできると思われます。
空気読まずに書いてみたが、もう見てないかなぁ?
173 :
161 :2007/07/27(金) 18:15:14 ID:e3g8BxL30
>>172 レスありがとうございます。
貴方がおっしゃることは私が考えていた事とまったく同じです。
しかしそれを実現するためのコードの書き方がわからないのです。
つまりアルゴリズム、ロジックはわかっているのですが
文法的な面でわからなくてサンプルコードを載せて頂きたいのです。
試行錯誤してみたのですが、上手く動作しないので・・・。
よろしくお願い致します。
もういやになるね わからない七大理由 1. 読まない ・・・説明書などを読まない。読む気などさらさらない。 2. 調べない ・・・過去スレ、ググるなど最低限の内容も自分で調べようとしない。 3. 試さない ・・・めんどくさいなどの理由で実行しない。する気もない。 4. 理解力が足りない ・・・理解力以前の問題で理解しようとしない。 5. 環境のせいにする ・・・自分が悪いのではなく環境が悪いと責任転嫁する。 6. 人を利用することしか頭にない ・・・甘え根性でその場を乗り切ろうとする。 7. バカだから ・・・バカだから。
173へ。オマエのいっていることをわかりやすく翻訳すると、
>>172 レス Thanks.
でも、172が書いてるようなことはオレにだってわかってんだよ。
コピペで使えるようなヤツよこせよ。
ってコトだよね。
172の親切心には本当に頭が下がるが、バカはスルーして欲しい。
丸投げしておいてレスが返ってきたら、 「そんなことは解ってるわ」ってか。そんな後出しの仕方があるか どこまでやってどっからわからんのか最初からちゃんと書け。横着すんな あと丸投げすんな。自力での努力の跡が見えない奴に親切なレスがつくと思うな
>>172 smartgui みたいな RAD ツールを使った方が早くね?
181 :
172 :2007/07/27(金) 20:44:59 ID:d96Jk71r0
>>161 私自身AHK初心者ですが、
>>175 さんの示されているURL見て
1時間くらい試行錯誤したらできました。
>>178 さんの仰られているように、どこで詰まっているのかを
明示された方が良いと思います。
私がレスした内容の1・2・3のどこで躓いていますか?
>>176 すいません。
以後気をつけます。
(またレスつけていますが・・・)
>>180 SmartGuiの事初めて知りました。
確かに早いですね。
でもイベントは自分で記載しないといけないので、あんまり変わらない気もします。
教えていただきありがとうございます。
>>173 いいからその試行錯誤したコードを晒してみれ
それともアホがバレるのが怖くて出せないのか?
恥をかくのは嫌、でも質問には答えて欲しいって
どんだけムシがいいんだよ
Gui, Add, Text, , バックアップ元 Gui, Add, Button, gExec x600 vTarget, 参照 Gui, Add, Edit, xp-590 yp0 w450, %source% Gui, Show return Exec: FileSelectFolder, source, , , バックアップ元フォルダの選択 Gui, Submit, NoHide return こんな感じです。 これだと FileSelectFolderで選択したフォルダのフルパスが 変数sourceに入って それをGui, Add, Editの引数に与えてやってデフォルトとして表示させてやろうと 思ったのですが、表示されません。 3行目を Gui, Add, Edit, xp-590 yp0 w450, %Target% と書き換えても表示されません。根本的なところで理解してないと思いますので (これでも流行らせるページのGuiのページの自分が使うコマンドの説明は読んだ) サンプルコードを書いて頂ければ、そのコードを見れば勉強になると思ったのですが・・・
185 :
172 :2007/07/28(土) 00:58:17 ID:WO+luJq50
>>184 3行目の
Gui, Add, Edit, xp-590 yp0 w450, %source%
は、
Gui, Add, Edit, xp-590 yp0 w450 vsource,
とすればいいのではないかと。
Optionの”v”はEditの中身にアクセスする時の名称となります。
参照ボタン押した時の動作は
Gui, Submit, NoHide
ではなく
GuiControl ,, source , %source%
とすればEditに表示されるはず。
最初のsourceはEditを追加する時に”v”で指定した変数名
%source%はFileSelectFolderで使用しているsource。
私としては気持ち悪いので後者のsourceはValか何かに変更します。
Gui, Submit, NoHide ですが使用するのは最後に手入力等の入力している
Editの値を”v”で指定した変数に反映する時に使用します。
後は流行らせるページを見て頑張って下さい。
;;内容違っていたらつっこみお願いします。
コードを書いた方が良いのか分からないから一つだけ。 パーツの位置はEdit,Buttonの順で書けばButtonにx+5だけでおk。 …初めからこの流れだと文句も出なかっただろうに。
そういえば、GUI 使うと強制的に SingleInstance になる制限がウザったい。
>(これでも流行らせるページのGuiのページの自分が使うコマンドの説明は読んだ) >サンプルコードを書いて頂ければ、そのコードを見れば勉強になると思ったのですが・・・ てめぇの都合なんか知るか
うん、やっぱり失敗なら失敗でも良いから、ちゃんとコードを 書いてくれた方が話が具体的になって良いよね。
>>189 建設的ですね。
どんどん、恥をさらしていきましょう。
本日の成果 FormatTimeとif文で、文字列が日付として成立しているかを調べる事に成功。 クリップボードへの代入が安定せず弱っていたが、試行錯誤の末 Sleep 100 を挿入したところ、期待した動作をするようになった。
いいかげんにしてください
参考になるからどんどんやってくれ。 でも、スクリプトを晒してくれ!
しかしここまで日記らしい日記も珍しいなwww
流石にここで日記書かれるのはなぁ つかブログでコードと一緒に公開汁>191 他者にとっても参考になりそうな内容なら次回からテンプレに入れてもらえるであろ
スクリプトも一緒に張ってあるなら参考になるし問題は無いと思うけどな
じゃあ、今日は
>>191 がコードを貼ってくれる事に期待しようか
あえてコードを貼らないのは教えて君への導入ヒントのつもりなんだろう だが教えて君はログなんか読まずに質問してくるけどな。
教えて君も日記もいらんですたい
面白い使い道とか教えてくれたら万人の利益になるよ。
とある特定のソフトが定期的にポップアップを出してきます。 「更新完了、再起動が必要です。今すぐ再起動しますか? はい いいえ」 みたいな。 AHKを常駐しておいてそれが出てきたら即効でいいえを選んでくれるようなの作りたいのですが それを作るにはやっぱり5分に1回とか定期的にチェックさせるしか無いですかね? で、無限ループ構造で。 Loop { IfWinExist, 再起動ダイアログ { WinActivate, 再起動ダイアログ Sleep, 100 Send, {Alt Down}n{Alt Up} } } こんな感じに書いているのですがどうすればいいのかよく分からなくなってきました。
Autohotokey.exe script.ahk -hoge とか Script.exe -hoge みたいに、ahkのままのスクリプトやExeにしたスクリプトに起動時に引数を渡したいんですが、 それをAutohotkey内で取得できるんでしょうか。 この場合、スクリプト内で-hogeが欲しいんですが。
書き方はいろいろあると思うけど いずれにせよ監視してなきゃ検知出来ないでソ 漏れなら特定のソフトを起動させるときにスクリプト経由で起動させて そのままそいつを常駐させて、そのソフトのプロセスがなくなったらそいつも終了するとか そんな感じにする
Loop, %0% { t := %A_Index% MsgBox, %t% }
SetTimer使うにしてもLoopで定期的に実行させるにしても "Windowが現れた瞬間に(1秒後ぐらいに)即効でAlt+Nを送出していいえを選択させる" みたいな処理は出来ませんよねえ。やろうとしたら1秒か2秒感覚毎に監視しないといけないから かなり負荷が高そう。だからって5分毎に監視とかやると負荷は減るけど 5分たった>チェック=Windowなし、5分待機 ってなった次の1秒後ぐらいに Windowが現れたら、4分59秒後までチェックが行われないから最大で約5分程度そのWindowは 放置される事になる。これだとユーザの手で手動でいいえを選択してWindowを閉じちゃった方が 速いからスクリプト常駐している意味が無くなる。難しいなぁ〜。 フォルダ監視等の監視ソフトってどういうロジックで動かしているんだろう・・・。
グローバルフック でぐぐれ。
WinWait
>>210 情報ありがとうございます。
グローバルフックっていう"Windowsがアプリケーションへ送るメッセージを監視するもの"がある
事は分かりました。仮に
>>211 のWinWaitもそういう類のものだとして、
利用者はそういうものがあるんだと思ってそれを使うだけで目的は達成できると思いますが、
そのグローバルフックのアルゴリズムってどうなってるんでしょうね?
内部でどういう処理をしているのか気になったりはしませんか?
グローバルフックっていってもCで言う関数、Javaで言うメソッドみたいなものでしょうから
中は既存の物だけで作りこまれていると思うんですが・・・。
すみません。スレ違いですね。
大体そんな事言ってたら
じゃあ C言語の printfってどういう風な仕組みで画面にメッセージを表示しているの?っていう
レベルからになりますし・・・。
>>212 のレスは無視して下さい。すみません。
>>212 何がいいたいのかよくわからないが、Global hook は OS の機能なんだから、
OS がメッセージ送信するときに Global hook chain に登録されている hook
を呼び出してるだけだろ?
1秒2秒で廻してもそんなに負荷かからんけどな。 処理が発生するのは目的のダイアログがある時だけだし、あってもSend何発か投げるだけだし。 ちなみに自分の場合はこんな感じ init: SetTimer,tm_Diarog1,500 return tm_Diarog1: ;Beckyの メッセージアラートを自動Close IfWinActive ,Message from Becky!,この添付書類は、実行ファイル、 Send,y IfWinActive ,Message from Becky!,以下のURLが指すWebサイトに接続しようとしています。 Send,y return
ポーリングループは良くないアルゴリズム。
>>216 その根拠は?
kernel レベルや組み込み分野ではポーリング使うのは普通だぞ?
んなことより Diarog につっこめよ
そういう階層の話はしてないし。
Dia"l"ogですな orz
AHKだけでグローバルフックとか無理じゃないのか?
SetTimerでIfWinActiveをチェックするのなんてほとんど負荷なしに等しいよ。 最短の10msでもいいんじゃねぇ?
アプリケーションのレベルでポーリングループが出てきたら ほぼ設計ミスと言って良い。8割方代替手段がある。 ポーリングループがパフォーマンスの観点で良くないのは常識だろ。 出来るだけ避けるべし。
ループでもキーフックとの共存は可能だし、Sleep入れれば張り付きは避けられる でも同一スクリプト内で複数のループを平行して動かすことは出来ないし AHKではせっかくTimer用意してくれてるんだからそっち使うほうが楽じゃね?
フリーのウイルス対策ソフトウェア Avast!の自動更新を有効にしている場合に しょっちゅう「再起動しますか?」とダイアログで聞かれるのを自動でいいえと答えて閉じる スクリプトが完成しました。 #Persistent ;スクリプトを常駐状態に SetTimer, Lbl, 2000 Lbl: IfWinExist, avast!: オペレーティング・システムの再起動が必要 { WinActivate, avast!: オペレーティング・システムの再起動が必要 WinWaitActive, avast!: オペレーティング・システムの再起動が必要 Sleep, 100 Send, {Alt Down}n{Alt Up} } こんな感じ。SetTimerを教えてくださった方ありがとうございました。 ところで、これ3行目(Lbl:の1行上)に制御を戻す事は不可能なのでしょうか? SetTimer, Lbl, 2000 MsgBox, 制御が戻った Lbl: ;処理を書く ↑こういうスクリプトがあったとしたら、無限に2秒毎にLbl:以下を実行し続け、2行目のMsgBoxが 1度も永久に実行される事が無いですよね?コレを実行させるにはどうすればいいのでしょうか?
WinWait Return
AHKのスクリプトに精通している人はちょっと尊敬するわ。
なんかいろいろわかってなさそうだが、とりあえずサブルーチンの前後にRetun入れろ 話しはそれからだ
>>229 SetTimer, Lbl, 2000
MsgBox, 制御が戻った
return
Lbl:
;処理を書く
return
こういう事?
DllCall("WindowFromPoint", Int, x, Int, y, UInt)という関数で 相対座標で座標を指定したいのですが、どうやればいいんでしょうか?
>>233 そもそもそれじゃ引数が違うから呼び出せないんじゃ?
>>234 サンクス!よく分からずXとYだけ変えて使ってました
絶対座標専用なんですね
あ、ごめん、WindowFromPoint は PPOINT 型じゃなくて、
POINT 型の引数なのか。 やっぱ
>>233 で合ってるわ。
相対座標ってどこからの相対なのかわからないけど、
スクリーン座標系からクライアント座標系に変換するには、
hwnd = WindowFromPoint(pt);
ScreenToClient(hwnd, &pt);
みたいに書けばいいんじゃない?
2kで個別のアプリのCPU使用率を取得する方法はないでしょうか? 流行らせるページのスクリプトはXP以降にしか対応してないみたいでダメでした。
>>236 ありがとう!
でもそこら辺にあるスクリプトを継ぎ接ぎしてるだけのおいらにはムズイw
質問があります。 海外ソフトで使うスクリプトを作ってます。 ~キーを押す必要があるんですが日本語キーボードに対応してないので 日本語キーボードだと@キーを押すことになります。 こういう場合に英語キーボードで~を押したことにするにはどうしたらいいですか?
~キー出力は、JP106キーならShift+^、US101キーならShift+`なんだが…
なにいってんのかわかんないけど jp106キーボードでUSドライバ使ったりすると shift+半角で~出るよ。
ワロタwwwwwwww
>>243  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
|
____.____ | .__ PCを
| | | | |\_\ 窓から
| | ∧_∧ | | | |.◎.| 投げ捨てろ
| |( ´∀`)つ ミ | | |.: |
| |/ ⊃ ノ | | .\|.≡.|
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ |  ̄
246 :
243 :2007/08/16(木) 06:19:27 ID:oDhmkhIm0
Diablo2.ahk誰か早く
スクリプト走らせる度にAutoHotkeyのプロセスが増えるんですが仕様ですか?
仕様です というか当然です
d
一つのプロセスで複数のスクリプトを別の名前空間で走らせられたら 他人の作ったスクリプト利用しやすくなりそう。
>>251 そこまでするなら、もう他のましな言語に載せ変えてほしい希ガス
モニタを追加したのですが 下のようにすると、もとのモニタ内でしか、ポインタが異動しません。 どうすれば、追加したモニタ内も動くようになるんですか? たとえば、画面の右端にポインタがくると、左端にきてしまいます。 h:: MouseMove, -20, 0, 0, R return
254 :
名無しさん@お腹いっぱい。 :2007/08/23(木) 19:00:00 ID:R2hk6dcE0
キーのremapで悩んでいます。 テンキーのような配列のキーボードで、一つ一つを押すと 「Ctrl + Alt + A」「Ctrl + Alt + B」...のように、 「Ctrl + Alt +※」のような組み合わせでキーコードを発行するキーボードが 有るのですが、その「Ctrl + Alt + A」のキーを「Enter」に割り当てたい場合に ^!a::Enter としたときにkeyhookには、 down Ctrl down Alt down a down Enter up a up Enter up Ctrl up Alt down Ctrl up Ctrl のように出力されます。 実際にエディター等で、「Enter」のように機能しておりません。 「Ctrl + Alt + A」が押された後に「Enter」が押されています。 その関係で、ほとんどのキーが正常に反応しません。 何か良い方法、もしくは参考になるサイト等をご教示願えないでしょうか? ちなみにAHKなどのキーバインドソフトや、プログラムの経験はほとんど有りません。 サンプルのコードからどのような動作がなされているかくらいは分かると思います。
>>254 その製品自体にはリマップツールは付いてないの?
で、
^!a:: Send, {Enter}
は試した?
253をどなたかよろしく
SysGetで複数モニタのステータスは取れるけど。 マウスポインタの指定の仕方はわかんね
無変換+EDSFにマウスカーソル移動を(使い物になるレベルで)割り当てたいんだけど、 移動量や加速度の調整のうまいやり方ご存じないっすか? 一応昔書いたコードを晒しておきます。汚いですがスイマセン。 これだと見ての通りちょっと押し続けると思いっきり移動してしまう感じに。 理想はジョイスティックやトラックポインタみたいなものだけど、デジタル入力だと難しいでしょうか。 ;カーソル右移動 sc07B & F:: vol := 1 speed := 0 MouseMove, %vol%, 0, %speed%, R Sleep, 100 Loop { Sleep, 10 GetKeyState, s1, sc07B, P GetKeyState, s2, F, P If (s1 = "U" || s2 = "U") { break } Else If (s1 ="D" && s2 = "D") { vol += %A_Index% speed += %A_Index%/2 MouseMove, %vol%, 0, %speed%, R } }
A_INDEXを加算するんじゃなくて 2秒以上押してたらパラメーターを変化させるとか
%A_Index% に対する speed の
増加率をもっとゆるやかにしたらいいと思う。
speed += %A_Index%/2
だとspeedが二次関数なみに増加してってる。
あとは
>>259 みたいにループ回数じゃなく時間にspeedを対応させるとか。
AutoHotKeyでマウス3ボタン同時押しで何かをする、というのをやってみたいんだけど どうしたら出来ますか
LbuttonとRbuttonでコンビネーションキーして もう一個のボタンの押下を待てば?
>>262 待つ方法がよくわからなくて
Inputを使えばいいのかと思うんですけど、
LbuttonかRbuttonが離れたらなにもしない、
という風にするにはどうしたらいいものでしょうか
LR+[A]キーで実験してみたお ~LButton & RButton:: { Tooltip, ! Loop { GetKeyState, LB, Lbutton, P GetKeyState, RB, Rbutton, P GetKeyState, A, a If LB = U { Break } If RB = U { Break } If A = D { MsgBox, ! Break } } ToolTip Return }
>>264 なるほどすばらしい動きですね
ありがとうございます
やり方としてはだいたい分かったと思うのですが、
このループは休みなく回り続けると思うのですが、
これはパフォーマンスに悪影響をおよぼしたりはしないものなのでしょうか
どんだけしょぼいPC使ってんだよ PCつけてるだけでそれ以上のものが動いてるっつの
>>266 他言語の開発経験では、
こういったビジーループはCPU使用率を100%近く使い切ってしまうものなので
どういう仕組みでその辺を回避してるのか不思議なのです
ループにSleepを入れなくて大丈夫なのはなぜなのだろうと
そのループに入るのはRL押してるときだけじゃないの。
各行ごとに10msのスリープが最初から入ってた気がする
>>267 他の言語の開発経験があるならソース読もうよ…
すみません、再度質問させてください ~LButton & RButton:: Loop { GetKeyState, rb, Rbutton, P GetKeyState, lb, LButton, P GetKeyState, wUp, WheelUp, P ToolTip %wUp% if lb = U { break } if rb = U { break } if wUp = D { send {PgUp} MouseClick WheelUp,,,U wUp = U } } ToolTip return 二ボタンを同時に押しながら、WheelUp/Downに反応してPgUp/Downをさせたいと思っています GetKeyStateでWheelUpをとると起動後何もしない時の初期状態はUなのですが 一度WheelUpするとDになり、その後Upをしても元に戻りません WheelUpのKeyStateをUにする方法はないものでしょうか それか同時押し+Wheelをうまく動かす方法はないものでしょうか
ディアクティブなウィンドウをウィンドウタイトルで検索してディアクティブなままSend,することって出来ないの?
ControlSend
274 :
271 :2007/08/30(木) 11:40:20 ID:nlX0V4+q0
自己解決しました ~LButton2 & RButton:: ToolTip loopStart HotKey WheelUp, WheelUpLabel HotKey WheelDown, WheelDownLabel HotKey WheelUp, On HotKey WheelDown, On Loop { GetKeyState rb, Rbutton, P GetKeyState lb, LButton, P if lb = U { break } if rb = U { break } } ToolTip loopend HotKey WheelUp, Off HotKey WheelDown, Off return
275 :
271 :2007/08/30(木) 11:41:11 ID:nlX0V4+q0
WheelUpLabel: ToolTip WheelUp return WheelDownLabel: ToolTip WheelDown return HotKeyを動的に割り当てればいいようですね ありがとうございました
自己解決してたか。昨日貼ろうとしたらネット使えなくなっちまって参った・・ほぼ同じコードだけど一応貼っておくよ ~WheelUp::tooltip, 準にゃんならおk ;WheelUp::tooltip, 準にゃ〜〜〜〜ん ~LButton & RButton:: Send, {LButton Up} ;キャンセルしないと不便だと思うので。 Hotkey, ~WheelUp, ~WheelUp, Off ;LRボタンが押されてる間無効化 Hotkey, WheelUp, LB_RB_WheelUp, On Hotkey, WheelDown, LB_RB_WheelDown, On Loop{ GetKeyState, rb, Rbutton, P GetKeyState, lb, LButton, P if((lb=="U") || (rb=="U")){ break } } ;通常時のホットキーの処理に戻す Hotkey, WheelUp, LB_RB_WheelUp, Off ;;WheelUpホットキーラベルが無い場合 ; Hotkey, WheelUp, WheelUp, On ;WheelUpホットキーラベルがある場合 Hotkey, WheelDown, LB_RB_WheelDown, Off Hotkey, ~WheelUp, ~WheelUp, On return LB_RB_WheelUp: tooltip, 寧ろ準にゃんじゃなきゃ嫌だ send {PgUp} ;LButton+RButton+WheelUP時の処理 return LB_RB_WheelDown: send {PgDn} ;LButton+RButton+WheelDown時の処理 return
デフォルトのホットキーのラベル名はキー名と同じなので、ラベルを戻す時は
WheelUpラベルが定義されていればWheelUpに割り当てればいいし
~WheelUpが定義されていれば~WheelUpに割り当てればいいわけですね
ラベルが定義されているかはIsLabel()で分かるみたいですね
しかしもし動的に別のラベルが割り当てられている可能性があると
ラベルを戻す時にデフォルトのWheelUpに戻していいか分からなくなりますよね
そのホットキーに対してなんというラベルが割り当てられているか調べる方法はないでしょうか
3ボタン同時押しを関数化して再利用しようと思っているので(車輪の再発明でしょうけど)
あらゆる可能性に備えときたいんですけど方法はありますかね
>>269 デフォルトで10ms実行すると10ms休むみたいですね
ttp://lukewarm.s101.xrea.com/commands/SetBatchLines.html
279 :
278 :2007/08/31(金) 16:39:31 ID:ipTtSRZ90
>>279 ゲームで使ってみる
今後ともがんばってくれ
長野テクトロンのお気に入りキーボードと組み合わせて なんか面白いことやってる人いない?
なんとニッチな話題
どっかでみたと思ったらやねうらおと喧嘩してた人かな?
うわー、よく知ってますね あんま特定されるもの晒すもんじゃないですね・・・
AutoHotKeyでnストロークキー、
ダブルクリック、トリプルクリック・・・n回クリックなんかを
できるようにするライブラリを作りました
http://pmoky.ame-zaiku.com/ マウスで右押しながら左、左を離してホイール回すとか
右押しながら左、右を離して右ダブルクリック
といった風に自由にコマンドが割り当てられます
よかったらどうぞ
[これはひどい]
何がひどいのか聞かせてもらいたい
やばいっしょ普通に考えて
まあAutoHotKey歴三日でこれだけのものが作れてしまう才能は 普通に考えればやばいとしかいいようがないな
290 :
名無しさん@お腹いっぱい。 :2007/09/03(月) 05:25:56 ID:Hj/BQYMI0
まぁトリプル、n回タップスクリプトあたりは割とみんなAHK覚え始めて最初に作るよな。 だが結局使いにくい(まともに動作はするが操作がおっつかない、指がついてかない)ことが分かって、 マウスジェスチャやホイールリダイレクトあたりの無難なスクリプトに落ち着くんだけど
俺のはちゃんと動作するぞ
操作がおっつかないという話か いや、手軽に実行できていい感じだぞ 拡張ボタンは同時押しで動かす+ダブルで動かす という形が便利だ というかマウスジェスチャは根本的に使いにくい 遅い、疲れる、ミスが多い マウスコマンドが大量に割り当てられる環境があれば何のメリットもない
本日のNGID:mVqCjwNS0
俺はマウスジェスチャ批判してるだけだが 批判に耳を傾けない態度はどうかと思うね
>>295 批判以前に耳を傾けて貰えない理由があるんじゃないの
マウスジェスチャだって、たとえばブラウザの進む/戻るを←や→みたいにしてあるのは
直感的でいいと思うけどね。
↓←で閉じるとか、こうやってこうやってこうするとこうなるとか、
もうファミ通に投稿しちゃうぞみたいなのはどうかと思うけど。
使いやすいとか使いにくいとか主観で言ってるだけじゃ批判にもならない。
右を押しながら左にドラッグするのと、 右ボタン押しながら左ボタン押すのでは どっちが早いか、どっちが疲れないか、どっちが間違いにくいか 答えは誰の目にも明らかじゃない 主観にも何にもなってない
大体複数タップごときでなんであんなに膨大なスクリプトになるんだよ 10行くらいで終わらないか?
WheelはGetKeyStateではとれないから 動的にホットキー割り当てが必要になる ホットキーを一律にとめることが出来ないから 必要なもの以外で起こる可能性のあるホットキーを 一時的に全て止め、実行後に戻す必要がある スレッドの優先順位を上げるだけでは再帰的に適用できなくなるし その辺の処理がめんどい
腕はあっても自意識過剰じゃな
なんで荒れてんの?
>どっちが早いか、どっちが疲れないか、どっちが間違いにくいか それは完璧におまえの主観 ポインティングデバイスは環境によって全然使用感変わってくるよ 拡張ボタンはデフォじゃない、ノートだとホイールが特殊でMBottunすらついてないのもある。 何のボタンを先に押してから何を押すとかいくつも重なると覚えてらんない。 複合ダブルクリックなんてやった日には指がつる。 という意見の奴も少なくはないと思うが? それに、ダブルクリックチェックするなら本当はポインタの移動距離も見ないと 300msタイムアウトくらいだと結構誤作動すると思うぞ
HPあるのなら掲示板作ってそこでやれよ ここに来るな池沼
>>302 君の言ってるのはマウスコマンドが使いにくい環境があるというだけだろ
右押しながら左に関してはノーパソだろうとなんだろうと
マウスジェスチャより正確で早くて疲れない
主観でもなんでもない
まあ確かにボタン5個なければ
マウスコマンドはまともに使えないのは確かだが
それ用に整えられた環境でなら
マウスジェスチャとマウスコマンドの優劣は明らかだと思うがなあ
ダブルクリックに関しては移動距離見る必要があるとは思ってないな
もともとサイドボタン連打したらずれてもしょうがないし
ずれたらダブルクリックじゃないと認識することには
そんなに益はないと思う
>>303 俺はライブラリの宣伝がしたいわけじゃない
聞かれたから答えただけで、俺が言いたいのは
マウスジェスチャよりマウスコマンドの方がいいぞということだけだ
AutoHotKeyスレにふさわしくない話題だとも思わないが
>>304 残念だが君の主張は100%主観だ
> 右押しながら左に関してはノーパソだろうとなんだろうと
> マウスジェスチャより正確で早くて疲れない
これが完全に間違い
君、ノートPC使った事無いでしょ
どちらが操作しやすいかなんて、人それぞれなので好きにしてください。 完全にスレ違いです。
>>305 ノートPCずっと使ってたが右と左はちゃんと隣同士にあったぞ
タッチパッドだからマウスジェスチャは使い物にならなかったが
マウスコマンドは使えないこともなかった
まあノーパソの入力にはいろいろあるから、そうでない環境もあるかもしれないが
そうでない環境があるからといって主観にはならない
君の言いたいのは、
「ある種のノートパソコンでは客観的に見てマウスジェスチャが
マウスコマンドより使いやすい」ということだろう
俺の主張は最初から
「マウスコマンドが大量に割り当てられる環境では、
客観的に見て、マウスジェスチャよりマウスコマンドの方が優れている」ということだ
そうでない環境があることは最初から言っている。
ノーパソでも普通はマウスをつなげて使うから「ノーパソかどうか」は別に関係ない
タッチパッドは誤動作しやすいからマウスジェスチャは使いにくい
君こそノーパソのことを知らないんじゃないか?
ノートパソコンなら普通にホットキーを使えばいいのでは
ノーパソだとキーボードでマウス移動とかしても便利かもな とにかくタッチパッドは腐ってる
誰か興味ある話題ぷりーず 主観かどうかを主張しなければならないような非論理的な展開が続かれても困る
客観的でないという根拠を述べないと 客観的に主観であるということを述べたことにならない つまり「主観だ」とただ書いただけじゃその言葉は 自分自身にも向けられることになる そんなこといちいち説明しなくてもわかってくれるレベルの人はいないのかね
>>312 君はそこまでバカだったのか
「主観じゃない」と主張しているのは君だけなんだよ
他の連中は私も含めて皆主観を述べているだけでね
つまり、唯一君だけが自分の主張は客観的であると言う根拠を述べなければいけない立場なんだよ
例えば
>>302 の存在が客観的でないことを十二分に示しているわけだが……
呆れた
ってかAHKの話題はー?
ID:mVqCjwNS0 >ダブルクリックに関しては移動距離見る必要があるとは思ってないな >もともとサイドボタン連打したらずれてもしょうがないし まぁおまいの使い方は好きにすればいいし、別にどうでもいいんだけどな おまいなりに汎用性考えて万人に使えるよう考慮したから、 あんなしち面倒臭いスクリプトになってるんじゃないのか? 「俺専用」なら公開なんぞしないで自分だけで使ってればいいと思う。 >マウスコマンドが大量に割り当てられる環境では、 まずその環境は一般的でない。 要約すると 『俺の使ってる環境下ではジェスチャよりコマンドのほうが使いやすい。』ってことだろ? そんな特定的な話をここで展開されても困る そもそもマウスジェスチャ批判そのものがスレ違いな上、主観的意見だがね。 >答えは誰の目にも明らかじゃない 「誰の目にも明らか」どころか、同意してる人間は誰一人としていないのだが。 事実に反してる内容を主張している段階でそれは客観性を欠いているっつーことでないの? おまいが言い出したことに対して、誰も取りあわず、おまいしか主張してないならそれは主観でしかないしょ。 ていうか、言葉遊びしたいならよそへ逝けよ。
316 :
302 :2007/09/05(水) 00:12:17 ID:n/eX0LD90
自分は己が書いたレスを「主観ではない」などと行った覚えはないんだが。 なに、もしかして どっちの意見が客観的か 合戦をしてるつもりだったの? 己の主張を「主観ではない」と言い張ってるの、ここではおまいだけだよ
スクリプトを提供してくれている人をそんなに叩くなよ……。 まだ続けるようならそいつも池沼。
厨でもスクリプトを作れば神です、ってか。アホらしい。 ただ、さわらぬ神に祟りなしというのには同意するよ。 丁重にお引取り願いたい。
俺は客観的にどうかにしか興味がない 俺は客観的に「マウスコマンドはマウスジェスチャより使いやすい」ということを述べている それに対して、君は自分の意見が主観でしかないことを知りながら 「そんな意見は君の主観でしかない」ということを述べていて 客観的に見て俺の意見がどうであるかに対しては反論を拒否している。 俺はマウスジェスチャよりマウスコマンドが使いやすい客観的な根拠 (速さ、疲れにくさ、ミスの少なさ)を挙げたが、 君は客観的な根拠に基づく反論を何も行えなかった それだけが事実だ 君はただ自分の主観によって、何らの根拠も持たずに 「君の意見は主観でしかない」ということを発言した 普通小学生だって、意見を述べる時は根拠も述べることが出来るが、 君はそれすら出来ない まあ「自分の意見は客観的ではない」と認めているので 客観的に見れば俺の意見は主観的とはいえないと認めているのだから 少しは情状酌量の余地もある しかし、自分は根拠を持って意見を述べているのに 相手は根拠がなくても相手の意見を否定できると思っているとなると 真面目に議論しようと思ってた人は、あきれ返って怒り出すことも出来ず ただ「こんなやつを相手に何か意味のあることを言おうとした自分が間違っていた」 とでも思って議論の継続をあきらめるほかないだろう しかしここには他に真面目な話が出来る人もいるはずだから こういう話をするのも無意味ではないはずだ 今回はたまたまクソのようなやつに当たってしまっただけだ 次回に期待しよう
>>315 俺は連続的にクリックがなされていれば
移動距離が離れていてもダブルクリックと判定してはいけないケースはないと思っている
そういうケースがあるなら教えてくれるとうれしい
多ボタンマウスを使えばマウスジェスチャより便利に使えるとなれば
多ボタンマウスを買ってマウスコマンドを使うのが合理的だろう
別に多ボタンマウスなど高いものではないのだし
同意する人間がいなくても、客観的に反論できる人間が一人もいず
反論している人間ですら「俺の意見は主観でしかない」といっているならば
その意見は客観的に見れば正しいのかもしれないと考えてみるべきだろう
黙れサル
「こんなやつを相手に何か意味のあることを言おうとした自分が間違っていた」 ていうか、言葉遊びしたいならよそへ逝けよ。
仕方ないな、俺が相手になってやろう
俺は言葉遊びがしたいんじゃない マウスジェスチャよりマウスコマンドが使いやすい 根拠:(速さ、疲れにくさ、ミスの少なさ) こういう意見を述べていて、 それについて意見を聞きたいだけだ 何がしかの根拠を持った普通の意見を 俺がやってるのは実に普通のプロセスだ それを根拠もないのに否定して無駄な時間を費やさせる奴はいるけれども それは俺が非難されるべき筋合いのことではない むしろ何を見てこれを言葉遊びと判断したのか聞きたいのだが
エクスプローラで選択している(単数・複数)ファイルのフルパスをAHKで得る方法はありますか? ポチエスの作者さんが公開しているesGetのようなものです。 スクリプトの引数に実行ファイルのフルパスを渡して起動すると、 その実行ファイルに現在選択中のファイルのフルパスを渡す。 複数ファイルの場合は、一括で渡すか、一つごとに分けて渡すかを引数で指定しておく、 という動作をするものを作りたいと考えています。 例:エクスプローラで選択中のファイル:C:\a.txt C:\b.txt スクリプトの起動:〜.ahk /s "C:\WINDOWS\notepad.exe"ならば、 "C:\WINDOWS\notepad.exe" "C:\a.txt" "C:\b.txt" スクリプトの起動:〜.ahk /m "C:\WINDOWS\notepad.exe"ならば、 "C:\WINDOWS\notepad.exe" "C:\a.txt" "C:\WINDOWS\notepad.exe" "C:\b.txt"
>>325 多分、esgetも同じことをやってると思うんだけど
ControlGetのListからListViewのSelecetedを取得して
そっからファイル名だけ抜いてアドレスバーのアドレスとくっつける
よくわからんが
>>286 見てキレちゃったんでしょ?
スクリプトに自信があるならいちいち反応しないでスルーすればいいんだよ。
どうでもいいことで大騒ぎすると論理的にどうであろうが確実に印象は悪くなる。
問題はマウスジェスチャが不合理だということで これを指摘するたびに気持ち悪い人が沸いてくる 俺の印象なんかどうなろうと知ったこっちゃなくて ただこの事実を論証していくことに俺は興味がある 沸いてくる人がいつか論理的に意味のあることが 言えるようになるのかにも興味がある 流れを見れば分かるけど俺のスクリプトは何の関係もない
>流れを見れば分かるけど俺のスクリプトは何の関係もない そうだよな、マウスジェスチャがダメだとか主観客観とかスクリプトと関係無いよな それが分かってるんなら、スレ違いなネタを延々続けないで別の場所でやってくれ
331 :
325 :2007/09/05(水) 07:09:17 ID:hayqHRIy0
>>326 ありがとうございます。確認できていないのですが、帰宅したら試してみます。
>>330 自分もそれは非常にやりたいのですが、おそらくは本家が対応しないと無理そうです。
あいかわらずこのスレはごみ書き込みしかないな
>>330 そのソフトは過去にも話題に上がったことあったと思うけどパッドの情報は多分取れなかったかと
そもそもデバイスとしてタッチパッドが繋がってるかどうかも見れないんじゃないかな
>>331 >>333 なるほど、そうなのか。Thx
あくまで開発の方の気まぐれを期待するしかない、ってレベルか。
代用法として、右altを小指に、J左クリ L右クリ IKで上下ホイール、
UOで戻る、進むに設定すればちょっと気分味わえるな。
(単純にThumbsenseが使いにくい。ホイール周りとか特に。
これがもうちょい自由にカスタマイズできればおkだったんだがな。)
ついでにこのマウス操作をしていて思ったんだけど、 どうもAutoHotKeyは、通常のように !j:: Send,{LButton} って記述したら、Alt+j押してる間中左クリック連打してるんだね。 これを、 Alt+jを押してる間、ずっと左ボタン押し続けて、j離したときに同じく離す、 っていうふうに記述するにはスクリプトをどう変えたらいいかな?
>>329 AutoHotKeyはマウスジェスチャもマウスコマンドも出来る
どっちを使うのかは重要な問題だ
どうスレ違いなのか教えてくれ
>>335 !j:: IfNotEqual, A_ThisHotkey,%A_PriorHotkey%, Send,{LButton Down}
!j up:: Send,{LButton Up}
>>337 すまんそのスクリプトだと、まだ連打しているようだ。
だけどもっと単純な方法があったみたい。
!j::LButton
で解決するようだ。
ありがとう
雑談レベルなら多少スレ違いでも話題は広がるが、お前がやりたいのは「談義」じゃなくて 最初に結論ありきの「決め付け」だろ? 「どっちを使うべきか」はAHK関係ない。 AHK以前に「人に使い方を指図するスレ」ではない。そんなの個人の自由。 > 俺は客観的にどうかにしか興味がない > ただこの事実を論証していくことに俺は興味がある お前にしか見えない「事実」をお前がどう「論証」しようと勝手だが ここは「"お前"の興味がある話題」を取り扱う場所じゃない。 スレ違いのネタで「議論」及び「倫理検証」を強行しようとすること自体が 他人の迷惑を顧みない自己中的行動だし、「非難」の対象だ。 しかもネタ元がお前の言う『俺の主張』がベースとなれば もはやお話にもならない。 2ちゃんは"お前"を特別扱いする場所じゃない。 "お前"が望むような「(お前的に)論理的で意味のある議論」(=「言葉遊び」)がしたいのなら HPなりなんなりに「"お前"と"お前以外の奴"が論理的に議論するための場所」を作ってやるべき。
>>339 自分の意見が正しいという前提で発言するのは議論の大前提であり
客観的な根拠に基づいた説得力のある意見が出てくれば考えを変えるのも大前提だ
客観的な根拠を挙げてもらえれば俺は意見を変える
主観的な決め付けで議論を拒否しているのは俺の意見に反対している人間であり
そんなことは過去レスを辿れば分かることだ
マウスコマンドとマウスジェスチャ、どっちが使いやすいのかは
多くの人の作業効率に関係のある問題であり俺だけが興味のある話題ではない
ネタ元は「速さ、疲れにくさ、間違いにくさ」でありどれも客観的に計測が可能だ
何をどう読めばネタ元が俺の主張だけと読めるのか
雑談スレならいざ知らず、ここは実用的な話題を話し合うスレであり
意見には客観的根拠があるべきなのは当然のことだ
客観的な根拠に基づいた意見を交し合うのが、俺のいう「論理的で意味のある議論」であり
これは誰にとってもそうだ
主観と決め付けで意見を否定するのは誰にとっても意味のある議論ではない
それを行った俺の反対者を非難するならいざ知らず、なぜ俺が非難されなければならないのか
合理的な理由を述べてくれないか
わかったからもう相手するなボケ
タッチパッドってPS/2マウスと同じ扱いなんじゃないの
なんという視野の狭さw 厨二病真っ盛りだなw ツッコミどころが多すぎて相手するのも馬鹿馬鹿しい
一個でもツッコんでみなさい 客観的な根拠をもってね
ごめんね、噛み付いた自分が悪かったわ。
とりあえず他住人に迷惑になるからコテつけてくんない?
そしたら自分みたいな「論理的に意味のあることが言えない気持ち悪い人」が
間違えて君にレスすることもなくなると思うよ
>>338 あら、一応自分のところではちゃんと動いてんのは確認したんだが。
つかRemapの存在忘れてた。確かにそっちのがスマートやね。
俺はコテはつけないよ NGIDしたら?
>>342 すまん。詳しく知らないからどういう原理かも良くわからないんだけど、
AHKでできる可能性があるってことかい?
それならばどういった感じでスクリプト組めばいいかも聞いてみたい。
AHKじゃタッチパッドに触れてることを感知できないべ ドライバレベルでどうにかせにゃ
ID:PS3JYgfk0 は > マウスジェスチャよりマウスコマンドが使いやすい > 根拠:(速さ、疲れにくさ、ミスの少なさ) > こういう意見を述べていて、 とかいていて、これを主張するだけならなんの問題もないが、 > マウスコマンドが大量に割り当てられる環境があれば何のメリットもない とか > 問題はマウスジェスチャが不合理だということで とか ここに飛躍があることがわからんのか。 296書いたの俺です。みんなごめんね。 謝ってもこんなレスしてたら台無しだね。
疲れやすくて遅くてミスが多い入力方法は不合理である という命題が真ではないという主張だろうか 根拠があるなら聞いてみたい
流れぶった切ってすまんが、X1ボタンは完全に潰してキーボードとの連携専用にしてる。 右手がマウスにあるわけだから、キーボードは左手で無理なく打てる範囲に限られるが、 それでもマウスコマンドより4−5倍はコマンドの幅が広がる。 5ボタン以上のマウスの人はためしてみ。
>>350 「疲れやすくて遅くてミスが多い入力方法は不合理である」と
主張するのは勝手だが、だれもが「疲れやすくて」「遅くて」「ミスが多い」
と感じる(あるいは実際にそうなる)とは努々考えなされるな。
それと「疲れやすくて遅くてミスが多い入力方法は不合理である」が
命題であるというのであれば、それは命題として認められない。
無理に賢そうな言葉遣いしてもかえって馬鹿っぽくなるだけなんだ
いい加減相手するほうも荒らしだろ
>>352 速さ、ミスの多さ、疲れやすさは客観的指標で量ることが出来る
そう感じるかどうかという話ではない
マウスジェスチャとマウスコマンドをこれらの指標で比べるとどういった結果になるか
確かめてみることを勧める
そうすれば少なくとも、君が君の環境においてどっちを使った方が有効か知ることが出来るだろう
俺の主張は、5ボタン以上のマウスを使う環境ならば、
誰であっても、マウスジェスチャよりマウスコマンドの方がこれらの指標が良い値を示すということだ
まあ人より指の数が少ないとかの特殊なケースは除かせてもらうが
>それと「疲れやすくて遅くてミスが多い入力方法は不合理である」が
>命題であるというのであれば、それは命題として認められない。
どういう意味で言っているのか分からないが、命題とは真偽が決定できる文のことだ
より正確に言えば、真か偽か、真偽決定不能かが決定できる文のことだ
この文が解釈によって真偽が異なる、つまり偽となる解釈があるという主張だろうか
だとしたらその解釈を聞かせてもらいたいのだが
> 速さ、ミスの多さ、疲れやすさは客観的指標で量ることが出来る > 俺の主張は、5ボタン以上のマウスを使う環境ならば、 > 誰であっても、マウスジェスチャよりマウスコマンドの方がこれらの指標が良い値を示すということだ 特定の環境/条件でしか成り立たない。習熟度によっても結果は大きく変動するだろう。 > >それと「疲れやすくて遅くてミスが多い入力方法は不合理である」が > >命題であるというのであれば、それは命題として認められない。 > > どういう意味で言っているのか分からないが、命題とは真偽が決定できる文のことだ > より正確に言えば、真か偽か、真偽決定不能かが決定できる文のことだ > この文が解釈によって真偽が異なる、つまり偽となる解釈があるという主張だろうか > だとしたらその解釈を聞かせてもらいたいのだが 「疲れやすくて遅くてミスが多い入力方法」の定義が明確でない。 そもそも「速さ、ミスの多さ、疲れやすさ」だけでUIの優劣は決定できるのか? ひとりよがりもいい加減にしてもらいたい。
>>356 >特定の環境/条件でしか成り立たない。習熟度によっても結果は大きく変動するだろう。
複雑なコマンドでなければ習熟度はほとんど関係しない
拡張ボタンと左、右、中同時押し、ホイール回す程度なら誰でも出来る
それらの簡単なコマンドだけで頻度の高い大部分の作業は割り当てられる
実際やってみて比べてみればいい
環境は5ボタンあるデバイスが前提だが、トラックボールでもなんでも、
同時押しさえ出来ればコマンドは快適に動かせる
そうでない環境というのは無いに等しい
>「速さ、ミスの多さ、疲れやすさ」だけでUIの優劣は決定できるのか?
そう思うんだったら、出来ないとする根拠を述べればいい
それらより重要なファクターがあって、UIの優劣がひっくり返るケースが俺には思いつかない
359 :
名無しさん@お腹いっぱい。 :2007/09/05(水) 19:01:36 ID:7HbnRb8cO
使い勝手云々は結局のところ感覚的にしか計れない部分だし、対象使用者の主観抜きに語ることはできないよ。 それに、AHKなんかは特に己のところでまともに動いてるものでも他PC持ってったらダメだったてことはよくある。 環境に左右されるものをベースにしてモノ語るのは合理的ではない。
>>359 感覚的にしか量れない部分を議論の俎上に載せるのは合理的ではないが
速さ、ミスの多さ、疲れにくさは計測できる
計測方法を厳密にこれと定めるのは大変だし異論も多いだろうけど
自分がこれと思う計測方法で量ればいいと思う
個々人が、自分がどの入力方式を採用するのがいいのか決められればいいわけだから
どんな計測方法を採用するにせよ、それがこれらの指標を量るものであれば
マウスコマンドが勝つだろうと俺は考えている
まあこれらの指標で上回ったとしても使いやすさが上とは考えない
というのなら俺の主張は意味を失うが
俺はこれらの指標が下のものを採用するのは不合理ではないかと問いかけることはしたい
環境に左右されるものうんぬんというところはよく意味がわからない
自分のよく使っている環境でうまいこと動けばいいんじゃないかと思うが
>>358 >
>>356 > >特定の環境/条件でしか成り立たない。習熟度によっても結果は大きく変動するだろう。
>
> 複雑なコマンドでなければ習熟度はほとんど関係しない
一般化できないんだろ。
> 実際やってみて比べてみればいい
どうやって比べればいいの。どうやって比べるのを前提としているの。
何度もやってみればいい比べてみればいいと言われているが、実際に比較してないのは確かにそう。
でも頭で想像する程度の操作なら、慣れた方が使いやすい、くらいにしか思えない。
> >「速さ、ミスの多さ、疲れやすさ」だけでUIの優劣は決定できるのか?
>
> そう思うんだったら、出来ないとする根拠を述べればいい
> それらより重要なファクターがあって、UIの優劣がひっくり返るケースが俺には思いつかない
マウスジェスチャーでいえば、マウス操作と画面の動きに一体感があるようなインタフェースなら
分かりやすいんじゃないか。分かりやすさはすごく重要だと思うけど。
これくらいしか思いつかない
>>361 習熟したマウスジェスチャと
未経験の簡単なマウスコマンドであれば
マウスコマンドの方が勝つと考えている
複雑なマウスコマンドは慣れが必要なのは確かだが
比べ方は、上にも書いたが個々人で自分がどっちが上かを比べられると思う方法で
比べればいいと思っている
どういう方法で調べても、速さやなんかを比べるのであれば、
マウスコマンドが勝つだろうと考えている
分かりやすさは大事だと思う
マウスコマンドも自分でルールを決めれば別に分かりにくいということもないので
そこで優劣がひっくり返るということもないと俺は思うが
分かりやすさを大事にする人だったら違ってくるのかもしれない
この世において、どうして正しい主張が通らないなんてことがあるのかというと、 相手の正しさに従うためには、自分の正しさを捨てなくちゃいけないからだろう。 自分の培ってきた経験、技術、習慣、反射、すべてに変更を迫られるのはつらいものだ。 「やってみせ、言って聞かせて、させてみせ、ほめてやらねば、人は動かじ」 QWERTY配列がいかに不合理かを説いたとて、それだけで人の習慣を変えられると思ったら甘すぎる。 世の中にはキーボードを使うより携帯電話の入力方式の方がずっと楽だ、と言う人もいるし、 (キーボードに習熟する前の)その時点のその人においては事実そうなのだからどうしようもない。 遠くの利を振り翳しただけで近くの利を捨てられる人間は少数だ。目の前の快楽にかまけてさぼる学生は多い。 マウスコマンドの優位性を誰かに分からせるためには、 ジェスチャとコマンドとを対等に比較するための場を用意し 各人が実験しやすいように、心理的・物理的障壁を下げるよう努めるべきだ。 新鋭と古参とで温度差があるのは仕方ない。あとはお互いがどこまで歩み寄るかによる。 どんなキーボード配列がいいかを論じるのと同じで、 雑談程度ならいいけれど、本気でやるならスレ違いと言われるだろう。
マウスボタン同時押しというのは一般的なオペレーションでは まずない動作だから慣れがまず必要だな。 マウスジェスチャーはドラッグという一般的な操作から派生しているけど。 個人的な感想で言えば、同時押しは普段慣れない動作だから指に違和感を感じる。 どちらかといえば一般的な操作から派生しているジェスチャの方が 効率的かはさておき、導入コストの点で優れているな。
い い 加 減 よ そ で や っ て く れ な い か ?
マウスジェスチャなんて多くの人が使ってる便利なものなのは周知の事実なのに、こんなところで優位性がどうのとか言われても困る。 スレ立ててVIPでやってろ
>>363 いいこというなあ
対等に比較しなくても、ジェスチャに慣れ親しんだ人がちょっと
試してみただけでも速さとか楽さとかは浮き彫りになると思うけど、
しかし実用になるかというのは、これがしたいと思った時に
手が瞬時にその操作を実行できるかだからな
したいことと操作が結びつくまである程度時間は必要だし
そもそも5ボタンマウス買って試せというのも無理がある話だ
まあこの辺が限界かな
そろそろ消えるわ
もうこないでね^^;
とりあえず >363に拍手
マウスジェスチャ?マウスコマンド?はぁ? キーボード使おうぜ!
371 :
325 :2007/09/06(木) 00:56:25 ID:CgUEgPrj0
>>326 期待通りの動作になりました。改めて感謝を。
Win2000SP4です。 Winキー+uをホットキーに割り当てたいのですが、ユーティリティーマネージャーが起動して困っています。 このユーティリティーマネージャーが起動しないようにすることは出来ますでしょうか?
#u::run, notepad でメモ帳しか起動しないですけど (XP Pro SP2)
>>375 「Win」じゃなくて「LWin(左Winキー)」か「RWin(右Winキー)」と書く。
RWin::
LWin::
Return
これでWinキーは無効になるはず。
>>376 ありがとうございます。確かにできました。
ところで#IfWinActiveを使って、特定のソフトでだけWin+uをhotkeyとして使いたいのですが、ユーティリティーマネージャが起動して困っていました。
#IfWinActive,hogehoge
RWin::
LWin::
Lwin & u::send,{return}
Return
としたらユーティリティーマネージャーが起動しなくなりました。でも、なぜかLWinキー押下でreturnキーが送信されます。
Lwin & uを#uとしてもWinキーを押しただけでreturnキーが送信されます。どこに文法ミスがあるのでしょうか?
実験しました。下記でもWinキーのみの押下でメモ帳が起動しました。 どうやら、Winキーに何もアサインしないとコンビネーションがうまく働かないようです。2番目のキーを待たずに動き出すようです。 このあたりの事情は既出でしょうか? RWin:: LWin:: #n:: Run Notepad return
連投すみません。 ユーティリティーマネージャーが起動しないようにできました。コンピューターの管理→サービス→スタートアップの種類を無効でできました。 でも、Winキー+uは相変わらず、何も割り当てられませんでした。OSが確保しているのでだめなんでしょうかね?
またまた連投すみません。 keybatで試したらあっさり出来ました。 keybatは初心者向けですけど、autohotkeyで出来ないことが簡単に出来ることがあるから手放せませんね。
マウスの左ボタン押してから右ボタンを押したとき、Ctrl+Vを押したことにしてペーストしたいんですが LButton & RButton::send ^v とすると左ボタンの本来の機能が失われます。(クリックとかドラッグとかできない) それで ~LButton & RButton::send ^v として左ボタンが普通に使えるようにしたんですが これだとペーストするとき左クリックしたままCtrl+Vを押したことになり、アプリによってはペーストできません。 そこで LButton & RButton::send ^v LButton::send {Click Left} としたんですが、これだとドラッグできませんw どうしたらいいですか?
~LButton & RButton:: { MouseClick, LEFT, , , , ,U send ^v Return }
385 :
383 :2007/09/07(金) 01:10:50 ID:Leyowai10
おぉぉ、ありがとうございます!AutoHotkeyは使い始めたばかりで、まだよく分かってませんが いろいろ便利に出来そうで、夢がひろがりんぐ!
まったくひろがりんぐツールやで
夢がひろがりんぐって、もう死語化してないか?
MouseClick, R,,,,,D で右ボタンを押している状態からシステムに動作を渡さずに右ボタンを離す方法はないでしょうか HotKey, RButton up, return MouseClick, R,,,,,U HotKey, RButton up, Off return: return などとやってみたのですがどうしてもコンテキストメニューが開いてしまいます
>>388 具体的に何がしたいのか書いた方が良さげ。
OnMouseDownイベントだけを断続的に起こしたいってことだろうか。いまいち状況がわからない。
コンテクストメニューって押下時じゃなくて押下解除時に表示される場合のほうが多いと思う 開かさせない方法はわからんが、開いてしまったものを閉じたいのなら send で Esc か Alt を投げてみたら?
391 :
388 :2007/09/08(土) 00:59:07 ID:l8tyTWRw0
マウスジェスチャのスクリプトを作っています 通常の右ドラッグを阻害せず動作させようとしています Escなどでメニューを閉じるのも考えては見たのですが一瞬表示されるのが気になるうえ メニュー表示されないソフトじゃ使えなくね?と思い RButton:: MouseClick, R,,,,,D マウス動きの判定処理(右ボタン離すで終了) if(ジェスチャに対応した命令が有れば) { ドラッグ中止(とりあえずSend,{Esc}で) 右ボタン開放 命令 } else MouseClick, R,,,,,U のようにしてみたのですがどうしてもメニューが開いてしまって そして今見るとドラッグ中止の方法も甘い気がしてきました
>>391 マウスジェスチャなら流行らせるページのMy Scriptsにあるよ。
ノートPCタッチパッド使用者用Thumbsense風拡張スクリプトw いや、単純にこの構成が一番使いやすかった& いろいろなものに影響少ない構成かなと。 (右Altキーを起点にすると、いろいろなところが正常動作しなくなることが多い) AppsKey & j:: IfNotEqual, A_ThisHotkey,%A_PriorHotkey%, Send,{LButton Down} AppsKey & j up:: Send,{LButton Up} AppsKey & l:: IfNotEqual, A_ThisHotkey,%A_PriorHotkey%, Send,{RButton Down} AppsKey & l up:: Send,{RButton Up} AppsKey & i:: Send,{WheelUp} AppsKey & k:: Send,{WheelDown} AppsKey & m:: Send,{XButton1} AppsKey & .:: Send,{Xbutton2} AppsKey & ,:: Send,{F5} AppsKey & h:: Send,!{Space}{n} AppsKey & 8:: Send,!{Space}{x} AppsKey & 7:: Send,!{Space}{r} AppsKey & o:: Send,^w AppsKey & p:: Send,^c AppsKey & +:: Send,^v AppsKey & 0:: Send,^x AppsKey & n:: Send,!{Home} AppsKey & u:: Send,#d AppsKey & 9:: Send,!{F4} AppsKey & /:: Send,!{Up}
AppsKey起点か、コンテクスト出す以外は使わないキーだからいいかも知んない。 だが自分の旧チンコパッドには AppsKeyがついてない orz WinKeyもないので使いにくくてしゃぁないわ
>>394 Altキーでもそれなりに使いやすく出来ることは出来たよ。
問題点を挙げると
問題は、Alt+nとかにキーを割り当てたら最小化がうまく動かなくなって困る、とか
実際のAltキーとの組み合わせの奴が単純に動かなくなるとか、そんなん。
あと、癖でAlt押しっぱなしにしちゃうようになるから、Winキー起点のデフォ
Win+DとかがWin+Alt+Dとかに認識されちゃって動かない、みたいな。
こうして列挙すると、問題点だらけに見えるから困る。
とりあえずAlt小指にホームポジションのJKLであとは拡張すればいいんじゃないか?
追記、俺は別のソフトでMクリックを右クリ+左クリに割り当ててるから
スクリプトに中クリック入れてないけど、入れたい人は、
AppsKey & Alt:: Send,!{MButton}
あたりを追加して、
更に自分用に適当に配置換えしたらいいかな。
アドバイスd でも右AltはWinKeyとして割付けてあるんよ(AHKじゃなくてIBMのキーコンフィグのほうで) Appsはなくても困らんがWinはないとやっていけん。流石に左Altは潰せないしね。
変換起点にしちゃだめなのか? 小指でApp押しっぱってしんどいような気がするが
カタカナ/ひらがなキーにリマップでAltキーを指定すると Altキーが押しっぱなし状態になるんだけど
勝手にコマンドが実行されたりするんだがどうなってるんだろ? Autohotkey.iniを編集するキーを設定してたりすんだけど フトした時に勝手にエディタ起動されてしまう・・・
>>397 変換起点、ってことは、アプリキーを押すことで、
マウスモードとキーボード入力を切り替える、ってこと?
なるほど、一番やりやすい方法かもしれん。
かつアプリキー無いような人もできそうだしな。
ちょっとスクリプト考えてみる。
変換キーを使うという事じゃ……
変換キーを起点にして親指おしっぱのほうが 楽なんじゃないかなと思っただけ 分かりにくくてスマン
>>401-402 あ、いやいや、それだと「Thumbsense風」の意味が全くなくなっちゃうよ。
親指はタッチパッドに常においておいて、カーソル動かすのに使わないと。
全てを右手だけで出来るようにする、が目的だから。
押すごとにモードを変える、が出来れば変換キーでもアプリキーでも良いと思うんだけどね。
んじゃ無変換の方を使うのはどうなんでしょ モード切替は避けた方がよいのだと思うのだがな。viとか
マウスカーソルが動いている間とその後数ミリ秒間有効とかどうよ
モード切替やろうとしたけど、
Altおしっぱなしとかからしか起動できないなぁ。
AppsKeyおしっぱスクリプト書いてもダメな感じだ。
こっち方面は諦めた方が良いかも。
俺のは無変換じゃなく変換の方だけど、いけると思う。
中指薬指小指でマウスボタン操作、ってのが
ちょっとやりにくい気もするけど。
あと小指の長さと器用さがどうしても劣る気もする。
つまり自在に右側のショートカットキーを押せない、とかあるかな。
>>404 その辺を除けば、指疲れないしベストかもね。
てかアットマークとか+ボタン*ボタンを小指で起点にして、
そこに割り当てられてたのは別キーに割り当てる、が実は一番なのかもしれんw
できるだけデフォの設定変えたくないなら前者のがいいだろうけど。
>>398 俺もそれ気になってた
vkF2sc070::
Send, {Alt Down}
KeyWait, Alt
Send, {Alt Up}
return
見たいにやってもうまく拾ってくれないし
漏れもたったいまそこで躓いてたところだw ひらがなキーって押しっぱなしの検知出来ないのかな
いま読んでる。面白い。
>>410 >>112 付近のツンツンした流れの理由はこれかしら……なんて詮索は野暮か。
出版されたら予約してでも買うので、頑張って下さい。
>>410 管理人氏も書いてるけど、専用ビューアのインストールが面倒くさいので
AHKの触り程度の解説なら、わざわざ入れて読む程かなとか考えてて二の足踏んでた。
いまサンプルソースだけ落としてみたけど、IEの制御とか入門に留まらず結構踏み込んでる感じですな
しかし、intro.ahkのキー割り当て例は苛めですかww
右Shift(ノートだとEnter直下が多い)に [Ctrl]+[A]→[Delete] とか
[Win]+[Z]にアクティブウィンドウを閉じる([Ctrl]+[Z]と間違えたらアウチ)とか
モザイクデスクトップ直してたのかぁ でも、これだと、ちょっと重ねてモザイク掛けたいときに押下時に既にモザイクが存在していると そのモザイクが消えてしまうという欠点があるですよー うまく順番考えるなりモザイクの外からドラッグするなりすれば済む話だけど やっぱリリース時に判定した方が良いんじゃないでしょうか?細かい話ですがw
誤爆宣言まだあ?
デスクトップモザイクの間違いだったわ
自分で改造しろ
あるアプリケーションを起動したくて、 もしそのアプリがすでに起動中だったら、それを最前面に表示し、 二重起動はしないようにする、ってスクリプトってどんな感じで書けばいいかな?
さすがにそれくらいマニュアル読んで自分でやる気がないなら AHK使う意味無いと思うよ
CUTEEXEC使ってもええしな
ちょっと調べれば、どんぴしゃの物が見つかるってのに・・・
教えてくれろ
#IfWinActiveとかで2種類以上のウィンドウを指定するにはどうしたらいいの? #IfWinActive, hoge #IfWinActive, hoga とかやると下だけが有効になるし
グループでなんとかする
# を使わないのが正解
自分もそういう場合グルーウ使ってる。
グループなんて便利なものが リファレンス見落としてた ありがとう
>>424 おれこれと同じ感じで書いていて普通にそれぞれ判別されて使えてるんだけど
それって変なことなの?
430 :
429 :2007/09/16(日) 02:07:56 ID:nU+AqBNG0
後で気付いたけど
>>424 って複数のwindowに同じキー割り当てなどをするって意味か。
>>429 は早とちりした勘違いです。変なこと書いてしまって失礼しました。
秀丸に Send をしようとすると、先頭が数文字(やるたびに違う)抜けてしまうのですが; どうやって回避できるでしょうか?
別に抜けないけど? 環境書くとかソース晒すとかしてみたら?
最近AutoHotKey使いはじめた者です。 見よう見まねで書いてみて、一応やりたいことは動作しているのですが、 このようにErrorLevelに書き込まれる値が頻繁に書き換えられるというような 書き方はマズイでしょうか? それとLoopは一区切りごとにいったん{}を閉じたほうが良いのでしょうか? Process,Exist,inkscape.exe If ErrorLevel<>0 WinActivate,ahk_pid %ErrorLevel% else{ EnvSet,PATH,%PATH% Run,inkscape.exe --ignore-wintab, C:\Inkscape ;WinWait,ahk_class gdkWindowToplevel } ErrorLevel= Loop{ Sleep, 100 Process,Exist,UWSC.exe If ErrorLevel<>0 { Suspend, On Process,WaitClose,UWSC.exe Sleep, 40 Suspend, Off } GetKeyState, kb1, RCtrl, P if (kb1=="D")
{ SetTitleMatchMode,2 IfWinActive, Layers (Shift+Ctrl+L) WinActivate, Inkscape GetKeyState, kb1, RCtrl, P GetKeyState, kb2, a, P if ((kb1=="D") && (kb2=="D")) { SendMode Input Send, {F1}>^a Sleep, 40 ;break } } Process,Exist,inkscape.exe If ErrorLevel=0 ExitApp } Return #IfWinActive ahk_class gdkWindowToplevel Space::MButton ;中略 Pause::Suspend, Toggle Return #IfWinActive <#q::Reload ;Return
ErrorLevelに何が格納されているのかきちんと把握して使ってる分には別にまずかないと思うけど。 Process系コマンドよりも Win系コマンドを使うほうが一般的かなぁとは思うが。
パスワードがわかんなくなったのであちこち参考にして作ってみた。 便利。ってかパスワードはメモしとけ、俺。 ; Unveil Password 適当に:: ControlGetFocus,Vctrl,A ControlGet Vhnd,Hwnd,,%Vctrl%,A PostMessage,0x00CC,0,0,%Vctrl%,A ; EM_SETPASSWORDCHAR DllCall("InvalidateRect",UInt,Vhnd,UInt,0,UInt,1) return
>>436 滅多に使わないだろうけど面白い。ナイスAHK。
438 :
名無しさん@お腹いっぱい。 :2007/09/24(月) 15:58:01 ID:MCdKVtUx0
プロセスIDでウィンドウを指定したいのですが、うまくいきません。 Run, explorer,,,pid WinWait,ahk_pid %pid% WinMove,ahk_pid %pid%,,0,0 エクスプローラを起動して画面の左上に移動したいのですが・・・
エクスプローラの常駐プロセスは一つしかないんじゃ
pidじゃなくて Ahk_classで指定したら? CabinetWClass もしくは ExploreWClass で拾えると思うけど。
#エクスプローラのプロセスが1つということは確認し納得しました。 エクスプローラを4つ起動して、昔のファイルマネージャみたいに使いたいと思ってます。 この場合、各エクスプローラを区別して制御するには、どうしたらよいですか? Ahk_classを使用した場合、4つとも同じExploreWClassですよね。 WinGetでハンドルを取得しようとした場合も、WinTitleに何かしら4つのエクスプローラを 区別した情報を指定しないといけないので…。こんなとき、どんな方法がありますか?
どういう風にエクスプローラーを起動させるかにもよるけど もし引数渡しで異なるパスを開いているのであればAHK_IDかな〜 新規窓起動直後に取得してあとは使い回すとか
エクスプローラの場合、タイトル=パスだからパス指定して起動すればいけそうな気はするんだが AHKのWinTitleって大文字小文字区別するから意外とめんどい。 SetTitleMatchMode,RegEx でうまい事やればいけるのかもしれんが。 パス指定しないとこんな感じか Run, explorer %FolderPath% WinWaitActive,ack_class ExploreWClass,,0.5 WinGet,whd,ID,A WinMove,ahk_id %whd%,,0,0
×Run, explorer %FolderPath% ○Run, explorer
期待していた動作になりました。ありがとうございます。 ただ、WinWaitActiveの動作(3つめの引数)に疑問があります。 WinWaitActive,ack_class ExploreWClass,,0.5 ⇒WinWaitActive,ack_class ExploreWClass,,5 3つめの引数を0.5から5に変更した場合、5秒経過後につぎの処理に進むようです。 これはなぜでしょう? >条件に一致するウィンドウがアクティブになると、そのウィンドウが >LastFoundWindowとして記憶され、スクリプトはすぐに次の処理に移る。 っとリファレンスでは、条件に一致したら、すぐに次の処理に移ると記述があります。 3つめの引数を0.5から5に変更した場合、 5秒後につぎに進むということは、5秒間のあいだは条件に一致していないということですよね。 しかし、5秒たてば、目的のウィンドウ(ack_class)がLastFoundWindowとして記憶されている。っという動作に疑問があります。 WinWaitActiveは、最大待ち時間が経過したタイミングで何かアクション(動作)するのでしょうか?
446 :
443 :2007/09/26(水) 00:47:51 ID:NWQizOKM0
ahk_classのつづりが間違ってて、タイムアウトするまで待ってるんだわ orz ×WinWaitActive,ack_class ExploreWClass,,5 ○WinWaitActive,ahk_class ExploreWClass,,5 その次の行では、A指定してるのでLastFoundWindowは関係ない もうひとつ言うと、エクスプローラからホットキーなどで別のエクスプローラ起動するような使い方だと誤動作すると思う "エクスプローラがアクティブになるまで"って条件なので旧ウィンドウと新規ウィンドウの区別できないから
気づきませんでした。ack_class⇒ahk_class ですね。 ありがとうございます。 新旧のウィンドウの区別は保留し、とりあえず 4つエクスプローラをタイル状に起動できるようになりました。 で、画面右上のウィンドウで、他のウィンドウも制御できるように 右上のウィンドウにだけ最小化/閉じるボタンを表示し、無限Loop で右上のウィンドウの状態を監視するようにしました。 この仕様の場合、タスクバー上には、右上のウィンドウのアイコンだけ あればよいため、他のタスクバー上のアイコンを非表示とするように ウィンドウのスタイルを変更したのですが、また自己解決できずにいます。 Q. タスクバー上のアイコンを非表示にする場合、WS_EX_APPWINDOW、 WS_EX_TOOLWINDOWの設定だけでは動作しないのでしょうか? wstyle:=DllCall("GetWindowLong",UInt,whd1,Int,-20) ;WS_EX_APPWINDOWを引く EnvSub,wstyle ,262144 ;WS_EX_TOOLWINDOWを足す EnvAdd,wstyle ,128 DllCall("SetWindowLong",UInt,whd1,Int,-20,Int,wstyle) DllCall("SetWindowLong",UInt,whd3,Int,-20,Int,wstyle) DllCall("SetWindowLong",UInt,whd4,Int,-20,Int,wstyle) AutoHotKeyの場合、ウィンドウスタイルの指定は、どのようにしますか? #ウィンドウスタイルの指定で足し算・引き算するのは一般的でしょうか…
一部自己解決できました。以下のように、一度ウィンドウを非表示にすると 次回表示したときにタスクバーから消えました。 wstyle:=DllCall("GetWindowLong",UInt,whd1,Int,-20) ;WS_EX_TOOLWINDOWを足す EnvAdd,wstyle ,128 ;ウィンドを非表示にする WinHide ahk_id %whd1% DllCall("SetWindowLong",UInt,whd1,Int,-20,Int,wstyle) ;ウィンドを表示にする WinShow ahk_id %whd1% ・ ・ ・ 不要なタスクバーのアイコン(ボタン?)が、デスクトップの下に 出現するようになりましたが。
>>449 え、まださわりしか見てないけど神降臨したのかこれ?
ちょっと後で詳しく見てみなければ。
これ各対応キーに記述する必要があるなら
最終的に恐ろしく長いスクリプトになりそうな気がするがw
控えめなぬるたんGJ
Alpsドライバの方でも対応できないかな。
実機があればね
とりあえず、
>>449 のスクリプトで、
例として、「タッチパッドに触れながら「j」を押すことで左クリックになる」、
のスクリプトはどう書けるんだろ?
他にも、タッチパッドに触れながら、更に@キーを押しながら「j」を押したときには
「←」キーを送る、のスクリプトとかも可能なのかな?
教えて君しねよ
とあるゲームでPauseキーを頻繁に使うのでマウスに割り当てようと思ったんですが #IfWinActive ahk_class HoI 2 XButton1::Pause #IfWinActive みたいに記述すると、マウスキーを押す毎にAuteHotKeyそのものがサスペンドされるようです これって原因何でしょうか、何か記述方法を勘違いしてるんでしょうか・・・
あ、サスペンドじゃなくてポーズでした
自己解決しました、初歩的な質問だったようで申し訳ない Pauseコマンドと混同されてた訳ですね #IfWinActive ahk_class HoI 2 XButton1::Send,{PAUSE} #IfWinActive で無事Pause入力できました、スレ汚し失礼
多機能で自由度があるのは認めるが、しかし、 ただの出来の悪いスクリプト言語ってことにもなりかねんな クソみたいに使いづらいスクリプト言語に、キーをフックするライブラリをつけたようなもんだ 作者も頭悪いな なんでこんなもん作ったんだろ
マジレスるのもためらわれるアホさ加減だな。
でも最初から特定のスクリプト言語のサブセットに キーフックまわり充実させたようなのものみたいに はっきりコンセプト出して開発して欲しかったな
最初は小さかったのかもしれないが、色々と追加していったら膨れあがったという感じなんだろうな。 まぁそれでも単なるキー配列変更程度ならば楽にできるわけで、まぁ別に不満はないけど。 正直そこまでこったスクリプト書いてないし。もともとキー配列変更目的に使い出したしな。
autoitというのから分離して当初は互換性があったんだっけ? そういう歴史的理由も言語仕様に関係してる感じ。よく知らんけど。
こんなわけわからんものをよくここまで持ってきたなとは思うよ きれいな言語じゃないけどもっといいものが出来るかといわれたら考え込む
>466 普通にインストールたらAHKって関連付けされなかったっけ? エクスプローラーでダブルクリックで実行できるよ。
あ、じゃあインストールの問題かな? 再インストールしてみる。
>>466 関連付けて実行に決まってる。
それ以外、何があるのか謎でしょうがない・
じゃあ実行できないのはVistaだからか・・・ 設定したファイルを説明書通り記入、その後AutoHotKeyで実行したけど、 でも使えない、ってのはそういうことだよな? もちろんちゃんとSynaptics採用のノートPC、ってことも確認した上で使った。 普通のリマップだとかホットキーは使えるけどな。 すげぇ使いたかったのに残念。
言語としては、けっこう悲惨だわな 誰かAHK吐く "高級言語コンパイラ" 作ってよw
>>470 ThumbRemap.ahkをメモ帳とかのエディタで開いて、先頭に書いてある注意書きは読んだ?
いまだに構文に馴染めない
>>470 AHKルートディレクトリのAutoHotKey.ini(無いなら作る)の中に
#include ThumbRemap.ahk
って書いて実行すりゃいいんじゃねーの
.ahkファイルはルートディレクトリにおいておけよ
ねこぽいっていうソフトと同じことさせるスクリプト書こうとしたけど、 めんどくさくてやってらんねw ねこぽいでいいや
宣伝乙
これしか知らんからウンコさ加減もよく分からん
命令が引数に値をとるのか変数名をとるのかわからん
レスさんくす
>>472 使いたい方のコメントを消す、とかだよな?
もちろん読んだし、PCで使われているタッチパッドの方のコメント消して選択した。
>>474 AHKルートディレクトリってのは、AutoHotKey.ahkがあるほう?
(マイドキュメントに入ってるようだ)
それとも、AutoHotKey.exeがあるほう?
(AutoHotkey104704とかのバージョン情報つきフォルダ)
さらにAutoHotKeyっていうフォルダでもコピペで試してみた。
まぁ、どれであろうとできないな。
あと、;4の後の、リマップ、ホットキー定義の記述、ってとこで
なんらかのリマップやホットキーを記述すると普通に動いてる。
やっぱThumbRemapだけが動いていないってことみたいだ。
Vistaだから動かないんだなと思ってるけど、Vista用の書き方?
みたいにすれば多分動くのかも知れん。
#Include %A_ScriptDir%\Thumb_Synaptics.ahk
;2.タッチパッドに触れているときのみ有効化したいリマップを列挙
Thumb_Remap =(
u::LButton
o::RButton
)
;3.タッチパッドに触れているときのみ有効化したいホットキーを列挙
Thumb_Hotkey =
(
)
;初期処理
Thumb_Init()
;4.リマップ/ホットキーの定義を記述
なんだ、こいつは
Thumbsenseは動くの?
こんなクソスクリプトでキーカスタマイズするくらいなら 普通にC++で常駐ソフト作ったほうがはるかに楽な罠
で、この頭の不自由な子は何が言いたいの?
>>484 ねこぽいもどきをC++で書いちゃったぜ!
じゃないかな。
自分の文章見直したら、恐ろしくわかりにくかった。 とりあえず、結論から言うと、 ThumbRemap.ahkの、自分のPCのタッチパッド(実はAlpsだったようだ) のドライバのほうのコメント部分(;)を消して有効化し、 それをそのまま初期状態で保存して、実行すると、 タッチパッドに触れなくてもリマップが有効になっている、 (どんなときでも「j」を押したら左クリックだし、「l」を押したら右クリック) とそういうことらしい。どういう風に書けばいいんだろう?
100行かそこらのスクリプトくらい自分でデバッグしろ
shift+a押しっぱなしでaボタンを連打したいのですが、どうもうまくいきません 「+a:: Send,{a Down} Sleep, 200 Send,{a Up} return」 最初はこのようにしてましたが駄目でした。 sleep中に+aを押しっぱなしにしていることが認識されてしまいaの連打が出来ないのかと思い、 「sleep」を外し「Send, a」だけにしてみましたがこれもだめです。 aボタンを押しっぱなしでaを連打とするのが相性悪いのかなと、「+a::」を「q::」だけにしてみましたが失敗。 そこでなんとなく「SetKeyDelay」を足し 「q:: SetKeyDelay, 10, 5 Send, a return」 にしてみたところ初めて成功しました。 (SetKeyDelayが必要なのは連打対象のアプリの問題だと思います。) 「q::」を「^q::」にすると失敗で、returnのたびに「Send」コマンドによっておこる ホットキー(Shift)のフックと言うものがとけてうまくないのだと思い、 「#InstallKeybdHook ^q:: SetKeyDelay, 10, 5 Send, a return」 と「#InstallKeybdHook」をahkデータの頭に足して見たところ二度目の成功でした。
以上をふまえ 「#InstallKeybdHook ^a:: SetKeyDelay, 10, 5 Send, a return」 としたところ、これはもう無惨に失敗でした。 やけでsleepをつけたり外したりしても駄目です。 どうやら「return」の度に「Shift+a」を押さえてることが認識されてしまうようなのですが、 「#InstallKeybdHook」によってShiftの分は解決するのです。 しかし「aボタン」が解決出来ない。 returnを連打中(押下中)に使わないで作るか、 もしくは#InstallKeybdHookのような設定をみのがしてるのかも知れません。 流行らせるページを分かる範囲で読みましたが、自分ではここまででした。 どなたか解決策を知ってる方いたら教えてください。
keywait
一昨日から、AHKを使おうと試行錯誤してます。 HHKで[ ; ' / キーを↑←→↓に入替えるにはどうすればいいのでしょう? Fnなしでカーソル移動、ありで記号を入力にしたいのです。 Up::[ Down::/ Left::`; Right::' [::Send,{Up} /::Send,{Down} `;::Send,{Left} '::Send,{Right} と書くと、Fnに関係なく常にカーソルキーになってしまいます。 カーソルキーが別にあるキーボードだと簡単に入替えできるようなのですが どなたか教えていただけないでしょうか
まずはFnのキーコード調べるところから始めるのかしら
494 :
491 :2007/10/05(金) 03:34:50 ID:+yLmUSaM0
>492 やっぱりそうですか。AHKだと タスクトレイですぐにon/offできるのがうれしいんですが。 >Fnはたぶん単独ではコードを出さないようなんです。 レスありがとうございます。 もうすこし気長にがんばってみます。
あんな訳の分からないキーボードは捨てろ モバイルノート以外のキーボードにFnキーを付けようとする奴は例外なく死ね
>>125 のスクリプトの改良について
^[::
Clipboard=「」
Send, ^v{Left}
Return
ime on のとき ctrl + 「 → 「」の中キャレットフォーカス
ime off のとき ctrl + [ → [] の中にキャレットフォーカス
このように動作させるにはどうしたらよいでしょうか?
>>496 そんな複雑に考えなくても、
^[:: Send, []{Left}
で良いんじゃないの?
半角全角キーを2回押せば、IME入力中なら変換せず確定するということができる
>>496 HDD漁ったら昔作った Functionがあったんで貼っとく
;-----------------------------------------------------------
; IMEの状態の取得
; WinTitle : 対象Window (省略時:アクティブウィンドウ)
; 戻り値 1:ON 0:OFF
;-----------------------------------------------------------
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)
;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
コピペミス、関数名が抜けとったスマソ IME_GET(WinTitle="") ;----------------------------------------------------------- ; IMEの状態の取得 ; WinTitle : 対象Window (省略時:アクティブウィンドウ) ; 戻り値 1:ON 0:OFF ;----------------------------------------------------------- { ifEqual WinTitle,, SetEnv,WinTitle,A WinGet,hWnd,ID,%WinTitle% DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint) ;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS DetectSave := A_DetectHiddenWindows DetectHiddenWindows,ON SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd% DetectHiddenWindows,%DetectSave% Return ErrorLevel }
自分も「なまずIME」のIME状態取得部分を拝借して、
>>500 氏と同じような関数を作って、
j::
If IME_GET()=0
Send, {Down}
Else
Send, j
Return
k::
If IME_GET()=0
Send, {Up}
Else
Send, k
Return
↑みたいに書いて、IMEのON、OFFで他のアプリもviライクに使えるようにしてます。
ただ、500氏のコードをコピペして試してみたら、戻り値が1の時に良く分かんない
エラーが出たっす。これ何のエラーなんだろ…(´・ω・`)
71 hotkeys have been received in that last 1110ms.
Do you want to continue?
(see #MaxHotkeyPerInterval in the help file)
>>501 $j:: のようにすれば直ると思う。
Send, jでAHKが発生させたキーイベントに反応して、マイクのハウリング現象みたいなことが起こってる。
エラーメッセージの意味は、直前の1秒くらいでなんかものすごい勢いでキーが押されてるけど大丈夫?スクリプト止める?
ってな感じ。大概はこういうスクリプトの暴走状態で出るけど、ホイールスクロールをホットキーにしてたりすると、
勢い良くホイールを回したときにも出てしまったりする。
503 :
501 :2007/10/07(日) 21:05:13 ID:0W2A46iC0
>>502 なんて速いレス…、解決です。ありがとうございます!
1、 !vk1Dsc07B::!f4 ; alt 無変換 → 閉じる 2、 ~LButton & RButton::WinClose A 3、 ~LButton & RButton::!f4 AHKを導入して、「閉じる」操作を割り当ててみたのですが、 3、のスクリプトだけうまく動作しません。 なぜうまく機能しないのか教えてもらえないでしょうか?
折り目正しく? Send, {ALTDOWN}{F4}{ALTUP} と書いてみたらどうだろう
AltはUpDownせんでも ! でええじゃろ F4に { }が付いてないのが問題
ごめんウソ書いたかも remapの動作はよくわかんないわ
穴が開くほどスクリプト眺めてみたが、どこがおかしいのかまったくわからん! だれかThumbRemapちゃんと動いてる奴いるか? どういう書き方してるか是非教えて欲しい。 知り合いからXpのSynapticsタッチパッドのノートPC借りたが、 これでも動かない。ということはALPSはダメでSynapticsはできるというわけでも無さそう。 (詳細な確認はしなかったが、基本は何も書き換えずデフォルトで 該当タッチパッドコメントアウトした状態で使った) Thumbsenseのほうは動くしOSの問題でもなさそうだ。 いったい何が原因なんだろうか。
>>508 ときどきドラッグして文字列を選択したときとかにキーを離してもキーアップが発生しないことがあるけど、
それ以外はおおむね希望通りの動作。設定を書き換えてRunなどを割り当てるのもうまく動いている。
ThumbSenseのキーフックや、自分で書いたスクリプトと競合しているとかないの?
ThumbSenseをスタートアップから外して再起動→AlpsドライバならApoint.exeが起動しているか確認する
→ThumbRemapの該当コメントを外す→ThumbRemapを起動する
これでダメなら判らん。
>>509 うお、言われたとおりやってThumbRemap.ahkのみを起動したらできた!
サンクス
てかそもそも俺、他のスクリプトと一緒に、AutoHotKey.iniに
#include ThumbRemap.ahk
って書いて、他のと一緒に使ってるんだけど、これだと動作しないらしい。
(読み込めないんじゃなく、リマップの部分だけが生きてて、常に普通のリマップ状態)
それぞれのスクリプトを別で全部実行した場合は、ちゃんと機能するから
スクリプトが衝突してるというわけでもないようだ。
逆に、何が悪いのか分からなくなったけど、
とりあえず応急処置として二つ起動で続けてみる、助かったぜ。
#include ThumbRemap.ahk の前にホットキーラベルがあったりすると初期化処理が読み込まれない
> 前にホットキーラベルがあったりすると初期化処理が読み込まれない この仕様はいい加減に止めてほしいな。 大域変数の初期化も面倒だし。 ホットキーやラベルがあったらreturnまで読み捨てる、ってのじゃダメ?
お前らThx #include ThumbRemap.ahkを一番最初に書いたら ちゃんと動いたぜ。
昨日まではなんともなかったのに 今日からコンパイルするとavastに怒られるようになったんだけど、 俺だけだろうか。
ここ3-4日かけてThumbremapのホットキー試行と最適化を繰り返してたら 最強の使いやすさになった。 作者神スクリプトをありがとう。
AutoHotKey ってUWSC等と比べて現時点ではどれ位使い物になるの?
そんな程度じゃ答えようもない
ではまずUWSC等の使い物になり度を説明してくれたまえ
UWSCの利点 エンコードが便利。ueと連動とか不要。 capslock制御可能。 IMEの制御 日本語解説本あり。 UWSCのデメリット プロ版が有料 単体で動作させるにはプロ版でexe化する必要がある。
そいつはマウス2ボタンを同時押しした後、 1ボタンを離しまた別のボタンを押す、といった一連の操作それぞれに 対応して起動する処理を入れることは出来ますか
>>519 > UWSCの利点
IE を含めた OLE や COM の制御が楽なのが一番のアドバンテージだと思うけど。
キー配置かえるとか、そういう用途では AHK のほうがはるかに便利。
要するに目的が違うのでは…… 比較するものじゃないような
UWSC使ってたけど常駐させる意味が薄いからいらない 単なるスクリプト作動機
AutoHotKeyもネトゲとかの狩り?マクロとかくめるらしいけど、 UWSCのほうがやりやすくて高機能なのが作れるとか、そういうレベルじゃね? 比較してる人は。
こういうスレの煽りはネタじゃなくて真性だから嫌だ
自分が使いやすいの使うって話で。
>>517-528 UWSCは使ってるけど、AHKは未だ使った事無いのでどうなのかなーと思って質問してみました。
AHKの実用サンプルってUWSCと比べて殆ど見ないので、実際どの程度の事が出来るのか知りたかったもので。
勿論、UWSCにも幾らかの不満が有ります。
正規表現が実装されてないとか、環境変数の値の取得が出来ないとか、3.xで出来た事が4.xで出来なくなってる
(ソースコードが非公開なので、自分で弄る事も出来ない)とか…
JScript や、ActivePerl 等で利用出来る、画像の位置をサーチしたりマウス操作やキー入力を操作が出来る
モジュールが有れば用が足りそうなのですが…
わざわざ乗り換える必要なし
>>529 で、回答もらって知りたい事はわかったの?
どの程度の事が出来るのか、って言われても、
殆どの人が困ると思うんだが。
AHKの実用サンプルってのが何をさすか知らんが、
スクリプト自体はいくらでも公開されてるよ。
実用サンプルって要するに「俺のやりたい自動処理を誰かが既に作って公開しているといいな〜」ってことだろ
UWSCって知らんけどAHKは軽いのが魅力に感じるなぁ マウスのサイドボタンとかに機能割り当てるならやっぱコレじゃね 逆に複雑な自動操作には向いてない印象なんだが、やったことねーんでなんとも
比較して迷ってる暇があったら使い慣れていったほうが早い
AHKはキーボードやマウスをカスタマイズするのに使うもんだろ
Fnキーにマッピングしたいのですが、Installkeyhookのhistoryに記録されないキーはAHKでは制御できないのでしょうか?
>>536 Fnキー(F1〜F12じゃないよね?)はキーボード内部やBIOSレベルでの変更が必要なので無理。
中には機種専用ツールがあったりするけど、一般的に使えるソフトは存在しないはず。
最近AHKを知り、便利に使わせていただいてます。 さて、質問なのですがあるプログラムにホットキー割り当てをして 常駐しているスクリプトを、対象のプログラムが終了したら自動で 終了させることは可能でしょうか? スクリプト自身の後ろのステップでLOOPして対象プログラムの終了 監視をしてもだめですし、別のスクリプトで監視するとスクリプトが 2本走ることになってしまいます。 スクリプトが自分自身で完結するような書き方あるでしょうか?
#IfWinActiveで対象のプログラムだけに ホットキーを割り当てるのじゃだめなの
>>540 もちろんそうしてます。
こんなスクリプトAでBeckyとそれをホットキーする常駐スクリプトBを起動
run "C:\Program Files\Becky2\B2.exe"
run "C:\Program Files\AutoHotkey\Extras\Scripts\スクリプトB.ahk"
Beckyを終了させると、スクリプトBだけ残ってしまうので、
次回また上のスクリプトAを起動すると
「スクリプトBのインスタンスが残っているけど上書きしますか?」
というメッセージが出て煩わしいのです。
できればスクリプトBの側で、Becky が終了したら自動で自分も終了するような
書き方ができないかなと思ったしだいです。
常に常駐しているスクリプトにBecky用のホットキーを書いたらだめなの?
>>541 winwaitclose
マニュアルくらい嫁よ
545 :
541 :2007/10/20(土) 13:43:17 ID:WOANx8YP0
>>543 これいいですね、使わせていただきます。
>>544 ホットキーと同時使用できるんでしょうか?
最初、ホットキー記述の後ろにLOOPでこれを書いたんですが
使い方が悪いのかうまくできませんでした。
>>545 > ホットキーと同時使用できるんでしょうか?
> 最初、ホットキー記述の後ろにLOOPでこれを書いたんですが
> 使い方が悪いのかうまくできませんでした。
何でホットキーの後にかくの?
B が Becky 起動させて終了するの待つだけでしょ?
winwaitclose か runwait のあとに exitapp でいいじゃん。
スクリプトBの中でベキ専用ホットキー & 終了監視を入れたいってことだよね? LoopじゃなくてSetTimerで定期的にベキがいなくなったかどうかチェックしたらいいんじゃね? あと、スクリプトAは常駐しないですぐ終了するの? だったらBのAutoExecute領域で run "C:\Program Files\Becky2\B2.exe" return ってすれば、スクリプトは一個で済むんじゃね?
ちょっと外出してたらこんなレスが・・・・
>>546-547 やっとわかりました。私がアホでした・・・orz
お二方のおっしゃる通り、スクリプト1個でスマートにBeckyの起動と終了監視、
ホットキーまで操作できることがわかりました。
こんな感じですね。
runwait "C:\Program Files\Becky2\B2.exe"
exitapp
#IfWinActive ahk_class Becky2MainFrame
MButton::Send,!m,l,y
#IfWinActive
ありがとうございました。
スイッチを作ろうとして Aというボタンを一回目に押したら(=スイッチon)αという動作をするようになる Aというボタンを二回目に押したら(=スイッチoff)βという動作をするようになる 以下繰り返し ということをしたいのですが どうもスイッチでなく0と1だけ使った変数になってしまい 長く煩雑になってしまいます onとoffだけでいいので簡単に書く方法ありますか
「onとoffだけ」ってこういうことをして条件分岐するの? Ifinstring, Switch, ON, Setenv, Switch, OFF else Ifinstring, Switch, OFF, setenv, Switch, ON else Setenv, Switch, ON 変数は0と1の方が書きやすいとは思うが…
>>549 flag := flag ? 0 : 1
false = 0 true = ~false = -1 だろうやっぱり。
フラグをトグルにするための更新判定が繁雑ってことかな 更新は、flag = ~flag で、判定は最終ビットだけ見るとか if (flag && 0x0001) { goto,SwichON } else { goto,SwichOFF }
>>552 Trueが1ではなく -1なのって、False(0)の全ビット反転だからなのか。
VB暦は結構長いんだけど、今始めて気がついたわ
flag=1 A:: If flag=1 XXXXX Else XXXXX flag=flag*-1 Return こんなんじゃダメ?
AutoHotkey使ってエクスプローラーを指定したサイズで起動する方法ってありませんか? LoopとWinWaitとか使って監視しようかとも思いましたが起動したときのみという判定が難しいです
>>556 1.現在の explorer.exe の pid か hwnd をすべて取得して
配列かリストに保存。
2. 1 を適当な時間でポーリング
3.変化があったら変化があった hwnd だけ winmove
でどう?
そういえば ahk はリストとかハッシュが実装されて無いね。
>>556 >438-447
質問前に100レス前くらいは遡って読みましょう
559 :
556 :2007/10/23(火) 00:57:04 ID:C4Dxb34U0
>>557 WinGet,,Listで100msごとにウィンドウ配列取得して前の配列になければWinMove
これでいけました
ありがとうございます
>>558 失礼いたしました
今後は気をつけます
今回はLoopで無理やりやったのですが
配列に値が存在するかどうかスマートに判断する方法ってありませんか?
>>559 > 配列に値が存在するかどうかスマートに判断する方法ってありませんか?
無いから、リストとかハッシュとかイテレータとか実装してくれると大変助かる。
561 :
名無しさん@お腹いっぱい。 :2007/10/23(火) 09:41:56 ID:yNWS5b5p0
>>561 urlはきちんとurlエンコードしてください
AutoHotKeyで ThumbRemapとマウスジェスチャを両方入れたとする。 んでマウスジェスチャの一つとして、右クリ+←をまぁ適当に「更新(F4)」 に割り当てたとする。 次にThumbRemapでLに右クリを設定したとする。 タッチパッド上に触れながらL押して左に指なぞったときに ちゃんとマウスジェスチャのほうを認知させるようにしたい場合、 どう書き換えればいいかな? (今の状態だと、Lを離したときに通常の右クリが発動するだけ) もちろんThumbRemapでのホットキーを増やせば解決できるのはわかってるが、 いろいろな方法を用意しておきたいと思ってな。
MG_TriggerDown/Up
マウスカーソルの状態を取得できる方法ってないですか?
A_Cursor 現在のマウスカーソルの種類
AHKからEXCELファイルを開きたいのですが、 管理人さんのMy ScriptsページのActiveX操作サンプルや WEBのそれらしきページを参考に書いてみましたがうまくいきません。 EXCELは立ち上がるのですが、ファイルが開けません。 どこか勘違いしてるでしょうか? #include *i %A_ScriptDir%\ActiveX.ahk ActiveX() ObjExcel:=CreateObject("Excel.Application") pp(ObjExcel,"Visible","true") Inv(Inv(ObjExcel, "Workbooks"), "Open", "C:\Hoge.xls") ;EXCELインスタンスが立ち上がりっぱなしになるのでここでリリース sleep 5000 Release(ObjExcel)
>>567 ありがとうございました。
コマンドばかり見てたので組み込み変数のほうは全く見てませんでした。
570 :
名無しさん@お腹いっぱい。 :2007/10/27(土) 14:47:45 ID:RjXdUIJ10
Run,AAA\BBB.vbs CCC ※AAAはフォルダ名、BBBはVBscriptファイル名、CCCはパラメータ として、CCCというパラメータを指定してBBBを実行したいのですが、 「指定されたファイルが見つかりません。」とのエラーがでます。 エラーメッセージは下のようになっており、 CCCがパラメータとして認識されていないようです。 Action: <AAA\BBB.vbs CCC> Params: <> AAA\BBB.vbsやCCCを""でくくったりしてみましたがだめでした。 どのようにすればパラメータCCCを指定してBBBを実行できるでしょうか。
Pathが通ってないんじゃね?
572 :
名無しさん@お腹いっぱい。 :2007/10/27(土) 15:18:17 ID:RjXdUIJ10
>>571 ありがとうございます
AAA\BBB.vbsのパスが通っていないということでしょうか?
CCCを削除してRun,AAA\BBB.vbsにすると
パラメータなしでBBB.vbsが実行されるので、
AAA\BBB.vbsのパスは通っていると思うのですが・・
Windowsキーと他のキーの組み合わせ(Win+Rとか)は生かしたまま Windowsキー単発で押したときだけスタートメニューが出てくるのを無効にする方法はありますか
574 :
568 :2007/10/27(土) 18:55:22 ID:1DiNaabz0
あのう・・・
どなたか
>>568 おわかりの方いましたらお答えいただけませんでしょうか?
下の3行はあえてやっているので、これのせいで開かないとかいうわけではありません。
この3行を外してもファイルは開けませんので念のため・・・
;EXCELインスタンスが立ち上がりっぱなしになるのでここでリリース
sleep 5000
Release(ObjExcel)
今は仕方ないのでEXCELファイル開く部分だけVBスクリプトで書いて呼び出しています。
575 :
名無しさん@お腹いっぱい。 :2007/10/27(土) 22:40:42 ID:feMike230
>>573 LWin::return
LWin & LWin::return
RWin::return
RWin & RWin::return
>>574 敢えてActiveX使ってる理由がわからんので何とも。
Run使った関連づけ実行じゃあかんのか?
>>576 職場内の不特定多数の人に以下の作業をやらせています。
1.EXCELで作ったindex.htmlを開く(開いたデータは各自が手で修正)
2.それをWEBサーバへFTP転送
3.転送後ブラウザで修正結果が正しく表示されるか確認
1〜3をAHKスクリプトで作ってEXE化し、職場内サーバに置いて実行させています。
EXCELファイルの拡張子がxlsでない事、人によってOfficeのインストールドライブや
フォルダが違う事などで、単純にRUNコマンドが使えないのです。
index.htmlをEXCELで作っているのは、表示内容が単純な表データの為と、
1〜3まで自動化してやれば、誰でも簡単にWEBのデータが修正できる為です。
>>577 まず最初にEXCELのパスをドライブからLOOP検索して
パスをテキストに保存するようにすれば?
最初にそれを調べてIfNOtExistだったら再検索するとか
全部表データなら、CSVからhtml生成するのが一番楽だと思うんだが。
580 :
577 :2007/10/28(日) 20:13:17 ID:jmlI36md0
>>578 うーん、ドライブ検索だと効率悪そうですね。
レジストリ検索したらいけるのかな?でもあんまり勝手に人のマシン内を探るのもまずそう・・・
>>579 表データなんですけど、一応社外の人に見せるように見栄えをよくするため
タイトル付けたり、セルに色付けたりとかセルの幅とかも調整してるんですよね・・
EXCELなら見たまんまそのレイアウトでWEBページになりますんで。
やっぱり作者さんのActiveXモジュール使ってる人少ないんですかね?
将来的にはAutoHotKey+ActiveXでシート名を取得・変更したり
セルの操作したりとかできるようになりたいんで、もうちょっと頑張ってみます。
質問ですが、特定のキーを押している間は別のホットキー割り当てに 切り替えるなんて事は出来るでしょうか。 たとえば普段はBを押すとCが表示されるが、 Aを押している間にBを押すとDが表示される、というようなことです。
出来る。
ありがとう。 割り当てを切り替えるには特定のキーの状態を 監視して分岐させればいいみたいですね。
>>570 Run
wscript.exe xxxx.vbs param
でどうよ。 cscript.exeでも良いけど。
>>581 >>5
585 :
584 :2007/10/28(日) 20:32:06 ID:+dr9EP66O
ん、変なところで改行されてる。 Run wscr〜な。
586 :
584 :2007/10/28(日) 20:35:35 ID:+dr9EP66O
何だimonaの仕様か?カンマが改行になる… 早くDION規制終わってくれ。スレ汚しゴメン。
587 :
570 :2007/10/28(日) 21:08:55 ID:q7KA1l9V0
>>584 この方法でうまくいきました。
ありがとうございます!
>>581 B::Send,C
A & B::Send,D
こんな感じで良いんじゃね?
>>575 横d
後学のために知りたいんだけど、LWin & LWin::returnってどういう効果があるの?
590 :
名無しさん@お腹いっぱい。 :2007/10/30(火) 13:58:41 ID:Pjuee0l10
AHK Wizardの皆様、おしえてください。 窓使いの憂鬱からAHKへの移行中で、.mayuスクリプトから.ahkスクリプトに書き換えています。 環境はWinXP Pro SP2およびAHK 1.0.47.04を使用しています。 ファンクションキーF1を無効にし、Shift+F1で本来のF1が入力されるようにしたく、 以下のようなスクリプトを書いてみましたが、うまく行きません。 F1:: Return +F1:: Send {F1} おそらく1行目でF1を無効にしているので、2行目も無効になっているのだと思うのですが、 どう記述したらよいかわかりません。どなたかご教授いただけませんか。
$
592 :
590 :2007/10/30(火) 15:29:38 ID:2bIDrR8e0
>>591 $F1:: Return
+F1:: Send {F1}
としたら期待通りの動作になりました。ありがとうございました。
連投大変失礼いたします。
モディファイヤキー単独押しと、モディファイヤ+その他のキーとで別の動作をさせたいと思い、
下記のようなスクリプトを書いてみました。期待する動作は、右Ctrlでcmd.exeが、
Ctrl+アプリケーションキーでエクスプローラが起動するというものです。
RCtrl:: Run cmd.exe
^AppsKey:: Run explorer.exe
これだと右Ctrlがリピートになってしまい、Ctrl+アプリケーションキーが動作しませんでした。
先程教えていただいた"$RCtrl::"も試してみたのですがダメでした。
問題点は、モディファイヤキーのキーリピートをどのように抑制するか、モディファイヤキーが他のキーと
同時に押された場合にどのように処理するか、の2点です。
みなさん、お教えください。
593 :
590 :2007/10/30(火) 15:39:15 ID:2bIDrR8e0
キーリピートは"RCtrl up::"で対処できました。
「:」のキーに修飾キーを押しながら何かさせたいんだけどうまくいかないのはなぜ? VKで指定してもだめだ。
^;::run,notepad 普通に動いた。 具体的に書かないとわからない。
あぁ、勘違い。
^vkBAsc028::run,notepad でもvkで指定したら動いた。
>>514 俺はコンパイルで精製されたファイルが、avast先生にtengeだって怒らた
オンラインファイルスキャンしてみれば複数の其れで嫌疑がヽ(`Д´)ノ
ahkを入れ直して最新版にしたら症状なくなった。つか、マジで感染してたのかw
最近のマウスについているような、横スクロールのシグナルをおくるような AHKのスクリプトをお持ちの方はいらっしゃいませんか? Click,WheelLeftみたいな感じでつかえるやつ。
確かに何故かキーリストにないな。
joytokeyの代わりに使えるかと思ったら やや古めのゲームではマウスエミュレーション でmousemoveの量を最低にしても delayをいじってもカーソルがやたらと大きく動くので 使い物にならなかった。 よくわからんけどDirectinputの関係だろうか。
>>601 どんなスクリプトを書いたか知らんが、どう見てもスクリプトの問題です。
違います。 ・同じスクリプトでもゲームによってマウスカーソルの動きの量は違う。 ・ウインドウズ上はまともな精度でちゃんと動作する。 ・最近のゲームではまともに機能する。 ・試しに公式ページのマウスエミュレーションスクリプトを使っても 特定のゲームでは+1の動きでも動きすぎて使い物にならない。
あたりまえの結論。 ・Autohotkeyはマウスエミュレーションに関して特定の状況で細かい設定が出来ない。 よってそういう機能が必要なゲームに使用するのは避けるべき。 ・ジョイパッド、スティックに単純にマウスを割り当てるなどの使い方をしたいのなら joytokeyその他のほうが特化しているぶんはるかに優れている。常駐メモリも少ない。
>>603 > ・ウインドウズ上はまともな精度でちゃんと動作する。
やや古めって、windowsじゃねーのかyp
>>603 とりあえず動かないゲームと使ったスクリプトさらしてよ。
もしかしてahk使えないって愚痴りたかっただけかい?
>>605 windowsデスクトップ上で、だ。
>>606 動かないゲームを間違いなく君は持ってないから晒さないよ。
どうせ検証できるわけでなし。
2000-2001年前後のアクション(FPS)ゲームだ。
スクリプトは公式のjoystick as mouseの丸パクリだ。よってスクリプトが
おかしいせいにしたいようだけど、そうじゃない。
言っておくが別にこのアプリを貶めたいわけじゃない。つかえねーものもあるということ。
ネタ乙
愚痴りたいだけならうざいから消えて
610 :
594 :2007/11/02(金) 23:55:24 ID:K7cwsubO0
>>597 vk指定したら動きました。
vk指定のしかたが間違っていたようです。
thx!
質問専用スレじゃないんだから別にいいんじゃないの。 どうせ過疎ってるんだし。
自前のマウスカーソルを表示しているゲームの場合、AutoHotkeyが操れるシステムのカーソルと位置が違ってるのかも。 システムのカーソルを隠して、位置を監視し、基準位置から離れた距離に応じて自前のカーソルを動かし、 システムのカーソルの方は基準位置に戻すという処理をやっているらしい。 Alt+Tabで他のウィンドウを出したときにそれらしい動きをしているゲームがあった。 ゲームの自前カーソルの位置を特定できない以上、AutoHotkeyで操るのは難しいね。
そういえば、optionでカラーカーソルのあるゲームでX,Y座標が 滅茶苦茶に取得されるのあったな… カラーカーソル切れば無問題だったけど。
>>599 先月作って放置してあったのがあったから上げてみる。適当に改造して使って。
一応加速と、ExcelやWord、VBEなんかの分割ウィンドウでもリダイレクト可能にしてみた。
ホイールリダイレクト互換スクロール版
http://lukewarm.s101.xrea.com/up/file/085.zip しかしこれ、ホイールイベントをトリガにしてるから ThinkPadみたいなトラックポイントでの独自ドライバでのスクロールだと
フックできないんだよね。職場でヒマな時作ったんだけど、自宅だとマウス繋げないから全然役たたず(´・ω・`)
Thinkのスクロールボタンの検知方法とかどなたかわかるかたいらっしゃいませんかね。
>>614 ありがとうございます。
まだうまく動作できていないので、もうすこしかんばってみます。
クリップボードの履歴をテキストファイルに保存しようとおもい、
~^C:: FileAppend, %clipboard%`n`n, %A_ScriptDir%\clipboard.txt
などとやってみたのですが、うまくいきません。
~^C:: Msgbox, %clipboard%
とやってわかったのですが、クリップボードが更新される直前の内容が保存されます。
待機処理が必要なのだとおもうのですが、どのようにやればよいでしょうか?
識者の方々、おしえてください。
Send, ^c を入れればいいだけでは?
>>616 そうでした。
^C up:: Send, ^C
OnClipboardChange:
FileAppend, %clipboard%`n`n, clipboard.txt
Return
で、ばっちりできるようになりました。
AutoHotKeyがバックグラウンドで動いていることでCPUパワーやメモリへの負担はどれくらいなんでしょう。 ファイアウォールやアンチウイルスソフトに比べれば微々たるもんでしょうか。 エクセルやメーラーのようにCPUへの負担がたかが知れているものを使用するのと違って、 メモリやCPUを目一杯使用する画像処理ソフト(Photoshopなど)との併用を考えているんですが、 それがメモリやCPUへの負担を考慮して、果たして正しいやり方なのか。 重いアプリとの併用を試した方の経験などありましたら教えて頂けると幸いです。
>>618 スクリプトを動かすソフトに対して、CPUやメモリの使用量を聞いてどうするの?
お前さんの書いたスクリプト次第だろ?
>>618 君が実際にAutoHotkeyを使って見るのが一番早い
重くなったのが感じられるなら無理と言う事だし、変化が解らないなら問題無いと言う事だ
621 :
名無しさん@お腹いっぱい。 :2007/11/03(土) 18:27:22 ID:H0//tZlU0
firefoxのコンテンツエリアにfocusするにはどうしたらいいですか? SetTitleMatchMode, 2 !.:: WinActivate, ahk_class Progman WinActivate, Mozilla Firefox ここまでは書けたのですが、これだとwindowにfocusされるに過ぎず、 たとえば、textareaにfocusのあるときにAlt+.をしてもコンテンツエリア(bodyタグ直下のtextノードに相当) のfocusされません。 よろしくお願いします。
623 :
618 :2007/11/03(土) 18:53:52 ID:KoS6CqZf0
自分とこだと explorerのCPU時間が8:17、 System Idle Processが65:23:22程度に使ってるマシンで プライオリティ通常以上で1000行くらいのAutohotkeyスクリプトが0:57。 全62プロセスの中の14位。 まあスクリプトの内容によるけど微々たるものだね。 ちなみに同時に使ってるmayu.exeは0:16
>>621 fx の UI は OS のデフォじゃなくて独自実装なので、
ahk の関数は無力です。
ahk から mozrepl 使って javascript を実行させましょう。
626 :
名無しさん@お腹いっぱい。 :2007/11/03(土) 20:48:07 ID:H0//tZlU0
>>625 ありがとうございます。
mozrepl調べてみます。
ControlFocus,MozillaWindowClass7,ahk_class MozillaUIWindowClass
タスクバーを上に配置していて、ウィンドウがタスクバーに重なってしまう事が時々あるので Loop{ WinGetPos, X, Y, , , A If(Y < 23) WinMove, A, , , 19 Sleep, 2000 } return のようにして使ってるんですが、これだとウィンドウがアクティブになるまで放置プレイなので できたら Y < n のウィンドウが存在したらWinMoveするようにしたいです。 初心者ですみません、上手い方法ありますでしょうか? 助けてってば〜というソフトは自分の環境では上手く動作しませんでした。
突然なのですが、キー2回押しの関数ですばらしいのを発見したのでご報告。 モディファイヤもばっちり動きます。 DoubleKey(RunCommand, timeout){ if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout) Run, %RunCommand% } こんなかんじで使用。 ~LCtrl up:: DoubleKey("cmd.exe", 400)
>>624 俺もそんくらいだな。
SystemIdleProcessがその半分ぐらいの時間で、AutoHotKeyは14秒。
AutoHotkey.ahkのpathってどこで変えられますか?
>>631 DoubleKey関数を自分のスクリプトにペーストします。
DoubleKey(起動したいコマンドライン、タイムアウトms)
- 左コントロールキー2回押しでコマンドプロンプト起動
~LCtrl up:: DoubleKey("cmd.exe", 400)
- 右シフトキー2回押しでCraftLaunch起動
~RShift up:: DoubleKey("C:\Tools\DF\DF.EXE", 400)
こんなかんじで。
発見てかいてあるからにはネットで拾ってきたんだと思うけど 出典元くらい書いたらどうなの
先頭に ~ をつけると どのような動作になるのでしょうか?
っ 説明書
WindowsMediaPlayerにControlsendでキーストロークを送りたいのですが、 上手くいきません。他にもですがControlSendで不発なアプリがあるのですが、 アクティブにしてからSendでも送ることで諦めるしかないのでしょうか? !b:: ;ボス来る WinGetClass, MotoWindow, A ControlSend,,{Space},ahk_class MediaPlayerClassicW;メディアプレイヤークラシック一時停止 ;ControlSend,,^{P},ahk_class WMPlayerApp ;↑同様にWメディアプレイヤーの一時停止だが、うまくいかない WinActivate,ahk_class WMPlayerApp Send,^{p} WinActivate,ahk_class %MotoWindow%;元のウィンドウに戻す return WinActivateだと一瞬チラッとメディアプレイヤのグラフィックが出てしまって困ります。
PostMessageを使った方が確実で良いんじゃない
>>621 >Firefoxのコンテンツエリアにフォーカス
もう解決したかもしれないけど、mozreplの使い方が分からない自分の解決方法は
1.アドレスバーにフォーカス(Alt + d)
2.Enter
開いているページが更新されてしまうのが難点。
テキストエリアからフォーカスを戻したい時はEsc
>>639 ^{P} → ^p ではどう?
うちの環境では大文字送信だとショートカットキー上手く動かなかったからひょっとするかもよ。
あと文字送信だから{}で括らなくておk
ControlSendはあんまり確実性ないね。640の言う通りPostMessage使えそうならそっちのが無難
643 :
639 :2007/11/06(火) 22:18:49 ID:k2QniCI00
ダサイですが元のウィンドウを最前面固定にして、 背面ウィンドウをアクティブにしてSendで送ることで やりたいことを実現しました。 Send/PostMessageはヘルプに書いてないのに 皆さん何で知っているんですか?質問ばかりですみません。
下記のエラーメッセージが出てしまいます。 どう対処すればよろしいでしょうか。 Error: A control's variable must be global. The current thread will exit. Specifically: vMyCheckbox menu() { global vMyCheckbox, vMyEdit, vMyRadio Gui, add, tab,, First Tab|Second Tab|Third Tab Gui, add, checkbox, vMyCheckbox, Sample checkbox Gui, tab, 2 Gui, add, radio, vMyRadio, Sample radio1 Gui, add, radio,, Sample radio2 Gui, tab, 3 Gui, add, edit, vMyEdit r5 ; r5 means 5 rows tall. Gui, tab ; i.e. subsequently-added controls will not belong to the tab control. Gui, add, button, default xm, OK ; xm puts it at the bottom left corner. Gui, show return ButtonOK: GuiClose: GuiEscape: Gui, submit MsgBox You entered:`n%MyCheckbox%`n%MyRadio%`n%MyEdit% } +^b:: menu() return
global MyCheckbox, MyEdit, MyRadio vがいらないんじゃ? 別のエラーがでたけど
>>646 ありがとうございます。
すすみました。
正規表現で質問があります。
うまく置換できないのですが、どこが問題でしょうか。
bb = %clipboard%
bb = RegExReplace(%bb%, "[A-z]", "_")
clipboard = %bb%
bb := RegExReplace(bb, "[A-z]", "_")
>>648 ありがとうございます。
こういうやり方ってできないんですかね。
clipboard := RegExReplace(%clipboard%, "[A-z]", "_")
だからー、第一パラは%いらないのー
>>650 もう分からないです。
こうすると clipboard := RegExReplace(clipboard, "[A-z]", "_")
クリップボードのデータが "RegExReplace(clipboard, "[A-z]", "_")" なります。
OnClipboardChange: clipboard := RegExReplace(clipboard, "[A-z]", "_") return をコピーしたら _________________: _________ := ____________(_________, "__-__", "_") ______ になった。
>>652 すいません。
ありがとうございます。
できました。
ちなみに、これを実行するととんでもないことに
clipboard := RegExReplace(clipboard, "\\", "\\\\")
C:\
↓
C:\\\\\\・・・・・・
GUIの入力項目で、よく検索ソフトとかで入力履歴がドロップで出て選択できるって機能がありますが そんな部品ってありますか?または作れますか?
>>654 ComboBoxかDropDownList
>>653 かっこ()の中は変数、それ以外は文字列って覚えとけ。
かっこの中の変数は、%%で展開する必要はない。逆に文字列は""で囲う必要がある。
If(A_LoopField=str) ;str=hoge
If A_LoopField=%str%
If(A_LoopField="hoge")
If A_LoopField=hoge
どれも同じ
ちなみにC:\\\\\\・・・・・・にはならないぞ。
1つの\を4つの\に置換する表現だから、C:\\\\になるはずだし、試したら実際そうなったが。
きっとループに陥ってるだけなんだろうな もう少しこなれてからまたおいでって感じだな
Gui, Add, ComboBox ,vCom Simple Sort, aaa|bbb|ccc|aab|aba これで「a」を打つと下のリストボックスが、aaa,aab,abaに勝手に絞り込ます部品や方法ってありますか? インクリメンタルサーチのリストボックス絞込み再表示みたいなイメージです。
流行らせるページのコマンドラインランチャがそんな感じ
変数にリストがないのは痛いな。 配列を使っているけど、追加、削除、検索をjavaのクラスみたいに簡単に使いたい。
VistaHomeBasicですが、 左Shiftキー二回押しでdeleteが入力されるようにしたいです。 そこで、以下のところまでは書いたのですが、この続きはどうしたらいいですか? それともこの方向性は間違ってますか。 アドバイスお願いします。 ; keybind to the delete key flag:=0 SetTimer, checkShiftkey, 500 LShift::【flag==1にする】 checkShiftkey: if(flag==1) { 【deleteキーを押す】 } flag:=0 return
~LShift up:: DoubleKey("{Delete}", 400) DoubleKey(Command, timeout){ if(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < timeout) Send, %Command% }
>>662 正常に動作しました。
今やっと理解できました。
ありがとうございます。
質問させていただきます マウスの下のウィンドウのプログラムの実行ファイル(.exe)のパスを取得するにはどうすればよいのでしょうか? MouseGetPosでウインドウ名、コントロール、などを取得した後 ウインドウ名やコントロールからどのようにしてファイルのパスを取得すればいいのかがわかりません よろしくお願いします
hwnd から pid に変換は、EnumWindows と GetWindowThreadProcessId を使えばいいよ。 コールバック書けるならね。
設定したホットキーの解除(一部のキー)ってできます?
Hotkey, OFF
#IfWinActive を使って Foxit Reader という PDFビューアをフックしたいのですが、うまくいきません。 AU3_Spy.exe で 見てみると、ahk_class Afx:400000:8:10011:0:xxxxxxx となって、最後の7桁が 起動毎に変ってしまいます。 SetTitleMatchMode, 2 として #IfWinActive ahk_class Afx にて中間一致を試みましたが 全くに認識されません。 このような場合にはどのようにしたらよいでしょう?
ahk classには中間一致はないでソ タイトルじゃないんだから
>>670 > AU3_Spy.exe で 見てみると、ahk_class Afx:400000:8:10011:0:xxxxxxx となって、最後の7桁が
> 起動毎に変ってしまいます。
Afx:400000:8:10011:0:0000000〜Afx:400000:8:10011:0:9999999
まで書いとけばいいんじゃね?
Sleipnirが最前面のときのみ Sleipnirのみホットキーを有効にしたいのですが、うまくいきません。 ご教授ください。 Sleipnirをホットキーなしで使用したい場合もあるので、 ホットキーを有効にするかの条件を加えています。 ;有効トグル用フラグ flg = 0 ;ホットキー 2:: ;最善面のウィンドウがSleipnirで、フラグがONのとき IfWinActive, ahk_class SleipnirMainWindow && flg = 1 { Send {F2} } return ;フラグ切り替え ^1:: if (flg = 1) { flg = 0 } else { flg = 1 } return
>>671 なるほど、そういうことでしたか。
ヘルプを参照してタイトル部分一致を試みたのですが、ちょっとできませんでした。
また別の機会にやってみます。
>>672 いいアイディアをありがとうございます。
>>673 > ;最善面のウィンドウがSleipnirで、フラグがONのとき
> IfWinActive, ahk_class SleipnirMainWindow && flg = 1
IfWinActive は If とは違うので中に式は掛けないと思うよ。
flag をトグルした場合に hotkey を登録したり、解除したりしないとダメだよ。
>>674 冗談だから本気にしないでね。
>>673 ;; と思ったけど、F2 送るだけならこれでいいんじゃ?
IfWinActive, ahk_class SleipnirMainWindow
2::
;; 最善面のウィンドウがSleipnirで、フラグがONのとき
if (flag == 1)
{
Send,{F2}
}
else
{
Send,2
}
return
>>672 は想像してみて、ちょっと面白いなと思っていました。
アイディア自体も思いつかなかったので、また何かの力技系のときに応用してみます。
ありがとうございました。
>>676 あっ
ごもっともです。
ありがとうございます。
無変換キーにウィンドウ最小化を与えたいのですが、 vk1Dsc07B:: WinMinimize ではうまくいきません。 どうすればよいでしょうか。
さすがに付き合いきれんよ
>>679 自分も最初これで悩んだ。
WinMinimize, A
>>681 あざーす
サンプルの一番下だけ見てなかったっす。
あざーすって何だよ。 アザトースか?
今日は優しい風が吹いてるな
「^c::Send,^c」という定義をした場合、 Ctrl+Cが押されるとCtrl+Cを送信するサブルーチンが実行され、そのCtrl+Cに反応して再度サブリーチンが実行され、無限ループに陥ってしまう。 とありますが、Send ^cの「^c」をホットキーでない通常のペーストにしたい場合はどのようにすればよろしいでしょうか?
>>686 > とありますが、Send ^cの「^c」をホットキーでない通常のペーストにしたい場合はどのようにすればよろしいでしょうか?
何も割り当てなければ C-c は C-c のままですよ?
ごめん激しく釣られた。 ペーストは C-v ですた。
ホットキーでマスタ音量を上げ下げしたくて作ったのですが二点ほど質問があります TIPOFF: tooltip settimer, TIPOFF, off return ^up:: settimer, TIPOFF, 500 soundset, +1, MASTER soundget, MASTERVOL, MASTER tooltip, %MASTERVOL% return ^down:: settimer, TIPOFF, 500 soundset, -1, MASTER soundget, MASTERVOL, MASTER tooltip, %MASTERVOL% return 1.ツールチップは透明にしたりできないのでしょうか? 2.なぜか+1しているのに0.999466ずつ足されていくのですがなぜでしょうか?
0〜65536を百分割してるから誤差が出るんじゃないの
便乗質問。ツールチップのフォントの大きさ変えることできない?
流行らせるページの「タスクトレイに最小化」スクリプトで 最小化したウィンドウを取り出すとき、 タスクトレイのアイコンをクリックするのではなく、 ショートカットキーで取り出す事ってできますか? 一応、特定のアプリだけで使いたいんですが、やり方がよく分かりません・・・
Altキー2回押しで起動するアプリがあってそれをAHKを使って、Ctl+右クリックで呼びたいんですけど 下のいずれでもダメでした。 何か良い方法がありましたら教えてください。 ^RButton:: SendEvent {ALT}{ALT} ^RButton:: SendInput {ALT}{ALT} ^RButton:: Send {ALT}{ALT} ^RButton:: SendInput {ALT} down SendInput {ALT} up SendInput {ALT} down SendInput {ALT} up
CLCLで試したけど KeyWait, CTRL, U はさんだら出来た。でも、キーを放すまでは動作しないので ちょっと違和感ある
「起動する」のであれば、Runで呼び出すのではいかんのかい?
マウスカーソルを動かさずに、指定した座標にマウスのクリックを発生させることは不可能でしょうか?
PostMessage,SendMessage + WM_LBUTTONCLICK 辺り
右ダブルクリックにホットキーを割り当てたいのですが、 RButtonRButton:: ではだめでした。やり方が悪いのでしょうか?
>>698 その発想はないわw
629を少し変えれば良いと思うよ
ワロスw
マウスジェスチャ2ならRB__RB__なんだがな
マウスカーソルをデスクトップの右上に1秒置いたとき 関数を実行させることってできますか?
できるよ
~Lbutton & ctrl::send,{enter} が暴走します。 字面通り左ボタンを押しながらCtrl押すとEnterになるのはいいんですが、 何故か家ではCtrl押しながら左ボタン押すと定義外のことが起きます。 何も定義してないのに、左ボタンを押してる間Enterが連打されてしまいます。 ~b & ctrl::send,{enter} だとCtrl押しながらbで(当然のことながら)何も起きないのに。
おかしいな家だけ?Lbuttonが壊れているわけでもないのに。
>>697 ありがとう。調べてやってみましたが、
たとえばアクティブウィンドの(256,256)の座標に、マウスの左ボタンをクリック→離すを送るのに
SendMessage, 0x201,0,0xFF00FF,,A
SendMessage, 0x202,0,0xFF00FF,,A
を試してみました。
が、どうもうまくいきません。書き方間違っているのでしょうか。
右クリックにしてみると(0x204,0x205)、アクティブウィンドの種類によってはメニューは出ることがあるのですが、
意図した座標で右クリックしていないようで…
よろしければ知恵をお貸しください。
>>706 > SendMessage, 0x201,0,0xFF00FF,,A
wParam は 1 じゃないと不味いような。
昔書いた奴をやろう。
LClk(x, y, id=0)
{
lParam := x | (y << 16)
if id = 0
{
PostMessage, 0x0201, 1, %lParam%
PostMessage, 0x0202, 0, %lParam%
}
else
{
PostMessage, 0x0201, 1, %lParam%,,ahk_id %id%
PostMessage, 0x0202, 0, %lParam%,,ahk_id %id%
}
Return
}
現在文字入力中であるかどうか を判断する方法はありませんか? A_CursorXで判断できるかと思ったのですが入力中でないにも関わらず値が存在しますし 現在のコントロールだとwebページの入力フォームが判断できませんし
キーを押しているかどうかなら GetAsyncKeyState 厳密に入力中かどうかは判定するなら、メッセージを hook しないといけない希ガス
間違えた上に言い方が悪かったです A_CursorX ではなく A_CuretX でした 文字入力中かどうか ではなく キーを叩くと文字が入力される状態かどうか でした 何がやりたいかというと、文字を打ち込みたいとき以外は 修飾キーなし、英数字キー単体でキーボードショートカットを実現したいのです
COntrolGetFOcus で文字打ち込み系のコントロールだったら除外するとか
よいお知恵を教えてください。 英語版WindowsXP Pro SP2上にてAutoHotKeyを使っています。 AHKで、メモ帳トラッパーやNotepadBranchのような働きをさせられたら、と思っています。 考えている仕組みは、上記のものと異なり、notepad.exeが開いたら対象ファイルのパスを取得し、 任意のエディタで開き、同時にnotepad.exeを閉じる、というものです。 しかしながらアクティブなnotepad.exeが開いているファイルパスの取得方法がわかりません。 どなたかご教授いただけないでしょうか。
>>712 おまいさんの notepad.exe と俺の使ってる奴の version が同じかどうかはわからないが、
notepad.exe のメモリの 0x0100A900 を読めばいいとじっちゃんが言ってた。
ちなみに Unicode だから、ahk でそのまま表示しても文字化けするから注意してくれ。
>>699 ありがとうございます。
RButton:: DoubleKey("cmd.exe", 400) でできましたが、
普通の右クリックが聞かなくなりました。
考えてみたら当たり前ですが・・・
やりたいことはartipsというソフトがあり、
artipsのの右ダブルクリック見たいに、ホットキーアクションをさせたいです。
artipsは、初回の右クリックで、通常の右クリックアクションが即効発動して
次の右クリックをすると、artipsのポップアップが出る動きです。
どうしてもAutoHotKeyで実装したいのですが、
すいません、ヒントをお願いします。
(右ダブルクリックだけなら、)わざわざ関数持ち出さなくともよくね? ~Rbutton:: If(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 200) { Send,{Esc} ;出現したコンテキストメニューを念のため消す Send,Atoha yaritai koto ;後はご自由に } return
>>713 情報ありがとうございます。じっちゃんにもお伝え下さい。
しかしメモリの読みかたが全くわからないので、もしよろしければ
メモリの参照方法をじっちゃんに聞いていただけないでしょうか?
ググレカス
WinMain を使えば出来そうな気配なんだけど もうこれ以上は分からん┐( ´ー`)┌
流行らせるページ管理人氏のMyScriptにメモリをどうにかして読むサンプルがあったような気が
>>716 ググれない奴は覚えないってじっちゃんが言ってた。
#include mbstring.ahk
ReadMemString(pid, ByRef res, addr, size)
{
local hproc, suc
hProc := DllCall("OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,UInt)
VarSetCapacity(res, size)
suc := DllCall("kernel32\ReadProcessMemory",Int,hProc,Int,addr,Str,res,Int,size,Int,0,Int)
DllCall("psapi\CloseProcess",Int,hProc)
return suc
}
#ifwinactive ahk_class Notepad
1::
WinGet, pid, PID
ReadMemString(pid, ures, 0x0100A900, 256)
MBS_WideCharToMultiByte(res, ures)
msgbox, %res%
return
>>715 ありがとうございます。
下でできました。
1回だけの右クリックも聞くようにしました。
Rbutton::
If(A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 1000) {
Send,{Esc}
処理・・・
} else {
MouseClick, RIGHT
}
return
上記では、右クリック押下だけで、MouseClick, RIGHTが反応してしまいます。
他アプリのマウスジェスチャを有効にしたいのですが、
右クリックを放した後にMouseClick, RIGHTを実行させることは可能でしょうか。
>>721 チルダつければいいだけじゃないの?
つか、715はチルダつけてるじゃん。消したの?なんで?
フルパスからそれが「フォルダ」なのか「ファイル」なのかを判別するのに 一番手っ取り早い方法ってありますでしょうか? 例 D:\hoge\hogehoge hogehogeがフォルダなのか拡張子無しのファイルなのかを調べたいのです
どうも有り難うございます リファレンスに普通にありましたね・・・ スレ汚しすみませんでした
>>722 あっ、すいません。
どうもありがとうございます。
ところで、どっかのサイトにIMEの辞書登録で
上から2番目の項目に値をセットするとき
ControlSetText,RICHEDIT50W2, %Clipboard%, 単語/用例の登録
っとやっていましたが、「RICHEDIT50W2」ってどうやって調べるのでしょうか。
「単語/用例の登録」画面を立ち上げ、Spyで見ましたが
そんな項目はなかったです。
自分の環境に合わせれ ウチの2003だとふつうにEdit2
>>727 え〜できないです。
Edit1って、ウィンドウの上から2番目の入力ボックスってことですか?
マウスのX1ボタン+右クリックでコピーするようにしたいのですが XButton1 RButton :: ^c としてもエラーが出てできませんでした。 リマップでは無理なんでしょうか?
質問してる奴等
まずは
>>1 の日本語解説ページのリファレンスを読んでこい。
話はそれからだ。
タスクマネージャーでは存在するのにwingetでpidが取得できません。 WinGet,v,Listでリストを書き出してみたところ該当するプロセスがありませんでした。 試したスクリプトは DetectHiddenWindows,On WinGet,w,List,,,joijpouhpoijjjjjjj Loop, %w% { tempid := w%A_index% WinGet, PName, ProcessName, ahk_id %tempid% WinGet, Pid, PID, ahk_id %tempid% FileAppend, %A_index%%A_Tab%%Pid%%A_Tab%%PName%`n, %A_ScriptDir%\%A_ScriptName%.txt } return です。 タスクマネージャを起動してpidを手打ちしているのですが、 スクリプトで取得する方法がありましたら教えていただけませんでしょうか。
>>731 detecthiddenwindows
VBなどでカレンダーのコントロール(部品?)がでて、選択するとその日にちが 横のテキストにセットされるなんてのがありますが、 そんなことって、autohotkeyでできますか?
>>720 すすす、すげぇ!!! ばっちりです。
質問の前に自分でも調べてみたのですが、当分できなかった気がします。
また勉強してきます。本当にありがとうございました。
>>732 さんありがとうございます。
DetectHiddenWindows,Onは試してるんですがどうにもうまくいきません。
タスクマネージャーでPidを表示できるようにして確認したところ、pidは最大でも4000までだったのでloopで総当りしてみました。
その時点で50プロセス程存在していました。
DetectHiddenWindows,On
Loop,4000
{
tpid := A_Index
WinGet, PName, ProcessName, ahk_pid %tpid%
if (PName == "")
continue
FileAppend, %tpid%%A_Tab%%PName%`n, %A_ScriptDir%\%A_ScriptName%.txt
}
return
結果は32プロセスしか取得できなかったようです。
System Idle Process,System,Spoolsv.exe等のユーザー名がSYSTEMなものがほとんどなんですが
それ以外にも散見されます。
取得したいプロセスは自ユーザーです。
PCに詳しくない人に使ってもらうためなので、できればスクリプトの中で取得したいと思っています。
どなたかお知恵を拝借願えませんでしょうか。
>>736 ソフトとかも何も提示されていないから、エスパーするしかないが、
もしかしてウィンドウが存在しない物のpidを取得したいってことか?
サンプルコード類のCtrl key double tapで コピーするときにCtrl押してからcを押すまでがとろいと ;some actionが走ります。 何か方法はあるでしょうか。 そもそもCtrlキー長押しは連打になるのでしょうか?
2つのウィンドウを作って呼び出そうとしているのですが、 2つ目の画面が出ません。なぜでしょうか。 MyRadio = 1 w1:=1 Gui,%w1%:Default Gui, add, radio, vMyRadio, 何もしない Gui, add, button, default xm, OK ; xm puts it at the bottom left corner. +^b:: Gui,%w1%:Default Gui, show return ButtonOK: GuiClose: GuiEscape: Gui, submit return MyRadio1 = 0 w2:=2 Gui,2:Default Gui, add, radio, vMyRadio1, 何もしない Gui, add, button, default xm, OK1 ; xm puts it at the bottom left corner. +^v:: Gui,2:Default Gui, 2:show return ButtonOK1: Gui, 2:submit return
賑やかだがややカオス
A:: Send,{B} A:: Send,{C} でエラーを出さずに後の定義を有効にするようには出来ないものか。
割り込みというもの
>>741 その定義をすることで
何をしたいんだ?
ていうか、BとC両方を押す処理を送りたいなら
Send,BC
だけじゃね?
>>737 > ウィンドウが存在しない物
そうだと思います。
アプリケーションの通信部分を担当してるような名前です。
タスクマネージャに出てるならなんとか操作できるんじゃないかってのが事の発端でした。
今はタスクマネージャを起動してpidを目視→入力って手順で使ってもらってるんですが
そこ手順を省略できないかなぁと思いまして書き込んでみました。
リストビュー操作の方向でもうちょっと勉強してみます。
>>745 さま
/*
psapi.dllを使ってプロセス名からpidを取得するサンプルは発見できたんですが
DllCallに書き直すのに挫折しました。
流行らせるページからProcessMem.ahkというスクリプトを拝領して
先のloopスクリプトで検索することでうまくいきました。
ヒントを与えてくださった皆様ありがとうございました。
*/
hModule := DllCall("LoadLibrary", str, "psapi.dll") ;ロードする
#Include %A_ScriptDir%\ProcessMem.ahk
limits = 4000
Loop, %limits%
{
tpid := A_Index
PName := getPEName(tpid)
if (PName == "")
continue
else if PName Not contains hogehoge.exe ;プロセス名
continue
else
break
}
msgbox, % tpid = limits ? 0 : tpid
DllCall("FreeLibrary", UInt, hModule) ;開放する
return
↑解決されたようなので次の質問です コンテキストメニューが表示されたことを判断したいのですが どうすれば良いでしょうか? ひと通り「流行らせるページ」は読んできました
質問です。 直前のアクティブウィンドウのハンドルを取得することはどうすればいいですか DllCallのGetWindowでいけそうなんですが、うまくいきません よろしくお願いします。
751 :
初心者だが :2007/11/20(火) 19:44:17 ID:+H6sk/kC0
これちょっと惑わされたぜ 誤)ライブラリスクリプトは「%A_MyDocuments%\AutoHotkey\Lib\」か、AutoHotkey.exeのあるフォルダ内に格納する。 正)ライブラリスクリプトは「%A_MyDocuments%\AutoHotkey\Lib\」か、AutoHotkey.exeのあるフォルダ内の「Lib\」に格納する。 それともこれって常識なのか?
>>751 ソース本体と同じディレクトリにいれておいた方が便利だよ。
どうせたいしたライブラリもないし。
>>707 遅くなりましたがありがとうございます。
どうもidの取得・指定がうまくいってないみたいです。
別のソフトでウインドハンドルを取得して、それを指定するとうまくいったので。
いろいろ試してみようと思います。ありがとうございました。
起動してもタスクバーに表示されなくて何もできない zipとインストール版両方試したけど 前は使えてたのになんでよ
ドキュメントに作成されたやつ削除して起動繰り返してたらタスクに常駐しだした おじゃましますた
1.0.47.05
名前に「ソ系」のダメ文字の入ったファイルの属性変更をするにはどうすれば良いですか? ソЫ\噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭xx\\ 裏技で変更できたりしますか?
キーカスタマイズソフトスレで見つけました。これはAHKで実現できますか? 60 名前:名無しさん@お腹いっぱい。[] 投稿日:03/06/19(木) 02:09 ID:Yi+QkHTo XKeymacsなどを使って、 Ctrl と CapsLockをひっくり返すのではなく、 通常のCtrlはそのままで、 CapsLockをemacsバインド専用のCtrl2として、 利用できるようにはできませんか? 通常のCtrlとemacsキーバインドが重複するのはすごく不便な反面、 CapsLockキーのほうはなくなってもほとんど困ることはないので。
>>758 できるだろうけどお前のPCじゃ無理なのは間違いない。
760 :
757 :2007/11/25(日) 12:17:57 ID:neA10OGo0
ソ.txtに対して FileGetAttribは問題ないのですが FileSetAttribが利きません 誰か助けてください
>>759 AHKはCapslockはいじれないんでしたっけ?
F13を割り当ててやってみましたが、全然ダメでした。
非常駐型でF13〜F24までを割り当てられるのってあるのかな?
でも、絶対に重複してはいけないというわけでもないから、F13〜F24を使う必要もないか。
changekeyとかでCapslockに数字キーのようなコンビネーションをあまり使わないキーを割り当ててそのコンビネーションで使えばいいかな?
>>761 あっ、数字が入力されてしまうか?ダメだね。
あんまり使わない修飾キーをアサインするしかないのかな?
誰か助けてー
Capslockはレジストリで変更したほうがラクだし確実じゃね? keyswapとか併用しろよ
>>758 俺もレジストリ値書き換えが面倒で、Xkeymacsに書き換えてもらってるわけだが、
何の問題なく書き換えられたぞ(Varsion 3.19)。最新版はしらんがね(Varsion 3.43)。
>>765 いやそういう問題ではなくて
FileGetAttrib, OPV, ソ.txt
はOKで
FileSetAttrib, +R, ソ.txt
がダメなのはどうしてだろうと思って質問しました
マウスの左右のキーどちらか押されたほうの入力を監視したいのですが、 Input, InputKey, L1, {RButton}{LButton} ではだめでした。 keywaitは一文字しかだめらしいので、何かよい方法はあるでしょうか。
>766 FileGetAttrib は AHK 内部で文字列を解析していないが、FileSetAttrib は解析しているんじゃないの? と思ってみたらソース見たらやっぱりその通りで、FileGetAttrib はほぼ Win32 API にスルー、FileSetAttrib は ワイルドカード系の処理のためにパス区切りを自前で調べてる。 DllCall 使って SetFileAttributes() を直接呼び出せばいいんじゃない?
>>764 単なるCtrlじゃなくて、Ctrl2として使用できていますか?
Ctrl+HをBackspaceにアサインしたいんですけど、メモ帳
>>769 うっかり送信してしまいました。
単なるCtrlじゃなくて、Ctrl2として使用できていますか?
Ctrl+HをBackspaceにアサインしたいんですけど、メモ帳
で検索が立ち上がるし、ATOKだとHelpが出てくるしで面倒なので、Ctrl2が使いたいのですが。
>>758 の文章だとXkeymacsでは出来ないように思えるのですが。。。。
>>758 RWinとか、あんまり使いそうにないキーをCapsLockに割りあてて、
RWin & h::Send, {BS}とかすれば良いのでは?
>>768 どうもありがとうございました
自分にはソース解析などまったくできないので、本当に感謝しています
FileSetAttribは使えないことがわかったので以下の関数を登録して使うことにしました
SetFileAttributes(ByRef path,attrib=128){
DllCall("SetFileAttributes", str, path, int, attrib)
}
DllCallを使うのは初めてだったのですが何とかできました
AutoHotkeyの日本語環境で使ってはいけない(ダメ文字)コマンドの一覧があると便利だと思います
誰か作ってください
JoystickMouse.ahkを改造してアクティブウィンドウ毎にボタン設定を 切り替えるようにしたいのですが、 AutoHotKey.iniに書いたコマンドをグローバル変数に代入して、.ahk側で 参照し実行するというような事は可能でしょうか?
774 :
773 :2007/11/25(日) 19:28:23 ID:SP727yv40
書き換えたいのはボタンではなくPOVの設定です。 POV上下::スクロールをカーソルキーにしたりという感じです。 JoystickMouse.ahk内にIfWinActiveを書き連ねるしか無いのでしょうか?
基本的に一般的な使い方しか出来ないアプリだよ。 そういうマニアックなことには使えない。
Alt+`をホットキーにできないようですがこれは仕様ですか? `をIME起動に割り当てているので代わりにAlt+`に`を割り当てたいのですが。
質問なのですが、トレイアイコンのシングルクリックに、メインウィンドウを 表示する以外のコマンドを割り当てることはできないでしょうか?
>>767 現状keywaitで一つだけしかできないべ
ボタン長押しで連打をやりたいのですが、スマートなやり方が考えられず
長押し解除専用のキーを必要としてしまいます。
>>781 キー一本で長押し実現するヒントを教えてください。
Trigger=0 2:: if Trigger =0 Trigger :=1 else if Trigger =1 Trigger :=0 return 1:: sleep,500 ;sleep入れて疑似長押し? Loop { if Trigger =1 { Trigger :=0 break } else { keywait,2, t0.25 ;長押し解除キーを.25秒待つ send,繰り返しキー } } return
>>780 解除するキーを 1 up に割り当てればいいんでね?
適当だけど。
神様! どうか私にgogo.dllを使用するwav→mp3エンコードの関数をくださいませ!
gogo.exeを探し他方が早い気も酢
>>782 2回押さないと止まらないし、確実に差し込めない。
というか、1キーで長押し自体Autohotkeyで無理ですか?
>>785 希望と違う動作だったらスマン
Aをリピート
1::
KeyWait,1,U T0.5
If ErrorLevel=1
{
Loop
{
GetKeyState,State,1
If State=U
Break
Send,A
sleep,100
}
}
Return
>>784 まったくそのとおりですねw
run, gogo_8hz.exe [options] inputPCM [outputPCM]
だそうです
788 :
787 :2007/11/27(火) 00:17:22 ID:OYLJ5zKh0
さて、デコードはどうすんべ
LAME.EXEでいいんじゃ
ffmpegでもいいし
>>785 $1::send,繰り返しキー
で、長押ししてれば普通は勝手にキーリピートしてくれないか?
特に制御とかなくてもイベント発生したような。
1 up:: を入れてしまうと解除までノーアクションになるかも知れんが。
リピートさせたいキーは特殊なキーなの?
>>778 亀レスだが、キーラベルをエスケープすると怒られるよ。
Offece2007 ってWinMenuSelectItemの 特殊な仕様のメニューバーに含まれる?
FirefoxもWinMenuSelectItemが運ともスントも言わない。糞だ。
はいはい。そうだね。
767です。 お願いですから、誰か教えてくださいぃぃぃ・・・
元々キー入力を監視するソフトじゃないか 確かに何がしたいのかわからん ~LButton:: ~RButton:: SoundBeep Return
英語版Windows XP Pro SP2上でAHKを使用しています。 AHKから英語版秀丸エディタ(Maruo Editor)を同定したいと思い、 以下のようなスクリプトを書きました。 SetTitleMatchMode, 2 #IfWinActive, ahk_class Hidemaru32Class 1:: WinGetTitle, title, A <-- ここが質問 MsgBox %title% Return WinGetTitleでアクティブウィンドウを指定すると期待通りにタイトル文字列が 取得できるのですが、タイトル取得モードを中間一致にしているにもかかわらず、 タイトル中の文字列を指定した場合にうまく動作しません。 WinGetTitle, title, Maruo <-- これはうまくいかない 何か理解不足があるのだと思うのですが、どなたか教えていただけませんか。
大文字と小文字は区別されるよ
英語版まるおは使ったことないのでどういうタイトルがついてるのかよくわからん まるおのタイトルキャプション見本をあげてくれ
802 :
799 :2007/11/30(金) 01:21:26 ID:kqe4GcaD0
>>801 キャプションは以下のとおりです。
(untitled) - Maruo
C:\AUTOEXEC.BAT - Maruo <-- これだけハイフンのまえにスペース2つ
C:\WINDOWS\win.ini (updated) - Maruo
803 :
799 :2007/11/30(金) 01:51:52 ID:kqe4GcaD0
本来の問題は解決していないのですが、
>>799 のスクリプトは単独ならば正常に動作しました。
何か他のスクリプトとコンフリクトしているようなので、もう少し調べてみます。
SetTitleMatchModeをちゃんと「実行」しろ
Gui,+Resize Gui,Add,ListView,g_List grid -Hdr -Multi NoSort r32 w512 -Wrap,text _List: Loop,Read,%_ReadText% { LV_Add("",A_LoopReadLine) } LV_ModifyCol() Gui,Show Return ExitApp ウィンドウ表示後にウィンドウを大きくしても、リストの外側部分が広くなるだけで リスト部分はリサイズされないんだけど、追随させるにはどうすれば良いのでせう。
w512で固定してるんだから、Guiがリサイズされたときにそこを変更するように書かないとだめなのでは。
>>797 右か左クリックが押されるのを待ちたいのです。
Loopで左右両方のGetKeyStateを監視するとか
したいことをはっきり書かなきゃ分からんな。
「待ちたい」のはなぜ?
1) 前処理 → クリックイベント待ち→後処理 の様に連続処理の間に待ち時間がほしい
2) クリックイベントで何らかの処理を走らせたい
1) なら途中に無限ループ(適宜スリープを入れる)タイプ
>>808 の様にする
2) ならクリックイベントの処理を書く
>>798 の様にする
>806 w512を消しても駄目だし、GuiSize:で別の値設定しても駄目なんすよね。 ウィンドウサイズ可変なんてよくありそうな処理だし、 何か方法はあるんだろうと、色々やってみてはいるんだけど。
GuiSize: でいいんじゃないの
初心者質問ですみません。uwscで書いたスクリプトをAutoHotkeyに移行したく、 流行らせるページのリファレンスを読んだのですが、 ファイルの特定の行の文字列を置換した文字で上書き、たとえばuwscで fid = Fopen(InputVar, F_read or F_write1) Fput(fid, ChgMoj(Fget(fid, line), "hoge","hogehoge"), line) Fclose(fid) のような事を行える方法が見つかりません。 Loop, Read, hoge.txt, hoge.txt { StringReplace, NewStr, A_LoopReadLine, hoge, hogehoge, All IfInString, A_LoopReadLine, hoge, FileAppend, %NewStr%`n } return これだと、ファイルの末尾に置換した文字列(行)が書き込まれてしまいます。 NewStrに取得した置換後の文字列を、その行に上書きするには、AutoHotkeyでは どのように書いたら良いでしょうか。
Loop, READ, hoge.txt, temp.txt とかやって、別ファイルにいったん書き出し、 新しいファイルを元の名前に上書きリネームするとかかな UWSCも内部的には同じこと支店じゃないかとも思うんだけど
fputs使ってるんじゃね。
>>810 消したってそりゃだめだってw
一度設定した値を変えるのはGuicontrolで。
GuiSize:
width:=A_GuiWidth-10
height:=A_GuiHeight-10
GuiControl,Move,list,w%width% h%height%
Return
どちらかでSpace + 文字キーでShiftを送るスクリプトが公開されていますが(SandS.ahk)、 もう少しシンプルなスクリプトはないでしょうか。 当方の環境ではスクリプト実行に少し時間がかかっているようで、 たまにキー入力についてきてくれないことがあるのです。 そこで自分で多少カスタマイズしようと思ったのですが、 複雑で理解できなかったため、もう少しやさしい教材があればと思ったためです。
そのスクリプト見てないし、 どんだけしょぼいスペックなのか分からないし 超高速タイピング技術の持ち主かもしれない で、sleepはどうなっている
menu を表示したときにそれを ESC で Cansel できないのが不便なのですが。 キーでメニューを消せるのでしょうか?
通常は出来る そのスクリプト内でESCに何か割り当ててんじゃないの その場合はMenuの前にHOtkeyをOffにしてその後でONにすりゃいい
822 :
820 :2007/12/02(日) 18:16:08 ID:qQ8bqVi50
>816 できた。ありがとう。
824 :
名無しさん@お腹いっぱい。 :2007/12/04(火) 09:48:59 ID:J9CGIaP70
少し教えてください。 上がよくて、下がダメなのはなぜでしょう? If GetKeyState("Space", "P") = 0 IfEqual, GetKeyState("Space", "P"), 0
あるアプリを起動してマウスカーソルの位置に表示したいのですが、 基本的にはうまくいくのですが、sleipnirやx-finderといういくつかのウィンドウ上では ポジションがずれます。 何か考慮抜けがあるのでしょうか。 #x:: MouseGetPos, xpos, ypos Run ..\CopyDate.exe WinWaitActive, ahk_class TForm1 WinMove, ahk_class TForm1,, xpos, ypos return
AutoHotkey 1.0.47.05で +2::@ とだけ記述した設定ファイルでShift+2を押下すると`が入力され、 +2::Send, {@} の場合は@が入力されます。 これはShift+2の押下でShift+@にremapされるからのようなのですが、 このようなケースではSendを使う以外に解決方法はないのでしょうか。 また、remapと一文字のみ送るSend関数とでは、厳密には何が違うのでしょうか。
>>825 CoordMode,Mouse,Screenではどうかな?
>>824 IfEqual の一つ目の引数は variable name じゃないとだめだから。
IfEqual, GetKeyState("Space", "P"), 0 と書いても、GetKeyState("Space", "P") は実行されない。
>>828 なるほど、そういうことでしたか。
理解しました。
ありがとうございました。
>>827 なるほど。できました。
ありがとうございます。
なまずさんの「MBS_Stringright」使った後に文字列の連結ができなくなるのは何ででしょうか?
>>720 ほかのアプリの現在開いているファイル名のアドレスはどうやって調べるのでしょうか?
ねこまんまとかいじってみたんですがさっぱりでして・・・
タイトルにフルパスを表示する設定にしてそっから引っ張る
どなたか下記質問についてお答えいただけると幸いです。 ヘルプ中、Variant (Duplicate) Hotkeysの項目を見ると以下のようにあります。 If more than one variant is eligible to fire, only the one closest to the top of the script will fire. The exception to this is the global variant (the one with no #IfWin criteria): It always has the lowest precedence; therefore, it will fire only if no other variant is eligible (this exception does not apply to hotstrings). このように、#IfWinを使う時はグローバルホットキーの優先度は一番下になるとあります。 行いたい事は、この制限を越えて、ある特定のスクリプト内で指定されたホットキーの 優先度を#IfWin内の同一ホットキーのものよりも上げたいのです。 これは可能でしょうか。また可能な場合、どのような処理が必要なのでしょうか。 具体的には、現在ThumbRemap.ahkというThumbSenseのようなスクリプト (このスレッドの上の方でも話題に出ています)を使用しているのですが、 このスクリプトではタッチパッドのオンオフに合わせて特定のグローバルホットキーのオンオフを切り換えています。 そこでタッチパッドに触れている間はこちらのホットキーを最優先させたいのですが、 上記仕様により#IfWin内のホットキーが優先されてしまい、個人的に不便しています。 これをコントロールできたらと思い質問させていただきました。 宜しくお願いいたします。
835 :
834 :2007/12/10(月) 01:45:24 ID:j5uIXyco0
現在までに試したことは以下の通りですが、どちらも上手くいっていません。 - Hotkey,....., on, p(数字)でホットキーの優先度を上げる - Thread, priority, highでスクリプトの優先度を上げる
>>832 逆アセンブルしたソースとデバッガで追いかけれ。
ねこまんまは一度使っただけだけど、役に立たないと思う。
TaskListっていう、Alt-Tab拡張のアプリがあります。 こいつぜんぜんホットキーが利かないのですが、そんなアプリあるのでしょうか? ahk_class TaskList
DetectHiddenWindows ON
IfInStringやIfWinactiveを普通のIf文と絡めることは出来ないんでしょうか。 If a=1 and Ifinstring,str,hoge みたいな感じで もしくはstrの中にhoge1またはhoge2が含まれhoge3を含まない、みたいな分岐は可能でしょうか。 If文羅列や正規表現で出来るのはわかるのですが。
関数化すればいいんじゃないかな
コンテキストメニューの選択をホイールで行うのってどうやるの?
PostMassageでウィンドウメッセージ送ればよい ホイールUP/DOWNで移動→ WM_KEYUP / WM_KEYDOWN MClickで決定 → Send,{Enter} ただし、実行中のAHKのMenuは操作できないけどね。
Minimizeを使ってアクティブウィンドウ以外を最小化する コマンドはどう書いたらいいんでしょうか?
WinGetでList取得してループで回す。
アクティブウィンドウ記憶させてWIn+D送ってそいつだけ復帰さす
その横着はお勧めできないな。
アクティブウィンドウ記憶させてWIn+M送ってそいつだけ復帰さす
kbdaccが効かなくなってしまうんだけど、対処法ある?
hoge1 = 10 hoge2 = 15 hoge3 = 8 hoge4 = 30 hoge5 = 47 .... これらを数字の大きい順に並べ替える方法ってありますか? もはやAutoHotkeyの領分じゃないかもしれないけど。
あったよね sort
ゆとりはsortも自分で実装出来ないのですか?
タイトルバー右クリックでシェードできるソフトを入れて、すべてシェードさせるスクリプトを作ったのですがうまくいきません。 教えてください。 #p:: WinGet, id, list, , , Program Manager Loop, %id% { StringTrimRight, this_id, id%a_index%, 0 WinGetTitle, id_name, ahk_id %this_id% WinGet, title1, id, %id_name% WinGetTitle, this_title, ahk_id %this_id% If (title1 != "") { ControlClick, x50 y5,ahk_id %this_id%, ,RIGHT ;←これだとダメ ; WinActivate, ahk_id %this_id% ; WinWaitActive, ahk_id %this_id% ; MouseClick, RIGHT, 50, 20 ;←これだとOK } } return
そりゃそうだ
タイトルバーにクリックイベントを渡したいときは、アクティブにしないといけないのでしょうか? 裏に隠れているウィンドウのタイトルに右クリックイベントを渡すことはできないのでしょうか?
ソートは自分で実装するもんじゃねえ
そーとも限らん
ソートの実装は学者の領域だ
そーとは知らなかった
そーとーにつまらんな
お前等そこにソートしろ。そしてまとめて死ね。
もうこの話題はそっとしとけ。
「ガミラスに下品な男は不用だ」
素人くさい質問で失礼します。 いまHotstringを使いはじめたのですが、ちょっと分らないことが出てきました。 下記はミススペリング訂正ですが、スペースが認識されません。 ::abouta::about a "about a"と入力すると"aabout a"と帰ってきてしまいます。 正確にスペースを認識させるにはどうしたらよいのでしょうか? 本体のスクリプトで、"#HotString *"が サブのスクリプトで"#HotString B0"が指定されています。
英語論文をPDFで読んでて、わからない単語をいちいちPDICにコピペするのが めんどくさい人むけのスクリプト。 send {LButton} send {LButton} Send,^c ClipWait WinGet, PD,, ahk_class PDICW ControlSend, edit1, {ESC}, ahk_id %PD% ControlSend, edit1 , ^v, ahk_id %PD%
Ctrl+EでIEのグーグルツールバー検索窓にフォーカスを移すにはどうすればいいですか。
>>864 これにヒントを得て同じようなスクリプトを書いています。
そこで質問があるのですが、AHKで選択範囲の文字列を取得するにはどうしたらよいでしょうか。
>>864 のようにクリップボードを使用するのが一番簡単なのですが(現在はこのようにしています)、
クリップボード履歴ソフトも併用しており、できれば調べた単語を履歴に残したくないのです。
一時的にクリボソフトをKILLして処理が終わったら再起動(最終手段)
いきなり最終手段かよw
クリップボード履歴ソフトをAHKでつくる
PDICってクリップボードの内容で辞書引いてくれないのか。 EbViewとかだとできるのに。
あれ、クイックポップアップ検索機能って、最近のPDICにはないの? もう10年くらいバージョンアップしてないからよくわからんけど。
↓あるじゃん
http://homepage3.nifty.com/TaN/about-pdic.html ・ポップアップ検索という、マウスカーソルを移動するだけでマウスの下の
単語を自動的に検索したり、ほかのアプリケーションでクリップボードへ
英単語をコピーするだけでその英単語の日本語訳をポップアップ表示
により即座に知ることができます。
・どこポップ!(フリーソフト)という別のソフトを使用すれば、PDIC以外の
ウィンドウ上でもマウスクリックで単語・熟語の意味が分かります
>>872 どこポップ!は残念ながらpdfには使えない。
なので古い論文でhtmlが無い奴だと困るのだ。
でもポップアップ検索にテキストコピペすればおっけーなんだよね。
まあ、pdfを直接読みたい人向けと言うことで。
んで需要無いだろうけど
>>864 のバージョンアップ版。
単語をマウスの真ん中ボタンクリックで検索。
#IfWinActive ahk_class AcrobatSDIWindow
MButton::
IfWinNotExist,ahk_class PDICW
{
Run, C:\Program Files\Personal Dictionary\PDICW32.EXE
WinWait, ahk_class PDICW
}
send {LButton}
send {LButton}
Send,^c
ClipWait
WinGet, PD,, ahk_class PDICW
ControlSend, edit1, {ESC}, ahk_id %PD%
ControlSend, edit1 , ^v, ahk_id %PD%
return
とか、書いてたら、クリップボードの内容自動的にポップアップしてくれるじゃん。 あららー。
マウスカーソルを動かしながら特定のキーを押したら、 特定のキーコードを送信するっていうことはできますか?
そりゃできますよ。
クレクレ
>>877 すいません、探したらありました。m(__)m
ホットキーで呼ぶルーチン内でそのキーを送信するにはどうしたらいいですかね?
例えばこのようなものですが、これだと再帰的になってしまいます。
Hotkey, s, Exec
Exec:
hogehoge
Send, s
Hotkey, ~s, Exec
とすれば、キーも送信されるのですが、押されたキー ( ここでは s ) を送信するかどうかを
Exec サブルーチン内で決めたいのです。
sを送る前にExecのHotkeyをOffにしてもだめ?
Hotkey, $s, Execで大丈夫じゃね?もしくは#UseHook
WinHideで非表示にされているかを判断する関数がないのですが、 他のやり方で判断することはできるでしょうか。
>>880 Off にすることで再帰呼び出しはしなくなったのですが、
On にしても再度ホットキーが有効にならなかったので、
>>881 Hotkey, $s, Exec の方で解決しました。
ありがとうございました。
窓の杜 - 【今日のお気に入り】マウスカーソルを1つ追加して切り替え「だぶるまうす」
http://www.forest.impress.co.jp/article/2006/05/11/okiniiri.html がある面で気に入って、ある面で非常に使いにくくて困っています。
Mボタンでしか二番目のポインタに切り替えられないのが致命的です。
気に入っているのは、二番目のポインタのアイコンを表示させたままにできることです。
AutohotkeyのMouseGetPosを利用すれば、いくらでもポインタの座標を記憶できて、
何個でも予備のポインタを作れるのは良いのですが、全然グラフィカルではありません。
「だぶるまうす」みたいに二番目のポインタのアイコンみたいなのを表示させる方法は
ないでしょうか?
背景透過のGUIってできったっけかな。
>>885 できるよ
>>1 さんとこのSystemMonitor.zipが参考になると思う
887 :
884 :2007/12/21(金) 20:12:59 ID:d9IwqCOZ0
今のところ記憶させた座標位置を表示/非表示させるのにTooltipを使っているのですが、 やっぱりダサイです。好きな画像を表示/非表示させる関数か何かありませんか? PointerPosiShow: { If ShowToggle=1 { Tooltip,,,,1 Tooltip,,,,2 Tooltip,,,,3 ShowToggle :=0 return } else { Tooltip,%Xpos1%:%Ypos1% - 1st,Xpos1,Ypos1,1 Tooltip,%Xpos2%:%Ypos2% - 2nd,Xpos2,Ypos2,2 Tooltip,%Xpos3%:%Ypos3% - 3rd,Xpos3,Ypos3,3 ShowToggle :=1 } } return
面倒くさかったら ツールチップで「1」とか「2」とか出しておくのもいいんじゃないかと思った
おっと、実践済みw Gui, Pictureで頑張るしかないんじゃない タイトルタスクバーなしで背景透過などなど
890 :
884 :2007/12/21(金) 23:09:40 ID:d9IwqCOZ0
Gui,Add,Pictureの用例が少ないですね。-Captionでタイトルバーは外せました。 Gui,-Caption Gui, Margin, 0, 0 Gui,Add,Picture,, C:\WINDOWS\Cursors\arrow_r.cur Gui,show,x%Xpos1% y%Ypos1%, ; Sleep,1500 ; GUI, Destroy return しかし、余白が灰色になってしまいます。 AltSubmit BackgroundTransを足すと今度は描画がおかしくなっているし。 これならGui,Add,Textのほうがマシかも。
;とりあえずできたかなあ #Persistent #SingleInstance, FORCE CoordMode, Mouse, Screen Stock = 0 #+M:: { If Stock = 1 { MouseMove, %X%, %Y% Stock = 0 GUI, Destroy ;ToolTip Return } MouseGetPos, X, Y X1 := X - 25 Y1 := Y - 10 Gui,-Caption +AlwaysOnTop -Border +ToolWindow Gui, Color , White, White Gui, Margin, 0, 0 Gui,Add,Picture,, C:\WINDOWS\Cursors\3dgarro.cur Gui,show,x%X1% y%Y1% NA, WinSet, TransColor ,White, ahk_class AutoHotkeyGUI Stock = 1 Return } +ESC:: { ExitApp }
892 :
884 :2007/12/22(土) 21:34:12 ID:K8HZffCa0
>>891 完璧です!背景色も隠れてくれました!!
流行らせるページの、マウスジェスチャ2の設定の仕方がようわからん。
894 :
名無しさん@お腹いっぱい。 :2007/12/24(月) 23:49:05 ID:jftPpHl70
AHK 1.0.47.05 をWindowsXP上で使用しています。 あるホットキーを定義したとして、その直前のキーストロークを取得する方法はありますか? 例えば、"1::"の実行する内容を、直前のキーがアルファベットの場合と数字の場合で変える、 というようなことを行いたいです。
>>895 レスありがとうございます。
現在Inputコマンドを使用しているのですが、すこし問題があったのです。
このコマンド実行後からのキー入力は変数に格納されるのですが、
ホットキーラベル前のものはわからないのです。
しかしAHKでは(キーフックがされていれば)キー履歴がのこっていますので、
直前のキーバッファを読み込む方法があればと思って質問しました。
>>896 ホットキーを押す押さないにかかわらず常時Inputをまわしておけばいいんじゃね?
もっとスマートにやれるんかな。
loop
{
Input,Key,V L1
KeyHistory=%KeyHistory%%Key%
}
F1::Msgbox,%KeyHistory%
Esc::ExitApp
>>897 ありがとうございます。
これはちょっとしたアイディアですね。
いちど試してみます。
お馬鹿質問なら申し訳ないのですが、MouseGesture.ahkで 条件定義にClassNNを組み込めるようにならないでしょうか? FirefoxのClassNN:MozillaWindowClass1 で使いたいので。 MouseGetPos,MG_X,MG_Y,MG_HWND,MG_HCTL,3 ;362行目。座標とハンドルを所得している の前後に MouseGetPos,,,,MG_ClassNN ;マウス直下のClassNNをMG_ClassNNに格納 なんかを書き加えたとしても、そこからが大変でどうやって「条件定義」に 組み入れていいのかわかりません。 (しっかし、MouseGesture.ahkは良くできているな。英訳すればStrokeItなんかよりよっぽど売れそう)
質問です #InstallMouseHook GetKeyState, m, XButton1 If m = D Msgbox, X1 Down ExitApp これで通常はこのスクリプトを起動時にマウスの拡張1ボタンを押下してた場合 然るべきメッセージが出ると思うのですが… 今話題の流行らせるページのマウスジェスチャ2を実行中の場合は 上のこのスクリプトが機能しません どうすれば外部の独立したスクリプトが、拡張1ボタンの状態を知ることができますか?
自己解決しました。カスタム定義で値を
MG_Gesture="RB_" && MG_CClass="MozillaWindowClass"
にして、Firefox全体を無効とするところを、
>>899 でClassNNをMG_ClassNNに格納するように書き加えた上で
"RB_" && MG_ClassNN="MozillaWindowClass8"
にして実現しました。
これでメニューバー〜タブバーのところでMouseGesture.ahkの
ジェスチャーを適用させることができました。
>>901 =899です。
MozillaWindowClass1は固定ですが、タブや他のウィンドウで番号が色々生成される
みたいなんで、面倒ですが出る番号を全部登録しなおしました。
スクロールバーの現在位置を記憶と記録したところまでスクロール(要は記録位置に戻す)ことってできます?
マウスとキーボード入力を記憶するマクロを自分で書いてみたいんですが 言語は何を使って書けばいいですか?どなたかご教授願います。
>>904 ahkでどうぞ。コメントは日本語でおk
>>905 遅くなってすいません。レスありがとうございました
オリジナルスクリプト言語を作りたいって話じゃなかったのか?
マウスとキーボードの操作が記録できりゃいいのならUWSCは?
909 :
名無しさん@お腹いっぱい。 :2008/01/09(水) 00:57:50 ID:c00jkwY40
>>903 スクロールバーのつまみの位置取得。
DllCall()とか試してみたけどスクリプトの書き方がよくわからなかったので
自分は以下のような原始的な手法で取得してる。
縦スクロールバーの上にくっついてる▲ボタンの部分だけをbmp画像で保存。
ImageSearchで検索。検索範囲はアクティブウィンドの右端、
スクロールバーが存在し得る範囲のみ。
イメージが見つかったらそこの座標からx方向に+4、y方向に+14した座標を
基点につまみの色をPixelSearch。
検索範囲の幅は1ピクセルで下に向かってサーチ。
OutputVarの座標につまみがあるので
あとは煮るなり焼くなりMouseMoveなり。
ちなみにアクティブウィンドウの右端にある
標準的な縦スクロールバーでバーサイズが13の場合ね。
横スクロールバーとかテキストエリアのスクロールバーとかは
自分で試行錯誤ってくれ
>>910 ポジションが取れないソフトのほうが多いです。
sleipnirはダメ
JaneはOK
スクロールセットするとき、
DllCall("SetScrollPos", "UInt", ChildHWND, "Int", 1, "Int", high, "BOOL", 1)
すると、バーの位置は戻るけど、ウィンドウエリアに変化がありません。なぜ?
GuiのListViewでファイル一覧を造り、そのファイルをドラッグ&ドロップして移動したりするものを作ろう思いました。 リストビューはドラッグ&ドロップの機能は備えていないので、自前で作ろうかと思い、 ・マウスの左ボタンが押されたときリストの内容を取得 ・あげられたときにマウスの下のコントロールを取得してそこに放り込む という動作を考えました。しかし、 ~LButton up:: この命令を入れると、リストビューで左クリックが頻繁に押しっぱなしになって使い物になりません。 何かいい方法はないものでしょうか。
それだけの情報では分かりません 原因がそこにあるかも怪しそうです
失礼しました。原因と思われる部分だけ抜き出してシンプルなahkにしたけれど同じでした。 Gui,add,listview Loop,10{ Lv_add() } Gui,show return ~LButton up::return 最後一行を入れなければ、左クリックは普通の挙動をします。入れるとおかしくなります
キースクリプト書けるソフト探してるですが このソフトは仮想キーしか送れないんでしょうか
>>914 リストヴューを持ったAHKのGUIに対する#IfWinActiveを設定して
その中でLButtonがUPするのを待ったらどうでしょう?
というか、その書き方だとUPが常に無効になるので
押しっぱなしになるのは当然では
>>915 ドライバレベルのキーコードも送れますよ。
がんばれば。
>>915 "このソフトは仮想キーコードしか"送りません。
"がんばれば"vbsでもPerlでもドライバレベルのキーコードを送れるんでしょうね。
無変換キーを押しながらHキーが押された場合の処理にシフトキーの状態を反映させたいのですが、 以下のコードではシフトキー押したが判別出来ません。 どうしたらいいですか? よろしくお願いします。 vk1Dsc07B & h:: { if (GetKeyState(Shift,"P")) { Send,^+{Left} } else { Send,^{Left} } return } 「無変換キー以外を修飾キーにしなよ」って言うのはなしでお願いします…
見辛かったです。ごめんなさい。 vk1Dsc07B & h:: { if (GetKeyState(Shift,"P")) { Send,^+{Left} } else { Send,^{Left} } return }
お風呂入ってたら気づいた… お騒がせしました
922 :
名無しさん@お腹いっぱい。 :2008/01/12(土) 16:31:54 ID:PRp4XIbc0
Gui,Add,Editで作ったテキストボックスに2バイト文字を入力すると 入力が反映されないのは仕様ですか?
>>922 以前同じ症状で悩んだ。日本語入力はできるんだが、確定しないと表示されない。
MSのIMEからATOKに乗り換えた際になぜか改善された。何が原因なんだろ。
複数Guiある場合、GuiEscapeやGuiCloseをまとめられないのでしょうか。 GuiEscape: 2GuiEscape: 3GuiEscape: みたいに列挙するしかありませんか?
Gui,+LabelName
927 :
名無しさん@お腹いっぱい。 :2008/01/15(火) 23:12:45 ID:DStLPOSc0
質問です。 RButton:: Menu, M1, Add, item1, label1 Menu, M1, show return label1: return 右ボタンを押すと メニュー[item1] が出ます。 で、その[item1]を消さないまま右ボタンを押すと コンテキストメニューが出てしまいます。 場合によっては[item1]は表示されたままになってしまいます。 コンテキストメニューが出ないようにするにはどうすればいいのでしょう。
選択範囲を指定している状態で発動すると ^CしてGoogleで検索するスクリプトキボンヌ
>>927 トグルにしたらどうすか?
$RButton::
keywait,RButton
if(Toggle<>null)
{
Toggle = null
mousegetpos, X, Y
Y+=1
Menu, M1, Add, item1, label1
Menu, M1, Show, %X%, %Y%
return
label1:
return
}
else
{
Toggle = 1
send,{RButton}
return
}
931 :
930 :2008/01/16(水) 15:25:02 ID:0g1/Jpzr0
ほー、AHKでS-JISエンコしてるんだな これUTFやEUCでも出来るんかな
クリップボードの内容をUTFやらにSJISやらにエンコする命令があったはず。 詳細忘れたので調べてくれ。
934 :
972 :2008/01/16(水) 23:08:19 ID:918cbrqn0
>>929 ありがとうございます。トグルを生かす!方向でいろいろいじくってるのですが・・・
もっとうまいやりかたないでしょうか。
;;; エキスプローラ、デスクトップなどで自前の右クリックメニューを出す
#IfWinActive, ahk_class ExploreWClass
$RButton:: Goto, mymenu
#IfWinActive, ahk_class CabinetWClass
$RButton:: Goto, mymenu
#IfWinActive, ahk_class Progman
$RButton::Goto, mymenu
#IfWinActive
mymenu:
Send,{LButton}
Clipboard =
Send,^c
ClipWait,0.1
if Clipboard
{
Menu, M1, Add, &Notepad.exe, label_notepad
Menu, M1, show
}
else
{
KeyWait, RButton
Send,{RButton}
}
return
label_notepad:
Run,notepad.exe "%Clipboard%"
return
935 :
929 :2008/01/17(木) 16:21:18 ID:Pf7W0S5S0
>>934 さっきのトグルうんぬんってやつなし
もっと簡単にできたわ
$RButton::
keywait,RButton
ifwinactive,ahk_class CabinetWClass
Goto, mymenu
ifwinactive,ahk_class Progman
Goto, mymenu
send,{RButton}
return
mymenu:
;mousegetpos, x, y
;x+=1
Menu, M1, Add, item1, label1
;Menu, M1, Show, %x%, %y%
Menu, M1, Show
return
label1:
return
AHKのメニューからマウスカーソルをずらして右クリックすれば
標準のコンテキストメニューが出る
;マウス動かさないで右をカチカチ押して
;標準コンテキストとAHKのメニューを交互表示させたいなら
;AHKメニューの出る位置をマウスのxかy座標から+1ずらす
936 :
934 :2008/01/17(木) 22:12:38 ID:PSZTQPCi0
>>935 実は、すみません。
結局右クリックでメニューを出すのはあきらめてしまいました。
標準のコンテキストメニューは時々かなりもたついてつらかったのです。
で、結局 CapsLock に割り当てていこうと思ってます。
いろいろありがとうございました。
質問させていただきます。 #IfWinActiveにてウインドウタイトルを指定する場合、 「タイトル名A」ではなく「 タイトル名A 」のように前後に半角スペースを 入れたいのですが、どのように書けばいいのですか? また、SetTitleMatchModeにてMode1と2と3を同一スクリプト内で 使い分けたいのですが、最初に書いたModeに統一されてしまいます。 どのようにする必要がありますか? よろしくおねがいします。
%A_Space% #IfWinActive,でおおまかにひらって、 そこからはWinGetTitleでふりわ桁らどうですか
流行らせるページの BBS に書き込めなかったのでこちらに。 マウスジェスチャ2の初回起動ではまりました。 2007/12/07 版の zip ファイルを展開して MouseGesture.ahk を実行すると、 Disable 条件のない空の設定画面が現れます。 そのまま Disable 条件を作成せずに OK ボタンを押してしまうと MG_IsDisable() が定義されず、MouseGesture.ahk の実行がエラーになります。 初回起動前に同梱の MG_Config.ahk を編集し、6行目の %A_ScriptDir%MouseGesture.ini.sample を %A_ScriptDir%\MouseGesture.ini.sample に変えておくと問題ないようです。
質問です AHKファイルに送るコマンドライン引数がいくつになるか分からないときに それらをLoopを使って処理する方法ってありませんか?
あるよ 「%0%」には引数の数が格納されるからそれを回せ。
できました A_Indexを展開してそのまま変数名として使えるのか… すごいのかすごくないのかよくわかんない言語ですね
単に不定数引数連結ってのならこんなのもあるよ GetArgs() { args := DllCall("GetCommandLine", str) StringGetPos, pos, args, %A_ScriptName% StringLen, length, A_ScriptName count := pos + length + 1 StringTrimLeft, args, args, count return args } args := GetArgs() 俺が作ったんじゃないけど
944 :
名無しさん@お腹いっぱい。 :2008/01/20(日) 12:36:10 ID:qzNWCS9z0
ちょいと質問 コンビネーションキーを使用して、 半角/全角とOを押したときの動作。 最初は正常に動くんだけど、 起動以降はOキーを押下しただけでプログラムが起動してしまう。 これって仕様ですか? sc029 & O::Run,notepad.exe ちなみにP & Oだと正常動作。 !Oでも正常動作。 他のプログラムで半角/全角キー、Oキーのの割り当て等はしていない。 OSはVistaUltimateの64BitなのでOS依存なのか気になります。 キーボードはHHKBLite2の日本語配列です。
×起動以降 ○次のキー押下以降 です。
度々の追加カキコすみません 無変換(sc07B)&Oも正常動作でした。 うーむ。
半角全角は二つのキーコードを持ってるらしく それがトグルになって現れるような気がする だもんで、漏れはCtrl+半全を ^vkF4sc029:: ^vkF3sc029:: これを両方かいとくことで対処してる ただコンビネーションで押下が残るという感じだともう一工夫いるかもね
Autohotkeyで、「IMEが漢字候補を出しているかどうか」を調べる方法はありますでしょうか。 たとえば、「あか」と入力して赤、垢と漢字いう一覧から文字を選んでいる間は、という条件付けがしたいんです。
なまずさんとこにIME関連の関数があったと思ったけど それでいけんかな。
入力中か候補選択中かの区別はできなそうですが、キャレットを見ることで希望の物を作るには足りそうです。 なまずさんのをスクリプトを拝借していじってみようと思います。 ありがとうございました。
フルキーボーのほかにテンキーを使っています。 キーボードには00のキーがなく、テンキーにはあります。 この場合、テンキーの00キーを他のキーに割り当てることはできますか?
独立したキーコードかえしてるなら割り当てられます。
今、AHKを流行らせる会のページを見ましたが プログラム&PC初心者には難解すぎです・・・ テンキーの00をTabキーに置き換えたいだけなんですが どうにか簡単にできる方法ないですかね。 色々、調べるつもりはあるんですがなにを調べればいいのかも分かりません。 ヒントだけでもいいので教えいただけないですか?
プログラム&PC初心者で無くなってからどうぞ
どこまでレベルが低いのかわからないので 全部教えてというのは無理があるよ。 数学教えるにも小学生なみなのか高校生なみなのかで全然違うし。 自分でできるとこまでやってみて どうしてもわからないからここを教えてというならいいけど。
大体キー置き換えたいだけならレジストリ書き換えるタイプでいいじゃない。 ヘルプ読んでもわからないなら諦めた方がいいよ。
テンキーの00って0を2回送ってるだけな気がする
AHKは自分には敷居が高かったので 他のソフトX Button Makerを使って00をTabに 置き換えてみましたけどダメでした。 結果、0を一つ入力してその後右に移動しました。 結果として、O+Tabに代わっただけでした。 結局無理っぽいですね。
>>959 ここは関係ないソフトの日記を書くスレじゃない
お前バカでしょ?
っていうかバカだから。
>>958 で書かれてる内容が間違いじゃないっていいたかっただけだから。
結局、どのソフトでもキーコードが一緒だから無理ってこと。
そこまで説明しないと分からないの?
ばぁ〜かwww
なんでそこで無理って結論になるのかわからん。 つか、自分の頭が足りないからってくだらん煽りしなくていいよ。恥の上塗り。
>>961 おまえみたいな真性の馬鹿、つまり気違いは死ね。
キーコード一緒でもキーアップとかの時間記録して差を計算すればほぼ正確に00押されたこと分かるだろ。
>>960 がいってるようにおまえの日記を書く場所じゃないからさっさと死ね。
Hotstringで逝けそうな気がしないでもない
解決しないまでも付き合ってくれた人が居たのにキレ始めてワロタw
真の馬鹿と言うのは知識が無さ過ぎて周りが馬鹿に見えるから始末に終えない
言われて煽るしかなかったんだろう。鼠が猫を噛むとやらだ
AHK自体は簡単だと思うけどな。 ・スクリプトファイルの書式 ・EXEファイル化の方法 ・キーリスト ・コンビネーションキー ・既に起動している場合は、そのプロセスをアクティブにする ここのリファレンスが”参照しにくい”だけで。 この手のOS、アプリのリファレンスが参照しにくいのは 海外も同じなのかな。
書式なんてiniと同程度。 EXEファイル化とかいってもメインウィンドウにメニューが数個しかないんだから迷うほどでもない。 キーだってわざわざ調べる方法まで用意してくれてるんだからリファレンス見るまでもない。 関数も「AutoHotkeyを流行らせるページ」に分かりやすくまとまってる。 これ以上何を求めるの?
英語に抵抗ないならヘルプ読めば事足りる。 キーワードで検索も出来るし。
大上段に来たわりにカスだったなw
>>969 流行らせるページと WinMessageの解説サイトのページをchm化して、AHKのタスクトレイメニューから選択できるようにしてみ
ついでにエディタの外部ヘルプ呼出し機能にも設定しとけ。鬼便利だぞ
>>973 いや、俺にレスは要らんよw
プログラム初心者(Win初心者は論外だが)に難解ってのは
単純に手引きの見にくさだけなんじゃないの〜ってレスなので。
有志によるドキュメントに難癖つける趣旨ではないっす。
個人的にはコンパイラがGUIで動くだけでなんてサービス精神旺盛なツール!・・・と思った。
漏れはフェンリルでリファレンスフォルダスキャンしてるよ HTMはTXT化してる
AHKってコンパイラなの? スクリプトエンジンにスクリプトファイルをexeにパッキングして、実行時に展開してるのかと思った。
いや、そうだよ。
公式に厳密にのっとるとConvert-erだな。 フォーラムでの一部のやりとりとか 流行らせるページではCompileと表現している。 ので、日本ではコンパイルって表現が今のところ主流みたいね。 狭義でとるか広義でとるかの違い。 くだらない議論というか、無駄に盛り上がる議論というか。
流行らせるページはあえて公式サイトの構造に似せてるんでないの? ほぼ同じ構成なんで原文みる時もすぐ場所がわかってありがたいよ。
似せてるというか、基本は公式のページ引っ張ってきてそのままローカライズしてるみたいよ。 体裁は外部のcssで一括変更してる。
つまりパクってアフィで稼ごうって魂胆か。
この程度の流行り方では 翻訳作業に見あった金にならんよ。 しかも原稿が役に立ったのがネトランだけじゃ ほぼボランティアだろ。 多分コンビニでアルバイトした方が良いくらい。 しかも広告は鯖のが付いてるだけだし もっと広告つけてもいいというか少し気の毒。
アフィで稼ごうが何しようが、 見てる俺らにとってとてつもなく有効なだけで十分だろ。
俺ら?
また空気読めないアフィ嫌が突っかかってるのか。 いいかげんにしろ。
良くて時給10円くらいじゃね?いやマジで。 もしAHKのページが有料鯖なら悲惨だろうね 普通に赤字だろ。時間考えるとあり得んボランティア それが、アフィ扱いって 人間としてどうなのその思考回路。 まあ、俺はAHK使ってないけど。
XREAがたまに広告付き無料アカウントを募集していることを知らんゆとりがいるのか
バグってハニーと聞いて飛んできました
流行らせるページは公式から認められているのでは? 公式の日の丸をクリすると流行らせるページに飛ぶでしょ