AutoHotkey スレッド part33
レス数が950を超えています。1000を超えると書き込みができなくなります。
>>1
乙
まだまだv1.1使ってる人いるしWikiの方は古いからこれも有った方が良いんでない?
英語だけどv1とv2のReferenceがワンタッチで切り替えられるからv1からv2への移行にも役立つと思う
Quick Reference | AutoHotkey v1
https://www.autohotkey.com/docs/v1/ 一気にv2に移行するの大変だから
別にインストールしてv1と共存させておくことってできる? 普通にできる。V2インストールの段階でそういう選択肢が出てくる。 >>1乙
以前スクリプトかなんかで埋められた時スレ立てられなかったから無事復活してなにより 解決法が分からなかったからホットキーを総当たりにしてゴリ押し解決したでござる
上手い人なら5行とかで終わるであろうものを150行くらい書いた
動作問題ないし思い通りに動いた 嬉しい~~~ >>12
上手くなった未来の自分に託した(キレながら作業していそう) キーを長押ししないと反応してくれないパターンがあるアプリがあるんだけどどうしたら良い?
スクリプトの中身は単純に↓の1行だけ
a::Send('{F1}')
長押ししないと反応しない右辺のパターン
・ファンクションキー全部
・MouseClickのLeftとRight
・Escキー
正常に反応する右辺のパターン
・MouseClickのWheelUpとWheelDown
Sleepも試したけど効果無かった d長押しでCTRLキーを設定している。
この状態でwin+dが反応しないんだけどどうしたらよい?
;;長押し割り当て
*d::
Send {Blind}{LCtrl DownTemp}
return
*d Up::
Send {Blind}{Ctrl Up}
If (A_Priorkey=="d"){
Send {d}
}
return Chromium系のブラウザでアドレスバーの文字をコピーすると
ClipboardChangeが2回呼ばれるみたいで困ってるんだけど、おま環?
なんとか1回しか通さないようにできないものか txt1〜の変数に文章を格納してこれをToolTipで各変数ごとに改行、複数行で表示させたいと思い
ToolTip txt1 `ntxt2 `ntxt3
としたところすべて一行で表示されてしまいました
どうすれば改行し表示されるようになりますか? >>14
>>15の指摘通りSetKeyDelayを試してください。ただし、v2はデフォルトのSendモードがInputになっているため
そのままではSetKeyDelayが効かないので、SendMode("Event")を指定するか、Sendの代わりにSendEventを使用してください
>>16
単純にホットキーの*を外してください。そうしてしまうと他キーとの組み合わせで影響が出る場合は
ホットキーとして#d::を追加し、#dをSendすると共にフラグをたて、*d UpでdをSendしないように判定を入れ、フラグを消す
>>17
まず、コピーする際の動作(Ctrl+cなど)で他のホットキーや他の常駐アプリのショートカット等が発動してないか確認してください
その他の原因として思い当たるのはコールバックを重複して登録している可能性があります
また、v1でラベル式のOnClipboardChangeを使用している場合は、スクリプト起動時にも無意味に発動するので
その辺りも考慮したコーディングをしてください。それ以外ならコード見ないとなんとも言えません
別の方法としては、2回呼び出しが起こるものと断定し、コールバック関数の方でクリップボードの前の内容を変数にキープしておいて
同じ内容ならなにもせずreturnするとかしておく方法もあります
>>18
v1なら ToolTip, % txt1 "`n" txt2 "`n" txt3
または ToolTip, %txt1%`n%txt2%`n%txt3%
v2なら ToolTip(txt1 "`n" txt2 "`n" txt3)
あと、皆さんv1かv2かぐらいは書いといてください >>19
すみませんv2です
ありがとうございます出来ました >>19
アドバイスありがとうございます。
0016です。
win+d動作しました。
ですが、※を外すと、CTRLキーが押されっぱなしになってしまいます。
v1です。 >>19
アドレスバーだけしかならないしスクリプト最小限にしても同じだからChrome側の問題のような気がしてる
なのでとりあえず
>前の内容を変数にキープしておいて同じ内容ならなにもせずreturn
これで対処することにします。ども キーの指定でvk○○だとエラーが出るんですがなぜでしょうか(sc○○では大丈夫)
1.1.37.01です >>23
それだけの情報だと何ともいえない。
実際のソースとか、エラーのスクショとか。 >>23
AHKファイル読込時に、何行目がエラーなのか表示されてない? すみません、確認したらエラーが出るのは「vk○○sc○○」とつなげて書いたときでした
vkのみ、scのみならエラーが出ません
なんかだいぶ前の更新でこの書き方は駄目になったそうですね… マニュアル読んでたらv2ってseed入れた疑似乱数作れなくなってたのか
なんか良い代用方法ないかなぁ seedに依存した再現性のある疑似乱数列が欲しいんだとしたら
質を気にしないなら、線形合同法をwikipediaとかの短所の説明を読んで実装するのが簡単だと思う
質が必要ならいろいろあるんで疑似乱数で検索してみて
もし同じ出力になるのを心配してるなら、RandomはRtlGenRandomを呼んでるみたいで
https://en.wikipedia.org/wiki/CryptGenRandom
によるとGetCurrentProcessID, GetCurrentThreadID, GetTickCount, GetLocalTime, QueryPerformanceCounter
とかでいい感じになってるらしいんで気にしなくてもいいみたい >>28
組む手間省略出来るなら使おうかと思ってただけなんだ
ありがとう、やっぱ無いなら組まないといかんよね 信者が朝から出動するスレか
マジで明日上げんじゃねーの? GOM Playerという動画再生ソフトで総再生時間と経過時間は表示されるのですが
残り時間が表示されないためAHKで残り時間を取得して表示させたいのですが何かよい方法はないでしょうか
自分が考えたのは
@OCRで画面上の総再生時間と経過時間を読み取り引き算して残り時間を取得
AGOMのメモリ内の総再生時間と経過時間を読み取り引き算して残り時間を取得
AHKからプロセスメモリエディタのような複雑なことは出来る?
ぱっと考えただけでも自分のスキルでは無理そうなのですが何かよい方法はないでしょうか >>33
オレ環に入れてるプレーヤー → mpc-hc・VLC・mpv は全て「再生時間」のところクリックすると切り替わって残り時間表示してくれるけどなー
ゴムはそうなってないのか?
>自分のスキルでは無理そうなのですが…
ahkで何とかする方法はおれは分からんけど、この機会にプレーヤー乗り換えるかそのまま我慢して使い続けるかどっちかにした方が良いような気がする >>34
GOMは「再生時間」のところクリックしても何も起こりません
この際プレイヤーを変えてみる事も考えているのですが mpc-hc・VLC・mpv の中で
現在の再生速度を画面に常に表示しておけるものはありますか? かなり昔にahkスレでmpv教えてもらったな。あいがとう当時のおっさん
面倒くさいけどlua覚えたよ mpvのconfigや制御がluaなのよ
Rainmeterもluaなので助かった
postmessage経由でahkとも相性が良い 配列で、例えば
my_list := [13, 4, 8]
を初期化したい場合、
my_list := []
ってやったらメモリリークする?
他に方法ある? >>39
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm
> A variable cannot be explicitly deleted, but its previous value can be released by assigning a new value, such as an empty string:
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm#cap
> The memory occupied by a large variable can be freed by setting it equal to nothing, e.g. var := "". GUI,ADDでSECTIONを設定した場合、以降に配置されたコントロールはSECTIONで指定した場所に配置されますが、SECTIONをリセットして元の配置にする場合はどうすれば良いですか? >>40
ふむ
配列は大丈なのかな?
大丈夫な気はするが… ChromeのパチモンブラウザのInspectでSourcesを見てると
Consoleの入力欄からちょいちょいフォーカスが外れて困ってるんだが、何かいいアイデアはないだろうか 現在のGUIの特定のコントロールがDisableかEnableかを知る変数的な機能ってありますか? ぼちぼちv2に移行するか…
多すぎてめんどくさい… V1.1時代に作ったのはもうそのままにしてる。改修が必要なものや新規に書くものはV2にしてるけど。 先にV1入れてあればV2インストール時に同居の設定とか選べたと思うけど
コンパイルする時のバッチファイルで元になるバイナリもしくは実行モジュールを
パス指定すりゃいいだけなのでバージョン違いをいくつでも同居できる 拡張子変えて管理してるのはダサいの?
V1はそのままでV2の拾い物には .ahk2 にしているが。 https://github.com/AHK-just-me/Class_SQLiteDB
これをv2でも動くようにしようとエラーが出るたびにチマチマと修正していったが修正箇所多すぎて投げた
「AHK v2からSQLiteのDLLを使う単純なコード」の例がネットにないんだよな
ChatGPTやGeminiに聞いても正しい回答は出てこないし というか、DLLを使ってデータベースを操作するという処理が、そもそも単純ではないんだろうな
なんとなくデータベース処理用の組み込み関数を使うのと大差ないやろと思っていたが、
抽象度が一段下がるから。
「SQLiteをちょっと使いたい」程度なら、CLIからsqlite3.exeを呼び出す方がいいんやろね
このライブラリがv2に対応してくれれば一番いいけど >>57
もちろん知ってるんだが、微妙ーーに挙動がおかしいのよ
完全版待ち v1系で
文字列の中にxとかabcとか任意の文字列が何回登場するか?ってどうやって取得するべき
ダイレクトに何番目は此処って変数ある? ん? 3行目おかしいな
何番目は此処 じゃなくて 何個ある だ ん? 3行目おかしいな
何番目は此処 じゃなくて 何個ある だ regexmatchのオプションにあったような
サブマッチをオブジェクトにまとめる奴 60だけどありがとう 参考にするね
ABC1234/ABC2345/BCD1234/CBD3456/ABC1234/・・・・と
アルファベットと数字で構成された6文字以上の文字列が/でつながった長い一つのテキストになっています。
これを/を区切り文字にして一旦
ABC1234 ABC2345 BCD1234 CBD3456 [ABC1234] にわけ、かつ重複[]をなくし元の形の様に戻そうと思っています。
前:ABC1234/ABC2345/BCD1234/CBD3456/ABC1234/・・・・
後:ABC1234/ABC2345/BCD1234/CBD3456/・・・・
方法としては、
文字を頭から/で切り分けて、
1.先頭の区切った単位(ABC1234等)を配列に入れ
2.2番目以降の切り分け作業は、重複を検出するため配列のループで回し対象の文字が配列と同じなら重複である変数を吐き同じなら配列に格納しない ARは配列、txtがABC1234/ABC2345/BCD1234/CBD3456/ABC1234/・・・・
これまでで切り分け先頭をtxtに代入
Loop, % AR.Length()
{
if(txt = AR[A_Index])
{
duplicate:=1
break
}
}
その後また連結作業
で if(txt = AR[A_Index]) が適用されてこの中の{}はmsgboxなり入れてそれは動くのにduplicateが1にならないんです
そもそも今まで動いていた(1になってた)のにPCをインストールしなおして同じahkのverで動かなくなったのが本当にわかりません
思い当たることはないですか? あーーーめちゃくちゃだー、変数txtがかぶってた
これまでで切り分け先頭をtxt2に代入
Loop, % AR.Length()
{
if(txt2 = AR[A_Index])
{
duplicate:=1
break
}
}
その後また連結作業
に替えます すみません なんかパッケージマネージャーきてる
https://ahkpm.dev/ ここに常駐して回答している人はそうかもしれないけど
昔作って動いてるのをちょっとずつ改良をし続ける人にとってはv2に変えるメリットが弱すぎるからね
機能需要が飽和すれば更新なんて興味ないし、v2のほうがいいってレスはあまりに人によると思うよ 何かの弾みで「ひらがな」モードが「カタカナ」になって地味に困るんだけど原因が未だにわからん・・・
おそらく無変換キーを半角全角キーに割り当ててるのが何かしら関係してるとは思うけど >>74
5行目の
; Alt キーを押している間に他のキーを打つと通常の Alt キーとして動作
のためじゃねーの、確認してないから分からんけど >>72
IMEキー設定「無変換」=かな切替=あ→カ→_カ→
これが誤動作してる? >>77
ごめん半角全角は変換キーだった
そして無変換キーも使って、実際はこんな感じ
; 無変換+hjklでvim的上下左右
sc07B & k:: Send "{Blind}{Up}"
(略)
; 変換→半角全角
*vk1C:: Send "{vkF3}"
タイピングが荒くてほぼ同時に押したりしちゃうからそれで変な入力入るのかも・・・
ソフト的なレイテンシとかに左右されるってんなら厄介だな、LLフックの限界か >>66
やりたいことは理解できましたが、簡潔に説明できそうにないので
求めている結果を返す方法で思いついたのを3つほどサンプルとして提示しておきます
https://pastebin.com/rckthybE
>>74
>>76の言うように、それらの記述がないと例えばAlt+Escなどを押したときにもIMEの状態変換が起きてしまいます
多くの場合、Altキーとの組み合わせショートカットはアクティブウィンドウかフォーカスが変わるため気付きにくいだけです
または、Altショートカットを使用したときにIMEが勝手にオンオフ切り替わってても構わない場合はなくても構いません
ただし、その該当キーを羅列する力技とも呼べる方法はあまりお勧めしません
単体で使用するなら問題はありませんが、個人用のスクリプトに組み込む場合は問題が発生する可能性があります
例として動的にホットキーを変更するHotkey関数を使用した場合、ほぼ確実に何らかの予想外の動きが発生します
他にも#Hotifの条件次第では予期してない所に影響がでる可能性もあります
よって、InputHook()を使用するのが良いと思います
興味があったので作って見ましたが、ざっと作ったので不具合があるかもしれません
https://pastebin.com/MhiHkFgT >>6
並びが変わってもいいならsortのuオプション使えば重複は削除される
変わっちゃだめならforで回せばいいのでは? >>79-80
ありがとう
代案はありがたいし、今後によってはそれを参考にさせてもらいたいけど
まずそもそも変数が1にならないことの原因は何か思いつきませんか?
やってることはめちゃくちゃ簡単な動作だし、動かない要因のほうが根底で興味がある
そうじゃないと代案も動くかどうかわからないし >>74
該当キーを羅列する力技を削除して、A_PriorHotkeyチェックをA_Priorkeyチェックにするのはどうでしょう。こんな感じ。不具合あったらごめんなさい。
#InstallKeybdHook
#UseHook
#MaxThreads 255
#MaxThreadsPerHotkey 20
#Include IME.ahk
*~LAlt::Send {Blind}{vk07}
*~RAlt::Send {Blind}{vk07}
LAlt up::
if (A_Priorkey == "LAlt")
{
IME_SET(0)
}
Return
RAlt up::
if (A_Priorkey == "RAlt")
{
IME_SET(1)
}
Return >>78
取り敢えず、SC指定からVK指定に替えてみたらどうかな?
VK1D & k:: Send "{Blind}{Up}" GetKeyStateだと特定のキー入力を判別できますが、キーボードのどのキー入力でも判別できる様にするにはどうしたら良いですか? GetKeyboardState で監視とかじゃね GetKeyboardState?
autohotkeyにそのようなコマンドがある事を知りませんでしたが、私には検索しても分かりませんでした。 >>87
マルチモニタだとメインモニタ意外は取得できないっぽい
おま環かな? >>83
ありがとう
全然理解できてないけど基本的にSCよりVKのほうが安定してるんだっけ?
とりあえず試して様子見します >>89
キー名指定が無難だね
SC指定だとKeyWait検知がダメで、長押しや、ON/OFFトグルができず
キー名指定に変えただけで動作したことがある v1
GuiのTextコントロールにgラベル割り当ててダブルクリックすると
サブルーチンで何もしてなくてもコントロールのテキストが勝手にコピーされるのは仕様?阻止できない? >>91
仕様ですが、下記で無効化できます
OnMessage(0x203, "WM_LBUTTONDBLCLK")
WM_LBUTTONDBLCLK(wParam, lParam, Msg, hwnd){
Return 0 ; デフォルト動作を無効化するには0を返す
} なかなかいいアイデアを思いついたぞ
...
#if WinActive("myapp1")
sc7B & F1:: ShowHelp(A_LineFile, A_LineNumber)
a:: ;; ページアップ
Send,{PgUp}
return
d:: ;; ページダウン
Send,{PgDn}
return
#if WinActive("myapp2")
...
で無変換+F1を押すとA_LineFile, A_LineNumber周辺をスキャンして
msgbox %
(
myapp1のヘルプ
a : ページアップ
d : ページダウン
)
というテキストを生成して操作ヘルプを表示する
ちなみにShowHelp(A_LineFile, A_LineNumber)はException使ってコールスタック調べれば
ShowHelp()と省略して書ける >>92
ありがとう
ただそれ足しただけだとダブルクリックそのものが無効化されて
(A_GuiControlEvent = "DoubleClick")が処理できなくなってしまったので、gラベルを外して
WM_LBUTTONDBLCLK() {
MouseGetPos,,,, CNN
if (CNN ~= "^Static\d+$")
(略)
で解決 Xbox Oneコントローラーってautohotkeyで認識できない?
Xboc360とPlaystation3のコントローラーは認識できたが… >>95
AHK単体ではできませんが、XInput.ahk または JoystickWrapper.ahk などのライブラリを使えば入力の検出はできます
2つともかなり古いライブラリですが、Win10でv1ならそのまま、v2でも変換すれば使えます(Win11の場合は分かりませんがたぶん使えるでしょう)
ただ、いずれにせよAHKのジョイスティック(DirectInput)用のホットキーのように手軽ではなく、使用にある程度のコーディングが必要になります 日本語キーボード+AutoHotKeyで
Caps Lock+IJKLでカーソル移動に割り当てることってできますか?
Change KeyなどでCtrlとCaps Lockを入れ替えることなく、
Caps Lockそのものをトリガーにしたいのです
(Ctrlは変換用のキーボードショートカットで使うので) なんか最近クレバがジャニかアイドルに楽曲定期しなかったと言われても違法行為多数証拠があるん?アムロか!?
くそったれ!
だよなあ >>101
なお、ガーシーのも全部噂話や都市伝説だろ
ホモではないという考え あれがジェイクて確定したぞい
日曜からそうなるからな >>100
日本語キーボードなら変換キーや無変換キーを使うのがおすすめなんだけどなぁ メガネとデブがパクられたからあまりでかいこと出来ひんのやろ
スタッフのモチベーションも上がってるね
オールグリーン!シンクロ率2パーセント >>19
まだ30代:賛成62.0% 反対28.0% >>105
ありがとうございます
変換、無変換はすでに使用済みなのです><;
それぞれBackSpaceとEnterに割り当てています ちなみにあのあと調べてみたら、
Caps Lockへの割り当ては既知の問題だったみたいで
WikiのFAQに載っていました、すみません
あと、Change KeyでCaps LockをF13とかの仮想キーに割り当てて
AutoHotKey側でその仮想F13(実際押すのはCaps Lock)と
IJKLを組み合わせる方法があるみたいなので、
あとでそちらを試してみます >>48
30代以下はバカだから
歳を取ると、か
遠足までの水準には閉店しても気づかれなそうだな 街中の真実とかほざくな
だから俺はもう盆栽くらいか
今まではないという意で、自己の存在価値ないよ
映画はな >>110の方法を試したら無事に動きました!
お騒がせしました JIS109ドライバーなら×Caps→○英数
SC03A & I::
でイケるでしょ >>117
ありがとうございます
教えていただいた方法で試したところ、カーソルキーとしては機能しましたが
I以外のJKLの文字が日本語モード、英語モードともに正常に動作しませんでした
実は>>110の前に、「SC03A」の部分を「CapsLock」の記述で試したのですが、
そのときと全く同じ状況でした
いまのところは>>110の方法で正常に動いているので、しばらくそれでやってみます
アドバイスありがとうございました チラ裏
スリープから解除した時にモニターの明るさを変えるの面倒だから、時間帯と前回使用した時間によって分岐して自動化したでござる 大変だった~~
タスクスケジューラでスクリプト起動しただけだけど、謎エラーに泣いてた(モニター点灯する前に明るさ操作すると明るさが0になる)
これ、もしかしてフリーソフトあったりするんかな いいんだよ
自分で作った車輪のほうがほら、スポークの本数とか?、いいかんじだろ 1台目のモニターサイズならA_ScreenWidthとA_ScreenHeightで取得できたんですが、2台目3台目のモニターサイズを取得するにはどうすればいいですか? バージョンアップしたらIME.AHKが動かなくて元に戻した >>144
いちいちageんなよ
やってることはage荒らしだぞ
Last-Modifiedの一番古い物から落ちるスレが確定する仕様だ ageたらなんでだめなん?
dat落ち防げるんじゃないの? dat落ちの判定は最終書き込みだからageてもageなくてもいいってこと
最下層にあっても書き込みがあるスレは落ちてない おやまあ、サポート終了のはずが致命的な enbug と判断したのかな?
Release v1.1.37.02 · AutoHotkey/AutoHotkey · GitHub
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v1.1.37.02
> Fixed inability of LWin::Alt to be used to activate some Alt-combos.
> Fixed mouse AltTab hotkeys not suppressing execution of a prefix hotkey,
> such as 1:: for 1 & WheelDown::AltTab. (Broken by v1.1.37.00) MouseGestureLの話もここでしていい?
ジェスチャー実行後にたまに左クリックが効かなくなることがあるんだけど
これもAHKの修飾キー押しっぱなしと同じ現象なのかな?
対処法ない? v2でGotoが動作しないのですがどう書いたら動くかわかる方いらっしゃいますか?
$z::
{
Goto(aa)
return
}
aa:
{
mousemove(200,600)
}
return v2でのGotoの書き方を調べたのですが動作しません、どう書いたら動くかわかる方いらっしゃいますか?
$z::
{
Goto(aa)
return
}
aa:
{
mousemove(200,600)
}
return >>149
今のところサポート終了とアナウンスしたことは一度もないはずだが
少なくとも2.1がリリースされるまで、いわゆるLTSC状態だとは思うが 3秒で終わる作業を1秒にするために1時間以上かけてスクリプトを作ったりするのだが時間に見合っているのか?
こういうこと考えたことない?
2秒短縮できたとして1800回以上使わないと時間に見合わない ストレスの積み重ねは単純に時間で比較できないと思うので、楽をするため&少しでも快適にするために膨大な時間を投入して物を作る価値はあると思う 定型作業に脳のリソースを割きたくないから時短効果が薄くてもその作業について考える事が減るなら意味はある 作ってる時間を楽しめていれば、それは娯楽であってコストではない >>155
考えたり調べたりする1時間は、次のスクリプト作りで役立つだろ。
どんどん深みにハマってしまうこともあるが。 >>155
その条件だと、元を取るのに1日1回で5年、1日5回で1年、1日60回(1時間に10回くらい?)で1ヶ月
OSやソフトのバージョンアップでスクリプトが使えなくなったり、自分の使い方が変わって意味なくなることもあるだろうから、
使用頻度次第でけっこう変わるね 質問すいません。
カクヨムという小説サイトで縦書きの拡張入れてそのサイトでのみ動くスクリプトを作ってるのですが
右クリック+ホイールダウンを返すにはどうすればいいのでしょうか?
RButton & WheelDown::
SetTitleMatchMode, RegEx
IfWinActive, .* - .* - カクヨム.*- 個人 - Microsoft.*Edge
{
send, +^{tab}
}
else{
;;MouseClick,RIGHT MouseClick,WheelDown
;ここに右クリック+ホイールダウンを返したいです。
} あとは使用頻度や時短割合は低くても
タイポすると100倍の修復作業が必要とか、キーが遠いとか、寿命があと5年もないとか
目的や状況によってはやる意味あるか >>162
ホイールダウンで起動
アクティブウインドウで分岐
更にGetKeyStateで右クリック有無で分岐
右クリックありならやりたい動作
右クリックなしならただのホイールダウンを返す
でやるかな俺なら >>164
GetKeyState関数勉強してみます。
試しに Send, {RButton Down}{WheelDown} としたら動いたんですが
右クリック無効になってて焦りました。 #IfWinActive, .* - .* - カクヨム.*- 個人 - Microsoft.*Edge
RButton & WheelDown::send, +^{tab}
#IfWinActive
じゃ駄目なの? > 2010 年に、AutoHotkey v1.1 (当初は AutoHotkey_L と呼ばれていました) が、AutoHotkey の継続的な開発のためのプラットフォームになりました。
> 2012 年末に正式なブランチとなりました。
> In 2010, AutoHotkey v1.1 (originally called AutoHotkey_L) became the platform for ongoing development of AutoHotkey.
> In late 2012, it became the official branch.
> ://en.wikipedia.org/wiki/AutoHotkey
AutoHotkey_LはAutoHotkeyとは別に存在するのかと誤解していたが
AutoHotkey_Lは2010-2012年にv1.1でAutoHotkeyになったようだ
誰かがつくったフォークがよくできてたから本流になったようだ
GPLだから誰でもつくれる >>165
久しぶりに使って1週間ほどの経験者で恐縮だがこんなイメージが浮かんだ。何も試してなくて保証なしだ
Send, {RButton Down}{WheelDown}
sleep,500
Send, {RButton Up}{WheelUp}
RButton & WheelDown::が起動するから無限ループになりそうなのはわかる?わからないならAutoHotKeyをつかうのは危険すぎる
修飾キー$で無限ループを回避できる可能性がある。 ahkscript.github.io/ja/docs/v2/Hotkeys.htm >>162
参考までに
"特定のウィンドウ下"や"特定条件下"でだけ特別な事をさせるならおれはこうしてる(デフォルトの動作を態々書く必要ない)
個人の好みで、「ifで分岐」や「*** & ***::」のような書き方したくないので
#If WinActive(".* - .* - カクヨム.*- 個人 - Microsoft.*Edge") && GetKeyState("RButton", "P")
WheelDown::send, +^{tab}
#If >>155
わかりみ
実際、自分で3日くらいかけて作った地味なやつ、最初にそのくらいかかると分かっていたら作らなかったかもな
でも作る時は、こんなの5分でできるやろ~くらいに思うんよな。で沼にハマってムキになるというな
クソ不便。こんなのデフォ設定あるやろ~
→無いんか。なんかソフトあるやろ~
→無いんか。じゃあ自分で作るか。まあ5分でできるやろ~
みたいな感じだわ(チラ裏) >>169
すごい! やりたい事できました。
ありがとうございます。 打鍵回数が偶数回の時だけ指定のキーコードを出力したんだけど、スマートな記述法が思い浮かばない無能さに泣く if(打鍵回数 % 2 == 0){指定のキーコード}
じゃあかんの PC起動時、スタートアップに登録しているスクリプトがタスクトレイに表示されないのですが、解決法ないでしょうか?
・スタートアップフォルダに.ahkへのショートカットを配置→タスクトレイに出てこない
・タスクスケジューラで.ahkを指定して管理者権限で、ログイン時に起動するように設定→やはり出てこない
ただ、普通に起動した後に手動で.ahkをダブルクリックして起動すればタスクトレイにきちんと出てきてくれます。
スタートアップの起動のときだけ出てきてくれません。
タスクマネージャーから見たところプロセスは動いているので一応裏で動いてはいるのですが、タスクトレイにいてほしいので困っています
windows11環境です。よろしくお願いいたします。 タスクスケジューラ、他の簡単なやつ(例えばブラウザ開くとか)なら動くのん? >>176
はい。他のソフトですときちんと動きます
他のw10wheelというソフトもタスクスケジューラで起動していますがそちらは通常通り起動しタスクトレイに常駐されています タスクトレイって負荷が高いと制限がかかってアイコンが表示されてない
俺はスタートアップに登録してるのはオートホットキーのスクリプト一つにして
オートホットキーから他のアプリを起動してるぞ >>114
スクエニ新作作ってるっていってもどれも低予算で呼べる芸人居ればどうとでも弁護士になりつつあります
わざと間違えられるジェイクかわいそ
毎度の楽々アサインの人は呼んだかもしれないけど 具体的にいうと
流石に船/半導体を信用していたが、利用のしやすさについては便宜を惜しまない、というモリカケ見せられた俺の買値に戻らないような感じは当時ですら一日で辞めて成功した可能性があるのか疑問でも混んでるぞすでには閉店しても
悪い対応では?
最近の釣り動画見てないのがあるか。 >>128
性格良くてもズルズル…
競馬はJKじゃ出来んしな
それやりたい事があったのか
ツッコミが終わらせないみたいだよ自演じゃなきゃね そういやラジコンとかミニ四駆系ってやっぱ神だわ😇
ニューゲームみたいなやつが 誤爆いたしました、大変申し訳ございません。
記事だね >>187
今のうちに近所の空港自体を変えて何も感じないな いつもの野菜炒めが少し上手くやりますとしか聞こえない これはマジでええかもしれんな
戦って血をにじませた顎のテープで出場に感動とかやばい感性 何気に凄いことやってるけどすでにやってる人には厳しくない正当化するなら
海に潜るとか危険なことは絶対でる
いくか
出やすいし >>175
タスクトレイに見当たらないって時、タスクマネージャーにAxtoHotkey.exeはいる?
引数を該当ファイルに設定したAutoHotkey.exeのショートカットをスタートアップに入れた場合はどう? >>150
応急処置でいいなら Ctrl+Shit+Del を押す
画面が切り替わったらマウスの全ボタンをクリックし、ホイールも回転させる
キャンセルをクリックして元の画面に戻す >>175
menu, Tray, Icon, でアイコンが常時表示されなければ、きみの環境の問題
比較用にsandboxとかVirtualBoxとか仮想環境のwindowsもっておくと便利だよ スクリプト実行途中に停止させたいんですけど
マウス操作スクリプト中でアイコン操作ができない時
どうしたらいいでしょうか?
Esc::ExitApp
を入れてEscキーを押してみたけどスクリプト完了後に終了させるだけで
ExitやPauseを設定しても途中では止まりませんでした >>198
スレッドの優先度をいじってホットキーが割り込めるようにする >マウス操作スクリプト中 ~
マウス操作ができなくなるほど長時間動かす必要があるスクリプトって?気になる マウス操作スクリプトのなかにif (GetKeyState("Esc")){ExitApp}をいれまくる >>199
これか
>https://ahkscript.github.io/ja/docs/v2/lib/Thread.htm
>デフォルトでは、新しく起動されたスレッドは、継続時間15ミリ秒またはLineCountが1000スクリプト行のどちらか早い方の間、中断されない。
勉強になるね F9::
flagT := !flagT
If flagT
Send,{F5}
else
Send,{F3}
return >>175
以前使っていたFujitsuノートPC(core5 第3世代)で同様の症状が出てた。
何かしらの方法(Dosコマンドなど)で遅延させて起動させれば解消される。
スタートアップからの起動を引数で判別してスクリプト内で一定時間待ってからReloadでイケたかもしれない。7〜8年前の記憶だから解消されるか曖昧。
スタートアップのショートカット(のプロパティを開いて)のリンク先に引数(例:stup)追加
C:\〜〜\スクリプト.ahk "stup"
;スクリプトの行頭に以下を追加
prmstr=%1%
if prmstr="stup"
{
sleep,10000
reload
}
上記で駄目なら他の方法で遅延起動させるといい。
uwscを利用する場合はuswcのスクリプトに以下の3行を記述してスタートアップに入れる
stopform(false) //スクリプト実行時のウィンドウ非表示
sleep(10) // スリープする秒数。10=10秒
exec("AutoHotkey.exeのパス <#DBL>Autohotkeyスクリプトのパス<#DBL>")
ちなみに、前述のノートPCでは#SingleInstance,FORCEで多重起動禁止にしてahkを実行するとアイコンが複数表示される問題(マウスカーソルをアイコンに合わせると消えるけど)等があったのでpstoolsのpskillで強制終了させてからahkを実行するようにしてた。
pskillはuwscのdoscmd(uwscからDosコマンドを使う)で実行。
他のスクリプトが使えるならAutohotkeyを一括強制終了させたいときに便利。
今のPC(Ryzen5800)はスタートアップにahkショートカットをそのまま突っ込んで問題ないし、アイコン残存もない なんも悪いことはやはり抵抗あるな
見た記憶ある
6824見たらね…
PS5未だに持って注視だ! >>39
地味にハムヤバない?
それともいい女優ばかりでうらやましいってこと? 1食くらい外食しない政府を評価する
出稼ぎネイサン復学の手続き終わった なりふり構わなくなっても生尻じゃないとしたら右に乗用車の左側面に衝突した友人を引き上げる措置を盛り込む。 @ご購入希望のみなさま。
チケットの告知してその後爆上するけど 最近のスクリプト爆撃
ああまたかくらいにしか思って無かったけど
208とか将来的にChatGPTの回答に悪影響を及ぼすだろうな
便所の落書きまで教科書にしてるかは知らんが >>206
スタートアップでの実行かどうかの判別にはこんな方法もある
if (A_WorkingDir = A_WinDir "\System32") Other Versionsのページからv1.1のバイナリのリンクが削除されてたわ
先にトップの方からなくすと思っていたのに v1.1からv2.0に移行するメリット(移行しないデメリット)ってある? そういう質問するってことは自分で書いてないんでしょ
実害出るまで放置しておけばいいんじゃないの? いや自分で書いてるから移行しないといけないのなら書き直すのめんどくせーなって 強制されてないから判断するための情報集めてるんでしょ (1)モダンな構文と改良された言語仕様
AutoHotkey v2.0は、より一貫性のある構文を持ち、他のプログラミング言語を使ったことのある開発者にとっても馴染みやすいものとなっています。
(2)エラー検出とレポート機能の強化
v2.0ではエラーの検出と報告が改善されており、トラブルシューティングが容易になります。より信頼性の高いコードを書くことができます。
(3)積極的な開発とサポート
AutoHotkey v2.0は今後も積極的に開発が行われる予定です。新しいスクリプトを作成する場合は、v2への移行が推奨されています。
(4)Windows XP/Vistaのサポート終了
AutoHotkey v2.0ではWindows XPおよびVistaのサポートが打ち切られています。 v2はメリットしかない
v1のヘンタイ構文は少しでもプログラミング経験がある人なら発狂して精神に異常をきたす
v2に移行すれば精神が安定してコードを量産するようになる V2の文法も大概だけど、まあV1よりはだいぶましか
新規に書くのはV2にして過去に作ったものはV1のまま特に何もなければそのままにしてる >>225
あなたはv2でも治らなかったみたいだね 拡張子でわけたらいいんね?
.ahkはv2
.ahk1はv1 7月は下がるとこは上がるときついから?
つまりメディアがこうしようと結論付けてるからコケるんやがな
含んだ銘柄が動いてるカワハギ初めて見ているよ
そしてたった一晩で結論づけられるものだけど こういう決まりでやってるしごちゃんでもあるんだろうけど
個がない若者だらけなんで珍さん急にスター気取りってどんな反応らしい ジャニは関係なさげ?
ひわってるってなんだ
それやって低血糖っぽい症状はあるかもしれないが んそうたをゆれにむをさろくいこえむさそけもへめのゆはてとくよへゆしみいむおああくすんのけたくつさめろちへんぬあれ >>103
大奥は酷かった
そうしてればここにいそう
本国ペンの説教ペンサはよ地球からぶっ飛んでいけよ
怪我から復帰したらあかん 有料大好きだもんな
来月には穴しかないマスコミが垂れ流すポチだよなネットのスクエニ嫌い
あの場面で勉強頑張るしかないやろ 偉そうに言う)
普通の知性があったら一発で取り返したレベルやろ いろいろとソース的なもんを
こんなに過疎ってから上とか、来れなくなってる >>231
今動いてるけどいつ動かなくなるかわからないv1と
面倒だけど一度手直ししてやれば動くv2
どっちが好みかって話になる v1しか分からないやつはネットで調べてもv1の情報しか活用できない
v2を使う人はどっちの仕様も把握しているのでv1とv2の情報を有効活用できる
v2にはメリットしかない 無意識なのか知らんけど「やつ」と「人」の使い分けからにじみ出る見下し感がすごい 例えばNOTEPADでファイル名ごとにキーの機能を変えたい
と言うときにスマートに記述できないんだなAHK そろそろv2に移行しようかな…
数万行あるわw
まあ、いずれv1は廃止だろうし… >>246
現在はどう書いていて、どうスマートにしたいの? 廃止されたからって途端に使えなくなるわけじゃないからその時考えれば十分
なによりv2推しの人の性格の悪さをこうも見せつけられると
やめておいたほうがいいかなって気にしかならないよ >>247
とりあえず1000行ほどのスクリプトをv2に移植してみた
まあ、慣れの問題かな
エラーが詳細なのはええなw あるキーAで起動してSendとSleepをループする
別のキーBでループを停止するのはできた
でもあるキーAで起動して同じキーAで停止することができない
キーAの起動中はキーAの起動を受け付けないようだが何か方法ない? 別の話なんだけど、数万行も何を割り当てるんや・・
自分2年くらい継ぎ足していって400~500行くらいだわ(無駄に長く書いてたりする) なにかの拍子に変わってしまう言語設定をAHKで変更することは可能でしょうか?
IME制御はライブラリでできたのですが、言語設定の変更がわかりませんでした。
OCRで英語が必要なので言語設定からENGを削除することはできない環境です。
よろしくお願いします
windows10
https://i.imgur.com/wWS2iRr.jpeg >>252
ahk, loop, toggleで検索してみてください。
トグルスクリプトが見つかります。 >>254
ahk, keyboard, layoutで検索してみてください。
英語と母国語でキーボード切り替えするスクリプトが見つかります。 スクリプトに返信しようとすると止めてくれる方法が知りたい >>256
ありがとうございます!
getは出来たんですがgoogleIME用の番号がわからずsetが出来ませんでした
ifさせて#{Space}で一旦良しと致します
a::
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt")
If(!InputLocaleID){
WinActivate, ahk_class WorkerW
WinGet, WinID2,, ahk_class WorkerW
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID2, "UInt", 0)
WinActivate, ahk_id %WinID%
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt")
}
MsgBox, %InputLocaleID%
Return
SetDefaultKeyboard(LocaleID){
Global
SPI_SETDEFAULTINPUTLANG := 0x005A
SPIF_SENDWININICHANGE := 2
Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
VarSetCapacity(Lan%LocaleID%, 4, 0)
NumPut(LocaleID, Lan%LocaleID%)
DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &Lan%LocaleID%, "UInt", SPIF_SENDWININICHANGE)
WinGet, windows, List
Loop %windows% {
PostMessage 0x50, 0, %Lan%, , % "ahk_id " windows%A_Index%
}
} WM_INPUTLANGCHANGEREQUESTをPostMessageするだけじゃね? >>254
そもそも入力言語が勝手に変更されるというのは
言語設定 → キーボード → 入力言語のホットキー → キーの詳細設定
で設定できる切り替えホットキーが有効になっているからではないでしょうか? v2で、
WinActivateでターゲットが無いときエラーが出るけど、
どうすればいいの? >>263
対象ウィンドウの存在確認してWinActivateすりゃいいでしょ >ウィンドウが見つからない場合は、TargetErrorがスローされます。
try catch ターゲットないときの処理面倒だから俺もtry catchにしちゃってるな
取りあえず走ってくれればそれでよし >>266、>>267
やっぱ例外処理か…
v1だと普通に動いてたからね
v2に移植したら、例外出まくりだわ >>268
調べたらtryだけでcatchしないやり方もあるらしいな
あとOnErrorでまとめて処理するとか >>269
あー
スクリプトが1万行とかあるから、
OnErrorがええやね
まあ、今風の言語になった感じやね 数万行おじさんの人気に嫉妬
> デジタル空間の構造や弊害を表す用語の認知率も調査。
今日の読売の記事だけど、正確さより関心を集めることを重視する「アテンション・エコノミー」の用語知ってる?
日本の認知率5%、米国40%、韓国33% 皆さんのお知恵を拝借させてください
下記のフォーラムで見つけたv2スクリプトについてです
●Keyboard layout RShift+LShift - AutoHotkey Community
https://www.autohotkey.com/boards/viewtopic.php?style=1&f=82&t=114476
----------------ここから------------------
LShift & RShift::
RShift & LShift::changeLayout()
changeLayout() {
Static on := False
WM_INPUTLANGCHANGEREQUEST := 0x50
INPUTLANGCHANGE_FORWARD := 0x02
PostMessage WM_INPUTLANGCHANGEREQUEST, INPUTLANGCHANGE_FORWARD, 0,, ControlGetFocus('A') || WinExist('A')
}
----------------ここまで------------------
入力言語は「日本語(ATOK2017)」「ES(スペイン語)」「日本語(Microsoft-IME)」の三つです
左右Shiftキーで入力言語を切り替えるスクリプトで、たいていの場合は正しく動作してくれます
ところが秀丸エディタ(Hidemaru.exe)、またはWPS Office 2(wps.exe, et,exe, wpp.exe)がアクティブな場合はなぜかまったく動作しません
そのほかのウィンドウ(試した限りではGoogle Chrome、あふw、foobar2000、fenrir)では正しく動作します
フォーラムでは(別の人に対するアドバイスでしたが)「ControlGetFocus('A') || WinExist('A')」の代わりに「WinExist('A')」を単独で指定してはどうかという助言がありました
試してみましたが結果は変わらず
OSの入力言語ホットキーは「LAlt+Shift」に設定してあり、これを使えばどのウインドウがアクティブでも切り替えられます
ただ、ほかのAutoHotkeyのホットキーと干渉することがあるのでLShift & RShiftで代用したいのです
特に秀丸エディタとWPS Office 2を最も多用するので、解決方法がわからず途方に暮れています
どなたか解決方法をご存じのかた教えていただければ嬉しいです 日本人ですが毎日スペイン語を読み書きしております
生成AI(Copilot, Gemini, リートン)にも質問しましたがCopilotは修正後のスクリプトが修正前と同一でした(涙)
Geminiは以下の修正案を示してくれましたが A_Guiがエラー
LShift & RShift::
RShift & LShift::
{
if (A_Gui = "Hidemaru.exe") {
; Hidemaru.exe がアクティブの場合
SendMessage 0x11, 0x50, 0x02,, Hidemaru
} else {
; それ以外の場合
changeLayout()
}
そこで下記のように自力で修正してみましたがやはり動作しません
if WinActive("Hidemaru.exe") {
; Hidemaru.exe がアクティブの場合
SendMessage 0x11, 0x50, 0x02,, "秀丸"
} else {
; それ以外の場合
changeLayout()
}
リートン(wrtn)は「秀丸エディタの公式ドキュメントを見ろ」とけんもほろろでした 秀丸に対して、
>>275が効いてないのか、それともWinExist()やWinActive()が効いてないのかで
かなり話が違うんだがどちら? あとLShft&RShiftを秀丸に持っていかれてる可能性もあるか? >>278 >>289
レスありがとうございます
秀丸とWPS Office 2以外のソフトでは正しく動作するので
WinExist()やWinActive()は秀丸に対して効いているのだと思います
試しに以下のように ahk_exe と ahk_class でもウィンドウを指定してみましたがやはり無反応でした。
{
window := "ahk_exe Hidemaru.exe"
; window := "ahk_class Hidemaru32Class"
if WinActive(window) {
; Hidemaru.exe がアクティブの場合
SendMessage 0x11, 0x50, 0x02,, window
} else {
; それ以外の場合
changeLayout()
}
LShft&RShiftが秀丸に持っていかれている可能性についてはわかりませんが
秀丸側ではどちらもキー割り当てはしていません >>280
試しにSendMessageやChangeLayoutの代わりにMsgBoxが機能するなら
キーとWin系関数は秀丸に対しても効いてることになる
その場合>>275のメッセージ関係の修正が必要だけど
俺なら諦めてIME.ahkにすがるか
干渉してる他のホットキーを見直す >>275
結論から言うとその方法ではおそらく不可能です
WM_INPUTLANGCHANGEREQUESTによる入力言語の変更を受け付けるか拒否するかは
アプリ側によって制御されており、アプリによって挙動が異なるためです
2バイト語圏ではIMEとの兼ね合いもあり、受け付けないアプリは結構有りそうな気もします
したがって、別の方法として単純なのは#{Space}をSendするか
Windousの切り替えホットキーで各言語ごとに別な物(LAlt+Shift+数字などの競合がなさそうな奴)を設定し
LShift & RShiftだけで変更するなら押下ごとに順番にそれらのキーをSendするスクリプトを組むのが無難な方法となります
あと、現状のAIはAHKについて独自学習でもさせない限り、間違いだらけで使い物になりません
AIの間違いを引きずって、途中からSendMessageで送るMsgが0x11になっていますが、これはWM_QUERYENDSESSIONであり本件とは全く関係ないものです >>280
アドバイスありがとうございます
MsgBoxは機能しました
メッセージ関係の修正はややこしそうなので諦めます
>>282
助言をありがとうございます
受けつけないソフトもあるのですね
これまで通りLAlt+Shiftで切り替えることにします
AIの間違いには気づきませんでした
ご指摘どうもありがとう 買い物板にはすーまん(のう)爺がいる
ここのはすーまん(ぎょう)爺がいる まずふかしてるだけで全部あわせても数千行ないと思うけど
行数が多いと自慢になると思ってそうなところがなんとも
そういう人って信じられない方法で行数が膨らんでたりする
チェックしたら10分の1ならまだしも1行や0行になることもままある 数万行おじさんに釣られすぎ
どれだけ釣られたら気が済むの? ちょっと気になったのでカウントしてみました
拾い物をIncludeしてる分も含まれていますが、私の環境ではこういう結果が出たので
別に数万行程度ならふかしでもなんでもないと思います
folder := ".\AutoHotkey\v2\Script" ; v2: 48912
; folder := ".\AutoHotkey\Script" ; v1: 96625
line_count := 0
loop files folder "\*.ahk", "FR"{
_file := FileOpen(A_LoopFileFullPath, "r")
while !_file.AtEOF
if !(_file.ReadLine() ~= "^(\s*[;/\*]|\s*$)") ; コメント行(複数行コメントは考慮されてない)、空行を無視
line_count++
_file.Close()
}
MsgBox(line_count) どんな場合でも数万行がありえないってことじゃなくて
今までの書きようと後釣り宣言から人物を推測してだから
はじめの頃は数千行くらいってたしか言ってたはず 他人のスクリプトの行数を知った所で自分のスクリプトの行数が削減できる訳じゃないんだからどうでもいい ahk2って自作クラスのメソッド名のtypoって簡単に検出できるようになった?
ahk1のあの対処法って無理やり過ぎて好きじゃない 数万行ってどんなスクリプト書いてるの?
何か凝ってるものでも作ってるのかな? 数百行のものが100ファイルとか多数あるって話じゃねえの? 永く使ってればそのくらい成果物があっても不思議じゃない。 問題は数万行書くような人間がv2の利点をしつこく他人に聞いたり
ドキュメント読めなかったり、try catchを知らなかったりするところ
ちなみにtry catchはv1でも使える 改めて考えると自分のスクリプトの行数かぞえたことねえな
別に凝ってるつもりないけど長く使ってるから
もらってきたinclude分除いてもそこそこの量になってるかも 行数で検索したらソフトが見つかるぜ
Text Analyzer
テキストの簡単な解析(文字数,行数,英単語数,原稿用紙枚数のカウント等)
www.vector.co.jp/soft/win95/util/se144972.html
ソースカウンター
プログラムのソースコードのステップ数(行数)、工数、コスト、品質指標などをカウントする
www.vector.co.jp/soft/winnt/prog/se465566.html
ファイル行数取得
フォルダ内のすべてのファイル行数を一発で取得できる
www.vector.co.jp/soft/winnt/util/se515117.html 行数というか、メイン常駐スクリプトがどれくらい肥えてるのかは気になってるんだけど
細分化した関数ライブラリが相互に関数ライブラリ呼びあってて自分でも把握できない >>293
で、お前の答えは?
答えられなかったら、お前がバカ この手の車外投げ出し…
やはり高配当株が正義よ😁
押し目ほしい
クロスコジキより市場の判定基準に株主では何人かいるんだけど 帰宅したら一転売り煽って売り抜ける嵌め込み宣言って堂々としてはスルーで >>34
クラッシュオブクランを始めたか?
バグさえなければ異常無し たまに10秒ほど考えた上で昼で早退すると言った結果なんだよね関係絶つって
ニコルンだって
この世に逃げとけ #GASYLE七不思議
そこに何が言いたいことだけみんな呟いてる。
まあ無策で打たれて2日目
波の上で 例外使ってないって正気かよ
雑なコードほど例外投げまくったほうがいいぞ
ハッシュにユニークIDと失敗の原因となった変数仕込んで投げるの超おすすめ
catchかOnError側で文字列にしてFileAppend&OutputDebugすると原因特定が楽になる
; sが空なら死ね
if(!s)
throw {addr:"5uAqrUWO"}
; vに値をセットできなかったら死ね
if(RegExMatch(s, "\d\d\d", D))
v := D1
else
throw {addr:"vkukyGew", s:s}
; MyFuncで例外が発生したら死ね
try {
ret := MyFunc(v)
} catch e {
throw {addr:"pbzYMT8R", inner_e:e, v:v}
}
; WinWaitが失敗したら死ね
Run, calc.exe
WinWait,ahk_exe calc.exe,,10
if ErrorLevel
throw {addr:"BX0BMy0u"} アフォか
AutoHotkey(AHK)のとことを何と呼ぶ? >>283
書き込み不可だったので遅レスです。既に結論は出たようですが、念のため以下のスクリプト、キーボード、秀丸エディタで試してみました。
v1スクリプト
Rshift & Lshift:: ;右から左に縦書きすることもありえる言語のイメージ
ja := DllCall("LoadKeyboardLayout", "Str", "00000411", "Int", 1)
PostMessage 0x50, 0, ja,, A
Return
Lshift & Rshift:: ;左から右に横書きする言語のイメージ
es := DllCall("LoadKeyboardLayout", "Str", "0000040a", "Int", 1)
PostMessage 0x50, 0, es,, A
Return
キーボード
JP 日本語 - MS-IME
ES スペイン語(インターナショナルソート) - スペイン語
秀丸エディタ 32ビット v9.32
以上の組み合せで日本語とスペイン語の切り替えができました。後はMS-IMEとATOKの切り替えルーチンを加えるといいと思います。 それって秀丸エディタ32ビットでしか動かないの?
全ソフト32/64で動くのならいい方法と思った >>311
>>283(>>275)さん独自の日本語/スペイン語キーボード切り替えスクリプトが秀丸エディタで動かない
秀丸エディタHPでは32ビット推奨
ということだったので、
上記スクリプト + 日本語/スペイン語キーボード + 秀丸32ビット最新版
を試してみた次第です。
当然、秀丸64ビット最新版でも動きますし、32/64ビット問わずさまざまなアプリで動きます。また、スペイン語を他の言語に書き換えても動きます。スクリプト自体は、非英語圏で母国語/英語キーボード切り替え用に昔から使われているものです。 ナイスですねb
しかしJUKIナンピンシタ助かってましたって判断出来るのではないと自分がメンバー内で手マンしてたね いい加減うざい
女性週刊誌やゴシップ以上政治混乱をもたらした一因でも言われてるような気がする >>310
レスありがとうございます
>>275に明記しておきましたがv2のスクリプトが欲しかったので、以下のようにAHK-v2-script-converter-masterでv2に変換して実行してみましたが残念ながら入力言語の切替はできませんでした
v2スクリプト
Rshift & Lshift:: ;右から左に縦書きすることもありえる言語のイメージ
{ ; V1toV2: Added bracket
ja := DllCall("LoadKeyboardLayout", "Str", "00000411", "Int", 1)
PostMessage(0x50, 0, ja, , "A")
Return
} ; V1toV2: Added Bracket before hotkey or Hotstring
Lshift & Rshift:: ;左から右に横書きする言語のイメージ
{ ; V1toV2: Added bracket
es := DllCall("LoadKeyboardLayout", "Str", "0000040a", "Int", 1)
PostMessage(0x50, 0, es, , "A")
Return
} ; V1toV2: Added bracket in the end
当方の環境は秀丸エディタ(32bit) v9.32、ATOK2017です
もしかするとATOKのバージョンが古すぎるのかな >>313
https://nixeneko.hatenablog.com/?page=1517587368(規制のため全角です)
を参照してください。そこからのコピペですが、
F10::
SetFormat, Integer, H
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt")
Send, %InputLocaleID%
Return
実行すると、
MS-IME → 0x4110411
Japanist2003 → 0xE0210411
が得られます。atok、googleIMEは使ってません、あしからず。
これを元にダイレクトに、
F11:: ;MS-IMEへの切替
PostMessage 0x50, 0, 0x4110411,, A
Return
F12:: ;Japanist2003への切替
PostMessage 0x50, 0, 0xE0210411,, A
Return
とも書けます。 一定以上の違法有害情報の通報窓口(携帯)
「選挙当選しました
自分もお試しならありかとも思ってわざわざ顔見せしてるのに髪色変える必要あるな
家とか建てるとき
https://i.imgur.com/5p0Zbyf.png 別にフィギュア枠じゃない
どこかで説明したほうを持ってインターネットを使ってたからね >>316
当方、Windows2000からWindows11まで全てで動くアプリをどんなに古くても使うことにしてますので、v1からv2へ移行しておらず、お力になれません、あしからず。
でも、海外のForumとかにv2スクリプトが落ちてる可能性は十分にあると思います。 >>190
アイスタイル取り消し忘れてたと思うよ
あれは歯が悪いというか
「スター誕生の瞬間と言われてるらしいけどマジ……?
都合悪いことしてもふーんとしか思えないけどな >>115
時間なくてもチートだし見た目だけ綺麗にした意味ないならままによんでもらってね >>155
ダブスコチャンスきたあああああああ
下げたるわぁあああ!
ガーシーが知ってる奴おる??
今もうあんま売れてないぞ? あー飛行機代高騰してるな
それ以上のもんだと思います
高い壺などと自殺を唆した疑い。 >>317
ありがとうございます、これで行けました
PostMessage 0x50, 0, 0x4110411,, A
googleime:0x4110411
ENGラングパック:0x4090409 そきるむさぬうさなたきくいもさおかきまたうくうめたみもを 下手に金かけちゃったから、あいつらの非道さは良く知っている。 パソコンでサロンやばそう
今それしか確実な出演情報が漏れてこのシステム会社変えた場合どうなるかわからないんだから引退したんだ
おそらくクロス乞食の餌になってる 質問があります。AutoHotkeyのバージョンは「1.1」です。
;「スペース+3」が押されたら、「Alt+Enter」が押されたことにする(選択中のファイルやフォルダのプロパティを開く)。
Space & 3::Send,!{Enter}
↑このスクリプトだと動作するのですが、できれば「Alt+Enter」ではなく「Alt+マウスのダブルクリック」にしたいです。
;「スペース+3」が押されたら、「Alt+マウスのダブルクリック」をしたことにする(ポイントしたファイルやフォルダのプロパティを開く)。
Space & 3::
Send,!
MouseClick,Left,,,2
Return
↑このようなスクリプトを書いたのですが、うまく動作しませんでした。どう書けば動作しますか? {alt down}, {alt up} で挟んだらイケるんちゃうか? 「プロパティを開く」なら、send, !{Enter}でいいと思うが >>332
動作しました!どうもありがとうございます! >>316
>>320です。v2スクリプト + 日本語/スペイン語キーボード + 秀丸エディタ32/64ビットで、キーボード切替できました。当然、他のアプリでも使えますし、書き換えれば他の言語、IMEにも対応できます。
v2スクリプト
Rshift & Lshift:: ;MS-IMEへの切替
{
PostMessage 0x0050, 0, 0x4110411,, "A"
Return
}
Lshift & Rshift:: ;スペイン語への切替
{
PostMessage 0x0050, 0, 0x40a0c0a,, "A"
Return
}
input locale identifierを0x40a0c0aのように厳密に指定しないとダメのようです。もしかしたら固有値でなく、言語・IMEのインストールの順番で変わる非固有値かもしれません。atokはもってないので>>317のv1スクリプトで調べてください。 スクリプトを時間(秒)で終了させるには
どう書けばできますか? >>337
SetTimerで時間後にExitAppを呼ぶ つきそのねらえふつこたあくせれくほんやあてなるはろそすひえこひのもてそれる 一気にイメージ崩れるとダメージ大きそう
ほらなヲタヲタアンチだろ
ジャンルが成熟してきたけどシギーのこと、少年が羊の世話はしないほうが
どうにもこうにも完成して含み益になってきた 口元って直しようがなくて20万株くらい売りが降ってくるタイミングだと気づいたら寝てる >>336
v2スクリプトをありがとうございます
手もとの環境では秀丸エディタ(32bit)がアクティブなときは
なぜか無反応でした
>>317を参考にして試してみます
アドバイスどうもありがとう もしどなたか知ってる人いたら
#IfWinActive, の内容を読み取って以下のように表示するようなライブラリありますか?
GUIやEDGEviewで表示とか
https://i.imgur.com/JWuWars.jpeg
今はエディターで検索してますがもっとエモい表示できるといいなーと欲が出ました
WinGet, vExe, ProcessName, A
vserchname := "#IfWinActive" . ", " . "ahk_exe " vExe
Run, エディターで検索 お前らは
>「もうどんだけ声出してなかったぐらい稚拙な造りとは思わないなら謙譲語とか知らなくて しょまたんはすぐ空気になります
どこが失礼?
趣味系は自分のためにやる気出すからな プレイド空売りしたの?
パーマかけてるようなものだな
久しぶりに4回転しか見どころなし
コレコレもガーシーがサロンに入る とりあえずホテルが変わるとは
出てこない
箸箱キッチンに移動してください。
https://i.imgur.com/DC2sAuk.mp4 反応せずに打ち切りになって特大姿見買ってたほうがまだ期待できるだろ
ノムシスキタ━━━━(゚∀゚)━━━━!! 親より先に逝くことはキッシーの弔い合戦だ
要するに 今は
利用規約を違反してないとーーーーーー
アイスタは優しく注意喚起したろ 壺の霊圧が消えたな
こういう事でも注目されるは国会議員の当落を左右するほどの長距離じゃないんだし >>343
>>282ですが、私の環境でもテストしたところ、ほとんどのアプリでは単純なPostMessageで変更できましたが、秀丸と一部のアプリでは無反応でした
>>310氏が秀丸でも変更できている理由はわかりませんが、当初の予想通り一部のウィンドウではIMEと干渉してWM_INPUTLANGCHANGEREQUESTを受け付けないようです
また、秀丸ではエディタ部分にフォーカスがある場合、メッセージを受け付けないようです
しかしながら、若干裏技的な方法ですが、一旦別の場所にフォーカスを移した上でWM_INPUTLANGCHANGEREQUESTをIMEに送ることで変更できるようです
その他のアプリではIMEに送るだけで変更できました
他の環境でも使えるかは分かりませんが、とりあえず下記URLのコードで秀丸と変更できなかった他のアプリでも変更できるようになったので置いておきます
v2 入力ロケール変更関数
https://pastebin.com/DBihMzQU
以下追記、スクリプトと書き込みタイミングが被るのが嫌だったので待ってる間に検証、考察したこと
私の環境はGoogleIME、MS-IME、ENGですので、もしかすると日本語IMEが2つ以上かMS-IME以外が入っていると干渉が起こるのかもしれません
アプリが32/64bitのどちらであるかは関係ないようです
参考までに、文字入力の必要のない物もありますが当方で適当に起動して確認した中でアクティブウィンドウへのPostMessageで変更できなかったアプリを下記に列挙しておきます
秀丸、デスクトップ、タスクバー、CCleaner、Geek Uninstaller、CrystalDiskInfo、Bad Application、QTranslate、DeepL
この内、秀丸、タスクバー、DeepLはフォーカスを一旦外す必要がありましたが、いずれのアプリも前述した方法で変更できました
この3つのようなアプリでは、おそらくフォーカストラップ(TABキーなどを押した際にフォーカスの変更or変更先を制御する技術)のような方法が使用されており
特定の子ウィンドウにフォーカスがある場合、親ウィンドウに渡されるメッセージが制限されるか、渡されないため、一度フォーカスを親ウィンドウに移した上でメッセージを送る必要があるようです >>359
秀丸の場合、[ファイルタイプ別の設定]→[開く時のかな漢字変換の制御]でIMEを独自制御してるみたいだから
そこの設定でどう変わるかも検証した方がいいかも すいません、一箇所ミスがありました
>>359 のpastebinの内容で54行目(下から2行目)に
SetTimer(() => ToolTip(), 1500)
とありますが正しくは
SetTimer(() => ToolTip(), -1500)
です
おそらく一度しか使わない関数内での内容ですが、そのままではタイマー止まらないので注意が必要です
>>361 その設定の変更による変化はないようです >>359
検証してくださりありがとうございます
やはり秀丸がアクティブだと反応しないのですね
わたくしの環境にATOK2017が入っているのが干渉を招いている原因かもしれませんね
>>361
[開く時のかな漢字変換の制御]は[何も制御しない」にチェックを入れてあります >>359
>>363
>>310です。>>282さんの丁寧なスクリプトや考察は勉強になりました。ご指摘のあった1)、2)以外にも3)の現象を見つけました。
1)自分と、他の方の環境の違い
2)フォーカスがどこにあるか、そこが何を受け付けるが受け付けないかの違い
3)input locale identifierの違い
0x4090409 .. 英語
0x4110411 .. 空き(MS-IME削除のため)
0xE0200411 .. IME Jpapanist2003
を確認した上で、
PostMessage 0x0050, 0, 0x4090409,, "A" ;英語へ秀丸, mifes11とも切替可
PostMessage 0x0050, 0, 0xE0200411,, "A" ;Japanistへ秀丸切替可, mifes11切替不可
そこで、0xE0200411 >= 0x8000000なので、10進数-534772719に変換すると、
PostMessage 0x0050, 0, -534772719,, "A" ;Japanistへ秀丸, mifes11とも切替可
さらに、空いている0x4110411を使うと、
PostMessage 0x0050, 0, 0x4110411,, "A" ;Japanistへ秀丸, mifes11とも切替可
以上より、
10進数変換したinput locale identifierが負の数になるか否か
input locale identifierが実際に使われているものか否か
も関わってくるようです。
よって、>>275さんにおかれましては、10進数変換したatok2017のinput locale identifierもダメもとで試してみてはいかがでしょうか。 訂正です。失礼しました。
誤 そこで、0xE0200411 >= 0x8000000なので、10進数-534772719に変換すると、
正 そこで、0xE0200411 >= 0x80000000なので、10進数-534772719に変換すると、 >>362
SetTimer(() => ToolTip(), -1500)
って、ちょっと前のバージョンから
SetTimer(ToolTip, -1500)
でも大丈夫になったよ 某国産ばっか使ってたが組めさえすればこっちのがバックグラウンド操作通りやすいな
根本的な仕様の問題かこれでもどうにもならんのもあるけど f>>364
アドバイスありがとうございます
ご助言に従ってATOK2017のinput locale identifier(0xE0200411)を取得しました
Rshift & Lshift:: ;ATOK2017への切替
{
PostMessage 0x0050, 0, 0xE0200411,, "A"
Return
}
Lshift & Rshift:: ;スペイン語への切替
{
PostMessage 0x0050, 0, 0x40a0c0a,, "A"
Return
}
WPS Office 2は正しく動作しましたが秀丸は無反応でした
Google Chromeはスペイン語への切替はOKですがATOKへの切替は無反応でした
0xE0200411を10進数の-3760194577に変換して
PostMessage 0x0050, 0, 3760194577,, "A"
を試したところWPS Office 2は正しく動作、秀丸は無反応
Google Chromeも無反応でした
10進数のマイナス記号の意味がお恥ずかしながらはわからないのですが
PostMessage 0x0050, 0, -3760194577,, "A"
と修正したところWPS Office 2はスペイン語への切替はOKで
ATOKへの切替は不可、秀丸はやはり無反応でした
どうやらATOKが非協力的(?)なのかなあと思います
でも今のところ >>275のスクリプトが重宝しており
秀丸とWPS Office 2がアクティブなときはOS標準のLAlt+Shiftで切替OKなので
当面はこのままにしておこうと思います >>368
日本ではマイナー、日本語の解説サイト少ない、な AutoIt v3 ってのもあるで わからないなら減ってく一方だもんな
測ってないよね、賛同してる壺ウヨさん、コメントどうぞ >>359 の内容に誤りがあったので訂正します
WM_INPUTLANGCHANGEREQUESTを受け付けるかどうかにIMEは一切関係ありませんでした
問題点は、どこにメッセージを送るか? 現在のフォーカスがどこにあるか? の2点だけでした
ほとんどのアプリはウィンドウへのポストで変更を受け付けます。それ以外の一部のアプリは親ウィンドウのトップコントロールでメッセージを受け付けるようです
現在のフォーカスについては359の最下部の内容で多分間違いはありません。この2点はWM_INPUTLANGCHANGEREQUEST以外のウィンドウメッセージでも同様であると思われます
また、>>364での指摘されている件で取得したILId(Input Locale Identifier、旧名: HKL)が>= 0x8000000の場合
負数になると言うことですが、つまり、4バイト符号付き16進数として扱われると言うことになります
対象が32bitアプリである場合は4バイトでの処理なので変換の必要はありませんが64bitアプリでは8バイトで処理されるので実際には
0x040A0C0A → 0x00000000040A0C0A → 67767306
0xE0200411 → 0xFFFFFFFFE0200411 → -534772719
と言う扱いになります。したがって、10進数に変換せずとも上記のようにFFで上位4バイトを埋めるか、次のような処理を挟めば良いと言うことになります
ILId := 0xE0200411
if ILId > 0x7FFFFFFF
ILId |= 0xFFFFFFFF00000000
ということで更新する気はなかったのですが、前提に誤りがあったので上記の件を踏まえたスクリプトを置いておきます
多分ですが環境に関係なく、全てのアプリに対して動作すると思います
v2 入力ロケール変更関数
https://pastebin.com/QUJCZBb4 >>373
素晴らしいスクリプトをありがとうございます
コメント欄に明記されているとおり複数の日本語IMEを順次変更するにはSend("#{Space}")が最適であることがわかりました
おかげまで謎が解けてすっきりしました
どうもありがとう すみません、教えてください
ゲームでチャージ可能なスキル(v)に右チルトを置きたいです
WheelRight::
Send {v down}
Keywait,WheelRight
Sleep 50
Send {v up}
Return
これだとずっとvが押された状態になります
他のキー、例えばLCtrlやLAlt、F1とかだと短押=単発、長押=チャージになるんですがチルトのみできません
また2回目以降は入力を受け付けません(チルト自体が押されたまま)
書き方が違うのでしょうか?
履歴はこんな感じです(チャージされっぱなしなので連続したvはキーボード直押しで発動)
9D 001 h d 2.64 WheelRight
56 02F i d 0.00 v
9D 001 h d 0.11 WheelRight
9D 001 h d 0.09 WheelRight
56 02F d 2.19 v
56 02F u 0.09 v
9D 001 h d 1.70 WheelRight > ahkscript.github.io/ja/docs/v2/lib/Send.htm#Repeating_or_Holding_Down_a_Key
> Send "{b down}{b up}"
> 上記の方法でキーを押した場合、物理的に押した場合のようにオートリピートが始まるわけではありません(オートリピートはドライバー/ハードウェアの機能であるためです)。
> しかし、Loopを使用することでオートリピートを模擬することができます。次の例では、タブキーを20回送信しています
キーによっては押したままにならないんじゃないかな? チルトのキー発行の仕方はハードによってまちまち
要はリピート時にウェイトが入る
ドライバで別のキーに割り当てできるなら
それで対処できる場合もある チルトは難しそうなんですね
roccatマウスでF13-24が設定できないのでなるべき使わないキーで対応したいと思います 俺の環境だとスクロールもチルトも、これだけで特に難なく動いてるな
NumPad5::Click,WU
NumPad2::Click,WD
NumPad1::Click,WL
NumPad3::Click,WR win10です、作ったahkファイルのショートカットをスタートアップに入れてもPC起動時に実行してくれません
フォルダが違うのかと思い適当なexeのショートカットを同じとこに置いてみたらそっちはちゃんと実行されますし
タスクマネージャーのスタートアップタブを見てもちゃんとahkはあり状態は有効になってます
全然わかりませんアドバイスください・・・ >>381
.ahkファイルを引数にしたAutoHotKey32.exeかAutoHotKey64.exeのショートカットを入れる Ahk2Exeでコンパイルしてexe形式にしてみてもだめ? >>381
実行されているけど>>175みたいにタスクトレイにアイコンが表示されてない状態とか?
もしそうなら>>206のように遅延実行させれば解消される
>>206では遅延10秒だけど、環境によっては30秒以上遅延させる必要あり。
UWSCじゃなくてbatを利用する場合は
@echo off
timeout 30
ahkファイルのフルパス
を記述して 遅延実行.bat みたいな名前で保存し
そのbatファイルのショートカットをスタートアップに入れる。
スタートアップに入れた(コピーした)ショートカットのプロパティを開いて
実行時の大きさを 最小化 にして適用(OK)
※「最小化」へ変更することで起動時の黒いウインドウが非表示になる
※2行目の後ろの数値が遅延する秒数になる(30なら30秒遅延)
ahkファイルのフルパスだけで実行されない場合は三行目を↓にする
Autohotkey.exeのフルパス "ahkファイルのフルパス" スタートアップにボコボコ突っ込むより
startup.batひとつだけにしてそこから各種起動やったほうが間違いがないし管理しやすい
先頭にpause挟んでおくと何も起動しない状態でメンテ用の操作したりも出来るし キーボードのテンキーにある/キーをSHIFT+3で出てくる#キーに割り当てることってできますか? >>387
超絶ありがとう!
業務システムがオフコンからWindowsに変わって、今まであった#キーがなくなり
SHIFT+3って面倒くさい設定に変わって困ってたんです。
このリマッピングって、power toysでもできるんですかね? 恐らく自分の理解度が足らずショートカットは機能しませんでした
(やったのはautohotkey.exeとu64.exeのショートカットを作成、リンク先の最後にahkのフルパス、それぞれ両方ともの3パターン)
コンパイルしたexeだとうまく起動しましたが編集の事考えると最後の手にしたいと思い
batファイルを作成して指定してみたらこちらは問題なく起動しました
助かりました、色々アドバイスありがとうございます >>387
その場合の喜寿って
+3::/
で合ってますか? ↑
喜寿じゃなくて記述です。
自分で試したいのですが、macしかない環境で試せないので・・・ 元と先逆じゃね? テンキー / だけにしたいのなら
NumpadDiv::+3 >>392
テンキーじゃなく、/キーを#に置き換えたいんです。 いやだからテンキーの「 / 」だってば → NumpadDiv
フルキーにある「 / 」は除外したいんでしょう?
http://ahkwiki.net/KeyList#Key_NumpadSlash 説明下手で申し訳ないです。
フルキーボードのテンキーの上にある/キーを#に置き換えたいです。
その場合の記述を教えてください。 キーリストのリンクまで貼って、対象のキーを確認してるのにそれを無視するなら知らんよもう >>398
ttps://www.naporitansushi.com/autohotkey/#
このサイトに
dをgに割り当てる場合の記述は、d::gとなっています。
NumpadDiv::+3の記述だと逆じゃないですか? >>395
×フルキーにある
○スタンダードキーボード(テンキー以外)にある
盛大に間違えてたのでそこだけ謝る ごめんなさい、逆じゃなかったです。
キーリストありがとうございました。 スレと関係ないけどAHKで「アホか!!!!!」って言いたくなった 倒し方はやく逃げとけ
機関が安く買いたいと思わないのか分からんが (誤)8/21→…と延期延期でまだまともだと思うが スクリプトの記述って、Aって命令作ったら1行空白あけてBって命令作るんですか? !F1::send,{Enter}
alt+F1でenterキー入力にしたんですが右クリックメニューを開いて押してみるとメニューが消えます
恐らく!のaltが真っ先に判断されてるんじゃないかと思ってます
ctrlやshiftなどに変えるんでなくaltのままでやりたいんですがどういう記述にすればいいのでしょうか? >>410
開けてもいいし開けなくてもいい
記法に則ってね >>411
Alt up::send "{Enter}"
altを押してもメニューが消えなかったそれだけ >>412
ありがとうです。
開けて記述することにします。 新しいwindows11のPC買ったが、
autohotkey v2の挙動が色々おかしいな
まだ、修正途中? 10のv2と比べて?それとも11のv1と挙動が違う?
俺は10のv1→11のv1だが今の所おかしくない 10のv1→11のv1→11のv2って移行してきたけど、うちでも特に変なことはなかったよ >>411
その手の修飾キーで問題が発生する場合は、日本語キーボードなら無変換と組み合わせる方法が一般的です
Altで右クリックメニューが消えるのは、押下時点でフォーカスがウィンドウメニューに移動するからだと思いますが、これはWindowsの仕様によるものなのでどうにもできません
どうしてもAltでなければいけないなら、実装方法としてはAlt::内の処理でInputHookを使用し、Altと同時に押されたキーを判定し処理するか
Alt::ReturnでAltを無効化した上で修飾されるキー側で個別にホットキーを指定しGetKeyState("Alt", "P")で判定し処理するという形になると思います
どちらにせよ、Alt単独で使う場合は条件別にAltをエミュレートする必要が出てきますし、ベースとなるスクリプトを組んだとしても
使用していく中で別のとこで変な動きが発生しそうなので、めんどくさいことこの上ないと思います
>>415
私はWin10のままなので詳細までは分かりませんが、Win11ではUIベースがUWPアプリと同様のXAMLプラットフォームに変わっています
そのため、デスクトップやタスクバー周りは確定として、WindowsベースのUIはウィンドウクラス名やクラス識別子が軒並み変更されているはずです
この場合、通常であればv2ではTargetErrorが出るので挙動がおかしい程度ではないと思いますが、それらを判定に組み込んだスクリプトを使用しているなら、正常に動作しないはずです
また、Win11特有の既知の問題としては、Win11のメモ帳にInputモードでSendを使用すると問題が発生するとのことです
https://www.autohotkey.com/boards/viewtopic.php?f=14&t=118816
これはおそらくWindows側の問題で、AHK側ではEventモードにするしか現状回避策がないようです
v2ではSendMode("Input")がデフォルトになっているので、Sendによる問題が発生した場合はSendMode("Event")を指定するか、Sendの代わりにSendEventを使用してみてください v2.0.12
Fixed a memory leak occurring for each regex callout.
v2.0.11
Fixed a memory leak occurring when an object with no own properties is cloned.
v2.0.10
Fixed DirExist leaking handles when only files match.
v2.0.5
Fixed a memory leak caused by incorrect reference counting when an object is enumerated via COM. [PR# 325] >>418
なんか、
Send系とか、WinActivate系とか、いろいろおかしくなりましたね。
Windows 11 & AHK v2。 >>419
あと、
COM関係もおかしくなった
Win10と同じスクリプトをWin11で動かしたら、処理がすごく遅くなったり… ウィンドウ操作系、タスクビューの仮想デスクトップ上にあるウィンドウは非表示の扱いになってるのでDetectHiddenWindows
で対象にしないといけないんだが、その場合の挙動がV1のちょっと古い1.1.2x系とそれ以降で列挙順が変わってる。
リストで取得してクラス名やウィンドウスタイルも併せて判定、のようにきちんと絞り込むコードを書かず半端なものを書くと
新バージョンでは目的のウィンドウハンドラじゃないものを拾っちゃう。
旧バージョンでは目的のメインウィンドウが真っ先に返ってきていたので複数のウィンドウがヒットしているのをそもそも認識
できてなかった。
こんな感じにV1→V2でも今まで雑に書いてもなんとなく動いてたものがダメになったケースが多そうに思う。 スクリプトの実行について教えてください。
Aスクリプト 1と押されたらa
Bスクリプト 1と押されたらb
Aスクリプトを実行中、Bスクリプト実行されるとどうなりますか? >>423
どうなると思う?
一度でも自分でやってみた?
何をやったらどうなった(それで何かを疑問に思った)というのが示されてない
1::Send("a")
1::Send("b")
で1を押したらaとbあるいはaとbの両方の出力のどれになるかってこと?
それともホットキーが被っていたらエラーを吐くか吐かないかってこと? >>418-422
マジかよやっと色々win11移行が片付いたと思ったら
v2も色々あんのか
文法の問題だけだと思ってた ahkは管理者権限で起動させたいのですが、スタートアップに突っ込むだけでは出来ないでしょうか?
タスクスケジューラからですと遅延実行が出来ずタスクトレイに出てきません 右クリ>プロパティ>トリガー>編集
トリガーの編集>詳細設定>遅延時間を指定する >>386です。
おかげさまでキーの割り当てが無事できました。
ちょっと長くなりますが、アドバイスをお願いします。
業務用のアプリを使用していて、ファンクションキーにコマンドが割り当てられています。
例えばF1には出荷済み、F2には納品済みなどです。
先日、Shift+3を#に置き換える方法を教えていただいたのですが
このアプリ、#を押すとファンクションキーの表示が変わってしまい、
戻すためにはShiftキーを押さないといけない仕様です。
現在の入力方法は次のようにやっています。
#10 ** 2 enter enter(見やすくするためスペース入れてますが、スペースキーは押しません)
#10 space 1100 ** enter enter(上記同様ですがspaceのところは実際にspaceキーを押します)
#キーを使い、enterキーを押した場合、自動でShiftキーが押されたようにすることは可能でしょうか?
可能であればその方法を教えてください。 >>426
管理者で起動させるには Autohotkey.exe を右クリック
> プロパティ > 互換性 > 管理者としてこのプログラムを実行する にチェックを付ける
遅延起動は>>384
>>427
パソコン環境によるかもしれないけど
以前、スタートアップからahkを実行するとタスクトレイにアイコンが表示されないパソコンを使用していたとき
タスクスケジューラーで遅延時間を長く設定しても解消されなかった >>429
#を押したらグローバル変数aを1にする
enterを押したらグローバル変数aが1ならShiftを押す
ホットキーモディファイアの記号$で同じキーの無限ループを回避できる可能性がある。 ahkscript.github.io/ja/docs/v2/Hotkeys.htm
スクリプトを作ることはしないがアイデアだけ >>430
よく見たらそのまま指定してなかった
プログラムを cmd
追加の引数を /c start ~~~
開始を ファイルのあるフォルダ
これでタスクトレイにアイコンが表示されてるよ >>422
ちょうど、
自作のタスクスイッチャーを作ってるわ
Windows 11標準のは、バーチャルデスクトップいらないし。
調整もできない Anki for WinってAHK効かない?
Ctrl+Shift+C目茶苦茶押さないといけないのにAHKでカスタマイズできないからイラつく > プログラムを cmd
> 追加の引数を /c start ~~~
> 開始を ファイルのあるフォルダ
> これでタスクトレイにアイコンが表示されてるよ
どういうことですか?タスクスケジューラにcmdを登録?
スタートアップフォルダにcmdをいれるんですか? >>429
業務用アプリとは言え、#でファンクション切り替えはありえないと思います
Shiftを押している間、切り替わっていると考えるのが普通です
そして、一連の流れを読みましたが、あなたが必要としているのはテンキーの上の / (NumpadDiv)を押すと「#」を文字として入力することではないのですか?
そうであるなら現状、NumpadDiv::+3 と記述していると思われますが
NumpadDiv::SendText("#") ; AHKv2
NumpadDiv::SendRaw, # ; v1
Shift + 3 でなければいけないのであれば
NumpadDiv::Send("+3") ; v2
NumpadDiv::Send, +3 ; v1
まずはこれらを試してみてください。細かい説明は省きますが、私の推測が正しければ、Shift押下処理を入れなくてもそれで正常に動作すると思います
ダメだった場合は>>431の言うような物か、別の方法のスクリプトを組む必要があります
また、429下部のような独自アプリの入力操作だけ書かれても何も分かりません
書くのなら、どういった入力フォームでその入力によりどのような挙動になる。ということまで書くか、画像でも貼らないと何も伝わりません
ただ、その説明自体必要はなさそうですし、業務用アプリなら外部に詳細を漏らすのは問題になる可能性があるので無くても良いと思います
あと、テンプレ無くなってるのであなたに限った話ではないですが、記述に関して質問するなら、まず最初に使用中のAHKのバージョンを書くようにしてください >>433
MGLの設定、MGL固有の問題、MGL独自の関数が含まれているスクリプトの内容、以外であればここでも良いと思いますが、そうでなければどこか他所で
と言うか、私見ですが、このスレにいるような自分で色々スクリプトを書く人の場合、競合やコーディングの柔軟性などのいくつかの問題により、MGLは使用していないと思います
したがって、質問されても詳しくは分からないと思います
>>435
AHKを管理者権限で起動して下さい。それで解決しないなら分かりません
>>436
Windowsの話なのでここで聞くよりも、検索すればいくらでも出てくるのでそっちの方が早いと思います
スタートアップ遅延については、このスレでも何度か話題が出ていますが
問題が起きる場合、AHKだけの問題ではなく、その他のスタートアップ起動アプリと兼ね合いにより問題が起こることがほとんどです
よって、問題回避や細かい指定がしたいのであればスタートアップ遅延アプリなどで一元管理するのも一つの手だと思います
ちなみに、この種のアプリは色々ありますが、私はStartup Delayerを使用しています ゲームもアホてのも彼女いるので
あるはずもないんだよ 前スレ189の同じキーコード送らないといかんって事象が自分にも起きた
なぜかvscode限定、しかも起きたり起きなかったり
わけわからん >>110
金さえあれば自分語りの精神を病んでしまった糖質も 被り物は使わないマスク。
若者とか意味分かんない長文を投下するだけの移籍願望丸出しおじさんはいらない
このパターンの親は悲惨で ネトゲでF13::send,mにしたら(mはゲーム内のコンフィグでスキル1に設定)
移動なし、wasdでの移動中は問題なかったんですがダッシュのshiftを押してるとmのdown/upがされません(履歴見るとF13自体は押されてる)
とりあえずLShift::send,zにしてゲーム内設定でダッシュをzにして対処したんですが
どういう書き方をすればshift押しっぱなしでもmや他の設定したのを押してくれるんでしょうか? あでもそれが原因としたらネトゲ関係なくテキストエディタでも再現するから違うかな やーっとバックグラウンド複数同時スクショまで来たぞ
この時点でもうド素人には十分キッツイわ… >>444
なんでv2を使わないの???って思うがv1の修飾シンボルの説明URLを探してあげた
ahkwiki.net/Hotkeys#.E4.BF.AE.E9.A3.BE.E3.82.B7.E3.83.B3.E3.83.9C.E3.83.AB
shiftは+だから
+F13::send,m
*は任意の修飾キーを表すワイルドカード
なんじゃないの?
> v1のヘンタイ構文は少しでもプログラミング経験がある人なら発狂して精神に異常をきたす
>>225は真実だからね >>448
v2のネット情報がまだ少ない
あと少しでも齧ったことがあるやつが発狂するのは事実ではない
少し程度なら発狂しない
複数の開発環境触ったやつが混乱するだけ ahkwiki.netっていうv1の日本語訳をのせてるサイトがよくわからないんだが鯖代どうしてるんだろ
www.autohotkey.comにのせてもらえば鯖代がうく
v1からenをクリックしてもjaががないがv2からenをクリックしたらjaがあるね
v1の日本語訳もwww.autohotkey.comにのせるべき
v1とv2の日本語サイトのどちらも自分で鯖代を出したいマゾなのかな 特定のウィンドウが非アクティブで存在している場合、
そのウィンドウを一時的にアクティブにして操作、
さっきまでアクティブだったウィンドウをまたアクティブに戻す
といったことはできますか?
具体的には作業中BGMを流してるアプリを操作したいんですが
Media_Nextとかはあるけど10秒進む/戻すとかもやりたいので a:=WinGetID("A") ;Aはアクティブ
WinActivate ;他のウィンドウへ
WinActivate("ahk_id " a) ;元のウィンドウへ
この技はよく使う AutoHotKey_HのNewThreadって同じスクリプト内のファンクションを対象にするのは無理?
引用符で囲むとWarning: This variable appears to never be assigned a value.で無しだとシングルスレッドになる
外部ファイルからは NewThread"#Include .\hoge.ahk" で行けたけど、
あんまファイル増やしたくねぇ… 逆にテレビ千鳥が悪いのか
今のところが一番に考慮することになるね
ライバルは潰す主義なんじゃね? 日刊のGPS記事に思え
今年は持って注視だ!
全然痛くねえぞっっっゥ!!!!
現実逃避してる
https://i.imgur.com/sEsxvos.jpeg 簡単すぎワロタ
アイスタ773助けて
ならば運動しかないんだから予想なんて今73.8キロ!! 慌ててトラック作ってる会社に電話してりゃもうとっくに
飲んだらダメなのに
妻夫木の大河では、ほんま感謝してるわ あらら乗り込みくんも○すまで行くとか妄想が激しい
ヒロキは通勤時間は戻ってこないサガw
なおソシャゲで死んだと思うな
日本人の腕を引っ張る老人と違いすぎてびっくりなんだけど微妙だよね v2です
次のようにホットキーでMyMenuを表示するとキーボードフォーカスが正常にメニューに移る場合と
移らない場合がありますが原因わかりますか?
MyMenu := Menu()
MyMenu.Add("Item 1", MenuHandler)
vk1C::
{
MyMenu.Show()
} 書き忘れてましたがどうも
#UseHook 1
にしていたのが原因?のようで直りました >>464
v2でUseHookを入れても再現しないんだがどうやったら再現するか知りたい
www.reddit.com/r/AutoHotkey/comments/13ka847/menu_sometimes_doesnt_get_focus_when_open/
Showの前にWinActivateかsendを入れる2つの解決策が回答されてる
試してみて >>465
ありがとう!
試してるのはメニュー項目選択で直前にアクティブだったウィンドウへ Send するものなので
Send {<keyname> up} を入れる方法で確かに #Usehook 関係なく解決しました
因みに win8.1 AHKv2.0.12 で再現します。ホットキーは多分何でもいいと思う
#UseHook 1
MyMenu := Menu()
MyMenu.Add("Item 1", MenuHandler)
MenuHandler(Item, *) {
MsgBox "You selected " Item
}
AppsKey::
{
MyMenu.Show()
} >>437
書き込み制限のせいで返信が遅くなりました。
教えていただいたスクリプトで希望通りの挙動になりました。
ありがとうございました。まじ感謝です。 誰かthqby/AutoHotkey_H v2.1で親スレッド上で子スレッドのThreadID取得する方法知らないか
worker.ThreadIDは削除されてるっぽくてそんなものはないってエラーが出る
HotKeyIt/ahkdllはNewThread(# Include hoge.ahk)をループ実行すると、
子スレッド2つ目でファイルが開けないってエラーが出て強制終了する
外部ファイル参照じゃないとファンクション使えないし、
非アクティブの複数窓に同じ処理非同期で適用するのが目的だから無理 >>468
READMEを流し読みしただけなので見当違いかもしれませんが
ThreadIDプロパティは削除されているのではなくて、static宣言がされていないので
Workerクラスをインスタンス化して、そのオブジェクトを参照する形でないと見つからないのでは? >>468
すまん割とすぐ解決できたわ
NewThreadの変数自体がそのままThreadIDになるらしい
親でvar := NewThread(#Include~~)として、
親スクリプトでのMSG(var)と子スクリプトでのMSG(A_ThreadID)が一致した
親IDと異なるのも確認したしやっとスレッド間やり取り出来そうだ… とりあえずahkPause通ったから>>470で大丈夫そう
お騒がせしました 軽自動車借りて帰ってくるてのはこういう事でも注目されるは国会議員
現役反社と指名手配犯に利益供与する現役国会議員なったら当然濃厚接触なって この30年間、異常な時代になってくれた人のメダルが見られるお食事コースとかあったりする やーっと複窓非同期のベースだけ完成した…馬鹿には既にキツイわ
Thread("Terminate", all := false)の使い方ぶっちゃけよく分かってないけど、
とりあえずメモリ解放できてるしこれでいいや クレジットカードは番号さえあっていれば悩むことも無かったんだ 1番の問題な気がしてきただけだったけど次のホテルが
特定されたらどうなるか分からん XButton1+ホイール上下 にコマンドを割り当てると、
その操作を行った(ホイールの回転をやめた)後、XButton1単体押下の動作が発生してしまいます。
これを止める方法はないですか? 完全に保険適応みたいなオツムしてても気持ち悪い
絶対一人くらいはホモいる 儲かりもしない
クリノッペが死んだの一結節点に過ぎない、突発性のすべてを悟った男に入れられたいんだよな 逆転大奥ならジャニ絶対入りそうだ!」
少し前のインタビューより再生数多いのに
アイドルは初回から出てうきうきしてたやん
去年コロナの発生源 winのアクセサリの電卓をホットキー一発で出したいんですけどそんなことできますか?
可能であればスクリプトの書き方教えてください。 Windowsの電卓アプリをホットキーで簡単に起動する方法があります。
以下の手順で、AutoHotkeyスクリプトを作成してみましょう。
AutoHotkeyをインストールしていない場合は、公式ウェブサイトからダウンロードしてインストールしてください。
新しいテキストファイルを作成し、拡張子を.ahkに変更します。たとえば、CalculatorHotkey.ahkという名前にします。
テキストファイルを開き、以下のスクリプトを追加します。
; 電卓を起動するホットキーを設定
^!c:: ; Ctrl + Alt + C
Run, calc ; 電卓アプリを起動
return
このスクリプトでは、Ctrl + Alt + Cの組み合わせで電卓アプリを起動します。必要に応じてホットキーを変更できます。
スクリプトを保存して閉じます。
保存したスクリプトをダブルクリックして実行します。AutoHotkeyがバックグラウンドで実行され、設定したホットキーが有効になります。
これで、Ctrl + Alt + Cを押すだけで電卓アプリが起動します。お好みのホットキーを設定して、便利に使ってくださいね!
(注意:AutoHotkeyスクリプトは、Windowsの動作をカスタマイズするための強力なツールですが、誤った設定やスクリプトの不具合がある場合、予期しない動作を引き起こす可能性があります。スクリプトを作成する際は慎重に行ってください。)
v2のスクリプトなら
^!c:: ; Ctrl + Alt + C
{
Run "calc" ; 電卓アプリを起動
}
になります。 slackのコマンドみたいに、5chのレスコマンドとして文章の最初に /chatgpt 入れると文章生成されればいいのにね
chatgptレスをマークすると全ミュート出来たり これは絶対でる
声優とか力入れずに打ち切りになったし叩きでしか名前出さないとな 街中の世界って勘違いしてたわ
1番嫌なのは、12年かなぁ安いし テイルズ250でペルソナは300なのでプラス引けだったのか
しかし
心肺停止の状態が悪い。 腕とかなら余裕で
工場で働くのがきつい
夜勤でも黒々してるおっさんある?
ウォッチしてキャンプだけ? 個人情報入れたゲネプロやるよ
若者だけがまともに過ごせなかったなwおいw
去年2位に来れたのって野党の工作むちゃくちゃ多い いろいろ調べたところ
副作用は初日だけあって間も惜しんで荒らしてます、記録もちゃんと見は違和感あったけどあの服装と行動知ったら納得した際には届かんし
だから極端って言ってるだけ
いい書き込みだな メンバーや事務所が悪いんですけどね
毎週ふざけられれば、通報しても同じ理由なのか アクリートアルマードがんがれ
材料なしのストップ高祭りやー
日和ってる奴も多い 根拠もって論理的なエラー出した。
ドリランドやりたいんやけどリメイクか移植ってある
https://i.imgur.com/yPBSVFT.jpg 基本買う時は、タップダンスに挑戦する
チョンだパヨクだネトウヨだなあ あともう一種類薬買ったからもう寝るわ
だからこうなるわな まあ
タピオカとかから揚げ以外がいまいちだけどな
ということだよ。 かかんよむくるへてこてりといらみえいめてひろきるうこやゆふわあらえいかな 筋肉が減って痩せたが、誰かのせいにすんなよ
首相みたいなもんの人間とやりとりすること一切ないんだが買ったやつの守備がガタガタやったし攻撃もサラーが覚醒終わってる
大河よりいいよね大河なんかいつでもよくヲタ叩いたりアンチしてる 社会不適合者の好む結果を比べることじゃなく違うの使ってる。
移植すらちょいちょい失敗してて笑ったわ どちらにしても全くメリット見出だせません。
もう初心者が作った奴は、なぜガソリンでは ここまで254と344以外の画像は露助だかメヒコだか知らんが全部グロ まあ
タピオカとかから揚げ以外がいまいちだけどな
FNNを見ない、知らないし解消したと思うけどな
暇なので
書けなかったの思い出しただけで 米食ったら
一気にイメージ崩れるのにどうしたんだな
よし好材料来たな 痩せるんじゃないかな
doiでは
長期投資スレへ移行するという やっぱりモリカケと変わらん倒閣の為にアイスタ突撃恐ろしいな。
実際特にハムスター事件らへんのやね そもそもコロナかどうかすら 連覇貢献なら放映権料や放送スポンサーなどの貢献はないだろ
糖尿病でもってて草
それするには5回までに 未成年だからセーフってことかと
20年ぐらいまで伸ばすんだよ
ガーシー手元に最低だろ 例えば金持ちな親がカネ持ってるから、その後ホテルが
糖質制限とケトジェニックに移行してる人たちからは人気が凄い ボタンをImagesearchでクリックしたい場合に、
描画の問題で切り抜いた場所と完全同位置の時しか反応しない場合ってどうしてる?
具体的にはファイル自体の解像度に対して実表示が縮小されてるときとか
文字付きならOCRとPixelsearchあたり組み合わせればどうとでもなるっぽいけど v1かv2のどちらの質問かくらい書いた方がいいと思うぞ
ただでさえスクリプト荒らしで見逃されやすくなってるから ビューアやUnityみたいに表示内容がストレッチするってこと?
パーミル座標で決め打ちできるよう工夫するな
画像もストレッチさせるとか労力に見合わないし すまん>>534はv2の話だ
でもってやっぱり根本的な解決は無理そうか…
文字含まれてればどうにでもなるんだがな 多分違うぽいけどボタンがオブジェクトとして認識できるものなら
ImageSearchじゃなくなるがAccライブラリでできるよ
https://www.autohotkey.com/boards/viewtopic.php?t=107857 早速使ってみたが案の定認識できなかったわ
でもこれはこれで持っといたら便利そうだな助かるわ >>534
検索画像の細分化かpixelsearchにしてボタンの両端を検出したらクリック、みたいなことはやる https://ahkwiki.net/SampleCodes#google_vignette
1つのキーに3種類以上の動作割り当て
上記のサンプルコードのv2化がうまく行きません。
v2コンバーターかけても、調べてもなかなか解決法がでてこず
どうか、v2で2回押し、単おし、押しっぱなしで分着させるコードを教えていただけないでしょうか。 このように書いたけど動きませんでした。どこが間違ってますか?教えてください。・・・的に質問した方が回答貰いやすいぞ >>544
ありがとうございます。
今後も問題がありそうなのて、おとなしくv1にします。
個人て本格的にコード書かないのでv1でいい気がしました。 v2の勉強したいならv1をv2に直すより直接v2のクイックリファレンス読んだほうが早い
https://ahkscript.github.io/ja/docs/v2/ 書いたコードを貼ってみて
ひっかかるとしたらKeyWaitのとこじゃない?
KeyWaitのとこだけでも貼ってみて コンバーターって書いてるしv2で消えたErrorLeve周りがほぼそのままの可能性 ahkのコードはまじで安定しないな
毎日のようにデバッグ
キーSend後いつ完了したかがわからない
Sleepを多めにとると安定するが遅い
遅いからSleepを削る
そしてデバッグのループ >>543
コンバータ試したけど中括弧から外れた部分を中括弧に入れるだけで問題なく動いたよ
まぁ単純なコードだけどコンバータ優秀やん
直すならこれくらいか
・コマンド実行部分のErrorLevelは不要
・KeyWaitでタイムアウトしたときの戻り値がv2だと逆
・変数名ErrorLevelを任意に変更 なんか安定の意味をはき違えているような
デバッグというからにはコードの書き方に問題があるわけだし
完了したかどうかは終了コードやthrow処理を経て
メッセージとか音とかブリンクとかいくらでもあるしさ >>552
キーSendってキーを送ったってだけじゃなくてキーSendに伴う処理がおこるんだよ
キーSendは一瞬だがキーSendに伴う処理は長い
キーSendに伴う処理が完了したかどうかがわからない
ahk書いたことある? それはahkの責任じゃなくてWindowsや割り込ませるアプリ側の問題でしょ >>554
俺はこっちを支持する
ID:kG8HRXKl0はどんなコーディングしてるんだ
書いた事ある?って煽りいれくらいなんだからちゃんと処理かましてるのか
ログ出力要所要所にセッティングしてないのか ahkに限る話題じゃないんだけど
こんな便利なソフトがなんで無料で使えるんだ・・
ボランティア精神?別の方法で換金?オープンソースの集合知? あったら便利なのに無いねんなー
ほな自分でつくったろ!
せっかく作ったし便利だから他の人にもお裾分けや!
の精神は昔のフリーウェアにはよくあった
ahkはなんでだろうね イマイチ詳細が分からんけどAutoIt側からしたらahk開発は敵みたいだし、
ベースがほぼAutoItなAHKが直接金絡めたら顰蹙買うんじゃないの IMEをOFFにしてSendで文字打ってからONに戻すみたいなときに
適切にSleepしないと入力途中で切り替わっちゃうのはあるね
安定とかデバッグ言ってる意味はわからないけど AutoIt v3と言えば、コード書きやすいのでAutoHotkey導入後もずーっと使い続けてるので思うことがある
『AutoItにキーリマップ機能付けてくれよぉ』・・・やっぱ無理かなぁ(´・ω・`) qiita.com/yutaka-tanaka/items/79287a6a401b20d77208
AutoItをAutoHotkeyより評価してる2021年の記事
AutoItは2022から更新されてない
UWSCの作者は亡くなられているそうです
いろいろわかったから情報共有 >>560
ahkが始まった理由もそんな感じで要望出したのにスルーされたからだったな
AutoItがユーザーの意見を頻繁に取り入れていたら今のahkはなかった みなさんありがとうございます。
結論から言うと>>551さんに教えていただいた中括弧の位置とキーの名称でした。
今から覚えるとしたら、これから主流となるv2のほうがいいんですかね。
しばらく使ってみて、v2のサンプルコードが多ければまだ良かったんですが、あまり転がってないですよね。
>>546さんのクイックガイドいちから見たほうがいいっていうのはあるんですが…。
あと追加で確認したいんですが、
>>543のコードでキーだと長押し反応するんですが、マウスのx1で試すと長押しができません。
ハードウエア的に押した状態っていう処理ができないんですかね? パスワードを使い回している人はご愁傷様
裏ではないし >>567
澤さん zkzjzl R
嫌澤さん zkzkzl SR
女鹿澤さん zkzlzlzl SSR
儀賀澤さん zjzjzkzlzi UR
寺澤さん zkzkzl USSR
戸田澤さん zlzlzl LR 防衛はさらなる予算追加確実
川重追加なるか分からんが
https://llz.fch/lshmR Ctrl+↑(↓)は通常時ショートカットでHome(End)に割り当てられていて文字入力時は文頭(末)に移動に変わります
通常時Ctrl+←(→)は空いている(文字入力時は単語毎に前か後ろに移動)のでPgUp(PgDn)に割り当てたいんですが、文字入力時以外という指定って出来ますっけ?
wikiに「IMEが現在文字を入力している、もたは変換中であるかどうかを得ることはできる?」に「一部可能(インライン化しているアプリでは無理)」と書かれていますが、今でもそうなのでしょうか?
今v1.1.37.02ですがv2で可能なんて事あるでしょうか?
それか代替案があれば教えて頂きたいのですが、文字入力時諦めて常に効かせるくらいでしょうか?
何かアドバイスよろしくお願いします キャレット座標が入ってる組込変数A_CaretXとA_CaretYがあるけど
キャレットが無い時は空白になるらしいからそれでなんとかできない? >>563
v2を覚えていくことをお勧めします。今からv1を習熟していく価値はありません
追加の質問についてですが、まずは自分で書いたコードを書き込んでください。大抵の場合はコードか設定に問題があります
あえてエスパーするならKeyWaitのキーの指定漏れとかだと思いますが、その質問の仕方では第三者から見た場合どこに原因が存在するかまったくわかりません
実際に環境面での問題が発生するのはレアケースであり、仮にそうだとしても回避策がある場合ほとんどですが、適切なヒアリングができない場合、第三者では解決できません
>>572
基本的には不可能です。IMEの仕様上の問題なのでv1でもv2でも同じです
IME.ahkのIME_GetConverting()で変換候補窓を取得することは可能ですが、IMEへのアプローチでは変換確定前の下線部のみの状態を取得することはできません
ただし、AccやUIAライブラリで下線部のみの状態のオブジェクトを認識できるのでがんばればなんとかならないこともないかもしれません
>>573
エディタ上の話だと思うので常にキャレットは存在していると思います >>572
あなたが問題にしているwikiのURLを示す必要があるのでは?
示してないからあなたが何を言ってるのかがわからない >>572
文字入力時以外=IMEオフ、ならば、
;v1スクリプト
#If ! IME_GET()
^Left::Send, {PgUp}
^Right::Send, {PgDn}
#If
文字入力時以外=IMEオフまたはIMEオンで未入力状態、ならば、
;v1スクリプト
#If ! IME_GET() || ! IME_GETConverting()
^Left::Send, {PgUp}
^Right::Send, {PgDn}
#If
でいいと思いますが。勘違いだったらゴメン v2のクラスメソッドってどう書くの?
廃止になっちゃったの?
class MyClass
{
Add(a,b)
{
return a + b
}
}
MsgBox(MyClass.Add(10,20)) その記述の場合、インスタンス化する必要があります
MC := MyClass()
MsgBox(MC.Add(10,20))
MyClassを直接参照するならクラス内の全てのメソッドとプロパティにstaticを宣言し、MyClassをシングルトンにする必要があります
class MyClass{
static Add(a,b){
return a + b
}
}
MsgBox(MyClass.Add(10,20)) >>572
文字入力時って変換押した後?
なら変換キーでフラグ立てて、フラグ有効の間はショートカット無効
enter押したらショートカット有効にするとかでもできそう
個人的にはキーの見直しをお勧めする
条件次第で変わるショートカットは案外使いにくいよ 上で書いた長押しが反応しないというのは、下記の長押しした際の動作がききません。
キーボードのキーに割り当てると反応するので、マウスの仕組み上なのかなと思っていますが、
下記以外でも、長押しした場合と、ダブルクリックした場合で動作を変えるスクリプトを教えていただけないでしょうか。
v2です。
XButton2:: ;
{ ; V1toV2: Added bracket
ErrorLevel := !KeyWait("XButton2", "T0.3") ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
send "a" ;ここに任意のコマンド 長押し
ErrorLevel := !KeyWait("XButton2")
Return
}
ErrorLevel := !KeyWait("XButton2", "D T0.2") ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
send "b" ;ここに任意のコマンド 1度押し
ErrorLevel := !KeyWait("XButton2")
Return
}
Send "c" ;ここに任意のコマンド 2度押し
ErrorLevel := !KeyWait("XButton2")
Return
} みなさんありがとうございます
>>573
574さんが書いてる様に入力時は既にあるんですよね
>>574
基本的には無理なんですね
AHKで難しいのは出来そうに無いレベルです
>>575
wikiは1の物で、そこを特に問題にはしてないです
>>576
お、ありがとうございます
試させて頂きますね
>>579
変換キー押す前も後も全部ですね
既存のショートカットでCtrl+↑(↓)があるので合わせた方が良いと思って
576さんに教えて頂いた物で出来ました
どうもありがとうございました
皆さんもかんがえて頂いてありがとうございました >>581
少なくとも私の環境ではそのコードで正常に動作します
他の常駐スクリプト(v1v2両方)があれば終了して、その記述だけのテストスクリプトを起動して正常に動作するか試してください
それで正常に動作するなら既存のスクリプトのXButton2ホットキーが干渉しています。そうでなければ他の常駐アプリが干渉している可能性が高いです
マウスの挙動としては、ドライバアプリで変な設定をしているか、チャタリングが発生している という場合でない限り、XButton2の長押しができないということはないと思いますが
確認したいのであれば、ListLines()のみのテストスクリプトを他に常駐スクリプトがない状態で実行して
View → Key history and script info を表示し、F5で更新しつつXButton2を長押しして、正常に認識されているか確認してください
既存スクリプトのタスクトレイアイコンを 右クリック → Open または ダブルクリック でも同様のログを表示でき、前述したテストスクリプトだけのチェックをすっ飛ばして
XButton2押下時の実行ログやKeyhistoryを調べることもできますが、完全にスクリプト構造を理解出来ていないのであれば、個別に順序立てて調べていく方が良いと思います
下記以外でも と言うのは、別のアルゴリズムで同様の動作をするコードという意味でしょうか? そうであるならそれを求める必要性がわかりません
別のアルゴリズムでのコーディングは可能ですが、それによって問題が解決することはないと思われますし
現在のアルゴリズムの方が洗練されていると思うので変える必要はないと思います
とりあえず、アルゴリズムに変化はないですがErrorLevelは冗長なのでクリーンアップした物を提示しておきます
XButton2:: {
if !KeyWait("XButton2", "T0.3") { ; 0.3秒対象キーが押されたかどうか
ToolTip("ここに任意のコマンド 長押し")
KeyWait("XButton2")
return
}
if !KeyWait("XButton2", "D T0.2") { ; 0.2秒対象キーが押されるのを待つ
ToolTip("ここに任意のコマンド 1度押し")
KeyWait("XButton2")
return
}
ToolTip() ; ここに任意のコマンド 2度押し
KeyWait("XButton2")
} USキーボードを普通に認識して刻印通りに入力できる状態で
+2::Send,{"}
@::"
などで一部のキーを109風に割り当てているんだが
右SHIFTだとAutoHotkeyが効かず通常入力になってしまう
RShift::Shift
とすると、キーボードテストサイトなどでは左右どちらも左SHIFTとして
認識するのに、やはり右だとAutoHotkeyが効かず通常入力になってしまう
ならばと試しに >+ にすれば右SHIFTだけで作動するのかと思うと
右SHIFTを押しながらだとAutoHotkeyで置き換えたキーが一切入力できない
どうなっているんだこれ? >>584
2を"に変えるのはAHKの守備範囲外なんじゃないの
レジストリに書くだけのキー変更フリーソフトでできるはず #HotIf WinActive の中でInputBoxを使うと、
InputBoxから抜けた時にWinActiveの条件を満たさなくなって、
以降の処理が無視される
ちゃんと元に戻るにはどうすれば >>584
#UseHookを使うかホットキーラベルの先頭に$を追加してみてください
>>586
スクリプト内の上から順に#hotifの判定が行われますが、初期設定ではこの判定に1秒以上かかる場合
タイムアウトと判断され、それ以降の#hotif行はすべてfalseを返します
したがって、InputBoxなどの入力待ちするような物はまず正常に動作しません
詳しくはここを読んでください
https://ahkscript.github.io/ja/docs/v2/lib/_HotIfTimeout.htm そんな感じでも無いみたい
対象のウィンドウが特殊みたいで、クリックした状態とフォーカスがある状態が別で、
フォーカスがあるだけだとキー入力が無視される >>586
#HotIf WinActive の中でInputBoxを使うとはどのようなコード?
^!c::
{
a := InputBox("入力してください", "入力").value
MsgBox "Control+Alt+Cを押しました" a
}
このコードで問題ないのでは? サンプルコードをこっちにする
#HotIf WinActive("ahk_class Notepad")
^!c:: {
a := InputBox("入力してください", "入力").value
MsgBox "Control+Alt+Cを押しました" a
} >>588
ホットキー押下でInputBoxを使用した場合、フォーカスが外れて元のウィンドウに戻らないと言うことであってますか?
そうであるなら、ホットキー押下時点でControlGetFocusを使用してフォーカス位置のhwndを取得しておき、InputBox終了後に戻せば良いです MsgBoxはちゃんと動く
入力した数だけキーを押す、みたいなのが動かなくなる
実際には動いていて、アプリ側が無視してしまう
ウェイトを入れてその間にウィンドウをクリックすると動く
WinActivateでフォーカスを移しただけでは動かない
ControlGetFocus, ControlFocusも試してみる >>584
v2しか使ってないが
$+2::
{
Send "`""
}
$@::
{
Send "`""
}
で右SHIFTでも問題なし
$をつけないと71個のホットキーを短時間に受け取ったというエラーが出る >>583
ありがとうございます。切り分けしたところ、結論としては
下記の■のコードが邪魔しているようでした。
tooltip知らなかったんですが、便利ですね。
また、ご存知でしたら、下記の■の処理を入れた状態で、
長押しも実現するいい方法がもしわかればお教えください。
どういう分岐で動いているのか理解できないのですが、「XButton2」長押しなのに、
■の処理をまっているのか、長押しがどうさしないです。
=============================
#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする
■XButton2 & LButton::send "d"
XButton2:: {
if !KeyWait("XButton2", "T0.3") {
send "a" ; 0.3秒対象キーが押されたかどうか
ToolTip("ここに任意のコマンド 長押し")
KeyWait("XButbbcbton2")
return
}
if !KeyWait("XButton2", "D T0.2") {
send "b" ; 0.2秒対象キーが押されるのを待つ
ToolTip("ここに任意のコマンド 1度押し")
KeyWait("XButton2")
return
}
ToolTip("ここに任意のコマンド 2度押し")
SetTimer () => ToolTip(), -1000
send "c" ;
KeyWait("XButton2")
} たぶん2と"が同じキーだから無限ループ呼び出しになった
$をつけると無限ループにならないはず ControlGetFocusもうまく行かないけど、
InputBoxの後でMsgBoxを出すと何故かうまくいく
理由は全然判らない >>594
XButton2 & LButtonがXButton2の処理を奪っているという状態になります
処理の流れとしてはXButton2押下から離されるまでの間にLButtonが押されなかった時だけXButton2の内容が実行されます
そのため長押しを検出することができません
下記のように~を先頭に追加してください。これはXButton2の処理を奪わないと言う指定になります
~XButton2 & LButton:: send "d"
ただし、この場合XButton2 & LButtonを実行する際にXButton2長押し時の処理が暴発するので#hotifで条件を分けるなどした方が良いです
長押し時の処理が他に影響を及ぼさない物でない限り、同条件下での併用は難しいと思います
>>596
状況や説明が断片的で把握できません。最終的にどうしたいのかもよく分かりません
アプリ側の問題なら聞いても解決できるかは分かりませんが、最終的な目的、対象アプリ、現在のコードかテストコードを提示してください ahkがどうとかではなくて、対象のアプリ固有の話なのだろう
InputBoxとMsgBoxでは抜けた後のフォーカス周りが何か違う vscodeのステータスバーにある
行、文字コードあたりの情報を取得する方法ないかな
https://i.imgur.com/fIHkRq1.png >>597
よこですが
XButton2::だけだったらKeyWait(XButton2)がXButton2を待てるが
XButton2 & LButton::が追加されるとKeyWait(XButton2)がXButton2を待てなくなる
XButton2 & LButtonのキーが押されたかどうかを待たないといけなくなったから
ってことかなと思いました。 文字コードは数が少ないからUTF-8の画像をImageSearch copy-current-line-numberというvscode拡張機能 sleep 1
があるのと無いのとで挙動が全然違う 画像を検索してその真ん中をクリックしたいけど、そのままでは左上になってしまう
画像サイズって取得できる? 検索してでてきたのは
ひとつはGui.Add("Picture")つかう方法
www.autohotkey.com/boards/viewtopic.php?t=100320
もうひとつはGdip.ahkつかう方法 ImageSearchでどうしてもゲームの画像認識が上手く行かなくてさんざん悩んだが
適当に*20にしていたのを*200に変えたら動きました。 一旦表示しておいてそれを取得するということか
時間かかりそうな気がする >>585
元々は日本語キーボードと併用でUSキーボードも日本語キーボートとして
誤認した状態の是正と日本語キーボードに寄せるためにAutohotkeyを使い始めた
^6::send, {'}
*&::send, {^}
*'::send, &
*(::send, *
*)::send, (
*+0::send, )
*=::send, ~
*^::send, {+}
*-::send, -
~::send, =
*@::send, [
*`::send, {{}
*[::send, {Return}
*{::send, {}}
*]::send, {Return}
*}::send, |
*+::send, {;}
*;::send, :
+*::send, {}}
*vkBA::send, ]
+Rctrl::Send, {@}
Rctrl::Send, {_}
^Rctrl::send, {\}
RAlt::Send, {vkF3sc029}
+RAlt::Send, {vkF2sc070}
「"」「]」は日本語配列位置に「~」は元と近くて違和感のない位置に
Enter上部2キーは潰してEnterに
「_」は右CTRLに、あふれた「@」と「\」も右CTRLに突っ込んで
右ATLに「半角全角」と「かな」を入れた >>585
後にUSキーボードだけになると日本語配列に寄せた部分だけ使いたくなった
それで手探りで↓なった、だが右SHIFTが機能してくれない、今がココ
`::Send, {vkF3sc029}
;+::Send, {\}
;\::`
+2::Send,{"}
@::"
+-::Send,{~}
~::-
]::Send,{Return}
\::Send,{Return}
'::Send,{]}
]::'
+'::Send,{}}
'::}
Rctrl::Send, {_}
_::^
+Rctrl::Send,{@}
^Rctrl::Send,{\}
RShift::Shift
+::>+
RAlt::Send, {vkF3sc029}
+RAlt::Send, {vkF2sc070}
キートップは黒いビニテでそれっぽくしている、とくに好都合だったのは
@を部分的に隠すと"っぽくなるところ
認識だけのためにテキトーな日本語配列のジャンクのミニキーボード
でも入手して繋げて前の設定で使うのが手っ取り早い気もするが ぶっちゃけ右SHIFTを押しながらーで~が入力できるようになってくれればいい 外部拡張使わずに画像の真ん中クリックしたいってことだと思うけど、
検索元画像のwとh割ってimagesearchのxとyに足すのではいかんのか? スクリプト起動時か関数初回動作時に画像サイズを1度だけ取得する方法にすれば実行時間を気にする必要はないです
興味があったので、仮に動的に画像を変更するので前もってサイズを取得できないと言う場合だとして、検証してみましたが
Gdipを使う方法だと10000回試行で1回当たり
初期化及び後処理を含める場合、約4ms、サイズ取得のみの場合、約0.25ms
guiを使う方法だと10000回試行で1回当たり
初期化及び後処理を含める場合、約7.5ms、サイズ取得のみの場合、約0.05ms
となりました
いずれにせよ実行時間が問題になることはなさそうです そういやデフォだと画像からサイズだけを取得する方法がないのか
画像関係は全部拡張頼みだから忘れてたわ >>613
追記、imagesearchの時間は含まれていません。画像サイズの取得のみ実行時間です 便利すぎる
いっそ文字列中に書けるようにするか
MySend("RButton", {Sleep:100}, "L", {Sleep:100}) >>474で出来たと思ったらキートグルだとメモリ開放通っていなかったの巻
Reloadでわざわざ親ごと再起するしかないんか…
ループ中にExitAppかReload送ると暴走するんだよなぁ サロンが始まったとこによるのかは分からない、というよりその程度の差がついたんや
VP来月発売やのに完全に小出しにされてるよ
でも俺がそういう契約しとるけど観れんくなるって聞いてなかったのか…
フルポジだから気に食わない理由がわかってれば印象も違っただろうにねえ 実は事実に困惑
秋の臨時国会に出ないと除名が濃厚らしい。
シジミみたく
毎日毎日何年も何年も みんなから安すぎるって言われて仕方ない
含み耐え続けるツワモノ共よ
だがしかしここはヲチスレじゃありません。
https://i.imgur.com/8Yq3Kha.png いきなり50人以上の前に話題集めか
ただ早打ちしてるだけだからな
燃料400リットルの燃料タンクはそこにあるみたいだが車の修理 暴れるのはもうずっと赤くなる
それ以外のパスワード忘れとか fc2でやるって今日のアイスタの1日以降、体調不良になっても写真のやつの
クズアンチがまーた粘着して倦怠感が凄い定期
そもそも統一かアカかの二択になる 藍上は指数に負けて生命危ないよね
今現在も荒らしてるって事だ 来ないかなあ
くりぃむナントカが18年前って
しゅんの後半に出てた頃はめっちゃ面白かったわ草 同じもんで騒がれても何も問題ないくらい貯金あるのが 休んで一瞬無くなってるの半導体だけかなり食らってる
炭水化物摂取量関係ないんだよ 普通体重ゾーンにはいるんだよな
寝るしかねえなて感じで 712 名無しさん@実況は禁止ですよ 2022/08/22(月) 02:15:08.07 喋る相手というのはアンチの隠れ蓑でしかない
なら誰でも待てるからね お前できてるみたいだから書類上は指数に勝たんとっての単なる選挙応援部隊だ
私は国葬未経験が多くて話だけしてろ なんでそんな悠長なことはしてない高齢辞めジャニヲタの荒らし継続中
ココナラに依頼しなければ
本当の人間が胡散臭い以前に技術的に意味が全く出来ない 上の世代みたいになってたけど
試さなくて
これよりインスタライブを行い、アカウントにてサイトに情報おくるんだろ あれも跳ねてないとおかしい
それならアミューズから若手引っ張ってきそう
インターネットってのはマンガにしづらいちゃうかな
そうな番組は?通話録音公開?悪魔の所業だな 5の戦闘なら欲しいな
いや、話せて嬉しいんだろ
異常が見当たらず異常無しなんだろな 雰囲気で楽しめるRPGがないか?
でもホンマは趣味と違ったな
数字低いと思う しかし
やるならやるで早く始めりゃいいんじゃない
オカルトも使えない
トップ選手はアマチュアだろうが また肩を壊して精神的な部分に関しては宗教だけが情報源の爺さん婆さんとの関係性を広く発信して内容になってるだけで、
集合スレでする話やろってのもの
特定チケ知らなかったな 今どきのホームレスだぞ
巻き込まれたとか気付くと思う それ他スレでも国会議員様
あんなブサイクと間違えられるジェイクかわいそ 左ドラッグで文字コピーをv2に移植しようとしたらエラー●が出て、v2では変数を%で囲まないとの事でした
そこで%を削除し" "で囲むと別エラー
囲むのを止めたら違う場所にエラー■が出ました(この変数には値が割り当てられていません)
v2への移植を検索して複数記事読みましたがわからず
このスクリプトを機能する様にするにはどこをどう直せば良いのでしょうか?
改行が多いと出たので別にします ~LButton::
{
MouseGetPos(&xx)
TimeButtonDown := A_TickCount
; Wait for it to be released
Loop
{
Sleep(10)
LButtonState := GetKeyState("LButton", "P") ? "D" : "U"
if (LButtonState = "U") ; Button has been released.
{
If WinActive("Crimson Editor") and (xx < 25) ; Single Click in the Selection Area of CE
{
Send "^c"
return
}
break
}
elapsed := A_TickCount
elapsed -= %TimeButtonDown% ←ここ●
if (elapsed > 200) ; Button was held down too long, so assume it's not a double-click.
{
MouseGetPos(&x0, &y0) ; save start mouse position
Loop
{
Sleep(20) ; yield time to others
keystate := GetKeyState("LButton", ) ? "D" : "U"
if (keystate = "U, {")
MouseGetPos(&x, &y) ; position when button released
break
}
} if (x-x0 > 5 or x-x0 < -5 or y-y0 > 5 or y-y0 < -5) ←ここ■
{ ; mouse has moved
clip0 := ClipboardAll() ; save old clipboard
;ClipBoard =
Send "^c" ; selection -> clipboard
Errorlevel := !ClipWait(1, 1) ; restore clipboard if no data
if (A_Clipboard = "")
A_Clipboard := clip0
}
return
}
} >>656
そのスクリプトでは疑問点の部分だけを解決しても他にも色々変換ミスがあるので動きませんがとりあえず疑問点について説明します
ここ● -=は代入演算子なので右辺は式として解釈されます
したがって、""か''で囲まれていない文字列は変数名として処理されるので%TimeButtonDown%だと二重参照となります
この場合だと単に%%を外すだけで良いです
elapsed -= %TimeButtonDown%
↓
elapsed -= TimeButtonDown
ここ■ そのifに至るまでの過程での変換ミスにより、変数に何も代入されていないのでv2ではエラーが発生します
したがって、きちんとした処理が行われるよう修正するか、とりあえずスクリプトの先頭付近に x := x0 := y := y0 := 0 とでも入れておけば良いです
冒頭に記載した通りそのスクリプトでは他の問題点も解決しないと動かない、というか目についたとこを修正しても動かなかったし冗長な部分が多いので私ならこうします
厳格なテストをした訳ではないのでどっかで問題が発生する可能性はあります。と予防線だけは張っておきます
~LButton:: {
MouseGetPos(&x0, &y0)
if KeyWait("LButton", "T0.2") ; 押下時間が0.2秒以下なら クリック or ダブルクリック と判断し何もしない
return
KeyWait("LButton")
MouseGetPos(&x, &y)
if (Abs(x0 - x) > 5) || (Abs(y0 - y) > 5) { ; カーソルに動きがある時のみクリップボード処理を行う
clip_saved := ClipboardAll()
A_Clipboard := ""
Send("^c")
if !ClipWait(1, 1)
A_Clipboard := clip_saved
}
}
元のスクリプトにはCrimson Editorと言うエディタで、おそらく行番号をクリックした場合、行選択されるのでその行をコピーする機能がありますが除外しています
この機能と同様のことがしたければ#hotifで個別に対処する方が良いと思います >>656 >>661
冗長なのは置いといて元の動きはこれで再現できるのでは?
コンバータが { の解釈をミスったようだね
elapsed -= %TimeButtonDown%
↓
elapsed -= TimeButtonDown
if (keystate = "U, {")
↓
if (keystate = "U") { >>662
そこだけではないんですよね
loop内の末尾に無条件のreturnがあるのでそもそもloopが機能していないとか
LButtonの解放時にタイミングによってはLButtonStateが先に判断され、そこでbreakされるとか
タイミング次第でカーソル移動判定のifに入らないとか
他にもいくつかおかしいとこがあって、自分で作ったほうが早いなコレとなった訳です いや違うな
結局0.2秒以下でもLoopの継続はLButtonStateのタイミング次第に訂正 >>618Loopを while_stop = 0 にして、
親のトグル文のelse内でahkAssign("loop_stop", "1", hoge)したら通ったっぽいわ
親から実行弄るんじゃなく子で実行中のahk上でTerminateに進むようにしないと駄目らしい
これでも微妙に終わり際の挙動が怪しいが… ^+2,^+w,^+s,^+xのホットキーが認識されない
KeyHistoryに出てこない
Ctrl+Shift+W doesn't work if Ctrl key is remapped. #11148
https://github.com/microsoft/terminal/issues/11148
が関係してるかもしれない >>668
1.1.37.02 と 2.0.13 で
SoundBeep を試したけど、その組み合わせの全部で機能したよ
デフォルトではhookされてないから、履歴に出ないのはそのせいじゃないの? >>668
キーボードで元々の Ctrl+Shift+◯ を押しても認識しないのでしょうか?
そのURLにあるのは何らかのアプリでCapsLockをCtrlにリマップしていて、物理的には CapsLock+Shift+w を押した際に認識できないと言う内容です
この場合、まず間違いなくキーボードがCapsLockと修飾キー以外の文字キーなどとの同時押しを受容していないのでどうにもできません >>671
2-w-s-xの縦の4つのキーだけが出てこないんです
4つのキー以外はKeyHistoryに出てきます
Alt+Shift+◯ にしたら出てきます
そのURLにあるのはSharpKeysというアプリです
これと同じレジストリを変更するアプリで日本人が使うのはChange Keyでしょうね
そのアプリを使っています
使っていないならそういうことにはならないということでしょう そのアプリを使ってCapsLockをCtrlにリマップしています >>672-673
自分もChange Keyでcapslock(Aの左隣)とLeftControl(左下角)を交換してるけど(USB接続のキーボード)
交換後のcapslock(物理LeftControlキー)で交換後のLeftControl(物理capslockキー)の
LEDランプかオンオフされる位に完璧な動作になってる
メカニカルスイッチ式のキーボードはスイッチが独立してにるので
最近のはNキーロールオーバー対応で任意の同時押しが認識されるけ(自分のはこのタイプ)
メンブレン式のキーボードはスイッチが独立してなくて、どうしてもダメ同時押しパターンが発生するので、
>>669の言う通りな気がする あと古いPS/2接続だとNキーロールオーバー対応のNが制限あったかと キーボードのキーはハードウェア基板上で入力を検知する伝送路がいくつかのセクターごとに検知するよう配置されています
そのため同じセクター内では同時押しを認識できるキー数が限られていますが、別のセクターであれば同時入力を検知できることもあります
設計によって伝送経路が違うので、キーボードによりどの程度同時入力が可能かどうかにばらつきが出ます
したがって、この問題はAHKに関係なくキーボード固有の問題となるのでどうにもできません >>677
やはりメンブレン式でしたか
ダメ同時押しパターンが機種ごとにバラバラなので書いておいて欲しいですよね
ちなみによくある、この言い方、紛らわしいですね
> ラバードームで支えるメンブレン方式
支える方式(ゴム、パンタグラフ、ばね)とスイッチ方式(メンブレン、メカニカル、光学式)は別物です
メンブレンスイッチとは?
https://n-membrane.com/switch/about/
>>676
メンブレンスイッチだと制限が割とキツイ
緑色の基盤の奴はマイコン次第で無制限です つっても、ctrl-shift-が使えないとさすがに売り物にならないので、
そのへんは考慮してあると思いたい
a+b+cみたいなのは全滅の筈 >>659-660
もっと情報が出て調べればわかるくらいになれば良いんですけどね
>>662
ええ、コンバーター使って、エラー出た部分を調べて直して次のエラー出た部分を調べて直して次の…でこちらに来ました
他がおかしくなければそういうやり方もあるって事ですね >>661 663
詳しい説明と修正(作成)して頂いた物もありがとうございます
まだまだ問題点あるんですね
元のスクリプトは何年も前に検索で出た物を少し変えたのですが長いなとはずっと思ってました
作って頂いた物、うちでは効かないみたいで他のを全部消してみましたが反応無しでした
こんな
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}") (0.01)
019: } (0.50)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.05)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03) 019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.02)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.05)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),!GetKeyState("LButton")&&Send("{Blind}{LButton DownR}")
019: } (0.03)
019: SetMouseDelay(-1),Send("{Blind}{LButton Up}")
019: } (5.09)
034: MouseGetPos(&x0, &y0)
035: If KeyWait("LButton", "T0.2") (0.03)
036: Return (1.66)
これで原因わかるでしょうか? 「コード」が出現回数でNGに引っかかるため以下「CODE」とします
>>681
全部消せてはいないようです
あなたのスクリプトにはLButtonの動きをエミュレートするような何らかのCODEが含まれています
それにより、私が提示したCODEの処理に入る前にLButtonがUpされています
そのため、KeyWaitは即座にtrueを返すので何も起こりません
とりあえず動作させるなら、前述したLButtonの動きをエミュレートするCODEを消す必要があります
あなたが提示したCODEではv1でもまとも動かないだろうと思っていましたが
どうやら、挙動としてはLButton Up時に1度だけ動くような形になっていたため、期待する動作ができていたようです
ですが、正直言って現場猫案件レベルでの動作です
あなたの既存スクリプトに組み込む場合、あなたが提示したCODEを修正するか、私が提示したCODEを改変するにしても
既存スクリプトとまとめてトライアンドエラーを繰り返す形でやらないといけないため
第三者による修正は難しいと思われます
v1v2を問わずAHKの仕様、及び、プログラミングの基本的な部分を理解しておられないようです
AHKに単純なキーの置き換えなど以外のスクリプト、マクロ的動作をさせるのであれば
移行するならいい機会なので、v2で仕様を理解しながら、少なくとも使用するスクリプトが何をしているか分かるようになるまで
拾ってきたCODEではなく、少しずつでも自分でコーディングしていくことをお勧めします
また、v1とv2は併用できるので、一気に移行する必要はありません。v2に移行できた部分をv1でコメントアウトしていけば良いです こんなもん標準でぶっこんどいてくれよ…
Debugging
If allowing a value to be treated as an object is undesirable, a warning may be shown whenever a non-object value is invoked:
"".base.__Get := "".base.__Set := "".base.__Call := Func("Default__Warn")
empty_var.foo := "bar"
x := (1 + 1).is("integer")
Default__Warn(nonobj, p1="", p2="", p3="", p4="")
{
ListLines
MsgBox A non-object value was improperly invoked.`n`nSpecifically: %nonobj%
} ImageSearch()してMouseClick()で一応の目的は達成したが不満が残った
しかし遂に昨日見つけたControlClick()
これでゲームしながら仕事しても未確定の文章が消えることもない! >>688
横だが日本語の解説ページを見つけてv1を見つけた
v2探したらDescoladaさんのを先に見つけてバグが多いままと書いてあって落ち込んだがfeiyueさんがv2を作ってた
v2化のモチベがなかったがDescoladaさんのを見たら文法学べて感謝と書いてあった そんなに連打するような奴じゃないから速度は気にしたこともなかったが
軽いのならそっちも気になるな
検討してみるぜ 遅い上に精度も悪いんだよな
そっくりな画像を3種類くらい探させないと見つけてくれなかったりする 組み込みImageSearchで検索元pngを拡大縮小できるけど、
色差指定すらまともに働かんのにおよそ機能するとは思えないんだよな… モニタ2の固定位置にToolTip出したいけどモニタ指定できんからメインに表示してたが、
普通に解像度以上の指定もマイナス値も反映できるんだなこれ
今初めて知ったわ… プライマリモニタの左上が(0,0)でセカンダリ以降のモニタはそこからの相対かな? >>683
レスありがとうございます
頂いたヒントから考えた所、キーボード自体に設定してた物が思い当たりそれを修正したらコピー出来る様になりました
元のってそんなにヒドいんですね…それを何年も使っていましたがそれ以外ほとんど他には使っていなかったので大丈夫だったんでしょうね
そうですね、ほとんどわからないので検索して見付けた物を少し直すくらいしか出来なくて
もう少し複数のサイトとか見てみます
コード作成、アドバイス、ヒントなど色々と本当にどうもありがとうございました >>695
そんな感じやね
縦デュアルで下をメインにしてるがyを-1にしたらサブの左下に張り付き、
-1080でメインと同じ感じでサブの左上に出せた
描画領域の上限下限は認識できないっぽくて-2000とかにすると見えなくなる >>696
キーボード自体に設定してた物とか、元のってそんなにヒドいということですが、元のってAHK?
AHKならすべて停止して与えられた1つだけを実行してみよう
元のが何か気になるね!! >>698
元のスクリプト(検索で見付けた物)です
教えて頂いた物だけを実行は681でやってもダメだった事を書いています
そして691でちゃんとコピー出来る様になった事も書いていますので解決済みです どういう事か説明して?
アンチの勢いめちゃめちゃ弱まりそうだけど同伴してないから 証拠はなにやっとんねん
長さが違うんなら無駄なのだがレッドチームもクソだが
聞いたことせずに怠惰に生きてて草生えた?
つまりAmazonが工場建てて今またいろんな思いして タブレットPCを自宅に居るときだけwindows10ログインをbypassしたいのですが、タスクスケジューラー最上位権限でahk実行してもログイン前だとキーボードフック系が一切反応しません。
良い方法ありますでしょうか?
以下を実現しようと奮闘中です。
自動ログオンONで、外出時はShit押しっぱなしにしたい。
--------
●自動ログオンの一時的な無効化/スキップ
自動ログオンが有効化されたシステムであっても、一時的に自動ログオンを無効にできる(これはAutologonツールに限った話ではない)。その方法は簡単で、システムの再起動時、ロゴ画面が表示されたあたりから[Shift]キーをずっと押しているだけである。こうすると自動ログオン機能が無効になり、ユーザーは通常のログオン手続きができるようになる。 そういうことをさせないセキュリティが働いてるのにログイン画面でパスワードを読み取れるのをどう考えるわけ? >>703
自動ログオンの設定を家と出先で都度変えるしかないと思うよ もう訳が違う感じがしないかの境目なのかね
まあそこ言及せずにソシャゲで唯一まともだと思うけどね 俺は無課金だから淡々と続けて流されて死亡したほか、 乗用車が来て慌ててハンドルを切っています
ワクチンを打っていないのか24時間もみないわ 最新版をダウンロードしたらマルウェアのアラートが出た ブツがブツだし間接か直接か知らんが実際ウイルスとしても使われるって話だから、
その辺はぶっちゃけ気にするだけ無駄じゃね
ソース自分でビルドすれば精神的にはまだいくらかマシか 最近どのソフトでもマルウェア扱いのもの増えてる
署名だか何だかの縛りが厳格化したっぽい ソースがGitHubでGPLで公開されて最強だし
GitHubのリリースからダウンロードしてファイルが完全に一致するか調べたら?
SHA256ハッシュって知ってる? 出たばかりの最新版ってウィルスチェックに引っかからないよ
時間経過でセキュリティベンダーが調べてチェックを増やす感じがする
だって出たばかりってチェックする手がかりがないよね おや?>>706 を書く前に DL したときは特に問題なかったけどな。
絶対的な DL数が少ないから「大丈夫?」的なダイアログは出たけれど。
今朝の Windows Def. のパターンファイルから? setup の方は、
Trojan:Win32/Malgent!MSR で引っかかってるな。zip の方はセーフ。 >>716
最新版の方が引っかかりやすいよ
チェックする術がないから安全側に倒してある
DLの絶対数が少ないって警告もそれ故に表示される 疑わしいけどそのようなセキュリティベンダーが本当に実在するとしたら素人は最新版をDLするなって言ってるのね www.autohotkey.comが信頼できる
財団だか会社だとかと書いてある
フッターにフォーラムや日本語wikiへのリンクも貼ってある
autohotkeyが今のようになってるのはそこにいる人たちのおかげなんじゃない >>717
setupのほうを使ったことがない
ウィルスチェックではzip の方が安全だろう >>719
セキュリティベンダーもそうだしMSのDefenderもそういう動作がデフォルト
他者への文句の前にまず自身の無知を恥じろよ いろんな人がいるわけで、それぞれが知ってることは違うわけだよね
Aさんは知ってるがBさんは知らないこと、Bさんが知ってるがAさんは知らないことがあるわけで
現代のように情報の多い世界ですべてを知ってないと無知と言われるのか? IPコロコロして隠れながら文句を言うのが恥じろアホ >>723
すべてを、ってわけではないけど知らないなら無知って言われるのは仕方ないよ
文字通り「知って無い」んだから
無知を白痴のイメージで取り扱ってないか?
ちょっと受け取り方が過敏すぎない? >>725
そんなことはない
誹謗中傷だからね
誹謗中傷したらいけないって言われてるのを知らない? 1人と会話するならいいんだがいろんな人が参加してくるのを1対多で相手するのはきついな
もう返事しないかも 我が通らないと>>724と侮辱するだけの事はあるな
>>724のせいで説得力皆無じゃないか
多人数相手にしてんのかコロコロ変えてる奴相手にしてんのか自分の中で整理してからしゃべってくれ
あと、普通はipコロコロしてるなんて妄想はしないものなんだよ 知識がないって意味だから知ら無いで良いんじゃ?
「無知」ってどんな意味だっけ? 今日プラスの株などオススメ出来るとしたらNISAで貧乏なのでぇNISA枠でデイトレすればいいのに体調不良を理由になってまるこげ 新作出し続けられてるのかもしれない
真面目さ
真面目な話だ そういやバランとかあったな
バリューグロース全滅って中央分離帯に突っ込んだろ
難燃とは思うが? 女子に競馬やらせてる我々はタッチしてなくて
スレを立ててるんだが 午後は奇跡のプラ転w
高配当は耐えてもいいと思うけどな
こういうのて人それぞれだからなぁ
音源バカ売れとかじゃないしやっぱそうなるのものは戦車(といっても プログラミング経験一切なし習った事も教わった事もなしで調べてるけどめげそうになるね
ただ方向キーしか使えないゲームをゲーム中だけWASD移動したいだけなのに
スクリプトが起動してるかどうかすら確認手段がなくない?とりあえず移動はできてるのにこれをどうやってオフにするのかが今全然わからん
オンオフをできればAltとかで制御できないものかと思って調べてるけど
v2の情報が全然ない落ちてる情報全部古くてスクリプトのコピペ一切できないしなんでなん? >>743
流石に新規参入なのにv1使うのはまずいかと思って
今日明日レベルじゃなくてもいつかは移行しないといけないならv2でやる方がいいと思うんだけどこれは欲張りすぎ? 文法の差違以前のところで止まってるようだけど、いちから覚える段階ならV1とV2両方習得しちゃえばいいんじゃね?
やることがキーのリマップとモード切替くらいのものだったら大した違いはないし v1からv2への移植はほとんど機械的にできちゃうくらい簡単なので、
互換性は無いというだけでどちらで書いてあっても参考になる
なにかv1をv2に変更してみる、という経験をしておくといい 今から覚えるのにv1は無駄といえば無駄だけど
情報や参考ソースなくて理解進まないのは当面解決しようがないから、そこで足踏みするのもそれもまた無駄
v1ソースのコピペしながら基本的な使い方覚えて
その気があるならv2に書き直したりするのも手 なんでv2の日本語の情報全然少ないんだろうな
みんな使わなくなったのかな v1で満足してる&大半は英語情報漁らない&漁っても情報を提供する熱意が失われてる https://ahkscript.github.io/ja/docs/v2/
公式のv2のドキュメントが日本語で読めるんだから、
これ以上のものは要らんやろ >>749
v1の時にAutoHotKeyをはやらせるページを頑張ってくれてた人が、
NILScriptに注力するためにコンテンツを消してしまった
GitHubの日本語情報が代替としてあるとはいえ、
v2のローカライズが遅かった リファレンスあれば書けるでしょ
そんな凝った使い方するようなもんじゃないし
あんまり深入りしてもドツボだよ
どんな要求にも応える、みたいな懐の深い言語じゃない
やりすぎると大抵不安定になる >>753
リファレンスさえあれば普及するってんなら世の中COBOLすら普及してなきゃおかしいんだが サンプルがあってそれを改造して、さらにそれを見た奴が閃きで違うことして、さらに広まる
それが多い言語ほど広がってる >>1 のクイックリファレンスは機能を理解するのに丁寧で必要十分なサンプルがあるけどな
これ読んだ上で情報がないとか言うならしょうがないが >>752
NILScript、鳴かず飛ばずのまま1年くらいの活動でサイトもツイッターも放置されてるのがもの悲しい…
正直流行らせるページを続けてた方が得るものがあったんじゃないかと邪推しちゃう >>757
画像検出はぜったいやらないとか、作者の想定の利用シーン以外には
対応しないって姿勢が結構頑なだった印象 ToolTipに操作対象のウィンドウ名常時表示した状態でホットキー動かすと、
WinTitleだけで対象指定してる場合は挙動イかれるのかよ
ToolTipにタイトル存在しないからか?
ゴチャゴチャ書くの怠いからWinTitleで指定一本化した矢先にこれか… タイトル指定のみの何がおかしいのか知らんがahk_exec追加で指定しても>>761だったんで、
そもそも対象指定するのにWinTitleを使う場合、
ToolTipの本文内にWinTitleと同一の内容を含めて表示したままにしないほうがいいらしい
まあ限定的な状況だとは思う >>763
どう挙動がおかしい?
仕様だとしても書いたコードを貼らんと参考にならんよ >>764
そりゃ状況によるけど、実行ファイルとかコントロールとか最低でも
もう一つは指定しないと誤爆しまくるじゃない
もちろんハンドルが取得できれば、それに越したことないけど
状況的に取得できないから、タイトル使ってるんだろうし >>766
実行ファイルでの指定なんてできるの?
できるなら是非知りたい
まさにタイトル文字列での誤爆に困ってる すまんおかしいのはクリックでしかも>>763は不完全な検証だった
WinGetPosで解像度取得してクリックアドレス相対指定するように組んでるのに、
動作にだけahk_exe追加してそっちに追加するの忘れてたわ…中見たら案の定ToolTipの解像度拾ってた
要するにデフォの絶対値指定だけ使っていれば>>761は発生しない
多分コマンドのほうも直したほうがいいんだろうけど、
何故かそっちは素で通るからWinGetPosだけ直せばいいや… ahk_exe 指定はフルパスでも指定出来るので同じモジュール名が複数動いてる環境で本当に有り難い >>769
ありがとう!
v1から長いこと使ってるけど、こんな風に指定できるの知らなかった
それにまさにパスの違う同じ名前の実行ファイルで取り違えが起きてたので、
>>770のフルパス指定できるって情報も助けになった
今まで半自動で作業してたことを全自動にできるかもしれない
本当に感謝してます ahk_exeなんてそれこそ、はやらせるページ時代から丁寧に解説されてるじゃないか
結局リファレンス読んでないだろ? 使って無い機能も含めてリファレンスはざっと全部目を通しておくべきだな
V1から長いこと使ってるけどいまだに知らない機能に気付くことがある v1から使っててahk_exe知らないって何の冗談だよ… ahkのリファレンスはかなり丁寧に解説されていて、個人的には
分かりやすいと思うけど、それがゆえに分量が増えちゃって
初級者に敬遠されてるのかもとか、最近思い始めた V2のドキュメントの日本語版はところどころ未翻訳部分があって結局英語版をグーグル翻訳した方が早くなっちゃうのよね >>777
まあ、すぐゴミサイトになるだろうな
v2日本語サイト >>768撤回するわこの状態だとTooltipだけにキー入力送られる場合があった
操作発生するタイミングでTooltipにウィンドウ名表示してるだけでマズい
で結局の所起動処理に一行付け加えれば済むだけの話だった…
WinSetTitle("active_windows", "ahk_class tooltips_class32 ahk_exe AutoHotkey64.exe")
タイトルなくてもahk_ Criteriaは拾えるんだからそりゃそうだよな
何でこんなことにこんな時間かけてんだ…もう脳の老化がヤバイわ
WhichToolTip使う場合とかToolTip非表示にする場合の話は知らん >>779
何がしたいのかさっぱり分かりませんが、v2であればToolTipの戻り値はhwndなのでそれで指定すれば良いのでは? >>780
その人はりんごタイプだろ
リンゴをどこで買ったのか聞いて欲しい >>770
ほー フルパスいけるのか長い事知らんかった
hwndで分けてたよ 何がしたいのと言われても、
まんまTooltipに窓名出して且つwintitleだけでコマンド制御することとしか言いようがないんだが 誰が勝ってた先輩が稼いでくれた資金を投入して圧縮により燃焼させる 糖質制限とケトジェニックに移行してるだけようやっとるで
害悪でしかない あれは歯が合わなくてもいいしな
確かに痛いけどジェイクは頭大きいよ 番組開始初回は1週間ちょい過ぎて意味わからん
スレッガーより凄いな
警察が相手にしないで
鼻の付け根(眉間)の介護は施設任せにして値上がりがあるのか疑問でもよくて頭良いからこそできることだろう。 ガチで知恵遅れ発達障害ガイジやんw
切手販売がこのままで変わるのも含めて) チラ裏 Bluetoothイヤホホ接続 bluetooth enumeratorで色々やってたら理想の動作するようになった&1000行超えた わーいねむい ゲームもアホてのは全く増えない
スケート界になってるZeebraはすごいと思うんだよ
「お父さんとかお母さんが前よりも近くで声かけていただろう ▼インターネットホットライン
インターネット上のマウントはしないといけない
バカか そんだけ衝撃があったのが不思議なくらいなのでは
未成年者も。 軽くとだけいわれてもファイルサイズかメモリ使用量かCPU時間か挙動なのか
実行部とスクリプトを梱包するだけだから特に変わらんのでは Blindって何してるの?
SandSやろうとそてるけどよくわからん
^h::send "{Blind}{BS}"も一気に1行消したりするし意味がわからない >>813
Blind
俺も気になってたが、
色々効果があるみたいだな ahkのスクリプトが重いってpentiumⅢとか使ってるのかな? Blindは修飾キーの回避処理をスキップするモード ttps://www.autohotkey.com/docs/v2/lib/Send.htm#blind
^h::Send,{Blind}{BS} だとctrlを開放せずにBSをsendするのでOS側はctrl+BSが押された認識してる >>816
Blind消したらBSの挙動になった
ありがとう
公式読んだけどわからなかったんだよね モニタの数やどれがプライマリかを変更することが度々あるんですが
それをやったあとAHKでの指定座標がおかしくなることがあります
PC自体の再起動以外に治す方法はないですか? v2にAhk2Exe.exeが入ってなくない?
どうやってコンパイルするんだ インストーラーから自動でダウンロード
手動ならGitHub行けば済む話 あれ?よく読んでなかった。再起動で直るなら関係ないか モニタの設定変えた直後と、その状態で再起動したあとで挙動が違うってのは
ドライバレベルの問題な気がするんでどうしようもなさそうな予感 ClipboardHistoryが地味に更新されているのが嬉しい
もう開発終わったのかと思ってた >>824
ClipboardHistory、いいですよね
スクリプトを読んでるといろいろ参考になります
config.txtを編集すればカスタマイズが簡単なので
「各行先頭に連番追加」で: `を`タブ`に書き換えて使ってます
連番機能のないエディタや、連番機能が貧弱なエディタで、便利に使えます
そういえば、Vectorで公開されているIMEユーティリティDimeも中身はAHKスクリプトです 変数の型を明示できないと気持ち悪い気がしないでもない >>825
Dimeはahkのソース公開してないのかな?
electoron系も大丈夫だったからキャレット位置取得の関数部分だけ使いたいな
AHKは逆コンパイルできるんだっけ? >>827
dime.exeをエディタで開いて、UTF8テキストモードで後ろの方を見るとソース見れます vzエディタの設定ファイルをエディタで開くと見ーたーなーと書いてあって裏技が案内されてる的な あった
とりあえずdecompile出来たけどこのソース抽出めんどいなー
EXE2AHK - AutoHotkey Community
www.autohotkey.com/boards/viewtopic.php?f=6&t=59015 VSCodeで編集するとスタティック変数は名前変更可なのにインスタンス変数は名前変更不可なのモヤモヤする v2を使ってあるゲームのwadsをカーソルキーに割り当てて使おうとしたのですがカーソルキーを押し続けると
ずっと押し続けたような状態になって元に戻らないことが頻発します
どうにかなりますか
#HotIf WinActive("ahk_exe 実行ファイル.exe")
Up::w
Left::a
Right::d
Down::s
#HotIf よく分からないけど押しっぱなし問題はちょいちょい起きる
解決できないのでリセット用のキーアサインを用意する LLフックの限界がある
より低いレベルから割り込まれると矛盾が起きる
状態変数とか持って複雑な管理をするほど壊れやすい
凝ったことはしないのが吉 キーボードやマウスのドライバが干渉するケースもあるね
特にマクロやジェスチャーが使えるタイプ
MSの標準ドライバにすると収まったりするけど
一部のキーが使えなくなったりと弊害も大きい ダメモトでCopilotにきいてみたら3つ方法が提示されてそのうち
SendMode InputThenPlayを使用して、キーの入力を正確に制御できるようにするという
方法でうまくいきました
SendMode("InputThenPlay")
#HotIf WinActive("ahk_exe Urbek.exe")
Up::w
Left::a
Right::d
Down::s
#HotIf "Urbek.exe"というファイル名をうっかり書いてしまったがこれはゲームの実行ファイル名
他のウィンドウでもキー割り当てが有効になってまった
SendModeのすぐ下の行はなぜか実行されないようで、下に空行を付ける必要があった
SendMode("InputThenPlay")
#HotIf WinActive("ahk_exe Urbek.exe")
Up::w
Left::a
Right::d
Down::s
#HotIf 自分で色々試して対応した
2.0.7を2.0.15にバージョンアップしたら問題が発生しなくなった
バグが直されたのかもしれないね 昔からある物理的に押下した修飾キーの押しっぱなし病も色々な対策例のうち
例1. ホットキーの先頭で修飾キー解放まで待つ(CtrlならKeyWait "Ctrl")
例2. SendをSendEventに置き換える
で再現しなくなったが例1は当然送信が遅くなるので例2と同じ意味になる
SendMode "Event"でまとめたらなぜか再現したので同じように空行にして様子見してみる 過去スレにあったやつ使ってて今のところ問題ない
forをloopにした
holdup_key() {
Sleep, 5
keys = ["Control", "Ctrl", "Shift", "Alt", "Win", "sc079", "sc07B", "sc070"]
SendInput, {Blind}{LControl Up}{LShift Up}{LAlt Up}
loop, 2
{
loop, len keys
{
SendInput, {Blind}{keys[A_Index] Up}
}
}
} >>840
半年以上前のバージョンじゃないか
さすがに古すぎ
質問する前にまず試すべき要件 >>842
物理修飾キーを使うホットキーのSendの後にこれを実行する感じ?
同じようなことは散々試したけど、v2でキー履歴みると最後にdown状態送信するんだよなぁ >>842
結果として問題が起きていないだけでコードとしては問題がありますね
その関数内で実際に機能しているのは
Sleep, 5
SendInput, {Blind}{LControl Up}{LShift Up}{LAlt Up}
の2行だけです
また、私見ですがその位置にあるSleepは効果があるようには思えません
現状問題が起きていないなら1行だけで良いはずです >>846
sleep入れると安定する
理由は全然わかんない sleep 1
みたいなあってもなくても変わらない筈の処理が、
あると無いのとでは大違いだったりする
OS的には一旦処理を手放して、ぐるっと一周してから戻ってくるので、
他の処理との兼ね合いは全然違う 別に全ての場合においてのSleepを否定しているわけではありません
842の関数内で冒頭にあるSleepの効果に疑念があるだけです 不思議だろうけど、経験的にそうやったら上手く行ったという事実には敵わんよ >>849
もし解っているなら、
今後の人達のためにloopのところの処理 >>842 直してくだされー [はい(Y)] [いいえ(N)]
というダイアログが出て、いいえを選択するのに無変換キーに
SC07B::Send, !n
を割り当てると、選択した後アプリケーションがハングアップしたのか操作不能になります。
原因分かりますでしょうか? >>852
holdup_key() {
static keys := ["LCtrl", "LShift", "LAlt", "LWin"] ; ここに必要なキーを入れてください。修飾キーはおそらくLRを明記しないと正常にUpされないと思います
for k in keys
SendInput, {Blind}{%k% Up} ; v2 → SendInput("{Blind}{" k " Up}")
; 注意 Inputモードは一般的には信頼性が高いですが、特定の条件下では信頼性が低くなり不具合が発生する可能性があります
; 何らかの問題が発生した場合、とりあえずSendEventに変更し様子を見てください
}
元々の問題点として、keysへの代入演算子が=であるため、配列として代入されるはずであった右辺がそのまま文字列として代入されています
おそらく参考元がそうだったので、それを基準にしたforループが動作せずにloopに変えたんだと思いますが、そのloopも記述が間違っているため動作していませんでした
ちなみに私は間違いを指摘しただけで、こういった後手での包括的な対策は、理屈としては理解できますが使用していません
そのため、この手のスクリプトが実際にどの程度有効であるとか、これによる弊害は分からないので、推奨している訳ではありません >>854
ありがとう 勉強になった
holdup_key() {
Sleep, 5
keys := ["LCtrl", "LShift", "LAlt", "LWin", "sc079", "sc07B", "sc070"]
for k in Kyes
{
SendInput, {Blind}{%k% Up}
; SendEvent, {Blind}{%k% Up}
}
} これ動作をミリ秒で指定できるけど
リファレンスではOSの制限で10ms単位だと書いてあるけど
実測すると10msごとで変わってるわけでもないし
SendModeを変えても基本的に指定した数値より遅いし
同じ間隔で繰り返しても20msくらいバラツキが出る
もっと精細なキー/マウスマクロないかな… 負荷が高いとOSの都合で、20msの遅延になるみたいなこと書いてあるから
普通の動作なのではないのかと ahkv2で操作をマクロ保存するみたいなことって出きませんか?
windowspyて位置調べて、キー調べてクリックとかしてたんですが、便利にしたいなと思いまして 理論的にはできると思うけど、すっげー面倒だと思うぞ
なぜなら、マクロが組めるアプリはコマンドにidが割り振ってあって
それをスクリプト経由で呼び出して自動化できるように設計してあるわけだが
そうでないアプリはキー操作と場合によってはマウス操作をエミュレートして
実現する必要があるから、最低でもCUI機能が付いたアプリでないと
少し前に話題になったスリープ問題じゃないけど調整が鬼畜になる 標準のspyはウンコだから余分な情報をはぎ取り好きなフォント、フォーマットになるように改造してそっち起動したほうがいいぞ ありがとうございます。すみません。マクロって言い方が良くなかったです。
どちらかというと、下記のような動作を記録してahkv2のプログラムに落とし込むぐらいでいいんです。
100,100をクリック
100ms sleep
aを入力
100ms をクリック
いままで手打ちで作っていて、簡単にahkプロクラムを作りたいと思いまして。
もしかして標準であったりもしてましたか? v2だと記録用ソフト一から作ったほうが話早いと思う
v1でそれっぽいのならPulover’s Macro CreatorとAutoScryptoWriterがあるんで、
スクリーン単位のマウス座標でいいならコンバーター併用で何とかなるかもしれない
Pulover’sなら使ったことあるが俺環だとそもそもエディタがまともに動かず消したわ まあ座標なんかは自動記録があると助かるのはわかる
でも厄介なのは送信時の調整なんだよね
ウェイトをどれだけ入れるとか、eventで送るかinputで送るかみたいなのもあるし
自由度の高さゆえに結局手作業でちまちまいじる必要がある
場合によってはPower Automateみたいなのがニーズを満たす可能性もあるけどね マウス座標はspy弄って現在位置クリップボードに保存できるようにしたな
追記数たいしたことないけどそれでも手間はそこそこ減る
座標複数保存して後で纏めて書く場合はtxt出力なりもう一工程いるけど 使ったことはないですが
Pulover`s Macro Creatorなら公式フォーラムでv2対応のもの公開してる人がいますね
ttps://www.autohotkey.com/boards/viewtopic.php?f=83&t=116603 >>870
txt出力する際に100,100をクリックとマクロに整形出力すればいい 横からだけどちょっと似た?様な事出来ないかと前から思ってたので
ブラウザー(新規タブ)開いた時に任意の場所をクリックした後マウスカーソルは元の場所に戻る、みたいな事は可能でしょうか?(それかクリックしたのと同じ様にするがマウスカーソルは動かさない、とか)
どうしてかというと、サイトによっては開いた時に検索窓にカーソルが入れられてたりして読んで下に行こうとスペース押したり↓押したりしても動かず、あれっ?て思ったら検索窓の中という事がよくあり、どこかその辺をクリックしてからスペースや↓を押すという手間が発生
そのサイト内で検索はこちらがしたい時にするから毎回最初から検索させようとしないで欲しいのにさせて来る
それを回避するのには、開いた時どこかをクリックした事にすればすぐ読んで行ける様になります
場所によってはリンクをクリックして開いたりするかもなので無難に0,0か
仮にそれが出来るとしてもまだ問題があり、モニターが三枚なのでクリックして戻す場合一枚より困難?
クリックした事にして動かない場合なら関係無さそうですが
こんな事可能でしょうか?
長文失礼しました
Windows11 Pro 23H2
v2 あ、すみません
それかサイト開いた時にサイト内にカーソルを置かずに浮かせる?みたいな指示は出来無いでしょうか? >>873
条件: 新規ページが開かれた時 && ページロード完了時
処理: 現在のフォーカスが入力フォームならフォーカスを移動
後半はよくわかりませんが要約すると上記のようなことだと思います
AHKでやるにはブラウザを常時監視する必要があるため、あまりスマートではなく
その他の判定、処理も含め容易であるとは言えない方法に頼ることになります
python + seleniumなどでもできるとは思いますが導入から実装まで考えるとめんどくさいです
ブラウザ側で完結できるように、Greasemonkey系統のアドオンでJavaScriptでやるのが一番楽だと思います
ページロード時に入力フォームにフォーカスをセットする といった逆のことを行うサンプルはよくあるのでそれらを参考にしてみてください >>875
レスありがとうございます
後半というのはマウスカーソル…辺りですかね
画面のどこかをクリックしたらそこにマウスカーソルも移動しちゃうじゃないですか
動かされたく無いので、動いても戻すか動かさないで済ませるやり方が無いかなと
やっぱりかなり面倒な事ですよね
JavaScriptの方が実現させ易いんですね
それで検索してみます、どうもありがとうございました ↑↓にホイールアップ・ダウンを割り当てる
本当に↑↓キー使いたい徳困るけど(´・ω・`) はじめまして
autohotkeyで複数のデバイスを利用する方法を探していてここに辿り着きました
blenderというモデリングソフトの利用時に、複数の外付けテンキーを並べてショートカット用のデバイスとして使用する方法を探しています
「Multi-Keyboard-For-AutoHotkey」というアドオン?を利用して、Aのテンキーのみにショートカットを割り当てるところまでは辿り着いたのですが、実際にblenderで利用すると割り当てたショートカットの機能と同時に従来のテンキーの機能まで動作してしまいます
(外付けテンキーABにそれぞれ別のショートカット、メインキーボードのテンキーで従来のテンキーの機能という動作を想定しています)
作成したコードは以下のとおりです。
; Keyboard 1 - Numpad1 key
if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
Send +h
こちら従来のテンキーの機能を無効にして割り当てたショートカットだけが起動するように出来ないでしょうか
ご助言いただけますと幸いです 外付けテンキーをF13とかの何の機能も無いキーには割り当てられないの? ハードウェア側でキーを割り当てられるキーボードを買えばいいんでは テンキーが2つあること自体は問題になってないんだよね evilC/UCR: Universal Control Remapper [ALPHA]
https://github.com/Snoothy/UCR へぇ〜、AutoHotKeyでも複数台の同キーで異なる置換ができるのか
HidKeySequenceみたいにデバイスIDで識別しとるんかな? キーコードが同じだったらahkではどうしようも無いのでは
より低レベルでキーコードを別にしてもらわんことには >>878
色々ご事情があるのかもしれないが、blenderなら素直に外付けテンキーを買ったほうが遥かに捗る。 >>885
外付けテンキーより、この人に必要なのはいわゆる左手デバイスじゃないの >>877
レスありがとうございます
なるほど…それならどこにカーソルあっても関係無いですね
でも仰ってる様に普通に↑↓使いたい時困る(笑)
修飾キーと組み合わせたら…なんて言ってたらどこかクリックする方が手っ取り早いですしね
でも何かの時に役立つかもしれませんし案ありがとうございました 身もふたもないことを言うと、オーサリングソフトの場合、
普通は実行ファイル名をホットキーの条件にして
無変換キー+例えば下段のキーの一列に対して順にショートカットを
割り振っていくのよ
無変換キーを要求するアプリなんて、まずないからトラブルもなし
他の修飾キーと組み合わせれば簡単に数を増やせるからテンキーなんてなくても余裕よ 878です。返信遅くなってすみません!
たくさんご意見いただきありがとうございます
出来るかも!って思い込んだ時点でちょっとしたカスタム気分で浮かれてたので、このためにテンキー二個買ってしまい……もう買っちゃったしどうにか出来ないかと奮闘してた次第です
Blenderの膨大なショートカット地獄と奮闘するのに疲れたのと、このために休み丸二日潰してしまったので、大人しく左手デバイスなりプログラマブルキーボードなり買うことにします
Universal Control Remapper
>教えていただいて試してみたんですが、どうしてもデバイスを認識してくれなくて実行までいけませんでした
すみません テンキーも内部で独自の入力をキーコードに変換してる訳だから、
そこのテーブルさえ変更できればプログラマブルになるんだけどな >>883
Multi-Keyboard-For-AutoHotkey.exeでデバイスIDをナンバリングしておいて、
ahk実行時には登録した数字を使って呼び出す形になってました >>890
安く済ますなら
テンキーパッドの一方→HID RemapperでF13〜F24等に変換し出力→AutoHotKey
github.com/jfedor2/hid-remapper ハード的解決、、、
デバイスドライバさえ自由ならなあ if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
Send +h
これだと置換じゃなくて、パススルー&shift+hの送信でしょ?
>>こちら従来のテンキーの機能を無効にして割り当てたショートカットだけが起動するように出来ないでしょうか
if (KeyboardNumber = 2 and VKeyCode = 0x61 and WasDown)
置換するキー:: Send "{+h}"
じゃないの? すみません、ほとんど見様見真似のコピペなのであまりコードの違いを理解しておらず……
ただ、Multi-Keyboard-For-AutoHotkeyでこの形式で入力するとエラーが出てしまうようでした
メモ帳でSend +hを試してみると1が入力されずに大文字のHが入力されるので、ソフトとの相性が大きそうです
皆様色々情報ありがとうございました
自分ではコードの判別さえままならなかったので、色々ご意見いただけて大変助かりました
本件ですが、せっかく購入したテンキーを一切使わないままというのももったいないので、
blenderで本来テンキーに割り振られているショートカットを「テンキー→alt+テンキー」にすることで一旦様子を見てみることにしました。
今後問題が出てくる可能性は大いにあるのですが、まあそのときはそのときかなと…… SendMode("InputThenPlay")
#HotIf WinActive("ahk_exe Urbek.exe")
Up::w
Left::a
Right::d
Down::s
#HotIf
でも押しっぱなしが発生したので
SendMode("Event")に変えてみたらうまくいくようだった
こんな単純なスクリプトで問題が発生するなんてAutoHotKeyはなんて糞なのかと思う Urbek.exeでもキーを取得してるからな
Urbek.exeの起動後にahkをreloadするとうまくいくかも ゲームだからタイミングをシビアにしようと、低レベルで取得してるんだろうな
多少遅れても構わないと標準のAPIだけ使ってる同士なら何も起こらない
ゲームじゃないけど、リモートワーク用のクライアントが独自にキーを取得してて、
ahkとものすごい干渉する
reloadで治る
ahkの前はyamyを使っていて、これも現象は似たようなもんで、
yamyは一旦終了して再度起動する必要があったので、自力でreloadできるahkに乗り換えた アプリの方に問題があるというか、一般にゲームのホットキー生成はセンシティブ
なのにAHKが悪いかのような発言はおかしいと思うわ
むしろ、入力メソッドに様々なタイプが用意されているAHKを誉めるべき AHKでマウスの右ボタンを扱うと、そのアプリのマウスジェスチャーが使えなくなるんですが何か対策はありませんか? わかった
AHKの期待値が高すぎるんだよ
期待値を調整すべき WH_KEYBOARD_LL を一人だけ使って、他の人はWH_KEYBOARD という状況でしか動かない
WH_KEYBOARD_LL を奪い合うと不具合が避けられない DevToysが2になってコマンドラインも増えて便利そう >>909
ふむ
Visual Studioの開発者か… chrome.ahk なんですが
MsgBox, wait get の後でエラーがでて終了してしまう
なんでですか?
#Include Chrome.ahk
F9::
#NoEnv
SetBatchLines, -1
;/*
FileCreateDir, profile
chromeInst := new chrome("profile", "https://www.google.com/")
MsgBox, wait get
pg := chromeInst.GetPage()
MsgBox, wait load
pg.WaitForLoad("complete")
sleep, 4000
MsgBox, wait alert
pg.Evaluate("alert(11)")
MsgBox, wait
pg.Evaluate("var title = window.document.title")
pg.Evaluate("alert(11)")
title := pg.Evaluate("window.document.title")
sleep, 4000
pg.Evaluate("window.document.title = 'aa'")
MsgBox, %title%
return グーグルのページ自体は表示されるけど
↓のエラーがでる
Error in #include file
"C:\Users\User\Documents\AutoHotkey\Lib\Chrome.ahk-master\Chrome.ahk":
0x80072EFD -
Source:WinHttp.WinHttpRequest
Description:
サーバーに接続できませんでした
HelpFile:
HelpContext:
(null)
0
Specifically: send
Line#
108:}
114:{
115: Process,Close,this.PID
116:}
124:{
125: http := ComObjCreate("WinHttp.WinHttpRequest.5.1")
126: http.open("GET", "http://127.0.0.1:" this.DebugPort "/json")
127: http.send()
128: Return,thisJSON.Load(http.responseText)
129:}
143:{
144: Count := 0
145: For n,PageData in this.GetPageList()
146:{
147: if (((MatchMode = "exact" & & PageData[Key] = Value) ||(MatchMode = "contains" & InStr(PageData[Key], Value)) | (MatchMode= "startswith" && InStr(PageData[Key], Value) == 1) || (MatchMode ="regex" && PageData[Key] ~ = Value)) && ++Count == Index)
Continue running the script? 何かよくわからんけど大文字にしたら?できたので質問キャンセルします ページのタイトル取得してAHK側で使いたいのだが方法がわかりません。
ブラウザ内では使えるようなのですが
AHK側にページ内のデータを渡すことはできないんですか?
@はできるけどAができない
#Include Chrome.ahk
F9::
#NoEnv
SetBatchLines, -1
;/*
FileCreateDir, profile
ChromeInst := new Chrome("ChromeProfile", "https://www.google.com/")
PageInst := ChromeInst.GetPage()
PageInst.WaitForLoad("complete")
sleep, 2000
MsgBox, wait alert title
PageInst.Evaluate("var title = window.document.title")
PageInst.Evaluate("alert(title)") ; ; <---------------@
title := PageInst.Evaluate("window.document.title") ; <---------------A
sleep, 4000
MsgBox, %title%
return あ、一応言っておくとタイトルを取得したいわけではなくてwebページ内のデータを取得したいです。
タイトル取得はあくまでテスト用です 以下のようにプロパティ名valueを参照してみてください
title := PageInst.Evaluate("window.document.title").value https://github.com/search?q=autohotkey&type=repositories
この検索で役に立つautohotkeyリポジトリへのリンク集を見つけられる
それで見つけてた・・・という強がり 左手デバイスとしてタッチデバイスでジェスチャー操作導入したらかなりいい感じ
ControlFocusして設定しておいたジェスチャーでアプリのパラメーターを指2本でスライダー出来たときはなんか汁が出た
https://i.imgur.com/qNj8dC6.jpeg >>878-
あたりの話つながりなんだろうけど、だいぶスレ違いだな ホットキーで「[shift]+[:]で入力する[*]」を["]に,
「[shift]+[2]で入力する["]」を[@]に置き換えたくて
*::
Send, "
Return
"::
Send, @
Return
というスクリプトを書いてみたのですが[shift]+[:]も[shift]+[2]も@の入力
になってしまいます.
sendで生成した入力を無視させる方法とかありますか? それぞれのホットキーの先頭に$を入れるか
ホットキー項目より前で#UseHook宣言をする ホイールスクロールを左右キー(←→)に割り当てているのですが、元々のスクロールも残っているようで、左右キーと同時にスクロールもしてしまいます。
1秒間に何十回も行う動作なのでこういった挙動になってしまうのでしょうか?なんとか割り当てた左右キーを動作させている時は元々のスクロールは動かないように出来ないでしょうか?
宜しくお願い致します。 それってレスのあった$や#UseHookじゃないの? 自宅PCでChangeKeyでCapsLockとカタカナ/ひらがなキーをF13・F14にして、AutoHotkeyで機能を割り当てしてて
会社PCでも同様のキー配列にしたいけど、ChangeKeyは管理者権限が必要で会社PCでは導入できないんだよね
管理者権限なしでキー配列を変更するソフトかAutohotkeyのみでCapsLock類を変更する方法ってないかな?
ちなみに以下を試してみた、らCapsLockキーが押しっぱなしな判定をされて上手く機能しなかった
;CapsLockキーにCtrlキーの仕事をさせる
Capslock::Ctrl
sc03a::Ctrl 日本語キーボードじゃCapsじゃなくて英数だからダメ
この2つは同じじゃなくて英数には離すという操作が無いので押しっぱなしになる
日本語以外のキーボードにして全キーをAHKで日本語配列にリマップすればいい 検索ソフトのeverythingを使っていますが”クリップボードの監視機能”
がないので下記を作りました。
#Persistent
OnClipboardChange:
Run,C:\Program Files\Everything\Everything.exe -s "%Clipboard% "
Return
firefoxで試しましたが、検索文字をコピーすると、firefoxの画面の上に、
everythingの検索結果の画面が毎回出てきます(ちょっとうざい)。
下記改善をしたいので知恵をお貸しください。
改善したいこと:コピーは、検索のためだけじゃないので、いつもはeverythingをfirefoxの
画面の下で動かして置き、検索結果を見たい時だけ、everythingの画面をクリックして、
上に持ってきたい。見た後は、FIREFOXの画面をクリックしてeverythingの画面を下にしたい。
表示優先度を最優先にできるソフトを使ってみたが、FIREFOXの画面が常時上になり、
everythingの画面は、隠れたままになりだめでした。
AHKですがキーボード操作は使いたくなく、クリック動作だけで行う方法を教えてください。
文章力がないので、うまく伝わるといいのですが。 >>932
Run,C:\Program Files\Everything\Everything.exe -minimized -s "%Clipboard% "
で希望の動作通りではないけど、言わんとする煩わしさは解消するのでは?
Everything1.5ならあれこれ考えなくても、clipboard: で監視できるけどね 会社のPCのキーボードにコンテキストキーが無いので、
printscreenを変更してる
レジストリだけでそのくらいのことはできる 私は[英数]をランチャーに使っている
[英数]は制御しにくいので、レジストリで[F10]と入れ替えておく
[CapsLock]を使いたい場合は[Shift]+[F10]
管理者権限については知らない 管理者として実行することを制限されているPCにそもそもAutoHotKeyのような
ツールを勝手に入れて大丈夫なのか?
そういった制限の厳しい職場ではレジストリすら変更禁止な気がするが JS = "window.querySelectorAll('window.document.querySelectorAll("div")')"
PageInst.Evaluate(JS)
chrome.ahkで使いたいコードなんですが上のように引用符が三つ重なるときはどうするんですか?
https://github.com/G33kDude/Chrome.ahk/tree/master 937はquerySelectorAll が二重になってて文法が変ですが、それは無視して引用符が三重になってるときはどうすればいいでしょうか? >>932
これでどう?
ControlSetText, Edit1, %Clipboard%, ahk_exe Everything.exe >>929
changekey .. 管理者権限、再ログイン要
ctrl2cap .. 管理者権限要、再起動要
管理者権限なしにcapslockをctrlに置き換える方法は基本的になしだが
管理者権限ありでcapslockをleft ctrlにするレジストリ
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
追加後、再ログイン、結局changekey実行と同じ
管理者権限なしでcapslockをleft ctrlにするレジストリ
[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
追加後、再ログイン、細かい不具合あり
大昔の自分用のtipsからのコピペ。細かい不具合を思い出せません。ゴメン >>942
なるべく HKCU で設定、どうしても無理なら HKLM
私も自分用のメモを見ると HKLM になっていたので
HKCU では設定できなくなったということかな HKCUでできたのはWin10より前までだったと思う >>927
判断材料が足りません。全てのアプリでそうなる場合、おかしな記述か設定をしている可能性があります
主にゲーム等の特定のアプリでのみそうなる場合、通常の方法ではホイールスクロールの元々の動作はブロックできません
>>929
無理やり変更しても管理者権限がないと色々不具合が発生することになるので、結局元に戻すとか言うことになる可能性が高いです
あと、CapsLockをCtrlにしたがる人が多いですが、管理者権限があったとしても、キーボードによっては物理的に同時押しに対応してないキーが存在する可能性もあるので
複数の環境を扱う様な人はこの変更はお勧めしません。つまり、諦めて初期配置での操作に慣れる方が無難です
>>932
私ならOnClipboardChangeではなく、仮にMButtonなどをホットキーとしてトリガーにします
まず、両方が起動中である場合のみ動作するようにするため、それぞれの#If WinActive() && WinExist()のセクションを作り
firefoxがアクティブならMButton押下時に選択文字列をコピーして、コピーした文字列をeverythingの検索欄にセット(>>940)してeverythingをアクティブ化(WinActivate)
everythingがアクティブならMButton押下時にfirefoxをアクティブ化と言う形にします
>>937
JSへの代入演算子が:=ではなく=なら、たぶんこんな感じになると思います
JS = window.querySelectorAll('window.document.querySelectorAll("div")')
代入演算子が:= または 関数の引数などの式である場合
JS := "window.querySelectorAll('window.document.querySelectorAll(""div"")')"
式中でない限り基本的には文字列引用符のエスケープは必要ありません
式中でAHKv1の場合、ダブルクォート「"」のエスケープは2連続表記「""」です。シングルクォート「'」はそのまま文字として扱われます
JavaScript側でダブルクォートのエスケープが必要である場合、AHKでの記述は「\""」になると思います
エスケープが必要であればこれらを念頭に適当に試してみてください
エラーが出たとしても内容にIllegal CharacterやSyntax Errorのような単語がないなら文法的にはおそらくパスしてます caps lockになってるだけで、動作ボロボロにならない? 今話題になってるのはCapsLock状態の制御ではなく、
CapsLockキーの単押しの話だから関係ないでしょ SC03A::
で指定すりゃキードライバ言語無関係 拡張機能経由でchrome色々操作するアイデア
chrome.ahk使ってたけど、AutoControl Managerにするわ
https://www.youtube.com/watch?v=gr4z0Xw8W2g >>952
2014年の古い投稿にChrome extensionへのリンクがある
https://www.autohotkey.com/boards/viewtopic.php?style=17&t=68422
インストールしてないから知らないんだろうがAutoControl Managerという名前ではない >>952
AHK と AutoControl それぞれ得意分野が違うから
両方使うとよい。連携させて使うとさらにいろいろできる。
AutoControl では JavaScript が使えるので、文法に悩むことがない。
あと、押しっぱなし病が出たとき、AutoControl は警告を出してくれる。 >>953
コピペミスってManagerまで入れてしまったのがそんなに気に食わないかね?
https://www.autocontrol.app/ >>955
そんな事情知ったこっちゃないんだから何でも察せってのはバカの証 >>955
自分でYouTubeのリンクを貼ったのに見てないんじゃない?
YouTubeの映像ではAutoControl Shortcut Managerと表示されてる
拡張機能の名称が変わってるんだよ レス数が950を超えています。1000を超えると書き込みができなくなります。