AutoHotkey スレッド part27

■ このスレッドは過去ログ倉庫に格納されています
2019/04/20(土) 23:32:53.28ID:cTmLtZyf0
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

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

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

■日本語解説等
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 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2019/04/28(日) 00:05:30.68ID:MHWE0sUc0
こういうことではなくて?

aStr := "0x0A"
SetFormat, INTEGER, D
dec := aStr + 0
SetFormat, INTEGER, H
hex := aStr + 0
msgbox,% "aStr=" aStr "`ndec=" dec "`nhex=" hex
2019/04/28(日) 02:49:42.39ID:hWAEyTOu0
見識のある方いれば…

GetKeyState関数で修飾キー(alt)を検知しようとするとアクティブウィンドウへの入力を食ってしまうようなのですが、なにか良い回避策無いでしょうか?

やりたいこととしては、同一ゲーム(ff14)を2画面起動して同時操作のために1つのキーボードから入力をそれぞれのゲームウィンドウに送りたいのです。
実装内容としては、while無限ループ内で修飾キー+英字キーで該当する組み合わせ(今試しているのだとAlt+j)をgetkeystateで検知してcontrolsendでアクティブでない方のウィンドウにjを送信しています。
困っているのは、このプログラムを起動するとアクティブウィンドウへが修飾キー+英字キーではなく単なる英字キーが入力された時のように挙動することです。(alt+jではなくただのjとして動く)非アクティブウィンドウのもう一つのアプリは意図した通りに動いております。

ちなみにalt+jをほぼ同タイミングで押すとちゃんとアクティブウィンドウがalt+jとして動作しました。結構タイミングはシビアですが。

どなたか思い当たることある方いましたらなんでも良いので教えて下さいm(_ _)m
2019/04/28(日) 08:03:59.19ID:RLac010E0
>>41
16進数を10進数にするだけの話ならFormat()
45名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/28(日) 09:38:37.03ID:RQlzQ/nr0
>>42 さん
ありがとうございました。16進数は4桁固定を想定なので、ちょっと追加

aStr := W0x0123W 
SetFormat, INTEGER, D 
dec := aStr + 0 
SetFormat, INTEGER, H
hex := dec + 0 
hex := W0000W . substr(hex,3)
StringRight,hex,hex,4
hex := W0xW . hex
msgbox,% WaStr=W aStr W`ndec=W dec W`nhex=W hex
46名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/28(日) 09:41:18.54ID:RQlzQ/nr0
先の書き込みを確認される際には、例えば
Word に貼り付けて全選択したのち、
ホームリボンの「文字種の選択」から、半角をクリックしてください。

半角で投稿しようとしたら、5ch.net に「不正なコードを含む書き込み」として
ブロックされました。
47名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/28(日) 09:47:34.77ID:RQlzQ/nr0
>>44
Format関数は、Integer値を16進文字列に変換するときに使えそうです。
ありがとうございました。

aVal := 291
sdec := aVal
shex := Format("0x{4:x}", aVal)
msgbox,% "aVal=" aVal "`sdec=" sdec "`shex=" shex
48名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/28(日) 10:01:03.91ID:RQlzQ/nr0
>>43
自分はDllcall を使ってキー状態を調べています。多分、副作用はない筈。

vKey0 := 164 // 多分、左Alt
vKey1 := 165 // 多分、右Alt
stCurr := DllCall("GetKeyState", "UInt", vkey0) & 128
stCurr :=(DllCall("GetKeyState", "UInt", vkey1) & 128) | stCurr
2019/04/28(日) 10:49:09.47ID:MHWE0sUc0
>>45
確認してないけど多分それだとhexの入力値は数値じゃなくて文字列になってるで

数値の場合 0x000Aと0xAは記述方法が違うだけで値は同じなのでゼロサプレスする必要はない
2019/04/28(日) 12:45:22.14ID:xdMVJpEwp
>>48
ありがとうございます😊!
今帰省中でコードが手元にないですが帰ってみたらすぐに試してみますね!
2019/04/28(日) 14:00:44.23ID:pYczIjyR0
>>36
となると自分の環境が問題か
どうも
2019/04/28(日) 18:17:38.17ID:nX/tX0040
>>51
今まで問題なかったモノが急に使えなくなったと言うことですか?
windows update以外に何か環境は変えましたか?

自分はwin8.1ですが、1年以上前、AHK使い始めた時からからずっとwheel絡めたスクリプトは全て急に動かなくなります。

スクリプト開始から5分後に使えなくなることもあれば数時間後に使えなくなることもある。

以前ここでこの症状について質問し、もらった回答全て試したり、違うメーカーのマウスとドライバに変えても駄目でした。

海外掲示板見てみても同じ症状の人がいて、色々対策書いてあったけど、効かない人には効かないみたい。

自分は諦めました。
2019/04/28(日) 18:48:48.93ID:JP0Kc6aT0
>>51
あたしもロックなどの復帰後そうなります

Win7 x64 / 1.1.30.03
2019/04/28(日) 21:59:53.64ID:fWI8wbzJM
最近の話じゃないけど
リダイレクトホイールでホイールが急に遅延して
その間まったくスクロールが効かなくなることはよくあった
そのまましばらく放置してると忘れた頃にアクティブウィンドウがスクロールしまくる
最近はだいぶ頻度は下がった
2019/04/29(月) 04:37:49.10ID:QZTb/6eG0
>>48
うーん、ダメでした…
メインウィンドウをメモ帳とかにしても同じように修飾キーの入力が食われてしまうのでゲームの方の問題じゃないみたいですね…

osはwindows10ですがバージョンが悪さしてるのでしょうか
2019/04/29(月) 04:39:55.03ID:QZTb/6eG0
ちなみに今のコードはこんな感じです。

#InstallKeybdHook
#UseHook

SetKeyDelay,10,100
subPid = 22460
Loop
{
stCurr := DllCall("GetKeyState", "UInt", 164) & 128
stCurr2 := DllCall("GetKeyState", "UInt", 74) & 128
If stCurr && stCurr2
{
ControlSend, , j, ahk_pid %subPid%
}
}
2019/04/29(月) 05:02:47.41ID:p8hzRzQr0
FF14とかネトゲでAHKみたいな外部ツールを使うのは不正行為
別に運営じゃないしFF14もやってないので不正をするなとは言わないけど
不正行為の「やり方」を恥ずかしげもなく人様に聞くのはみっともない
自分で考えて誰にもバレないように使え
それが出来なけりゃ潔く諦めろ
2019/04/29(月) 06:20:21.96ID:en4uZx+d0
はぁ〜い、トゥイマッテーンw
2019/04/29(月) 06:28:55.14ID:gsQYWf6/0
ただの池沼だった
2019/04/29(月) 07:17:19.72ID:IqJQ2Tg/a
年寄りは説教が好き
2019/04/29(月) 07:18:41.98ID:6WmDA0bLM
俺が若い頃はあ〜(以下略
2019/04/29(月) 08:46:17.18ID:PffOSWws0
ゴメ…
63名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/29(月) 09:17:42.22ID:YyTDcGy20
>>55
Win32のGetKeyState関数は静的状態を取得するものなので、
変化を検知して出力する方がよいです。
Notepad.exe を非アクティブウインドウとして、
サクラエディタをアクティブウインドウとしたとき、"j"キーを両方に出力するサンプルです。

#InstallKeybdHook
#UseHook

SetKeyDelay,10,100
Loop
{
Sleep,16
stCurr2 := DllCall("GetKeyState", "UInt", 74) & 128 ; VK_J
If(stCurr2=128 && stLast2= 0)
{
ControlSend, , {j down}, ahk_class Notepad
} else If(stCurr2=0 && stLast2= 128)
{
ControlSend, , {j up}, ahk_class Notepad
}
stLast2 := stCurr2
}

現状、このソフトウェアを持っていないので再現できないのですが、
非アクティブウインドウに Alt-JをControlsend できるならば、
寧ろ、Alt + j をホットキー登録して、Autohotkeyにキーを喰わせたのち、
アクティブウインドウと非アクティブウインドウに Alt-J を Controlsend してはどうでしょうか。

その場合、ループ処理と、GetKeyState関数は不要となります。
2019/04/29(月) 10:37:23.86ID:kkLjthPU0
>>56
メイン秀丸 サブメモ帳でsubPidだけ変えて実行してみたが
アクティブウィンドウはちゃんとAlt+Jのショートカット動作したし
subPidの非アクティブウィンドウもちゃんと j が入力されたよ

つかFF14の2画面動作時の挙動は知らんけど
2ウィンドウで両方とも同じ挙動させたいのに非アクティブのほうに Alt 送らなくて大丈夫なの?

「アクティブのAltが食われてる」のではなく j しか送ってないsubPidのほうをメインだと思ってて
「非アクティブにAltが送られてない」状態を「食われてる」と勘違いしてたりしない?
2019/04/29(月) 13:49:17.48ID:Bj2ge2Bl0NIKU
Pictureコントロールで画像の比率を維持したまま固定の枠内に収める事ってできませんか?
比率を維持するには縦横どちらか片方だけを指定すればいいようなんですが
簡易のビューアのように縦長や横長のいろんな画像をそこに表示したいので
画像によってどちらを固定サイズにするか変わってきちゃうんです
その画像が縦長か横長なのかだけでも判断できれば行けそうなんですがAHKの機能だけでは無理なんでしょうか?
2019/04/29(月) 14:37:18.14ID:QZTb/6eG0NIKU
お二方共ありがとうございますm(__)m
ダメもとで書いてみましたがこんなに反応していただいて感謝感激です。

>>63
>>64
> 非アクティブウインドウに Alt-JをControlsend できるならば
> 非アクティブのほうに Alt 送らなくて大丈夫なの?
ControlSendでAlt送らなくてよいかという話ですが、自分の環境だとうまくいかなかった経緯があって抜いています。
ネットで同じようなQ&Aあって最終的には次の二通りの記述方法でやってみたのですがうまくいかずでした。
ControlSend, , ^v, ahk_pid %subPid%
ControlSend, , {ctrl down}{v}{ctrl up}, ahk_pid %subPid%
一応ゲームの方でキーバインドは変更できるので、サブの方は修飾キー使わない配置でもいいかなぁと思いメインにのみ修飾キーつける形にしてます。

> 寧ろ、Alt + j をホットキー登録して
たしかにそうですね…しかし↑のショートカットコマンドControlSendできない問題が解決しないとちょっと厳しいです。
もちろんメインの方も修飾キー使わないキーバインド配置にすれば可能なのですが、基本的にはメインの1画面だけでプレイしているのがほとんどなのでなるべくそういう時はautohotkeyを使いたくないのです。最終手段としては検討したいですが。

> アクティブウィンドウはちゃんとAlt+Jのショートカット動作したし
すみません書きそびれていましたが、タイミングによってはちゃんとアクティブウィンドウにAlt+jが送信されてました。
ですが確率でいうと成功するのは半分いかないくらいで、どんな時に成功するかの傾向もいまいち判断つきにくい状況です。
こころなしか>>48さんのコードを反映してから成功する確率は増した気がしますが…

> 「非アクティブにAltが送られてない」状態を「食われてる」と勘違いしてたりしない?
一応まったく別のキーの組み合わせでも試しているのでこちらは大丈夫だと思います。
67名無しさん@お腹いっぱい。 (ワッチョイ 2373-KxX0)
垢版 |
2019/04/30(火) 01:28:07.47ID:K0TtcLI00
>>52
原因はよくわからない
5ちゃんみるのにJane つかってるんだけど
image viewerが立ち上がるときにマウスホイールのスクリプトがかなりの確率で動かなくなる
あとXbutton & Lbutton でうごくやつを用意してるけどこれもだめになる
68名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/30(火) 14:09:40.67ID:w21JuZ030
autohotkey で exe ファイルを作ったとき、
タスクアイコンを右クリックしたときのメニューに
"Suspend hotkeys" と "Pause Script" が表示されないようにしたい。

どなたかご存知でしょうか。
2019/04/30(火) 14:21:09.74ID:+yW1x6hb0
menu,tray,
2019/04/30(火) 15:09:34.34ID:ujDAUdDr0
>>69
68じゃないけど、トレイのメニューは無理なのでは?
Menu, Tray, Delete, Suspend Hotkeys
だとエラー吐くんだけど
"Suspend Hotkeys"にしてもダメだった
2019/04/30(火) 16:43:23.50ID:ZVDWFksOr
>>68
MenuをExitだけにする例
Menu, Tray, NoStandard
Menu, Tray, Add, Exit, Menu_Exit
default項目で他に追加したければAdd, 表示名, Label名
72名無しさん@お腹いっぱい。 (ワッチョイ 2b73-BP9Y)
垢版 |
2019/04/30(火) 17:04:55.31ID:w21JuZ030
>>71
ありがd、できますた。

Menu, Tray, NoStandard
Menu, Tray, Add, Exit, Menu_Exit
return

Menu_Exit:
exitapp

a::return
a up::return
2019/05/01(水) 12:43:11.11ID:jXRa0IGJa0501
>>35
Win10にしたとかアップデートしたとかで効かなくなるものはある
2019/05/01(水) 18:22:04.79ID:SieO+8nP00501
ピリオド〜ピリオドに囲まれた範囲を削除したいんですが、
アイデアってありますでしょうか?

英文を書いていて、一文削除したいんです。
カーソルの位置はその文の任意の場所にあります。
2019/05/01(水) 18:32:15.71ID:sBOO+Ynz00501
クリップボードに取り込んで、変数に入れてからループ処理かなぁ

ふんわりは思いつくけど条件はめんどくさそう
2019/05/01(水) 19:47:01.77ID:RadfMNGN00501
カーソルの位置でどうこうするならエディタのマクロでやったほうが楽そう
2019/05/01(水) 20:06:08.82ID:VU2a+akWr0501
ControlGetText
RegExReplace
FileDelete(あるいはバックアップ)
FileAppendでできるんじゃね
2019/05/01(水) 20:17:10.20ID:SieO+8nP00501
>>75
1文の長さもバラバラですし、正規表現難しいですよね。
と言いますか、「特定範囲を選択」するコマンドがAHKにないような。^aだと範囲が広すぎるし。
ワンプッシュでサクっと消えてほしいんですけど。

>>76
やっぱりエディタのマクロですかね……。
2019/05/01(水) 20:20:21.68ID:a/vdThoT00501
テキスト編集に特化したエディタならそういうコマンドくらいデフォで入ってそうだけど
あるいはそういうプラグインがありそうな開発環境向けの高機能エディタ使うか
2019/05/01(水) 21:06:04.46ID:VU2a+akWr0501
>78
>1文の長さもバラバラ
何のための正規表現だよw
ましてや英文なら一番簡単パターンだろ
最短マッチ
var := RegExReplace(var, "s`n),[\w\x20'\.\-]*?,", ",,")
最長マッチ
var := RegExReplace(var, "s`n),.+,", ",,")
2019/05/01(水) 21:28:56.54ID:dvQIbYdE00501
英文ならクリック3回くらい押せば1文選択できるだろうし(そのエディタでは出来ない?)
クリック3回のDeleteって簡単にやっちゃダメなん?
2019/05/01(水) 21:35:56.09ID:dvQIbYdE00501
1文じゃなくて段落での選択だったわすまん
2019/05/01(水) 21:56:16.89ID:SieO+8nP00501
>>80
ありがとうございます。
でも、これってカーソルのある一文だけマッチさせれます?
2019/05/02(木) 00:45:45.54ID:mNYgW5tn0
>>83
; xxx,yyy,zzz,test,
; xxx,yyy,zzz,test,
; xxx,yyy,zzz,test,

F1::DeleteGroup()

DeleteGroup(String=",", Wait=0.3) {
ClipSaved := ClipboardAll
Clipboard =
Send ^x
ClipWait %Wait%
if (ErrorLevel) {
Send +{Home}^x
ClipWait %Wait%
Forward := Clipboard
if (Pos := InStr(Forward, String,, 0)) {
Clipboard =
Send +{End}^x
ClipWait %Wait%
Clipboard := RegExReplace(Forward Clipboard, String ".+?" String, String String,, 1, Pos)
Send ^v
} else
Send ^z
} else {
Clipboard := RegExReplace(Clipboard, "s)" String ".+?" String, String String,, 1)
Send ^v
}
Clipboard := ClipSaved
}
2019/05/02(木) 19:21:43.94ID:ahrZkCUy0
>>84
ありがとうございます。
勉強してみます。
やっぱり、Editorのマクロのほうがスマートに書けそうですね。
2019/05/05(日) 13:28:02.42ID:8PqDYwmd00505
.ahkファイルの9割はエディタに関連付けしたほうが扱いやすいと気がついたんだが
インクルードされる専の.ahk以外で名の通った拡張子ってないの?
2019/05/05(日) 13:35:33.46ID:M2iqQKSj00505
>>86
俺はahkファイルをそのままランチャーに登録したりしてるからエディタに関連付けたら使い物にならなくなるわ
その代わり常駐スクリプトなどはトレイアイコンダブルクリックでエディタ起動するようにしてる
2019/05/05(日) 13:52:31.18ID:K9EFe5ps00505
>>86
txt
2019/05/06(月) 13:02:36.04ID:ul+3fNQG0
ファイラー使ってエディタ起動はEキーでとかだから困ること無いな
2019/05/07(火) 17:39:26.46ID:TrTdwL+B0
win10で2chMateを使いたくてエミュ導入したのですが
google日本語入力の109A選択で日本語/英語の切り替えがShift+Ctrlと押しづらい
「全角/半角」→認識なし?
「Del」→「.」
ってことでAutoHotkeyを使ってみました。

「半角/全角」を置換元キーにすると不安定。1回置きに指定リマップされてる?
置換先キーにShiftとCtrlの同時押しもうまくいきません

結局、今は無変換キーをShift、変換キーをCtrl に指定
無変換と変換キー同時押しで、Shift+Ctrl「日本語/英語切り替え」にはなりました。

#IfWinActive ahk_exe BlueStacks.exe
vk1C::Shift
vk1D::Ctrl
#IfWinActive

「半角/全角」を押してShift+Ctrl出力で日本語/英語切り替え
ができたら理想なのです、ご指導いただけたら嬉しいです。
ついでにDeleteキー復活もお願いします。

BlueStacks 4.60.20.1002
google日本語入力 109A
2chMate 0.8.10.45/
2019/05/07(火) 18:41:35.58ID:QBfahZsV0
ChMateのためだけにBlueStacksは重くない?
まあ好き好きだけど
MEmuならAHKなしwin10側デフォルトのMS IMEでエミュのキーボード制御なしで行けたよ
2019/05/07(火) 20:15:43.46ID:hH7zKgci0
>>91
そうなんですか、明日やってみます
ありがとうございます。
2019/05/07(火) 23:26:24.76ID:qVvoJ1Im0
IME.ahk
2019/05/08(水) 16:06:11.53ID:a/Pr15AK0
>>91
MEmuですけど、google日本語入力と物理キーボードが上手く動かないのと、
ChMateでもカクカク動作になるので、今の所は敬遠します。

なんかかっこ悪いけど、一応AutoHotkeyで念願の様に組めました。

なぜか置換先にShiftとCtrl同時押しができませんが、
無意味なキー(vkF4)を含めた(+^vkF4)で代用ができました。
「半角/全角」(vkF3)を、日本語/英語の切り替え(+^vkF4)にリマップ
使ってなさそうな「カタカナ/ひらがな」(vkF2)も(+^vkF4)にリマップ

AndroidにはDelキーが無い?ので
→の後、BackSpaceでカーソル右側1文字削除を再現しました。


#IfWinActive ahk_exe BlueStacks.exe
vkF3::+^vkF4
vkF2::+^vkF4
Del::
send,{Right}
send,{BS}
return
#IfWinActive

AutoHotkey 1.1.30.03
BlueStacks 4.60.20.1002
google日本語入力 109A
2chMate 0.8.10.45/
2019/05/08(水) 16:17:30.41ID:nwM5gvVs0
>>94
俺はNOX使ってる
ChMateも動くし全/半キーで日本語オンに出来るしDELキーも使える
BlueStacksは昔一度使ってみて色々糞だったからすぐ消したわ
2019/05/08(水) 16:29:04.22ID:a/Pr15AK0
>>95
NOXはBlueStacksより嫌な噂が多いからなぁ
まぁ個人情報を使わねれば問題ないのだけど
って
Noxだとgoogle日本語入力109キーボード認識でDelキー使えるの?
2019/05/08(水) 16:39:29.99ID:nwM5gvVs0
>>96
だから使えると言ってんじゃん
俺はBlueStacksの嫌な噂の方が多く聞くぞ
2019/05/08(水) 16:43:21.78ID:a/Pr15AK0
>>97
そうなんだ、現状BlueStacksで不満なくなったけど
せっかくなんでNOXも使ってみる

ありがとうございます。スレチ話題ですまんかったです。
2019/05/08(水) 18:46:11.81ID:3WHtVALo0
ていか泥の中のgoogle日本語入力を動かすことにこだわってるようだけど
PC側のIMEそのまま使うんじゃダメなの?
MEmuだと(泥の中ではなくエミュ側の)設定からソフトキーボード閉じれるので
わざわざ泥内のIME使う必要ないんだけど

一応 MEmuはブルスタやNOXより軽いと言われてる、怪しさに関しては目くそ鼻くそだが
カクついて遅いのはVT-xやOpenGLが有効になってないか泥のバージョンのせいかも
うちは泥バージョンをデフォルト(5.1)から7.1にしたら安定した
2019/05/08(水) 20:00:47.98ID:CdsMQfK20
なんか、目的なしに泥エミュ使ってみたくなった
スレチだけど過疎ってるしありかwww
2019/05/10(金) 11:09:21.05ID:uOTPr9gE0
初歩的なことですがおしえてください

・セミコロンだけを押すと→enterが押下され
・シフト+セミコロン→+が入力され(そのまま)
・コントロールとセミコロンのキーを押すと→セミコロン ; が押下されるようにしたい

のですがうまくいきません。以下のようにしてみましたが
コントロール+セミコロンでもEnterが押されてしまいます。

vkBBsc027::Send, {Enter}
^vkBBsc027::Send, {vkBBsc027}

お知恵をください
2019/05/10(金) 11:31:25.99ID:6IH15nFv0
$
2019/05/10(金) 11:59:25.20ID:JSwH/yYX0
>>101
キーリスト[sc---]いらんよ
vkBB::Enter
^vkBB::vkBB
でいいんじゃね?
2019/05/10(金) 12:48:54.10ID:uOTPr9gE0
>>103
できません。

>>102
再帰性が問題になるのかな。
このヒントあればたどり着けて当然なんでしょうね。
どこに入れるんだ
わからん....2行目のほうが問題なんだろうな
2019/05/10(金) 12:51:39.21ID:uOTPr9gE0
以下で成功しました

^sc027::Send, {sc027}
sc027::Send, {Enter}

vkBBを削除しただけでいけました。
なにがだめだったんだろう・・・
ありがとうございました。103さんの助言をヒントにいけました
2019/05/10(金) 13:43:00.74ID:JSwH/yYX0
>>105
vkBB::Enter
^vkBB::Send, {vkBB}
これでもいけるでしょ、vk--sc---って連続表記は使わなくなったようだよ
2019/05/10(金) 14:52:49.85ID:uOTPr9gE0
>>106
だめです。それだと
どちらもセミコロンしか出力されません。
enterになりません。
2019/05/10(金) 15:03:43.53ID:JSwH/yYX0
>>107
win10?うちのPCならこれでも要望通りになるけどな
2019/05/10(金) 15:06:39.63ID:uOTPr9gE0
>>108
win10です。
わたしの環境依存かもしれませんね。
たびたびお手数かけてるようで
2019/05/10(金) 15:26:52.21ID:n2J8MLXc0
>>109
普通に>>106のでも動く
なにか勘違いしてんだろ
2019/05/10(金) 16:39:26.39ID:JSwH/yYX0
スキャンコード(sc) が使えて、仮想キーコード(vk) が使えない環境かな
vkBB::Enter で「;」がそのまま出力されるみたいだからな
2019/05/10(金) 17:28:11.48ID:KC145d5/a
vk使えないのは新しいAHK
2019/05/11(土) 08:29:28.11ID:0qFFuv3w0
^a::Send, {ユニコード}
^b::Send, {ユニコード}
^c::Send, {ユニコード}

といった形でコントロールと文字キーを押して別の文字を
出せるようにしてあるのですが、

例えばF1を押したら常にコントロールを押した状態になって
あとはa, b, c, ...と打つだけで登録した文字を好きに打てて、
もう一度F1を押したら解除されて普通のキーボードに戻る
ようなことは可能ですか?
2019/05/11(土) 09:50:54.26ID:VISQT7EV0
>>113
{Ctrl Down} {Ctrl Up} で分ければ出切るが
Ctrl押したままはいろいろ誤操作誘発するので止めたほうがいい
登録した物を切り替えるだけなら必要ない

KeyChange = 0
F1::KeyChange := !KeyChange ; 0/1
F2::(KeyChange = 2) ? KeyChange:=0 : KeyChange+=1 ; 0/1/2

1::ToolTip 1
2::ToolTip 2
3::ToolTip 3

#If KeyChange = 1
1::ToolTip x
2::ToolTip y
3::ToolTip z
#If

#If KeyChange = 2
1::ToolTip xx
2::ToolTip yy
3::ToolTip zz
#If
2019/05/11(土) 10:06:22.79ID:kH9aKoH20
一番わかり易いのはモード変更ダイアログボックス出して
そのダイアログがあるかどうかで分岐
野暮ったいが誤動作誤操作はしなくなる
クリップボードフィルタ&FIFOユーティリティ関連でこのやり方使ってるな

^F1::  ; 特殊モード発動
run,特殊モード.ahk
return

F1::
IfWinExist,特殊モード
...
else
...

特殊モード.ahkの中身
help=
(
F1: aaa
F2: bbb
F3: ccc
)
msgbox,,特殊モード,%help%
2019/05/11(土) 10:10:41.95ID:H4XAT+3F0
2ストロークキーのサンプルだったら流行らせるページ跡地にあったはず
http://lukewarm.s101.xrea.com/myscripts/
2019/05/11(土) 11:31:25.11ID:ZMMlxjL2r
>>113
俺なら素直にこうする
script _a.ahk ;通常入力用
F1::
Run, script_b.ahk
ExitApp

script_b.ahk ;Unicode入力用
a::Send, Unicode ;(可能ならControl,EditPasteのほうがいいかも)
F1::
Run, script_a.ahk
ExitApp
2019/05/16(木) 06:42:10.73ID:hupmSm4w0
イヤホンのリモコンでYouTubeプレイリストを次の曲へ飛ばせるようにしたいんですけど
もしかしてVivaldiってControlSend働かなかったりしますか?
アクティブウィンドウにすればもちろん届くんですけど...

$Media_Next::
SetTitleMatchMode,2
ControlSend, , +n, ahk_class Chrome_WidgetWin_1, YouTube
return


動いた方↓

$Media_Next::
SetTitleMatchMode,2
WinActivate, YouTube ahk_class Chrome_WidgetWin_1
send,+n
return
2019/05/18(土) 22:25:29.83ID:YTsL4HgD0
>114-117
ありがとうございます。順番に試しながらヒントにして
少しずつ追加したり入れ替えたりなんとかやってます。

理想的には秀丸マクロで

[Ctrl] [@] [a] で á
[Ctrl] [Shift] [@] [a] で à

としているのでそれをAHKでも再現したいのですが、
3つ以上はダメらしいですので、せめて
外国語キーボードにある、[@] と [a] で á、
[Shift] と [@] と [a] で à といった出し方はAHKでは再現
できないんでしょうか?
2019/05/19(日) 09:09:14.32ID:KWlh8/PJ0
>>101
3ストロークだろうが4ストロークだろうがInputで入力待ちするなり
フラグ立ててフェーズ分けするなりすりゃ行けるんじゃないの
ようはスプリクトの組み方次第だと思うが
2019/05/19(日) 09:14:15.36ID:KWlh8/PJ0
レス番超間違いすまん
>120は>119へのレス
2019/05/19(日) 21:49:43.64ID:u1McXRZM0
うーん、まだ自分がよく解っていないようです。

ちなみにホットストリングで修飾キーは使えないんですか?

:*:@a::{u+00e1}

は機能するのに

:*:^@a::{u+00e1} や :*:^@::{u+00e1}

は機能しないんですが・・・。
2019/05/19(日) 22:11:49.46ID:shAc6I6q0
>>122
ホットストリングは入力されたテキストを置換するコマンドなんだからCtrlが機能しないの当たり前
ホットキーの機能と混同してないか?
2019/05/20(月) 01:33:16.42ID:1TQOMk6E0
>>123
なるほど。かといって

^@a::Send, {u+00e1}

としても使えないんですよねぇ。

^a::
If GetKeyState("@", "T")
Send, {U+00E1}
Else
XXXXX
Return

で取り敢えず ^@a::Send, {U+00E1} 状態を作れました。
同時押しではなくて時間差を認める調整は必要ですが。

ただ、これだと通常のCtrl と aで「すべて選択」が効かなくなる
のですが、@を押していない場合のElseのXXXXX部分、
どう書いたら良いのでしょう?
2019/05/20(月) 01:54:05.75ID:xmYDYS/R0
なんでわざわざそんな変な使い方しなきゃならねえんだ
^@::Send, {u+00e1}
とか
^+@::Send, {u+00e1}
とかでいいだろ
2019/05/20(月) 08:56:51.64ID:1TQOMk6E0
ですね。あとで気づきました。

^@::
If GetKeyState("a", "T")
Send, {U+00E1}
Return



^@::Send, {u+00e1}

^+@::Send, {u+00e1}

とせず ^@a にこだわるのは、あとで
^@e や ^ta とか、^+@a や ^+@e でも
使うつもりだからです。
2019/05/20(月) 12:08:02.73ID:yF4IvTXT0
話の趣旨が変わってね? 同時押しじゃなくて順次入力で認識させたかったんじゃないの?

そもそもが
[Ctrl]→[Shift]→[@]→[a] なのか
[Ctrl]+[Shift]+[@]+[a] なのか
指定がないのでようわからんが

真にやりたかったのは
[Ctrl]+[Shift]+[@]→[a] なのでは?
http://codepad.org/TkxXCpoa
2019/05/20(月) 12:37:55.01ID:yF4IvTXT0
訂正
多段ストロークでも動くようにするならこう
http://codepad.org/rW4gY0an
2019/05/21(火) 05:23:14.44ID:7W5GDYJe0
>>127
不慣れでわからないことだらけなので
まずは3〜4つのキーで目的の文字を出せるようにして、
キーの押し方はそのあとで考えようと思っていました。

リンクありがとうございます。あとで試してじっくり読んでみようと
思います。

とりあえず>120でヒントをもらったインプットを使って

^@::
Input,InputChar,C I L1 T10,{Esc},a
if ErrorLevel=Match
{
if InputChar=a
Send,{U+00E1}
}
return

としても ^@a は機能しました。数を増やしていくと何か
問題が出るのかはまだ検証してませんが。
2019/05/21(火) 05:57:15.89ID:zoAcTfZP0
>>129
>キーの押し方はそのあとで考えようと思っていました

いやそれは先にハッキリさせるべきところだろ
3キー同時押しなのか順番押しなのか、それによってやり方も全然変わってくるんだから
質問するなら正確に何をやりたいのか伝えるのが礼儀ってもんだ
でないと答える側はお前が何やりたいのか全く分からねえし話がズレてくだけ
最初にF1で切り替えとか言ってた話はどこ行ったんだよと
2019/05/22(水) 20:17:54.08ID:/ee0fjiV0
>>130
すいません。全部説明するとけっこう長くなるのと、
AHKではやりかたが変わるのかあとづけで修正が容易なのかも
はっきり知らなかったので1つずつ試行錯誤しながら質問していました。

F1の件は最低限の組み合わせを作ってテストしてうまくいきました。
F1はラテン文字以外のユニコード文字のまとまりを
複数切り替える想定のもので、^@aの話は日本語キーボードの
英数モードの拡張として試しているものです。

^@a でやっていることの全体像としては、1つのラテン文字
キーボードでできるだけ多くの音声記号つき文字や欧文で使う
合字・記号を出せるようにしようというものです。
ウィンドウズで設定できる外国語キーボードを調べるとどれも
一長一短で、また最も出せる文字が多いと思われるものでも
不足を感じたのと、どうせ切り替えるなら日本語の半角英数モードに
まとめてしまった方がいいのでは?と思いました。
@aや+@aの順次押しのようなやりかたは外国語キーボードで
使われているものです。^を加えたのは秀丸マクロで同じ事をする
場合、日本語英数モードの一部なので同じ場所が@になり、
@も残すために加えていたやり方を援用しようとしただけです。

なのでその先の話としては、^@aでアキュートつきaを出すのは
日本語キーボードの英数モードでのみにするとか、^+@aに更に
キャップスロックが加わる場合とか、英数モードへの集約に問題が
あって断念した場合、通常の言語切り替えで言語別にキーの
修正の仕方を変えられるのか?ということも調べようかと考えて
いました。

 上で教えていただいたリンクのkeysUpdateやKeysCheckや
KeysClearというのはAHKwikiには解説の項目がありませんが、
どういった物を読めば使い方がわかりますか?
2019/05/22(水) 20:23:04.87ID:MZL3QspE0
伝えるべきことを簡潔に伝えられない
これがアスペってやつか
2019/05/22(水) 21:17:29.23ID:oe8s41BQ0
動機や理由は該当の外国語キーボードとやらを知らない人には細かく書いてもわからないそれより動作仕様を簡潔にまとめよう

>128のkeysなんとか()はユーザー関数
複数にホットキーでほぼ同じことの繰り返し作業になるから纏めてあるだけ
新規.ahkに全文コピペで一通り動くように作ってあるんでとりあえず試してみて

関数についての解説はこの辺
http://ahkwiki.net/Function
2019/05/22(水) 21:38:52.02ID:1pCKYHNG0
ahkwikiって誰も更新しなくなったけどなんで?
2019/05/23(木) 11:42:50.67ID:mjktGPuh0
^ & [::Send, ^l
これが動作しないのですがどこが間違っているんでしょう
2019/05/23(木) 11:55:59.07ID:37i5KL+N0
おま環
2019/05/23(木) 17:32:46.46ID:ekgN0E6H0
ちゃんとここ押してるか?
https://i.imgur.com/1ktXRRa.png

ちなみに出力されるのはこれだぞ
https://i.imgur.com/g1EAYDF.png


コンビネーションキーは+^!#で修飾キーを追加したりは出来ない。
Ctrl+[ を指定したいなら
^[:: もしくは ctrl & [::

^ を出力したいなら
send,{^}[
2019/05/25(土) 05:32:06.78ID:MJ2GF8zW0
最後に閉じたフォルダ/ソフトを開くホットキー作りたいんですけど
閉じる前にWinGetで格納したウィンドウハンドルを保持し続けることってできますか?
2019/05/25(土) 10:04:03.67ID:6d36mUsG0
スクリプトを常駐させるなら変数に保持させることは出来る
非常駐ならiniやtxtファイルに書き出しておけばいい
2019/05/25(土) 12:21:35.07ID:GKynUIXB0
ウィンドウ閉じたらそのハンドルは破棄されるので
ハンドル保持したままにしたいなら閉じないでWinHideで非表示にして後でWinShowするしかない

完全に閉じた状態から復活(ソフト再起動)したいなら
・WinGet,...,ProcessPath でソフトのパスを覚えておく
・必要ならコマンドライン引数も取得しておく
・WinGetTitle / StatusBarGetText 等でタイトルバーやステータスバー上のフォルダパスを取得して覚えておく

で Run, %apppath% %option%
2019/05/25(土) 19:22:51.38ID:MJ2GF8zW0
>>139
>>140
アドバイスありがとうございます
しばらく時間ができたらつくってみようと思います
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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