X



AutoHotkey スレッド part28
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 (ワッチョイ aef9-dJm7)
垢版 |
2020/04/03(金) 18:35:06.00ID:/YRSlUCD0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

■配布元
http://ahkscript.org/download/

■前スレ
AutoHotkey スレッド part27
http://egg.5ch.net/test/read.cgi/software/1555770773/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
0003名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x)
垢版 |
2020/04/05(日) 12:03:16.10ID:GWmWDwN30
Include先も含め、AutoHotkey.ahkに関係するホットキー全体で
変数を共有するためには、その都度IniReadするしかないですか?
グローバル変数的な何かはないのかなと。

可能なら、AutoHotkey.ahkからのInclude先AHKファイルで定義した変数を共有したいのですが。

下のような構成で、bを押したときにaaAAaaと表示させたい

[AutoHotkey.ahk]
#Include a.ahk
#Include b.ahk
Return

[a.ahk]
AAA := "aaAAaa"
a1::Return
a2::Return

[b.ahk]
b::MsgBox, % AAA
0005名無しさん@お腹いっぱい。 (ワッチョイW 25e5-HXgt)
垢版 |
2020/04/05(日) 15:14:23.10ID:fo7yX2Dr0
その状態でAutoHotkey.ahkを動かす分にはいける
[AutoHotkey.ahk]
AAA := "aaAAaa"
a1::Return
a2::Return
b::MsgBox, % AAA
Return
includeは全てAutoHotkey.ahkとして展開されるので↑と同義になるから

ただしaとbのincludeを逆にしたらautoexrcuteが働かない
includeの位置は要注意
[AutoHotkey.ahk]
b::MsgBox, % AAA
AAA := "aaAAaa"
a1::Return
a2::Return
Return

あと当然だが a.ahk / b.ahk を単体起動した時はAutoHotkey.ahkから起動した時のようには動作しない
0006名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x)
垢版 |
2020/04/05(日) 16:49:19.64ID:GWmWDwN30
>>5
わかりました、ありがとうございます。
Includeは内容を展開しているだけだったのですね。
まずInclude元でAutoexecuteが開始し、Includeがあればその先のReturnまでAutoexecuteされ、
またInclude元に戻って、そのInclude元のReturnまではAutoexecuteされるものだと思っておりました。

自分のスクリプト郡は、Include先でReturnがあったためにそこでAutoexecuteが終わってしまっていた訳ですね。
0007名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x)
垢版 |
2020/04/05(日) 16:49:56.54ID:GWmWDwN30
ところで以下ような感じに、ファイルごとに役割を分け、
またそれぞれのファイル内でしか使わない変数はそのファイル内に収めておきたいのですが、
その方法はありますでしょうか?(下の構成ではInputA.ahkの2行目でAutoexecuteが終わってしまいますよね。)

あまり美しくないですが、AutoHotkey.ahkの先頭にVariables.ahkのようなものをIncludeして、そこで変数リストを作るとかしかないですかね?

[AutoHotkey.ahk]
#Include InputA.ahk
#Include InputB.ahk
0008名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x)
垢版 |
2020/04/05(日) 16:50:06.91ID:GWmWDwN30
[InputA.ahk]
textA := "A"
a::MsgBox, % textA
d::MsgBox, % (textA . "D")

[InputB.ahk]
textB := "B"
b::MsgBox, % textB
c::MsgBox, % (textB . "C")
0010名無しさん@お腹いっぱい。 (ワッチョイ 25e5-4JbH)
垢版 |
2020/04/05(日) 18:08:01.88ID:fo7yX2Dr0
イニシャライズを各AHK内で完結させたいならsubかfunctionにしてcall
ただし全体のグローバル変数であるという事実は変わらんが

エラった時のpastbin AHKのハイライトもあるのね
https://pastebin.com/dkUfkDTj

ただこれだと一時的に#includeをコメントアウトで外したいときにautoexecuteの
手直しも必要になるので islabel() isfunc() を入れたほうがいいかも
0011名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x)
垢版 |
2020/04/06(月) 01:59:36.99ID:QgAFECbT0
>>10
なるほど確かにこれなら実現できますね!
ありがとうございました、とても勉強になりました

ところで下のようにしてみたのですが、#Include では変数が使えないみたいですね。
何かいい案はないでしょうか?

というのも、実際は10以上のファイルがあるので、ダラダラ書くよりLoopで回したいものでして・・・

https://pastebin.com/g2Gc1cDU
0013名無しさん@お腹いっぱい。 (ワッチョイ e5b1-mnXZ)
垢版 |
2020/04/06(月) 04:21:20.13ID:8dTlIF+30
>>11
Includeするahk内で更にInclude出来るはずだぞ(その内容は「#Include 〜.ahk」だけでも良い)
だからメインahk(AutoHotkey.ahk)内でのInclude用ahkの名前は固定しといて
メインahkでそのahkファイルを書き換えすれば手直しは要らなくなると思う

例として、メインahkにIncludeするファイル名を「Include_ahk.ahk」とし

Include_ahk.ahk内は
-----------------------------------
#Include InputA.ahk
#Include InputB.ahk
-----------------------------------

↑の2行はメインahkのautoexecute内で検索→名前取得→書き込み処理を実行して
この処理の後に「#Include Include_ahk.ahk」を記述する

拙い説明 & 出来なかったらスマヌ
もしアレだったらMGLのスクリプトが参考になると思う
0015名無しさん@お腹いっぱい。 (ワンミングク MMa3-YctG)
垢版 |
2020/04/06(月) 10:48:05.12ID:Tm/x8Nf+M
https://www.autohotkey.com/docs/commands/_Include.htm
マニュアル読み直してたらv1.1.28以降はErrorlevelとコマンドライン文字列以外のすべての組み込み変数が有効とあるね
Loop,Filesのローカル組み込み変数はどうなんだろ
もし使えるなら↓みたいにできるのかも(出先からのなので試してはいない)
#include %A_SprictDir%
Loop, Files, %A_SprictDir%\*.ahk, F
If (A_LoopFileFullPath != A_SprictFullPath)
#include %A_LoopFileName%
0016名無しさん@お腹いっぱい。 (ラクッペペ MM4b-j0VC)
垢版 |
2020/04/07(火) 09:25:32.40ID:s8mR46Q4M
↓以下テンプレ(微修正)
----------------------------

!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
↑スレ立てする時は3行にして下さい

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

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

■日本語解説等
AutoHotkey Wik
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/
0017名無しさん@お腹いっぱい。 (ラクッペペ MM4b-j0VC)
垢版 |
2020/04/07(火) 09:26:20.67ID:s8mR46Q4M
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall)は最新Verで動作しないものがあり、その場合はスクリプトの修正が必用です。

旧版のAHK1.0との変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
https://www.autohotkey.com/docs/AHKL_Features.htm
http://ahkwiki.net/Addition_L

※新規利用者には最新版を推奨しますが、AHK1.0(2009年9月までのVer)の利用者はAHK1.1への移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方が最新AHK対応版(MouseGestureL.ahk)を配布しているのでそれを利用するのもありです。
https://hp.vector.co.jp/authors/VA018351/mglahk.html

※ACC.ahk(旧版用)とCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。
https://ux.getuploader.com/autohotkeyl/download/24/ACC%2BCOM.zip
※Unicode版のACC.ahkは下記(AccInfoViewer.ahk付き)またはフォーラムから入手してください。
https://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip

■質問に際して
OSの種類(7/8/10)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。

5chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
0018名無しさん@お腹いっぱい。 (ラクッペペ MM4b-j0VC)
垢版 |
2020/04/07(火) 09:44:35.19ID:ni8KzYV1M
以下FAQ等

■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHK1.1)

Q2:初めて使うけどどれを使えばいいの?
A2:AHK1.1のユニコード版を推奨。
  旧流行らせるページの配布物をそのまま使う場合はAHK1.0を利用する事。
  64ビットOSでAHK1.1、32ビット版の使用は制約が多いので64ビット版を強く推奨。

■リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。

  例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
  F12::F13
  Changekeyを起動する。( https://forest.watch.impress.co.jp/library/software/changekey/ )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。
0019名無しさん@お腹いっぱい。 (ラクッペペ MM4b-j0VC)
垢版 |
2020/04/07(火) 09:45:55.32ID:ni8KzYV1M
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
  これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
  ^1::Send, {Esc}

Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
  例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
  sc07B & I::Send, {Blind}{Up}
  sc07B & K::Send, {Blind}{Down}
  sc07B & J::Send, {Blind}{Left}
  sc07B & L::Send, {Blind}{Right}

Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
  #UseHookで全部にキーボードフックを適応する方法でも可。

Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。

Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
  × Joy1::Esc
  ○ Joy1::Send, {Esc}

Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
0020名無しさん@お腹いっぱい。 (ラクッペペ MM4b-j0VC)
垢版 |
2020/04/07(火) 09:46:33.37ID:ni8KzYV1M
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。

Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
  ○AHKが原因の場合
  AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
  一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
  しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
  物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
   例) ^W::Send, {w 30}
  これを回避するためには、以下の方法をとればよい:
  ・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
  ・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
  ・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
   #HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
  なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
  発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。

  ○AHK以外が原因の場合
  環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
  ・Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)など他多数
  ・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
0022名無しさん@お腹いっぱい。 (ワッチョイ c676-Blqg)
垢版 |
2020/04/08(水) 01:27:19.91ID:2MlwBg4U0
皆さんありがとうございます。

>>12
今回は、関数に落とし込まない方針で行きます。

>>13
つまり、↑のPastebinで貼ったコードにあるincludeFilesはInclude_ahk.ahkの記述内容から取得して、各ahkの初期化セクションへGoSub
その後Include_ahk.ahk自体を読み込むということですか?
記述内容から読み出す方法がわからないので勉強してきます。

それから、MGLのスクリプトは現状読めない+あまり複雑にはしたくないので、もしかしたら現状のままメインahkで2箇所を修正する方針でいくかもしれません。

>>15
読みました。
Include指令ではLoop系の組み込み変数は使用できないのではないですか?
工夫して、%A_LoopFileName%の部分を書き換えられれば良いと思うのですが、いかがでしょうか。これは難しいですか?
0023名無しさん@お腹いっぱい。 (ワッチョイ 9f3e-kpEi)
垢版 |
2020/04/08(水) 19:25:50.63ID:hVpKLzMw0
ジョイスティックの傾きを
GetKeyState, X, JoyX, P
で取得しようとしても、「49.999237」の値しか取得できない。
だけど、autohotkeyのメニュー画面がアクティブの状態だと正常に取得できる。

他のウィンドウでも正常に取得できるようにするにはどうすればいいでしょうか
0026名無しさん@お腹いっぱい。 (ワッチョイ 9bd3-AglQ)
垢版 |
2020/04/08(水) 20:37:42.71ID:3Lm0oXeq0
>>25
ちなみに中央値は49.999237で合ってる
スティック左に倒したときは0.001526、右に倒した時は100.000000
環境というよりも何か根本的な勘違いじゃね
AHKの画面アクティブだけ動くってとこからして
0029名無しさん@お腹いっぱい。 (ワッチョイ 4703-zfCe)
垢版 |
2020/04/09(木) 19:08:11.55ID:IPYVjpWT0
F13+WASDなどでカーソルを動かせるようにしてみたけど、それ以外のキーを押すと
普通に文字が入力されてしまう。
たとえばEを押しても入力されないように無視することはできない?
0031名無しさん@お腹いっぱい。 (ガックシ 068e-zfCe)
垢版 |
2020/04/10(金) 00:26:31.34ID:BgFZovgl6
>>29
実際に自分で使っている方法(もっといい方法はあると思うけど)
https://pastebin.com/R5KhbMvt
0035名無しさん@お腹いっぱい。 (ワッチョイ c676-zfCe)
垢版 |
2020/04/13(月) 00:59:19.32ID:nrV1kuRV0
OneNote2016でSend, {Up}とSend, {Down}が動作しない問題が
あっさり解決したから一応共有しとく
OS: Windows 10
AHK Version: 1.1.32.00

#If, WinActive("ahk_exe ONENOTE.EXE")
vk1D & i::ControlSend, OneNote::DocumentCanvas1, {Up}
vk1D & k::ControlSend, OneNote::DocumentCanvas1, {Down}
#If
0037名無しさん@お腹いっぱい。 (ワッチョイ c676-zfCe)
垢版 |
2020/04/13(月) 12:34:34.31ID:nrV1kuRV0
>>36
こっちの環境では動作しないみたい
ネットにはいろいろ情報転がってたけど、おま環だらけだったし、
>>35 に書いたやつも俺環かもしれない

ついでに >>35 補足: Blindつけ忘れた
0038名無しさん@お腹いっぱい。 (ワッチョイ 8e76-q+nc)
垢版 |
2020/04/14(火) 02:46:49.68ID:pKp7OSAA0
ahk外部の話になっちゃうんだけど
タイトルバーに .py が含まれていたら
Python辞書を指定して定型文ツールを起動みたいなことやりたいんだけど
辞書指定して起動できる定型文貼り付けツールみたいのないかな
その部分までahkで真面目に実装すると大作になりそうなんでちょっとめんどい
0039名無しさん@お腹いっぱい。 (ワッチョイW f7e5-Y7bu)
垢版 |
2020/04/14(火) 08:18:24.79ID:dRMATM1W0
素直に言語補完やスニペット機能のあるエディタ使うのがいいとおもうが
タイトルバー .py ってことはこういうとこに貼る断片コードじゃなくて
ちゃんとファイルとしての作成されてるpythonスプリクトなんだろうし
0040名無しさん@お腹いっぱい。 (ワッチョイ 579b-xa8R)
垢版 |
2020/04/17(金) 22:43:44.52ID:NUam5qRj0
winキー押下のときスクロール量を増加、
ctrl+winキーでさらにスクロール量増加、という処理をしたいです。
winキーをF13にしているんですが、ctrlがたまに抜けてwebブラウザ見てるときとかに
ズームになってしまいます。。。宜しくお願いいたします。

; スクロール量増加
F13 & WheelUp::
If GetKeyState("Ctrl", "P") ;ctrlが押されているか?の確認
{
Send, {WheelUp 20} ;ctrl含めた3つ同時押しの処理
}
Else
{
MouseClick,WheelUp,,,5 ;2つ同時押しの処理
}
Return

F13 & WheelDown::
If GetKeyState("Ctrl", "P") ;ctrlが押されているか?の確認
{
Send, {WheelDown 20} ;ctrl含めた3つ同時押しの処理
}
Else
{
MouseClick,WheelDown,,,5 ;2つ同時押しの処理
}
Return
0041名無しさん@お腹いっぱい。 (ワッチョイ ff76-xa8R)
垢版 |
2020/04/21(火) 02:38:03.98ID:YUMRQewr0
>>40
その書き方だと1回目は#WheelUpだけど2回目からは^#WheelUpになってるんじゃないかな?
と思っていろいろ試したけど、うまくいかなかった。
下のコードも試したけど、WheelDownはGetKeyStateが効かないらしく失敗。
(KeyHistory見たら10〜30ms押下状態維持してる感じだったし、このWhileでいけるんじゃないかと思った)
もしかしたら、SetTimerの10ms刻みくらいでいけるかも?
https://pastebin.com/wmnY8P5R
なんならChromeのズーム周りの挙動は不審なのか?
#WheelUp::Send, {WheelUp 5}
でもたまにズームするし、なんだろね
結局よくわからなかったので、他の有識者に任せます
ごめんなさい
0042名無しさん@お腹いっぱい。 (ワッチョイW ffdc-AOfM)
垢版 |
2020/04/21(火) 09:58:46.04ID:UBVe/E0a0
GetKeyStateは押下情報見てるだけで横取りしてるわけじゃなかったような
ctrl+wheelの挙動にしたくないならブラウザがCtrl押下を検知しないよう
Hotkeyかなんかで殺しとかなきゃいかんのでは
0043名無しさん@お腹いっぱい。 (アウアウオー Sa2e-lSy1)
垢版 |
2020/04/25(土) 02:22:43.58ID:MwuvcNJDa
ウィンドウの位置を配置するWINキー+↑↓←→をWINキー+IKJLにしたくていろいろやったんですけど、どうしても安定して同じように動かないです。
同じようなことやってる人がいたらサンプル見せてもらえませんか?
0048名無しさん@お腹いっぱい。 (ワッチョイ acf0-1Gce)
垢版 |
2020/04/25(土) 15:27:49.21ID:DF0bAaYE0
>>47
今もできるのか確認してないけど試してみたら?他のWinキー使ったショートカットもなくなってもいいなら
ttps://sites.google.com/site/autohotkeyjp/reference/misc/Override
>Win+L および Win+U を除き、ウィンドウズのホットキーはレジストリを以下のように書き換えることで無効化出来る。
0049名無しさん@お腹いっぱい。 (ワッチョイ 2c08-1Gce)
垢版 |
2020/04/25(土) 16:23:34.31ID:2ju+Mg1a0
>>48
>Win+L および Win+U を除き
とある時点で論外だろ
なんでこう無意味なレスするんだか

>>45のやり方は一応Win+Lも無効化出来るが標準のWinキーショートカット全て使えなくなるから
使いたいコマンドは全てF13で登録し直さなくてはならない

>>43
そもそもWinキーを修飾キーにしなきゃいけない必要あるのか?
IKJLと組み合わせるならAppsKeyや変換キーなどを修飾代わりに使えばそういう煩わしさも無く簡単に出来る
0052名無しさん@お腹いっぱい。 (ワッチョイ 3876-Btmo)
垢版 |
2020/04/26(日) 16:38:48.35ID:qSNpI2+j0
ポータビリティ重視してる身としてはレジストリ書き換えは論外だから、
その前提で工夫するだろうな
0054名無しさん@お腹いっぱい。 (ワッチョイW d75a-lSy1)
垢版 |
2020/04/26(日) 22:44:45.23ID:2bxqh/0L0
チェンジキーアプリで、Winキー を 0x0064 にリマップし
F13 & i::Send {Lwin down}{Up}
F13 & k::Send {Lwin down}{Down}
F13 & l::Send {Lwin down}{Right}
F13 & j::Send {Lwin down}{Left}
で画面の移動できるんだけど、WINキーが押しっぱなし状態になって解除されない。。
0059名無しさん@お腹いっぱい。 (ワッチョイ a66f-1Gce)
垢版 |
2020/04/27(月) 00:26:18.37ID:9dSvcxyQ0
>>57
移動中とか意味不明
Win10なら最大化最小化などのショートカットだろそれ

で、何がダメなのか知らんが、F13を離したときに Send, {Lwin Up} するようにすりゃ良いんじゃねえの
色々と説明不足だしもう少し頭使え
0060名無しさん@お腹いっぱい。 (ワッチョイ 84b1-R0M4)
垢版 |
2020/04/27(月) 12:07:24.96ID:mi7Y/HPe0
windows8.1でキーボードやマウスからの入力を一時的に無効にしようと

^b::
blockinput,on
sleep, 5000
blockinput, off
return

のように書いても普通にキー入力を受け付けています。
この命令は効果がないのでしょうか?
0061名無しさん@お腹いっぱい。 (ワッチョイ a684-1Gce)
垢版 |
2020/04/27(月) 12:26:53.86ID:3hqSER8B0
>>60
Win10だけどうちでは管理者権限で実行すれば正常に動くぞ
普通の権限だと効果無し
ただしそのスクリプトだとCtrlを離す操作もブロックされてCtrl押されっぱなしになるから
5秒経過後blockinput, offにしたあと挙動おかしくなるからKeyWaitなどで離したあとBlockInput,onにした方が良いだろうな
0065名無しさん@お腹いっぱい。 (ラクッペペ MM34-rnxJ)
垢版 |
2020/04/27(月) 20:19:15.89ID:fuQIAEB8M
+WheelDown::SendInput d ; Shift + ホイール下回転

KeyHistory
h=Hook Hotkey
i=Ignored because it was generated by an AHK script
d=Down
u=Up

■正常(入力d)
  d 0.03 LShift    ← キー入力
  d 0.03 LShift    ← キーリピート
  d 0.03 LShift    ← キーリピート
h d 0.02 WheelDown ← キー入力(ホットキー開始)
i u 0.02 LShift    ← 修飾キー解除
i d 0.00 d       ← SendInput
i u 0.00 d       ← SendInput
i d 0.00 LShift    ← 修飾キー復元(ホットキー終了)

■すり抜け(入力D)
  d 0.03 LShift
  d 0.03 LShift
  d 0.03 LShift
h d 0.02 WheelDown
i u 0.02 LShift
  d 0.00 LShift ← すり抜け
i d 0.00 d
i u 0.00 d
i d 0.00 LShift
0066名無しさん@お腹いっぱい。 (ワッチョイ 7f76-x2cz)
垢版 |
2020/04/30(木) 02:55:18.35ID:P5SWOXvf0
%A_MyDocuments%\AutoHotkey\Lib\mylib.ahk
というファイルを作ると
#include <mylib>
で参照できるようになるというのはわかったんですが
環境変数などを設定して上記フォルダ以外の任意の検索パス(c:\src\ahk\libなど)を指定する方法はないですか?
0068名無しさん@お腹いっぱい。 (ワッチョイ df74-iPcU)
垢版 |
2020/05/03(日) 08:39:44.85ID:NG1wCXE/0
Ctrl + Vを押した時に
短押しの場合 Ctrl + V
長押しの場合 wiindowsボタン + Ctrl + V
という機能をつけようとしたんだけどうまくいかなかった
修飾キーの扱いがわるいのか、keywaitのところがおかしいのか

https://i.imgur.com/hZ6dEB9.jpg

#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする

Ctrl & v::
KeyWait,Control
KeyWait,v,T0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
send, <^v ;ここに任意のコマンド 長押し
KeyWait,Control
KeyWait,v
Return
}
KeyWait,Control
KeyWait,v,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
send, ^#v ;ここに任意のコマンド 1度押し
KeyWait,Control
KeyWait,v
Return
}
0069名無しさん@お腹いっぱい。 (ワッチョイ bf91-ts7H)
垢版 |
2020/05/03(日) 09:46:08.74ID:BcgnsImu0
>>68
wikiのサンプルコードを見るのは良いけど一行ずつの意味を正しく理解して無駄を省けよ
長押しor短押し判定のみなら KeyWait,v,D T0.2 の部分は要らねえだろ
あと #(Winキー) 付け加える位置も間違ってるし


^v::
KeyWait,v,T 0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
msgbox, Ctrl+Vを長押ししました ;ここに任意のコマンド 長押し
KeyWait,Ctrl
Return
}
msgbox, Ctrl+Vを短く押しました ;ここに任意のコマンド 1度押し
KeyWait,Ctrl
Return
0071名無しさん@お腹いっぱい。 (ワッチョイ bf91-ts7H)
垢版 |
2020/05/03(日) 10:23:02.14ID:BcgnsImu0
>>70
どこから0.5なんて数字が出て来たんだ?
別に0.3秒判定でも操作的には全然きつく無いんだが
普通の短押しってせいぜい100ms〜150msくらいだしな
事実>>69のスクリプトでも普通に押し分けられる
仮に0.5秒以上にしたいなら KeyWait,v,T 0.5 にすりゃいいだけだ
0072名無しさん@お腹いっぱい。 (ワッチョイ df74-iPcU)
垢版 |
2020/05/03(日) 14:38:23.16ID:NG1wCXE/0
>>69
本当は
短押しの場合 Ctrl + C
二回押しの場合 wiindowsボタン + Ctrl + V
長押しの場合 Ctrl + V

としようと思ったんだけど(マウスのボタンに登録して1つのボタンで済ませるため)
Ctrl + Cまで混ぜると使い勝手悪くなりそうだから書くのをちょっと迷ってたんだ

ともあれ書いてくれたものを参考にしたら動きました、ありがとうございます
0076名無しさん@お腹いっぱい。 (ワッチョイ 2fb1-gIrT)
垢版 |
2020/05/06(水) 10:08:51.61ID:b7Jl+TQP0
言語仕様酷すぎ
SquirrelとかLuaとかまともなスクリプトエンジン使ったのがあるけど
I/O周りの処理のノウハウに一日の長があるからこっち使うしかないんだよなあ。
自分で作ってみてもALT+F1が拾えないゲームが出て放棄した。
0078名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 16:54:41.85ID:E+fH0d4D0
たびたびお世話になってます。
LShift短押し(0.5秒以内とか)でSend,a
LShift長押しで本来の機能を持たせたく悪戦苦闘しています。
KeyWaitを軸に、GetKeyState,SetTimer、Loopなどを組み合わせtて試行錯誤しましたが歯が立ちませんでした。
特にKeyWaitが曲者?で、長押し中は定義から解放されず、本来のLShiftに回復してくれないのです。
詳しい方々、どうかよろしくお願いします。
0081名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 18:21:12.70ID:E+fH0d4D0
78です。
これなんかどうでしょう?
初めの数秒間は希望通りの動きをすることもあるのですが、
ほとんどの場合が、LShiftが押しっぱなしのような状態になります。
PCを再起動しないと、押しっぱなし状態が解除されなくなってしまうのです。
希望通りの動きをすることが数秒間あるのは、どういうことなんでしょうか?

LShift::
KeyWait, LShift, T0.5
If (ErrorLevel)
{
Send, {LShift Down}
KeyWait, LShift
Return
}
Else
{
Send, a
KeyWait, LShift
Return
}
0083名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 19:38:03.12ID:E+fH0d4D0
78=81です。
82さんのアドバイスに従い、下のように追記したところ上手く機能するようになりました。
ありがとうございました。

しかし、新たな問題が発覚しました。
LShiftを押してから0.5秒以内にマウスクリックやマウスホイール操作をすると、
押しっぱなしにもかかわらず、今度はLShiftが解除されてしまうのです。
LShiftから指を離し、再び押して0.5秒以上を待ってマウス操作を入れると問題ないのですが、
押し直したり厳密に0.5秒が経過するのを待つのはストレスなので、なんとかならないものでしょうか?
キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはないようです。
よろしくお願いします。

LShift::
KeyWait, LShift, T0.5
If (ErrorLevel)
{
Send, {LShift Down}
KeyWait, LShift
Send, {LShift Up}   ←追加
Return
}
Else
{
Send, i
KeyWait, LShift
Return
}
0084名無しさん@お腹いっぱい。 (ワッチョイ 8aba-oySJ)
垢版 |
2020/05/12(火) 20:22:49.26ID:dy+j9Q/G0
>>83
”0.5秒以上押したかどうか”で条件分岐してんだからそうなるの当たり前だろ
0.5秒以内は解除されるんじゃなくてまだShiftがSendされてないだけ
文句があるなら「押した長さ」で分岐するの止めろとしか言いようがない
根本的な使い方から見直しな
0085名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 20:53:49.84ID:E+fH0d4D0
78=81=83です。
キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはなく、
直ぐにキーボードでキーを送り直すだけですみます。
マウス操作でもキーを送るように設定しているので、マウス操作をやり直すだけで済ませられないかと考えています。
0086名無しさん@お腹いっぱい。 (ワッチョイW 5be5-pjQF)
垢版 |
2020/05/12(火) 20:55:52.67ID:qx8cyfXk0
根本的な動作要件としてモデファイアキーをチョン押しで何かアクションさせるのは辛いと思うんだ

例えば ~Lshift:: にしてshift 2回押し(ダブルクリック的な挙動)でトリガとかのほうが
キーオペレーションとしてはスムーズに行きそうな気がする
0087名無しさん@お腹いっぱい。 (ワッチョイ 8aba-oySJ)
垢版 |
2020/05/12(火) 21:03:33.72ID:dy+j9Q/G0
>>85
>キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはなく、

もはやお前の言ってる「解除」って言葉自体が意味不明
キーボードだろうが何だろうが>>83のスクリプトだと0.5秒以内はShiftは押されない
解除も糞も無い
とにかく根本的な操作方法から見直せって
0088名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 23:16:36.85ID:E+fH0d4D0
78=81=83=85です。
>>86
shift 2回押し(ダブルクリック的な挙動)を試してみました。
なかなか良い感じです。
ありがとうございました。
>>87
私の言う「解除」とは、おてつきの後、LShiftを押し直さなけけばならない状況になることです。
おてつきの後、LShiftを離して押し直さなくても、時間が経過したらマウス操作をやり直せばキー送信できるようにしたいのです。
何度も言いますが、キーボード送信ではそれが可能なんです。
よろしくお願いします。
0089名無しさん@お腹いっぱい。 (ワッチョイ 8aba-oySJ)
垢版 |
2020/05/12(火) 23:19:41.88ID:dy+j9Q/G0
>>88
全く意味不明
マウスクリックも一度0.5秒以内にクリックした後そのままshift押しっぱなしで0.5秒経過後にもう一度クリックすれば
Shift+クリックになる

>マウス操作をやり直せばキー送信できるようにしたい
とか突然言われても寝耳に水だしだったらそのスクリプトも書けよ
人に伝えるの下手糞過ぎ
0090名無しさん@お腹いっぱい。 (ワッチョイ bbb1-Geaw)
垢版 |
2020/05/12(火) 23:52:30.06ID:E+fH0d4D0
78=81=83=85=88です。
>>89
スクリプトは83で干した通りです。
その口ぶりから推測すると、83のスクリプトを貴殿のPCで検証したうえで、
私の言う「解除」の現象が確認できなかったということですね?
可能であれば、マウスホイールアップにアルファベットキーをバインドさせ、
「一度0.5秒以内にホイールアップした後そのままshift押しっぱなしで0.5秒経過後にもう一度ホイールアップ」
を試し、shift+アルファベットが送信されるか否かを検証してもらえないでしょうか?
お怒りのところ申し訳ありませんが、もう少々お付き合いくださいませ。
0091名無しさん@お腹いっぱい。 (ワッチョイ 6bba-gIXh)
垢版 |
2020/05/13(水) 00:21:01.64ID:4vArzUsR0
>>90
>マウスホイールアップにアルファベットキーをバインドさせ
だからこの部分のスクリプトも貼れよ
一度言った事何度も言わすな

>お怒りのところ申し訳ありませんが
舐めた口聞いてんなよ池沼
0094名無しさん@お腹いっぱい。 (ワッチョイ 7f6e-gIXh)
垢版 |
2020/05/13(水) 01:56:01.70ID:NTPhoH9M0
アプリケーションを起動させて、そのアプリケーションの中のClassNN AAAの表示を待ってからWinMoveを
実行したいのですが、ClassNN AAAの表示を待つ方法がわかりません。
どうすればいいでしょうか?

Run, %Run%, %Run_Dir%, , Run_PID
WinWait, ahk_pid %Run_PID%
0099名無しさん@お腹いっぱい。 (ワッチョイ d776-oW4g)
垢版 |
2020/05/20(水) 02:51:40.71ID:BnTHvFV20
AltTabでAltキーを離したら
選択したアプリの、画面中央にカーソルが移動する
スクリプトが上手く動きません、、
なにがおかしいのか教えていただきたいです、、

LAlt & Tab::AltTab

KeyWait, Alt
WinGetActiveStats, Title, Width, Height, X, Y
{
MouseMove, Width*.5, Height*.5
}
Return

よろしくお願い致します
0100名無しさん@お腹いっぱい。 (ワッチョイ ba09-crVl)
垢版 |
2020/05/20(水) 03:25:30.67ID:yFj7I/kv0
>>99
まず、
LAlt & Tab::AltTab
このコマンドはこの一行だけで完結してる
なのでそれ以降の行は一切実行されてないのが動作しない原因

そもそもAlt+Tabキーはそのまま使えるのでわざわざAHKで乗っ取らずに
~!tab::
を使いその後の「AltTab」の記述は削除してOK

KeyWait, Alt
の後に一応Sleepを100〜200msくらい入れといた方がいい
最小化したウィンドウなどは復元時に若干遅延があるので(OS設定にもよるけど)

WinGetActiveStats の後の { } は全く要らない
なぜMouseMoveを { } で囲ってるのか意味不明なので削除

以上、これで俺の環境では正常に動作確認済み
余談だがCoordModeの設定も忘れずに
0103名無しさん@お腹いっぱい。 (ワッチョイ 038c-I6Yg)
垢版 |
2020/05/24(日) 21:00:56.86ID:+8iPQVw+0
エディットボックスに書き込む際、そのウインドウを裏に隠れた状態のまま書き込みたいのです
C ont rol Text Setを使うとウインドウが裏にいるままで書き込めるのですが、再度のEnterを入れることが出来ません
Cont ro lSen dを使うとEnterも入れられるのですが、フォーカスされて表にウインドウが出てきてしまいます
どうしたらいいでしょうか
Send Messageの WM_ IME_ KEYDOWN を使ってもフォーカスされて表にでてきてしまいます

なぜか書き込み不可能になってしまうので、半角スペースを入れてます
0106名無しさん@お腹いっぱい。 (ワッチョイ 03e5-9InA)
垢版 |
2020/05/25(月) 00:06:11.71ID:iowxTiYJ0
あと ControlSend でフォーカスされるかどうかはアプリによるのでAHKの仕様ではない
少なくともメモ帳ではバックグラウンドのまま
ControlSend, Edit1,aaaaaa{Enter},ahk_class Notepad
とかできる
0108名無しさん@お腹いっぱい。 (ワッチョイ 0e76-lu6J)
垢版 |
2020/05/25(月) 08:58:05.06ID:yLxp81xy0
最悪、フォーカスが切り替わることをタイマーで監視して、
切り替わったら元のウィンドウをアクティベーションするのはいかが
0109名無しさん@お腹いっぱい。 (ワッチョイ 038c-I6Yg)
垢版 |
2020/05/25(月) 10:53:24.27ID:7XQahtaV0
>>108
他の仕事を別ウインドウでいろいろしてるときに裏ジョブとしていろいろ計算させてその結果をそのウインドウの
テキストボックスに入れていく、というのをしてるのですよね
そのときにテキストボックスに入力する度に表に出てくるのがとても鬱陶しいのですよ
0110名無しさん@お腹いっぱい。 (ワッチョイ 03e5-9InA)
垢版 |
2020/05/25(月) 11:58:43.92ID:iowxTiYJ0
ControlSetTextはテキストの内容をセットするコマンドなので改行ではない{Enter}が入らないのは道理
ControlSendがフォーカスを奪わないで{Enter}をセットできるのは>106で書いた通り

そこから先はアプリ側の仕様なので肝心のアプリの名前を隠されたまま相談されても話は進まないと思う
0113名無しさん@お腹いっぱい。 (バッミングク MM25-YHRm)
垢版 |
2020/05/30(土) 13:11:06.06ID:rRBwy6MaM
エクセルの文字を大きくするショートカットを作ったのですが、キーおしっぱにして
連続で文字を大きくしようとすると、たまにLAltがスカしてセルに「HFG」と
入力になっちゃいます。
スカ対策はやはりSleepしかないのでしょうか?確実に実行されるようにしたいのですが、
皆様はどういった対策をとられているのでしょうか。

#IfWinActive ahk_class XLMAIN
^+.::
BlockInput On
Send,{LAlt}
Sleep 150
Send,{H}
Send,{F}
Send,{G}
BlockInput Off
return
#IfWinActive
0117名無しさん@お腹いっぱい。 (ワッチョイ 93f5-moxv)
垢版 |
2020/05/31(日) 16:23:50.01ID:JzP83ijW0
速度求めるなら自分の好みでもう少し早くしても構わないと思う
50msはかなり余裕を見ての数値なので
デフォルトだとこの値が -1 で一瞬(1ms以下?)なのでまあ10ms以上なら比較的安定するんじゃないかな
環境にもよるけど
0118名無しさん@お腹いっぱい。 (オッペケ Sr8d-Le9r)
垢版 |
2020/06/01(月) 03:57:09.41ID:Dp86aIsgr
#IfWinActive

Space Up::Send, {Space}

Space & f::Send, {Right}

↑ここまでOK----------------------------------

#IfWinActive, ahk_exe Photoshop.exe

~Space & f::Send, {Right}

↑チルダが機能しません、、---------------------

Spaceを修飾キーとして使用します。
上記の通り、前半は問題なく意図した通りに、機能しているのですが、
Photoshopなどのプログラムに切り替わったときには
チルダを入れて、Spaceそのものの機能を活かしたいのですが
上手く機能しません、、どのように切り替えればよいでしょうか?
よろしくお願い致します。
0119名無しさん@お腹いっぱい。 (ワッチョイ b958-moxv)
垢版 |
2020/06/01(月) 10:57:06.00ID:Og6eBwhk0
>>118
#IfWinActive で分けても Space & f:: の影響(スペース単独で押し下げた時は入力されず離した時に入力になってしまう)は出るからなあ
プログラムごとに切り替えたいならホットキーのスクリプトファイルを普段使い用(a.ahk)とPhotoshop専用(b.ahk)に分けて、
普段はa.ahkを起動しておき、Photoshop.exeがアクティブになった時はb.ahkを起動してa.ahkを終了
Photoshop.exeが非アクティブになったらa.ahkを起動してb.ahkを終了とかしてスクリプトを完全に分離させた方が良いんじゃね
0122名無しさん@お腹いっぱい。 (ワッチョイ 25b1-1bbd)
垢版 |
2020/06/05(金) 01:35:20.82ID:q1s2UhOK0
前スレで

>35名無しさん@お腹いっぱい。 (ワッチョイ 2373-KxX0)2019/04/26(金) 21:43:07.89ID:YRa+WZQz0>>36>>73
数週間前からWheelをからめたスクリプトが急に動かなくなったりするようになったんだけどみんなはそんなことない?
Xbutton1 & Wheel downで動かすスクリプトがあるんだけどこれが急に動かなくなったりする
そうなったらリロードしてスクリプトを読み直すしかない
Windows10のアップデートのせいかなとか思ったんだけど原因がわからず

と書かれていましたが、自分はwin8.1だけど
同じ症状(AutoHotkeyがWheel関係のボタン、中ボタン、ティルト左右、ホイール回転、を突然認識しなくなる)で悩んでました。
原因を考えると、win8.1とwin10両方で症状が出ているのでOSが原因ではない。
更に

マウスを別メーカーにする→変わらない
ドライバをメーカー製からwin標準のものに換える→変わらない
USBポートを換える→変わらない

だったのですが、別のノートPCで試したところ問題は起きなくなりました。
こうなるとマザボが原因という線が一番濃いでしょうか?

ちなみに自分のマザボはAsusuのH97-PLUSですが同じ症状の人のOS、マザボを聞いてみたいです。
0123名無しさん@お腹いっぱい。 (ワッチョイ 5da6-y8Lg)
垢版 |
2020/06/05(金) 10:38:22.40ID:IyhGXBt90
アクティブでないウィンドウを操作するために
WinActivate, ahk_class xxxxx
Send,^a
sleep 50
WinActivate, ahk_class ooooo
みたいなやり方をしているのですが、ちょっとダサい気がするので、
ControlSendで書き換えたいと思っています。どう書き換えたらいいんでしょうか?
0127名無しさん@お腹いっぱい。 (ワッチョイ 5da6-y8Lg)
垢版 |
2020/06/05(金) 21:47:57.36ID:IyhGXBt90
>>124
やっぱりそうですか。マニュアル通りに書たはずなのに上手くいかないので、
書き方が何か違っているのかと思ってました。どうもありがとうございます。
0128名無しさん@お腹いっぱい。 (ワッチョイ 25b1-1bbd)
垢版 |
2020/06/05(金) 21:56:03.83ID:q1s2UhOK0
>>126
どんなスクリプトかは関係なく単純な

WheelUp::send, a

のように1行だけのスクリプトも機能しなくなります。
Wheel関係のボタン 中ボタン、ティルト左右、ホイール回転 が全てAutoHotkeyで認識されていない状態です。

つまりAutoHotkeyのウィンドウのメニュー View>Key history and script info
で 中ボタン、ティルト左右、ホイール回転 の履歴が表示されていない状態です。

AutoHotkeyでこれら認識されなくなった時もAutoHotkey以外では問題なく機能しています。
0131名無しさん@お腹いっぱい。 (ワッチョイW 890a-NwLg)
垢版 |
2020/06/06(土) 01:35:18.48ID:qI3Jyt1W0
>>130
おそらく別ソフトがマウスフックでイベントを乗っ取っている

AHKのフックはOSの機能であるWin32APIのSetWindowsHookEx(WH_MOUSE_LL、WH_KEYBOARD_LL)
他のソフトも利用可能でフックは後から設定したものから順次実行される(途中のフックで入力を破棄すれば次のフックは実行されない)

エレコム マウスアシスタント(原因?)
https://www.elecom.co.jp/support/download/peripheral/mouse/assistant/

> マウスを別メーカーにする→変わらない
> ドライバをメーカー製からwin標準のものに換える→変わらない
> USBポートを換える→変わらない

↑のアプリを終了させずに色々テストしたのでは?
終了しても駄目ならセーフモードで確認
0132122 (テトリス 25b1-1bbd)
垢版 |
2020/06/06(土) 06:22:40.93ID:1ptPVhcy00606
>>131
原因がわかりました。
WizMouseというフォーカスされていないウィンドウでも
マウスでスクロール可能にする常駐ソフトが原因でした。

普段使っているPC(Win8.1)で症状が出て、別PC(Win10)で症状が出なかったのは、
Win10では標準でWizMouseと同じ機能が装備されているのでWizMouseをインストールしていなかったからでした。
(さらに、今調べたらWin8.1もレジストリの設定変更だけでWinMouseと同じ事が出来ました。)

以前WizMouseも疑って、WizMouseの機能を使っている時、AutoHotkeyの
Wheel関係のボタンの認識を見たら問題なかったので完全にWizMouseの線は除外していました。

しかし今回>>131さんの指摘を受けて、マウスフックを使っているソフトを探したところ、WizMouseぐらいしかなかったので
AutoHotkeyがボタンを認識しなくなったタイミングでWizMouseを終了させたところ、一発で認識が戻りました。
ありがとうございました。
0135名無しさん@お腹いっぱい。 (ワッチョイ 3358-NjyN)
垢版 |
2020/06/14(日) 13:18:25.46ID:c3a5nMdB0
>>134
64bit版AHKで64bitアプリのメモ帳のステータスバー取得できるから64bitとかは関係無いな

;メモ帳の行と列を表示
StatusBarGetText, OutputVar, 2, ahk_exe notepad.exe
MsgBox, %OutputVar%
Return

上手く行かないのは管理者権限とか個々のアプリの仕様とかが原因だろ
0137名無しさん@お腹いっぱい。 (ワッチョイ 0e76-6BNC)
垢版 |
2020/06/20(土) 02:37:11.99ID:ubMWWC0s0
タスクマネージャとかその他一部のウィンドウでホットキーが効かないことがあるのはなぜ?

例えばvk1D & k::Send, {Blind}{Down}をしてもk押下判定になっているみたい
当然、MGLのジェスチャーも無反応だし
0141名無しさん@お腹いっぱい。 (ワッチョイ 0f56-V/rO)
垢版 |
2020/06/24(水) 20:14:50.15ID:rgAPk7/l0
>>140
色々と調べたけど出来ないんですよね…
Adobe Premiere Pro.exeの時のみSHIFT+ホイールスクロールを方向キーの左右に
~Lshift & WheelUp::
IfWinActive ahk_exe Adobe Premiere Pro.exe
{
Send,{ArrowLeft}
}

#IfWinActive, Adobe Premiere Pro.exe
~Lshift & WheelUp::Send,{ArrowLeft}
~Lshift & WheelDown::Send,{ArrowRight}
では動きません ご教授いただける方いれば教えて頂きたいです
0144名無しさん@お腹いっぱい。 (ワッチョイ 0f56-V/rO)
垢版 |
2020/06/24(水) 20:50:47.68ID:rgAPk7/l0
>>142-143
ありがとうございます
SetTitleMatchMode, 2
#IfWinActive, Adobe Premiere Pro
~Lshift & WheelUp::Send,{Left}
~Lshift & WheelDown::Send,{Right}
で行けました
ただ元々のスクロールも残って送信されるようで、Leftキーの移動と同時にスクロールもされてしまうのはしょうがないんですかね…
0145名無しさん@お腹いっぱい。 (ワッチョイ 4f58-NJGG)
垢版 |
2020/06/24(水) 21:01:02.97ID:lWY1xrDw0
>>144
他の記述が余計な邪魔してんじゃないか

~Lshift & WheelUp::Send,{Left}
~Lshift & WheelDown::Send,{Right}

少なくともこれだけのスクリプトなら試した限り元のスクロールは送信されてない

ちなみに余談だけど修飾キーはコンビネーションキーにする必要ない
+WheelUp:: でOK
0147名無しさん@お腹いっぱい。 (オッペケ Sra3-L9uE)
垢版 |
2020/06/25(木) 03:55:59.04ID:vvPDn5f2r
新規タブでエクスプローラを開くコマンドって作れないですかね…。
特定のソフトが起動しているが前面に無い場合、そのソフトをアクティブにしてキーを送信…とするコマンドを作りたくて
IfWinActive explorer.exe
{
Send, ^t
return
}
IfWinExist Run explorer.exe
WinActivate
return
とかやってみたのですが出来ず、
MouseGestureL.ahkでトラックボールに割り当ててみようとしたけど出来ず…
0149名無しさん@お腹いっぱい。 (ワッチョイ 4f58-NJGG)
垢版 |
2020/06/25(木) 05:45:08.99ID:C9QzYMGy0
>IfWinExist Run explorer.exe
これ合ってるのか?
俺には全く意味分からんのだが
俺が知らないだけならスマン

explorer.exeはウィンドウ無くても常駐してるから
ahk_class で指定した方が良い気がするが

そもそもエクスプローラーのタブは俺も知らない
Setsとやらはどうやら頓挫したみたいだが>>147の環境ではCtrl+t使えてんの?
0151名無しさん@お腹いっぱい。 (オッペケ Sra3-L9uE)
垢版 |
2020/06/25(木) 14:30:34.91ID:vvPDn5f2r
>>148
使用しているのはQTTabBarというタブ化ソフトです
>>149
そうですよね…そもそもExplorer.exeはずっといるので駄目ですかね
ahk_class explorer.exe でも動作しませんし、マイコンピュータを開く
Run "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
だとタブではなく新規ウィンドウで開いてしまうので…

やはり無理でしょうか
0152名無しさん@お腹いっぱい。 (ワッチョイ 4f58-NJGG)
垢版 |
2020/06/25(木) 15:11:54.48ID:C9QzYMGy0
>>151
ahk_classはちゃんとWindow Spyで確認しな
普通にActivateとかはできる
QTTabBarでCtrl+Tが使えてるなら当然Sendコマンドだって使えるだろう
「無理でしょうか」とか言い出す前にしっかりwiki見てウィンドウ指定の方法を勉強しな
色々と書き方を間違ってるだけだから
0153名無しさん@お腹いっぱい。 (ワッチョイ 0f56-V/rO)
垢版 |
2020/06/25(木) 20:47:23.92ID:u3QjMjKW0
>>152
ありがとうございます エクスプローラのclassはCabinetWClassなんですね…
wikiも
http://tsubolog.c-brains.jp/14/12/16-100000.php
http://blog.ayakix.com/2009/07/autohotkey.html
この辺りのページも参考にしているのですが一行に出来ません
まず裏にあるエクスプローラウィンドウをアクティブにするだけも機能しません…。
#WinActivateForce
#Enter::
WinActivate, ahk_class CabinetWClass
return

本当はこの上にSend, ^ t、
起動していなければ起動…という風にもしたいのですがそもそもアクティブ化すら動かない状態なので現状詰まっています
どこかミスが分かる方いればご教授お願いしたいです
0155名無しさん@お腹いっぱい。 (ワッチョイ 0f56-V/rO)
垢版 |
2020/06/25(木) 22:36:28.18ID:u3QjMjKW0
>>154
ありがとうございます 一旦全て消して打ち直した所無事に動くことが出来ました!
自分の様な使い方がしたい人は稀だと思いますが一応
#WinActivateForce
#n::
IfWinNotExist ahk_class CabinetWClass ;存在しない時
Run, explorer.exe ;エクスプローラを起動
else ;または
IfWinActive ahk_class CabinetWClass ;エクスプローラのクラスがある時
{
Send, ^t ;ショートカットを送信
return
}
IfWinExist ahk_class CabinetWClass ;裏にある時
WinActivate ;アクティブ
return

で動きたいように動いてくれました。スレ汚し失礼しました。
0157名無しさん@お腹いっぱい。 (オッペケ Sra3-L9uE)
垢版 |
2020/06/26(金) 18:10:14.78ID:rIU3pFBBr
IMEオフってIME_SET(0)じゃない?
wikiにも書いてないしtabに割り当てたいんだけど動かない
0158名無しさん@お腹いっぱい。 (ワッチョイ 4f58-NJGG)
垢版 |
2020/06/26(金) 18:24:27.06ID:8s6kilGT0
>>157
それはahk使わなくてもIMEのプロパティでキー設定すればできるしそっちの方が確実
まあTabはそれ以外でも使うから不便になると思うがな
ちなみに余談だけど俺は英数キーをIMEオフに割りあててる
0159名無しさん@お腹いっぱい。 (オッペケ Sra3-L9uE)
垢版 |
2020/06/26(金) 18:53:11.89ID:rIU3pFBBr
>>158
普段はtabキー使うから、IMEオフが必要なソフトでのみtabをIMEオフにしたかったんだよね ahkならソフトでの指定が出来るから
IMEオフはIME_SET(0)でいいのかな
0162名無しさん@お腹いっぱい。 (ワッチョイ 7f76-V/rO)
垢版 |
2020/06/28(日) 06:10:43.18ID:JSt+EfPH0
AHKの便利さを知っている人でも満足できるMac対応代替アプリ知りたい
おすすめありますか(別言語可)
0163名無しさん@お腹いっぱい。 (ワッチョイ 0f96-FKcX)
垢版 |
2020/06/28(日) 21:07:35.68ID:F3gv9FGB0
ALT+UでF7変換にしたく、LAlt&U::Send,{F7}と打ったのですが、
エラー:lnvalid hotkye が出ました。
どうすれば修正できますか?
0165名無しさん@お腹いっぱい。 (ワッチョイ 0f96-FKcX)
垢版 |
2020/06/28(日) 21:57:01.54ID:F3gv9FGB0
>>164
*!U::Send,{F7}
と打ったら出来ました ありがとうございます。
0166名無しさん@お腹いっぱい。 (ワッチョイ 0fb1-NJGG)
垢版 |
2020/06/28(日) 22:51:48.38ID:bvSPqNOb0
>>155
win7の情報だけどQTTabBarはWindowsの仕様なのかahk_classが2種類存在する。
おそらくexplorerの起動方法によって変わると思われる。
ahk_class CabinetWClass
で反応しないときは
ahk_class ExploreWClass

Win10では2種類存在するか未確認だけど、スクリプトを未修正で使ってる
0168名無しさん@お腹いっぱい。 (ワッチョイW 0f5c-mvWe)
垢版 |
2020/06/29(月) 09:50:02.24ID:DhcDIaKH0
「右コントロールと下矢印キーの同時押し」で「PgDnの押下」を行いたいです。

RCtrl & Down::PgDn
という記述だとCtrlの押しっぱなしが検知されて、
実行結果が「Ctrl+PgDn」になってしまいます。
実行結果を「PgDn」だけにする方法はないでしょうか?
0176名無しさん@お腹いっぱい。 (ワッチョイ 1edc-w4Iu)
垢版 |
2020/07/05(日) 15:58:54.49ID:BwrFni8y0
LinuxのOpenboxってウィンドウマネージャー使ってたらウィンドウ操作がすごく簡単で真似したくなったんですが、Win10で再現しようとしたら……orz
取り敢えずアクティブウィンドウの位置をウィンドウの中央座標と画面の中央座標が一致するように移動したいんですが、
座標の始点を画面左上から画面中央や画面右下などに自由に変更する方法ありませんか?

一応解像度からタスクバー分引いて数字出してWinMoveで数字決め打ちでなら出来たんですが、
A_ScreenWidthとか変数使うとうまくいかないところが出たりでよくわかりません……
ちなみに再現したいOpenboxの操作は↓な感じです
https://pastebin.com/bgAai2Dk
あとタイトルバー消したり出したりしたいんですが、これはahkで一から作ったウィンドウでないと出来ませんよね?
環境はWin10 Home x64 1909, AHK_U64 v1.1.32.00です。よろしくおねがいしますm(__)m
0178名無しさん@お腹いっぱい。 (ワッチョイ 1edc-w4Iu)
垢版 |
2020/07/05(日) 18:53:11.72ID:BwrFni8y0
>>177
例えば始点を右下(0,0)としたとき、左上がFHDなら(1920,1080)になるような……
まぁタスクバーが下にあるとしたら引くと1080にはなりませんが
openbox的には右端は<x> -0 </x>なわけですが、こういう指定ができるともっと楽ですね

計算ができないのは変数込の式の書き方がわかってないからかと……人のブログ見た限りでは
WinMove, A,, (A_ScreenWidth - ActiveWindowWidth)
これで画面右端に移動かと思ったら動かなかったです
WinMove, A,, (A_ScreenWidth/4), (A_ScreenHeight/4), (A_ScreenWidth/2), (A_ScreenHeight/2)
これで画面のW/2,H/2というサイズで画面中央に移動ができましたが
0181名無しさん@お腹いっぱい。 (ワッチョイ 6bb1-3v0K)
垢版 |
2020/07/05(日) 21:22:42.79ID:dLHUmlTf0
>>178
>始点を右下(0,0)としたとき、左上がFHDなら(1920,1080)になるような……
そういう関数作ればいいと思う

>WinMove, A,, (A_ScreenWidth - ActiveWindowWidth)
いきなり ActiveWindowWidth という未知の変数出てきたからエラー出て動かないんじゃないのか?
WinGetActiveStats, , ActiveWindowWidth とか WinGetPos, , , ActiveWindowWidth, , A で
アクティブウインドウの幅取得すれば動くと思う

式の場合は%付けない、文字列の場合は%付けるんだっけ?未だによく間違える(´・ω・`)
0182名無しさん@お腹いっぱい。 (ワッチョイW 1edc-lrAq)
垢版 |
2020/07/05(日) 22:09:20.66ID:BwrFni8y0
>>181
レスどもです

関数……なんだろう……

あと未知の変数ですが実際はその上の行でWinGetPosして定義してあるものです、後出しですみません……

^+!h::
  WinGetPos, ActWinX, ActWinY, ActWinW, ActWinH
  WinMove, A,, 0, %ActWinY%
return

^+!j::
  WinGetPos, ActWinX, ActWinY, ActWinW, ActWinH
  WinMove, A,,, (A_ScreenHeight - ActWinH)
return

これで^+!hで左端に移動しますが、^+!jでは下端に行きそうですが何も起こりません

パスをコピペしてからエクスプローラーで開く時はこれ↓なのは知ってるんですが
Run, explorer.exe "%Clipboard%"
あとRegExReplace(Clipboard, "foo","bai")
0185名無しさん@お腹いっぱい。 (ワッチョイ 8f58-VQSO)
垢版 |
2020/07/06(月) 00:04:48.67ID:cb7LpR4N0
>>182

^+!j::
WinGetPos, ActWinX, ActWinY, ActWinW, ActWinH, A
WinMove, A,,, % A_ScreenHeight - ActWinH
Return

式の場合はこう
あとWinGetPosはタイトル入れてないから>>182だとそもそも位置とサイズ取得すら出来てない
msgboxとかを使ってちゃんと一つずつ動作確認する癖付けた方がいい

それと質問するときは最初からそのスクリプト貼れ
小出しにするから無駄に長引く
0186名無しさん@お腹いっぱい。 (ワッチョイW 1edc-lrAq)
垢版 |
2020/07/06(月) 08:02:38.57ID:WTsF5wfU0
こんな糞ゴミ質問者に丁寧に接してくださってありがとうございます
ほんとに、リファレンスは"ちゃんと"読まないといけませんね……
も少しマシな質問出来るようになってから出直してきます、ありがとうございましたm(__)m
0194名無しさん@お腹いっぱい。 (ワッチョイ 4b76-/sw6)
垢版 |
2020/07/14(火) 00:55:13.37ID:EP9LjcCP0
範囲選択してスクリーンショットするアプリを使用しています。
左クリックのドラッグで範囲選択をします。

実現したいことは、「トリガー押下→範囲選択モードに移行(アプリ側でPrscに当てています)
→隣のモニタにカーソルを移動→範囲選択が終わり次第、トリガー押下時の座標にカーソルを戻す」
です

今回の質問は、下記スクリプト内の「条件式」のアイデアについてです。

試したことは、
・KeyWaitでLButtonのDownとUpを検出→LButtonの判定がKeyWaitに吸収されて範囲選択できない
・WhileとGetKeyStateの入れ子をうまいこと組み合わせる→よくわからないけど失敗

範囲選択モードになったことを示すものはないとして、マウスの挙動、つまり「ドラッグ選択が終わった」ことを認識できるような
条件式のアイデアを頂ければと存じます。
Send, {PrintScreen}

;初期座標記録&隣のモニタにカーソル移動
MouseGetPos, oldMouseX, oldMouseY
MouseMove, (oldMouseX < 0 ? A_ScreenWidth : -A_ScreenWidth), 0, 0, R

;範囲選択が終わるまで待機
While (1) {
;条件式
break
}

;元の座標に戻る
MouseMove, oldMouseX, oldMouseY, 0
0195名無しさん@お腹いっぱい。 (ワッチョイ cd58-ucCN)
垢版 |
2020/07/14(火) 01:48:48.79ID:6ncGE/jk0
説明が分かりにくいんだけど

・トリガー押下→範囲選択モードに移行→隣のモニタにカーソルを移動

トリガーが何なのか分からんがひとまずここまでが一つの動作で、範囲選択自体は手動でマウス動かしてやるんだよな?
そして左ドラッグを離したら「トリガー押下時の座標に自動的にカーソルを戻す」ってことでしょ?
それならトリガー押下したら上記の操作してフラグを Flag=1 とか適当な変数付けといてReturn

~LButton up:: でFlag=1の場合は元の座標に戻ってFlag=0にリセットする
Flag=0の場合(範囲選択モードじゃない時)ならReturnして普通に左ボタン離すだけ

みたいなやり方はどうよ?
待機とかするよりもシンプルだと思うが
0196名無しさん@お腹いっぱい。 (ワッチョイW e3e5-QGnr)
垢版 |
2020/07/14(火) 09:15:26.11ID:1et+KNUO0
> ・WhileとGetKeyStateの入れ子をうまいこと組み合わせる→よくわからないけど失敗
その失敗したコード部分を貼らないと

まあループで待つより Hotkey,~LbuttonやSettimer仕掛けて一旦抜けて
フェイズ処理の方が動作の確実性は上がると思う
1シーケンスで終わらないから一見すると面倒に見えるかもだが急がば廻れ

> 範囲選択モードになったことを示すものはないとして
ImageSearchは検討してみた?
なんのアプリ使ってんだが分からんが操作する人間が視覚的に判るような範囲選択オブジェクトは描画されてるわけでしょ
ドラッグ開始の「 部分が透明度低ければピクセル一致で引っ掛けられるかも
0198名無しさん@お腹いっぱい。 (テテンテンテン MM0e-YsWi)
垢版 |
2020/07/15(水) 20:36:23.68ID:jMEGxsKVM
https://kostrivia.com/5592.html
上のサイトを参考にwindowsのIMEの設定で無変換キーをIMEオフ、変換キーをIMEオンにしてるんだけど、その場合キー名はそれぞれ何になるんだろう?

http://ahkwiki.net/KeyList#Key_ZenHan
見ても載ってなかった
0200名無しさん@お腹いっぱい。 (ワッチョイ 25f1-YsWi)
垢版 |
2020/07/15(水) 22:02:27.10ID:LKXFRDtu0
>>198
昔のバージョンでは無変換キーは vk1Dsc07B で指定してた
今は無変換キーは vk1D または sc07B のどちらかで指定する仕様に変わった
変換キーや他のキーコードも同じ様に変わった


AHKの仕様が変わってからもうだいぶ経つしwikiのキーリストのページだけでも直した方がいいと思うけど

警告: データベースがメンテナンスのためロックされており、現在は編集内容を保存できません。 必要であれば文章をコピー&ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
データベースをロックした管理者による説明は以下の通りです: ただいまメンテナンス/大規模更新に向けてのローカル作業中です。

これって今だけ?しばらくしたら誰でも編集できるようになるんかね?
0202名無しさん@お腹いっぱい。 (ワッチョイW 25e4-m8oD)
垢版 |
2020/07/16(木) 03:08:45.98ID:VMyR24rS0
タスクマネージャーとか、デバイスマネージャーみたいなwindowsの画面?だとautohotkey効かないのって何故?

マウス移動をキーボードでしてるから、これらの画面でも効くようにしたいのだけれど、無理なのだろうか
0204198 (テテンテンテン MM0e-YsWi)
垢版 |
2020/07/16(木) 13:44:03.89ID:n+FmbQAMM
ありがとう、auto hot keyを設定できたけど、今度はIMEのキー設定のほうが無効化されてる。。。
0206名無しさん@お腹いっぱい。 (ワッチョイ b676-h8LP)
垢版 |
2020/07/16(木) 22:21:07.86ID:onG5mLRo0
>>194です
みなさんありがとうございます。
一応解決していたのですがスレに書き込めず断念しました。
以下は「WhileとGetKeyStateの入れ子でうまいことやる」方式ですが、あまりスマートではない気がしますので、
LButtonのホットキーやSetTimerも試してみようと思います。
以下条件式の部分
https://pastebin.pl/view/66a0f0bb
0208名無しさん@お腹いっぱい。 (ワッチョイ 6158-YsWi)
垢版 |
2020/07/18(土) 01:16:35.31ID:sv19kcVb0
Win10の通知を検知する方法ってないですかね?
Window Spyで見ると

新しい通知
ahk_class Windows.UI.Core.CoreWindow
ahk_exe ShellExperienceHost.exe

と表示されてるけど、通常のアプリケーションウィンドウではないため

WinWait, 新しい通知

などでは検知できませんでした
何かスマートな方法ありませんか?
0209名無しさん@お腹いっぱい。 (ワッチョイ 0596-aTVc)
垢版 |
2020/07/18(土) 11:07:13.49ID:5I0TjaiB0
無変換キー+aで0
無変換キー+sで2
(中略)
無変換キー+;で9
という風にしたいのですが、
sc07B & a::Send,{0}
sc07B & s::Send,{1}
(中略)
sc07B & vkBBsc027::Send,{9} 
という風に記述した所上手く行きませんでした。
(vk1Dも試しました)
何が原因で上手く行かないのでしょうか?

また、出来れば無変換キーを誤動作しないように、仮想キーに置き換えたいのですが、
sc07B ::vkXXのXXは適当な三桁くらいの数字でも動作するものなのでしょうか?
0211名無しさん@お腹いっぱい。 (ワッチョイ 0596-aTVc)
垢版 |
2020/07/18(土) 21:55:27.65ID:5I0TjaiB0
>>210
ありがとうございます、おかげで置き換え以外上手く行きました
0214名無しさん@お腹いっぱい。 (ワッチョイ 0596-aTVc)
垢版 |
2020/07/19(日) 01:39:06.45ID:DHlvlCWw0
>>212
>>213
すみません、私の書き方が悪かったです。
私がしたいのは、無変換をキーキーボード上には割り当てられていない
第二のaltキー的な新たなキーにしたいのです。
0215名無しさん@お腹いっぱい。 (ワッチョイ 0db1-W/bt)
垢版 |
2020/07/19(日) 01:55:08.22ID:N4SWN7YZ0
タスクトレイにあるアイコンを操作したくて
http://lukewarm.s101.xrea.com/myscripts/
にある 「タスクトレイアイコン操作」 スクリプトの中にある 使用例(既に起動しているAutoHotkeyのトレイアイコンを(全て)ダブルクリックする)
を実行してみたのですが何も起こりません。
なぜでしょうか?

スクリプトは以下です。
https://pastebin.com/zpFL2BA0

Tray_GetInfo(idx,ByRef hwnd,ByRef uid,ByRef msg,ByRef hicon)
のByRefと言うのがよくわからないのですが、この関数を実行すると ByRef hwnd
の位置にある実引数に自動で値が入るのでしょうか?
最後にあるLoopの中に、
msgbox, %hwnd%
を書いても全て 0 と表示されます。
0216名無しさん@お腹いっぱい。 (ワッチョイ 7176-YsWi)
垢版 |
2020/07/19(日) 02:02:12.40ID:62gcooW20
>>214
だからIMEで機能割り当て無くしとけば無変換キー自体は単独では何の機能も持たない
第二のaltキーのように修飾キーとして使える
IME以外にデフォルトで無変換キーに機能割り当てしてるソフトなんてまず無いし
逆にそれでなにが不都合あると言うんだ
0217名無しさん@お腹いっぱい。 (ワッチョイ 0596-aTVc)
垢版 |
2020/07/19(日) 02:08:38.28ID:DHlvlCWw0
>>216
すみません、私が理解出来てませんでした。
ありがとうございます。
0218名無しさん@お腹いっぱい。 (アウアウウーT Sa39-cL4z)
垢版 |
2020/07/19(日) 18:24:50.56ID:dirzI1+ha
>>215
ByRef は 渡した変数の内容が変更される可能性があるという認識はあっている

hwndが0になるのは、たぶん Tray_GetInfo( ) の中で
SendMessage,0x417,% idx-1,%lpTB%,ToolbarWindow321,ahk_class Shell_TrayWnd
(0x417 は TB_GETBUTTON)
に失敗しているからだと思う
その直後でErrorLevelを見るとエラーになっていると思う
回避法はわからない
管理者権限では回避できなかった

具体的にどういう操作をしたいのかによって別のやり方もあると思う
0219名無しさん@お腹いっぱい。 (ワッチョイ 0db1-W/bt)
垢版 |
2020/07/19(日) 19:35:17.18ID:N4SWN7YZ0
>>218
回答ありがとうございます。
このスクリプトの更新日を見たら2006年とかなり古いのでwindowsの仕様が変わって
動かないのですかね?

やりたいことはタスクトレイアイコンをクリックしたいだけなのでmouseclickを使っていたのですが、
検索すると>>215にあるスクリプトが出てきたので試してみた次第です。
0221名無しさん@お腹いっぱい。 (ワッチョイ dab2-YsWi)
垢版 |
2020/07/19(日) 20:09:03.48ID:Z2QAfO/e0
>>219
そのスクリプトのことは知らないけど
Win10でトレイアイコンを操作したいならWin+Bでトレイアイコンにカーソルが行く
矢印キーで選ぶかアプリケーションの頭文字のキー(AHKアイコンならA)で選択して
Enterまたはメニュー出したいときはAppsKey

これらを組み合わせればSendだけで大体の操作できる
0226名無しさん@お腹いっぱい。 (ワッチョイ b676-h8LP)
垢版 |
2020/07/20(月) 19:59:04.61ID:TCRNHUMW0
>>224
VSCode
AHKの拡張機能がある
0227名無しさん@お腹いっぱい。 (ワッチョイ b676-h8LP)
垢版 |
2020/07/20(月) 20:11:35.76ID:TCRNHUMW0
下のコードで、a.ini内のパスを相対パスにする方法ゆる募
.\\とか%A_ScriptDir%\scripts\a.batとかは一応ひと通り試したけどだめだった
[test.ahk]
IniRead, val, %A_ScriptDir%\script\a.ini, section, key
If (val != "ERROR") {
Run, %val%
}
[a.ini]
key=C:\AutoHotkey\script\a.bat
0230名無しさん@お腹いっぱい。 (ワッチョイ 7dbc-fCAl)
垢版 |
2020/07/21(火) 08:45:36.20ID:IFAKf5IL0
>>229
アプリ単位で良いなら、タスクトレイのボリュームアイコンを右クリックして「音量ミキサー」を開けばできるよ
「ファイル名を指定して実行」からsndvol.exeを実行してもOK

スタートメニューから「アプリの音量」で検索すると「サウンドミキサーのオプション」が出てくるから、そっち(アプリの音量とデバイスの設定)でもできる
0232名無しさん@お腹いっぱい。 (ワッチョイW 25e4-m8oD)
垢版 |
2020/07/21(火) 10:50:53.55ID:aMj/sQ1Q0
>>230
もちろん、それでできるけどahkもしくは他の方法でもいいけどショートカットキーでやりたくてね

フルスクリーンゲームやっててyoutubeで音楽聞いてると、いちいちChromeの音量切るの面倒くさいのよ
0234名無しさん@お腹いっぱい。 (ワッチョイ 7dbc-97kB)
垢版 |
2020/07/21(火) 11:50:16.01ID:IFAKf5IL0
>>232
RunコマンドでSndVol.exe開いて
WindowSpyで調べたミュートボタンをクリックして閉じるとかで良いんじゃないかな?
AutoHotkeyのインストールディレクトリにあるAU3_Spy.exeかWindowSpy.ahkを実行して、
ミュートボタンにカーソルあわせると「classNN」が分かるよ(ToolbarWindow324みたいなやつ)
※WindowSpy.ahkだと、Follow Mouseにチェックつけないとダメかも

なんかコード書いたら書き込めない...(´・ω・`)
0236228 (ワッチョイW 7ae5-r4Uh)
垢版 |
2020/07/21(火) 12:13:10.57ID:5XlMbZFU0
× AttributeString := FileExist(val)
AttributeとAbsoluteカン違いしてたわすまん
絶対パス取得はfile-loopでA_LoopFileLongPathじゃないと取れないか

というかini内の記述を絶対パスにしたくない(相対記述→絶対パス)って意図だと捉えてたけど
iniは絶対パス記述でAHKで省きたい(絶対→相対)って意味だったらすまん
0238名無しさん@お腹いっぱい。 (ワッチョイ b676-h8LP)
垢版 |
2020/07/21(火) 20:10:06.29ID:6AnSQ4cb0
>>236
ありがとう

スクリプトフォルダ内の複数のbatファイルから選択してRunするために、
データはIniファイルに突っ込んでて、
メイン環境なら絶対パスでいいけどUSBやらなんやらで持ち出したときに
動作しないから%A_ScriptDir%のノリでIniファイルに記述したいなと
0239名無しさん@お腹いっぱい。 (ワッチョイ b676-h8LP)
垢版 |
2020/07/21(火) 20:12:00.29ID:6AnSQ4cb0
>>238
データは、というかBatファイルのパスをIniファイルに記述してる

bat1 = C:\AutoHotkey\script\1.bat

みたいな

それをAHKからReadしてRunさせてる
0241名無しさん@お腹いっぱい。 (ワッチョイ f16d-keh3)
垢版 |
2020/07/23(木) 00:41:47.27ID:pi8EOXNV0
ウィンドウが呼び出したダイアログがアクティブになった事を確認したいんですがうまくいきません
ダイアログの場合って別のやり方が必要なんですかね?
#IfWinActive ahk_exe chrome.exe
~^s::
WinWaitActive, ahk_exe chrome.exe,"名前を付けて保存", 2
if(ErrorLevel == 0){
 MsgBox, "OK"
}else{
 MsgBox, "NG"
}
0243名無しさん@お腹いっぱい。 (ワッチョイ f16d-keh3)
垢版 |
2020/07/23(木) 01:03:09.31ID:pi8EOXNV0
>>242
うまくいきました、ありがとうございます
0244名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/23(木) 20:42:11.81ID:d1WuC/N20
>>240
ありがとう
道が見えた
0245名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/23(木) 20:54:09.64ID:d1WuC/N20
AutoHotkey.ahk − a.ahk
|
− b.ahk
[a.ahk]
a::Gui生成
GuiClose:終了処理
[b.ahk]
b::Gui生成

こんな感じの構成でそれぞれのGuiが別物の場合、bの方のGuiCloseを書くにはどうしたら?
2GuiCloseとかは2つGuiがShowされていたらの話だと思っていて、実際に動作しなかった。
0246名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/23(木) 20:57:56.41ID:d1WuC/N20
>>245
失礼、普通に動作した
0247名無しさん@お腹いっぱい。 (ワッチョイ f96d-keh3)
垢版 |
2020/07/24(金) 21:59:30.61ID:soU5eOWb0
自作DLL(別プロジェクトで動作確認は取れている)をDllCallすると
ErrorLevel -3で失敗してしまうんですが、
なぜ失敗するかの具体的な特定方法ってないですかね?
一応、A_WorkingDir的にDLLは見えているはずなんですけど

もしくはahkスクリプトからluaを実行して結果を取れると解決するんですけど
0248名無しさん@お腹いっぱい。 (ワッチョイ 110a-UUnj)
垢版 |
2020/07/25(土) 00:23:11.88ID:0/SfUIv30
>>247
> ErrorLevel -3
これが具体的な失敗理由ですが?

A_WorkingDirをMsgBoxなどで確認しましたか?
bitの違いは?

・DLLがシステムディレクトリかA_WorkingDir(SetWorkingDirで変更可能)にある
・AHKとDLLの 32bit 64bit の違い
0250名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/25(土) 22:27:59.07ID:0QOLAh7b0
フックについて理解ができないので質問します。(非エンジニア)

通常はスクリプト読み込み時に、OS標準のAPI経由でOS側にホットキーを登録し、
キー入力時はOS側がAHKから渡されたキーであれば、AHKに処理を回す。

フック使用時は、AHKがそのキーが入力されるかを常に監視して、入力された場合、
その入力をOS側から遮断(横取り)して、直接スクリプトを実行する。(OS側は入力されたことに気づかない)
監視している分メモリの使用量が増加するが、動作は若干高速化する。

このようなイメージでよいでしょうか?
フック仕様のデメリットは、メモリ使用量以外ありますか?

また、以下の認識はあっていますか?
UseHook = InstallKeybdHook + InstallMouseHook
0251名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/25(土) 22:31:58.79ID:0QOLAh7b0
もう一つ質問です。

若干意味も理解せず、以下の記述をスクリプトの頭につけています。
皆さんは、どのような理由で、どのように記述していますか?

#Persistent
#NoEnv
#UseHook
SendMode, Input
SetWorkingDir %A_ScriptDir%\scripts
SetTitleMatchMode, 2
#MaxHotkeysPerInterval 100
0253名無しさん@お腹いっぱい。 (ワッチョイ 0b76-Rmjr)
垢版 |
2020/07/25(土) 23:07:13.87ID:0QOLAh7b0
>>252
それは当然調査済みですが、ちゃんとはわかってません。
おそらく追加したほうが良さそうな雰囲気なので入れてます。
ただ理解は曖昧なので、参考のため皆さんの設定を知りたいなと思いまして
0254名無しさん@お腹いっぱい。 (ワッチョイ fb88-5TCi)
垢版 |
2020/07/25(土) 23:14:33.77ID:kjnyEGzO0
>>253
こっちだってwiki読んで理解してるだけだからそこに書いてある以上のことは知らん
そもそもなんでwikiを読んで分からないのかがこっちには分からないし
例えば #Persistent なら「スクリプトを常駐状態にする。」ってwikiに書いてあるしそのまんまの機能
これ読んで分からないって余程日本語理解力に問題あるんじゃないかと
「当然調査済み」とか言い張ってるが本当に読んでるのかよ
0255名無しさん@お腹いっぱい。 (FAX! d9b1-4Jjn)
垢版 |
2020/07/26(日) 10:00:51.37ID:fmdWSWo70FOX
ちゃんと理解しないで「なんとなく」とか「記述した方が良さそうだ」とか闇雲に記述するのはどうかと思う
例えば、常駐させる必要ない自動化スクリプトに#Persistent(#NoTrayIconも)なんて記述するのはアホの極みだ
0258名無しさん@お腹いっぱい。 (ワッチョイ 5367-keh3)
垢版 |
2020/07/26(日) 19:38:30.96ID:b9LQTrtD0
読解力に問題があるって言ってもなぁ
じゃあ日本語ならどんな分野のどんな難しい文章もわかるのか?って話になるからな。

例えば、具体的によりくだけた表現に翻訳するには知識が必要となるわけで
知識差は読解力と違うし、同じ日本語でも何言っているかわかんないってことは大いにありえるから
253の気持ちはわかるし、そんな批判するようなことでもないように感じるけどな
0259名無しさん@お腹いっぱい。 (ワッチョイ 517b-h1M8)
垢版 |
2020/07/26(日) 19:45:26.93ID:lfc7Fo4v0
「スクリプトを常駐状態にする。」ってこんな簡単な文章がなぜ理解できないのかって話なのに
なんでそこから日本語ならどんな分野のどんな難しい文章もわかるのか?って話に飛んでんのかな?
その発想自体が日本語の理解力足りないってことじゃねえの
0260名無しさん@お腹いっぱい。 (ワッチョイ 5367-keh3)
垢版 |
2020/07/26(日) 19:50:44.21ID:b9LQTrtD0
ん〜だから、知識によって理解が変わるってことを大袈裟に言っているだけで
252 とか 254みたいな批判めいた内容言うこともないだろって話。
#Persistentがどうのとか中身は興味ないから
0261名無しさん@お腹いっぱい。 (ワッチョイ 517b-h1M8)
垢版 |
2020/07/26(日) 19:58:57.50ID:lfc7Fo4v0
>>260
つまり「常駐」って言葉の意味が分からないとかか?
だったらそういう質問の仕方をしないと相手に伝わる訳もないよな?
そもそも「常駐」の意味だって調べりゃ良いだけだし
ろくに調べもせずに丸投げ質問しておいて、挙句「当然調査済み」とか言ってる馬鹿は批判されて当然のこと
0263名無しさん@お腹いっぱい。 (ワッチョイW 53e5-vIFp)
垢版 |
2020/07/26(日) 22:31:44.50ID:S9oLQUza0
理解力じゃなくて尋ね方の問題でしょ
このスレは横着者に厳しいので漫然とした聞き方でお薦めを得ようとしてもだめ
理解が及んでないと思う箇所をピンポイントで掘り下げて聞いた方がいいよ
0265名無しさん@お腹いっぱい。 (ワッチョイ 0976-Rmjr)
垢版 |
2020/07/28(火) 04:19:25.54ID:TZ11IB3u0
>>251です
質問の範囲が曖昧でしたね。では、特に以下のことについてお聞きします。
>>250
・その他、皆さんの設定(常駐スクリプト)

#UsehookやSendMode, Inputが理解できていませんが、これは共にフックが関係しているためです。
フックについての理解が>>250で正しければ、それで解決します。
それから、よければ皆さんの常駐スクリプトの頭を見たいなと。
0266名無しさん@お腹いっぱい。 (ワッチョイ 8b02-PQNh)
垢版 |
2020/07/28(火) 21:52:09.24ID:j4zhZCSu0
フック使用時は SetWindowsHookEx でフックチェーンにコールバック関数が登録され、
何らかのキーが入力されたとき、登録されたコールバック関数が呼ばれます
なので'OS側は入力されたことに気づかない'は誤りです

>また、以下の認識はあっていますか?
>UseHook = InstallKeybdHook + InstallMouseHook
あっていません

#UseHook, On
F5::
MsgBox % A_PriorKey ; A_PriorKey を使用するにはフックが必要
Return

これを実行すると、キーボードの履歴は取得できますが、マウスの履歴は取得出来ません
#InstallMouseHook をコードに加えるとマウスの履歴も取得出来ます
0267名無しさん@お腹いっぱい。 (ワッチョイ 0176-QWST)
垢版 |
2020/07/30(木) 01:09:12.14ID:fMNXqak+0
テンキーでホットストリングを使用したいのですが
どのように指定したらよいのかわかりません。

「-」を2回押して「〇〇○○」の文字入力

:*?Z:--::
Clipboard = ○○○○
Send, ^v
Return

上記で一応やりたいことは出来るのですが
「-」2回入力を「NumpadSub」にしたいのですが

:*?Z:{NumpadSub 2}::
:*?Z:{NumpadSub}{NumpadSub}::
としてもうまく機能しません。
教えていただけると助かります。
0268名無しさん@お腹いっぱい。 (ワッチョイ f158-xE3T)
垢版 |
2020/07/30(木) 04:58:02.48ID:bNezzCEK0
>>267
ホットストリングは入力された文字を置き換えるだけだから
テンキーだろうがそうじゃなかろうが - は同じ文字なのでテンキーか否かの区別は無い
テンキーの - のみ置き換えたいならホットキーで2回押し判定するこったな
0269名無しさん@お腹いっぱい。 (ワッチョイ 65b1-x8Er)
垢版 |
2020/07/31(金) 08:42:13.59ID:g2I7hRAB0
>>267
サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes
ここの「1つのキーに3種類以上の動作割り当て」を使うといい

余談だけど、自分はよく使う機能なんで関数にしている
んで、「Switch」が使えると最近知ってスクリプトを書き換えたが同じ変数の羅列が無くなってスッキリするね
0270名無しさん@お腹いっぱい。 (ワッチョイ bd76-UJyh)
垢版 |
2020/07/31(金) 17:18:12.37ID:0oLnTWbF0
>>269
外野ですがPastebinしてもらえるとすごい助かります
0272名無しさん@お腹いっぱい。 (ワッチョイ d556-UJyh)
垢版 |
2020/08/02(日) 20:02:58.56ID:1OIburwk0
ホイールスクロールを左右キー(←→)に割り当てているのですが、元々のスクロールも残っているようで、左右キーと同時にスクロールもしてしまいます。
1秒間に何十回も行う動作なのでこういった挙動になってしまうのでしょうか?なんとか割り当てた左右キーを動作させている時は元々のスクロールは動かないように出来ないでしょうか?
宜しくお願い致します。
0274名無しさん@お腹いっぱい。 (ワッチョイW 1ae5-0Vd1)
垢版 |
2020/08/02(日) 20:17:53.03ID:81CoHYtN0
~Left:: とかにしてなけりゃ普通は抑制されるはずだけど?
キーリピート殺さないとホイールがチャタってるみたいな状態にはなるかも知れんが

よくあるのが関係ない部分でreturn入れてて挙動不審になってるやつ
最小コードで動作検証してみて
それでも動かないならコード貼って再質問どうぞ
0278名無しさん@お腹いっぱい。 (ワッチョイW 1ae5-0Vd1)
垢版 |
2020/08/02(日) 21:35:11.08ID:81CoHYtN0
ああLeftにホイール割当じゃなくてホイールにLeft割り当てなのか
~についてはヘルプをよく読もう
まあ理解したところでコンビネーション使う限りは避けられないだろうけど

~Lshift::からのInputコマンドか
#if getkeystat("Lshift") からの WheelUp::Left あたりかね
0281名無しさん@お腹いっぱい。 (オッペケ Sr05-pQu/)
垢版 |
2020/08/03(月) 15:55:03.34ID:sfF7RDEPr
Alt+Sキーを押している間、中央ボタンを押している状態にしたいのですが上手く機能しません。
!s::
MouseClick,MIDDLE

!s::MButton

!s::
Send,{MButton}
を試したのですが動きません
ご教授お願いしたいです。
0285名無しさん@お腹いっぱい。 (オッペケ Sr05-pQu/)
垢版 |
2020/08/04(火) 02:10:47.63ID:pvHcveX7r
>>284
altキー以外ならいけるようになるものなんでしょうか?
winキーで試したところ駄目でした
ctrlはctrl+sと競合してしまいますし…
0288名無しさん@お腹いっぱい。 (ワッチョイ 795a-xE3T)
垢版 |
2020/08/04(火) 08:27:11.36ID:+LKh5lCi0
>>285
Alt+Sも気づいていないだけで、何かと被ってない?
メニューバーにファイル(F)、編集(E)とかってある中に(S)使ってるのが、いくつかあると思うよ
0289名無しさん@お腹いっぱい。 (オッペケ Sr05-pQu/)
垢版 |
2020/08/04(火) 15:49:03.70ID:pvHcveX7r
>>286
USキーボードなので無変換キーがありませんので…
0295名無しさん@お腹いっぱい。 (ワッチョイ 1373-VOYo)
垢版 |
2020/08/06(木) 11:58:26.53ID:RbEH3NuY0
実行ファイル名だけでRunできるかどうかを確かめる方法って
PATHに含まれるパスの1つずつに実行ファイル名を付け足してFileExistで確認するしかないですかね?
もうちょっとスマートな方法ないかなと
0299281 (ワッチョイ 3156-jE9f)
垢版 |
2020/08/07(金) 23:24:35.46ID:/SyKKu4K0
>>281ですが、やはりUSキーでは特定のキーを押している時に中央ボタンを教えている状態にする…というのは厳しいものでしょうか?
>>283も試し、>>290さんのものもそのまま使ってみたのですが駄目でした(SとD同時押しで左クリック)
0301名無しさん@お腹いっぱい。 (ワッチョイW 53e5-WXil)
垢版 |
2020/08/08(土) 00:56:59.60ID:d1t6RuBp0
まずホットキー割り当て関係なしに Send,{MButton} は動作した?
とりあえずF1あたりに割り付けて試してみては?

あとさ押してる間中って,{MButton down} {Mbutton up} は考慮せんでいいの?
>281や>290ではキー押してる間 MButtonカチカチ押し直してることになるけど
0305名無しさん@お腹いっぱい。 (ワッチョイ 595a-e++8)
垢版 |
2020/08/08(土) 02:08:24.01ID:rnkNRuHB0
>>302
>反応しませんね
ってのは目視で言ってる?それともAutoHotkeyのログにも反映されてないってこと?
そのあたりが明確じゃないと。
ホイールクリックはされてるんじゃないの?と自分も思うけど
どうにかしたいのは何かのゲームなの?
0306名無しさん@お腹いっぱい。 (オッペケ Sr5d-h0Us)
垢版 |
2020/08/11(火) 16:57:50.21ID:cZVnzQoFr
全てのsendの後に300msの間隔を入れたいのですが 、sendkeyの間全てにディレイを入れるにはどうすればいいのでしょうか?
0308名無しさん@お腹いっぱい。 (ワッチョイW 9b11-TKzn)
垢版 |
2020/08/11(火) 21:39:37.53ID:TLfH+B9q0
無変換を空打ちの時は無変換のままで他のキーと組み合わせた時にctrlキーになるみたいなスクリプトって作成可能ですか?vk1D & a::send, ^{a}みたいなのを永遠と続けていくしかないんですかね
0310名無しさん@お腹いっぱい。 (ワッチョイ 0611-oFWA)
垢版 |
2020/08/12(水) 11:54:00.49ID:2Yw6Zztj0
>>309
無変換キーをctrlにしたいから6行目をsend,{Blind}^{%A_ThisHotkey%}に書き換えたんですけどshiftキーみたいな修飾キーを同時押しすると反応しません(ctrlとshiftとaをおしてもshiftとaになる)。どうすればいいのでしょうか?
0311名無しさん@お腹いっぱい。 (ワッチョイ 3156-aDEp)
垢版 |
2020/08/13(木) 16:49:16.78ID:XhLEW61l0
SetKeyDelay, は、自分が組んだマクロの前に入れておけばそのマクロだけ動いてくれるものでしょうか?
試した所適応されないのですが、この書き方だと間違っているでしょうか?

;;;googleearthのプロパティ変更
SetKeyDelay, 200
#IfWinActive ahk_class Qt5QWindowToolSaveBits
^n::
send,{Tab}
send,{Tab}
send,{Tab}
send,{Tab}
…以下略


send,{Tab}の間等、全ての間に少しだけ間隔が欲しいです。
SetKeyDelayの数値を20000などに上げてみても速度が変わらなかったので機能していないようなのですが、どこに記述すればいいものでしょうか?
ご教授頂ければと思います。お願いします。
0312名無しさん@お腹いっぱい。 (ワッチョイ dd58-p5K4)
垢版 |
2020/08/13(木) 17:17:21.46ID:LDN6U1Fl0
>>311
全てのホットキーに適用したいならそのスクリプトの一番ド頭に書けばいい
余計なもん一切書かずに↓のみのスクリプト新規に作って実行してみ

SetKeyDelay, 1000
^n::
send,{Tab}
send,{Tab}
send,{Tab}
send,{Tab}
Return

ちなみに^nのみに適用したいなら ^n:: の次の行に書けばいい
0315名無しさん@お腹いっぱい。 (オッペケ Srf1-K5M0)
垢版 |
2020/08/17(月) 20:54:41.17ID:3mab3Ymer
ウィンドウ切り替えのAlt+Tabを右クリック&ホイールスクロールに割り当てたいんだけど不可能かな?
Alt+tabを押した後、Altはドラッグしたままtabのみクリックをホイールに割り当てないといけないから無理かなさすがに…
0316名無しさん@お腹いっぱい。 (オッペケ Srf1-K5M0)
垢版 |
2020/08/17(月) 21:27:15.80ID:3mab3Ymer
すいません alttabmenuを使うのが自分のやりたいことに1番合っているようでした
0317名無しさん@お腹いっぱい。 (ワッチョイ d1ed-p5K4)
垢版 |
2020/08/17(月) 21:36:55.69ID:BI+nRFCA0
>>315
それのために「AltTab」「ShiftAltTab」という専用コマンドが用意されてる
ただし右クリックと組み合わせるとコンビネーションキーの仕様で右ドラッグが出来なくなるなど
悪影響が出るので右クリック使うのはお勧めしない
サイドボタン+ホイール上下などと組み合わせた方が良い
0318名無しさん@お腹いっぱい。 (オッペケ Sr73-JcCl)
垢版 |
2020/08/19(水) 13:36:13.75ID:A9E1pfBqr
>>317
ありがとう!

それと、SHIFT+ホイールスクロールで水平スクロールが動かないんだけど

; Shift +ホイールで水平スクロール
+ WheelDown :: WheelRight
+ WheelUp :: WheelLeft

これで動くって書いてたけどitunesとかエクスプローラで試しても動かないんだよね…
どこが間違っているんだろう
0320名無しさん@お腹いっぱい。 (ワッチョイ 9f40-YpYZ)
垢版 |
2020/08/19(水) 16:18:37.07ID:rbvgmFfQ0
>>318
WheelDownの前後に余計なスペース入れてるからエラー吐く
正しく書けば動くけどエクスプローラーはそもそもWheelLeft/WheelRightのAPIに対応してないので
AHK関係なくチルトホイール付きマウスとかでも水平スクロールは使えない
ソフトごとに対応は異なる

>>319
別にSend使わなくても普通に動く
0322名無しさん@お腹いっぱい。 (オッペケ Sr73-JcCl)
垢版 |
2020/08/20(木) 13:13:28.93ID:ZEA8sAPvr
>>320
ありがとうございます。
そうだったんですねchromeでのスプレットシートやitunesでも水平スクロールが出来ないのですが、これは水平スクロールをする方法は無いのでしょうか?
0324名無しさん@お腹いっぱい。 (ワッチョイ 9f56-eNlY)
垢版 |
2020/08/22(土) 19:14:45.98ID:wV0OjCfD0
alt-ime-ahkというaltキーでIME変換できるスクリプトを使っていたのですが、
ALTキーがロックされてしまうバグで使い物になりません…。
他にalt単体でIME切り替えできるようにする方法はないでしょうか?
0325名無しさん@お腹いっぱい。 (ワッチョイW 1f58-fRC2)
垢版 |
2020/08/22(土) 19:33:34.31ID:/ojXZb2N0
alt-ime-ahkってそれなりに市民権得てるスプリクトだよね
初心者が単純にできることならわざわざ複雑にしたものが支持を得たりはしないのでは

あとこの手のものはおま環やOSやAutohotkey.exeのアプデによって問題が出てくることのほうが多い
調べもしないで簡単にバグとか言わない
0328名無しさん@お腹いっぱい。 (ワッチョイ 4611-yRqa)
垢版 |
2020/08/27(木) 15:47:12.74ID:QHZeYd9S0
Win+Eのホットキーでエクスプローラーがすでに開かれてる場合そのウィンドウをアクティブにして
そうでない時エクスプローラーを開くというスクリプトを作ろうとしたが挫折してる…
#e::
Process, Exist, explorer.exe
if ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%
else
Run, "C:\Windows\explorer.exe"
Return
何かアドバイス等ありましたらご教授いただきたく存じます
0330名無しさん@お腹いっぱい。 (ワッチョイ 3d58-1etN)
垢版 |
2020/08/27(木) 16:33:06.92ID:obuHAsj80
>>328
329が先に答えたので補足になるけど
タスクマネージャーを見れば分かるがエクスプローラー窓を開いてない状態でも
Windows起動した時点でexplorer.exeはずっと常駐しているのでProcess, Existでは
常に「起動してる」という結果しか得られない
0336名無しさん@お腹いっぱい。 (ワッチョイ 1156-hfuR)
垢版 |
2020/08/28(金) 03:05:13.43ID:cZIhkCY40
裏で動いているitunesの曲の再生や停止を書きたかったのですが、
^!Space::Send {Media_Play_Pause}
のように書いても反応しません。
キーボードに付属しているメディアキーでも反応しないのですが、どこかに設定等があるのでしょうか
0337名無しさん@お腹いっぱい。 (ワッチョイ 3d58-1etN)
垢版 |
2020/08/28(金) 04:21:25.80ID:xw+3/nKK0
>>336
そもそもキーボードで反応しないならAHKに関係無くiTunesがメディアキーに対応してないだけじゃね
もしくはキーボード側の設定の可能性もあるがそれもAHK関係無いからスレチ
WMPとかでまず試して動作確認すればいいじゃん

あとはメディアキー使わなくてもほとんどのプレイヤーがスペースキーでPlay/Pauseになってんだろうから
ControlSendでスペースキー送れば良いんじゃね
0339名無しさん@お腹いっぱい。 (ワッチョイ 3d58-1etN)
垢版 |
2020/08/28(金) 15:54:02.21ID:xw+3/nKK0
>>338
>WMPでメディアキー使っても再生停止出来なかったので

WMPでメディアキー使っても再生できないならソフト側のせいじゃないだろ
論理的な思考力ないのかよ

・If 「WMPではメディアキー反応するけどitunesでは反応しない」→itunesが対応してないだけ
・ElseIf 「WMPでもメディアキー反応しない」→メディアキー自体が何かしらの理由で機能してない

ちなみにWMPや俺が使ってるプレイヤーソフト(AIMP)では>>336のスクリプトも機能してる
0340名無しさん@お腹いっぱい。 (ニククエ 1156-hfuR)
垢版 |
2020/08/29(土) 21:32:28.31ID:o6IPlPhZ0NIKU
>>339
WMPがなんらかのせいで対応してない状態になってるっていうことですよ
メディアキーのサービス更新やchrome://flags/#hardware-media-key-handlingだとか色々触ってみたけど結局直らないんでもうソフト側の前でメディアキー死んでるってことなんですよね
ただどれだけ調べても同じような現象は無いし治る方法もないんでもう諦めます
0341名無しさん@お腹いっぱい。 (ワッチョイ 866c-1etN)
垢版 |
2020/08/30(日) 00:02:54.54ID:Y/S0taCl0
>>340
だからその「なんらかのせいで」というのはお前のPC環境の問題であって
他の人はお前のPCの状態なんて触ったことも無ければ知ったこっちゃないわけ
ましてAHKとはなんの関係も無い問題からスレチ

AHKでやるならControlSendでスペースキー送れば良いだけ
0342名無しさん@お腹いっぱい。 (テテンテンテン MM66-yRqa)
垢版 |
2020/08/31(月) 23:25:39.14ID:oOBjBlAHM
いまのウィンドウからみて、タスクバー上で1つ隣のウィンドウをアクティブにする処理をしたいんだけど、
何かいい方法ありませんかね?

↓↓絶対もっとスマートな方法あると思うんだけど、思いつかぬ……

やりたいことは例えば、タスクバーの左から順に
(1)エクスプローラー、(2)Excel、(3)Firefox、(4)Google Chrome、(5)メモ帳
みたいに並んで起動しているときに、(前提として、タスクバーボタンを結合していないものとして)
2番目のExcelがアクティブになっている状態でスクリプトを実行したら、
3案目のFirefoxがアクティブになる感じ。
※元々Firefoxが最小化されているか、裏に回っているかに関わらず、タスクバーの該当アプリを押したときと同じ挙動で前面に来てほしい。
※Excelは単に裏に回るだけで、最小化されたりはしない。(これもタスクバーで別のウィンドウが選択されたときと同じ挙動)

【いま考えている方法】
まず、現在のアクティブウィンドウのIDを取得する。……(A)
Win+1など、Win+数字のショートカットで、タスクバーの該当番目にあるウィンドウがアクティブになることを利用して、
Win+1〜Win+9まで順番にSendして、(A)で取得したIDと同じウィンドウがアクティブになれば、
その次の番号のウィンドウがアクティブになったら処理を終了。

【たくさんの欠点】
・問答無用で左から順にアクティブ化するため、最小化していたウィンドウも通常サイズになってしまう。
・重なり順序も変わってしまう。
・処理に時間がかかる。(Ctrl+Tab的な感覚で行いたい)
・9つまでしか使えない。

どなたか良い手法をご存知でしたら教えてください。
0346342 (テテンテンテン MM66-yRqa)
垢版 |
2020/09/01(火) 08:25:33.23ID:UhHHrgA3M
>>343
>>344
Alt+Tabだと、アクティブ化した順に切り替えだから
直前のウィンドウならまだしも、4つ5つ前とかになるともう覚えてられないのよね。
タスクバー上の隣なら、常に見えているのでわかりやすいかなって思って。

>>345
ありがとう!
まだ私の環境では動かないのだけれど(ST_AccessibleObjectFromWindowが失敗してる?)、
説明を見るかぎりやりたいことはたぶんこれ。
もうすこしソース読んで頑張ってみる。
0348342 (テテンテンテン MM66-yRqa)
垢版 |
2020/09/01(火) 19:35:28.85ID:+mtd3kPjM
>>347
まだ挙動がちょっと変だけど、教えてもらった修正版で動くようになったよ。
ありがとう。
ちなみに環境はWin10 Pro 64bit。

エクスプローラーならエクスプローラーだけ、
Google ChromeならGoogle Chromeだけというように、
複数立ち上がっている同一アプリの中でしか切り替わらなかったり、
切り替わる順番も、タスクバー上の隣ってわけじゃなくて今一つ安定しないものの、
やりたいことに少し近づいた気がする!
ソースいじって確認していくしかないか……
0351350 (ワッチョイ 5f20-ALHH)
垢版 |
2020/09/03(木) 11:00:46.05ID:vJfgepHe0
キャレット位置の監視ならびにクリックすることで一応希望動作になりました
他にアイデアなどありましたら、引き続きお願いいたします

SetTimer, 500ms, 500
500ms:
 X := A_CaretX ? A_CaretX : X
 return

;ComboBox/キャレット位置
GuiControl, Focus, Edit?
MouseClick,, %X%, A_CaretY
Clipboard := "hoge"
Send ^v
0356名無しさん@お腹いっぱい。 (ワッチョイ bf11-th+2)
垢版 |
2020/09/05(土) 14:04:34.58ID:k1215Yye0
>>355
ありがとうございます
0357名無しさん@お腹いっぱい。 (ワッチョイ bf11-th+2)
垢版 |
2020/09/07(月) 20:42:26.83ID:uheywDGu0
無変換と左クリックでctrlと左クリックの動作にさせたいのですがどのようなスクリプトを書けばよいのでしょうか。
vk1D & LButton::
send,{CtrlDown}
MouseClick, LEFT
send,{CtrlUp}
Return
こういうスクリプトだとドラッグアンドドロップができないんですよね…
0360名無しさん@お腹いっぱい。 (ワッチョイ 7fe6-XrX+)
垢版 |
2020/09/07(月) 21:40:17.42ID:zmAyLEpT0
>>359
それだと正常に動作しない
keywait はキー指定しないとエラー吐くし
Sendも一つずつ書いて確実にLButton離した後にCtrl離すようにした方が良い
左クリック離したら{Lbutton up}、無変換離したら{ctrl up}をSendする
0362名無しさん@お腹いっぱい。 (ワッチョイ 6758-L48E)
垢版 |
2020/09/08(火) 10:13:23.09ID:aB6Rq+kj0
無変換キーにEnterキーを割り当てたくて

vk1D::Send {Enter down}{Enter up} 
vk1D:Enter

とかを試してみたら、無変換キーを押すとEnterキーとして機能するんだけど
なぜか『�@�@�@』というテキストも同時に入力されるようになった

これは記載方法が何か間違ってるの?
0363362 (ワッチョイ 6758-L48E)
垢版 |
2020/09/08(火) 10:39:24.20ID:aB6Rq+kj0
自己解決しました

ATOKのキーカスタマイズと競合していたようです
無変換のキーアクションを全て無効にしたところ、問題なくEnterキーとして機能しました
0364名無しさん@お腹いっぱい。 (キュッキュ b5b1-psz/)
垢版 |
2020/09/09(水) 18:23:49.17ID:hL0M52Ax00909
PhotoshopのShift + Alt + Lのハードミックスのショートカットを無効化することは可能でしょうか?
Photoshop上だけで入力がバグってshiftからaltを押すだけでレイヤーやブラシがハードミックスになって困っています。
Shift + Altの組み合わせは用途があるので無効化したくありません。
一方、ハードミックスのショートカットは不要なので消し去りたいです。
autohotkeyのスクリプトは書いてみましたが素人なので全く動作せず。。
どうか助けてください。

OSはwin10 home 64
Photoshopは2020ですが19、17でも同じでした。
0366名無しさん@お腹いっぱい。 (キュッキュ b5b1-psz/)
垢版 |
2020/09/09(水) 18:49:45.47ID:hL0M52Ax00909
>>365
たぶん何もかもダメだと思い消し去りました
0369名無しさん@お腹いっぱい。 (キュッキュ 8d40-pVuC)
垢版 |
2020/09/09(水) 20:33:21.86ID:wOD155n800909
>>364
そもそもAHK以前の問題でPhotoshopのキーショートカットを無意識に弄っただけじゃねえの
ショートカット無効にしたいならそれもPhotoshop側でやればいいじゃん
使ってないから知らんけどカスタマイズくらいできるんだろ
https://helpx.adobe.com/jp/photoshop/using/customizing-keyboard-shortcuts.html
0371名無しさん@お腹いっぱい。 (キュッキュ b5b1-psz/)
垢版 |
2020/09/09(水) 21:43:51.88ID:hL0M52Ax00909
>>367
申し訳有りません
+!l::return
こんなんしか私の理解では無理でした

>>368
ログの見方がわからず、理解ができませんでしたが、
他のちゃんと動作しているスクリプトと比べると、そもそも動作していないようでした。
サイト上で入力を確認できるものを使ってみたところ、Lは出力されていないようです。
あくまでPhotoshopだけのようです。もしPhotoshop上もLが出力されていないのだったら絶望的だと思うのですが。。

altからshiftを押してもPhotoshop上も問題なく、shiftからalt、または同時押しでショートカットが呼び出されるようです。

>>369
370の仰る通り、設定では変えられないショートカットです。
0372名無しさん@お腹いっぱい。 (ワッチョイ a958-F4ZW)
垢版 |
2020/09/09(水) 22:23:37.62ID:JM7IfwIs0
CCはもってないからわからんけど
サブスクリプションになる前のPhotoshop CS6では +!l::return で普通にキー殺せたよ

昔MSのMouse without BordersのグローバルホットキーがAHKで殺せなかったことならある
技術知識ない人間の妄想だがホットキー管理のレイヤー層みたいなので優先度が違ってるのかもしれんね
0380名無しさん@お腹いっぱい。 (ワッチョイ b5b1-psz/)
垢版 |
2020/09/09(水) 23:44:57.42ID:hL0M52Ax0
皆さん検証と意見ありがとうございます。
お騒がせして申し訳有りません。

原因が判明しました。
Photoshop上でaltを押すとメニューバーにフォーカスがいってしまうのを防ぐために入れたスクリプトが原因かと思います。
*~Alt::Send {Blind}{vk07}
コイツを停止したらならなくなりました。
しかしaltのシングル押しは乱用するのでメニューバーにフォーカスがいってしまうのは防ぎたいです。
どうすれば良いでしょうか?
0381名無しさん@お腹いっぱい。 (ワッチョイ b5b1-psz/)
垢版 |
2020/09/09(水) 23:54:18.84ID:hL0M52Ax0
>>378
本当にありがとうございます。
0385362 (ワッチョイ a958-5yGd)
垢版 |
2020/09/10(木) 09:36:00.17ID:fNpuGnD40
自宅PCでChangeKeyでCapsLockとカタカナ/ひらがなキーをF13・F14にして、AutoHotkeyで機能を割り当てしてて
会社PCでも同様のキー配列にしたいけど、ChangeKeyは管理者権限が必要で会社PCでは導入できないんだよね

管理者権限なしでキー配列を変更するソフトかAutohotkeyのみでCapsLock類を変更する方法ってないかな?

ちなみに以下を試してみた、らCapsLockキーが押しっぱなしな判定をされて上手く機能しなかった

;CapsLockキーにCtrlキーの仕事をさせる
Capslock::Ctrl
sc03a::Ctrl
0389名無しさん@お腹いっぱい。 (ワッチョイ ea11-pVuC)
垢版 |
2020/09/10(木) 15:50:58.91ID:6lvL52Oq0
本家wikiに書いてあるけど>>386がレスしているように
windows10 1909からvk07がreservedになっているらしいからついでに変えたほうがいいかも
忘れたころにゲームバーが突然開くようになって面倒な思いをするかもしれない
0391名無しさん@お腹いっぱい。 (ワッチョイ b5b1-psz/)
垢版 |
2020/09/10(木) 16:05:27.96ID:2KL8uN270
皆さんありがとうございます。
>>378のスクリプトを調整すると改善されました。
しかし私の交互に連打するようなキー操作では時折例のバグが出てしまいました。
私でも調整できるようなスクリプトを提供頂き本当にありがとうございます。

vk07は no mappingを意味するらしいです。
vkE8やvkFFに置き換えてみましたが、例のバグは出てしまいました。

altのみを押してPhotoshopの表示と設定を切り替える機能があり、1日何百回も押します。
単独押し無効化をしてもこれは使えるのですが、0.1〜0.5秒程のラグができるので避けていました。
しかしバグよりもマシなので単独押し無効化しラグを容認しようと思います。
外部アプリを試してラグがなかったら、そちらに変更しようと思います。
皆さん本当にありがとうございました。
0392名無しさん@お腹いっぱい。 (ワッチョイ a958-F4ZW)
垢版 |
2020/09/10(木) 16:15:14.23ID:A5yC1cZ60
>>385
>18
OSに起因してる問題なので他のアプリでも無理と思う
英語版Windowsならワンチャン

keystate取れなくてリピート発生してるならタイムアウト張れるかなと試してみたが
Caps+A とか他のキーと同時押しした後はリピートも発生しなくなるから無理やった

*sc03a::
SetTimer,caps_timout,600
Send,{CtrlDown}
return

caps_timout:
Send,{CtrlUp}
SetTimer,caps_timout,OFF
return
0393名無しさん@お腹いっぱい。 (ワッチョイ 36be-bL/7)
垢版 |
2020/09/10(木) 17:35:40.17ID:QDyGjbxh0
>>390
LAlt::return
RAlt::return ってことかな?
これだと、他のホットキー(Alt+Dなど)も無効になってしまいよろしくないので
~LAlt::Send {Blind}{vkE8}
のようにDownとUpの間に特定のキーを挟むことでAltならメニューモードへの移行を抑止しているわけ
このような動作は、外部アプリも同様のことをしていますよ
0401362 (ワッチョイ a958-5yGd)
垢版 |
2020/09/11(金) 22:56:55.34ID:G1QxvIFs0
ATOKで無変換キーを押したときに日本語入力OFF、AutoHotkeyで以下のように記載して
『無変換+2』で F2になるように設定してるんだけど、
『無変換+2』でファイル名を変更使用とすると、必ず日本語入力がOFFになる

多分『無変換+2』を入力する際に、先に無変換キーが押された判定になってると思うんだけど
AutoHotkeyの記載方法を変えて回避する方法ってあれば教えて

vk1D & 2::Send,{Blind}{F2}
0404名無しさん@お腹いっぱい。 (ワッチョイ 1e83-pVuC)
垢版 |
2020/09/11(金) 23:59:58.98ID:3NK9sCUm0
>>401
>多分『無変換+2』を入力する際に、先に無変換キーが押された判定になってると思うんだけど

まず「多分」とか言う前にちゃんと検証してから書き込めよ
その1行のスクリプトのみを動作させる分には「先に無変換キーが押された判定」なんてならんし
それで「先に無変換キーが押された判定」されてるとしたら他に余計な邪魔してる記述があるんじゃねえの

そもそも「ATOKで無変換キーを押したときに日本語入力OFF」というのはAHKでやってるのか、
それともATOK側のキー設定でやってるのか
もし前者ならそれが邪魔してる可能性大だから後者の方法に変えればいいし
ATOK使ってないけどIMEですら出来るんだからATOKでもキー設定くらい出来るだろ
0407名無しさん@お腹いっぱい。 (ワッチョイW a958-7ZO/)
垢版 |
2020/09/12(土) 01:27:21.44ID:wwfoc5Tq0
すり抜けもなにも単体押し動作についてはコード記述してないし
ATOK側で 他キーとの同時押し を考慮せず押したら必ず発火するようになってるだけでしょ
本来モデファイヤキーではないんだからある意味当然の動作
0408名無しさん@お腹いっぱい。 (ワッチョイ 1e83-pVuC)
垢版 |
2020/09/12(土) 01:39:19.80ID:B6pfhp8P0
>>407
コンビネーションキー書いたら普通は一つ目のキーは乗っ取られるぞ
例えば
Space & 1:: Send,0
としたらチルダを付けない限りSpaceは乗っ取られるから単独押しでSpaceとして使えなくなる
Space::Space
を付け加えるとSpaceも使えるようになる(この場合はSpace単独押しはキー離した時点で送信)
無変換キーにしても普通は同じ
本来乗っ取られるはずのものが乗っ取れてないということはすり抜けてるということ
0409名無しさん@お腹いっぱい。 (ワッチョイ 1e83-pVuC)
垢版 |
2020/09/12(土) 01:53:55.84ID:B6pfhp8P0
なので管理者権限で実行して正常に無変換キーを乗っ取れれば
vk1D & 2::Send,{Blind}{F2}
vk1D::vk1D
とすることで『無変換+2』を押した時はF2のみ送信して無変換は送信されず
単独押しした場合はキーを離した時点で無変換が送信されて日本語OFFになる
0410名無しさん@お腹いっぱい。 (ワッチョイ 5e11-eH0u)
垢版 |
2020/09/12(土) 15:29:33.58ID:Z7QY2LvR0
ctrl+tabやctrl+shift+tabにもAltTabと似たようなスクリプトってないんですか?
例えばvscodeはctrl+tabでリストが表示されてタブが巡回されるんですけど普通に Send,^{Tab}ってやるとまともに動かなくなって不便なんですよね…
0414名無しさん@お腹いっぱい。 (ワッチョイW 5e11-FOpt)
垢版 |
2020/09/12(土) 17:52:48.91ID:Z7QY2LvR0
>>412
vk1D & f::
send,{CtrlDown}
send,{Blind}{Tab}
Keywait, vk1D
send,{CtrlUp}
Return
僕の力だとこのスクリプトが精一杯で…
でもこれだと思っていたものとは全く違いすぎて詰まってしまいました…
>>413
ありがとうございます。
しかし僕はあくまでもvscodeではリスト表示にし続けたいんです。
0417名無しさん@お腹いっぱい。 (アウアウオーT Sa12-9YDN)
垢版 |
2020/09/12(土) 20:34:07.29ID:rBhzcfbaa
AHKからスクリーンセーバーを起動したいのですが
Run, "C:\Windows\System32\ssText3d.scr" /s
のように書くと、何故かファイルが存在しないというエラーが出ます
エクスプローラから見るとちゃんとファイルはありますし
コマンドラインから
"C:\Windows\System32\ssText3d.scr" /s
と入力したらちゃんとスクリーンセーバーが起動します
どうすればAHKからスクリーンセーバーを起動できるのでしょうか?
0422417 (アウアウオーT Sa12-9YDN)
垢版 |
2020/09/13(日) 13:05:54.81ID:VsDdvnlFa
ご返答ありがとうございます
まさに64bit Windowsで32bitのAHKを使っていることが原因でした
ファイルシステムリダイレクタというメカニズムをはじめて知りました
ありがとうございました
0424名無しさん@お腹いっぱい。 (ワッチョイ 89bd-jF+x)
垢版 |
2020/09/13(日) 19:35:14.15ID:BYR+nd6M0
>>423
全てのホットキーに$をつけたときと同じになる(ソフトウェア的なキーボードイベントを無視する)
これがメリットでありデメリット
個別に細かい調整がしたいなら#UseHookは書かない

メリット: $書く手間が省ける
デメリット: 個別に$なしのホットキーにできない
0425名無しさん@お腹いっぱい。 (ワッチョイ 7db1-yjei)
垢版 |
2020/09/13(日) 20:25:54.96ID:2su4JZVF0
#UseHookはON/OFF出来るし複数の箇所に記述することも可能
だからフックするエリアをON-OFFで囲うことでフックしないエリアと別にできる
スクリプトが長くなるとフックしてるエリアか否か分かりにくくなるかもしれない → デメリットかな?
0429名無しさん@お腹いっぱい。 (ワッチョイ f776-lMKa)
垢版 |
2020/09/16(水) 10:26:38.51ID:6p38klUn0
左Alt + Ctrl で ShiftAltTab 機能するようにしているのですが
その後にAltキーを離したら、アクティブになったウィンドウに
マウスカーソルを飛ばしたいのですが、下記では上手くいきません。
どのようにしたらよいでしょうか教えて下さい、、

LAlt & Ctrl::ShiftAltTab
KeyWait, Alt
Sleep, 200
WinGetActiveStats, Title, Width, Height, X, Y
MouseMove, Width / 2, Height / 2
return
0430名無しさん@お腹いっぱい。 (ワッチョイ 7758-Cup9)
垢版 |
2020/09/16(水) 12:04:50.41ID:ZEJxUAhI0
>>428
sysgetにはそんな機能元から無いんじゃね

>>429
ホットキーを一行で表記したコマンドは二行目以降は実行されない(一行で完結してる)
ShiftAltTabは一行表記専用コマンドなので他の動作を追加したいなら>>415を参考に一つずつバラして書きな
0432名無しさん@お腹いっぱい。 (ワッチョイ ffdc-Yzgg)
垢版 |
2020/09/16(水) 18:16:32.55ID:uM6IGn9Q0
リフレッシュレートの取得ですが、海外本スレでみつけました。
おさわがせ。
VarSetCapacity(DM,156,0), NumPut(156,&DM,36, "UShort")
DllCall( "EnumDisplaySettings", UInt,0, UInt,-1, UInt,&DM )
msbox, % NumGet(DM,120)
0437名無しさん@お腹いっぱい。 (アウアウエーT Sadf-x1Mn)
垢版 |
2020/09/17(木) 17:05:24.36ID:4vwGVhL7a
エラーでググってもわかりませんでした・・・
line text: findtext_Gui(cmd,arg1:="")
error.funcitons cannot contain functions.

細かく書くと
”hoge.ahk”は”FindText.ahk”というImagesearchの便利版みたいなので作るファイルですが、(”hoge.ahk”で”FindText.ahk”を呼び出して動作するようです)
原因も対処法もさっぱりです・・・
0440名無しさん@お腹いっぱい。 (ワッチョイ 97b1-IzWu)
垢版 |
2020/09/17(木) 19:16:46.85ID:in4j28AM0
>>437
少なくとも再現できる最少のコード貼ってもらえないとこっちも"さっぱり"なんだが…

>line text: findtext_Gui(cmd,arg1:="")
関数の引数に「arg1:=""」のような「:=」は書けなかったような → 「arg1=""」と修正したらどうか?
動かなかったらスマンね
0442名無しさん@お腹いっぱい。 (ワンミングク MM7f-6nsE)
垢版 |
2020/09/17(木) 19:49:31.71ID:EXtdT3ICM
多分FindText.ahkで関数使ってるのにそれごと#Includeした上で関数で包もうとしてるんでしょ

hoge.ahkの#includeを外して

#Include FindText.ahk
aaaaa()
aaaaa()
{
#Include %A_ScriptDir%\hoge.ahk
}
でいけんじゃね

まあ自分ならaaaaa()はhoge.ahk側で関数化するけど
0443名無しさん@お腹いっぱい。 (ワッチョイ 9f20-5MQP)
垢版 |
2020/09/17(木) 20:17:00.79ID:yCKYDmYd0
ID:4vwGVhL7a
FindText.ahkの使い方が間違っている気がするけど...

>>440
引数のデフォ値のコロンなしは今は推奨されてないよ
> The use of = (without a colon) is permitted for backward-compatibility, but not recommended, and will not be permitted by AutoHotkey v2.
> Regardless of which operator is used, default values which are strings must always be enclosed in quote marks.
0444名無しさん@お腹いっぱい。 (ワッチョイ 97b1-IzWu)
垢版 |
2020/09/17(木) 21:34:25.52ID:in4j28AM0
>>443
どうも
そうだったのか…自分は1.1.33.02使用中だがあらためて付属の英語版ヘルプ読んでみたらそういう表記になっていた
でも中途半端だよな、スクリプトへの引数の数や内容を変数に代入する時は「=」と「:=」表記で内容変わってくるし
個人的には全て「:=」表記に統一して欲しいよ、ややこしくて仕方ない(あと「%」表記も)
0451名無しさん@お腹いっぱい。 (オッペケ Srcb-olMd)
垢版 |
2020/09/19(土) 01:22:57.56ID:LPvHgbsEr
無理だとは思うのですが、エクスプローラにて、
「今現在自分がいる場所のフォルダ名をペーストする」という機能はさすがに作れないですよね…
動画制作の際、フォルダ名を付け、その中にプロジェクトファイルの雛形をコピペするのですが、その際にプロジェクトファイルにもフォルダ名と同じ名前を付けなければいけません。
今現在のフォルダ名、というか一つ上の階層名をコピーというものがあれば実現は出来そうなのですが…さすがに厳しいでしょうか?
宜しくお願い致します。
0455名無しさん@お腹いっぱい。 (ワッチョイ 1756-So9o)
垢版 |
2020/09/19(土) 15:12:47.55ID:nTmhGbnM0
>>452->>454
ありがとうございます
フォルダタイトルを取得してコピペという動作にすればいいのは分かったのですが、その書き方がどれだけ調べても分かりません

;エクスプローラのタイトル取得してコピー
;Alt+Shift+Cでタイトルをコピー
#IfWinActive,ahk_class CabinetWClass ;エクスプローラのクラスがある時
!+c::
WinGetTitle,title,

これ以降のフォルダタイトルを取得、クリップボードにコピー、ペーストの一連の書き方が分からず手詰まってします。
どなたか分かる方いらっしゃいますでしょうか。お願いします。
0456名無しさん@お腹いっぱい。 (ワッチョイ 9f20-5MQP)
垢版 |
2020/09/19(土) 15:17:29.28ID:Fn8EPBHg0
>>451
1) ファイル作成
  今現在自分がいる場所のフォルダ名をペーストする.ahk → %ProgramFiles%\AutoHotkey\Scripts
2) レジストリ登録
3) 実行
  ファイル選択 右クリック→リネーム→

■今現在自分がいる場所のフォルダ名をペーストする.ahk
SplitPath, 1, FileName, FolderPath
SplitPath, FolderPath, FolderName
;追加
nName := RegExMatch(FileName, "^" FolderName) ? FileName : FolderName "_" FileName
;リネーム
IfNotEqual, FileName, %nName%, FileMove, %1%, %FolderPath%\%nName%

■レジストリ登録
MsgBox, 262452, AutoHotkey, レジストリに値を書き込みますか?
IfMsgBox, No, ExitApp
RegWrite, REG_SZ, HKCR\*\Shell\リネーム, MUIVerb, リネーム
RegWrite, REG_SZ, HKCR\*\Shell\リネーム, SubCommands
RegWrite, REG_SZ, HKCR\*\Shell\リネーム\Shell\1,, 今現在自分がいる場所のフォルダ名をペーストする
RegWrite, REG_EXPAND_SZ, HKCR\*\Shell\リネーム\Shell\1\Command,, "`%ProgramFiles`%\AutoHotkey\AutoHotkey.exe" "`%ProgramFiles`%\AutoHotkey\Scripts\今現在自分がいる場所のフォルダ名をペーストする.ahk" "`%1"
0457名無しさん@お腹いっぱい。 (ワッチョイ 1756-So9o)
垢版 |
2020/09/19(土) 22:28:05.81ID:nTmhGbnM0
>>456
ありがとうございます。
ただ本当に分からなくて申し訳ないのですが、このレジストリ登録の記述は、vbsでは無いのでしょうか?
.vbsで記述して実行してもエラーが出るので…。申し訳有りませんがご教授いただけるとありがたいです。
0458名無しさん@お腹いっぱい。 (ワッチョイ 7758-Cup9)
垢版 |
2020/09/19(土) 22:48:36.12ID:jl8WgP3W0
>>455
エクスプローラーの設定でフルパスを表示しない(今いるフォルダ名をウィンドウタイトルにする)
WinGetActiveTitleでウィンドウタイトル=今いるフォルダ名を取得して
Clipboard = %title%
にしてファイル名にペースト
0469名無しさん@お腹いっぱい。 (ワッチョイ b358-b+lb)
垢版 |
2020/09/25(金) 21:02:28.92ID:+wDzDU+n0
Menu, Tray, add, Edit_hogehoge
Return

Edit_hogehoge:
RunAs, (ユーザー名), (パスワード)
Run, notepad.exe %A_ScriptFullPath%
RunAs
Return

メニューに別途エディットコマンド追加してRunAs
メニューの名前はお好きなように
0472名無しさん@お腹いっぱい。 (ワッチョイ b358-b+lb)
垢版 |
2020/09/26(土) 00:15:07.32ID:QPxTUZHr0
>>470
あと直接的な対策って意味がよく分からんのだが
そもそもエディタが管理者起動されて困る理由は?
起動時に確認メッセージ出てきて煩わしいってならUACの設定を低くしとけばいいだけだし
むしろ俺はエディタは敢えて常に管理者権限起動してるわ
0473名無しさん@お腹いっぱい。 (テテンテンテン MMde-3wXt)
垢版 |
2020/09/26(土) 11:16:13.41ID:+l/xFA1QM
変換キーとタッチパッドのタップでマウスホイールボタンのタップにしたかったのですが、この記述だと変換を押しながらタッチパッドで移動したあとはMButtonが動作しません。何か対策はありますか?
変換キーはf14を割り当てています。
f14 & LButton::Send, {Blind}{MButton}
0475名無しさん@お腹いっぱい。 (テテンテンテン MMde-vh8N)
垢版 |
2020/09/26(土) 18:47:48.56ID:gI0ar3qsM
>>474
ありがとうございます。このコメントを見て前に使っていたパソコンで試したら普通に動作しました
新パソコン HP SPECTRE x360 13
旧パソコン NEC 法人向けパソコン (core i5 の第8世代)
両方ともwindows10でアップデートはしています
全く同じスクリプトでosも同じでも動作が変わることがあるんですね
0480名無しさん@お腹いっぱい。 (ワッチョイW 17da-vh8N)
垢版 |
2020/09/26(土) 21:29:01.67ID:f4zsWHI60
すいません、お騒がせしてますね。
解決はできなかったですが、スクリプトじゃなくその他が原因だとわかったのはとてもありがたいです。
2台のパソコンは常駐ソフトは似てますが全部は同じではありません。
0481名無しさん@お腹いっぱい。 (ワッチョイ 6f76-AsQc)
垢版 |
2020/09/27(日) 14:41:21.39ID:StjMx0SL0
タスクビューが1万倍使いやすくなった

#IfWinActive,
!Tab:: ; Alt+Tabでタスクビューを表示
Send,#{Tab}
return

;; タスクビュー
#IfWinActive, タスク ビュー ahk_exe explorer.exe
+!Q::EditMe(A_LineFile, A_LineNumber)

w::up
a::left
d::right
s::down
q::#^left
e::#^right
0490名無しさん@お腹いっぱい。 (ワッチョイ 23ed-4fpq)
垢版 |
2020/10/02(金) 15:18:29.95ID:GM4xvjP40
トラックパッドの4本指の左右ジェスチャの仮想デスクトップの切り替えの
にゅるっとした動作の量を測って、何回振ったら何の動作するってやりたいんだけど
仮想デスクトップの切り替え中のアニメーション遷移してるパラメってどこ見ればいいんでしょ
0491名無しさん@お腹いっぱい。 (ワッチョイ 7fad-Kk5w)
垢版 |
2020/10/02(金) 16:33:04.78ID:voPv3vuf0
トラックパッドの特殊ジェスチャーはAHKであれこれするの無理じゃね
2本指スクロール程度ならキーヒストリーでも検出できてるけど
3本指左右(タスク切り替え)とか4本指左右は何も検出されないし
0494名無しさん@お腹いっぱい。 (ワッチョイ db05-IVWr)
垢版 |
2020/10/13(火) 21:15:38.19ID:WIV8aGwm0
IMEがオンの時だけ、
「x」キーと「ー」を入れ替えたい

;;☆Google Chrome
;;☆Microsoft Edge
LAlt & w::Send,^w
0497名無しさん@お腹いっぱい。 (ワッチョイ efc1-fMdf)
垢版 |
2020/10/16(金) 02:29:08.51ID:kB4NCdNb0
キーボードが手元にない時にマウスだけでホットキーが出来ないか試行錯誤してます
やりたいことは下記です

「Lボタンを押しながらマウスホイールを下に回転させた場合に発動」

LButtonWheelDown::
LButton,WheelDown::
{LButton}{WheelDown}::

いずれの方法でもホットキーが実行されませんでした

どなたかアドバイスいただけますでしょうか

またマウスでのホットキー実行についてこの方法の方が便利だなどありましたら
そちらも教えていただきたいです
0498名無しさん@お腹いっぱい。 (ワッチョイ 9f5a-fMdf)
垢版 |
2020/10/16(金) 02:39:14.20ID:jICo6JW00
>>497
Wikiをきちんと読もう
0501名無しさん@お腹いっぱい。 (ワッチョイ efc1-fMdf)
垢版 |
2020/10/16(金) 05:30:11.79ID:kB4NCdNb0
みつかりました
&でつなぐんですね…なるほど


ホットキーの出し方はわかったものの機能の実現は出来なかったので続けて聞かせてください


・やりたいこと
デュアルモニター使用時に、マウスを使ってアクティブなウィンドウをモニター間を移動させる
(デュアルモニターだけど横に並べずにお互いに見えない位置に置いている、リビング用とキッチン用モニター)

アクティブなウィンドウをモニター間移動するショートカットはシフト+Win+→キーなのでこれを使う


・書いたコード
マウスを右クリしながら左クリックで発動(発動の仕方は何でもよい)

~RButton & LButton::
Send +#{Left}
Return


・結果
アクティブなウィンドウが目の前のモニターにある時は、他のモニターにウィンドウを移動出来た
しかし、見えない他のモニター上のウィンドウを目の前のモニターに移動させることが出来なかった

タスクバー上で目的のウィンドウをクリックしていったんアクティブにしても
ホットキーを使ったとたん、マウスカーソルの位置がクリック状態になるのが原因



ここまでで力つきました、どなたかアドバイスなどお願いします
0503名無しさん@お腹いっぱい。 (ワッチョイ bb58-YOMq)
垢版 |
2020/10/16(金) 09:16:33.87ID:QGtun8kL0
マウスクリックした段階でクリック位置にフォーカス切替わるのがOS仕様なので
>502の言うようにマウスジェスチャソフト使うか
~外してXbutton12などのドラッグに影響のないボタンに割り当てる方がスマートだと思うけど
どうしても右クリトリガでやりたいなら実行前に Send !{Tab} 入れて失ったフォーカスを戻してやったらいいんじゃね
時間調整は適当にsleep入れる

けど根本的な問題としてディスプレイ設定ををミラー(複製)で使うのではあかんのか?
0504名無しさん@お腹いっぱい。 (ワッチョイ efc1-fMdf)
垢版 |
2020/10/16(金) 10:20:29.34ID:kB4NCdNb0
>>502
>>503
マウスジェスチャーをAHKで書くの面倒だなと思ってたんですが
書いて配布してる人がいたんですね、便利、後で試してみます

たしかにデュアルで使う意味あるのかと思われるでしょうが、
HDMI切り替えで更にもうひとつのモニターを拡張?で使う機会があるので、
マウス操作で切り替えが便利なのでした

ありがとうございます
0505名無しさん@お腹いっぱい。 (ワッチョイ eb76-T518)
垢版 |
2020/10/18(日) 00:02:18.85ID:Cg8HaPH50
以下のスクリプトについて、改善案を頂きたいです。
https://pastebin.pl/view/0c9f86a2
※PasteBinからコピペして動かしてみてください。

このスクリプトでは、例えば次のように、キーボードをスクリプト実行用の盤面にシフトして運用することができます。
「変換+Aの後R押下::AutoHotkeyをリロード」
「変換+E→C::1行コピー」
「変換+E→D::全消去」

問題点は、
@上記スクリプトにて☆をコメントした部分について、スクリプト登録の際に複数回同じ文言を入力する必要がある。
Atoggle_aが有効な状態でtoggle_eも有効にしてしまうことが可能。
です。

この解決のためにヒントを頂きたく思い、書き込みました。

便利ではあると思いますので、ぜひ使っていただきたいという思いと共に、改善を施せればと思っております。
0511名無しさん@お腹いっぱい。 (ワッチョイ 8230-8DiG)
垢版 |
2020/10/21(水) 17:33:42.16ID:p/8W4acR0
3を押したらF3を出力して、
その後5000msの間、3を押してもF3を出力させない
というスクリプトをつくりたいんだけど
Blockinputで特定のキーの入力だけブロックすることができないから困ってます。
なにかほかに手はないでしょうか
0513名無しさん@お腹いっぱい。 (ワッチョイ 8230-8DiG)
垢版 |
2020/10/21(水) 19:18:17.24ID:p/8W4acR0
なるほどそんな手が!ありがとう
0514名無しさん@お腹いっぱい。 (ガックシ 06e6-bMs7)
垢版 |
2020/10/22(木) 00:36:46.32ID:+oFWEyP36
>>505です

皆さんありがとうございます。
時間が取れなくなったため、お礼だけ言いに来ました。

頂いた情報をもとに、近いうちに改めて検討してみます。
0515名無しさん@お腹いっぱい。 (ワッチョイW 712d-rZCk)
垢版 |
2020/10/22(木) 11:29:24.22ID:uHQQeSKa0
ええで
0516名無しさん@お腹いっぱい。 (ワッチョイ 46c0-8DiG)
垢版 |
2020/10/22(木) 17:31:33.33ID:k3pJj+AJ0
設定に苦慮しており、助けていただけると嬉しいです。

やりたいこと:テンキーのEnter(NumpadEnter)を押している間、Ctrl+Shiftに置き換えし、
テンキーのEnter(NumpadEnter)を二回押し、2回目を押している間、Ctrlに置き換え。

*NumpadEnter::
Keywait, NumpadEnter,
Keywait, NumpadEnter, D T0.15

で色々試していますが、二度押し&押しっぱなしにしか対応できず困っています……。
よろしくお願いします。
0518名無しさん@お腹いっぱい。 (ワッチョイ e9bc-untD)
垢版 |
2020/10/23(金) 22:24:48.75ID:xLBME1pE0
>>517
諦めたんじゃなかったのかw

COMオブジェクト操作したり
https://note.com/takanaction/n/n608bd1c598b9
ショートカットキーを送ったりすれば良いんじゃない?
https://www.autohotkey.com/boards/viewtopic.php?t=62090

メジャーなソフト用のスクリプトはいろんな人が作ってるから、「autohotkey itunes」みたいにググって参考にすると良いかも
0520名無しさん@お腹いっぱい。 (ワッチョイ d156-bMs7)
垢版 |
2020/10/24(土) 02:19:29.00ID:T5kTB8Vu0
>>519
iTunesにメディアキーを送るソフトを使用した所
https://i.imgur.com/0vvO32H.png
このようにFailed to set hotkeyのエラーが出ました。
メディアキーの機能が死んでいるのは明白なのですが、メディアキーを復活させる方法が一向に分かりません。

かなり調べたのですが出てきたこちらの記事を
https://www.reviversoft.com/ja/blog/2014/06/what-to-do-when-your-media-keys-no-longer-work-on-your-keyboard/
試したのですがやはり駄目でした。(Human Interface Device Accessはそもそも動いていた)

windows10のメディアキーが効かない場合に動くようにする方法は無いでしょうか…。
本当に情報がありません。
0525名無しさん@お腹いっぱい。 (ワッチョイ bd11-gGz3)
垢版 |
2020/10/25(日) 12:47:57.82ID:aQtH8BBo0
ユーザー切り替えした時切り替え前のアカウントで動作させ続けるのは可能?
loopカウントを数えるだけのスクリプトは裏で動いてたけどメモ帳に文字を送り続けるようなやつは切り替えの時点で途切れてる
UWSCでも同じ感じで駄目だったし元のアカウントでのウィンドウのアクティブ化はやっぱり無理かな
0526名無しさん@お腹いっぱい。 (アウアウウーT Sa45-gGz3)
垢版 |
2020/10/25(日) 15:16:53.36ID:cnuvEfeua
>>525
>ユーザー切り替えした時切り替え前のアカウントで動作させ続けるのは可能?
それができたらOSの欠陥だと思うけど
どういう理由でアカウントを切り替えて切り替え前のユーザのプログラムを継続させたいいんだ?
ユーザをログアウトせずにあるプログラムだけ別アカウントで動作させることができる
(runas ソフトによってはできない)が
そういう方法と組み合わせて近いことをすることはできないのかな
0532名無しさん@お腹いっぱい。 (ワッチョイ 998d-yS8S)
垢版 |
2020/10/30(金) 17:11:57.65ID:Ndf4EDLW0
>>531
IMEが有効な時にキーの置き換えを無効にしたくて、特定のアプリでは無効になってくれるのに
メモ帳では無効になってくれません
これってその仕様のせいですかね?


#include <ime>
#If ! IME_GET()
a::b
#If
Return
0533名無しさん@お腹いっぱい。 (ワッチョイ 998d-yS8S)
垢版 |
2020/10/30(金) 18:12:07.34ID:Ndf4EDLW0
指定したアプリ以外ではスクリプトを無効にしたいのですが、”#IfWinActive”で指定しても、”#If ! IME_GET()”を入れると指定以外のアプリで実行されてしまいます
指定したアプリ以外の場合は”#If ! IME_GET()”の部分を読まないようにするにはどうすればいいでしょうか


#IfWinActive ahk_exe notepad.exe

#include <ime>
#If ! IME_GET()
a::b
#If

Return

#IfWinActive
0534名無しさん@お腹いっぱい。 (ワッチョイ 6902-CXnf)
垢版 |
2020/10/30(金) 18:28:45.29ID:PSQm7T6f0
#If~ は次の #If~ が出現するまで有効、つまり一行目の #IfWinActive ahk_exe notepad.exe は無意味

条件を複数指定したければ式を引数に取る #If を使う。↓こんな感じ

#If WinActive("ahk_exe notepad.exe") && !IME_GET()
0540名無しさん@お腹いっぱい。 (ワッチョイ f158-L1Xi)
垢版 |
2020/11/01(日) 21:38:30.40ID:+lp4/pQd0
今まで使えてたんですが、最近のバージョンアップのせいか、気づいたら使えなくなってました。
仕様変更があったみたいなインフォあったらページ教えてくれると嬉しいです。

キーを長押しした場合に分岐する関数です。
この「Time=0.2」の部分が機能しなくなりました。
初期値を指定して省略する、ということをせず、
関数を呼び出す際、省略せずに逐一「,"0.2")」と記述すれば機能するので、
現状すべてそれで修正しました。

また、数値を「Time=0.5」にすると一応分岐が機能するんですが、
体感的にどうも1.0秒くらい押しておかないと長押し判定されないんです。

Hold(Key, SendA, SendB, Time=0.2)
{
KeyWait, %Key%, T%Time%
If (ErrorLevel=0)
{
Send, %SendA%
}
Else
{
Send, %SendB%
KeyWait, %Key%
}
}

F1::Hold("F1", "{F1}", "^{F1}")
0541540 (ワッチョイ f158-L1Xi)
垢版 |
2020/11/02(月) 04:26:40.82ID:YjDJU8KL0
すみません自己解決しました!
バージョンアップのせいなんかじゃありませんでした・・・

別の関数の都合で以下のようなものを書いていたのですが、
SetFormat, float, 3.0
これ計算結果に対してだけ効果のあるものだと思ってたんですが、
関数の初期値に指定した数値にも影響するみたいでした。
0.5という指定のときに1.0に四捨五入されるのも納得です。

自分がアホでした、スレ汚しごめんなさい。
0545名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/04(水) 17:16:09.35ID:1IOEDSZU0
真にマルチスレッド化する方法は、どうしてもないのでしょうか?
例えばAutoHotkey.exeをコピーして、別で実行してみても、それぞれのスクリプトは疑似マルチスレッド的に動作しています。
PCの一般ユーザーでエンジニアではないです。根本の仕組みがわからないために湧いた疑問なのですが、
何とかして別のソフトのように実行できないものでしょうか?
0548名無しさん@お腹いっぱい。 (ワッチョイ c13e-79Tt)
垢版 |
2020/11/05(木) 18:07:56.73ID:I/mZi28I0
新しいパソコンで、ジョイパットが反応してくれません

AutoHotkeyのウィンドウ(実行履歴とか変数一覧を表示してくれるやつ)が
アクティブ状態だと何故か普通に反応するのですが、それ以外ではうんともすんとも言ってくれません
この症状に心当たりある人ますか?
0550名無しさん@お腹いっぱい。 (ワッチョイ c13e-79Tt)
垢版 |
2020/11/05(木) 22:18:37.85ID:I/mZi28I0
検証用に数行だけ書いたスクリプトでやってみてもダメなので#If系は関係なさそうです
一応、JoyToKeyは正常に反応するので、

ジョイパット操作をJoyToKeyで受ける→JoyToKeyが出力したキー操作をAutoHotkeyで処理する

ということは出来そう
ただ、書き直しが面倒なうえに処理がややこしいので、できれば避けたい
0552名無しさん@お腹いっぱい。 (ワッチョイ c13e-79Tt)
垢版 |
2020/11/05(木) 23:50:16.43ID:I/mZi28I0
検証用といっても、ツールチップでジョイパットの状態を表示しているだけです。
SetTimer, Timer, 100
Timer:
  GetKeyState, joyx, JoyX
  GetKeyState, joyy, JoyY
  GetKeyState, joy1, joy1
  GetKeyState, joy2, joy2
  GetKeyState, joy3, joy3
  GetKeyState, joy4, joy4
  ToolTip,%joyx% %joyy% ,0,0
  ToolTip,%joy1% %joy2% %joy3% %joy4%,1,25,2
return
joy1::ToolTip,1,1,50,3
joy2::ToolTip,2,1,50,3
Joy3::ToolTip,3,1,50,3
Joy4::ToolTip,4,1,50,3
0553名無しさん@お腹いっぱい。 (ワッチョイ 72ba-t1Nk)
垢版 |
2020/11/06(金) 00:51:44.04ID:IZlN468w0
>>552
試したけどスクリプト自体は何も問題なく動いてる
AHKのウィンドウを出さなくてもX軸やY軸やボタンも取得してツールチップに表示されてる
Chromeやメモ帳などアクティブ時でも問題なし
JTKも常駐させてるけど併用して問題ない

となると貴方の環境で何か別のスクリプトや他の常駐ソフトなどが邪魔してるんじゃない?
ちなみにスクリプトを管理者権限で実行してもダメ?
0555名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 04:26:02.69ID:Cd90Lss80
>>546
>>547

例えばAutoHotkey.exeをリネームしたa.exeとb.exeを用意します。
それぞれa.ahkとb.ahkを実行します。
どちらのスクリプトにもループ処理が入っています。
これらのループ処理を両方実行した場合、片方のみ実行するより動作が鈍くなります。
つまり実行ファイルを分けても、それぞれが割り込みあっているのだろうと思います。
これを、完全に別物として実行させたいわけです。
0557名無しさん@お腹いっぱい。 (ワッチョイW 6558-RVv3)
垢版 |
2020/11/06(金) 14:28:42.61ID:03VprpHh0
スレッドとプロセスがごっちゃになってるぽい?
https://image.itmedia.co.jp/ait/articles/0503/12/dt-mthread01_02.gif

>555
exe(プロセス)を分けて動作が遅くなるっていうのは
色んなアプリを一度に立ち上げて動かしてたら1窓単体起動のときより重くなりましたつってるのと同じでは?
>556の言うように手動で任意のCPU割り当てる方法もあるけど
プロセス別のコア割り当ては基本OS側の仕事だと思う

同一プロセス内でのマルチスレッドについては
AHKは擬似マルチスレッドなのでマルチコア対応はしてないと思う
0559名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 21:48:27.22ID:Cd90Lss80
>>556

検証用のスクリプトは用意していないので、わかりにくいかもしれませんが現状を話します。
何が関係しているかわかりませんから、念の為詳細に書きます。

AutoHotkey.exeでAutoHotkey.ahkを常駐させています。AutoHotkey.ahkにIncludeしているスクリプトがいくつかあり、
そのうち1つがキーボードでマウス操作をする、mouse.ahkです。
あるトリガーキーを押してから、再度そのキーを押すまで、キーの入力をwhile、if、GetKeyStateでループ、監視し続けます。
そこでカーソル移動用のキーを押すと、MouseMoveを発動します。発動間隔は監視間隔なので、20ミリ秒程度の設定になっています。

これとは別に、MouseGestureL.exe(AutoHotkey.exeを改名した別ファイル)も常駐させています。

そこで問題なのが、MouseGestureL.exeを終了させると、AutoHotkey.exe下のmouse.ahkによるマウスカーソルの移動速度が上がります。

このことから、AutoHotkey.exeとMouseGestureL.exeで別プロセス?として実行していたはずのスクリプトですが、相互にスレッドを奪い合って?いるのではないかと思いました。
MouseGestureL.ahkの仕様はわかりませんが、ループ処理がなされているのだろうと推測しました。

ともかく、実行ファイルもスクリプトファイルも分けて、独立したはずのアプリケーション同士が干渉しあっているので、
疑似マルチスレッド動作になっているのではないかと思いました。

以上です。
これを互いに完全に独立した動作にする方法がないかと思い、質問しました。

関係するかわかりませんが、CPUはi7-8700Kです。
0560名無しさん@お腹いっぱい。 (ワッチョイ 6176-9BKS)
垢版 |
2020/11/06(金) 21:48:50.69ID:Cd90Lss80
>>557
>>558
0562名無しさん@お腹いっぱい。 (ワッチョイ d25a-t1Nk)
垢版 |
2020/11/06(金) 22:14:53.95ID:94t2tBdQ0
>>559
>そこで問題なのが、MouseGestureL.exeを終了させると、AutoHotkey.exe下のmouse.ahkによるマウスカーソルの移動速度が上がります。
MouseGestureL.exeも基本常駐じゃないの?終了即再起動することはあるけど終了したままにするケースがよく分からない
ま、何にしてもMouseGestureLが終了したらmouse.ahkの挙動が変わるのが嫌ということなら
MouseGestureLの方にmouse.ahkをIncludeさせればいいのでは?
それならMouseGestureL起動中しかmouse.ahkも動作しないわけだから
0563名無しさん@お腹いっぱい。 (ワッチョイ a9b1-xP1L)
垢版 |
2020/11/06(金) 22:57:45.00ID:zxpauMpi0
>>559
自分もMGL使ってるけど同じahkスクリプトで常駐させたいものはMGLのプラグインにして
監視するのには「while」などのループじゃなく「settimer」使ってるな

プラグインにするのは別に薦めないけど、試しに「while」の代わりに「settimer」で監視してみては?
0564名無しさん@お腹いっぱい。 (ワッチョイW 6558-RVv3)
垢版 |
2020/11/07(土) 01:04:37.47ID:lXeAUpve0
マルチスレッド云々以前の問題な気が
まず、マウスの挙動を制御するプロセスス2つ同時に動かすことで干渉しあってる可能性は?
コントロールの奪い合いになってたりしない?

あとmouse.ahkの回し方に問題あると思う
20msの高頻度でMousemoveし続けて必ず時間どうりに動かすのがまず無理だし
ループ監視するよりHotkey、#if あたりで2ストロークイベントにしたほうがスムースに動くんではないか
0566名無しさん@お腹いっぱい。 (ワッチョイ b197-NW7M)
垢版 |
2020/11/10(火) 16:23:55.12ID:7m/sr7zP0
ループ間のディレイをなくす設定ってありますか?
Reloadで中断できるようにDllCallのSleepを小分けにしてループさせてたんですが
WindowsとAHKのアプデ後からループ10回で0.1秒ぐらいのディレイが入るようになりました
現状はこの設定です
#NoEnv
ListLines Off
Process, Priority, , H
SetBatchLines, -1
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
SetControlDelay, -1
SendMode Input
0568名無しさん@お腹いっぱい。 (ワッチョイW 6558-RVv3)
垢版 |
2020/11/10(火) 21:17:47.40ID:Opml9bS20
winみたいなマルチタスクOSではアプリ層で割り込み禁止にできないし
AHK側の設定をどう変えてもノーディレイにはならない

けどsleepの精度を上げる方法はある模様
http://www.charatsoft.com/develop/otogema/page/02window/sleep.html

AHKで適用できるのか、できてもインタプリタなスプリクトでどこまで
シビアに時間制御ができるのかは知らんけど
0569名無しさん@お腹いっぱい。 (ワッチョイ b197-NW7M)
垢版 |
2020/11/10(火) 21:18:03.46ID:7m/sr7zP0
>>567
上記の設定の後に

Sleep(Loops) {
Loop, %Loops%
DllCall("Sleep", "UInt", 50)
}

Shift::
Send, {Lbutton}
Sleep(20)
Send, {Lbutton}
Return

https://stopwatch.onl.jp
検証サイトはここです
Loop使わず直接1000ms指定だとディレイなし、Loopありだと+100~200ms,設定全削除だと+300~400msに増えました
0572名無しさん@お腹いっぱい。 (ワッチョイ 1597-D0pj)
垢版 |
2020/11/13(金) 21:38:30.41ID:p37fZhSk0
>>571
セーフモードでの検証で
https://pastebin.com/JeZ4Y5kQ
AHK再インストール後でも同じでした
0575名無しさん@お腹いっぱい。 (ワッチョイ 1597-D0pj)
垢版 |
2020/11/15(日) 22:19:49.93ID:F94Ybu5B0
>>574
50ms200回で10125まで精度上がりました、ありがとうございます
0576名無しさん@お腹いっぱい。 (ワッチョイ 57b1-D4Gu)
垢版 |
2020/11/18(水) 02:47:53.44ID:jye7OlUl0
firefoxを83にアップデートしたらfirefox関係のスクリプトが動かなくなった。
調べてると返ってくるウインドウタイトルが
YouTube - Mozilla Firefox とかから
YouTube - Mozilla Firefox と真ん中の棒が変わってた。
このまぎらわしい棒は何だと調べたらem-dashとか言うらしい。
0579名無しさん@お腹いっぱい。 (ワッチョイ 57b1-ZP6B)
垢版 |
2020/11/18(水) 09:14:49.00ID:RsW9sGDZ0
>>576
ウインドウクラスで指定すれば?
もしタイトルも必要なら「em-dash」以降は指定しなくても特定できるでしょ
#IF [ウインドウクラス] && [「em-dash」以降を削除したウインドウタイトル]
↑とかで
0582名無しさん@お腹いっぱい。 (ワッチョイ 57b1-D4Gu)
垢版 |
2020/11/18(水) 12:27:26.44ID:jye7OlUl0
>>581
youtubeドメイン内のページ全てで動作させたいので、SetTitleMatchMode, 2 でタイトル部分一致にして

#IfWinActive,YouTube - Mozilla Firefox

としてます。youtubeドメインのタイトル末尾は全部 YouTube - Mozilla Firefox で終わってるので。
0585名無しさん@お腹いっぱい。 (ワッチョイ 1f3e-NOUc)
垢版 |
2020/11/18(水) 20:02:08.83ID:R3wB7cjZ0
>>584
出来ました。ありがとうございます

AutoHotkeyJpのリマップの項を読んでも、いまいち分からないんだけど
リマップしようとすると、スクリプトの実行時に自動的にホットキーに変換されちゃって、それが
a up up::
になって、エラーの原因になっている。って認識でいいんでしょうか?
0586名無しさん@お腹いっぱい。 (アウアウウーT Sa3b-C6sL)
垢版 |
2020/11/18(水) 20:29:34.01ID:5zToSpE1a
>>577
ついにウィンドウタイトルというかアプリのリソースにUnicodeが使われる時代がきたのか
これまでどおり「-」ハイフンというかマイナスだとなんか問題があるのかねぇ
今回のように障害になることの方が多い気がするなぁ
0588名無しさん@お腹いっぱい。 (ワッチョイ 57b1-D4Gu)
垢版 |
2020/11/19(木) 20:16:44.85ID:JScPAAMr0
質問なのですが、1つのスクリプトの中で SetTitleMatchMode,2 と SetTitleMatchMode,3 を混在することは出来ますか?
下のように書いても初めの SetTitleMatchMode,2 のみ読み込まれているようなのですが

SetTitleMatchMode,2 ;部分一致
#ifwinactive 無題
^2::
msgbox, 2
return
#ifwinactive

SetTitleMatchMode,3 ;完全一致
#ifwinactive 無題 - メモ帳
^1::
msgbox, 1
return
#ifwinactive
0589名無しさん@お腹いっぱい。 (ワッチョイW 4b58-Q/DF)
垢版 |
2020/11/19(木) 21:12:14.90ID:aDkK1dmt0
#If系で参照する既定値はAutoexecuteでしか指定できない
スレッドごとの再指定は可能なのでホットキーラベルの中では使える

SetTitleMatchMode,2 ;部分一致

^2::
msgbox, % A_TitleMatchMode
return

^1::
SetTitleMatchMode,3 ;完全一致
msgbox, % A_TitleMatchMode
return
0592名無しさん@お腹いっぱい。 (ワッチョイ e220-i8bA)
垢版 |
2020/11/21(土) 15:47:54.04ID:HFuDqTjt0
GUIのウィンドウスタイルについて教えてください
メッセージボックスのような閉じるボタンのみのGUIウィンドウは作成できますか
よろしくお願いいたします

サンプル
Gui, -MinimizeBox +AlwaysOnTop ;SysMenu+XButton
;Gui, -SysMenu +AlwaysOnTop  ;None
Gui, Add, Edit
Gui, Show
MsgBox
ExitApp
0595名無しさん@お腹いっぱい。 (ワッチョイ a2b1-b6az)
垢版 |
2020/11/24(火) 14:18:35.34ID:35b4u2J50
すいません教えて下さい
zを押してある場所で左クリックしたままにして
zを離したら左クリック解除して他の場所をクリックしたいんですが
200ms以内に離した場合は200ms後に左クリックするようにしたいんです

z::
MouseClick, L, 900, 775, 1, 0, D
Sleep, 200
Return
z Up::
MouseClick, L, 900, 775, 1, 0, U
MouseClick, L, 690, 775, 1, 0
Return

これだと200ms以内にクリックしてしまいました
どうすればいいか教えて下さい
0596名無しさん@お腹いっぱい。 (ワッチョイ d758-ZC6u)
垢版 |
2020/11/26(木) 19:22:30.23ID:0VP9GA5s0
>>595
望みが実現しない原因。
Sleep,200 でSetTimer以外のスクリプト全体の動きは止まるが、
z Up::で新たなスレッドが実行されたので、
Sleep,200 の動作が一時停止し、MouseClick,U が行われた。
(z Up::の実行を終えた後、Sleep,200 のスレッドが再び動く)

KeyWaitを使うといいぞ

z::
x1:=900,y1:=775,x2:=690,y2:=775
MouseClick, L,%x1%,%y1%, 1, 0, D
KeyWait,z,T0.2 ;指定秒数 指定の状態になるのを待機する
if ErrorLevel ;時間が過ぎても指定の状態にならなかった
{ ;200ms以上押した場合
KeyWait,z ;このままzキーを押し続けた場合、z::が連続で実行されてしまうので待機処理を入れる
Send,{LButton UP}
;MouseClick, L,%x1%,%y2%, 1, 0, U
MouseClick, L, %x2%,%y2%, 1, 0
}
Else
{ ;200ms以内に離した場合
Sleep,200
Send,{LButton}
;MouseClick, L,%x1%,%y1%, 1, 0
}
Return
0597名無しさん@お腹いっぱい。 (ワッチョイ 9fb1-P4WK)
垢版 |
2020/11/27(金) 13:40:13.10ID:j5UTV/Iv0
>>596
ありがとうございます出来るようになりました

ロジクールのlua scriptでやっていた事をautohotkeyでやろうとしたんですが
自動でコマンド間などにsleepが入るとかでちょっと指定時間より遅れるので

#NoEnv
SetBatchLines, -1
ListLines, Off
SetKeyDelay, -1

これを先頭に突けてみたのですがlua scriptより遅かったです
他に方法があったら教えて下さい
0598名無しさん@お腹いっぱい。 (ワッチョイ e6b1-jrSk)
垢版 |
2020/12/03(木) 10:36:24.66ID:9dOR8MWZ0
Loopの使い方が分からないので教えて下さい
やりたい事は指定範囲の色が変わったらマウスポインタをA点(650, 750)に移動させ
色が変わる前にF2キーを押したらそB点(1500, 1000)に移動させてLoopを終わらせたいです
F2キーを押してB点移動した後もLoopが終わらず色が変わるとポインタがA点に動いてしまいます
F2キーを押したらB点に移動しLoopが終わるようにするにはどこが間違ってるか教えて下さい

F1::
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
Loop  ;指定範囲が0xFDFDFD色になるか
{  ;F2キーが押されるまでLoopさせる
PixelSearch,,, 1265, 370, 1270, 375, 0xFDFDFD, 3, Fast
GetKeyState, state, F2  ;F2キーの状態を取得
if (ErrorLevel = 0 or state = D)  ;0xFDFDFD色になる or F2キー操作でLoopを終わらせる
break
}
if state = D  ;F2キー操作ならLoopを終了してF2キーに割り当てた操作をする
Return
Else  ;0xFDFDFD色になら 650,750 に移動してLoopを終わらせる
MouseMove, 650, 750, 0  ;A点
Return

F2::  ;F2キーを操作したら 1500, 1000 に移動
CoordMode, Mouse, Screen
MouseMove, 1500, 1000, 0         ;B点
Return
0606名無しさん@お腹いっぱい。 (ワッチョイ 4c6e-CWdK)
垢版 |
2020/12/08(火) 19:56:16.74ID:yaQ1ZOXD0
AppleのUSキーボードをWindows10環境で使用しています。
(左CommandキーはLWin、右CommandキーはRWinとして認識されています)

・LWin単体で押されたときにvk1Dsc07B(無変換)を送る
・RWin単体で押されたときにvk1Csc079(変換)を送る
・↑と被るためWindowsキー単体で押された時の機能(スタートメニュー表示)は無くしたいが、Win+Rなどは残したい

ということがやりたいです。

~LWin Up::
if (A_PriorKey = "LWin") {
Send {vk1Dsc07B}
}
Return

が望みに近いのですが、スタートメニューが表示されてしまいます。
LWin::Return などを加えるとスタートメニューは表示されなくなりますが、Win+Rなども効かなくなってしまいます。
どのように設定すればよいか教えていただけますでしょうか?
0608名無しさん@お腹いっぱい。 (ワッチョイ 7f6e-LBAI)
垢版 |
2020/12/11(金) 18:18:16.53ID:7ZWD+tQW0
>>607
ありがとうございます。
教えていただいた方法で実現できました!

全然話は変わるのですが、マニュアルはどちらを参照されていますか?
vk1Dとかの書き方、自分の探し方だと出てこなかったもので。。。
0609名無しさん@お腹いっぱい。 (ワッチョイ c758-orE1)
垢版 |
2020/12/11(金) 18:37:56.77ID:wFOUTixS0
>>608
基本的に日本語wikiとここしか見てないよ
vk1Dとかの書き方はたまたまAHKのUpdateで記述ルールが変わった時にスレ見てたから
自分は把握してるだけでwikiは古い仕様のままだから直ってない
直せるなら直したいけどロックされてて出来ないんだよな
0611名無しさん@お腹いっぱい。 (ワッチョイ 6758-orE1)
垢版 |
2020/12/13(日) 01:46:26.64ID:yWHewayM0
長いことバージョンアップしてなくてv1.1.33.02にしたら

・カタカナひらがな
vkF2sc070:: Run, calc.exe
・変換
vk1Csc079:: Run, calc.exe
・無変換
vk1Dsc07B:: Run, calc.exe

各キーに割り当てていたホットキーがすべてエラーになります
なんと書き直せばいいのでしょうか?
0615名無しさん@お腹いっぱい。 (ワッチョイW bf11-nf8z)
垢版 |
2020/12/13(日) 13:27:44.30ID:KxxmPkUk0
>>614
※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
0617名無しさん@お腹いっぱい。 (ワッチョイ a776-4B56)
垢版 |
2020/12/13(日) 21:26:47.00ID:403G4Faz0
hotstringが効かないことがあるのは、バグなんですかね
0618名無しさん@お腹いっぱい。 (ワッチョイ a776-4B56)
垢版 |
2020/12/14(月) 12:23:39.07ID:qR6AWokf0
#Hotstring C O K-1 Z
:R:gistp::git stash pop stash@{}

で更に、キャレットを1つ左に移動させたい場合はどうすればよいでしょうか。

試しに
::gistp::
tmp := ClipboardAll
Clipboard = git stash pop stash@{}
Send, %Clipboard%
Send, {Left}
Clipboard := tmp
tmp =
Return
のようにしてもみましたが、Rをつけてもつけなくても(#Hotstring/:R:)、
{}さえ入力されなくなりました。
0619名無しさん@お腹いっぱい。 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/16(水) 08:20:57.78ID:wEUsRmK10
クリップボードの内容が何十回かに一度ですが書き換えミスが生じてしまいます。

^b::
send, ^c
send, ^t ;firefoxで新しいタブを開く
sleep, 200
clipboard = test
if(clipboard == "test"){
send, ^v
}
return

上記のコードで、ifでクリップボードの中身が"test"であることを確認しているのに、
send, ^t のように、アクティブなタブが変わった直後にペーストすると何十回かに一度は"test"ではなく、
初めのsend, ^c でコピーした内容が貼り付けられてしまいます。

なにか確実にクリップボードの内容を確認するか書き換える方法はないでしょうか?
0623名無しさん@お腹いっぱい。 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/16(水) 13:58:02.04ID:wEUsRmK10
>>620-622
返信ありがとうございます。
>>622さんの言われるとおりで,^cのクリップボードへの反映にそこそこタイムラグがあるのが原因でした。

^b::
clipboard := ""
send, ^c
ClipWait, 2
send, ^t ;firefoxで新しいタブを開く
sleep, 200
clipboard := ""
clipboard = test
ClipWait, 2
return

と直せば誤動作がなくなりました。
clipwaitはクリップボードの処理が完了するのを待ってくれているのかと思ったら、ただ単にクリップボード
の中身がテキストかだけを確認するような動きなんですね。
なので上記のように clipboard := "" とセットで使わないとまた誤動作してしまいました。
0624623 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/17(木) 02:51:33.01ID:s1wiQohy0
>>620
ClipWait が代入にも有効かどうか下記で試してみました。

rctrl::
s = "aaaaaaaaaaaa" ;実際はもっと長い文字列で試しました
clipboard = %s%
send, ^v
clipboard =
clipboard = test
clipwait
return

上を数百回繰り返しても一度も"test"は表示されなかったので、clipboard = は代入が保証されているようです。
なので>>623(最後に send, ^v が抜けている)も

^b::
clipboard := ""
send, ^c
ClipWait, 2
send, ^t ;firefoxで新しいタブを開く
sleep, 200
clipboard = test
send, ^v
Sleep,100
return

で大丈夫そうです。
0625名無しさん@お腹いっぱい。 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/18(金) 09:34:26.26ID:qmvdmNRt0
タスクトレイの操作について質問させて下さい。

#Bでタスクトレイにフォーカスを移す方法は、windows10では問題ないのですが、
windows8.1だと#Bの後に何か操作するとその後タスクトレイのアプリで右クリックメニューが閉じなくなるバグがあるので使えません。

なのでネットにあった以下のコードを使ってみました。

https://pastebin.pl/view/457a5699

このコードで ctrl+b を押すとタスクトレイのAHKを右クリックできるのですが、なかには無反応のアプリもあります。

そこで、右クリックの代わりにアプリケーションキーを送りたいのですが、
TrayIcon_Button() 関数の中の

PostMessage, oIcons[nIdx].msgid, oIcons[nIdx].uid, %sButton%DOWN,, % "ahk_id " oIcons[nIdx].hwnd

の %sButton%DOWN にアプリケーションキーが押されたというメッセージ(0x0200など)を書き込めば良いのではと
考えたのですがどのように書けば良いでしょうか?
0627名無しさん@お腹いっぱい。 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/18(金) 12:05:02.58ID:qmvdmNRt0
>>626
AHKのwikiをみると PostMessage は

PostMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

となっており、メッセージは第一引数に入れるように見えるのですが、

PostMessage, oIcons[nIdx].msgid, oIcons[nIdx].uid, %sButton%DOWN,, % "ahk_id " oIcons[nIdx].hwnd

はメッセージの %sButton%DOWN が第3引数に入っていて、それなら第一引数の oIcons[nIdx].msgid は一体何?
と全くわからない状態です。
0631名無しさん@お腹いっぱい。 (ワッチョイ 6a5a-FZ4g)
垢版 |
2020/12/18(金) 22:11:13.44ID:lCGtO4eU0
>>629
Win+Bのショートカット使う前は自分の場合はトレイアイコンのスクショを画像保存しておいて
ImageSearchを使ってアイコンの座標を右クリックしてたなあ
スマートなやり方ではないけど簡単で確実
試行錯誤をしたいならそのまま続けてください
0636名無しさん@お腹いっぱい。 (ワッチョイW 1f58-8gD9)
垢版 |
2020/12/20(日) 09:31:51.47ID:D5hV/wtp0
タスクトレイの操作って概念を捨ててそのアプリに直接コマンド投げて操作したらって意味だと思うけど
http://ahkwiki.net/SendMessage

ahkならdetectHidenWindows ONした上でメニュー上の該当コマンドをPostしたらいいんじゃね
知らんけど
https://f.easyuploader.app/eu-prd/upload/20201220092750_414c32484841744a4d4c447a56316966.png
0637名無しさん@お腹いっぱい。 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/20(日) 10:38:21.51ID:SXaEsZv90
>>636
ありがとうございます。
その方法だと1行書くだけでで済みました。
ただリソースハッカーに Menu の項目が表示されないアプリがあるのですがそういった物に関してはこの方法はお手上げでしょうか?
0639名無しさん@お腹いっぱい。 (ワッチョイ 1f58-RSrH)
垢版 |
2020/12/20(日) 12:23:10.50ID:D5hV/wtp0
>625 >無反応のアプリ
>637 >Menu の項目が表示されないアプリ

ってのが具体的に分からんから何とも言えないけど
うちの環境だとタスクトレイ上で>625で動作せず、リソハカでもID取れなかったのはKeepassXCだけだった
あとPythonやNode.jsをexe化してるようなアプリはリソハカでID見えなかった
たぶんネイティブじゃないクロスプラットフォーム系のアプリは窓の作り方自体のお作法が違うのでは
0640名無しさん@お腹いっぱい。 (ワッチョイ db76-hU6Q)
垢版 |
2020/12/20(日) 17:35:09.36ID:E0DsaI+v0
「最初のテキストフィールドに移動」はAHKで実現できますか?
(例えば、Google検索結果を表示している画面でそれを押すと、検索窓にフォーカスがあたる)

CentBrowserにあるショートカットなのですが、AHKで一般化したい事情があります。
WindowSpyで見たところ、ClassNNは画面内すべて同じ値で、テキストフィールドごとなど分かれてはいません。
0642名無しさん@お腹いっぱい。 (ワッチョイ db76-hU6Q)
垢版 |
2020/12/20(日) 21:17:22.15ID:E0DsaI+v0
>>641

CentBrowserが入っていない環境下でその機能を使いたいために、
AHKで実装したいのです。
不意に誰かのPCで作業することになることが多く、
そのために、AHKへの統合作業を進めているところです。
0643名無しさん@お腹いっぱい。 (ワッチョイ 2a5a-s3R3)
垢版 |
2020/12/20(日) 22:14:16.67ID:TkCaGahG0
>>642
Chromium系のブラウザだけ考えてもCentにしかない?のなら難しいそうだなぁ
それよりよくあるキーワードをコピーしてGoogle検索で代用になるのでは?
それなら別にメモ帳からエクセルからでもキーワード込みでGoogleに飛ぶ
ブラウザは既定になるけど、指定も可能
これはGoogleだけの話だけど、アクセス頻度が高いサイトが他にあるならそれも追加すればいい
0644名無しさん@お腹いっぱい。 (ワッチョイ db76-hU6Q)
垢版 |
2020/12/21(月) 00:05:09.60ID:ZQcALpWc0
>>643
ありがとうございます。

Google検索以外にも、1つ目のテキストフィールドに飛びたい場面は結構ありまして、
そのために共通化したいのです。(Google検索に関しては別途プラグインを用意しています。)

とはいえ、やはりChromeに限らずソフト内部の処理は中々難しそうですね。
0645名無しさん@お腹いっぱい。 (ワッチョイ db76-hU6Q)
垢版 |
2020/12/21(月) 00:30:18.81ID:ZQcALpWc0
1::
3::
5::
(処理)
Return
2::
4::
6::
8::
9::
(処理)
Return

これを、次のようなイメージで表現する方法はありますか?
(Hotkey, Loopあたりを使うのでしょうか)

key_list:=1,2,3,4,5,6,7,8,9
valid_key:=1,3,5
invalid_key:=(key_listのうちvalid_key以外)
(valid_key)::
(処理)
Return
(invalid_key)::
(処理)
Return
0647名無しさん@お腹いっぱい。 (ワッチョイ db76-hU6Q)
垢版 |
2020/12/21(月) 00:58:11.67ID:ZQcALpWc0
>>646
逆に、読まないわけないですよね、人に聞くのならば。
当該ページの要約なんてしてしまえば、それこそスレ汚しかなと。
0648637 (ワッチョイ 3bb1-o3T/)
垢版 |
2020/12/21(月) 05:01:55.76ID:/15D1k390
>>638
ありごとうございました。
そのスクリプトでIDを調べればほぼ全てのアプリで直接操作ができました。
0652名無しさん@お腹いっぱい。 (ワッチョイ 2a5a-FZ4g)
垢版 |
2020/12/21(月) 19:52:36.27ID:5E2XPNSg0
>>644
>Google検索以外にも
どれだけあるのか知らないけど、自分は検索ワード付で飛べるようにしてるサイト100近くあるよ
Googleの検索オプション込で20くらいあるし、各EC・翻訳・類語・電子書籍・地図・レシピetc
価格.comとかちょっと苦戦した所もあるけど、それぞれのサイトごとに作ればいいのでは
1回作ればメンテもほとんどいらないし
0657名無しさん@お腹いっぱい。 (ワッチョイ 536e-HaPC)
垢版 |
2020/12/29(火) 05:20:07.30ID:0OZDNm6Y0
前にやってた事なのですが、突然グリーンスクリーンでパソコンが落ちた後起動が出来無くなりSSDのデータの復元も出来ず(.ahkファイルなどが)、元々この辺も詳しく無かったので「こうかな?」とやってみたものの上手く行きませんでした
たぶん皆さんだと「そんな事もわからねえのか」ってレベルだとは思いますが、アドバイス頂きたいです

Win10 64bit Pro
AHK 1.1.33.02

やりたい動作
日本語入力で「を押した時「」を出力し↓を送信して選択を確定し←を送信して「」の間にカーソルを移動
同様に、」を押した時()を出力し↓を送信して選択を確定し←を送信して()の間にカーソルを移動

[::Send,{Blind}[]
Send,{Blind}{Down}
Send,{Blind}{Left}
Return

]::Send,{Blind}()
Send,{Blind}{Down}
Send,{Blind}{Left}
Return

上記の書き方でやると()が出力されますが変換未確定状態で止まります
DownとLeftをscの方で書いてみましたが変わらず
以前は出来ていたので可能だとは思うのですが、どう書けば出来るでしょうか?
よろしくお願いします
0662名無しさん@お腹いっぱい。 (ワッチョイ 735a-80jV)
垢版 |
2020/12/29(火) 09:37:16.86ID:hHY1cXnU0
>>657
とりあえずその書いた通りに自分でキー入力してみて
やっぱり変換未確定になるのでは?それを確定させるにはどうするか
あと、デフォを変えてしまうのは抵抗あるかな。まあこれは好き好きかもだけど
自分なら無変換+[ とか 右Alt+[ とかで作ると思う
0663657 (ニククエ 536e-HaPC)
垢版 |
2020/12/29(火) 17:49:07.12ID:0OZDNm6Y0NIKU
>>658-659
レスありがとうございます
ahkwiki.netのサンプルコード集とか他にもいくつか見てはみたのですが、自分のやりたい事に合ってる物が見付からず、基本的な部分もどれが合っている物なのかが…
開業の
0664657 (ニククエ 536e-HaPC)
垢版 |
2020/12/29(火) 18:04:01.81ID:0OZDNm6Y0NIKU
すみません、間違えて途中で送信になってしまいました(しかも誤字あり)
改行の方法が関わってるんですね
その辺で探してみます

>>662
書いた通り未確定状態です
Enterで確定にする方法を前も考えていたのですが、日本語入力オフの時にやると改行してしまうので下で確定と思った様な
試しにEnterにしてみたのですがそれでも変化ありませんでした
また調べていてBlindは同時押しの時に使う物、という事で関係無いのでは…と消した所上の方が「」にはなりましたがやはり未確定状態
前調べた時にBlindがこの状態に有用っぽいと思ったので付けていたのですが、見間違いか見たサイトの書き方で勘違いでもしたのか

この使い方で何年もやっているので不便は無いというかとても使い易かったです
かっこって「」も()も使う時は必ず両方使いませんか?
片方だけ使用する事が無いので、それなら割り当てちゃおうと
0665657 (ニククエ 536e-HaPC)
垢版 |
2020/12/29(火) 18:05:35.65ID:0OZDNm6Y0NIKU
あ、662さんにお礼書き忘れていました
レスありがとうございます
0666名無しさん@お腹いっぱい。 (ニククエ 4958-80jV)
垢版 |
2020/12/29(火) 18:10:47.69ID:wcRWwvuu0NIKU
>>663
やりたいこととか関係無いから
もっと根本的にサンプルコード集にあるコードの書き方とお前の書き方で決定的に違うところがあるだろ
どれか一つでもサンプルコード集のコード貼ってみろ
0667名無しさん@お腹いっぱい。 (ニククエW 4958-TmpA)
垢版 |
2020/12/29(火) 18:30:02.12ID:vRRm8Pin0NIKU
>>664
IMEの状態で挙動分けたいならIME.ahkで状態確認してEnter入れるかどうか判定してたんじゃない?
テンプレ >160

なんにしてもバックアップは大事だよー
あとOS入れかえたんならMS-IMEが新方式になってると思われるんで
調子悪いようなら従来方式に戻してみ
0669名無しさん@お腹いっぱい。 (ニククエ ad76-Gr/D)
垢版 |
2020/12/29(火) 19:11:33.86ID:ww+sN9NY0NIKU
愛があるのか意地悪なのか知らないけど、個人的には書いてあげたいところ

ここからIME.ahkをダウンロードして配置→Include
https://w.atwiki.jp/eamat/pages/17.html

スクリプト
https://pastebin.pl/view/390b06d3

下で確定というのがよくわからないけど、これで希望の動作ができているのでは
0670657 (ニククエ 536e-HaPC)
垢版 |
2020/12/29(火) 19:15:41.07ID:0OZDNm6Y0NIKU
>>666-669
あー、なるほどわかりました!
複数行になる時は::の後ろで改行が必要なんですね
それで出来る様になりました
皆様本当にどうもありがとうございました
0674名無しさん@お腹いっぱい。 (ワッチョイ 0376-i1OL)
垢版 |
2020/12/31(木) 19:06:43.68ID:ZWi9NKeJ0
>>652
>>654

いろいろ試して、とりあえず下記のような形になりました。
ふとした時に最上部のテキストボックスに移動したいことが多いので、特定のサイトというわけではないんですよね。

最初のテキストフィールドに移動β[Chromium]
https://pastebin.pl/view/740eefc4
0675名無しさん@お腹いっぱい。 (ワッチョイ 99b1-k7eC)
垢版 |
2021/01/01(金) 18:33:05.81ID:ukB6Yqjo0
質問です

func( key )
{
;(ここで色々な処理)
Send, {%key% down}
keyWait, %key%
Send, {%key% up}YES
;(ここで色々な処理)
}

$a:: func( "A" )
$h:: func( "H" )
$k:: func( "K" )

キーリピートさせないため&他にも色々させるためにこの形を取っているのですが
これだと複数キーを押した際にkeyWaitが蓄積されていく形になり
例えば「H」押下→「A」押下→「H」離す だけではHがupされず その後「A」を離した時点で初めて「YESYES」と出るのですね
1キーごとに独立したkeyWaitをさせるみたいなことってどうしたらできるでしょうか?

Inputって今まで使ったことなかったですが、keyWaitのところをとりあえず
「Input, UserInput, V, %key%」
「Input, UserInput, V, %key% up」
「Input, UserInput, V, {%key%}」
「Input, UserInput, V, {%key% up}」
辺りからIf ErrorLevel〜 みたいにしてもInputコマンドのEndKeys引数は(当然かもしれませんが)押下しか検知してくれてないようで…
0680名無しさん@お腹いっぱい。 (ワッチョイ e573-UAPS)
垢版 |
2021/01/02(土) 16:34:16.37ID:J5Q8PkIE0
>>679
乗っ取るんだから当たり前だろ
RButton::RButton を付け加えれば右クリ単押し離した時に右クリとしで作動するが右ドラッグは出来ない
~ を使えば乗っ取らないけどタブ移動時にも右クリが送信される

こんなこと俺は人に聞くまでも無くwiki読んで試して自力で把握できたけどなんでお前は出来ないんだ?
0685名無しさん@お腹いっぱい。 (ワッチョイW c24e-OxBv)
垢版 |
2021/01/03(日) 13:15:11.93ID:s3EjySlL0
ごろ寝マウス使ってるんですけどahkだけだとドラッグ操作が不完全みたいなので
ごろ寝マウス専用の常駐キー置き換えソフトも常駐させてます
このような使い方ですと時折操作がおかしくなります
仕方ないのでahkをReloadさせると正常になります
これはお互いに干渉してるのでしょうか?
0688名無しさん@お腹いっぱい。 (ワッチョイW 31f1-0TMu)
垢版 |
2021/01/04(月) 12:21:38.26ID:URVFoxoT0
質問です 既に定義されてるホットキーを一時的に別の操作を割り当てたいです
例えばお絵かきソフトで、描画のペンツールは常用のホットキーを使い、範囲選択のときだけ変えるような
でそういう別系統操作にしたいときGUI出して「それが出てるときは分岐」みたく出来るかなとイメージしてるのですが難しいでしょうか
0690名無しさん@お腹いっぱい。 (ワッチョイW 31f1-0TMu)
垢版 |
2021/01/04(月) 12:55:20.17ID:URVFoxoT0
ああすみません
つまり言わば母艦のように使っている元ホットキー群があって、そこにはすでにズラズラとプログラムしてあるわけです
で継ぎ足し建築のごとく、違う系統の操作系をパカッとかぶせるように(使う時だけ乗っ取るように)できないかなと
同じキーから別の挙動を引き出したいとき、定義済なキーをもう一度定義しようとするとエラーが出ますが、それをなるべく母艦スクリプトに手を入れないでやりたいのです
0691名無しさん@お腹いっぱい。 (ワッチョイW dd58-DLfW)
垢版 |
2021/01/04(月) 13:35:54.88ID:iY+oM+L60
パカッと切り替えの判定分をコードで書けるなら #if で分岐
今あるスクリプトに手を加えたくないのなら
母艦?の方をSuspend して別ファイルのスクリプト立ち上げるスイッチスクリプトを作るとか
0693名無しさん@お腹いっぱい。 (ワッチョイ 81b1-r11y)
垢版 |
2021/01/05(火) 04:36:14.39ID:UEOV8C1c0
>>684
今マウスジェスチャでタブ移動してるけどそれが面倒だから右クリ&チルトでもタブ移動出来たらなーっていう感じだったんだけどね
右クリックを使うとやっぱり右クリに影響が出るから他のボタン使わないとなあって感じなんだね
ただチルトと組み合わせやすいボタンって右左クリック以外にないからやっぱりジェスチャで我慢しかなさそうだね
0694名無しさん@お腹いっぱい。 (ワッチョイ c676-UAPS)
垢版 |
2021/01/05(火) 04:59:13.00ID:xt/cbHPx0
; Smart Wheelup
MouseGetPos, x, y
if(y>80)
Send,{WheelUp}
else
Send,^+{Tab}
とかやれば良いんだよ
縦スクロールバー付近なら縦スクロール
ウィンドウ下部付近なら横スクロール
とか好き勝手できる

他にもカーソル位置見て挙動を変えるというのは
モニタを9分割して起動するランチャの種類を変えるという
メタランチャ的な使い方もできる
0695名無しさん@お腹いっぱい。 (ワッチョイ 22ad-UAPS)
垢版 |
2021/01/05(火) 05:08:30.40ID:Dx3N9bS60
>>693
多ボタンマウス買えば?
俺はG600に普通のXButton1・2の他F13〜F24を割り当てて、各サイドボタン押しながらホイール上下で
タブ移動、AltTab/ShiftAltTab、Home/End、PgUp/PgDown、拡大/縮小、VolUp/VolDown
などを割り当ててる
サイド12ボタンほどじゃなくてもサイド6ボタンくらいでもahkと組み合わせれば工夫次第で数多くのアクションを
割り当てることができる
0696名無しさん@お腹いっぱい。 (ワッチョイ 46c6-978d)
垢版 |
2021/01/07(木) 07:36:18.22ID:5TUvRG8D0
firefoxでctr+bを無効にしたいのですが、どう書くといいんでしょうか?
ctrl+Bではエラーどす(´・ω・`)
0697名無しさん@お腹いっぱい。 (ワッチョイ 825a-UAPS)
垢版 |
2021/01/07(木) 07:56:35.01ID:Fd0s5Uw30
さすがにWiki読んでと
0698名無しさん@お腹いっぱい。 (ワッチョイ 46c6-978d)
垢版 |
2021/01/07(木) 12:00:18.40ID:5TUvRG8D0
わからなかったので
0701名無しさん@お腹いっぱい。 (ワッチョイ 46c6-978d)
垢版 |
2021/01/07(木) 13:06:06.47ID:5TUvRG8D0
^b ::Return
これでエラーになるんどすが、、、(´・ω・`)、、、
0703名無しさん@お腹いっぱい。 (ワッチョイ 81b1-r11y)
垢版 |
2021/01/07(木) 16:37:33.16ID:SPF2OWw40
F13以降のキーってどこに割り当ててる?
他のソフトでAHKでF13以降に設定したキーを割り当てたい時に、毎回ChangeKeyでキー1つ犠牲にして送らないといけないのかな
SHIFT+ファンクションでFで13以降とか出来たらいいんだけど
0705名無しさん@お腹いっぱい。 (ワッチョイ 46c6-978d)
垢版 |
2021/01/07(木) 17:26:04.27ID:5TUvRG8D0
^b::<+b
これでlshiftに置き換えされないのはなぜですかね?
>>702
できたどす
0707名無しさん@お腹いっぱい。 (ワッチョイ 46c6-978d)
垢版 |
2021/01/07(木) 20:01:22.20ID:5TUvRG8D0
どうも
SENDというのを使ってみましたが、動きませんね、、、
^b::Send,{^}{+}
これでshiftとctrlということですよね?
0709名無しさん@お腹いっぱい。 (ワッチョイ 825a-UAPS)
垢版 |
2021/01/07(木) 20:16:20.51ID:Fd0s5Uw30
>>707
Wiki読んでと… 明らかに読み込みが足りない質問ばかりだよ
もしくは、他にどんなサイトをググったの?ググっても載ってないなんてことはないでしょう
ついでに>>705の「できた」は>>702の↓が、まだ解決できてないと思うよ
>ctrl+b が全てで無効になるけどいいのか?
firefox以外でもctr+bが効かなくなってない?せめてそこまで確認してどうすれば…くらいじゃないと