AutoHotkey スレッド part30 IDのみ

■ このスレッドは過去ログ倉庫に格納されています
2022/02/08(火) 18:38:19.33ID:UTRGyCNl0
元々がIDのみの表示で番号の始まっているスレを途中から別の表示で乗っ取るのは「背乗り」行為に当たるので、IDのみの表示で進行とします

■配布元
https://autohotkey.com/download/

■前スレ
AutoHotkey スレッド part29
https://egg.5ch.net/test/read.cgi/software/1620768466/

■日本語解説等
AutoHotkey Wiki
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://hdd.s300.xrea.com/ahk/
AutoHotkeyJp(過去ログdatあり)
https://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
https://www6.atwiki.jp/eamat/

■スクリプト投稿
Autohotkey専用うpろだ
https://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
https://pastebin.com/

■その他のテンプレ(5chのURL規制が厳しいのでpastebinに退避しました)
https://pastebin.com/raw/bWipuNmt
2023/10/08(日) 13:53:44.85ID:SBMAHfMn0
なんかこれ系使ってるの書いたなと思って探してきた
前にループでRangeを使いたいって話があった後、自分でも範囲指定のが欲しくなったときのやつ

; PythonのRangeみたいなやつ(forで使うことしか考えてない)
Range(start?, stop?, step?) {
s := Integer(step ?? 1)
if !IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s ; Range()
else if IsSet(start) && !IsSet(stop) && !IsSet(step)
c := 1 - s, m := Integer(start) ; Range(stop)
else if IsSet(start) && IsSet(stop)
c := Integer(start) - s, m := Integer(stop) ; Range(start, stop[, step])
else
Throw Error("パラメータが変です。", "Range")
return (&n) => (n := c += s, !IsSet(start) || c <= m)
}
633名無しさん@お腹いっぱい。
垢版 |
2023/10/08(日) 23:51:41.99ID:yx819iOD0
>>631
ほんとだ
myAnotherFunc(a?) でよかった
2023/10/13(金) 20:31:04.41ID:lUFs50Mf0
v2使ってます
ダブルクオーテーションで囲んだ変数を展開する方法はあるでしょうか?
調べてみたらv1の頃はできたっぽいんですが…

以下は例で、本当にやりたいのはテキストファイルに書いておいた文字列が含む変数を展開することです

v := "「A_AhkVersion」"
MsgBox v ; A_AhkVersionと表示されるのを2.0.10とかにしたい
2023/10/13(金) 21:09:19.74ID:kszrn8gL0
無変換(SC07B)+変換(SC079)+o
はどうやって書けばいいでしょうか?

~SC079 & SC07B & o::
は動きませんでした
2023/10/13(金) 22:58:19.97ID:1crCpIhe0
>>634
https://ahkscript.github.io/ja/docs/v2/Variables.htm#Intro

>>635
修飾キー(Ctrl、Shift、Alt、Win)以外の3つ以上のコンビネーションキーはサポートされていない
ホットキーを2つまでにして、#IF または ホットキーの処理内で GetKeyState で3つ目以降のキー状態を取得して分岐させることは可能ではあるが
そもそも使用中のキーボードによっては修飾キー以外のキーは3つ以上の同時押しを認識できない場合も多々あるのでそこら辺は環境による
2023/10/13(金) 23:04:18.36ID:ERs/JTAS0
>>634
https://www.autohotkey.com/docs/v2/lib/RegExMatch.htm#ExDeref


これv1の時からTransform廃止するからこんな感じの関数でやってねって言ってたけど
関数内ローカルの展開に使えなくてTransformの代わりにならない
2023/10/14(土) 00:58:11.68ID:iMxXiXwK0
>>636
ありがとうございます
アドバイス通りにやったらうまくいきました

#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::
SendInput, {Up}
return
#if

ところが次の問題が~sc079 & i::を設定していると動かなくなります
同時併用はできないでしょうか?
2023/10/14(土) 08:08:17.62ID:DXkbEwUP0
>>638
SC079 & i::
if(GetKeyState("SC07B", "P")){
;処理A
} else {
;処理B
}
return
とかどう?
2023/10/14(土) 08:39:17.96ID:281ftA3E0
>>638
実際にどういう書き方をしているかはわからんけど、おそらく #If が同条件での発動になってて ~sc079 & i:: の方が優先されているだけだと思う
やり方は色々あるけど一例としてこんな感じでも動く

#If !GetKeyState("SC07B", "P")
~sc079 & i::SendInput, {Down}
#If

#If GetKeyState("SC07B", "P") && GetKeyState("SC079", "P")
i::SendInput, {Up}
#If
2023/10/14(土) 09:17:07.76ID:3TcJyM+70
>>637
どうにかならないかと思ったけどあんまりどうにもならなかった
ローカル変数を扱いたいときだけ列挙してクロージャにして渡して
MsgBox Deref("%var1%def%var2%", varName => (var1, var2, %varName%))
関数定義のところで受け取って
Deref(Str, derefFunc?)
途中のderef部分を
out .= IsSet(derefFunc) ? derefFunc(m[2]) : %m[2]%
みたいな
2023/10/14(土) 13:14:24.79ID:281ftA3E0
>>634
636だけどちょっと読み違えてた。そういうことをやりたいならこんな感じで変数にしたい文字列を置き換えるかな…

v := "「A_AhkVersion」「A_YYYY」"
for var in ["A_AhkVersion", "A_YYYY"]
v := RegExReplace(v, var, %var%)
MsgBox v

連想配列を用いる方法もある。一見冗長に見えるがプログラミング的に推奨されるのはこちらの方だと思う
variables := Map("A_AhkVersion", A_AhkVersion, "A_YYYY", A_YYYY)
for key in variables
v := RegExReplace(v, key, variables[key])

v1のTransformも内部的には同様のことやってると思う。ただ、廃止された理由にも含まれると思うけど
予想外のところが変換されてたりしてバグの温床になるのであまり推奨されない
やるにしてももっとマッチパターンを厳密化した方が良い

>>641 の言ってることは別の問題で、やりたくはないんだろうけど元の変数をグローバル化してしまうのが簡単ではある
まあ手段が目的化してしまってる所もあるんだろうけど、
単純な文字列展開なら文字列結合やFormat関数でどうとでもなるので別にいらないのでは?とも思う
2023/10/14(土) 17:31:51.42ID:iMxXiXwK0
>>639
ありがとうございます それで完璧に動作しました!

>>640
ありがとうございます アドバイス通り競合していたみたいです
2023/10/14(土) 21:33:45.85ID:3TcJyM+70
>>642
元の質問とは別で>>637の挙げてるドキュメントの話だって説明ないとわかりにくかったね、今度から気をつけるわ
> 手段が目的化 はまさにそれで、パズル感覚でどうにかならないかなと考え始めたんで
Transformについては自分も同意するところ
645633
垢版 |
2023/10/15(日) 13:03:37.69ID:/B+GGiqI0
お返事をくださった皆さん、ありがとうございました
書き忘れてましたがv1でのやり方はご指摘の通りTransformでした
使う変数は組込変数で、使う場面も限定されるので、連想配列で工夫したいと思います
2023/10/15(日) 15:47:01.10ID:TKXXnipr0
https://www.autohotkey.com/docs/v2/Scripts.htm#continuation-section
だいぶ前のレスで上記URLを参考にしたと思われる
v2でのヒアドキュメントが変数を絡めると見にくくなる話が出てたが
継続行開始と終了の()の内側に"入れ改行位置を分けてやればいけることに気がついた

F1:: { ; 公式ドキュメントの例に則った記述
MsgBox("
(Join
現在のバージョンは「
)" A_AhkVersion "
(
」です。
)", "テストメッセージ")
}

F2:: { ; ちょっと詰め込みすぎて逆に分かりにくかもだがこんな感じでいける
MsgBox(
(Comment
"現在のバージョンは「" A_AhkVersion "」です。
今年は" A_YYYY "年です。
来年は" A_YYYY + 1 "年になるでしょう。 ; VSCODE AHKv2-LSP では文字列カラーになるけど、
; Commentオプションも機能する
来月は" ((A_MM + 1 > 12) ? 1 : A_MM + 1) "月のはずです。"
), "テストメッセージ")
}

ただし、公式記法と違い文中の"は`"のように明示的にエスケープする必要がある
その他の自動インデント判定等は普通に機能する
2023/10/16(月) 06:27:36.80ID:HnFsiC+R0
なんか無理やりヒアドキュメント使いたいってだけで本末転倒なんよ
最初の例だと

F1:: {
MsgBox(
"現在のバージョンは「"
A_AhkVersion
"」です。"
,"テストメッセージ"
)
}

とか書けばいいだけだし、二番目の例だと逆に可読性が低くてメンテナンスに問題出やすい
それに仕様の穴を突くような変態表記していると、本体更新で後々にバグとして顕在化してきて支障が出る
2023/10/16(月) 10:20:02.59ID:Bz5r9zRC0
なにがなんでもv2の欠点を欠点と認めない人がずっと頑張ってるけど
その行為なんかメリットある?
2023/10/16(月) 11:38:46.89ID:Wb0gkuWM0
v3まで待つしか
2023/10/16(月) 12:44:38.46ID:JfuEMiXm0
v1のヘンタイコードに対応することは二度とないよ
2023/10/16(月) 16:43:14.30ID:eNxVDezc0
過去の資産のあるゴミ言語から
資産のないゴミ言語になった
2023/10/16(月) 16:50:51.45ID:Wb0gkuWM0
先進性があるならともかく、どっかで見たような言語を再開発する意味とは
2023/10/16(月) 18:31:08.61ID:dLR3pMBg0
すまん例が悪かった。AHKでヒアドキュメントを使いたい理由って大抵は簡易的なリストや箇条書きなどの複数行の文を出力する際に
コード上で書いてあるインデントをLTrimで無視したい場合だと思うんだけど、公式例通りにやると変数が絡むとややこしくなるが、こういう風にも書けるということ
俺も理解が足りてなかったが、仕様上の穴ではなく、公式ドキュメントが分かりにくいだけで継続セクションが実際にどのようにどこまで有効であるのかという話
よく読んだら引用符で始まらない場合は式として扱われるという主旨のことが回りくどく書いてあった。正直そんなに必要になることはないし、どうでもいいと言われればそれでいいんだけどね

; 公式例 ""で囲んだ文字列内で継続セクションを開始している為()内の全てが文字列として扱われ、文中の"も文字として扱われるので、式を扱う場合は一度セクションを区切る必要がある
MsgBox("
  (LTrim
    現在のバージョンは「
  )" A_AhkVersion "
  (LTrim
    」です。
      あいうえお
    かき"く"けこ`nさしすせそ
  )"
) ; 5chの仕様の為、インデントは全角スペースに置き換え

; 文字列結合 各行頭行末に"、文中の"はエスケープ、改行もエスケープされた物のみ 全文を1行にまとめても良い
MsgBox(
  "現在のバージョンは「" A_AhkVersion "」です。`n"
    "あいうえお`n"
  "かき`"く`"けこ`nさしすせそ"
)

; ""の位置を変え、文中の"はエスケープ 文字列結合と同じく式として扱われ、対応する()内が継続セクションと認識される
MsgBox(
  (LTrim
    "現在のバージョンは「" A_AhkVersion "」です。
      あいうえお
    かき`"く`"けこ`nさしすせそ"
  )
)
2023/10/16(月) 19:09:39.65ID:pPRJ1RqD0
この仕様を見ていると変数展開させて使うって人は
ほとんどいないんだろうなと思うわ
PowerShellみたいにした方が良いのに
2023/10/16(月) 19:19:36.47ID:YfG7lbKB0
pythonのf文字列も実装遅かったしな
前からあったアイディアなのに採用しなかったということは、意図的に避けたんだろう
656名無しさん@お腹いっぱい。
垢版 |
2023/10/17(火) 19:53:48.71ID:v6kMRlAv0
右クリックだけの時は普通に右クリックして、
右クリック+ホイールの上下でブラウザの拡大縮小をやりたいんですが
下のマクロだとマウスクリック+ホイール上下で拡大縮小と右クリックメニューが同時に出ます
また、ブラウザのマウスジェスチャが効かなくなります。
どうやって修正したらいいですか。


RButton::RButton
return

RButton & WheelUp::
SendInput, {RButton}^{-} ; マウスの右クリック + ホイール上でCtrl+「-」が送信される
return

RButton & WheelDown::
SendInput, {RButton}^{+} ; マウスの右クリック + ホイール下でCtrl+「+」が送信される
return
657sage
垢版 |
2023/10/17(火) 21:25:54.42ID:hsUb4Jn70
右クリックメニューが最後出てもいいなら

WheelUp::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelUp}{ctrl up}
else
SendInput {WheelUp}
return

WheelDown::
if GetKeyState("RButton")
SendInput {ctrl down}{WheelDown}{ctrl up}
else
SendInput {WheelDown}
return
2023/10/17(火) 22:29:56.60ID:zT0TFsHP0
MouseGestureLならMG_CancelDefBehavior()で右クリックメニューを抑制できるから
AutoHotkeyでも出来るだろうね
2023/10/17(火) 22:39:17.44ID:pYkaTV7l0
>>656
個人的な見解で申し訳ないが…

>ブラウザのマウスジェスチャが効かなくなります。
このように不都合なことが起こりかねないから
1)ブラウザ側のマウスジェスチャだけでやる
か、
2)ブラウザの機能を無効にして外部マウスジェスチャツール(例えばMouseGestureL.ahk)だけでやる
かどっちかにした方が良いよ思うよ

2)だとブラウザの操作がショートカットキーで全て実現できるならマウスジェスチャツールでも実現できるし
 そのブラウザだけじゃなく他のアプリでも個別に設定したマウスジェスチャで操作できる利点があるし
2023/10/18(水) 00:50:07.18ID:6hRvblQL0
>>656
一行目でメニュー抑止してるのに
再び{RButton}発行したらメニューが出るにきまってるだろ
こうすんだよ
SendInput, ^{-}
2023/10/20(金) 17:07:44.29ID:xwrdv7kg0
解決策がさっぱりわからない事でみなさんのご意見伺おうと整理して文章書いてたら解決してしまった…
2023/10/21(土) 00:14:47.71ID:QsqkSmLl0
>>661
あるある
2023/10/21(土) 00:15:10.09ID:QsqkSmLl0
>>661
あるある
664名無しさん@お腹いっぱい。
垢版 |
2023/10/21(土) 07:27:33.45ID:uDJeYMX30
書くと考えが整理されるよね
2023/10/21(土) 08:58:11.72ID:670MOFi40
変な話だけどコーディングは漢字の書き取りみたいに
不細工でもいいから手で繰り返し書くと習得が早まるのはあるな
コピペだけしているようだと全然仕組みを覚えない
2023/10/21(土) 10:25:37.09ID:qkI01+t50
改行を\nではなく`nにしないといけない理由って何だっけ
2023/10/21(土) 10:57:36.70ID:A46hLlw90
>>666
https://ahkwiki.net/Scripts#.E3.82.A8.E3.82.B9.E3.82.B1.E3.83.BC.E3.83.97.E6.96.87.E5.AD.97
2023/10/21(土) 11:12:42.18ID:670MOFi40
Windowsのコマンドラインと干渉させないためでしょ
例えば、\note というディレクトリが誤判定される危険性がある
\\でエスケープすればいいじゃんって見解もあるが
Windowsで既に用いられてるからね(例えばレジストリトファイル)
それをエスケープしようとすると\\\\のエスケープ地獄に陥るから
変えるのは妥当
どうしても嫌ならエスケープ文字を変えるオプションもあったはず
全くお勧めしないけど
2023/10/21(土) 11:18:54.11ID:670MOFi40
レジストリトファイル

レジストリ ファイル
2023/10/21(土) 11:46:02.56ID:qkI01+t50
他の言語と同じ方法にしとけばいいのに、独自路線を選ぶんだよな
誰も気付かなかったうまいやり方見つけちゃった
ちげーよ、デメリットがでかいから誰もやらないだけだよ
2023/10/21(土) 12:02:08.83ID:PFRfZnbl0
「"」はなんで「`"」じゃダメだったんだろう
2023/10/21(土) 12:31:59.43ID:Ls2E16c40
最近使い始めてどうしても意味がわからない事がありお教えて頂きたいのですが例を見ると二行目とか三行目の最初10個くらいスペース空けています
あれは必ず何個空けないといけないとか空けずに書くと弊害が起きるとか理由や意味があるからなってるんですよね?
空けずに左端から書くのがわかりやすいし書きやすいと思ったのですけどルールがあるならちゃんと知っておきたいと思って質問させて頂きましたサンプルなどを見てやっているのでV1です
よろしくお願いします
2023/10/21(土) 12:32:12.21ID:qkI01+t50
:= も同様の拘りなんだよな
何故かデファクトスタンダードに逆らってイキりたがる
= は曖昧だから:=と==だけにします、なら判る
= は既によく判らん用途に使ってるからとか基本設計がおかしい
2023/10/21(土) 12:39:38.67ID:MgetEplM0
>>670
独自つーかPowerShellに合わせただけだろ
ちょっと前に改行位置にいちゃもん付けてた人いたけど同じ人?

>>671
これもPowerShellに合わせた結果っぽいけど
PowerShellもエスケープの仕方色々あってperl式もできるけど正式には「`"」だな
更新の過程でそうなったのかもしれんけどPowerShellの歴史には詳しくないので分からん
AHKv2では「`"」になったな
2023/10/21(土) 12:42:29.00ID:uwWEvv0P0
v1の頃に決まった話になると、そんな小さいことに目くじら立てるどころじゃない気が
20年くらい前で他の同系統の言語も同じようなものとはいえツッコミどころが山盛りでは
2023/10/21(土) 12:47:14.39ID:MgetEplM0
>>672
基礎すぎてほぼスレ違いなんで「コーディング インデント」とかで検索して
ちなみにAHKはインデント必須な言語ではない
2023/10/21(土) 15:26:28.94ID:Ls2E16c40
>>676
レスありがとうございます
見やすくする為でAHKは必須では無い
じゃあ1個くらいで良いかな
どうもありがとうございました
2023/10/21(土) 21:30:29.25ID:9BoGHaTl0
見やすくというか
読みやすくというか
理解しやすくというか
2023/10/21(土) 23:29:27.11ID:Ls2E16c40
>>678
レスありがとうございます
どこからどこまでがどれか、みたいな事を見やすくして理解しやすくするって事ですよね
680名無しさん@お腹いっぱい。
垢版 |
2023/10/23(月) 03:03:06.70ID:WlJrDHiJ0
\\\\のエスケープ地獄は、たしかにちょっとつらい
なので ` でエスケープする妥当性はわかる
けど、JavaScript のように `` を文字列のリテラルとして使えるともっと嬉しかった
変数置換ができるなら更に嬉しい
(変数置換ができないとしても、' も " もエスケープなしで記述できるだけでも嬉しい)

AHK の無名関数は、JavaScript のように () => {} こうは書けず、() {} こう書く必要がある >>624
AHK は JavaScript を参考にしつつも、微妙に追随できていなくて、独自路線(しかもちょっと残念な)があるのが、たしかにちょっと残念に思う
個人的には、ここまで JavaScript を参考にしているなら、基本的に JavaScript と同じにして、
JavaScript + AHK 用の関数群という形にしてほしいと思う
v3 ではそうなるといいなと思う
2023/10/23(月) 08:16:22.70ID:YDc6e+fm0
> JavaScript + AHK 用の関数群
これってたしか日本の人がそういうの大分前に作ってたよね
ちょっと検索しても出なかったけどやめちゃったのか
2023/10/23(月) 21:54:32.87ID:9tna838Y0
v2公式でGUIにHTML/CSS/JSサポートしてくれたらいいのになぁ
683名無しさん@お腹いっぱい。
垢版 |
2023/10/24(火) 02:00:01.88ID:LXOelMg+0
ahkにキーボードマクロ機能ってあったりするのでしょうか?
具体的には、レノボ トラックポイントキーボードIIで、
起動時にFn+Escを自動で押したいのです
このキーボードでファンクションキーはデフォルトで機能キーが割り当てられていて、
ファンクションキーとして使うためには起動毎にファンクションロックしてやらないとダメなのを自動化したいのです
ベクターのキーボードマクロをいくつか試したのですが、
Fnキーみたいなキーボード個別の特殊キーに対応したのが見つけられません
ahkならキーコード拾えそうなので質問してみました
よろしくお願いいたします
684名無しさん@お腹いっぱい。
垢版 |
2023/10/24(火) 02:56:41.93ID:LXOelMg+0
>>683自己レス
どうやらこのFnキーはPCにはキーコードを発出しておらず、キーボード内で完結しているみたい
こりゃPC側で何やっても無理ですね
レノボに要望出すくらいかできることはなさそうです
お騒がせしました
685名無しさん@お腹いっぱい。
垢版 |
2023/10/24(火) 03:07:23.96ID:XK3z8D+O0
>>682
HTML を表示できるコンポーネントが使えたら便利そうだね
2023/10/24(火) 07:13:30.38ID:35rovyz10
Fnキーはどこもステルスだが
つーか使いにくいからFnキーとして置かなくても別キーとかでも良いのに、手前に陣取って邪魔なんだよな
2023/10/24(火) 08:38:38.26ID:Peo0Ada/0
Ctrlとかと誤爆しやすい位置にリマップ不可なFnなんて、悪意しか感じん
2023/10/24(火) 10:26:10.08ID:Hn9xTC4v0
ノートPCはディスプレイとキーボードを外付けして使うのが正解
2023/10/24(火) 10:43:45.23ID:hLY2TQAp0
ノートって今は中途半端すぎて売り上げ落ちているらしいな
スマホとかUSBメモリとかクラウドとか理由はいろいろあるんだろうけど
2023/10/24(火) 11:02:12.95ID:Hn9xTC4v0
うちの会社はフリーアドレス化したのでノートじゃないと無理だな
キーボード繋がせて欲しい
アプリケーションキーが存在しないとか意味判らん
2023/10/24(火) 11:42:22.74ID:hLY2TQAp0
AppsKeyは右クリが壊れた時に使ってたわ
あの時はアプリによっては右クリでしか呼び出せないメニューがあることに気づいいて
UI設計の大切さを学んだわ
2023/10/24(火) 12:35:47.02ID:utY4MNcR0
ThinkPadキーボード、Fnキー、Appsキーの話になってるので質問させて下さい
キーボードをThinkPadキーボードに変えたらやらないといけない事が出来たので何かアドバイスお願いします

ThinkPadキーボードは旧型のUSB接続
今まではAppsキーに二回押したらEscを割り当てていました(サンプルコード集参照)
ThinkPadキーボードに右クリボタンがありAppsキーは無いので記述をRbuttonに書き換え
これで以前と同じ使い心地になる…と思ったらそうではありませんでした
例えばファイルやメールにフォーカスがある時、Appsキーならカーソルがどこにあってもそフォーカスの物に右クリメニューが出ますが右ボタンだとカーソルのある場所の右クリメニューが出る
それは当たり前ですが、その使い方を望んではおらず
じゃあRbuttonをAppsキーにすればとも思いましたが、それだとマウス自体の右ボタンの挙動も変わってしまう
それも望んでいない
AHKにはRbuttonとして認識されているのでどうにも出来ないでしょうか?

それと真ん中のボタン、押しながらトラックポイントを動かせばスクロールする機能ですがこれにも何か別の機能とかを割り当てられないかとKey historyを見ても何も出ていません
Fnと同様で他に使う事は無理でしょうか?

Win11 Pro
AHK v1.1.37.01
2023/10/24(火) 12:41:50.16ID:acf7AARQ0
>>690
BTキーボードくらい繋がるでしょ
694名無しさん@お腹いっぱい。
垢版 |
2023/10/24(火) 14:02:16.64ID:7EB3AWV+0
キーAを押しながら、キーBを押すって動作をスクリプトに書いた場合、
Aを押した状態でB以外の入力を受け付けなくなるのって回避方法ある?
2023/10/25(水) 00:46:51.16ID:xHwpED+J0
>>685
あった
けどtridentつかってるw
https://github.com/G33kDude/Neutron.ahk
696名無しさん@お腹いっぱい。
垢版 |
2023/10/25(水) 07:18:48.75ID:0tfdF69F0
>>694
キーAとキーBは何キーですか?
697名無しさん@お腹いっぱい。
垢版 |
2023/10/25(水) 20:18:18.98ID:BMAQsHQh0
質問です。Potplayerをバックグラウンドで操作したいのですが以下のスクリプトでは動作しません。アドバイスお願いします。 v1.11.11

!enter::
DetectHiddenWindows, On
ControlSend, ahk_class, {space}, ahk_class PotPlayer
return
2023/10/26(木) 20:39:28.63ID:stdJKV+p0
その第一引数はなんなの
2023/10/27(金) 17:11:32.49ID:W6kx2B0a0
cmdでif必要なときはbatかahkで書いてたけど、|使って論理演算子作れるの発見して驚愕してる
wikiのRunに書いてほしかった…
2023/10/27(金) 18:13:18.72ID:Gr5vROVq0
これと、
Run / RunWait - Syntax & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/lib/Run.htm#Return_Value
これの組み合わせってこと?
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm#Operators
2023/10/28(土) 04:22:30.30ID:MaaLhlYz0
|単体のパイプだとわからないけど、&や&&や||でコマンドライン1行に複数コマンドを書く話?
それならAutoHotKeyじゃなくてWindowsのcmdの解説だからwikiに書いてないのでは
702名無しさん@お腹いっぱい。
垢版 |
2023/10/28(土) 05:36:10.86ID:JXkBTMwt0
>>699
もう少しわかりやすく書いてほしい
2023/10/28(土) 11:18:23.74ID:Ti0/3LdE0
>>701
そうそう
findstrやgrepして分岐させるの一行で書けるのはでかい
もっと早く知りたかったぜ…
2023/10/29(日) 14:07:13.81ID:Pb3Qv4nh0
Sendで上下左右を指定すると通常の動作で一呼吸置いてから連打しますが、最初から連打(加速)させる方法ありますか?
2023/10/29(日) 14:17:04.36ID:WbJiFF2/0
お祈りが足りていないと思われます
706697
垢版 |
2023/10/29(日) 18:02:57.55ID:lxd/WQLd0
>>698
前身のKimplayerでは、この部分にahk_parentと書けば動いたので、試行錯誤の名残です。省略してもahk_parentと書いても動作しません。
2023/10/30(月) 11:09:53.57ID:AK80qRlt0
セットアップウィザードだとAHKが効かないんだけど、これってそんな低レイヤなやつなの?
(例:サクラエディタのインストーラ)
2023/10/30(月) 20:33:09.44ID:q/qv9w0o0
ブラウザ上の共有ボタン?から開かれる文字の不要部分を削除して開く様にって出来ますか?
例えばニコ生でタイトル横のTwitterの鳥をクリックすると別タブ(デフォはウインドウかポップアップだったっけ?)でそのページのタイトルやURLが入ったツイート画面が開かれます
URL自体がそれを表してるのでURLから毎回同じ不要な部分(文字)を削除して開かれれば可能という事になります

ニコニコニュース実況
で鳥をクリックすると
https://twitter.com/intent/tweet?url=https%3A%2F%2Flive.nicovideo.jp%2Fwatch%2Flv343242011%3Fref%3Dsharetw_large&text=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E5%AE%9F%E6%B3%81%20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD&hashtags=%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&original_referer=https://live.nicovideo.jp/watch/lv343242011?kind=focus_onair
がアドレスバーに入った物が開きます(アドレスバーでは日本語の所は日本語)
「 / ニコ生視聴中 」と「?ref=sharetw_large」の二ヶ所を毎回消しているので自動で消したい
「 / ニコ生視聴中 」の部分は「20%2F%20%E3%83%8B%E3%82%B3%E7%94%9F%E8%A6%96%E8%81%B4%E4%B8%AD」かな
やり方ありましたらどうかご教授よろしくお願いします
https://twitter.com/thejimwatkins
2023/10/30(月) 20:47:48.43ID:qNduaTef0
>>708
それは AHK にやらさせるよりはブラウザの拡張とかにやらせる方がエエと思うで。
例えば Chrome系なら Redirector とかで正規表現で処理して文字列の置換、変換を
やらせるとか。
2023/10/31(火) 01:02:48.10ID:VQwByWJT0
ボッタクリ価格じゃなければほしかった
3kくらいの安物kbでどっかパクってくれ
PFU「HHKB Studio」の店頭展示スタート、マウスやジェスチャー機能を搭載 - AKIBA PC Hotline!
https://akiba-pc.watch.impress.co.jp/docs/news/news/1542840.html
https://asset.watch.impress.co.jp/img/ah/docs/1542/840/a3.jpg
2023/10/31(火) 02:06:18.28ID:6Eky0BOu0
>>709
レスありがとうございます
そっちの方が使い方として合ってるんですね
調べてみます、ありがとうございました
2023/10/31(火) 07:56:28.30ID:ODQQeTIS0
>>706
コード見せられてもアプローチ間違いか文法ミスくらいしか指摘できないので
その試行錯誤を全部書いてもらった方がアドバイスしやすい

・キー割当を1キー(ファンクション系)にする
・プレイヤーのどのコントロールならショトカが効くか調べてそのクラス名をwindowspyで見る
・アクティブ状態でうまくいくか
・detecthiddenwindowなしでうまくいくか
・sendを試す
・ahk_proccessとか全部試す

予想はクラス名が間違い
2023/10/31(火) 18:42:02.72ID:y7iEy6x60
>>704
キーリピートの開始遅延時間の話なのでWindowsの設定を変更するか、AHKでホットキー押下時に連打するスクリプトを書いてください


>>706
結論だけ先に書くと

ControlFocus, , ahk_class PotPlayer
ControlSend, , {Space}, ahk_class PotPlayer

コントロールのフォーカスによってキー操作の挙動が変わるアプリの場合
ControlSendでコントロール名を指定していたとしてもフォーカスがあるコントロールのキー操作が優先されます
通常はウィンドウをアクティブにした際に、フォーカスはアプリ側でデフォルトコントロールにセットされ直されるので、大抵の場合は問題にはなりませんが
ウィンドウを非アクティブにした場合は、フォーカスは最後にセットされていたコントロールが保持したままになっています
よって、フォーカスをセットし直してやる必要がある場合があります


>>707
何がしたいのか分かりませんが普通に使えます
思い当たる要因があるとすれば、AHKの管理者権限の有無、アンチウイルスソフトの干渉などです
2023/10/31(火) 23:22:24.75ID:Y3UYTU1P0
>>713
管理者権限だったわ
UAC切ってるから大丈夫だと勘違いしてた
もうAHKはデフォで管理者権限で使うことにするわ
2023/11/01(水) 12:03:28.13ID:F+Xo6EIO0
タスクマネージャーも同じだった
普段何気なく使うツールでも権限レベル高いやつって意外とあるんだろうな
2023/11/01(水) 12:07:14.56ID:ByqGOUsx0
>>695
ライブラリ使わないとこうやって書くらしい

html =
(
<form id="form">
Name1: <input type="text" name="name1" id="name1" autofocus required><br>
Name2: <input type="text" name="name2" id="name2" required><br><br>
<input type="submit" id="submit" value="Submit">
</form>
)
gui, add, ActiveX, w300 h100 vWB, about:<!DOCTYPE html><meta http-equiv="X-UA-Compatible" content="IE=edge">
WB.document.write(html)
guicontrol, focus, WB

GetElem := ObjBindMethod(WB.document, "getElementById")
GetElem.Call("name1").focus()
gui, show

GetElem.Call("form").addEventListener("submit", Func("Submit"))
return

Submit() {
global GetElem
value1 := GetElem.Call("name1").value
value2 := GetElem.Call("name2").value
Gui, Destroy
MsgBox % "Name1: " . value1 . "`nName2: " . value2
}
717697
垢版 |
2023/11/01(水) 23:23:03.60ID:mN14R+DL0
>>712
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer


>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。

秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
718697
垢版 |
2023/11/01(水) 23:23:09.14ID:mN14R+DL0
>>712
返答ありがとうございます。https://www.autohotkey.com/boards/viewtopic.php?t=23992などを見たりして、ClassNNの項目を記入したり。
ControlSend,Afx:10000000:b:00010011:01900011:000000003,{Space},ahk_class PotPlayer
ControlSend,,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su1 AfxWnd140su2 AfxWnd140su3 AfxWnd140su4 AfxWnd140su5 AfxWnd140su6 AfxWnd140su7 AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,AfxWnd140su8,{Space},ahk_class PotPlayer
ControlSend,ahk_parent,{Space},ahk_class PotPlayer
>>713
なんと!数年来の夢が、今まさに私の目の前で、現実として起こっているではありませぬか。某サイトのControlSendの項目ばかり読んでいましたので、ControlFocusなるものあって、それが必要などとは、初心者には思いもよりませんでした。検索してもなかなか解決案が見出せず、半分諦め、そのまま数年が過ぎ、3年ぶりの5ch書き込みとなったわけです。端的で丁寧な解答ありがとうございました。

秋の頃
かの地にて
数年悩まされし問題解決す
われ うれしきやうれし
かれ すぐれしやすぐれし
ここ すばらしきやすばらし
2023/11/02(木) 13:04:33.36ID:Ak5m1K3y0
惰性で窓使いの憂鬱、yamy、のどかと長年使い続けてきたんだがAHKに移行したけど最高だなこれ
もっと早く使うんだった
なんとなくキーボードフィルタドライバが最強と思ってたけど別にそんなことなかったわ
2023/11/02(木) 19:09:53.60ID:sleiHkfU0
そうそう変なことは起きないけど、やっぱりのどかより安定性は落ちるだろう
2023/11/06(月) 18:08:04.59ID:/0Einrp10
>>713
ありがとうございます解決しました
思ったよりも複雑でした
; This script sends cursor arrow keys without an initial delay (or with customized delay)
; Alternative: HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response (needs reboot after change)
#Requires AutoHotkey v1.1.33
timeoutSec := 0.08 ; To repeat, the key must be held for this number of seconds
delay := 35 ; Delay (ms) after each keystroke sent

#UseHook
Up::
Down::
Left::
Right::
hk := A_ThisHotkey
SendEvent % key := "{" hk "}"
SetKeyDelay delay
KeyWait % hk, % "T" timeoutSec
If ErrorLevel ; Key was held
While GetKeyState(hk, "P")
SendEvent % key
Return
#UseHook Off
2023/11/09(木) 16:15:51.39ID:JiGuppz+0
出来なくて困っていること
=CLCLというソフトウェアでメニューを出すショートカットキーをautohotkeyのスクリプトに組み込みたいが
そのキーをautohotkeyで発生させても、CLCLがメニューを出してくれない、無反応

どうやればいいのか教えて戴けないでしょうか?

元々のやりたいこと。
=現在クリップボードに入っている内容と一つ前にクリップボードに入っていたものを並べて、一度にコピペで簡単にワンキーで出したい。
2023/11/09(木) 17:57:11.75ID:tg51kBeX0
できた
global PREV := Clipboard
OnClipboardChange("clichan")
Exit
a::
try Menu, m, DeleteAll
Menu, m, Add, % shoten(Clipboard), exec
Menu, m, Add, % shoten(PREV), exec
Menu, m, Show
Return
exec() {
MsgBox, % A_ThisMenuItemPos = 1 ? Clipboard : PREV
}
shoten(s) {
Return, RegExReplace(s, "s)^.{20}\K.+$", "…")
}
clichan() {
static tmp := Clipboard
PREV := tmp
tmp := Clipboard
}
2023/11/12(日) 01:04:15.97ID:kQQD0v9s0
キーに割り当てた1回押しのスクリプトが動作しないんだけど原因わかりませんか?
例えばこれでr長押しでctrl+rは入力されるんだけどr短押しは何も入力されない事になってる
r::
KeyWait, r
If (A_TimeSinceThisHotkey < 500)
{
Send, r
}
Else
{
Send, ^r
}
return


シンプルにこれでもr押しても何も入力されてない
r::
Send, r
return


こっちはr押すとちゃんとtが押される
r::
Send, t
return
2023/11/12(日) 01:27:22.14ID:KS4GMiu40
>>724
はい、サンプル・・・というか、これ使えば良いんだよ
サンプルコード集 - AutoHotkey Wiki
https://ahkwiki.net/SampleCodes
1.1 1つのキーに3種類以上の動作割り当て
2023/11/12(日) 02:24:03.58ID:kQQD0v9s0
>>725
ありがとうございます
理屈はよくわからないけど#UseHookを付けたら今までのもちゃんとr → rが動作するようになりました
2023/11/12(日) 04:00:38.94ID:J2mV0aOi0
>>726
Send, rがこのホットキーr::自身を押したことになってたのが原因
#UseHookを書くとそれを阻止できる
2023/11/12(日) 12:41:38.94ID:vUMDSFHH0
おもろいソフト。msdoc見てもdllcall書けない人向けかな
https://ramensoftware.com/winapiexec
729名無しさん@お腹いっぱい。
垢版 |
2023/11/13(月) 04:41:07.39ID:P7W13EFk0
AHK以外からちょっとwinapiを使いたい場合等にも便利そうだね
2023/11/13(月) 11:12:55.08ID:LViqGPzi0
スリープさせたい時とか、exeと引数では書けなくてdllにパラメータ渡さないといけない
そういうことをするプログラムを書いてコンパイルしてもいいけど、スクリプト的に書けた方が楽
2023/11/14(火) 00:13:36.65ID:hYjyzviz0
>>730
それもうAHKでやる必要ある?w
dllcall好きに書けるのいいなー
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況