■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理です。
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。(
ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると「〜 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による) A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」 先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」 #UseHookで全部にキーボードフックを適応する方法でも可。 Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない… A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。 Q6:ジョイスティックのリマップがうまくいきません!!助けて A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。 × Joy1::Esc ○ Joy1::Send, {Esc} Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの? A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。 Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの? A8:AutoHotkeyではできない。
Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, {w 30}
これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:
http://www6.atwiki.jp/eamat/pub/MyScript/ の「IME.ahk」を使いましょう。
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
が、バッチでかなりの回数(数万↑〜)回したりする場合以外は、体感出来るほどの差はない。
Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり
Q3:GUI作るのめんどくせ〜〜
A3:公式(
ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。
Q4:AHKってマルチスレッドじゃないの?
タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド →→→→→→……………………………………→→→→
> ★割込 ↑再開
> 割り込みスレ →→→→…………→→→→→→END
> ◆割込 ↑再開
> 更に割り込み →→→END
※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。
Q5:AHK、AHKLx86、AHKLx64の共存は出来る? A5:それぞれを違うフォルダ(ディレクトリ)にインストールすれば共存できます。 但し、インストーラーを使って最後にインストールしたAutohotkey(Normal or x86 or x64) に対してahkファイルの関連付けが行われますので、レジストリエディタ(Regedit.exe)や FileTypesMan等のツールを使って関連付を変更してください。 ahkファイルをAHK Normal、ahlファイルをAHKLx86、ah6ファイルをAHKLx64といったように 別々の拡張子に関連付けが可能です。 それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの [HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler] の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。
新スレ立て乙
11 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2012/04/03(火) 00:32:48.70 ID:0gt728Ga0 ● 分からない理由 ● 1. 過去ログを読まない。 2. 読んでても肝心な所が見えてない。 3. 検索能力が低い。 4. そもそも検索する気がない。 5. 類推という概念がない。 6. それ以前に普通に頭が悪い。 <わからない11大理由> 1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。 2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。 3.試さない …めんどくさいなどの理由で実行しない。する気もない。 4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。 5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。 6.理解力が足りない …理解力以前の問題で理解しようとしない。 7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。 8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。 9.逆切れする …自分の思うようにならないと逆切れする。 10.開き直る …自分の思うようにならないと開き直る。 11.2ちゃんねるをお客様相談室だと思っている。
12 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2012/04/03(火) 00:33:30.20 ID:0gt728Ga0 ★教えて君五大要素★ 1 読まない (文盲) 2 調べない (能なし) 3 試さない (発想力欠如のアホ) 4 理解力が足りない (馬鹿) 5 人を利用することしか頭にない (死ね) YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね / \ 【探した?】 NO → なら、ねぇよ \ NO → 死ね
WindowsXPで、アプリを最大化した時に少しでも広く画面を使いたいので タスクバーの最前面化の有効・無効を任意に設定したキーで切り替えたいんだけど 何かいい方法ありませんかね?
>>13 自分でやってみて理想通りに動作しなかったスクリプトを晒せば
誰かが修正に応じてくれるよ
もうこっち使えばいいんかね? 新スレ立った状態のときって一般的にどっちを使えばいいのか分からん
980超えたら24時間書き込みなしでdat落ちする。 それを考慮し、心配なら新スレの方でいいんじゃない?
グループ作成して、以下のキーを送信しているのですが ControlSend, , {F10},ahk_group xxxx これで送信される時とされない時があるのは何故でしょうか? 成功率は7割位です。
情報がすくない、環境も書いてない ・SendMode は何使ってる? ・グループ化した窓全部って意味なのか ・"成功"ってのは ErrorLevel で判断してるのか、それともアプリが反応したかどうかか ・成功・失敗するときの傾向は?; アプリがアクティブか? 特定アプリの場合のみ失敗するか? 一般論でいうと、窓が見つかればキーは送られているはずで、反応するかどうかはアプリ次第
>>17 低級エスパーな俺がエスパーしてみたらこうなった
setkeydelay, , 100
ControlSend, , {F10},ahk_group xxxx
setkeydelay, , -1
>>18 こんな感じのスクリプトです。正直よく理解していません助けてください。
GroupAdd window, ahk_class window1
GroupAdd window, ahk_class window2
GroupAdd window, ahk_class window3
WinWait, ahk_group window
ControlSend, ahk_parent, {F10}, ahk_group window
キーを送信するのは一つのウインドウです。
複数ウインドウには送信しません。
・Sendmodeは設定していません。
・成功のエラーレベルは理解していません。
・成功失敗の状況は同じです(同じ状況で繰り返し確認しました)
上記スクリプトにどのようなコマンドを記述すれば良いのでしょうか?
よろしくお願いします。
>>19 有難う、でも出来ませんでした。
環境書いていませんでした。 windows764ビット AutoHotkey - version 1.0.48.05 よろしくお願いします
ControlSend, ahk_parent, ~F10, ahk_group window このコマンドが正しいかは分かりませんが、自己解決したみたいです。
どんなウインドウにマウスカーソルがあっても デスクトップ上での右クリックを表示させることは可能でしょうか?
そういう限定条件があるならNO 「大抵はな」らOK
ahk_classで指定したウインドウのみ、左クリックを無効に出来ますか?
ahklで#ifのサンプル改編すれば余裕
うまく出来ません。 どなたかお知恵を拝借願います。 #IfWinExist ahk_class 1234 Lbutton::return #IfWinExist LButton:: return
#IfWinExist(ウィンドウが存在したら(存在していればアクティブでなくてもOK)) #IfWinActive(ウィンドウがアクティブなら) 下2行は何がやりたいのかわからんが多分いらん
LButton::LButton をやりたいんだろうけどその場合は上2行だけでおk
30 :
27 :2012/10/16(火) 00:29:21.76 ID:xbcFq+IJ0
有難うございます、間違えました。 ahk_classで指定したウインドウのみ、左クリックを無効にし 他のウインドウには通常の左クリックがしたいです。
ahk_classで指定したWindowのみってのはどういう状態? アクティブな時なのか、カーソルがWindow上にある時なのか 多分後者だろうけど、前者ならIfWinActiveで判別 後者ならMouseGetPosとWinGetClassで判別になるんじゃないかいね
他ソフトのウィンドウだとうまくマウス制御できるのに、sleipnir3は同じ動作ができません。 AutoHotKeyの動きを邪魔するウィンドウやソフトなどあるのでしょうか?
そんなぼやけた情報だけじゃこれしか言えんわ 知らん
MacでAHK的なことができるやつってあるかな? Macbook購入を躊躇する最も大きな原因としてWindowsでのAHKが便利すぎるのがある
>>35 スレチだからスルーしてくれてもいいけど
そこまでしてマックブックを購入するメリットってなんだ?
煽りじゃなく興味本位で
BootCampでWin入れればいいじゃないかな
>>36 ノートとしてのハードがよくできてることと
あとiOS向けアプリの開発をしたいから
まあWeb系ではMacbookでの開発が多くなってきてるってのも一応理由にある
IronAhk (.NET製、クロスプラットフォーム)
http://www.ironahk.net/ ってどんなもんか見ようと思ったがどのブラウザでもドキュメントページが表示されない
どうやってドキュメント確認したらいいんだろうか
>>41 うーむそうなのかドキュメント確認くらいはしたかった
素AHKと同じ構文なんだろうか
Hotkey表現とか#ifやらがどうなっているのかはさすがに知りたいんだがなあ
と思ったら下に * Not yet documented. って書いてあるね フォーラムとか見て確認するしかないか
ある文字から始まる値をURLに追加してそのwebページを 開こうと考えています。 (例: !12345\ と打つと、abc.jp/12345 を開く) #Hotstring EndChars \ :B0:!〜:: url := "abc.jp/" . 〜 Run, "C:\Program Files\Internet Explorer\iexplore.exe" %url% 上のような形を考えたのですが、任意の文字列である 〜の部分が取得できず悩んでいます。
45 :
441 :2012/10/20(土) 00:20:39.12 ID:x4ff1au90
本文が長すぎると言われたので分割しています。 上手いこと 〜 の部分を取得してurlにセットしたいのですが どうすれば良いでしょうか。
InputBoxに入力したものを渡した方がいいんじゃない?
先生がたに質問がございます。 ブラウザで各webサイトにログインする時に Ctrl+EでIDとパスをそれぞれクリップボードに送り、貼り付け、Enterという動作させてました。 サイトにより、tab押す回数増えたりとか細かいところは調整しつつ。 ウィンドウタイトルを取得して Yahoo!にログインの場合は^Eでこの動作、googleにログインの場合はこの動作・・・と。 普通にそれを増やしていったのですが、さっきまた新しいwebサイトに対してそのログイン動作を追加しようとしたら ^Eに対してduplicateエラー吐かれました。 同じプログラム(この場合chrome)での一つのキーアサインに対して設定数の上限てありましったっけ? 別に複雑なスクリプトでもないのでさっぱり原因がわからず・・・。
Lastpassオススメ。 クラウドが怖いならローカルで使えばいい。
>>47 自己解決です。
同じサイトへの設定を既に書いてました。。
アホな質問してすんませんでしたm(_ _)m
複雑でもないならコード書くほうがいいよ 使った実装方法が文面からは分からないがduplicateというくらいなのだから 重複がないかどうかちゃんと調べる あとパスワード管理ログイン管理はさすがにAHKでなくて別の方法取った方がいい スクリプト中にパスをそのまま書いておくのも良くないしスクリプトでは明らかに管理が面倒
53 :
45 :2012/10/20(土) 14:30:57.81 ID:x4ff1au90
>>46 ,51
数千種類あるのでInputBoxを経由させたところ
上手く実行出来ました。
ありがとうございました。
某マウスのソフトでブラウザ上の文字を選択して
それを検索にかけるone click searchてのがあるんですけど
それをctrlダブルクリックで機能するように設定したいんです
ネットで拾ってきた文を骨格にして元のクリップボードを維持しつつ
上記の機能をなそうとしたのですが、正常に動く確率がそこまで高くなくその原因を知りたいです
~Ctrl::
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 500)
{
Sleep 50 ;
Send,{Esc}
bk=%ClipboardAll%
Clipboard=
Send, ^c
ClipWait
Run,
http://www.google.com/search?q=%Clipboard% Clipboard=%bk%
}
return
2行目以外はおおよそ意味は分かるんですが、
2行目は500ms以内にクリックしないといけない、くらいにしか理解してない程度です
今回はとりあえず正常に動くことのみ気にしてるので推敲お願いします
その前に、自分的にはどう動いたら正解かを書くのが筋だろう
最初に大体書いてんじゃん ブラウザ上で文字選択してctrlダブクリでその文字をgoogle検索 (実行したら文字選択解除) クリップボード経由だけど汚したくないからバックアップ取ってそっから復元 むしろどれくらい失敗するのか、どう失敗するのかを書くべし
失敗ってのはまったく無反応、確率というのは 動くときは何回やってもほぼ100%動いて、動かない時は何回やっても動かないな感じです 何が影響してるかが全く分からないので統計の取りようもないです とりあえず0か100かって感じです スクリプトでどうにもできないことなら仕方ないですが、何か改良すべきことがあるなら
とりあえず~Ctrl::だとCtrl押しっぱでも反応しない? ~Ctrl Up::のがいいような気がする Sleep 50とSend,{Esc}はよくわからんが、なくてもいいような ClipWaitはタイムアウト設定したほうがよさげ ClipWait,1とか0.5とか時間は適当に んで、格納失敗したときにメッセージとか出したいなら If ErrorLevelで処理記述 Clipboard=%bk%の後に「bk=」の行追加で変数bkを空にしてやったほうがいい ミジンコの俺が感じたのはこんな感じかなあ
>>58 ありがとうございます だいぶ動きが滑らかになって今のとこ確実にできてます
修正前は何も文字列を選択しない場合は確実に無反応になっていたのですが
修正後は同状況では空白で検索されているっぽくgoogleが開いてしまったので、途中を
Send, ^c
ClipWait,1
If Clipboard =
Clipboard=%bk% (動作としては必要はないけど Clipboardが空でない が書けなかったため)
else
Run,
http://www.google.com/search?q=%Clipboard% としました
>>55-56 情報が足りませんでしたすみません
IE9を使用しています。 IEが動いていたらアクティブ化したいのですが 以下のように記載しても動きません。 何がまずいのでしょうか。(通過メッセージは出ています) Process,Exist,iexplore.exe If (ErrorLevel <> 0) { winActivate,ahk_pid %ErrorLevel% MsgBox,4,,通過 } return
IE9はマルチプロセスなんでタイトル文字で指定した方がいいんでない? SetTitleMatchMode, 2 WinActivate, Windows Internet Explorer ahk_exe iexplore.exe
1000ms間隔で30回、それぞれの指定位置で右クリックするマクロを組んだのですが このマクロの実行中に手動で途中で中断させる方法はありますか?
>>62 タイトル指定でいけました。
ありがとうございます。
そういえばプロセス一個だけの場合でも
プロセス指定では無理でした。不思議
>>63 ホットキーでマクロ開始するタイプなら
>>64 macro.ahkを実行すると開始するタイプなら
スクリプトの後ろにa::ExitAppを追加
他のスクリプトも混在してるからReloadやExitAppは困るなら
MouseClick処理前にフラグを確認するようにして
フラグを立てるためのホットキーを設定してやる
これなら中断したところから再開とかもできる
複数のスクリプトを常駐中に、任意のスクリプトのみを終了させる事は出来ますか?
「スクリプトのパス ahk_class AutoHotkey」がメイン窓なんで、 WinMenuSelectItem や WM_COMMANDで終了メニュー選ぶんだり、 PIDで強制終了するなりすればいい
了解しました。がんばってみます
>>64 ,66
お返事遅くなりましたが親切にありがとうございます
お尋ねします。 一つのスクリプト内に幾つかの設定があり、その一部がエラーだった場合 そのエラーを無視して起動させる事は出来ますでしょうか?
ちょっと漠然としすぎじゃないかな
73 :
名無しさん@お腹いっぱい。 :2012/10/24(水) 07:26:28.45 ID:jF6YYXc50
>>71 組み込み変数 ErrorLevel で分岐することはできる。
文法エラーは修正しないと,エラーメッセージが出続ける。
正規表現中の「"」をエスケープする方法はあるでしょうか? `"としても\"としてもエラーになってしまいました。 "`"" → × "\"" → ×
"""" → ○ じゃなかったかな "abc"defg" → "abc""defg" って感じ
これ? a = abc"def dbl = " msgbox, % regexmatch(a, "c" . dbl . "d")
それかこれ? a = abc"def msgbox, % regexmatch(a, "c" . chr(34) . "d")
URLDownloadToFileにPOST形式は指定できないようですが、何か裏ワザとかあったりするでしょうか?
フォーラムに通信関連のライブラリがあった気がす
同じソフトウェアのウインドウだけを 全画面にタイル状に並べるスクリプトあるじゃないですか。 あれすると今見てるウインドウが一番右(一番うしろ)にいってしまいます。 あれを今見てるウインドウを一番左に(左上、or左に)並べるようにできませんか? このスクリプトです。 TileMove() { WinGet, activeWindowID, ID, A WinGetPos, x, y, w, h, ahk_id %activeWindowID% SysGet, monitorCount, MonitorCount Loop, %monitorCount% { SysGet, m, MonitorWorkArea, %a_index% if (mLeft <= x && x <= mRight && mTop <= y && y <= mBottom) { WinGetClass, activeWindowClass, ahk_id %activeWindowID% WinGet, id, list, ahk_class %activeWindowClass% Loop, %id% { w := (mRight - mLeft) / 2 h := (id > 2) ? (mBottom - mTop) / 2 : mBottom - mTop x := (Mod(a_index, 2) == 1) ? mLeft : mLeft + w y := (a_index <= 2) ? mTop : mTop + h StringTrimRight, this_id, id%a_index%, 0 WinActivate, ahk_id %this_id% WinWaitActive, ahk_id %this_id% WinMove, ahk_id %this_id%,,%x%, %y%, %w%, %h% } break
やれやれだな
マウススクロールの↑をloopで指定回数行うのにsleep以外で間隔指定できませんか? あと、Edit This Scriptでメモ帳を別のエディタに変えたい場合はレジストリ?
>>82 言うようにレジストリ
とは言え個人的には編集用のホットキー用意しておく方が便利
#a::run, "c:\program files\someone\editor.exe" "ahkscript.ahk"
>>82 >マウススクロールの↑
ホイールのこと言ってるなら Send,{WheelUp 10} とか
エディタのレジストリキーは以下
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command
すまん回数指定かつ間隔指定か ならSendで送る前にSetKeyDelayを指定しておく
>>83 それだと別に起動しておかないといけないですね。
>>84 関連付けできましたー。
>>85 簡単に・・・
SetKeyDelay,xxx
loop xxx {
Send, {WheelUp}
}
SetMouseDelay,xxx
loop xxx {
MouseClick,WheelUp
}
両方試しましたが1回しかカウントされず多分一瞬で終わっているみたいですね。
前スレにあったsleepでやるしかないのか。。。
なぜsleepが嫌なのか
マニュアルやヘルプみたの?setkeydelayの使い方が誤っている。
いや一番肝心な数値の部分をxxxで伏せられたらわからんし 0.5秒間隔でホイール10個送るなら SetKeyDelay,500 Send,{WheelUp 10} SetMouseDelay,500 MouseClick ,WheelUp,,,10
キーならいいけど、マウスはうまく動かないですね。
別の方法を探してみるしか無いかな。
>>87 中断がうまくできないので。
SetKeyDelayの場合、loop中に再度実行するとloopが再開するので。
>>88 Example(s)
SetKeyDelay, 0
使用例にあったのでそのまま使いました。
>>89 間隔50ms〜5sでloopが100〜1000回とかまちまちなので。
だからそういう条件は先に言えと、後出しは遠回りでムダになるっしょ 中断させたいならloop内でbleakさせりゃいいんじゃね
Pだからな、無理もない
やりたい処理の全体像がいまいちつかめないので断言はできないけど、 Sleepがいやな理由が中断・再開がうまくいかないってことなら解決法ありそうだけどな
Win 8 にしたら Send, {Alt Down}{Tab} で擬似 AltTab ができなくなってしまった。
できなかったという一言感想だけ言うよりどうしたら改善したとか 原因はおそらくこれとかいう情報もあった方がいいのでは そこまで日記的だと本当にWin8が原因なのかも分からない
win8でautohotkeyがうまく動かないというのは autohotkey forumにあまり情報がないかと どうなんだろうね
>>97 続き
Altがおしっぱになってるらしく一回Altを押さないと正常に戻りません
#IfWinActive ahk_class TaskSwitcherWndで
スイッチャがあるときにUpとかを決定(Lクリック)に連動させて入力しても
ある時に〜という設定だからなのか動きません
どうにかして決定後に自動的にAltを解除できませんかね?
FileDelete, コマンドでお聞きします。 複数行にならず、一行だけで指定したファイルを連続して削除する事は可能ですか?
自分で複数指定できる関数作ればいいじゃない
なんか最近、同一人物なんか知らんが 意図のわからない質問が増えてるな
質問内容が曖昧なのと、なんか限定的な条件がついてるよね やりたいことと、なぜその条件が必要なのか書けば解決法出てきそうなんだけどね
103 :
94 :2012/10/28(日) 11:39:18.61 ID:n/plubYp0
>>103 なるほど
"Our. Top. Men!" の意味は全然汲み取れないんだが今取り組んでるから多分治るよって事か
105 :
941 :2012/10/28(日) 14:19:21.10 ID:n/plubYp0
>>104 「俺たちの!! スーパー!! ヒーロー!!」ってくらいの意味で、
Lexicos をはじめとする AHK デベロッパーが何とかしてくれるはずという期待が
Don't worry 以降に、そして Though 以降にこの問題が遷延する可能性をいってます。
ここらへんは全部ポストした人の憶測なので、確かな情報としては
>>103 のみ
指定したウインドウを、90度180度と回転させる事って出来ますか?
何のために?理由によっては別の方法がある
タブレット的に使いたいってことなんだろうけど、ウィンドウ単位では無理 ディスプレイ全体だったらGPUが対応していればいける
正にタブレットみたいな使用法です。 でもそう都合よくはいきませんよね。 ありがとうございました。
Windows8のメトロUI?ってAutoHotKeyって動作するんですかね… スマフォ系でAutoHotKeyが使えれば、その端末即買いですよ
Autohotkeyからrunで呼び出したバッチファイルのウインドウを、非表示にさせることは出来ますか?
Run, hoge.bat , , Hide
>>110 つまらない、15点
助かりました有難うございます
>>110 別に書かなきゃ答えないだけだから好きにしろよ
UWSCのスクリプトをAutoHotkey用に変換する方法教えろ
まずUWSCのドキュメントとAHKのドキュメントを用意してください。 次に、変換したいスクリプトを開きます。 あとは簡単。 ドキュメントを参照しながら同じ結果が得られるように AHKのスクリプトファイルにコマンドを入力していけば、変換完了です。
wasd操作のゲームがあるんですが、eで右上(dw)、qで左上(aw)、shiftで左下(as)、spaceで右下(ds)に方向を割り当てて8キーにしたいんですけど1つのキーに2コキーを当てることは出来るんでしょうか?
そのゲームで動作するかは知らんが普通に2キーSendしてみれば
文章として入力されてしまうようでできませんでした 素直に諦めます
121 :
97-98 :2012/10/31(水) 03:14:53.96 ID:k6OEMr050
アク禁喰らってダメだったので質問しなおします マウスボタンににF1を割り当てて F1::AltTabMenu でタスクスイッチャを作ったはいいんですが アイコンを左クリックで決定してタスクをアクティブにしたら どうやらAltがおしっぱになっているらしく、他の操作に支障が出ます タスクを決定したときに自動でALTを押され、解除されるようなのはできないでしょうか?
F1 up::AltTabMenu
ヒドゥンな指定プロセスにコマンドを送信したい場合ってどうすればいいのでしょうか?
Autohotkeyjpに以下のサンプルがありますが コマンドプロンプトを起動状態でも送信されません。 何故でしょうか? SetTitleMatchMode, 2 ControlSend, , abc, cmd.exe
>>124 試してみたらそれで普通に送信できたよ
コマンドプロンプトのタイトルにcmd.exeが含まれてないとか何かあるんじゃない
DetectHiddenWindows, On
>>122 ありがとうございます
その1行で大丈夫なんですか?
よくわかんないけど 公式まで行って、win8固有の問題って言われたんなら Lexicosとかが対応してくれるまでは 無理なんじゃなかろうか
>>122 動作的には変化ないんですけどどうなんでしょう?
>>121 Win8で動くかどうか確認してないけど、これは?
F1::AltTabMenu
#IfWinExist ahk_class TaskSwitcherWnd
~!Lbutton::
WinWaitClose, ahk_class TaskSwitcherWnd
send, {alt up}
return
ちゃんと設定してもそのとおり動かないホットキーがあるのは仕様なんでしょうか? wとsにPgUp、PgDnを割り当ててるんですけどSキーを押してもPgDnが認識されません 他にも.キーにCtrl++(拡大)ショートカットを割り当ててるんですけどこれも機能しません
ちゃんと出来てると思ってても出来てないか割り当ててるというソフトの設定の問題か他のソフトが干渉してるかどれかだな .ahkと対象のソフト名、あと出来ればタスクマネージャのスクショうp
>>131 ありがとうございます できました
自分はwin8について発言した方とは別人なのでその辺は大丈夫です
いろいろ紛らわしくなってしまいましたね・・・ありがとうございました
>>133 zipにかためたところでふと気になって再起動したら普通に動きました。すみませんありがとうございます
zipにかためたとはいったい
ahkとかうpれって言われたんでその参考にとahk他をzipで固めたところで自己解決しちゃったので・・・
教えて欲しいのですが・・・ settimerが動作してからの経過時間って取得できますか?
直接該当する変数は無いけど OS起動時からの時間が格納されるA_TickCountや 操作を行っていなかった時間を格納するA_TimeIdle等の 組み込み変数を利用して時間経過を知ることは出来ます。
デュアルモニタかどうかを判断して、そこから処理を分岐したいのですが出来ますでしょうか?
SysGet
Loop { IfWinNotActive,TestWindow { WinClose,TestWindow MsgBox,%A_Index% 回ループしました Break } } Return windがアクティブじゃなくなったら消すのを書いてみたら CPU負荷+10% 1秒間 6.5万回ループ って結果にw負荷ぱないw テスト用にMsgBox書いといて良かった・・・そのままだったら Sleep 書き忘れてたの気づかなかったなw
そういう用途にはタイマーを使いましょう
>>143 ありがとうございます。
そんなコマンドあったのね、見落としてました。
常態しているScriptに「SetTimer」書いて
指定間隔でサブルーチン実行させられるのか。
Gui,Add,Text,,Test
SetTimer,WindClose,100
Gui,Show,,TestWindow
Return
WindClose:
IfWinNotActive,TestWindow
{
WinClose,TestWindow
SetTimer,WindClose,Off
}
Return
Sleepを使った、長い実行時間のホットキーがあるのですが、 実行中に何か(不特定)のキーが押されたら実行を中断させたいです。 簡単に実現する方法はないでしょうか?
>64
>>146 ありがとうございます。
ですが、どのキーを押しても中断するようにしたいのです。
結局、各sleepのあとでA_PriorKeyをチェックすることにしました。
Lのインストーラー版のダウンロードサイズとハッシュどなたか貼ってください。 今朝落とした時は2MBのが落ちてきて、 以前落としていたものとハッシュが違い以前のは壊れてるのかと思ってましたが、 今落とすと5MBのものが落ちてきます。 どれが正しいのかわかりませんorz
149 :
148 :2012/11/04(日) 21:41:11.92 ID:95/g4WZV0
あ、すいません。 5MBは、2つ落としたファイルを選択したものをプロパティで見たもので、誤りでした。 ハッシュお願いします。m(_ _)m
以下のスクリプトは、フルパス指定したスクリプトを決め打ちで終了出来るのですが フルパスでないと有効になりません。 これを相対パスで対応出来るようになりますでしょうか? fullScriptPath = E:\test.ahk ; edit with your full script path DetectHiddenWindows, On WinClose, %fullScriptPath% ahk_class AutoHotkey
以下のスクリプトで対応出来ました。スレ汚し申し訳ないです。 DetectHiddenWindows On ; Allows a script's hidden main window to be detected. SetTitleMatchMode 2 ; Avoids the need to specify the full path of the file below. WinClose Script's File Name.ahk - AutoHotkey ; Update this to reflect the script's name (case sensitive).
152 :
ひみつの文字列さん :2024/06/29(土) 09:02:40 ID:MarkedRes
日本国またはアメリカ合衆国、もしくはその両方の著作権法に触れる内容であると疑われることから表示できません。
153 :
148 :2012/11/06(火) 10:03:08.02 ID:EVhAGQsX0
AHK_Lに移行してから /ErrorStdOutオプションでの標準出力が取れなくなっちゃった 仕様変更とか書き方ルールが変わったのかな? 以下↓err.batとsyntaxerr.ahk をAutohotkey.exeのあるフォルダにコピーしてerr.bat実行で ---- syntaxerr.ahk ------------- #ErrorStdOut ; (なくてもいいはずだけど一応) sand,{Space} ---- syntaxerr.ahk ここまで---- ------ err.bat ---- AutoHotkey.exe /ErrorStdOut syntaxerr.ahk |more pause ------ err.bat ここまで ---- 本家最終(1.0.48.05)だと↓みたいなメッセージ出てくるんだけどL版だと何も表示されない D:\AutoHotkey\bin\syntaxerr.ahk (2) : ==> This line does not contain a recognized action. Specifically: sand,{Space} Lは最新(1.1.8.1 A32,U32,U64) と 1.1.00.00 A32(たまたまHDに残ってた)を XP 32bit / 7 64bit でそれぞれ試してみたけど状況に変化なし エディタからエラー箇所へのタグジャンプできなくなって捗らないわー 詳細や対処法ご存知の方いたら情報お願いします
Sendでもキーのリマップでも反応しないアプリがあるのですが 物理的にキーを押した状態と同じ動作をさせる事は出来ますか?
DCALLなどを利用して、Windowsのファイルアクセスシステムコールをコールバックして、指定のアプリケーションのファイルアクセス履歴を取得することなんて可能でしょうか?
>>155 用意されているキーの送信手法をもっと試す
send
sendiraw
sendivent
sendinput
sendplay
タイポした。sendiraw→sendraw sendivent→sendevent
変更点は?
公式のChangelog見ればええがな
>Removed undocumented AutoIt v2 commands. これが何なのかわからないなあ
163 :
名無しさん@お腹いっぱい。 :2012/11/08(木) 18:59:43.51 ID:b/YWXq430
すみません、初心者で使いこなせずアンインストールしようと思ったのですが コントロールパネルからアンインストールしようとおもっても installer.ahkというスクリプトを読み込むだけでアンインストール処理を行ってくれません。 中身も読んでみたのですが、サンプルスクリプトが書いてあるだけで特にそういった処理に使えるものもないようで… 申し訳ありませんが、助けていただければ幸いです。よろしくお願いします。
Autohotkey.exeがahkファイルに関連付けされているだけなのでフォルダごと削除しても問題ないかと。 プログラムと機能(Win7)にインストール情報が残っているならCCleanerとか使えば消せる。
>>164 親切にありがとうございます。
インストーラーからなのでおそらく残るとおもわれるのでCCleanerを使用したいと思います。
本当にありがとう、感謝します。
あと上のレスsage忘れです。ごめんなさい。
嫌かもしれんが一度インストーラ使ってインスコして、すぐにアンインスコすればいいじゃないかな
同じ種類のウインドウをタイル状に並べるスクリプトを使っているのですが、 タイルが完成したあとアクティブになるウインドウが一番最後(右あるいは下)の ウインドウになってしまいます。 左上のウインドウ(タイルスクリプトを実行するまえにアクティブだったウインドウ) を最後にアクティブにするにはどうすればできるでしょうか? おしえてください。 TileMove() { WinGet, activeWindowID, ID, A WinGetPos, x, y, w, h, ahk_id %activeWindowID% SysGet, monitorCount, MonitorCount Loop, %monitorCount% { SysGet, m, MonitorWorkArea, %a_index% if (mLeft <= x && x <= mRight && mTop <= y && y <= mBottom) { WinGetClass, activeWindowClass, ahk_id %activeWindowID% WinGet, id, list, ahk_class %activeWindowClass% Loop, %id% { w := (mRight - mLeft) / 2 h := (id > 2) ? (mBottom - mTop) / 2 : mBottom - mTop x := (Mod(a_index, 2) == 1) ? mLeft : mLeft + w y := (a_index <= 2) ? mTop : mTop + h StringTrimRight, this_id, id%a_index%, 0 WinActivate, ahk_id %this_id% WinWaitActive, ahk_id %this_id% WinMove, ahk_id %this_id%,,%x%, %y%, %w%, %h% } break
最後に(Breakの直前に) WinActivate, ahk_id %activeWindowID%
× 最後に(Breakの直前に) ○ 最後に(Breakの次行に } があると思うのでその次の行に)
一旦全部最小化して ターゲットのwindow群だけ元に戻して 左右に並べて表示させる方法もあるのでは。
>>169 ありがとうございました。成功しました。
その文字列をもしかして入れるのでは?とおもって一回試してみたのですが
失敗していました。なるほど入れる場所が間違ってたのか。
breakとその文字列の間に } を2個入った形で成功しました。
よかった。
脳波読み取るスクリプトの書き方教えてください
まず脳波読み取るデバイスを用意します
autohotkeyをemacsでdebugしたいのですがどうすればいいのでしょう? "autohotkey emacs debug"で検索してもそれらしい情報が見つかりませんでした
「emacs DBGp」ならかなりヒットしたけど
176 :
170 :2012/11/10(土) 08:07:53.79 ID:rxSHjNny0
MGLのヘルプを作っている者です。
>>167 さんへ
スクリプトを
下のように改変して公表してよろしいでしょうか
WinGet, activeWindowID, ID, A
Send,#m
WinGetClass, activeWindowClass, ahk_id %activeWindowID%
WinGet, id, list, ahk_class %activeWindowClass%
WinRestore,A
Sleep,100
Loop, %id%
{
StringTrimRight, this_id, id%a_index%, 0
WinActivate, ahk_id %this_id%
WinWaitActive, ahk_id %this_id%
}
Run,C:\~\TileVertically.vbs
/*
↓↓↓TileVertically.vbs↓↓↓
Set Win = WScript.CreateObject("Shell.Application")
Win.TileVertically
*/
皆様のお知恵を拝借したいのですがよろしいでしょうか? 一回押し、二回押し、長押しで それぞれ違う挙動を一つのキーにさせたいのですが、 下記の書いてみたスクリプトで一つ問題が解決できなくて困っております。 二度押しする際に一度押しの挙動を飛ばしたいのですが何か良い知恵有りますでしょうか? キー入力 → 一定時間待機して、待機時間内に再度押せば「二度押し」 それ以外なら「一度押し」か「長押し」の判定にさせればいけそうなのですが。 a:: if (A_PriorHotkey = A_ThisHotkey) and (A_TimeSincePriorHotkey < 400);同HotKey二度押し&400m秒以内なら { MsgBox ,2回押し(仮 Return } KeyWait,A,t0.3;指定した秒数が経過した場合error「1」、それ以外は「0」 If(errorlevel == 0) { MsgBox ,1回押し(仮 Return } MsgBox ,長押し(仮 KeyWait,a Return
IfMsgBox, No,の後に複数行の処理をしたい場合 どの様な記述をすればいいでしょうか?
LoopとFileMoveで簡易的なファイルの振り分け処理をしたいのですが重複ファイルの扱いで困ってます。 今は一律でファイル名の最後に(0)を付けてるのですが、 どうも中身が同じのが多くなってきたような気がするので… ahk単体でやるのではなくdiffあたりにファイルを投げた方がいいでしょうか?
179 すみません、自己解決しました。 Gosub,で飛べるんですね。
>>181 普通にブロックでよくない?
msgbox, 4,, test
ifmsgbox, No
{
msgbox,No
msgbox,No
}
else
{
msgbox,Yes
msgbox,Yes
}
return
>>178 うちの環境では使えないキーがあったりしてアレだけど、一応参考までに
;a::
F8:: ;aでは何故か上手くいかなかったのでF8に
Critical
;Input, user, T0.3, a
Input, user, T0.3, {F8}
If (RegExReplace(ErrorLevel, "i)^EndKey:(.+)", "$1") != A_ThisHotkey)
MsgBox, Single
Else
{
KeyWait,% A_ThisHotkey, T0.3
If (ErrorLevel)
MsgBox, Hold
Else
MsgBox, Double
}
Return
>>184 早速返答が! ありがとうございます。
こちらの環境では正常に動きました。
欲を言えば、長押しの挙動がちょっと違うので
これから改善策考えてみます。
悶々としていた部分なので助かりました。
>>184 無事に目的の挙動になりましたのでご報告いたします。
改めてお礼を申し上げます。 ありがとうございました。
a::
Critical
KeyWait,a,t0.3
If(errorlevel)
{
MsgBox, Hold
Return
}
Input, user, T0.3, {a}
If (RegExReplace(ErrorLevel, "i)^EndKey:(.+)", "$1") != A_ThisHotkey)
MsgBox, Single
Else
MsgBox, Double
Return
>>187 杞憂かもしれないが "Critical" 中にボタンの押し下げ状態にすると、
キーリピート分が大量に溜まってしまうんじゃないか?
"Critical"が解除された時に、それらが雪崩れ込んでくる気がする。
>>186 こんないいものがあるとは…
ありがとうございました
>>188 指摘ありがとう。推測された通り雪崩れ込んでた。
ということで400msのウェイトを入れて修正してみたけど、用途によっては問題があるかもしれない
>>187 ×Critical
○If ((A_PriorHotkey = A_ThisHotkey) and (A_TimeSincePriorHotkey < 400))
Return
以下略
http://www.autohotkey.com/board/topic/71179-ahk-l-dba-16-oop-sql-database-sqlite-mysql-ado/ このライブラリでSQLiteを使い
c:\TestDB.sqlite3というファイル名で処理内容を保存できると思ったのですがうまくいきません
(
http://www.dbonline.jp/sqlite/database/index1.htmlを参考にしました )
SetWorkingDir %A_ScriptDir%
#Include <DBA>
global initialSQL := "SELECT * FROM Test"
global databaseType := "SQLite"
global currentDB := null ; current db connection
connectionStrings := "c:\TestDB.sqlite3"
db := DBA.DataBaseFactory.OpenDataBase("SQLite", connectionString)
db.Query("CREATE TABLE Test (Name, Fname, Phone, Room, PRIMARY KEY(Name ASC, FName ASC));")
;Table Layout: Name, Fname, Phone, Room
record := {}
record.Name := "Hans"
record.Fname := "Meier"
record.Phone := "93737337"
record.Room := "wtf is room!? :D"
db.Insert(record, "Test")
db.Query(".exit")
SQLite_CloseDB(db)
return
もしかしてexeとdllでは処理が違い上のautohotkeyの処理ではデータベース保存不可能、ということなのですか?
エラーの種類が分らないので憶測で (1)db.Query(".exit") が意味不明 (2)ライブラリは正しい場所に置いているか (1)を消してダメなら(2)。とりあえず、AHKをインストールしたフォルダに、アーカイブを解凍して出てきたLibフォルダをそのままコピーしてみて それから一応だけど、SQLite_CloseDB()を直接呼ぶのではなく、db.Close()を呼んだ方がいいよ
Windows7とかだと標準ユーザはCドライブのルート直下にファイル作れないけど その辺大丈夫?
ふむ。問題なく動くけどな。 .exit は対話コンソールツールの終了コマンドなんでDLL版で使っても意味ないかと(戻り値が0) SQL発行エラーで何も起きてないっぽいけど #Include <DBA> db := DBA.DataBaseFactory.OpenDataBase("SQLite", "hoge.sqlite") db.Query("CREATE OR REPLACE TABLE hoge (id INTEGER PRIMARY KEY, name TEXT)") db.Query("DELETE FROM hoge") Loop, 5 db.Query("INSERT INTO hoge (name)VALUES('inserted by stmt@" A_Index "')") && db.Insert({name: "inserted by API@" A_Index}, "hoge") For each, row In db.Query("SELECT * FROM hoge").Rows str .= row.id A_Tab row.name "`n" MsgBox, % str ん〜、トランザクションの掛け方とエラーハンドリングがよくわからん
ウインドウタイトルの変更は出来ましたが ウインドウクラスの変更は出来ますか?
クラス名なのか振る舞いを含めたクラスなのか、いずれにしても無理だけど
ControlSendでErrorLevel見ても成功しているのに反応しないから悩んでたら
>>22 に書いてあったahk_parent追加で成功。
AutoHotkeyJpに書いていなかったので時間かかった・・・
198 :
名無しさん@お腹いっぱい。 :2012/11/17(土) 16:43:38.98 ID:r0IUfgiy0
難い・・・挫折した。
Gui,Add,Edit(テキスト入力欄)で右クリック(ポップアップメニュー)をMenuコマンドで任意に作ったメニュー表示or追加できないでしょうか? Disabledにすればできるのですが文章を選択常態にしたいので他の解決策がないものかと、無い場合は右クリック以外の方法でやってみます。 Menu,MenuName,Add,コピー,AAA Gui,Add,Edit,ReadOnly,TEST Gui,Show Return GuiContextMenu: Menu,MenuName,Show Return AAA: MsgBox,OK Return
>>199 こんなんじゃだめ?
#WinActivateForce
Menu,MenuName,Add,コピー,AAA
Gui,Add,Edit,ReadOnly,TEST
Gui,Show
Return
$RButton::
MouseGetPos, , , OutputVarWin, OutputVarControl
WinGetTitle, Title, ahk_id %OutputVarWin%
If (OutputVarControl = "Edit1") && (Title = A_ScriptName)
{
WinActivate, ahk_id %OutputVarWin%
Menu,MenuName,Show
}
Else
Send, {RButton}
Return
AAA:
MsgBox,OK
Return
Send,{RButton} Sleep,500 Send,O というコードで、Sleep部分を 「コンテキストメニューが出現するまで待つ」という条件に書き換えるコードを教えて下さい。 時間決め打ちだとレスポンスが悪い上に高負荷時に誤動作してしまうことがあります。 なお、挙動が変わってしまうので1行目をAppKeyで代用することはできません。
アプリによっては動作しない。普通のコンテキストメニュー用 Send, {RButton} WinWait, ahk_class #32768,, 3
>>200 なるほどーこうすればいけますね。
非常に参考になりましたありがとうございます。
>>202 ありがとうございます。
もし動かなくてもSpyでクラス調べればいけそうですね。
autohotkeyjpにあったIniReadのサンプル何ですが IniRead, OutputVar, C:\Temp\myfile.ini, section2, key MsgBox, The value is %OutputVar%. 仮にsection2のキーが1だった場合と、2だった場合で分岐したいのですが どの様なスクリプトを書けば良いのでしょうか?
ごく普通にIfで分岐するだけじゃないの?
AutoHotkeyってほんと簡単でいいですね .bat書くよりこっちの方が分かりやすい
>>207 どんな感じで書けばいいのか教えて頂けませんか?
テキストエディタでvimのヴィジュアルモードみたいに「解除するまで選択状態」となるようにできませんか? 具体的には、Shiftキーを押すと次にShiftキーを押すまでShiftキーを押しっぱなしにしてる扱いにしたいです vista 32bit
Shift押し下げ押し上げをトグルキーにすればいいんじゃないの
>>205 IME.ahkはImm32のAPIしか使ってないので TSFだと機能しないです
>>212 なるほど
それでいってみます。サンクスです
215 :
名無しさん@お腹いっぱい。 :2012/11/21(水) 16:51:07.98 ID:n3ipOOyIT
俺も最初にリファレンス全てを適当に読み流して覚えた。
そうすることで自分がやりたいことに必要な関数やコマンドが
ある程度判るようになってくる。
>>206 if OutputVar = 1
msgbox, %OutputVar%
else if OutputVar = 2
msgbox, %OutputVar%
>>211 $shift::
if !shifttoggle {
keywait, shift, L
send, {shift down}
} else {
keywait, shift, L
send, {shift up}
}
shifttoggle := !shifttoggle
return
SMPlayerという動画プレイヤーソフトの動画表示ウインドウ内でクリックしたかどうかを
識別して、#IfWinActiveで条件分岐したいのですが、うまくいきません。
プレイヤーの外枠にカーソルを合わせて情報所得を試みると、正常に取れました。
しかし、中央の動画が表示されている部分だと取得できなくなります。
この動画プレーヤは、Qtというプラットフォーム共通化ソフトでコンパイルしているらしく、
動画内だと、ahk_classも、ControlGetPosも、ウインドウタイトルも全く抜き取ることが出来ません。
Qt
http://qt.digia.com/ 動画表示ウインドウ内のクリック時にSMPlayerかどうかを識別するには、
どのような方法が考えられるでしょうか。
前スレの
>>127 に出てたv2のWinGet/Set周りが仕様変更が分かったので投下
v1の書き方
WinGet, OutputVar, List, ahk_class Hoge
v2の書き方
OutputVar := WinGetList("ahk_class Hoge")
みたいな感じでWinGet/Setのサブコマンドが廃止されてそれぞれ別の関数になった
ちなみにOutputVarはObjectなので
for key, value in OutputVar {}
でループ回せる
>>216 ClassNNで分岐すりゃいいんでないの
#If SMPlayerActive() && MovieWindowClicked()
LButton::MsgBox Clicked!
#If
SMPlayerActive() {
Return WinActive("ahk_exe smplayer.exe")
}
MovieWindowClicked() {
MouseGetPos,,,, ctrl
;ソフトウェアのバージョンや環境によって QWidget(数字←ここ) が変わるかも
Return (RegExMatch(ctrl, "i)QWidget(9|10)") || RegExMatch(ctrl, "i)MPlayer - The Movie Player\d?"))
}
非アクティブからアクティブに切り替えるときのクリックには対応させてないので、あしからず
>>218 バッチリ動きました!ありがとうございます。
再生が終了して暗転してる状態でも、きちんと識別できました。
個人的な問題は、メインで使ってるスクリプトがAHK初代なので、
常用スクリプトに統合できず・・・新版AHK_Lに移行する決心が付きました。
221 :
206 :2012/11/21(水) 23:10:22.27 ID:ZznyVFkd0
皆さん有難うございます。
特に
>>215 さん、バッチリ動作しました。
本当に有難う、感謝しています。
ブラウザでウェブページを見ているとき、 フォーカスがあるリンクのurlを取得することはできますか? autohotkeyでページそのものを取得することは分かるのですが 現在見ているページの特定箇所のリンクの抽出が分からないです firefoxを使っていますがinternet explorerでもかまいません
ToolTipのフォントの大きさを変えられないでしょうか?
誤って作成したスクリプトを消してしまい困っています。 ahk2exeでコンパイルされたスクリプトを抽出する事 若しくは起動中のスクリプトを抽出出来ますか?
>>226 exe2ahkってツールで取り出せるけど、
コンパイル時に暗号化してたら駄目だったと思う。
仮にこれで取り出せたとしても、ソース内のコメントが全部消えてる。
俺も昔同じミスをしてしまって泣いた。
対策として、起動時にスクリプト自身を自動でコピーする関数を冒頭に入れるクセをつけた。
履歴も取れるようにして、何度か助かった。
>>227 貴重な情報有難うございます。
早速チャレンジしてみます!
>>223 Fxならアドオンでどうにでも出来るでしょ
見たところ2年以上放置状態みたいだね
232 :
191 :2012/11/24(土) 20:08:19.46 ID:Dw4eM04X0
返信が遅れてすみません。皆さんありがとうございます。
>>193 Windows8です。Cドライブ以外のルートではないところにファイルを作ろうとしています。
具体的には
>>191 を展開したDBAExampleOOP.ahkがあるフォルダ内に
>>191 のahkファイルを作っていました
>>194 それを実行したらこうエラーが出ました。
A non-object value was improperly invoked.
Specifically: 0
どうもこれはFor each,...の箇所のエラーのようです(MsgBoxをその前後に置くことで確認しました)
それと気づいたのですが、
>>194 を実行する度hoge.ahk.logが一行ずつ追記されていくのですが
hoge.sqliteはファイルサイズ0のままです。
逆に、DBAExampleOOP.ahkを実行してconnectボタンを押すと/Test/TestDB.sqliteが正しく作られていました
あ、CREATE文こけてるのか。 CREATE OR REPLACE TABLE じゃなく CREATE TABLE なら通るかと。
>>233 なるほど確かにそこでひっかかっていました!
どうもありがとうございました。
お尋ねします。 テキスト内の指定した文字列を削除って出来ますか?
出来ます
自己解決しましたどうも
聞きたいんですけど、ALT+TABでタスク切り替えした時に 起動中の指定したアプリのアイコンとアプリ名を表示させない事は出来ますかね?
WinSet, ExStyle, 0x00000080, ahk_class hoge これで出来たみたい
PCゲームをプレイしていると、ひらがながONになるようなキーを押していないのに 勝手にIMEがONになってしまい、それでキーを押したときの入力不可のエラー音がうっとしいです。 AutohotkeyでIMEを常にオフにすること、あるいは監視してすぐにオフにするようなことできませんか? PCゲームとは、SteamのTF2とかL4Dです。win7でAtok使ってます。教えてください。
ime.ahkを使って100ms毎にloopを使って監視をする こんなもんでどうだろう?
質問するときは最低限敬語ぐらい使ったらどうなんだろうと思ったり・・・。
丁寧語使ってるだけまだマシ
丁寧語は敬語の一種だった、失礼
>>242 え?
一体どのレスが気になったんだか分からない
どんだけお上品な育ちなの
何も感じないってのもどうかと思うが、目くじら立てるほどのことでもないな。
そうなんだよね、ちょっと濁して言って見たらこんなに反応するなんて・・・荒れちゃってごめんなさい。
感じが悪いレスだと無視&淘汰されてちょうどよい感じになってるのが当スレ
みんな丁寧語で質問してるしきちんと回答も付いてる超優良スレだろ
つまり
>>242 を華麗にスルーすれば良かったってことか、正直すまんかったな
確かにここは俺の巡回スレの中でもラム酒スレの次に穏やかな良スレ
敬語であろうがなかろうがクレクレや努力の匂いのしない教えて君はぶっ叩くがね それはそうと敬語使ってない質問ってどれ? まじでわからん
途中まで頑張りましたがここがわかりません っていう調べた努力が認められると、 丁寧にサポート&添削、あるいは完璧に動作するスクリプトを提示してくれる。 動いたって報告があがり、添削してあげる側も気持ちがよい。 しかし、途中まで頑張った素振りをして、これ以上詳しく調べるのが面倒だから 俺の代わりに埋めてね ってオーラが少しでも出ると無視される。 両者は本当に微妙な差なのだが、なんだかんだでバレる。 一見おとなしいが、雑に乗ると簡単に振り落とされる、乗馬のようなスレ。
あるプロセスのメモリをアドレス指定して監視させ、値が変わったらキーボードで文字入力するスクリプトを組みたいのですが、、、 途中まで頑張ったのですがわからなくなってしまいました・・・ 13歳JCです…。熱でてるけど、がんばってます・・・だれか優しく教えてしてください・・
とりあえずソースup
服を脱ぎます
そしてネギを咥えます。
13歳JCで「プロセスのメモリをアドレス指定して監視させ、値が変わったらキーボードで文字入力するスクリプト」 とか言っちゃうような並はずれた興味関心の持ち主なら、こんなところでそんな気弱な質問をするはずがないです
>>240 >>241 さんので出来ました Google IMEいけたけど、atokはどうだろ
SetTimer, disable_ime, 100 ; 100msec毎に繰り返し
return
#include c:\IME.ahk ; 089.zipより
disable_ime:
currentIMEStat := IME_Get()
ifWinActive, (制御したいアプリ) {
if (currentIMEStat = 1) {
IME_SET(0)
}
}
return
F12::
ExitApp
>>259 こうかくとシンプルになるよ
if (IME_Get()= 1) {
つまずいたので質問させてください VMWare上でAndroidとWindowsの環境を導入してテストしています AHKには対象classへkeysendやマウスの操作を送ることができるそうなので テストを自動化しようと思ったのですが、 ホスト側からVMWare上で動いているマシンに送れませんでした。 classはVMのwindowに送ったのですが、対象classが違うのか、 もしくは単純にこういったソフトからはキー操作やマウス操作を受け付けないのでしょうか?
>>260 ありがと。あとで使おうと思って、処理がすんだら戻してたんだ。
SetTimer, disable_ime, 100
return
#include c:\IME.ahk
disable_ime:
ifWinActive, 制御したいアプリ
{
if (IME_Get() ) {
IME_SET(0)
}
}
return
>>262 VMWareがアクティブでフォーカスが当たってる条件でも良いなら、sendやclickでキーやクリックは送れる。でもそれだとUWSCで十分だな・・
操作をどうやって送ろうとしてる?
VMWareがアクティブじゃない時に操作を送りたいならControlSendがいけそうだとおもったけど、ダメだった。
TrayTip,,
ifWinNotExist, ahk_class VMPlayerFrame
return
ControlSend, MKSEmbedded1, test, ahk_class VMPlayerFrame ; エラーにならないけど動かず
if (ErrorLevel) {
TrayTip,, fail: %ErrorLevel%
} else {
TrayTip,, ControlSend: おk
}
return
あと、VMWareがアクティブの時にホスト側で押されたホットキーの検出は出来なかった。
>>264 ウィンドにフォーカスがあってアクティブなら確かにそのまま送れるんですけどね…
テストしてるときにパラメータとかをホスト側でメモしたり管理したりすることが必要なので、
できればノンアクティブ状態でやろうと思ってました。
複数の窓を開いて作業をすることも多いもので…
私も以前ControlSendで試してみたのですが、同じようなコードでした
やはりだめなのでしょうか…
>>265 うーん、斜め上すぎるけどVMWareのAndroidにIP割り当ててVNC Server 立ち上げておいて
制御用PC(VMWareのホストOSじゃなくてもいい) のVNC ViewerのウィンドウをAHKで制御するというのはどうだろ・・ネットワーク繋げないなら意味ないけど・・
(参考)
ttp://www.youtube.com/watch?v=ItZX2ZjDSnc Android(VNC Server) -- (VMWare仮想net) -- ホストOS -- (IP) -- 制御用PC(VNC Viewer複数 <-- AHK)
一応、ultra vncだとControlSendは受け付けてくれた
F2::
sendtest2vnc()
return
sendtest2vnc() {
TrayTip,,
ifWinNotExist, ahk_class VNCMDI_Window
return
ControlSendRaw, VNCviewer, test, ahk_class VNCMDI_Window
if (ErrorLevel) {
TrayTip,, fail: %ErrorLevel%
} else {
TrayTip,, ControlSend: おk
}
return
}
# 自分の環境の場合、ゲストもXPだからゲストでAHK立ち上げておいて、ホストからAHKでTCPで制御できるから楽なんだけど・・
# Androidのsynergyという手もあるか
貼り間違え・・× ControlSendRaw ○ ControlSend
>自動置換型の場合、終了文字は置換後のテキストが入力されたあとに入力される。(Enterキー以外) って解説サイトにあったんだけど、Enterも入力されるみたいなんだ俺だけ? Oオプションで無効化できるけど(AutoHotkey v1.1.09 Win7、Vista)
ごめん重ねてもう1つ ::sage::さげ ::hage::はげ こうホットストリングが設定したとして、 メモ帳とかにhogesageって打ちこんでもhogeさげってなってくれない エンターとか半角スペースとかの終了文字を押してからならちゃんど動作する @hogesage → hogesage Ahoge sage → hoge さげ こうなる #Hotstringでの全体指定はしてません IMEが日本語入力になっている時は問題なし IMEがOff、または英語入力になっている時だけこうなる @になるようにしたいんだけど解決方法知ってる方いませんか
>>266 やはりVNCなどを使う手になりますか…
実はすでに何種類かVNCServer系のアプリで試してみたのですが、
まずServerを確立することができず、別のアプリ(Remote Web Desktopやらandroidscreencast)
を試してみたのですが、うまくいかず…
ここまでくるとこのスレに適さずAndroidスレにて相談ということになりそうですね…
ですがVNCでコントロールができる事がわかっただけでもよかったです、ありがとうございます
>>269 :*:sage::さげ
でだめ?
helpのHotstrings and Auto-replaceに書いてた。
Unless the asterisk option is in effect, you must type an ending character after a hotstring's abbreviation to trigger it.
>>271 まちがい * (asterisk): An ending character (e.g. space, period, or enter) is not required to trigger the hotstring. For example: って書いてた
>>271 *だとだめだったけど?で行けた!ありがとう!
?は単語の途中であっても発動する、ってオプションらしい
hogesageがhoge+sageじゃなくて"hogesage"っていう一単語として認識されてたのかな?
たぶん英語環境だとI am catみたいに半角スペースが入るのがデフォだからかな
あとよく考えたら
>>269 でIMEが日本語の時に問題ないのって
変換確定でエンター押してたからだとよな・・・
ホットストリングの件 マニュアル熟読すれば設定と挙動の違いは書いてあるよ
流行らせるページの使用例のとこ見て#l::send,{right}ってしたら連打したときにログオフされてしまいます SetKeyDelayっていうのを利用すればいいんでしょうか?
あ、AHK_L Unicode x86使ってます Vista 32bitです
使われていないツールチップの番号を取得する事は可能でしょうか?
これはもう開発終了や閉鎖をしてしまった? 公式に繋がらないんだけど、AutoHotkey_Lをダウンロードできる所は他にないかな?
ControlSend,,{Right},無題 - メモ帳 ahk_class Notepad ControlSend,,{Rigth},ahk_class WindowsForms10.Window.8.app.0.378734a 上はうまく行って下はうまく行かない理由は何が考えられますか? 下はTypictという.NETアプリなんですが…
送り先のControlを省略してるから ・ClassNN調べて指定で試してみる ・ダメならControlGetでHwnd取得して ControlSend,,{Rigth},ahk_id %ControlHwnd%
質問です ・無変換キーとwでoになる vk1Dsc07B & w::Send,{o} ・ctrl押してからの無変換とwで^oにしたい ctrl & vk1Dsc07B & q::Send,{^o} だと思ったように動かない員ですけどどうしたらいいいでしょうか
{}要らないんじゃないかなーと思った。夏
vk1Dsc07B & q:: if GetKeyState("Ctrl", "P") Send, ^o return Ctrlが押されているかで分岐すればいい。
ありがとうございます。if文はこう使うのですね vk1Dsc07B & q:: if GetKeyState("Ctrl") Send, ^o else Send, o return こんな感じで左手だけで操作できるようになれました。
vimみたいに↓キーとかPgDnキーとかの前に42とか打つと42回それぞれを繰り返してくれるように出来ませんか?
モードありなら、数字じゃなくなるまでキーを受け取って それを数に変換して最後のキーを繰り返す しか思いつかなかった モードなしだと使いづらそう
モードってKeyMapで設定していくんですかね その方向で頑張ってみます
ブラウザで特定のサイトでだけ中クリックの挙動を変えたいんです urlフォーカス→ コピー → クリップボード部分一致をかける でできると思うんですけど、 中クリックだけにそのまま本来の機能をしてほしいページで いちいちこの挙動(フォーカス)をされたらたまらないので 単純なものをつなぎ合わせた連続作業でなく 直接的にURLを検出する方法ってないですか?
ブラウザのウインドウタイトルじゃダメなの?
はい URLのほうが確実なんです
ブラウザ名も書いてないし、ウインドウタイトルで駄目な理由も不明瞭。
火狐です 例えば なんらかの2chのページのみで機能を変えるのに AutoHotkey スレッド part15 だったらこのスレでしか効かないような気がするので
>>295 ウインドウタイトルを正規表現でマッチさせるとか?
FirefoxでURL取得する方法があれば俺も知りたい。
URLを取得するのはAHK単独ならショートカットキー使って クリップボードに入れるしかないよ 前面にあるウィンドウを出している実行ファイルの パスを取得することってどうすれば可能だろう?
タイトルにURL追加するアドオン作ればいいんじゃないかなとか思ってたらすでにあったのかw
>>297 WinGet, Path, ProcessPath, A
MsgBox, %Path%
こういうこと?
>>299 おお、まさにこれだ
AutoHotkeyJpにはProcessPathがなかったから気づけなかった
ありがとう
>>289 さん
!g::KeyMap:=!KeyMap
とモードを設定したんですがそこからが分かりません
↓まで考えたのですが、MatchListの文字の前に入力される数字をInputDigitとして拾い数字に変換するにはどうすればいいのでしょう?
三行目にTrimedDigitを数に変換しInputDigitに格納するコマンドを入れればいいのでは、と思っているのですが……
Input, InputChar, M, {Esc}, {down},{up},{left},{right},{PgDn},{PgUp}
StringTrimRight, TrimedDigit, InputChar, 1
if ErrorLevel = Match
{
if InputChar = {down}
send,{down %InputDigit%}
else
if InputChar = {up}
〜〜〜
}
return
Input, InputChar, I, {Esc}{Down}{Up}{Left}{Right}{PgDn}{PgUp} Endkey := RegExReplace(ErrorLevel, "EndKey:") RegExMatch(InputChar, "^(\d+)", Count) If (EndKey != "Esc") Send, {Blind}{%EndKey% %Count1%} vim知らないから、なんか見当違いの答え書いてるかも…
>>302 !g::のホットキーラベルにしたら!g42{down}で42回↓キーを繰り返してくれました!ありがとうございますm(_ _)m
ほんとは!g入れなくてもいいと完璧なんですが……
今思いきってサクラエディタとIEをvim風にしてます
とりあえずノーマル・挿入・ビジュアルモードはだいたい出来てますがノーマルモードの時に!g無用の42{down}等が出来るよう頑張ります!
もっと思い切って素VimとFirefox Vimperatorを使ってみてはいかが
!g::KeyMap := !KeyMap #If (KeyMap) 1:: 2:: 3:: 4:: 5:: 6:: 7:: 8:: 9:: KeyMap := !KeyMap ; 一時的にオフにする Input, InputChar, I, {Esc}{Down}{Up}{Left}{Right}{PgDn}{PgUp} Endkey := RegExReplace(ErrorLevel, "EndKey:") RegExMatch(InputChar, "^(\d{0,2})", Count) Count = %A_ThisHotKey%%Count1% If (EndKey != "Escape") Send, {Blind}{%EndKey% %Count%} KeyMap := !KeyMap ; オンに戻す Return 一応モード切替で動くようになったけど、色々問題がある気がが
>>304 それもそうですね。本家vimのバインドも思ってたほど難しくないみたいですし
と言うかそれが最適解?
Vimperatorっていうのも検討してみます
でもFirefoxってうちだと重くって……2,3Verくらい前は結構軽かったのに……
>>305 ありがとうございます、参考になります
308 :
291 :2012/12/13(木) 17:19:09.70 ID:OSm7M/AY0
すみません 冗談のようですがこのタイミングでアク禁くらいました
回答してくださった
>>292 >>294 >>296-298 さんありがとうございます
とりあえず教わった方法でやってみたいと思います
マウスの戻るボタンおしっぱなしで前のタブへ戻ったり進むボタン押しっぱなしで次のタブに移りたいと思っています でもマウス拡張ボタンの描き方が調べてもわかりません。ダレか教えてくれませんでしょうか
何のソフトのタブなのかなど情報がまったくないのにどうしろと
send,{Ctrl down}{tab}{Ctrl up}っていう条件はできてるんです x1かx2を押しっぱなしにするっていう条件の書き方がイマイチわからなくて
典型的な条件小出しのパターン
訊かれたら答えるんじゃなく、 最初から「どういう環境で」「何のソフトで」「何がしたくて」「どこまでできてて」「このへんがわからない」 というのをすべて書け
Runコマンドで、管理者で実行同等の起動方法ってありますか?
>>309 マウスでもキーボードでも大して変化ない
キーボードでのその種のサンプルはいくらでもあるからそれを参考にすればいいのでは
>>314 RunAs, Administrator, pass
ただahkファイルにもろにパスを書くことになって気持ち悪さが残る
他にはAHK自体を管理者権限で実行しておくとか
長押し判別のサンプルが欲しいだけってことなら、このスレを「長押し」で検索すればおk
1.1.09.01 - December 15, 2012 Fixed AND/OR following a multi-statement comma, like ((x, y) and z). Fixed RegExReplace to support duplicate subpattern names correctly. Fixed Object.Remove() not freeing string keys. Fixed base.Invoke() to not depend on dynamic variable resolution.
突っ込まれた後、アンカーつけずに1行〜2行で小出しにする奴は全員クズ
sprintf ("%02d", $hoge); これと同じ事をAutoHotkeyでやるにはどう書けばいいんでしょうか?
自己解決したので取り下げます
PIDを全て取得したあと、なにをしたいのかを書いたほうがよいかと。
>>322 WinGet same_apps, list, ahk_exe notepad.exe
MsgBox % "Count: " same_apps
Loop % same_apps
{
id := same_apps%A_Index%
WinGet pid, pid, ahk_id %id%
MsgBox % "PID: " pid
}
Return
GUIによってクラス取得できなかったり、テキスト取得できなかったりします。 これては何が原因ですか? 解決策や大体方法ってありますか?
ttp://i.imgur.com/Bbac2.png StringReplaceとかRegExReplace()とか使おうとするとこのエラーが出るんですがどの文字がイリーガルなんでしょう?
Everything等でコピーしたファイル(群)をだいなファイラーのカレントディレクトリに貼り付けしようとしてるのですがこれが邪魔して先に進めません
一応1ファイルを貼り付けることは出来るようになったのですが複数ファイルとなると改行を半角スペースに置換しなければならないので……
当方AHK_L U32です
>>326 %Files%のとこ変数を指定するとこだから%で囲んだら「C:\Appsなんたらかんたら」っていう変数だと解釈されるよ
Test = xxxaiueoxxx
xxxaiueoxxx = xxxあいうえおxxx
StringReplace, OutputVar1, Test, xxx,, All
StringReplace, OutputVar2, %Test%, xxx,, All
MsgBox, %OutputVar1%`n%OutputVar2%
>>327 ありがとうございました、お陰様でうまくいきました
>>323 ごめんなさい。
目的を書いたほうがよかったですね。
同じProcessを複数実行したときに監視して1つだけ処理させたかったです。
>>324 できました。
ありがとうございます。
F2::Run, Explorer.exe %path% とかは?
332 :
330 :2012/12/22(土) 11:44:58.66 ID:/Phr9nK00
Windowsキーの割り当てが変更されるわけではないのでWin+Rとか関係なくね? sc029::send,{LWin} これで問題ないと思うんだが? 反応しないならこれでもいいし sc029:: Send,{LWin Down} Send,{LWin Up} Return
sc029+R って意味か失礼
>>333 >>4 他のキーならこれでいけるんだけど駄目かな?
;vk1Dsc07B = 無変換
#UseHook
vk1Dsc07B::
SendInput,{LWin Down}
KeyWait,vk1Dsc07B
SendInput,{LWin Up}
Return
>>334 後者で出来ました
ただDownとUpの間にsend,rとかはさむとまたWinキーを離してくれません
よく分からないので保留しときます
どうもでしたm(_ _)m
すみません、前スレでオナニー用片手フルコントロールキーマップについて質問しました777です
なんか
>>333 さんと同様なんですが、↓のようなのをやるとカタカナひらがなキー(vkF2sc070)を離してくれません
send,{vkF2sc070 Up}を最後に挟んだり
>>336 さん方式にしたりもしたんですが……
どうにかして離させることは出来ませんか? このままでは捗りません……
vkF2sc070 & k::
if(keymap=0){
send,: & k
} else if(keymap=1){
send,: & k
} else if(keymap=2){
send,: & k
} else if(keymap=3){
send,k
}
return
vkF2sc070 & l::
if(keymap=0){
send,: & l
} else if(keymap=1){
send,: & l
} else if(keymap=2){
send,: & l
} else if(keymap=3){
send,l
}
return
あ、すみません
>>4 読んでなかった
出直してきます
AとBのフォルダに同名ファイルが存在するときにAのものを削除するってどう書くんでしょ
FileAppendでクリップボード内の日本語を含むパスを扱うと日本語が・・になってしまうのですが、回避するにはどうすればいいのでしょう? 32bitのUnicode版なので2バイト文字云々は大丈夫だろうと思ってたんですが……
最後に, UTF-8ってつければいいとAutoHotkeyJPに書いてありました 流行らせるページしか見てなかった……
特定のウィンドウがアクティブな時にどれか(不特定)のキーを入力したら指定したウィンドウをアクティブにする という動作をさせる方法ってありますか?
#IfWInActiveつかって 面倒くさがらずに、全部のキー列挙するだけ
どのキーに何を割り当てるか悩みまくった一年だった……
あまりにスクリプトが増えて一つのキーじゃなしにストロークに割り当ててる ランチャーソフトfenrirを「AutoHotkeyスクリプトランチャー」にしてそこからコマンド入力して機能にアクセスしてる
Error1,2,3のタイトルのダイアログがアクティブになったら"キャンセル"を押させたいのですがうまく動きません。 一応、下のように作ってみたのですが起動させようとしても一向にAHKが反応してくれません。 反応しないとはタスクバーにHマークが出てこないと言う意味です。 間違っている点があれば教えて下さい。 #IfWinActive Error1 ahk_class #32770 ControlClick キャンセル, Error1 ahk_class #32770 return #IfWinActive #IfWinActive Error2 ahk_class #32770 ControlClick キャンセル, Error2 ahk_class #32770 return #IfWinActive #IfWinActive Error3 ahk_class #32770 ControlClick キャンセル, Error3 ahk_class #32770 return #IfWinActive
#If系はホットキーを定義する際に用います 通常の実行制御の場合はIfWinActiveを使用します いつ出るか分からないようなものを対象とするなら 自分でタイマーなりループを回して常に監視しておく必要があります
そこアルファベット順がないのが不便すぎて使えないんだよな いつも流行らせるページ使ってるわ
どこクリックすればそんなページ出るんだ? いずれにしても初心者にはコマンドの種別なんてできないし ググったあとに詳細調べるから全部あわせてアルファベット順になってくれてないと不便なんだよ
>>353 一覧表示って出来たのか…
さっそくブックマークに登録したw
どこのページも更新止まっちまったからなー いっそのことWIKI作ったほうがいいんだろうけど 下地用にコマンド解説内容、丸々コピーすると怒られるよね?w
流行らせるページ作者に確認すりゃええんでない。
>350-351 ありがと SetTimerで思った事ができそう
公式のDocumentationだけで十分だろ
英語が読めたらなぁ…
苦手意識から読めないと思ってるだけで 技術文書だと簡単な表現しか使われてないから 高校さえ出てれば専門用語を辞書検索してだいたい読めるはず
いちいち専門用語を辞書検索に反感して言うわけじゃないが Wiki作るのは賛成。 だが協力はしない
英語は読み込めば理解できるものでもパっと見で概略つかめないんだよね 辞書引いた直後には意味が分かっても次に見たときにまた読解が必要てのは自分はしんどいな コマンド解説やヘルプってそれそのものが辞典みたいなもんで ちょっと確認したいときでも何度も読み返すから未だに古い日本語ヘルプ使ってるわ ヘルプましんのchm編集すっげめんどくさかったけど
ClipWaitが効かないんですがなにか関係するコマンドありますか? おかげで古いクリップボードの中身が使われてしまいます……
そりゃ既にテキストとして読み取れる内容がクリップボードに入ってりゃclipwait意味ないでしょ
クリップボードをクリアしておくとかなんかしないと
まあとりあえず
>>14
お前ら意地悪だなw コード出させる間でもなく原因わかってんじゃんか
>>365 clipwaitは「クリップボードの中身が変わるまで」ではなく、
「クリップボードが空じゃなくなるまで」の判定
なので>368のいうように実行前にクリップボードをクリアしておくなどの処理が必要
Clipboardの使い方なんてほとんど定型なのに わざわざ動かないコード書かせてどんなエレガントな添削をするつもりなんだろ
14へ行け
流行らせるページのタスクトレイアイコン操作のスクリプトを使ってみたのですが、
Tray_GetInfoは格納される変数が全て0になってしまい、Tray_GetTextは文字化けしてしまうと言うか
何かバグが起こっているようで使う事が出来ません
Win32API等を呼び出せば出来るようデスガ1時間程格闘した結果ぼくにはちんぷんかんぷんです
環境はWindows764Bit、AutoHotkeyU64です
以下コードと画像です、もうほんとどうかお助けくだしい・・・
ttp://gazo.shitao.info/r/i/20130103053227_000.jpg DetectHiddenWindows,On
var:=Tray_GetCount()
msgbox %var%
loop %var%
{
idx=%A_index%
Tray_GetInfo(%idx%,hwnd,uid,msg,hicon)
msgbox %idx%`nhwnd %hwnd%`nuid %uid%`nmsg %msg%`nhicon %hicon%
}
loop %var%
{
idx=%A_index%
text:=Tray_GetText(%idx%)
msgbox %idx%`n%text%
}
以下関数
あそこのは、ANSI32bit専用なので、 U64だと動かない
CopyList.txtがある場合Copyを、MoveList.txtがある場合Moveを実行 その後使用したtxtを削除 ってのを↓以上に確実かつシンプルにやる方法ってありますか? ちなみに両txtがどちらも存在しないことはあっても同時に存在することはありません あと*CopyList.txtの*はTeraCopyの仕様です RunWait, C:\Soft\TeraCopy\TeraCopy.exe Copy *CopyList.txt "%DestDir%" If ErrorLevel <> 0 RunWait, C:\Soft\TeraCopy\TeraCopy.exe Move *MoveList.txt "%DestDir%" FileDelete, *List.txt
Loop, *List.txt MsgBox, %A_LoopFileName% FileDelete, *List.txt 下手に省略するより、普通にIfExist・Elseを使って書いた方が分かりやすくていいと思うけど
となるとこうなりますかね IfExist, CopyList.txt { RunWait, C:\Soft\TeraCopy\TeraCopy.exe Copy *CopyList.txt "%DestDir%" } else IfExist, MoveList.txt { RunWait, C:\Soft\TeraCopy\TeraCopy.exe Move *MoveList.txt "%DestDir%" } FileDelete, *List.txt return
あー、なんかもうよくわかんね
動いたけど結局長ったらしくなっちまった
IfExist, CopyList.txt
{
RunWait, C:\〜\TeraCopy.exe Copy *CopyList.txt "%DestDir%" /Close
FileDelete, *List.txt
}
elseIfExist, MoveList.txt
{
RunWait, C:\〜\TeraCopy.exe Move *MoveList.txt "%DestDir%" /Close
FileDelete, *List.txt
}
return
>>375 すいませんが全く意味わかりません
動くコードの最適化依頼した挙句、ほんの3行のコードも調べず音を上げるのかよ MsgBoxのとこを RunWaitに変えりゃいいだけだろ
Copy *CopyList.txtとMove *MoveList.txtだからLoopだけじゃ無理じゃね?
XPsp3→Win7sp1x64に移行中なんだけど、スクリプトコントロール使おうとするとエラー起きた。 oSC := ComObjCreate("ScriptControl") ------------------------------------------ Error: 0x80040154 - クラスが登録されていません WSHからCreateObject出来たし、ScriptControlが使えるのは確認済み。 他のオブジェクト、ComObjCreate("Scripting.FileSystemObject") は動いたりする。 検索しても同類の問題は見当たらないんだけど、何が問題か分かります?
失礼、32bit版入れたら通った
382 :
375 :2013/01/04(金) 09:06:57.50 ID:ksDudQWz0
ロジクールのM500かG500でAutohotkey使ってる人いますか? このマウスのボタンがすべてAHKで使えるか知りたいんですが。 バッファローのダメマウスでAHKが使えなくてこりたんでロジクールのマウス購入を検討しているんですが。
すべては無理。AHK で扱えるのは、 LButton - 左クリック RButton - 右クリック MButton - ミドルクリック XButton1 - G500 なら、おそらくサイドボタン XButton2 - G500 なら、おそらくサイドボタン こんだけ。その他のボタンは、付属のソフトウェア(SetPoint とか)で、 たとえば F13 とかに割り当てれば、AHK でも扱えるようになる
>>383 MMOとかするならあと2個ほどボタンが多いG700選ぶと快適かも?
>>384 なるほど。設定次第でなんとかいけるんですね。
あとチルトはそのままで割り当て無理ですか?
今使ってるエレコムのチルトホイールつきはWheel left rightでいけてますが。
>>385 ワイヤレスが嫌なんですよね。
チルトは大丈夫でしょ。
G700無線糞燃費だからオプションのケーブル使って有線で使うのが普通になってる。
>>387 そうですか。なら問題無いです。
>>388 オプションケーブルなんてあるんですね。昔のワイヤレスマウスはそういうのなかったんですよね。
やっぱりG500買います。After Effectsの編集作業にボタンがたくさんあると便利なんですおね。
どうもでした。
M950なんかは付属のケーブル繋げば充電もしてくれる 他はよう知らんが
G700も付属のケーブルを接続すれば 電池を抜いても有線マウスとして使える でも、付属ケーブルが糞固い
G700はUSBケーブル別途買い足しがデフォ 電池はだいたい一日ももたない
MX620の、ホイール押し下げのMButtonと、左上にある検索キーに「F15」を割り当てて、
F15をフックにしてahkでアプリごとの小技サブメニューを出す環境を作った。
http://ec2.images-amazon.com/images/I/41bgD5gMtOL._SL500_AA300_.jpg 左指をちょっと外側に出すだけで押せて、かなり快適だった。
マウスがぼろくなって代わりを探したら、こういう単独のボタンが付いた後継が
ほぼ無く、MButtonまでも廃止されたモデルが多くて泣いた・・・
MButtonが無くなった原因は、ホイールのカチカチとヌルヌルを
ホイールを押し下げるごとにトグルで切り替える物理スイッチに変わったため。
こんなの、めったに変えるもんじゃないから底面でいいんじゃないだろうか。
結局、ぼろいのを修理しながら使い続けてるけど、そろそろ限界、困ってる。
>>393 > こんなの、めったに変えるもんじゃないから
えー、専ブラとか画像ビューワとかで結構しょっちゅう切り替えてるわ
MButtonが廃止されてるのがあるから困ってるわけで。 >左クリック横にボタンがあるマウスも大量にあるのに何言ってんだ? ボタンが小さかったり、複数あって+と−などで結局どっちも使いにくかったり、 ストロークの少なく硬いタクトスイッチだったりと散々、 少なくともあんたがスレみてホイっと探せるような代替は1つも無いよ。
なんでマウススレになってんの?
ハード板にありがちな流れになってるな
ブラウザのパスワードボックスに入力したパスワードをAutoHotKeyで取得できたりするものでしょうか?
どういう用途?
聞いてやるなよw
Send, !d^a{Delete} SendRaw, javascript:alert(document.getElementById('hoge').value) Send, {Enter} とかやって、WinGetTextするとか COM使うほうがずっと楽だけど
Devasの検索結果画面についてお知恵をお貸しください
ttp://i.imgur.com/OFhI2.jpeg 点線で囲まれた(キーのフォーカスがある)部分をキーボードでダブルクリックしたいのですが、そこを指定するにはどうしたらいいのでしょう
マウスカーソルが乗ってる訳じゃないからMouseGetPosは無理ですし、ControlGetPos、ControlGetFocusも開きたい行と他の行の区別がつきませんし……
何か手は無いものでしょうか?
指定さえ出来ればClick系でClick, L, X, Y, 2とかでいいと思うのですが
当方の環境はVista32bit AHK_L U32です
なるべく条件後出しになりたくないので、お伝えすべきことがありましたらお教えください
横だけどComObjCreate("ScriptControl")便利だな COM使えるの知らなくてahk人生の9割損してたぜ
一つ前にアクティブだったウィンドウってどう取得すれば良いですか?
OnClipboardChange中でClipboard書き換えると その書き換えで再度OnClipboardChangeが呼ばれるみたいなんだけど、どうしたらいいですか? Jpにはそんなことならないって書いてあるけど、なってる
>>407 マニュアルにはすぐには呼ばれないからディレイいててね?って書いてた
If the script itself changes the clipboard, its OnClipboardChange label is typically not executed immediately;
that is, commands immediately below the command that changed the clipboard are likely to execute beforehand.
To force the label to execute immediately, use a short delay such as Sleep 20 after changing the clipboard.
;#Persistent
;return
; OnClipboardChange:
; ToolTip Clipboard data type: %A_EventInfo% %Clipboard%
; Clipboard := Clipboard . "-test"
; Sleep 50 ;0〜20msecとかだとうまくいきませんでした。
; ToolTip ; Turn off the tip.
; return
>>406 0.1秒周期でアクティブだったウィンドウを2代監視※ するというのは?
テストでAlt+F1を押したら前のに切り替る。
※重くてよろしくないので 多分ウィンドウの切り替えを監視するもっといい方法がmsdnとかにあるはず・・イベントとかフックとか
#Persistent
SetTimer, timer_get_prev_win, 100
return
timer_get_prev_win:
WinGet, hWnd, ID , A
if (hWnd_current != hWnd) {
ToolTip, %hWnd%, 100, 100, 1
hWnd_old := hWnd_current
hWnd_current := hWnd
} else {
ToolTip, , , , 1
}
return
; テスト
!F1::
WinActivate, ahk_id %hWnd_old%
return
>>408 ありがとう。Sleep30ぐらいから平気な感じでした。
>>409 おぉ!ありがとうございます
他にも色々と調べてみます
>>411 はナシで 試したらスクロール位置の情報しか取れなかった。
選択しているIndexを取得するにはControlGetのChoiceで試すか、
ControlGetのマニュアルにある、コントロールにKB_GETCURSELなんかを送ってみるといいのかな・・現在Devasじゃなくても どれも動かず・・・。
F1::
; (1) × 過去ログPart7によると文字列が取れるらしいけど何も取れず
ControlGet, _nChoice, Choice, , TScrollBox1, ahk_class TfrmResult
; (2) ×
SendMessage, KB_GETCURSEL := 0x0188, 0, 0, TScrollBox1, ahk_class TfrmResult
_nPos1 := ErrorLevel + 1 ; 0
; (3) × コントロール指定しても駄目
ControlGet, hWndTBox, HWND, , TScrollBox1, ahk_class TfrmResult
if (ErrorLevel = 0) {
SendMessage, KB_GETCURSEL := 0x0188, 0, 0, , ahk_id %hWndTBox%
_nPos2 := ErrorLevel + 1 ; 0
}
ListVars
return
ものすごく原始的だけどImageSearchで ↓の画像検索させるとかw ┌───┐ │………│ │………│ └───┘
>>414 サクッとうまく行ったw
CoordMode, Pixel, Window
CoordMode, Mouse, Window
Loop, 500
{
winY := 65 + ((A_Index-1) * 16)
; MouseMove, 20, winY
PixelGetColor, pgres, 20, winY
if (pgres != 0xffffff) {
break
}
}
if (pgres = 0) {
cY := winY - 10
pos = x20 y%cY%
Loop, 2
{
;ControlClick, %pos%, A ; うまくいかず
}
MouseGetPos, pX, pY
MouseClick,, 20, cY, 2, 0
MouseMove, pX, pY
}
ControlClickは使い方がよくわからんです・・
>>416 ここいらでギブアップですが、Spy++というVC6や2010付属のツールで
コントロールの種類や、クリックなどした時のメッセージが調べられるはずです。
(Spy++でDevasを監視しながら
>>413 を動かしたところ、全て空振りだった。
またダブルクリック時には実際、"LB_LBUTTONDBLCLK"というメッセージが相対X,Y座標で出されていて、
たとえば
>>415 のクリック部分は以下で再現可能)
pos := (winY << 16 ) | 20
SendMessage, LB_LBUTTONDBLCLK := 0x0203, 1, pos, TScrollBox1, ahk_class TfrmResult
色々考えていただきありがとうございます
こちらの理解が追い付かず
>>413-415 を別件と勘違いしてました……
>>415 は成功例ということではないのでしょうか?
^oにあてたのですが反応ありません
あとControlGet一つで済むような簡単なことではないんですね……これ
あれこれ考えるのがめんどいなら
>>414 の方法でいいんじゃない?
こんな感じとか
WinGetPos,,, Width, Height, A
ImageSearch, X, Y, 0, 0, Width, Height, %A_ScriptDir%\devas.png
MouseClick, L , X+10, Y+10, 2, 0
devas.pngの見本
ttp://www.dotup.org/uploda/www.dotup.org3827637.png
>>419 面倒というより理解するのにすごく時間がかかります……
今までキーリマップくらいしかしたことなかったので
流行らせるページの力を借りて
>>415 が何をしているのかはなんとなくわかるのですが、なぜ動かないのかはまったく……
>>420 希望通りに動きました、ありがとうございます!
これは見本を用意して画面の中でそれと一致する部分を探し座標を返す、というものですよね?
こんなスマートな方法があるなんて……
テキストエディタ gpad でautohotkeyのahkファイルを開いたときに コードで色分けするためのファイルって出回ってないでしょうか?
>>422 別のエディタだけど自力で作った、お前さんもそうしな
スレ違いだけど、AutoItスレ落ちたんだな
>>422-423 Extras\Editors\ って今インストーラーに含まれてないんだっけ?
昔はあんなかのSyntax加工すれば強調表示作るの楽だったんだが
うーむ、Lは微妙に初心者導入しにくくなってるんだな
>>426-427 この辺はテンプレに入れといてもいいかもしれない
これから始めてみようと言う時に、馴染みのエディタで色分けできるかどうかはモチベ維持に大きく関わるし
こだわり過ぎる必要もないがインデントはどうしてるだろう? AHKだとラベルと#if系のインデントの扱いに悩む 1) x:: send, {somekey} return 2) x:: send, {somekey} return 3) x:: send, {somekey} return #ifのインデントをするかどうか) #if xxx y::z #if
>>430 秀丸のアウトライン表示で^returnも出したいから2)かなぁ #ifの中はホットキーやラベル(^[0-9a-z]*:)も行頭でアウトライン判断したいのでインデント無しにしてる
自分も入口と出口を明確に視覚化したいので 2 functionの中のreturnはインデントするけど
俺は1だな その代りreturnの後に改行を沢山入れてる
2だね 始まりと終わりは明示したい アウトラインで^.+?::はやるが^returnまではやらんくていい returnの下には空行を一つ #Ifは参考になんないと思う
同じような事で悩んでる人はいるんだな… 基本2で#ifには前後に空行入れて挟んでるけど、モヤモヤする
#If も ホットキーもBSDスタイルで中括弧入れてるわ
最初は2)だったけど functionのreturnをどうするか悩んで結局1)に #ifはあんまり気にしてないな
意外と2の人多いんだな 公式だと1ぽいし、変則的な書き方だから自分だけかと思ってたわ
>>430 Emacs の ahk-mode.el 使ってるとデフォルトで 1 になる
Python ぽいインデントで特に悩んだことはないな
Vim向けに用意されているahk.vimを使うと インデックスが崩れまくるのは俺だけなんだろうか シンタックスは割りと綺麗に効くんだけどな
AHK_lに移行したらTraytip(タスクバーのバルーン)使えなくなった。 検索してもヒットしないが、同様の報告ありますか?どうしようもないのかな。
L64 / win7 x64 で普通に使えてるよ たぶん通知アイコンのカスタマイズで通知非表示になってんじゃない?
マウスのセンターボタンを押している間だけマウスの動きを上下左右逆にしたいのですが、 どのように書けばいいでしょうか?
>>443 MButton
getmousepos
mousemove
以上を組み合わせる
>>442 レスありがとう。よくわからないが最終的に再起動で解決。
OS側の何かの問題だったっぽい。
同じ種類のウインドウを新しく立ち上げる度に、前にあった同じ種類のウインドウよりも ”若干”右にずらして立ち上げる(立ち上げた後新しいウインドウを右にずらす)みたいなことってできますか? そのまま新しいウインドウをたちあげると、まったく同じ位置に重なってしまいます。 ためしにこう書いてみたのですが run C:\afxw\AFXW.EXE #^Right::WinMoveStep(8,0) 新しいウインドウが立ち上がる前に既存のウインドウを右にずらしてしまいます。 ウインドウのタイトルバーは、 「管理者: [パス]あふw 1.5」「管理者: 2)[パス]あふw 1.5」「管理者: 3)[パス]あふw 1.5」.... これって簡単にできますか?ぐぐればみつかりますか?
>>446 #F1::
WinGetPos, WinX, WinY,,, ahk_class TAfxWForm
Run, "D:\afxw\AFXW.EXE",,, PID
WinWait, ahk_class TAfxWForm ahk_pid %PID%
WinMove, ahk_class TAfxWForm ahk_pid %PID%,, (WinX+20), (WinY+0)
Return
WinWaitのウインドウ指定でRunで取得したPIDを使うのがポイント
なんか気が付いたら関数書いてたんで、折角のなので貼っておきますね #F1::RunWindowShift("D:\afxw\AFXW.EXE", 20, 0, "ahk_class TAfxWForm") RunWindowShift(Target, MoveX:=16, MoveY:=16, WinTitle:="", WinText:="", Timeout:=10) { SplitPath, Target, FileName, WorkDir IfWinExist, %WinTitle% ahk_exe %FileName%, %WinText% { WinGet, MinMax, MinMax, %WinTitle% ahk_exe %FileName%, %WinText% If (MinMax == 0) { WinGetPos, WinX, WinY,,, %WinTitle% ahk_exe %FileName%, %WinText% Run, %Target%, %WorkDir%,, PID WinWait, %WinTitle% ahk_pid %PID%, %WinText%, %Timeout% If (ErrorLevel) Return 0 WinGet, MinMax, MinMax, %WinTitle% ahk_pid %PID%, %WinText% If (MinMax == 0) WinMove, %WinTitle% ahk_pid %PID%, %WinText%, (WinX+MoveX), (WinY+MoveY) Return PID } } Run, %Target%, %WorkDir%,, PID Return PID }
>>447 ありがとうございました(^o^)
OutputVarPID 起動したプログラムのプロセスIDを格納する変数名。
すげー、こんな引数の使い方あるんだ。
助かりました。感謝します
Pythonとかでいうインポートはどうするのでしょうか
FileappendのTextをインデントさせたいのですが実際書き出す時はタブは入れたくありません どうすればいいでしょう? 例) ^c:: \tFileappend, \t( \tほにゃらら \tほにゃらら \tふにゃー \t), text.txt, UTF-8 return とすると↓ ほにゃらら ほにゃらら ふにゃー と書き出されるようにしたいです \tはタブだと思ってください ちなみに\nを使って一行にまとめることはできるのですが、ものすんごく長くなって可読性が著しく低いです あれ嫌です
LTrim
^c:: Fileappend, % "" . "ほにゃらら`n" . "ほにゃらら`n" . "ふにゃ〜" , text.txt, UTF-8 return
LTrimで出来ました、ありがとうございます
最初StringTrimLeftのことかと思っちゃいました
>>455 さんもありがとうございます
>>456 もっと甘やかしてください
さしあたっては一人の夜が寂しいので子守唄などを……
昔の時計のように 毎時00分になったら同じサウンドファイルを実行するようなタイマーを作りたい時はどうしたらいいですか? SetTimerは指定間隔でタイマーを実行するだけなので 今回のように指定時刻で発動したい場合にはどう書いたらいいか分かりませんでした
タスクスケジューラに登録するほうがよさげ
>>458 AHKでやりたいなら、SetTimerで1秒ごとに時間確認するしかないと思う
SetTimer, hoge, 1000
hoge:
If(A_Min = 0)
{
SoundPlay, test.wav
}
Return
>>460 間違えた、これじゃ0分台に毎秒鳴っちゃうなw
If(A_Min = 0 && A_Sec = 0)
に修正
予め設定した任意のウインドウが前面アクティブになったら、自動で特定のキーを押したいんだけど、 やっぱりloopとかでずっと毎度確認させておくしかありませんよね? ずっとそういうの走らせておくと負荷が増えるでしょうし、そういうの嫌いなので敬遠したいのです。 Autohotkeyじゃないフリーソフトで、特定のウインドウが前面になったら 作業をはじめるソフトありますけど、あれもどうせずっと監視負荷かかってるんでしょうけど
そんな負荷なんてあってないようなもんだと思うけど
>>459-461 ありがとうございます!
タスクスケジューラにWAVファイルを登録してみたら再生するたびに
いちいちWMPウィンドウが起動してしまうのでAHKのほうが良さそうに思いました
細かい話ですが
hoge:
If(A_Min = 0 && A_Sec = 0)
SoundPlay, test.wav
Return
スレッドを実行するのってどのくらい負荷がかかるんでしょうか?
極端ですが 1秒じゃなく100ミリ秒
SetTimer, hoge, 100 とかにスレッド実行間隔を狭めると、それなりに負荷が増えるのか
それともこんなのは無視できるぐらいの負荷なのでしょうか?
タスクマネージャー見ればいいじゃん
>>464 wavを直接登録しないで
wavを再生するだけのAHKスクリプトをタスクスケジューラーに登録すればいい
>>465-467 ありがとうございます。タスクマネージャでは何の負荷も掛かってないように見えます・・
時刻をチェック( If(A_Min = 0 && A_Sec = 0) )するぐらいだったら
超短期100ミリ毎でも気にならない負荷なんですね
10でも使用率全く変化しないと思うぞ
>>467 レスありがとうございました。まったく知りませんでした。
URL先の例文をちょこっと改変して、使ってやろうかしらと思ったら、
むずーw
>>470 Windows APIの仕様を調べたり理解するのは確かに労力がいるけど
アクティブウィンドウ切り替えを検知するだけならそのページのサンプルまんまでいけるよ
>>471 そうですか...自分ほんとになにも知らないので。
いけるとのことですので、もうちょっと見てみます。
でも、サンプルを見た限り、すべてのアクティブウインドウの切り替え
になにかさせるように見えます。特定の一つのソフトウェアのウインドウが
アクティブになったときに、キー押させたいんです。
誘導ありがとうございました。
わからなけりゃ無理せずにWinWaitActiveなりSetTimerでいいと思うけどな SleepなしにLoopぶん回すとかは論外だけど
>>472 コピペして動かしてみたら分かりやすいよ
アクティブウィンドウが変わるとツールチップが表示されると思うから
WinActivateHandler関数の中身のみ手を加えたりすれば良さそうだよね
>特定の一つのソフトウェアのウインドウがアクティブになったとき
これもWinActivateHandler関数の中に書いちゃえばいい
WinActivateHandler(...) {
IfWinActive("ahk_class somewindow") {
; 特定のウィンドウがアクティブになったときのみに
; この中に書いた内容を実行させる
}
}
ちょっと間違った IfWinActive()関数なんてなかった IfWinActive, ahk_class somewindow あるいは If WinActive("ahk_class somewindow") が正しい
教えて頂いてありがとうございます。 「それはできる」っていうことを教えて貰っただけでも大分お得なのですが、 テストしてみてもできないなぁ。 Tooltipは出るんですが、どのウインドウが全面になってもでてる。 限定できてない。おれの書いたのでは。 WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) { IfWinActive, ahk_class MozillaWindowClass WinGetTitle, title, ahk_id %hwnd% (前後行、同じ) の2行目を足しただけなんですが。 ほかにもコピペのを書き直さないといけないところあるかもしれないのかな。 IfWinActiveのあとを小括弧で囲むようなことをしないといけないのかな。 これあれば便利なのでもうちょっと考えてみます。
>>476 サンプルは、要するにウィンドウが切り替わったら教えてもらうってことだから、
どのウィンドウが前面に出てきてもツールチップが出るのは当たり前
あとはTooltipのとこだけ書き換えてそれが指定ウィンドウか確認するだけでしょ
WinGetClass, class, ahk_id %hwnd%
If (class = "AU3_Spy.exeで調べたクラス名")
{
Send,
}
なんかしらんがキーロガーらしきものが見つかったガクブル H@tKeysH@@k.DLL: Trojan.W32.HotKeysHook.A-2 と思ったら AHKで作ったエロゲ攻略スクリプトなような気がする
AHKもexeが作れるから、これでウイルスを作るやつがいてもおかしくないか
Aviraだと、AHK2EXEで作った実行ファイルは中身空でも全てウイルス認定されてた 誤検知報告してしばらくしたら検知されなくなったけど
>AHKで作ったエロゲ攻略スクリプト そっちの方が気になる あと実行ファイル化するとAvastでもこのファイル不審って反応するよ
なにそれw エロゲ攻略スクリプトとか怖すぎw
実際は操作補助スクリプトだろ
初歩的っぽいけどわからんので質問 キーが押されてる間、装飾キーを押してることにする やりたいこと的には(イメージ) a::send, ("Ctrl") & ("Shift")
485 :
名無しさん@お腹いっぱい。 :2013/01/23(水) 16:41:07.54 ID:F8cMVSu+0
>>484 a::
send, {ctrl down}{shift down}
keywait, a
send, {ctrl up}{shift up]
return
装飾キーはネタかもしれんけど正しくは修飾キー
>>485 ありがとう!keywaitがみそなのね
そして間違いの指摘もアリガトウ、思い込みってこわいね
みんなすごいことしてるよね 自分はコンビーネーションキーを変換したり それをソフトごとに挙動替えたりしかしてないわ どっかで拾ってきたスクリプトの一部分を理解して 自分なりにアレンジくらいはできるけど 0から大がかりなのは作れないわ
ctrl+hogeのショートカットが上手く機能しないソフトがあるんだけど、どうしたらいいかな? ^Right:: ControlSend,ClassHoge,{Right} return ・・・とか書いてもダメ。クラスを変えても、カーソルキーじゃない普通の文字にしてもダメ F1::みたいにファンクションキーだといけるから、環境じゃなくてソフトの問題だと思うんだけど・・・ ちなみに、なぜか^F1::だとダメで、+Rightだとおk ^Right::F1 F1:: ControlSend,ClassHoge,{Right} return ・・・もダメですた
>>488 他のSend使ってみたら?SendMode変更も
ControlSend使いたいならWinTitleは指定するべきじゃね
1. ControlSend,ClassHoge1,{Right},WintiTle
2. ControlSend,,{Right},ahk_id %ControlhWnd%
等
control名をClassNNで指定するなら末尾に番号つくはず、window SPYで確認してみ
確実にやりたいならコントロールのハンドル取得して2の方式でやればだいたいけるはず
https://sites.google.com/site/autohotkeyjp/reference/Window ていうか単にSendとControlSendをとりちがえてるだけな悪寒
>>489 inputもplayもダメですた・・・
>>490 ┌─┬─┐
│@│A│
├─┴─┤
│ B │
└───┘
アクティブウィンドウがこんな風に3つのペインに分かれてて、
フォーカスはBにある状態で@やAを操作したいんですよね
#IfWinActive, ahk_class WinTitle1
^Right::
ControlGet,controlHWND1,Hwnd,,ClassNN1,ahk_class WinTitle1
ControlSend,,{Right},ahk_id %controlHWND1%
return
#IfWinActive
こんな感じで書いてもダメでした
>>488 のスクリプト時もそうでしたが、上手くキーが通ることもあるんですが、
通ったり通らなかったりで・・・
連続して5回くらい通ったかと思うと次は3回通らなかったり、気まぐれで困ってます
あるソフトが〜 とあるアプリで〜 とボカす必要性って、どこにあるの?
XPですが現在選択しているファイルのファイル名のコピーを簡単に行うにはどうしたらいいでしょうか?
エロゲである 過去の質問遍歴がばれる
追記:ファイル名をクリップボードに送るという意味
Ctrl+cをSendしてSplitPath
ありがとう
ファイルのフルパス収得目的で同じようにahk使ってるけど、いつの間にかワードやエクセルで書式無視してのコピペに使うようになってた。
MouseMove,-16,0,,r のようなコードでマウスカーソルを相対移動させてる時に ユーザーがマウスカーソルを動かすと誤動作してしまうんですが マクロ実行中はユーザーからの入力をロックさせるということはできませんか
BlockInput
BlockInput,On ... BlockInput,Off ではさめばいいんですね。ありがとうございました。
変換キーを押しながらマウス移動下をしてる時に左右キーのどちらかが押されたら斜めに、って やりたいのですが思ったように動いてくれません。どこが悪いのでしょう vk1Csc079 & s:: if getkeystate("a") MouseMove, -11, 11 , 1, R else MouseMove, 0, 11 , 1, R return
変換+WASDで縦横斜めにカーソル移動したいってこと?
よくわかんないけど、 普段 → 普通にマウス操作。ex.マウス下に動かす 特殊 → マウス操作しつつ、変換+カーソル。ex.マウス下に動かしつつ、変換+左 ってことじゃね
ごめんなさい、見返したらよくわからないですね、、
マウス移動は上下左右それぞれ1つずつは動いてくれてるんですが
下を押しながら左で左下に、右を押しながら上を押して右上に。という感じでWASDでカーソル操作がしたいのですが
(結局は
>>503 がしたいけれど)斜めのところでどうすればいいのかわからない。といった感じです。へるぷみー!
>>505 vk1Csc079 & w::
vk1Csc079 & a::
vk1Csc079 & s::
vk1Csc079 & d::
While (GetKeyState("vk1Csc079", "P"))
{
MoveX := 0, MoveY := 0
MoveY += GetKeyState("w", "P") ? -11 : 0
MoveX += GetKeyState("a", "P") ? -11 : 0
MoveY += GetKeyState("s", "P") ? 11 : 0
MoveX += GetKeyState("d", "P") ? 11 : 0
Sleep, 10
MouseMove, %MoveX%, %MoveY%, 1, R
}
Return
これでどう?
>>506 う…うごかない、、ですがWASDには変数操作をさせて動かすという感じは
なんとなく伝わってきたのでそんなアプローチでやってみます
全角スペースそのままコピペしたとか?
全角スペースじゃなく【TAB】とかにした方がいいのかな?
キーボードがうんこ の可能性 Nキーロールオーバーのを買うか 斜め専用キーを設定するか
511 :
507 :2013/02/02(土) 02:07:57.06 ID:/AgeXOfO0
うごきました!ゼンカクでした。ありがとうございました。 ほんとにもう、、感謝です
二つやりたいことがあるのですが、いい方法がありましたら教えてください 1.任意のウィンドウのボタンをタスクバーから消す 2.Windows8では(7から?)タスクバーが常に最前面表示で領域固定されていて ウィンドウを最大化してもタスクバーを除いた部分までしか広がらず画面一杯に最大化できません 画面一杯にウィンドウを最大化させたい 調べてみた所ツールウィンドウ化することで目的を果たせそうだったのですが 試した結果、ウィンドウのスタイルがクラシック表示の様になり見た目がよくありません さらにいじってみるとTOOLWINDOWからWS_SYSMENUを取り除くことで 理屈は分からないのですが元通りのスタイルが適用されるようになりました 結果、一応以下の様なものができあがりました ただ素人考えなので、ウィンドウ開閉ボタンが消えてしまったりと難ありです もっとスマートな方法があったら教えて頂けないでしょうか WinSetTitle, ahk_class Progman,,XABCDExclude ;デスクトップとタスクバー除外 WinSetTitle, ahk_class Shell_TrayWnd,,XABCDExclude return #z:: DetectHiddenWindows, On WinWait, A WinGetActiveTitle, AW WinHide, %AW%,, XABCDExclude WinSet, ExStyle, ^0x80 ;WS_EX_TOOLWINDOW WinSet, Style, ^0x00080000 ;WS_SYSMENU WinSet, Topmost, TOGGLE WinShow, %AW% return
IME_GetConvertingについて質問です 変換候補窓において、alt+kをTabに割り当てようとしています(alt+kで候補を選択したいということです) しかし、alt+kは個別のウィンドウにおいても、よくキーが割り当てられています 例えばエディタではalt+kにPgDnを割り当てています AHKでは#IfWinActiveが優先するため、この場合、変換中でもalt+kはPgDnになってしまいます かといって、これを最優先するように最初の#IfWinとして書くと、 今度は個別の設定(PgDnなど)が効かなくなってしまいます どうにか変換中だけalt+kをTabにするうまい方法はないでしょうか Label1: Send,{Tab} return #IfWinActive, A !k:: if IME_GetConverting()=0 Hotkey,!k,Label1,Off else Hotkey,!k,Label1,On return #IfWinActive 一応、試行錯誤の末に、↑のように書いてみたのですが、うまくいきませんでした・・・
>>513 こんなのは?
#If IME_GetConverting()
!k::Send, {Tab}
#If
#IfWinActive エディタ指定
!k::Send, {PgDn}
#IfWinActive なんか別のソフト指定
!k::なんか別の処理
#IfWinActive
Windows8ではデスクトップアプリケーションでのみAutoHotKeyが動作するのでしょうか?
>>514 うまくいきました! ありがとうございます!
#Ifなんてコマンドがあるんですね・・・リファレンスには見当たりませんでした
一部のウィンドウ(ワードの検索小窓など)ではうまく動かないようですが、
エディタやブラウザなど、ほとんどの環境で問題なく変換候補が選べました
ありがとうございますー
517 :
名無しさん@お腹いっぱい。 :2013/02/04(月) 19:15:19.36 ID:0io5GWW80
自分もWindows8に関して質問させてください alttabmenuは7と同様に動作しますか? 両方使用している方がいればいいんですけど
>>516 ワードでうまく動かないのは修飾キーのAltが原因じゃない?
Altを使わないホットキーに変更したらうちではちゃんと動く
>>518 オレはWin8持ってないけど
>>94-103 あたりで話題になってる
>>519 見た感じAltTabMenuが8で動くかどうかとは具体的には書いてない感じですかねぇ
>>131 >>134 もそうですけど
ありがとうございます
>>519 IME_GetConverting()の制約だと思う、IMEのシームレス表示の時は値取れないから
>>519 ,521
ワード本文ではシームレス表示を切ることできちんと動作しました
動かないのはctr+Fで出る小窓上でのことです
こういうポップアップ系については、
ウィンドウ操作が特殊だったり難しかったりするという話なので、これは仕方ないと諦めております
十分便利ですので! 助かっております!
あ、
>>517 さん、ありがとうございます! 参考に致します!
>>522 普通に小窓のwin指定が別物だからってだけなのでは
ポップアップ系といっても大概は特殊でもないよ
>>526 おお!ありがとうございます、ばっちり動くようになりました
一応StrLen() *2 はやってみたんですが最初の一個しかドロップできなかったので
てっきりLengthが違ってるのかと思ってました
U対応やx64対応でポインタ周りはひと通り見なおしてはいたんですが
AllocやRtlMoveMemoryが出てくるとどうも思考停止してしまいます
すいません。 1) アス比そのままでウインドウを拡大したり縮小したりするのってどうしたらできますか? ウインドウの右下に矢印を持って行って斜め右下にドラッグするのと同じ機能のやつです。 2) マウスのダブルクリックを、特定のソフトウェアウインドウがアクティブなときに、違う機能を割り当てる ってのやっぱり無理ですよね? おしえてください。
>>528 1→winmoveをいじる
2→何がやっぱりなのかは分からないが通常は可能。AHKスレ検索なりを推奨
>>528 一応言っておくけど、スクリプトをまるまる上げるつもりはさらさらない
それを期待してるなら無駄だから帰ったら
「こうしたくてこうしたんですけどダメでした。どこがダメだか教えて下さい」なら、力になるけど
そういうツッコミを受けて、適当に歯抜けのコードを書いてここに書いて、 どこを修正すればいいんですかって何回も連発してたやついたな。 数年前だっけ。いわゆる日記君。
ダブルクリックはブロック、普通のクリックだったら通すってやりたいのですがどうすればよいのでしょうか? 本家,マニュアルのを参考にしたんですがいい考えがうかびません。。 #If MouseIsOver("ahk_class Notepad", "Edit1") ; テスト用。メモ帳の編集部分だけ有効 LButton:: KeyWait, LButton KeyWait, LButton, D T.3 If (!ErrorLevel) { msgbox 別の機能 return } ;;; Click (遅い return #If MouseIsOver(WinTitle, ctrl_in := "") { MouseGetPos,,,hWnd, ctrl_cur return (ctrl_in == "" || (ctrl_in && ctrl_in == ctrl_cur)) && WinExist(WinTitle . " ahk_id " . hWnd) }
>>532 書いてみたら大して変わらなかったでござる。
RButton::
KeyWait,RButton
KeyWait,RButton,D T0.2
If(errorlevel){
msgbox,( ゚∀゚ )キタ━━━!
}
Return
目的は達成したのか?
3行目にClickで妥協しました
stringTrimLeft , outstr , %A_LoopFileFullPath% , StrLen(%3%) loopのフルパスから%3%(フォルダを指定)を削ってサブフォルダを含めたパスを取りたいんですけど エラー出て困っています。 Error: The following variable name contains an illegal character: 引数は使えないとか制限有りますか?
splitpath
ではなさそうだが、よくわからん
>>537 エラーを素直に読んだら駄目文字の所為だから
L版使わなきゃ駄目じゃないの?
外してたらスマン
inputvarのところは%A_LoopFileFullPath%じゃなくてA_LoopFileFullPathでしょ やりたいことがよくわからんがStringReplaceじゃだめなの?
543 :
537 :2013/02/10(日) 09:44:29.79 ID:b/IlD6Zo0
色々有り難うございます でも上手くいきませんでした。 やりたいこと Aフォルダ(%1%)からBフォルダ(%2%)にある同名ファイルだけを抽出してCフォルダ(%3%)に置きたい。 その際、Bフォルダに存在しているがAフォルダにない場合はerror.logに書き出し、元のファイルを抜き出す。 %1% = C:\Users\myname\Desktop\dlg\source %2% = C:\Users\myname\Desktop\dlg\target %3% = C:\Users\myname\Desktop\dlg\result ahk2exeで実行ファイル化して batchから起動しています。 --------------------------------------------------以下ソース FileCopyDir, %2% , %3% , 1 sleep,1000 Loop, %3%\*.* ,1,1 { StringTrimLeft , outstr , A_LoopFileFullPath , StrLen(%3%) IfExist %1%\%outstr% { FileCopy, %1%\%outstr%, %A_LoopFileFullPath% , 1 } else { FileAppend ,does not exist: %1%\%outstr% -> %A_LoopFileDir%\%A_LoopFileName%`r`n,%A_ScriptDir%\error.log } } --------------------------------------------------終わり 最初は%1% %2%だけで上書きにしようと思っていたのですが 途中で%3%に書きだすように変更したために変な感じになってます・・・ これでダメな部分がわかりますでしょうか?
544 :
537 :2013/02/10(日) 09:48:07.90 ID:b/IlD6Zo0
追記 AフォルダとBフォルダにはサブフォルダがあります。
だからCountは直値なんだってば あとコマンドラインパラメータは変数としては使えないから別の変数に取らないとダメ result = %3% StringTrimLeft , outstr , A_LoopFileFullPath , % StrLen(result) StrLen(%3%) は「C:\Users\myname\Desktop\dlg\result」という名前の変数を指定してることになる
\も削るから % StrLen(result "\") か >542のsubstr()も outstr := Substr(A_LoopFileFullPath,Strlen(result "\")+1) だな
547 :
537 :2013/02/10(日) 11:24:48.82 ID:b/IlD6Zo0
直値ってそういう意味か 言われてみれば、そのまんまのエラーが出てるね %とかよくわからん部分はまだあるけど動きたみたいです。 マジありがとう
>>548 SciTE4AutoHotkeyで、開いたファイルの履歴を消すことはできないのかな
どこで設定するかが分からない
誰か分かる人いる?
>>549 Global properties(日本語の場合「共有〜設定」) "save.recent=1" -> "save.recent=0"
じゃダメだよね・・
マウスジェスチャのサブルーチンにウィンドウ移動のキー割り当てをしてるのですが タイトル指定(日本語)で移動させるのはどうすればよいのでしょうか ^F1::WinMove,ahk_class (AU3_Spy.exeでクラス指定),,2488,123 ← 動く ^F2::WinMove,WinTitle (AU3_Spy.exeで日本語のタイトル指定),,0,0 ← 動かない AHK unicode64bit 1.1.09.00
552 :
551 :2013/02/13(水) 20:41:05.08 ID:hExK1ZcuT
すみません WinTitleのところに入れるのですね。申し訳ない
>>550 ありがとうございます!それでokです!
BlockInput, Onを使ってもホットキーに割り込まれてしまうんですが、 ホットキーも完全にブロックする方法ってありませんか?
>>554 コード見せてkds BlockInputにはhook hotkeyはtriggerdってかいてあるからだめなのかな
#MaxThreads1 か#MaxThreadsPerHotkey 1 か 実行中の時だけ Hotkey, キー名,, Off するとか・・
556 :
554 :2013/02/15(金) 11:07:09.89 ID:uwar21Mq0
\:: CoordMode, Mouse, Relative KeyWait, LButton BlockInput, On MouseGetPos, x0, y0 MouseMove, 380, 240, 0 MouseClick MouseMove, 320, 320, 0 MouseClick MouseMove, 600, 70, 0 MouseClick ClipSaved := ClipboardAll Clipboard := Send, {Left 3}+{Left 3}^c ClipWait, 1 if ErrorLevel { BlockInput, Off MsgBox, クリップボードにテキストをコピーできませんでした。 return } If Clipboard Is integer SetFormat, Float, 03 Clipboard += 1.0 Sleep, 25 Send, ^v Clipboard := ClipSaved ClipSaved := MouseMove, 440, 400, 0 MouseClick MouseMove, x0, y0, 0 BlockInput, Off return
557 :
554 :2013/02/15(金) 11:08:39.30 ID:uwar21Mq0
>>555 Murdoc Cutterで1回押すごとにテキストボックスのファイル名をカウントアップして出力ボタンを押すというものです
>>556 これの実行中に以下のホットキー(1GOP進める)を押すとファイル名のカウントアップが行われず
そのまま出力しようとしてファイル名重複のアラートが出ます(恐らく選択範囲をコピーする前に解除してる)
Right::
CoordMode, Mouse, Relative
KeyWait, LButton
BlockInput, On
MouseGetPos, x1, y1
MouseMove, 210, 320, 0
MouseClick
Sleep, 25
MouseMove, x1, y1, 0
BlockInput, Off
return
Murdoc Cutterで最終的になにをやってるのかがわからないが、 デフォルトで、入力ファイルと同じファイル名が自動的に入ってなかったっけ? まずは重複しないファイル名を適当につけておいて、あとで整列する仕事を AHKでやらせたほうが効率的な気がする
559 :
554 :2013/02/15(金) 11:35:53.89 ID:uwar21Mq0
>>558 1本を細切れにしてると思っていいです
連結させずにバラバラに吐かせるためにこうなってます
ああなるほど。 それだったら俺は、 ・マウスカーソル絶対値指定で外部アプリを制御するのが億劫 ・クリップボード経由でいじると、いろいろと想定外の何かが必ず起きる が経験則で多いので、出力するファイルの新規作成をAHKで監視して、 新作がきたらfilemoveですぐにどけて、Murdocのほうは常に同じファイル名で outさせるかなぁ
ちなみにMurdocは「出力完了」のダイアログをちゃんと閉じてからじゃないと、 filemoveができない。このへんの自動化は画面を見て監視する必要がある。
>>555 #MaxThreads1は非推奨らしいです
#MaxThreadsPerHotkeyで挟んでみましたが効果はありませんでした
Hotkey, キー名,, Off はRightの指定ができなかったです
>>560 AHKは割り当て以外の使い方が全くわからないので少し時間がかかりそうです
とりあえずSendをSendInputにしてスピードを上げて凌いでみます
>>564 ありがとう
代替機能をフリーソフトで探しにいきます><
そこにリンク貼ってある関数でいいじゃん 俺も使ってるよ
ディレクトリ名が、大文字と小文字で相違する場面でハマってしまいました。 実際に存在してるディレクトリ名「C:\AbC」 ifexistだと、Windows側が差を吸収して常に「存在あり」になります。 大文字小文字を厳格に指定するFTPのダウンロード制御で、 「転送先のディレクトリがないよ」というエラーが出てしまいました。 ifexist,C:\ABC →成立 ifexist,C:\abc →成立 ifexist,C:\AbC →成立 ↓こうしたい ifexist,C:\ABC →不成立 ifexist,C:\abc →不成立 ifexist,C:\AbC →成立 一番最後だけ通過するよう厳格にチェックするには、どのようにしたらよいでしょうか。
>>567 Loop, c:\*, 2
{
if (RegExMatch(A_LoopFileFullPath, "AbC")) {
msgbox % "hits: " A_LoopFileFullPath
}
}
RegExMatch だとデフォルトでcase sensitiveでした。。ディレクトリ名を一発で引っ張れるのないかなぁ
検索ソフトのEverythingがアクティブな状態だとautohotkey、mousgesture.ahkの マウスジェスチャーやショートカットキーが働かないんですがどうすればいいのでしょうか 他のクリップボード監視ソフト等の呼び出しキーショートカットも効かなかったりと Everything自体が他ソフトのショートカットを動かないようにしてるっぽいんですが Everythingにautohotkeyでキーショートカットを当てることを書いてるサイトもあったりするんですよね
管理者権限とかじゃねーの
AHKLはインストーラ版しか無いのでしょうか?
プログラム未熟者ですが 関数とGosubてどう使い分けるのでしょうか? 戻り値を必要としない場合でも関数で全てこと足りると思うのですが 関数のデメリットもあるんでしょうか?
>>573 自分の確認不足でした。
ありがとうございます。
Altキーを押しながらCを押すって動作をさせたい場合はどの様に入力したら良いのでしょうか? send,!C では駄目でした。 先にAltを押してほんの一瞬遅れてCを押すって感じにしたいです。
send,{alt down} sleep,100 send,c こんな感じ?
>>576 動きました!が、
Altキーが押しっぱなしの状態になるのでが
そうなる事を回避するにはどうしたら良いのでしょうか?
手動でAltキーを押せば解除出来ます。
send,{alt up}を加えてください
>>572 Gosubは関数が実装される前にできたもの
MenuやTimerとかは今でもサブルーチンラベルに飛ぶので
他は大抵ら関数で代替えできるのでそっち使えばいい
あと、あまりお薦めできる使い方じゃないが、subはラベルに飛ばしてるだけなので
関数みたいに入口は明確に一つじゃなくても実はかまわない
if (前準備まだ)
Gosub jyunbi ;前準備→本番
Else
Gosub honban ;本番だけ
次の処理〜
jyunbi:
前準備1
前準備2
前準備3
honban:
本番処理
return
×MenuやTimerとかは今でもサブルーチンラベルに飛ぶので ○MenuやTimerとかは今でもサブルーチンラベルに飛ぶので避けられないけど
1月からローカルで延々と作業してましたがようやく形になりましたので告知させていただきます。
サイト名: AutoHotkey Wiki
URL:
http://ahkwiki.net AutoHotkeyを流行らせるページ、AutoHotkeyJp 様方には2週間ほど前に文章を使用させていただくという旨のメールを送っています。
編集段階で気がついた部分はなるべく修正しましたがまだまだ編集すべきところがたくさんあると思います、皆様のお力添えをどうぞよろしくお願いいたします。
お疲れ様です サイドバーのコマンドはデフォで開いてくれてた方がいいような あとページタイトルが日本語+括弧になってる記事の編集ページのほとんどに警告が出てるような
>>583 さっそくのアクセスありがとうございます。
エラー?ですがこちらでは再現しなかったので申し訳ないですが
ページ名、使用環境(OS、ブラウザ)、警告の内容 教えていただけますか?
以下の場合は仕様です。
警告: このページの記事名の付け方は、当ウィキペディアのガイドラインなどにそっていないかもしれません。理由は以下のとおりです。
警告:ログインしていません。編集すると、IPアドレスがこのページの編集履歴に記録されます。
autohotkeyjpは更新が止まったみたいだから、こう引き継がれるのはいいことだね 開発環境の構築とデバッグ機能を充実してほしい
他人が翻訳して書いた文章をコピペしてアフィ付けただけじゃないの。そういや似たような事がマウ筋であったな
あの流れをうんざりするほど見てる身としては話をふるやつもウザイ
590 :
537 :2013/02/21(木) 20:01:58.23 ID:tqzmtA9P0
マジで足引っ張るだけのやつはウザいな。クズすぎる
>>580 凄く勉強になりました ありがとうございます
ラベルをreturnで終わらせないで続けて書けば
入り口を複数作ることができるという事ですね
ドメインやサーバの費用にするとか言うのかもだけど アフィの貼りっぷりがなんともw 他人の仕事に乗っかってサイトを作って wikiだから更新も人任せでもいけるし カネ目当てのページ扱いされるのは 覚悟の上でやってるんじゃないの 最初だけちょっと自分で足してれば とりあえず格好もつくし こうは書いたけど、俺としてはカネ目当てのほうが 継続的にメンテしてくれそうだし歓迎だな 気分悪いって奴は無料wikiでも別に立ち上げて どんどん使われるように頑張ってくれよ ライセンスがパブリックドメインになってるから アフィwikiのほうから全記事をコピーしても大丈夫だぞ
あ?因縁つけてんのかと思ったらアフィ貼りまくりなん? フィルターで全部消えてるから見えないわw
Gosubはホットキーに飛べるじゃん
>>594 もうちょっと詳しくお願いします
逆なら分かるのですが・・・
ホットキー「に」て、どういうこと?
俺もオミトロンで全く見えないから気づかなかった
ホットキーラベルに飛べるってことじゃないの a:: Msgbox,a Return b:: GoSub,a Msgbox,b Return
ウェブサイトで5か所を自動でクリックさせたくて下記のを作ってみました。 クリックはできるようになったんですが、スペースキーを押すまで繰り返すように作れないでしょうか? ぐぐったりしてるんですが、まだ自分のスキルでは無理なようで・・お願いします #IfWinActive ahk_class MozillaWindowClass F1:: MouseGetPos, x0, y0 WinGetPos, X, Y, Width, Height MouseMove, 730, 460 MouseClick, left Sleep, 1000 MouseMove, 400, 535 MouseClick, left Sleep, 1000 MouseMove, 660, 500 MouseClick, left Sleep, 1000 MouseMove, 660, 525 MouseClick, left Sleep, 1000 MouseMove, 660, 430 MouseClick, left Return #IfWinActive
>>599 loopとgetkeystate使え
loop{
繰り返したい内容
if getkeystate(space)
return
}
右クリック + ホイールダウンをAlt + Tabにしたいのですが どのように書けばいいでしょうか?
>>603 出来ました
Ctrl + F6の場合はどうすればいいでしょうか?
RButton & WheelDown::Send {Ctrl Down}{F6}{Ctrl Up}
としたところ単独の右クリックが無効になってしまいます…
>>604 そんなの当たり前
いちいち書き込んでないで、
>>603 から学べよ
wikiの中を検索しろ
いくらなんでも
>>601 ,
>>604 みたいな、糞みたいに初歩的な質問をするんじゃねーよ
その程度のことなら、「基本的な使い方」みたいなとこに目を通すだけでわかるだろうが
わからないならお前にこのソフトは向いてない、諦めろ
>>606 やってみました
これだとホイールを回したときも右クリックのポップアップが出てしまいます
なかなか難しいですね
その辺は誰もが一度ははまる罠 左右マウス乗っ取りは制御むずかしいよ、微妙な操作感で妥協するか 諦めてX1,X2あたりに割り振るかしたほうがいい
Loop,PARSEで特定の拡張子のフルパスを列挙するのに Var := "D:\myDocuments\*.zip`n" Var .= "D:\myDocuments\*.rar`n" ・・・ Loop, Parse, Var, `n のようにしているのですが、一行で複数特定の拡張子を当てはめるにはどうすればいいのでしょうか
>>609 If (RegExMatch(A_LoopField, "i)\.(zip|rar)$"))
マウスパッドの純正ソフトで特定動作で.exeを実行出来るツールがあるのですが .ahkは指定出来ません。 AHKLで作った物を.exeにする方法があれば教えて下さい。
>>610 正規表現はまだ手に負えそうにないので現状で我慢します
ありがとうございました
>>603 報告ありがとうございます。先ほど不具合を修正いたしました。
Mediawiki検索で大文字小文字の違いを無視するように設定を変更
Googleカスタム検索をサイドバーに追加
乙乙
MDI子ウィンドウをアクティブにするにはどうしたらいいのでしょうか? WinActivate, ahk_id %hWnd%;hWnd=子ウィンドウのウィンドウハンドルです ではできませんでした 他の子ウィンドウがアクティブになっている状態でhWndを前面に持ってきたいんです
>>616 具体的にどのプログラムに対して(知られるのが嫌なら同じ状況が再現できる物)
どんなスクリプト書いたか(必要な部分全文 他のミスかどうか判断できない)
>>617 有難うございます。プログラムはEXCEL2007です。
hWnd := getMousePosWindowEx()
getMousePosWindowEx(def_cmode = 1)
{
CoordMode,Mouse,Screen
MouseGetPos, mx,my
hWnd := DllCall("WindowFromPoint",Int,mx, Int,my, UInt)
Loop { WinGet,ExStyle,ExStyle,ahk_id %hWnd% if (ExStyle & 0x100 = 0x100) ;WS_EX_WINDOWEDGE { WinGet,Style,Style,ahk_id %hWnd% if (Style & 0x00C00000 = 0x00C00000) ;WS_CAPTION Break } hWnd := DllCall("GetParent",UInt,hWnd, UInt) ;親ウィンドウ検索 ifEqual,hWnd,0, Break ;Error } ifEqual def_cmode,1, CoordMode,Mouse,Relative return hWnd } IfWinNotActive, ahk_id %hWnd% WinActivate, ahk_id %hWnd% ※getMousePosWindowExを作ってくださった人有難うございます。 ↑のように書いて重なり合った子ウィンドウをアクティブ化したいです
書き込めないため分割したらインデントもなく見難くなってしまいました・・ すみません。気をつけます
Excelは WM_MDIACTIVATEでアクティブ化できないんだよな しょうがないんで原始的にControlClickで対応してる MdiClient := DllCall("GetParent",Ptr,hChild, Ptr) ; SendMessage, 0x229, 0,0,,ahk_id %MdiClient% ;WM_MDIGETACTIVE if (hChild != ErrorLevel) { if(ChildClsName = "Excel7") ;Excelカスタム ControlClick,,ahk_id %hChild% Else PostMessage,0x222, %hChild%,0,,ahk_id %MdiClient% ;WM_MDIACTIVATE } インデントは全角スペースなんで置換よろしく
>>569 亀レスだがEverythingの1.3.1.636b Betaだと対応してる
>>621 本当に有難うございます。
hChildは hChild := getMousePosWindowEx() で取得するので合っていますよね?
ChildClsName = "Excel7"の部分が Excelのバージョンによって違うのかExcel2007では動きませんでした・・
(他のMDIソフトウェアでは動きました!)
SendMessage, 0x229, 0,0,,ahk_id %MdiClient% ;WM_MDIGETACTIVE
if (hChild != ErrorLevel)
の部分が理解できないため宜しければ解説頂けないでしょうか
>>624 本当にありがとうございました!
なるほど戻り値がErrorLevelに格納されているんですね
Excelでもバッチリです
Win32API無知でスマソ MdiClient := DllCall("GetParent",Ptr,hChild, Ptr) と MdiClient := DllCall("GetParent",UInt,hChild, UInt) PtrはL専用という以外に 両者はどう違うんですか?
x86とx64ではポインタ型のバッファサイズが違うため、UIntのままではx64版で正常に機能しない Ptrって書いとけばLが自動でサイズ判断してくれる >618-619の getMousePosWindowEx()は 2005年くらいに作った関数なのでそのあたり未考慮だが DllCallの部分だけ修正すればx64 でもおkだと思う hWnd := DllCall("WindowFromPoint",Int,mx, Int,my, Ptr) hWnd := DllCall("GetParent"Ptr),hWnd,Ptr)
×hWnd := DllCall("GetParent"Ptr),hWnd,Ptr) ○hWnd := DllCall("GetParent",Ptr,hWnd,Ptr)
Windows7でWindowsサービスのウィンドウ上でマウスの横取りができないのですが、これってAutoHotKeyのexeに何日のプロパティを設定すれば治ったと思ったのですが、何を変更すればよかったのでしたっけ?
管理者権限の問題じゃ無いの?
UAC無効にしてる?
モニタを外部出力のFn+F3キーをAutoHotKeyでコントロールしようと思い、「#InstallKeybdHook」でキーを調べましたが何も出力されませんでした。 「Fn+F3キー」のモニタの外部出力をAutoHotKeyで制御する方法はあるでしょうか?
Fnは、キーボードのコントローラに届くものと、届かないものがある。 KOJINSHAとかの、さほどカスタマイズしてない(会社的に出来ない)三流メーカーのほうが、 キーコードがそのまま出てきたりして制御しやすい。 届かない奴は、なにをやってもダメだと思う。 画面関係の常駐ユーティリティが入ってて、タスクトレイから 同じ切り替え操作ができるならば、そっちを攻略したほうがよい。
その箇所の文字色を取得すればいいんじゃない?
文字色ですか・・・ メニューを表示させることなく、メニューの状態を取得できますかね?
>>638 WinMenuSelectItemとかでメニューバーのコマンドを送ることはできても
状態を取得するのは無理なんですね。
詳しくありがとうございます。
動的に取得したかったのでini経由というのは・・・
でもアイデアサンクス
統計(T)のオンオフをAHKから制御するのであったら AHK内でAHK(T)のオンオフ状態を変数に保持しておくとか オンオフを変更するときにAHKを絡ませておくのが現実的では
サンクス。 やってみます
指定した秒数でAHKLの効果が消えるって設定は出来ますか? 初心者なので色々なホームページを見ながら作っているのですが キーが押しっぱなしになって解除方法が分からない事とかがちょいちょい起こるので そんな設定があればなと思いまして
DelayまたはTimterのあとにReload だがそういう対症療法はホントはあまり取るべきじゃない 挙動がおかしいのが記述に問題があるからだと思われ、書き方を見なおすべき 修飾キーの押しっぱなし対処は>6を参照
その押しっぱなしになるスクリプトを見せてくれないとアドバイスのしようがない
1. Xを1回押したらそのままShift+↑を入力 2. Xをもう1回押したらShift+↓を入力 3. Xをさらにもう1回押したらShift+↑ といった感じで1つのキーで交互に入力ってどう書いたらいいんでしょう
フラグ立てて前回の送信キーが何だったか判断すればいい キーリピートあるから押下解除まちの処理も必要
なるほど頑張りますありがとう!
Send, +2でなぜかShift+2じゃなくてShiftと2が別々に入力されてるみたいなんだけどなんでだろう…
GoSubで飛んだラベル先で、ラベル呼び出し元に戻さずスクリプトを停止することってできるのでしょうか? 終了フラグ立てて戻ってから停止させればいいだけなので、特に困ってるわけではないのですが
650 :
649 :2013/03/04(月) 14:17:52.49 ID:+dbxIVs10
すみません、自己解決しました Exitってコマンドがあるんですね
651 :
名無しさん@お腹いっぱい。 :2013/03/05(火) 15:23:22.17 ID:nSr3VUUbP
Win8でPixel系のコマンドを高速化する方法はありませんか?
そういや、そんな問題があったな。>win7で画像認識が遅い件 有料契約期間中はDLし放題のエロ動画を1ヶ月でフルコンプすべく、 XPマシンを用意して、DLボタン押し処理を24時間連続でやったわ
こちらの環境では遅延を感じること使えているがどうなんだろう それでも明らかに遅いなら、コマンド自体の高速化はおそらく厳しいと思うから やりたいことを実現するための方法の代案を考えてみては
仮想XPで代用できるかも知れないのでそっちの方向で進めてみます レスthx
メニューの選択はキー操作で可能ですが、メニューバー下のツールバー(?)のアイコン通したいのですが、ピクセル指定のマウスクリックではなく、他の簡単な方法はないでしょうか?
>>655 アプリケーションに依ってしまい、汎用的に使える方法はピクセル検索以外にはない
むしろアイコンが用意されているものはメニューバーから全て選べることが多いはず
メニューバーに載っているものはAlt使えば全てワンアクションでAHKなら実行できる
すいません、教えてください。 以前こちらであふのウインドウを新しく一つ立ち上げたときに、あふの既存のウインドウよりも少し右にずらす スクリプトを教えて頂きました。非常に有用なのですが、わがままながらまたひとつ改善希望があります。 しかし、それでは、新しくウインドウをもう一つ立ち上げた時に そのフォルダ表示が既存のあふウインドウのフォルダ表示と全く同じ(複製)ではなく、 直近に閉じたあふウインドウのフォルダ表示を復活させてしまうのです。(あふの設定で項目なしっぽい?) Alt+z というショートカットキーコマンドをすると、既存のあふウインドウとまったく同じフォルダ表示のウインドウを一つ 立ち上げることができるのですが、それだと教えていただいたスクリプトに組み込めません。 run....PID というのが使えないからだと思います。 自分でいま考えたところだと、同じソフトのウインドウが2つ立ち上げたときに後に立ち上げた ウインドウのみを指定して移動させるってのが思いつきません。 以前教えていただいたスクリプトはこれです。 WinGetPos, WinX, WinY,,, ahk_class TAfxWForm Run, "C:\afxw\AFXW.EXE",,, PID WinWait, ahk_class TAfxWForm ahk_pid %PID% WinMove, ahk_class TAfxWForm ahk_pid %PID%,, (WinX+40), (WinY+0) あふに関係することですが、現状、こちらにのみに書き込みました。 すいません、どうにかなりませんか?よろしくお願いします。
キーボード入力を横取りすることはできるようですが、ジョイパッドの入力を横取りすることはできますか?
>>657 ド素人のオレが即席で書いた
エロイ人に怒られてみたいので誰かよろしく
#IfWinActive, ahk_class TAfxWForm
!z::
WinGet, oldPID, PID, A
WinGetPos, WinX, WinY,,, A
Send, !z
Sleep, 200
Loop
WinGet, newPID, PID, ahk_class TAfxWForm
Until newPID != oldPID
WinMove, ahk_pid %newPID%,, WinX+40, WinY
Return
>>659 読んだのですが、それらしい機能が見当たらなかったので確認の為に質問してみました。
>>661 そうでしたか
ジョイスティックは、普通のボタンに関しては横取りできる
しかしボタン以外は厳しい
ジョイスティックを扱いたいならJoyToKeyを使うとよいです
個人的には、JoyToKeyでジョイスティックにキーを設定し、その上からAHKでカスタマイズしている
よーわからんがジョイパッドっつーのはジョイスティックとは違うコード吐くんかい?
同じだったはず…上記の発言はその前提で説明してしまったので、 もしパッドとスティックで挙動が違っていたならすまない
>>660 書いて頂いてありがとうございました。
動きました。最初の試行のうち2回ぐらい何度設定したキーを押しても
あふの2つ目が起動しなかったり、立ち上がった2つ目のあふのフォントが
おかしかったりしたのですが、いま何度もやってみると、ちゃんと動いてくれました。
あふとかほかの問題だったのかな。
なるほどAlT Z の前にWingetしておくのですね。
でもどうやって新しいウインドウのPIDを特定してPIDを割り当ててるんだろう。
Sleep200がミソなのかな。loopはなんだろう。
ぼくにはわかりませんが使わさせて頂きます。
ありがとうございました。
>>662 ボタンだけなら横取りできるんですね、見落としてたようです。
ゲーム側の設定では未使用にできないボタンがあり、JTKでの設定では二重になってしまうのでイベント
を横取りできないかと思っていたんです。
回答ありがとうございました、探して設定してみます
>>665 loopとsleepがわからないようなレベルでahkが使えるわけないだろ
古事記乙
> ぼくにはわかりませんが使わさせて頂きます。 ちょっとイラっときた
そいつ前から言い回しに苛ついてた
気持ち悪いのがたくさん釣れましたねー
クレクレは親切な餌やり人が出た時点で負け
>>668 すいません。どこがダメなの?おしえてほしい。
だってわからないし。
この流れで質問ってちょっと怖いですけどお願いします あるキーがリマップ出来ないんですが何が干渉してるのか探る方法なにかありませんか? IEとIronだけ:をリマップ出来ず、それらだけ元のahkファイルから抜き出して実行するとリマップ出来るので他の部分から妨害されてると思うのですが
「あるキーが」って、なんで隠す必要があるの?
ABCとその他大勢のソフトをahk_classで指定したahkファイルがあるんですが、
ABどちらかでもあるとCの:のリマップが阻害されます。AB共に:には手を出していません
ABCだけのahkファイル作ってみたら阻害されません←ここが分かりません
>>674 :があるキーです。分かりづらくてすみません
Aは #ifWinActive, ahk_class (\{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8\}|\{483DF8E3-09E3-40d2-BEB8-67284CE3559F\}) ^e::Send,{Enter} !j::Send,^+{left} ^+!j::Send,^+!{left} !k::Send,^+{down} !l::Send,^+{up} ^q::Send,!{F4} ^w::Send,!{F4} ^,::Send,^1 ^.::Send,^2 !;::Send,^+{right} ^+!;::Send,^+!{right} ^i::KeyMap:= !KeyMap ^vk1Dsc07B::KeyMap:= 0 ^vk1Csc079::KeyMap:= 1 j::SendInput, % KeyMap ? "^{WheelUp 30}" : A_Thishotkey +j::Send, % KeyMap ? "+{left}" : A_Thishotkey k::Send, % KeyMap ? "{down}" : A_Thishotkey +k::Send, % KeyMap ? "+{down}" : A_Thishotkey ^k::Send, % KeyMap ? "^{down}" : A_Thishotkey l::Send, % KeyMap ? "{up}" : A_Thishotkey +l::Send, % KeyMap ? "+{up}" : A_Thishotkey ^l::Send, % KeyMap ? "^{up}" : A_Thishotkey `;::SendInput, % KeyMap ? "^{WheelDown 30}" : A_Thishotkey +;::Send, % KeyMap ? "+{right}" : A_Thishotkey
A続き a::Send, % KeyMap ? "^a" : A_Thishotkey c::Send, % KeyMap ? "^c" : A_Thishotkey d::Send, % KeyMap ? "{PgDn}" : A_Thishotkey +d::Send, % KeyMap ? "+{PgDn}" : A_Thishotkey e::Send, % KeyMap ? "{End}" : A_Thishotkey f::Send, % KeyMap ? "^f" : A_Thishotkey h::Send, % KeyMap ? "{Home}" : A_Thishotkey m::Send, % KeyMap ? "{AppsKey}" : A_Thishotkey n::Send, % KeyMap ? "^n" : A_Thishotkey o::Send, % KeyMap ? "{Enter}" : A_Thishotkey p::Send, % KeyMap ? "!{Enter}" : A_Thishotkey q::Send, % KeyMap ? "!{F4}" : A_Thishotkey
更にA続き r::;#first key Suspend, On if KeyMap { Input,InputChar,C I L1 T2,{Esc},a,d,e ;#second keys if InputChar = a Send,+!r if InputChar = d Send,^+d if InputChar = e Send,!r }else{ Send,r } Suspend, Off return s::Send, % KeyMap ? "^+s" : A_Thishotkey u::Send, % KeyMap ? "{PgUp}" : A_Thishotkey +u::Send, % KeyMap ? "+{PgUp}" : A_Thishotkey v::Send, % KeyMap ? "^v" : A_Thishotkey x::Send, % KeyMap ? "^x" : A_Thishotkey /::Send, % KeyMap ? "^f" : A_Thishotkey
Bは #ifWinExist, ahk_class \{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8\} pause::Send,^+s で一部Aと重複しています ちなみにこの重複してるのはfoobar2000のメインウィンドウです
Cは #ifWinActive, ahk_class (IE|Internet Explorer_TridentDlg)Frame ^b::Send,^+i ^d::Send,{Del} ^e::Send,{Enter} ^h::Send,{BS} ^+i::Send,{F12} ^q::Send,!{F4} ^,::Send,^+{Tab} ^.::Send,^{Tab} ^i::KeyMap:= !KeyMap ^vk1Dsc07B::KeyMap:= 0 ^vk1Csc079::KeyMap:= 1 j::Send, % KeyMap ? "{left}" : A_Thishotkey +j::Send, % KeyMap ? "+{left}" : A_Thishotkey !j::SendInput, % KeyMap ? "{left 5}" : A_Thishotkey +!j::SendInput, % KeyMap ? "+{left 5}" : A_Thishotkey k::Send, % KeyMap ? "{down}" : A_Thishotkey +k::Send, % KeyMap ? "+{down}" : A_Thishotkey !k::SendInput, % KeyMap ? "{down 5}" : A_Thishotkey +!k::SendInput, % KeyMap ? "+{down 5}" : A_Thishotkey l::Send, % KeyMap ? "{up}" : A_Thishotkey +l::Send, % KeyMap ? "+{up}" : A_Thishotkey !l::SendInput, % KeyMap ? "{up 5}" : A_Thishotkey +!l::SendInput, % KeyMap ? "+{up 5}" : A_Thishotkey `;::Send, % KeyMap ? "{right}" : A_Thishotkey +;::Send, % KeyMap ? "+{right}" : A_Thishotkey !;::SendInput, % KeyMap ? "{right 5}" : A_Thishotkey +!;::SendInput, % KeyMap ? "+{right 5}" : A_Thishotkey
C続き a::Send, % KeyMap ? "^a" : A_Thishotkey b::Send, % KeyMap ? "^{End}" : A_Thishotkey +b::Send, % KeyMap ? "^+{End}" : A_Thishotkey c::Send, % KeyMap ? "^c" : A_Thishotkey d::Send, % KeyMap ? "{PgDn}" : A_Thishotkey +d::Send, % KeyMap ? "+{PgDn}" : A_Thishotkey e::Send, % KeyMap ? "{End}" : A_Thishotkey +e::Send, % KeyMap ? "+{End}" : A_Thishotkey f::Send, % KeyMap ? "{F3}{Enter}" : A_Thishotkey +f::Send, % KeyMap ? "{F3}+{Enter}" : A_Thishotkey h::Send, % KeyMap ? "{Home}" : A_Thishotkey +h::Send, % KeyMap ? "+{Home}" : A_Thishotkey m::Send, % KeyMap ? "{AppsKey}" : A_Thishotkey n::Send, % KeyMap ? "^{Enter}^{Tab}" : A_Thishotkey +n::Send, % KeyMap ? "^{Enter}" : A_Thishotkey o::Send, % KeyMap ? "{Enter}" : A_Thishotkey
更にC続き p::Send, % KeyMap ? "!to" : A_Thishotkey q::Send, % KeyMap ? "!{F4}" : A_Thishotkey r::Send, % KeyMap ? "^r" : A_Thishotkey t::Send, % KeyMap ? "^{Home}" : A_Thishotkey +t::Send, % KeyMap ? "^+{Home}" : A_Thishotkey u::Send, % KeyMap ? "{PgUp}" : A_Thishotkey +u::Send, % KeyMap ? "+{PgUp}" : A_Thishotkey v::Send, % KeyMap ? "^v" : A_Thishotkey w::Send, % KeyMap ? "^w" : A_Thishotkey x::Send, % KeyMap ? "^x" : A_Thishotkey y::Send, % KeyMap ? "+{BS}" : A_Thishotkey z::Send, % KeyMap ? "{BS}" : A_Thishotkey /::Send, % KeyMap ? "^f" : A_Thishotkey vkBA::Send, % KeyMap ? "^l" : A_Thishotkey 0::Send, % KeyMap ? "^0" : A_Thishotkey でIEです Vista 32bit, AHK_Lです
あと:に^付けてやればABあってもリマップ出来ます :をvkBAやvkBAsc028などにしても同様でABどちらかあれば出来ず、^を付ければ出来ます
全く以て意味不明です 疲れました、もう寝ます
原因特定で重要なのは絞り込み 必要最小限の構成で現象が出るとこまで追い込む ダラダラ長いコード眺めててもなかなか見つけらんないからね ・#ifwinactive ahk_class の正規表現バラしてどのウィンドウ記述で引っかかってるか確認 ・ホットキー一行ずつ試しながら削ってく ・あまり関係ないかもだが keymap ? とかの判断要素は一時的に外す(デバッグ時の確認行程減らして見通しよくする)
確かに自分のコードをまず見せるようにとはみんな言うが
ここまでノイズが激しいコードを載せるのは逆に良くない
>>685 さんが言ってくれてるが、影響している(と思われる)部分に絞らないと
ここまで長いコードだと読むのも試すのもやる気になれない
こういう場合のデバッグ方法としてはAHK自体のデバッグ機能を使うべき
AHKのメインウィンドウのViewから、
・Hotkey and their medhods
:キーリマップ部分をコメントアウトし、:キーがすでにフックされているかどうかなどを確かめる
・Lines most recently executed
:キーリマップ部分を書いたままの状態で、正しく動作しないだろうがそのまま:キーを押し、
キーを押した時にどの部分のコードが実行されているのかを確かめる
これで原因は特定・解決できるはず
よくよく考えたらahkファイルをどっかにうpすればよかったですね
文字通りにスレ汚しすみません……
>>685 さん
>>686 さん
いろいろ確認法のご提示ありがとうございます
>>686 さんの方法はまだ試してなかったので、帰宅し次第試したいと思います
>よくよく考えたらahkファイルをどっかにうpすればよかったですね 全然理解していない件
単純化すると、↓だぜ。 #IfWinActive, 条件A #IfWinExist, 条件B #IfWinActive, 条件C #If〜 はファイルの頭(※)から読んで最初にマッチした条件があれば そこに定義されているホットキーやリマップが発動する。 ってことは、条件Bに合致する窓があれば C の窓がアクティブでも動かず、 条件 B のホットキーが動くってことになるぜよ。 ってことは、WinActiveのブロックを前に持っていくのがいいんじゃないかと。 試す気は無いけど。 #IfWinActive, 条件A #IfWinActive, 条件C #IfWinExist, 条件B (※) 複数ファイルに分割されていてもロード時には単一のテキストとして扱われる。 したがって #Includeの位置が大事 余談: #If (式) 覚えるのが一番よさそう
普段使ってるコードが長い時は一旦それ横に置いといて 別の実験用コード書いてテストする事が多いわ
#IfWinActive, 条件 ホットキー:: じゃなくて ホットキー:: IfWinActive, 条件 のほうが見やすい気がするんだが前者の方式のほうがいい? 慣れかな・・
慣れだな
後者の問題点 ・すべてのアプリでホットキーが有効になってしまう。条件にマッチしないアプリ向けに Send % A_ThisHotkey でもするつもりか ・コードの肥大化。アプリが10、20に増えたときを想像してみるといい
WIN32APIとAHKは どのくらい動作スピードが違うのでしょうか? AHKはプログラムのスキルがない私でも そこそこ弄れて便利だなと思うのですが・・・ やはり同じ仕事をするにもネイティブだと比べ物にならないくらい速いのでしょうか?
>>686 さんのも試したのですが、
Key history and script infoってのもあったのでやってみましたら、
ダメなときは
# d :
u :
でした
#=Disabled via #ifWinActive/Exist
とあるので、ウィンドウ指定をミスしてる故にSend,^lが不発、ということですよね……
正規表現がなにか不味いのかとCを
#ifWinActive, - Windows Internet Explorer
にしてみましたが効果無し……
ABCその他全部ある場合にABとはあまり関係無いCだけ不調で、
ABを除くかABCだけにすると大丈夫ってどういうことなんでしょう……
もしその他が悪さしてるとなると切り分けて特定がめっちゃくちゃめんどう……orz
>>689 その線ではないようでした
疑似ドラッグ&ドロップをする方法はありますか? そのアプリケーションの起動時に指定した文字列(ファイルパス)を渡すのではなくて、 ファイルパスを特定のアプリケーションのウィンドウ上に移したいです メモ帳のウィンドウ上にファイルをD&Dすると内容が表示されるようなあれです。
699 :
697 :2013/03/09(土) 00:31:40.82 ID:IZYUaw3U0
8−7なのか、結構進んでるやん もうちょっとやね
ごばくしました
ドライブCにあるPortableってフォルダをドライブRにコピーしたい場合、 FileCopyDir, C:\Portable, の後どう書いたらペースト出来るのでしょうか? また、コピー元のフォルダが複数ある場合の書き方も教えて下さいm(_ _)m
FileCopyDir, C:\Portable,R:\ 複数ある場合は複数回 FileCopyDirする 記述減らしたいなら Loop 使ってどうにかする
>>703 ありがとうございます。
それではコピーされなかったのですが他の問題の可能性もあるのでしょうか。。
windows7 64bitでAHKLを使用していて
ドライブRはRAMディスクでリムーバブルとして認識させています。
R:\の半角スペースの違いだけですが
FileCopyDir, C:\Portable, R:\
だとコピーはされている様ですがペーストはされません。
FileCopyDir, C:\Portable,R:\
だとコピーもされていない様です。
すまん、実際にスクリプト動かして動作確認はしてなかった (試してみてできなかったこと、上手く行かなかったことは予め書いておいてくれたほうが話が早い そこに注視して調べるから) FileCopyDir, C:\Portable,R:\Portable,1 コピーとペーストの違いが分からんかったが、親フォルダごとコピーはDest側も指定しないと掘らない模様 あと何故か知らんがFileCopyDirは上書きフラグ立てないとコピーできなかった win7 x64 AHKL UAC切った状態でテスト、UAC効いてる状態でどうなるかは不明
補足 上書きフラグなしでコピーできないのはR:\が既に存在してたからだった R:\に Portable フォルダがない状態で FileCopyDir, C:\Portable,R:\Portable は問題なかったわ スレ汚しすまん
おぉ!出来ました! Portableも入力しなきゃ駄目だったんですね。 ありがとうございます^^
MassiGraというソフトで、ソフトが最前面になくてもf5で再読み込みをしたいのですが、うまくいきません 元の画像再読み込みショートカットキーはshiftとrです f5:: ControlSend, , +r, ahk_class TF811202_MassiGra_Main ControlSendの使い方が間違っているのでしょうか?
>>708 ControlSend, ahk_parent, +r, ahk_class TF811202_MassiGra_Main
でいける
ahk_parentのリファレンスてありますか? 初めて知りましたw
>>712 AutoHotkeyJpには書いてない
公式リファレンスに一応書いてある。(が、公式の説明もあまり詳しくなかったかもしれない)
サンクス
本日のご視聴ありがとうございました。 次回も良かったら見に来てください。 おやすみなさいませ。
最近PC用リモコンを買って、そのキーを変更するためにAHKも入れたんですけど リモコンで>>を押すと →Ctrl+→Shift+→ みたいにキーが連続入力されるみたいなんです。 →が押されてから0.1秒以内にCtrl+→が押されたら→を送信せず別のキーを送信する →が押されてから0.1秒経ったら→を送信する みたいな動作をさせたいんですけどどうすればいいですかね?
→が押されてから0.1秒以内にCtrl+→が押されたかどうかをifで判別すれば出来る
WinGet,pid1,PID,A IfWinExist,ahk_class MediaPlayerClassicW WinGet,pid2,PID Else { 作業123 } If(pid1!=pid2) { 作業123 } このような場合 作業123の部分をまとめて書くことはできるんでしょうか? Else OR If (pid1 =! pid2)のように書ければいいなーと思ったんですが
>>716 Right::
hoge := 1
sleep,100
if (!hoge)
MsgBox,1秒以内
else
Send,{Right}
hoge := 0
return
^Right::
if (hoge)
hoge := 0
else
send,^{Right}
return
毎時00分に実行とか指定できますか?
>
>>717 ,719,720回答ありがとうございます
>>719 を参考に何とか動く物を自作しました
Right::;右キーを押して0.05秒以内にCtrlを…
KeyWait,Ctrl,D T0.05
If(errorlevel)
{
;押さなかったら右を送信
KeyWait,a
send,{Right}
Return
}
;押したらキーを変更
send,2
^Right::Return
^+f::Return
Left::;左キーを押して0.05秒以内にCtrlを…
KeyWait,Ctrl,D T0.05
If(errorlevel)
{
;押さなかったら左を送信
KeyWait,a
send,{Left}
Return
}
;押したらキーを変更
send,1
^Left::Return
^+b::Return
>>723 KeyWaitとsendの位置が逆のような気が・・・。
これだと離してからキー送信してるよ。
>>724 位置が逆というかテスト段階で入れて消し忘れてた KeyWait,a が不要な模様
あと、せっかく作ってくれたんで
>>720 も試してみたんですけど
71 hotkey have been received in the last 1170ms. と出て動作しませんでした
リモコンが送信するホットキー多すぎってことかな
ホットキーが短時間に大量に実行されるとなるエラーだね どっかで無限ループになってんじゃない? フック使わないでホットキーに割り当てているキーをSendするとなるね #UseHook でフック使えばおk
if (!hoge) if (hoge) みたいなのってよく使う? 解説リンクないかな
サンクスです
ちょっと今Win機触れないんで聞きたいんだけど↓みたいな書き方出来たっけ? if (keyboard=1) or (keyboard=3) #1::send, !{F4} #2::send, !{space}n #3::send, !{space}x if (keyboard=2) or (keyboard=4) #1::send, !veo #2::send, !veb #3::send, !mar
>>730 _Lなら出来るよ。#If (keyboard=1) ...
keyboard変数に任意の数値入れるのかな? 4つのキーボードのデバイスNo取りたいっつーと結構面倒だった気がするが
>>731 #付けないと出来ないか……
ありがと
>>732 とりあえず4つのキーボードを手動切り替えのつもり
FenrirFSのタグ付け支援とかこれでなんか出来ないかね? エロの管理が大変で大変で
「Lines most recently executed」で見られるログだけど 「Return」の行が邪魔なのでこれを省いたり空白にする方法はないだろうか・・
むしろReturnがないと区切りをどう判断するのか
そのログって、どういう作業をするときに参照するの? AHK4年くらい使ってるが、使ってこと無いな
AHK本体の窓で見られる情報は基本みなデバッグ用だよ
スクリプトが「思ってたんと違う」動作をしたときに何処で問題が起きたのか調べる時に使う 常駐スクリプトは数千行を超えたからこれがないとやってられん
俺の場合、常駐スクリプト30000行になってて、 1秒ごと、1分ごと、1時間ごと、1日ごとに定期巡回させたりしてるから、 直前の行とか表示しても意味ないから使わなかったんだな。 いまは、ログファイルを決めて全部そこに、 %A_Now%と一緒になにをやったか吐き出してる。
Mouse without Bordersのホットキー強力すぎ MWBのホットキーは Ctrl+Alt+R(任意キー) なのに、Shift+Ctrl+Alt+R って打っても横取りされる AHKでも奪えないっぽい? なんか打つ手ないかなあ
オープンソースでAutoHotKey みたいな言語をLinux用にひな形だけ書こうと思ってるんだが 出来ればひな形だけ書いて有志に完成をまかせたい そのためにどういう設計にすべきか考えた Linux での言語シェアと Linux での vim, IDE と組み合わせやすさ、という点から Java で書くことにしたんだが 意見を聞かせて欲しい。文法はちょっと変えるつもりコメントは//とか
743 :
742 :2013/03/15(金) 01:55:44.54 ID:UI3UoELk0
文章がひどいがそこは勘弁してください
>>742 最終的に、泥端末でahkの基本命令を使えるプロジェクトなら、喜んで人柱デバッグします
人を集めるってことだと javascriptにキーマップ用の簡易記述を取り込んで HTML5でGUIも書けます みたいな胡散臭いのをC++で作るほうがいいんでない キー割り当てを一つ書くだけでクラスや関数を書かされると 大多数のライトユーザは引いちゃう気がするんで 簡易記述は大事だと思う
>>745 a::b
の記法は成り立つように書きます
駐在してる(ペンタブの設定)ソフトのボタンやらチェックやらをAHKでバックで操作出来ますか? WindowSpyで見えてる classNN : ButtonN らへんが怪しいのですがその先がワカリマセン><
私もワカリマセン><
>classNN : ButtonN らへんが怪しいのですが なにをもって怪しいと判断したのか具体的に。
翻訳してみると 常駐してる(ペンタブの設定)ソフトのボタンやチェックボックスの状態を、非アクティブ状態でAHKから操作出来ますか>< じゃないのかな>< チェックボックスやラジオボタンなら ControlGet, Outputvar, Checked, , ATL:BUTTON7, ahk_class msseces_class ;msgbox , % Outputvar if (!OutputVar) { ControlClick , ATL:BUTTON7, ahk_class msseces_class }
>>751 ControlGetは今の状態を取るもので 押すのはControlClick な
ボタンにも効くはず
そのページの下の方にリンクある あとは頑張れ
>>752 アリガトウ! >< いやほんとにありがたい。どうもでした
Javaならアノテーション使えば便利かもしれんのぉ @Instance(Persistent=true, TrayIcon=true) public class Main extends Autohotkey { @Htokey("^a") public void winMoveRight() { Ptr hwnd = winGet("A"); winMove(hwnd, 100, 0); } }
↓みたいにフルパスを取得したいんですが WinGet,pid,PID,A h_Process := DllCall( "OpenProcess", "UInt", 0x10|0x400, "Int", False, "UInt", pid, "Ptr") FileNameSize := 260 VarSetCapacity(ModuleFileName, FileNameSize, 0) CallResult := DllCall("Psapi.dll\GetModuleFileNameExW", "Ptr", h_Process, "UInt", 0, "Str", ModuleFileName, "UInt", FileNameSize) DllCall("CloseHandle", h_Process) Return ModuleFileName IEx86 (C:\Program Files (x86)\Internet Explorer\iexplore.exe)は効くんですが IEx64 (C:\Program Files\Internet Explorer\iexplore.exe)へは動きません。 何処を直せばいいんでしょうか?
>>755 WinGet path, ProcessPath, A
MsgBox % path
サンクス! そんなんでよかったんだ!w なんで長々と書いてたのかorz
ProcessPathがサポートされたのはわりと後だよね 昔は98系とNT系でパスの取り方違ってて切り替えたりしてたわ
ProcessPathていつから?
1.1.01.00 - July 30, 2011 Added new sub-command: WinGet, OutputVar, ProcessPath.
WMPで再生中の曲のタイトルを取得する方法はあるでしょうか?
1.1.09.04 - March 14, 2013 Fixed Gui menu accelerator keys not working when the Gui itself (not a control) has focus.
>>756 ProcessPathが間違ったパスを取得してしまう事ってある?
対象プログラムのフォルダを手動で別の場所に移動して実行→そのプロセスに対してWinGet〜したら
旧フォルダのパスを取得したよw
どうしたらいいんでしょう
本当にそんな事が起こるならバグだから、ちゃんと検証してね
もしかしてOS、Vista?だったらありえるけど
UAC云々かな?
767です Win7です。今日再起動したら正しい値を取得してますね でも昨日は酔っ払ってたわけじゃなく確かにそうでした AHK再起動&対象アプリ再起動でも症状治りませんでした 64bitアプリは何かと特殊なのかな? 32bitアプリへのWinGetは昨日も正常に動作してました ・・今、再度フォルダ名を変えてみましたがやっぱり古いフォルダ名を取得しますね
なぜ具体名を出さないんだろう?
Linarのサムネイルビューにキーボードのフォーカスがあるときだけキーリマップを有効、ってしたいんですが マウスカーソルの位置はControlGetFocusで取得できるのですがキーボードのフォーカス位置が取得出来ません どうすればいいでしょう? 具体的には下記です ;Linar #ifWinActive, ahk_class Afx:[\w\d]{8}:[\w\d](:[\w\d]{8}){3} Enter:: Send, ^C Run, C:\Program Files\MassiGra\MassiGra.exe "%Clipboard%" return 一応、各ClassNN書いておきます サムネイルビュー……AfxFrameOrView90s1 メニューバー……ToolbarWindow322 フォルダツリー……SysTreeView321
>>773 #If WinActive("ahk_exe Linar.exe") && Linar_IsFocusThumbView()
Enter::
Send, ^c
Run C:\Program Files\MassiGra\MassiGra.exe "%Clipboard%"
Return
#If
Linar_IsFocusThumbView() {
ControlGetFocus focusedView, ahk_exe Linar.exe
Return focusedView = "AfxFrameOrView90s1" ? True : False
}
>>774 ありがとうございます、出来ました
#if以降は流行らせるページでは見覚えのない記法ですが、他のスクリプト言語ですか?
どうみても普通にAHKの記述 これが読めないってことはAHK以外の言語を触ったことないんだろう AHKのリファレンスページではこの手の基本の基本の解説はないから
AHK含むスクリプトの基本的な記法でしたか お察しの通りAHKしか知りません 今後なるべくお手間をかけたくないのですがどの言語の初歩解説から読んだらよいのでしょう?
dotinstall.comのcとかluaの説明を見てみればいいかも?
俺もAHK以外は最近の言語全然知らないんだけど、 ハテナの分岐とか、わかってる人からしたら見通しってよくなるの? それとも、昔のBASICみたいに極度に縮めて可読性を悪くして 悦に入ってる系の小細工?
>dotinstall.com すごく丁寧で分かり易そうでした ありがとうございます
?の分岐はC++あたりで見たような 自分もわかってなかったけどあれはヘルプ熟読して覚えたわ 一文でまとめて式扱いで変数に突っ込めるのでなれると楽 ただelseif分岐が重なる時はさすがに普通にif文使ったほうがいいかも
>>775 関数の使い方も、Ternary operator (二項演算子)でヘルプに書いてる
spyで取れるahk_classというのは Win32APIのどれで取得できるものなんでしょうか。 アクティブなウィンドウのハンドル、 ハンドル->ウィンドウタイトルの取得は出来たんですが ハンドル->ahk_classに相当する文字列の取り方がよくわかりません。 スレ違いどころか板違いなんですがもし知ってる人がいたら教えて下さい。
プログラミング言語とスクリプト言語てどう違う?
>>785 プログラミング言語=スクリプト言語+コンパイル言語
787 :
名無しさん@お腹いっぱい。 :2013/03/23(土) 18:36:47.62 ID:S6BIPOnm0
横や周囲を見る癖つけるといいよ
言語じゃなくて実行方式が違う 言語仕様の実装はコンパイラ&スクリプタでまちまち 完全ローカルなのもあれば既存言語を適用するものもあり ahkはかなりチャンポン、色々まぜてかつローカル仕様も残ってる
俺もAHKしか知らないからか
>>774 以降が全然分からんかった
いかにも「プログラム」って感じがするわ
AHKしか知らないしJpしか見てないが
>>774 わかるぞ?
Return行は初めて見たけど、想像ついた
#Ifとahk_exeによるWindow指定以外は流行らせるページでも全部解説されてると思うんだが…
ControlGetFocusのあとにカンマ入れなくて良いの?
フォルダ以下のアイテムを正規表現でリネームって Loop(files)とRegExReplace()とFileMoveだけで出来ますかね?
やってから聞け
質問:RUNコマンドでプログラムを起動してもウインドウをアクティブにしない方法はありますか? 具体的に書くと、全画面モードでゲームしている裏でKeyHoleTVを聞いてるんだけど、KeyHoleTVって一定時間で 切られちゃうので、自動で再起動&チャンネルの再接続させてるんだけどKeyHoleTVがアクティブになるためにゲームが 中断されてしまう。 今は、直ぐにゲームをアクティブにするようにしてるけど、もともとKeyHoleTVがアクティブにならなければ良い話し なんで。
800 :
798 :2013/03/25(月) 18:51:46.93 ID:GUSsFF1b0
非表示では外のコマンドがうまく働かなくて思った動作をしないんですよね。最小化はやっぱり一旦フォーカスがKeyHoleTVに 移ってしまうようなんです。やり方が悪いのかな。
ControlSend, ahk_parent, {MButton}, ahk_id %Window% でほとんどのアプリケーションへミドルクリックを送れません>< マウスボタンは難しいのでしょうか?
クリップフォルダ内の重複項目を探しだして消すにはどのように記述すればいいのでしょうか?
しかるべく
>>798 適当なツールでゲームを常に最前面にすれば?
805 :
802 :2013/03/25(月) 23:30:37.71 ID:EB7DPXxu0
スレ間違えてました。すみません
>>804 なるほど。その手があったか。
ありがとう。
プログラムできる人て情報系の学校出てるか そういう仕事に就いているかのどちらかなのかな
大学に行けば私立文系でもjavaやphpを勉強したり、統計言語を勉強するよ
俺はjavaみたいな本格的なプログラムはさっぱりできないけど、 hsp、AHK、Proxomitronみたいな物ならなんとか扱える
メモリ関係の扱いを別にすればどれも似たようなものでしょ
私は最近ifと三項演算子の使い分けを覚えました
812 :
名無しさん@お腹いっぱい。 :2013/03/28(木) 23:34:59.02 ID:zP4NKt+R0
三項演算子について解説してあるサイトがあれば教えて下さい
>プログラムできる人て情報系の学校出てるか >そういう仕事に就いているかのどちらかなのかな イギリス人は英文科卒でなくても英語話せますよ? 普段からちょいちょいプログラム読み書きするクセが あるかどうか。それだけのお話。
英文科って英語の勉強するところじゃないだろ 文学に関して勉強するところだろ 外語大も言語能力習得の場ではなく、地域研究やその他研究の場だろ
飛び先が256ワード以内なら即値JMPを使わないとか、 この命令はクロック消費がいくつで・・・とかのアセンブリ以外は 全部同じレベルに思える
じゃあ ここにいる人はVC++とか持ってる?
いい加減スレ違
うむさすがにそろそろAHKに戻すべき とだけ言うのも何なので戻すために話題の提供でも CapsLock→Ctrl を完全に実現するのはAHKでは不可なのはよく知られた事実 それでもそれもどきな挙動を実現しようと試みた人も多いのでは?その手法を教えて下さい
そもそもCapsLock→Ctrl にしようとするのは何故なんだろう ctrlが押しやすくなるわけだけど、結局はctrl+aとかctrl+vを押しやすくするためでしょ そう考えたら変換+aや変換+vでctrl+a,ctrl+vにすればいいと思うようになった これならautohotkeyできちんと設定できるよ
Ctrl の位置には別に不満はないが、CapsLockだきゃーぬっころしたい Windowsのいつの頃からか忘れたが CapsLock単体押しで勝手にIME ONになる 挙動になっちゃって誤爆するたびにイライラするわ しかもIME側のキー設定からもカスタマイズできないとかね
なんか忘れたけど、Windows側が最初に読み込むキーマップの定義INIを 個別に編集して、PCをリブートするだけで、永久に抹殺できなかったっけ? CapsLockを殺すだけなら、それでできたはず。 その設定を編集するGUIツールで変更した記憶がある。
>>820 歴史的に今のCapsLockの位置はしばしばCtrlで使われてきた経緯がある
もちろんja配列のキーボードはenよりも後に出てるわけだから、そもそも昔は変換キーや無変換キーがない
するとやはりCtrlの位置候補としてはCapsLockくらいしかない
そういう経緯があって一部のLinuxディストリではGUIの設定でCapsLock→Ctrlできたりする
>>822 レジストリいじればもちろんできる
INI書き換えるのもありだけど、そんな奇妙なことするくらいならCapsLockをF13にでも置き換えたほうがいい
ただレジストリ変更は最終手段であって、レジストリ変更なしでできるならそうしたいと望む人が多い
825 :
820 :2013/03/30(土) 10:43:17.93 ID:732i+7O90
日本人はたいていシフトで済ますが、アメ公は大文字1つ打つだけなのに CAPSON→1字打つ→CAPSOFF ってやるらしいよ。 今でも、それなりに需要があるキーなんだろう。
迷うことなくレジストリいじったわ
AutohotkeyでOキーを押したらhuiの3キーが同時押しされたことにしたいんですけどそういうのって出来ますか? 格ゲー配列を再現したいんです
出来るよ
キーボード買い換えたら、Lockランプが明るい奴だったのでこんなの作ってみた
http://www6.atwiki.jp/eamat/pub/MyScript/ の「IME.ahk」を利用
;IME状態をscrollランプで表示
_ImeInfoTimer:
if IME_GET(_mhwnd()) {
SetScrollLockState,On
}else{
SetScrollLockState,Off
}
return
ほとんどのソフトはscrollLockがONでも特に変化はないが
Excelはアローキーで画面をスクロールさせるモードになるので注意
autohotkeyでウィンドウクラスじゃなくexe指定ってできないんでしょうか。 ググって見てもちょっとやり方がわからないんです
832 :
名無しさん@お腹いっぱい。 :2013/04/01(月) 12:44:54.80 ID:6Q19qOVo0
AutoHotkey_L なら ahk_exe で指定できるよ
ありがとうございます。早速やってみます
ついでに質問です こっちは技術的な問題じゃなくてアイディアの方なんですけど、右のテンキーってどうしてますか? ショートカットに使えそうなそうでないような、かと言ってあまり触らないキー群なんですけど何かに使えないかなと思って
Numpad0 モディファイアで色々やった 片手IME入力とかもやった ひととおりやって飽きた
動画プレイヤーの拡張コントロールに使えるよ 「コマ戻し」「再生・一時停止」「1倍速」を連続送信して「再生&1倍速」 数秒スキップを連続送信して早送り・巻き戻し コマ送り・コマ戻しを連続送信してスロー みたいな感じ
その気になりゃいくらでもプログラマブルキーとして活用可能だがつい普通に数字入力しようとして誤爆繰り返して諦めた
それはウインドウクラスを見て、 該当のプレイヤーのみキー変換、他アプリでは無変換 そういう風にしないと誤爆するでそ。
DVD再生時、TS再生時などでクラスの名前が変わったりして、その判別を加えたり、 停止すると、あるはずのクラスが消滅してて動かなかったり、音声ファウルだと股挙動が変わったり、 いろいろやってるうちに、物凄くスパゲッティになり、いじるのも面倒になってくる
>>838 もちろんそれはしてる
だが該当のアプリでも、通常と同じようにテンキーとして使おうとして誤爆するのよね
条件反射ってこわいわ
Run,C:\eclipse\eclipse.exe 一瞬起動中の画面が出て消えてしまうんだけどなんで? 他のソフトは普通に起動できる win7 64bit autohotkeyL 64bit 1.1.09.04
Run,C:\eclipse\eclipse.exe,C:\eclipse\
サンクス
844 :
名無しさん@お腹いっぱい。 :2013/04/08(月) 10:28:44.01 ID:sJRDC70w0
無変換キーでマウス右クリックを行ってます。 sc07B::MouseClick, left, , , , , 上のスクリプトだとマウス右クリックがリピートされるのですが、 キー押下中はマウスドラッグになるように変更するにはどう変更すればいいか教えてください。
Pauseキーを他キーに置き換えたい。 Changekey等の他ソフトも使って。 ググったらPauseキーは無理ってあるけどほんと?
>>846 勘違いしてるなググったならちゃんと読めば?
848 :
名無しさん@お腹いっぱい。 :2013/04/09(火) 21:34:04.44 ID:Mh9fC3gc0
SetTitleMatchMode, 2 って動かないの? どうやっても後方一致できないんだけど
同じやつが質問繰り返してるのか、こんなやつが増えたのかどっちなんだろ
いや、初やし あと失礼、先頭につければちゃんと動いたわ
↑お前は見るからにアホっぽい。二度と来んな
853 :
名無しさん@お腹いっぱい。 :2013/04/10(水) 11:45:28.78 ID:GNIezB0m0
まぁ、実際のところここに入り浸ってる奴らもわかってないんだろ。ヒントの一つもかけないようじゃな
>>853 うん、>848のレス読んだ段階ではAutoexecuteの問題だって気づけなかったわ
長くスレにいると初心者が引っかかりそうな内容はある程度検討つくようにもなるけど
エスパー回答も情報不足だとなかなかむずかしい
でも>848は自己解決の報告もしてるし逆切れしてスレ住人に噛みついた訳でもない
二度とくるなて言われるほどひどい質問態度でもないでしょ
あんま排他的になりすぎるのもどうかと思う
久しぶりのAutoHotKeyですが、AutoHotKey_L用のMouseGesture2はないのでしょうか?
>久しぶりのAutoHotKeyですが って、どういう意味?
Loop { Sleep, 10 GetKeyState, state, NumpadAdd, P if state = U ; The key has been released, so break out of the loop. break ; ... insert here any other actions you want repeated. } このコードでNumpadAddではなくすべてのキーが離されたらループを抜けるというコードは書けますか? 実際には4つ判定並べてCtrl, Alt, Shift, WinくらいをチェックすればだいたいOKなんですが 念のためすべてのキーが簡単にチェックできるならそう書きたいです
A_TimeIdlePhysical を使うのはどうだろうか
Google Chromeで”戻る”コマンドのときに現在のページが最後(最初?)のページだったらタブを閉じる、 ただし、最後のタブだったらChromeを終了させずに何もしない、というスクリプトをマウスの戻るボタンに 割り当ててます。ただ、戻るボタンの状態や最後のタブかどうかというのをうまく取得できないので色判定で 代用しています。直接、chromeのボタンの状態やタブの数等を取得できないものでしょうか?
MouseGestureL.ahkってソフトごとにジェスチャを割り当てるマウ筋とは考え方が違うのですね… マウ筋の代用には難しいか… だれかマウ筋の代用として使っている人いますか?
ソフト毎に割り当ても可能です。
基本的に、マウ筋でできることって、ahkで全部出来るよ。 ソースは、3年前に移行した俺。 ahkを一通り8割くらいコマンドを把握したうえでの話だけど。
ただ使いこなせてないだけじゃないのか・・・。
862が代用として使えないんだから使えるって言ってもしょうがないんじゃねーかな 低能に大金持たせても有意義に使えないのと一緒で
まぁでもあのインターフェイスの仕様視認性悪くて使いにくいよね 仕方ないから動作割り当てなしの空のジェスチャ定義作ってパーテーション代わりにしたり、 他条件定義がある場合はその注釈を入れたりしてるわ それでも(当たり前だけど)アプリ毎に完全に並べきれないのが歯痒い
868 :
名無しさん@お腹いっぱい。 :2013/04/16(火) 20:36:55.10 ID:Rv59P8lJ0
アイコン増えすぎ笑えない。区別させたいけどアイコンの変え方分からなくて泣きそう だれかタスクトレイアイコンのいじり方教えてくれませんか
唯一マウ筋がありがたいのが、「マウスメッセージを横取りする」がアプリごとに選択できること 例えばこれをオフにするとマウ筋のマウスジェスチャーとFirefoxのマウスジェスチャーが共存できる MouseGestureはFirefoxのマウスジェスチャーと共存できなかったような
旧流行らせるページ管理人氏のMouseGesture.ahkの頃は #ifとかなかったからね 使ってないから知らんけど、L対応の改造版ならいけるんでねか
MouseGesture 右ボタンのジェスチャしか登録してないけど 左ボタンやX1 X2のジェスチャも使ってる人いる? 以前、通常の左ボタンの感度が悪くなって使うの止めた・・・
X1 X2 X3使ってる どのソフトでも始動に左は使わない方が無難だと思う
>>873 ありがとう〜
X1〜X3は問題なく使えるんですね。やはり左は外したほうがいいね
今の時代X3なんていうマウスもあるんだー
>>874 ↑↓とかじゃなく、X1_RB__みたいになるべくボタンに割り当てたいんだよね
だからボタンを増やすために、親指の下の所にボタンがあるからそこをX3にして使ってる
876 :
名無しさん@お腹いっぱい。 :2013/04/18(木) 15:36:23.50 ID:1KzEI5mi0
やべーSpaceキーをワンショッットモデファイヤ化したらすげー便利 でもデフォルトでSpace & 表記しちゃうと他のやつでいくら#IfWinActiveしても反応してくれないのね・・・
キーボードのひだり半分にキー集約するとマジ捗る ただしモデファイヤ配置に悩むことになる
具体例挙げてくれると嬉しいんだが
ん?俺のやってるの? 超簡単だよ。基本サンプルの寄せ集めだし 単体でahkファイル作って、使わないときにサスペンドホットキー用意 俺の場合はF1 あとはspace & 何かのキー::send,なんとかかんとか 最期にSpace up::send,{space}書き加えておしまい。
space & F1みたいな感じか。なるほどその発送はなかった
space & F1でも普通に作れるし
>>879 サンクス!
Space up::send,{space}ですね
ちょっとだけサンプル書くと SC03B::Suspend ;wasd Space & w::Send,{Blind}{Up} Space & a::Send,{Blind}{Left} Space & s::Send,{Blind}{Down} Space & d::Send,{Blind}{Right} ;スペースキー上げでスペース発射 Space Up::Send,{Space} マジでこれだけ。 他のスペースが必要なソフトは別に避けてAHKファイル作ってる。 スマートじゃないけどさ。
テンキーの0を押してるあいだマウスの左クリックを押し続けてる状態にして 0を離すと左クリックも離すように使いたいのですがどうすればいいでしょうか
画像のExif情報をできるだけ速く取得する方法はないかな? 今は画像ソフトを経由して情報を取得してるんだけどちょっと間が合って困ってる。 あともう一つなんだが、ファイルの種類が音楽か動画か素早く判断できないものだろうか? 大抵は拡張子で分かるんだが、一部被ってる拡張子があって無理やり真空波動研に渡してどっちか調べてる。
Numpad0:: send,{blind}{Lbutton down} keywait,Numpad0 send,{blind}{Lbutton up} return とかいうかんじ?動くかは知らない
InputBox使って肥大化させていけば autohotkey って擬似OSに出来ちゃわないだろうか vim, emacs に次ぐ第三の宗派と呼ばれる爆発力が微粒子レベルで存在している?
(ヾノ・∀・`)ナイナイ 表記ゴチャゴチャだし出来ないことも多いし挙動怪しいし 軽いキーバインド変更以上の役割は無理だよ
AutoHotkey.ahkをEmEditorで開きたいのですがうまくいきません 今までTeraPadで開けてたので !e:: Run, "C:\Program Files\TeraPad\TeraPad.exe" "C:\Users\a\Documents\AutoHotkey.ahk" これを !e:: Run, "C:\Program Files\EmEditor\EmEditor.exe" "C:\Users\a\Documents\AutoHotkey.ahk" に変えてみても何も起こらない AutoHotkeyの問題ではないのかもしれませんが 分かる方いましたら教えてください
考え方を変えるんだ デスクトップにAHKファイルのショートカットリンクを張り、そこでショートカットキーを設定すればいいんだ ランチャに登録しちまうのもありだね。 俺はポータブル版使ってるからbatで変数渡す関係上ランチャ登録してるし
>>891 とりあえず開けるようにはなりました
解決策が見つかるまでこれでやってみます
どうもありがとう
初歩的なことだったら恥ずかしいのですが、 プロセスのIDからその実行ファイルのフルパス、または実行ファイルのアイコンを取得することはできますか。 プロセス名のみであればWinGetでさっくり取れるのですが、こいつはDLLCallなど使わなければだめでしょうか。
全部流行らせるページにサンプルがあったはず アイコン取りたければ、まず上でフルパスを特定して、そのパスに対して抜き取る関数で 取れた気がするけど忘れた
>>893 http://l.autohotkey.net/docs/commands/WinGet.htm フルパスもWinGetで取得できる
↓適当にアクティブWindow切り替えながらF12を押したり放したりしてみよう
F12::
WinGet, Path, ProcessPath, A
Gui, Add, Picture, , %Path%
Gui, Show
KeyWait, F12
GUI, Destroy
Return
AutoHotkeyJpも
>>582 のWikiもProcessPathについての記述がなかったんで
>>582 のWikiの方は勝手に編集してみた。おかしかったら訂正よろしく
7の64bitでAltTabに出てくるウィンドウの一覧の名前・クラス名を取得できる?
前に何処かで拾ったスクリプトがこの環境では使えなくなってしまった
>>893 アクティブウィンドウから実行ファイルのフルパス取得なら自分はこれを使ってる
PID := WinGetPID("A")
For process in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" PID "'")
Var := process.ExecutablePath
897 :
896 :2013/04/21(日) 11:28:10.83 ID:b3dIU/J+0
ああごめん
>>895 で回答出てたね
プロセスパスもゲットできたのかそっちの方がスマートだね
>>896 の質問も分かる人いたら頼みます
autohotkeyのコンビネーションキーのどのウィンドウでも押したら無効が続くクソ仕様に嫌気が差して自分で組んだらやたら長くなった。 とりあえず素人が組むもんじゃないなと実感。
>>886 自分はjhead.exeで標準出力に吐き出させたExif情報を加工してToolTipしてる
こちらの環境ではこの方法で遅延はないかなぁ
つたないことだけど、右のAppskey、何割り当ててる? 何に使おうこれ
キーボードでコンテキストメニュー呼び出したいことはしばしばあるし、 何かに割り当てたところで使いづらい位置だからそのままにしてる。
903 :
893 :2013/04/21(日) 22:25:47.47 ID:0nmSVkOA0
>>894 ,895,896
ありがとうございます。ProcessPathで無事解決しました。
関数の中に2つ以上の処理を入れる書き方がよくわからんのですが、 関数名のあとにコンマで区切って複数入れればいいんでしょうか?
>>904 カッコ(brace{})で囲って処理一個毎に改行すればいいと思うが・・関数名の後はパラメータのこと?
Swap(ByRef Left, ByRef Right)
{
temp := Left
Left := Right
Right := temp
}
>>900 vk1Csc079::PgUp ;変換
vkF2sc070::PgDn ;ひらがな/カタカナ
RWin::Home
AppsKey::End
にしてる
ノーパソ?
ノートの時にこの設定を長らく使ってきて、デスクトップにした今も使い続けてる 世間のキーボードは何でこのキー配置にしないんだって思うぐらい、ごく自然に使いまくってるよ 本来のPgUp、PgDn、Home、Endは今のところ割り当てなし
他人のPCで自分用のキー設定の操作してアレッ?てなる。 ポータブルahkにはお世話になってるわ
多ボタンのいいマウスを買って、他人のPCで自分用のマウス操作操作をしてアレッ?てなる。 これはハードの差異で解決できないので、安物マウスの標準的な機能で いかに汎用的に使うか考えて、1から作り直し、ようやく落ち着いてきた
なんでこのキーボード配置にしないのって言うのと Appskeyの話出てたけど 俺はAppskeyはそのまま機能生かして、トグルでEscを出すようにしてAppskey2クリック目で閉じれるようにしてる。 Appskey:: AppsFlag := !AppsFlag ;1行トグル If(AppsFlag==1){ send,{Blind}{Appskey} }Else{ send,{Blind}{esc} } return escキー遠いよ。
>>911 なんかこういうちょっとしたかゆいところに手が届く感きらいじゃないわ。
とりあえずスペースキーを使ったじゃまにならないワンショットモデファイヤスクリプトできたんで配りたいんだがなんかいいアップローダないかな?
フラグ立てて判別してるのか。たしかにシンプル てか全キー別ahkとか頑張ったな。見やすいけど メンテしやすそうだからしばらく使ってみるよ
あ、BSもキーコンフィグの中にahkで入れて呼べばホットキーに使えるしスッキリするのか まぁいいや
スペースを修飾キーとして使うってアイデア自体はいいと思うが、実装が変態的すぎるw 文字選択中にスペース+A::Amazonでそのキーワードを検索 文字選択中にスペース+W::wikipediaでそのキーワードを検索 みたいなのでいいんじゃね?AHKでそういうのができるのかは知らんが
スペースのやつはちょっと前まで実装してたけど、反応が一泊遅れるのとスペース長押しで連打出来なくてやめたな
気になる人とならない人の違いってなんだろう
>>919 そういうことやるソフトはCtrl+Vでクリップボードに入れてから処理してる
AHKはそこらのソフトウェアは大体全部再現出来るから可能だろう
処理多くなると超とろくなるけど
HDDを複数繋いでるので、無変換+abcdefghijklmnopqrstuvuwxyz で、 ドライブのルートディレクトリをExplorerで即表示させるようにしてる。 無変換の理由は、このボタンの真上がCで、使いやすそうだったからw
>>915 のこのスクリプトのキモはスペースキー+なんかを&使わずに実装したことだろうなと
デフォルト設定の書き換え方も書いてあるわけだし、俺は現在自分用に調節中
相当荒削りだけど左手だけでやったろうってアイディアと気構えはいいと思う
スペース連打の問題も変換+スペースで回避しようとしてるし
ただシフトをトグルにする発想があるくせになぜAltとwinキーとctrlもトグルしようと思わなかったんだろうかと
左掌に隠れれて押しにくい修飾キーは全部トグルしちまえばいいんじゃないの?と思った
あと左手でやるならスペース+tabでスペース連打にしたほうがいいんじゃないかなこれ。capslockにエンターの機能あるんだから
たくさんのDLありがとうございます。 てかいきなり修正ファイル挙げられてて恥ずかしくて涙が出ちゃう。 あとtabをスペースにっていうアイディアもらいます。 AltとWinとCtrlの発想はあったにはあったんですが、やってみるととんでもなく使いづらかったのでシフトトグルだけ生き残りました。
頭いい人はいるもんだな。 ホットキトグルでモードをもう一つ追加して片手入力モードっての作ってみた スペース+qwert→yuiop……っていうやっつけ 半分ネタだったけど意外と打てるな ウェブブラウジング中とかマウス片手にチョイチョイと文字打ちたい時に使ってみよう
文字入力すら左手でやる発想はなかった。 キーボードを半分ずらすのか。 ちょっとやってみよう。
片手キーボードならFrogPadおもろいよー AHKって複数のHIDに別の処理って割り当てられる? USBのPIDで処理を別けるみたいな
>>927 あー左右反転の方が圧倒的に入力しやすいな
実装はできた。が、コレは宇宙人仕様すぎる・・・
とりあえず
>>927 のハーフキーボード配列を参考にしてみたけど、慣れるまでは修羅の道っぽいですわ。
色々アイディア出したり実装してみたりは楽しいし非常にナイス ただ左手で完結するのは人間に成せる技なのか… でも面白い
片手操作に慣れてきた頃に両手でガシガシやると片手で頑張ってたのが馬鹿らしく思えてくるよ
それはある 特に文字入力 ただ、左手入力+マウス入力ってのは文字を入力しないコピペ作業とかだとメチャ捗るんだよなぁ
あれま
ファイルのリネーム、ブラウザ上での検索くらいの文字入力ならマウスから持ち替えて 両手で打ってまたマウス持つよりは早かったわ。慣れてきたらもうちょい入力も早くなるだろうし それ以上の文字数なら素直に両手で打ったほうがいいね 場面場面で使い分けたらいいよ。まぁそもそも基本的に俺はキーボード操作派なんだけどw
935 :
名無しさん@お腹いっぱい。 :2013/04/26(金) 07:21:19.81 ID:mOHCc+1X0
昔、目でポインティングしたくなって、その方法を調べたら 顔をがっちり固定しないとダメだったのを思い出した
>>935 放射線治療はそんな風に固定するために頭蓋骨に固定用金具を取り付けるらしいね。
最近はコンピュータで自動的におっかけるからごろねしてるだけでいいらしい。
長くて押しやすいスペースを活用できないかなと思ってたからこういうのガチで待ってた ただ、右手でも左手でも押せるから左手キーボードにこだわらなくてもいいんじゃね? 個人的に全部モジュール化されてんのがいいわ
キーボード操作で完結できるようにAHKでキーバインドを設定しまくる というのがより自然で早くなるかもしれない
Win標準の拡大鏡みたいなことってAHKで可能ですか?
出来るっていうか流行らせるページにあっただろ
むしろ普通にwin標準のをよびだせば? win+Uキーでユーティリティ呼び出せるし
>>940-941 ありがとうございます!
Win標準のはCPU負荷が高くて(i5 2500Kで3%程度)
常駐して使おうと思ってたので諦めました
今、流行らせるページのを試してみましたがこっちのほうが軽くていいですね^^;
ただ ウィンドウをマウス下に追従させるのではなくて
Win標準のみたいに、別の位置にウィンドウを作るようにできないでしょうか?
それも答えるなら出来るとしか そっちの方が処理は簡単
できましたらコード貼って頂けないでしょうか? 自分では全然わかりませんでした お願いします
1行2行で済むコードならともかく、 あつかましいにもほどがある
それ、フリーソフト探した方が間違いなく手っ取り早いし、動作も安定してる ちょっとしたアプリケーションを自分好みに作ったり改造したり出来るのがAHKの利点 自分でスクリプト書けないならAHK使う意味ないべ 「拡大鏡 フリーソフト」
Linux 用 autohotkey 作成に挑戦していたが もう自作コンパイラとか準備せずに perl つかって java のコードに変換でいいんじゃないかと 思ってきた それで Send Sincerely,{enter}John Smith くらいなら 間違いなくかけるし
ClassNN1 のテキスト内容を ClassNN2 にコピーしたいのですが(どちらも) ^@:: ControlFocus ClassNN1 Ctrl+A Ctrl+C ControlFocus ClassNN2 Ctrl+A Ctrl+V return とやるしかないですか? ウィンドウハンドルを使えって書いてあるんですがよく分からなくて困っています
(どちらも)→(どちらもテキストボックス)
っ ControlGetText, ControlSetText
>>950 ありがとう。とりあえず動くようになりました。
ですが結構な頻度で文字化けしてしまいます。(半分くらい)
errorlevelは0になので失敗しているわけではないようです。
何度か繰り返すと成功するのが良くわかりません。
間違っている箇所はありますか?
#IfWinActive ウィンドウタイトル
^@::
ControlGetText, str, Edit1, ウィンドウタイトル
if ErrorLevel = 0
ControlSetText, Edit2, %str%, ウィンドウタイトル
else
ControlSetText, Edit2, 失敗しました, ウィンドウタイトル
return
#IfWinActive
文字化けは保存形式じゃない? UTF-8で上書き保存してみたら?
>>953 ありがとう。でもahkファイルをUTF-8で上書きすると100%文字化けになります。現状はsjis。
>952のstrをclipboardにしてみるとControlSetTextに成功している時でもクリップボード履歴を取るソフトでは文字化けしていました。
日本語対応はしていますがフランスの方が作ったソフトなのでUTF-8を使わずに何か別の方法を使っているのかもしれません…
UTF-8 BOM無しで保存してるってことは? いつのバージョンからかBOM有りじゃないとだめになってるが
>>955 BOM付きを試してみました。100%ではありませんがsjisと変わらない精度です。
文字化けですが「Wind and Sand」という文字がEdit1に入っていたとすると
Set~でEdit2に出てくるのは正解と三種類ぐらいがランダムで抽出されています。□が入っているかもしれませんがすべて漢字です。
ソフトの仕様なのかもしれませんね。いい方法が無かったら諦めようと思います。
??チ?匠?d
??チ?匠?d???
??チ?匠?d???皆?
Wind and Sand
>>956 それ以上は具体的にスクリプトアップロードしてみるとか
>>951 左手キー入力だけどこれフロッグパッド配列もほしいな
>>958 先ほどから以下のようにして使っていますが今のところ問題無さそう。
たぶんControlGet~がおかしいのだと思います。
ありがとうございました。
#IfWinActive ウィンドウタイトル
^@::
ControlFocus, TSynEdit1, ウィンドウタイトル
ControlSend, Edit1, ^a^c, ウィンドウタイトル
if ErrorLevel = 0
ControlSetText, Edit2, %clipboard%, ウィンドウタイトル
else
ControlSetText, Edit2, 失敗, ウィンドウタイトル
return
installhookとかUsehookでくくってみるのはいかが? おまじないレベルだけど。 あとキーをスキャンコードにしてみるとか。 記入とかがおかしいと思えないなら内部処理から疑っていくとか要所要所にmsgbox挟んでちゃんとそのルート通ってるかとか 思いついたけど、うん、多分全部やってるね・・・
和ゲーにSend,{ENTER}とかやっても進まなかったんだけどなんで?
そのゲームもキーボードフック乗っ取ってるんじゃろう
まず$なんかのフック記号を試す 次はsendInputで試す。 その次はsendPlayで試す それでもダメなら{blind}かまして、それでもむりなら{enter down}でkeywaitで{enter up} 的な?
キーストローク早すぎの可能性もね SetKeyDelay
マウス下のコントロールのスクロール位置の取得はどうすればできるでしょうか?
#If MouseIsOverでwindowspyじゃダメかね?
>>967 windowspyってどういうことでしょうか?
あ、ごめん、クラスかと思ってた スクロール位置か 色で認識するのも無理だな
linuxでキーリマップをやりたいんですが esc & i:: Send, {down} esc & o:: Send, {up} って xmodmap でできますか?
それだとescキー死ぬぞ
ahkだと esc up::Send, {esc} に類するもの必要でしたっけ?稼働中のスクリプトには見当たらないんですが linux で esc の動作も 単押しの release 時に起きるようにしたいんですが 無理ということですか?
ハ,,ハ ( ゚ω゚ ) スレチお断りします / \ ((⊂ ) ノ\つ)) ε≡Ξ (_⌒ヽ ヽ ヘ } ε≡Ξ ノノ `J
#IfWinActive で正規表現、大文字小文字区別無しってどうしてしてやれば良いの?? 例えば jpeg の場合 #IfWinActive,i)jpg ;コレだとうまくいかない
それで動くぞ。 SetTitleMatchMode を適切な位置に書いているか?
ちょっと質問が テンキーのnumlockoff時、5キーがなにも機能しないじゃない? これnumlock監視のコマンドとかあったっけ? 空白の5にスペースバー機能割り振りたい
あ、ごめん解決したわ そんな難しく考える必要なかった
すいません質問なのですが、左クリックを押したらキーボードのaが表示され、それ以外のマウスやキーを押したらキーボードのbが表示されるってこのソフトできますでしょうか?
>キーボードのaが表示され この状態がよくわからない、キー入力したいのか単にtooltip表示したいのか、どっちでもできるけど タッチパネルPCにあるソフトウエアキーボード出して特定のキー操作をしたいってことだと 難しいかもしれない
あ、解答ありがとうございます aはすいませんキー入力でございます 初心者なりにこんな感じで作ったのですがわかりません loop { if getkeystate("LButton","P") { send,a break } ここがわからないw { send,b break } }
ほい Input , char, L1, IfInString,char,a,send,{a} else send,{b} return
解答ありがとうございますー すいません初心者なりに関数は調べたのですが、これをどうしたらいいのでしょう????
>>980 のloopのところを置き換えればいいと思うけど
具体的にどんなスクリプトなのか分からないから
すいません意味がまったくわからないので諦めます ありがとうございました
ちょっと力を貸してください 左クリック時はノーマルクリック 長押し離したら右クリック ドラッグでは右クリックが発動しないようにマウスカーソルが動いたかどうかで判断したいんですけどコレだとドラッグ時も暴発してしまいます Numpadpgdn:: sendinput,{Blind}{Lbutton down} MouseGetPos, OutputVarX,OutputVarY Movingx := %OutputVarX% Movingy := %OutputVarY% keywait,%A_thishotkey%,T0.5 if ErrorLevel{ RbF := 1 }else{ RbF := 0 } keywait,%A_thishotkey% return Numpadpgdn up:: sendinput,{Blind}{Lbutton up} sleep 50 MouseGetPos, OutputVarX,OutputVarY Movedx := %OutputVarX% Movedy := %OutputVarY% if (RbF == 1)and(%Movingx% == %Movedx% )and(%Movingy% == %Movedy%){ sendinput,{Rbutton} } return
>>985 %で括る必要ないとこまで括ってるせいだろう
A_ThisHotkey以外は全部%不要
お、やってみたらうごきました。ありがとうございました
この左クリック長押しジェスチャちょっといいな
一晩寝たけど、やっぱり諦めきれないです・・・自分勝手で恐縮なんですが、どなたか助けて頂けませんでしょうか>< 僕はマウスジェスチャーというツールを使ってまして、やりたい事はloopの中限定でたとえば qを押した後、bが表示され、その後左クリックを押すと2秒くらいたってからaが表示される qを押した後、bが表示され、その後左クリック以外(右クリックとかq以外の他のキー)を押すとaが表示される という事をやりたいのですが、もし可能なら動くコードなんかを貼ってもらえると助かります>< 希望通り動いたら少ないですが1000アマギフ程度送らせて頂きます。 どうかよろしくお願いします><
990 :
980 :2013/05/05(日) 12:14:44.86 ID:d2aV4qqF0
あ、qはジェスチャー定義のとこのqです
>>981 とかそのままスクリプトにすれば動くけど、それも試してないの?
>>980 と言ってること違ってよく分からないんだけど、とりあえず980の動作ならこんな感じ
~LButton::send,{F20}
~Rbutton::send,{F19}
~MButton::send,{F18}
q::
Input , char, L1, {F20}{F18}{F19}
IfInString,errorlevel,EndKey:F20,send,{a}
else send,{b}
StringGetPosで文字列のA+[数字]の位置を検索したいのですが、SearchTextにどのような記述をしたらいいのでしょうか? 例えば、AAA1なら2をAB2C6A9なら5と位置を知りたいです。
>>995 ありがとうございます!
苦戦しましたがなんとかできました!!わーい
997 :
名無しさん@お腹いっぱい。 :2013/05/06(月) 00:48:05.72 ID:iL+HEkij0
>>993 Alt+PrintScreen でキャプチャして
キャンバスのサイズを小さくしてからペイントに貼り付けたらぴったりサイズになるよ
995GJ
999GJ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。