X



AutoHotkey スレッド part25 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
2017/12/18(月) 19:44:47.33ID:8SoFyHAV0
>>610です
#NoEnv
#InstallKeybdHook
#UseHook
SendMode,Input

スクリプトの頭に上のを付けてもやっぱり不定期にホイールは反応しなくなるので
諦めます
2017/12/19(火) 11:49:43.42ID:Van3T9iO0
WheelScroll.ahkとかWheelaccel.ahkだと、WINDOWS10の modern UI でスクロールできないです。
MGLを使った回避はあったのですが、単体利用での回避方法を誘導していただけないでしょうか。
よろしくお願いいたします。
2017/12/19(火) 12:15:03.89ID:ZXNMo4hja
あれってスクロールメッセージ送ってるはずだからそれがないなら反応しないとかだったような
2017/12/19(火) 17:14:58.39ID:knaBMDJJ0
>>619
WheelScroll.ahk modernUI対策版を上げました
ただwin10の場合は標準でリダイレクトホイール可能ですのでもうこのスクリプトは要らないかも
http://www6.atwiki.jp/eamat/pages/30.html
622名無しさん@お腹いっぱい。 (ワッチョイWW a787-XSIK)
垢版 |
2017/12/19(火) 22:34:23.63ID:TaxqTr0o0
FileGetShortcutを使って指定したショートカットファイルのアイコンをGUIに表示させたいのですが、FileGetShortcutで取得したアイコンのフルパスは「C:\Users\ユーザー名」の部分が%USERPROFILE%となっているようで、GUIに表示できません。
%USERPROFILE%を展開する方法などはないでしょうか。

Path := "C:\Users\ユーザー名\Desktop\Google Keep - メモとリスト.lnk"
FileGetShortcut,% Path,,,,, OutIcon
Gui, Add, Picture ,w32 h32 ,%OutIcon%
Gui, Show, AutoSize x60y60
2017/12/19(火) 22:50:38.94ID:spQDjKkw0
>>622
%USERPROFILE%を直接展開する方法は分からないが、
A_UserNameでログインしているユーザー名を
または、A_Desktopでデスクトップフォルダのフルパスを
取得することは出来るから置換すればいいような…
624名無しさん@お腹いっぱい。 (ワッチョイWW a787-XSIK)
垢版 |
2017/12/19(火) 23:25:51.46ID:TaxqTr0o0
>>623
ありがとうございます。
StringReplace, OutIcon, OutIcon,% "%USERPROFILE%" , %USERPROFILE%, All
この一行で解決しました。
2017/12/20(水) 08:57:02.76ID:CxHWmxkW0
>>621
お世話になってます。
WheelScroll.ahkの作者さんがいらっしゃったのですね。
スクリプトの修正ありがとうございました。

業務用ソフトだからでしょうか。
特殊なコントロールが多いせいか、必須スクリプトです!
加速以外は全部の機能を使ってると思います。

横スクロールのコメントがございました。
Shiftホイールで横スクロール部分を有効にしました。
2017/12/20(水) 17:56:12.25ID:CxHWmxkW0
もしお時間をいただけるならば、ご確認、ご対応いただければ幸いです。。

20150711バージョンにて、excelのシート切り替えのため、下記を追加しておりましたが
20171219バージョンで機能しなくなりました。
スクリプトを比較してみて、競合しそうな追加部分は無いように見えるのですが、いかがでしょうか。

WheelScroll.ahkの最終行に追加
#IfWinActive ahk_exe EXCEL.EXE
XButton1::Send ^{PgUp}
XButton2::Send ^{PgDn}
Return

あと、諦めていたことなのですが、excelにて、列の固定(ウインドウ枠の固定)をしていると横スクロールできません。
環境依存などあれば書き込みます。
よろしくお願いいたします。
2017/12/21(木) 00:44:34.93ID:tyYKgEs60
>>625-626
ご使用&報告ありがとうございます
当方先月やっとwin10に移行したばかりであまり動作確認が取れておりませんでご不便をおかけします
色々酷いので手直ししたいんですがWheelaccelやMGLのほうがいい感じに改良されてるようですし
こっちはもう自分用で汚くてもいいかな〜みたいな感じで放置してました
こんなでも使ってくださってる方がいるのは嬉しいです、ありがとうございます

>WheelScroll.ahkの最終行に追加
こちらでも20171219に同条件で追加し、Excel2007、2016の2種で試しましたがどちらも問題なくシート切替できました
もしやShiftホイール部のコメントを外されたときに */での閉じに失敗してたりしないでしょうか
; /***** チルトが無いマウス用
  :
; */
↑行頭にセミコロンでコメントのコメント化してみてください
(shift横スクロールはチルトのないm570使い続けてる自分のために入れたままにしてたんですが
今更チルトマウス使ってない人のほうが少なかろうということで今回コメントにしてしまいました
ややこしいことしてすみません)

excelの固定時横スクロールについては原因判明しましたので次回更新時に修正いたします
他にも手直ししたい箇所があるため少しお時間下さい
628名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 01:20:20.36ID:SquZXOD10
send {5 down}

の5を変数でできないです?
629名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 01:33:36.72ID:SquZXOD10
evalがあったのか〜
2017/12/21(木) 01:44:00.48ID:PxmCSxyY0
a:=5
send {down %a%}
631名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 02:05:04.78ID:SquZXOD10
>>630
%か〜さんんきゅ〜
2017/12/21(木) 09:26:50.18ID:Iywphmus0
>>627
ご説明賜り感謝致します。
コメントアウトの方法は理解しており間違っていませんでした。。
これから出張なので、来週改めて確認していきたいと思います。
その他含め、ありがとうございました!
私はm510でチルト出来るのですが、shift横スクロールの方がスクロール量をコントロールできるので便利です。
2017/12/21(木) 17:04:35.86ID:6WwU69go0
>>627
2017/12/21(木) 17:38:42.68ID:WwMk0bk3p
>>627
632です。
ahk_classで指定したらシートの切り替えができました。
あとコメントにありました互換固定のテストは、| modeの方でないと動かないソフトがありました。
ありがとうございました。
2017/12/21(木) 20:40:35.45ID:WrHlVdtR0
最近 本体アップデートされないですね
2017/12/21(木) 21:04:01.05ID:coGv5Pxe0
github見ると前回の更新からFixedが大分溜まってきてるし落ち着いたら更新するんでない
2017/12/22(金) 10:01:04.41ID:vcVm8yL20
ソートはせずに、前に出てきたものを同じ行を省く操作ってありますか
たとえば、
aaa
bbb
ccc
aaa
ddd
bbb

aaa
bbb
ccc
ddd
としてほしいのです。ソートはしません
2017/12/22(金) 12:31:37.29ID:DzJ++uf1r
>637
var =
(
aaa
bbb
ccc
bbb
aaa
)
Loop, Parse, var, `n
{
If(!InStr(newvar, a_loopfield "`n"))
newvar .= a_loopfield "`n"
}
Msgbox, %newvar%
2017/12/22(金) 12:35:31.15ID:CpHj++au0
すべての変数を一個ずつIfで比較して、一致しなければ出力してけばいいんじゃね
2017/12/22(金) 15:39:38.72ID:O+PHC10P0
ポインタの使い方がよく分かりません

i := 4
p := &i

MsgBox, % *p
MsgBox, % NumGet(p + 0, "int")

のように書いても両方共iとは関係のない値が出てしまいます
どうすればpからiの中身にアクセスできるのでしょうか?
2017/12/22(金) 15:49:45.03ID:O+PHC10P0
すいません、自己解決しました
VarSetCapacityとNumPutを使えば良かったのですね
2017/12/23(土) 08:30:47.00ID:jbJlOP0C0
あるアプリでツリービューをクリックするとサーバーと通信してその結果を
隣のリストボックスに表示する、というのがあります
今はAHKでmousemoveでカーソル移動してツリービュー上でクリックして
隣のリストボックスの情報をControlGet等でとっています
これをもっとスマートにしたいのですが、
ツリービューをクリックしてネットに情報を送るところを直接httpで送ることは
できませんか。具体的にどういうメッセージを送ってるのかを知ることは出来ないのでしょうか
URLDownloadToFileというのは見つけたのですがここまでのことはAHKでは出来ませんか
2017/12/23(土) 12:21:47.75ID:2pB5qSyN0
アプリの名前伏せられても通信プロトコルすら分からないわけだが
質問内容から想像つく範囲で答えるならdllcallからwinsockAPI叩けばおそらく可能ではある
ただSendMessageみたいに1発投げればいいってもんじゃないし
相手サーバーとのネゴシエート必要だし通信プログラムの知識は必要になると思うが
2017/12/25(月) 10:30:36.34ID:LC3msSEB0XMAS
v.1.1.27.00にアップデートした

●AutoHotkey Downloads
https://autohotkey.com/download/
2017/12/25(月) 15:17:48.28ID:4tI3Wjp7aXMAS
エディタであるように二打鍵からなるホットキーを設定したいのですが
どうやればいいのでしょうか?
たとえば
Ctrl+K→Ctrl+T
など
2017/12/25(月) 16:05:01.58ID:dcbUg3oN0XMAS
>>644
v.1.1.27.00にしたらremap用スクリプトがエラーで起動しなくなった
sc073::+vkE2sc073という記述が一箇所あってそこでエラー発生したてので、
sc073::+sc073としたらスクリプトが正常に動いた
今バージョンからvk**付けるとエラーになってしまうのか?
2017/12/25(月) 16:10:40.46ID:mWbboXyW0XMAS
>>645
wiki読め
2017/12/25(月) 16:31:55.71ID:LC3msSEB0XMAS
>>646
変更履歴によるとこれまでの「vk**sc***」という記述は廃棄されてsc***を削除した「vk**」でOK

●Changes & New Features
https://autohotkey.com/docs/AHKL_ChangeLog.htm
2017/12/25(月) 18:24:54.21ID:mj5Z4sTu0XMAS
ahk2なんて作ってるのか
期待はしたいが現状のコード1万行を移植しないといけないと思うとめっちゃだるいな
2017/12/25(月) 21:26:06.64ID:Hj7/q9TgaXMAS
ソースコードはテキストだ
つまり文章をコンバートするスクリプトさえ作ればなんとかなんじゃね?
2017/12/26(火) 04:54:57.32ID:uLjqpZSC0
A_Argsは嬉しい
2017/12/27(水) 16:25:05.40ID:Aacf2UtF0
#IfWinActive,無題 ahk_exe notepad.exe
としてもメモ帳を認識しない。
無題をやめて - にすると大丈夫。
何か問題ある?

スクリプトはUTF-8。
環境は、Windows10で、v.1.1.27.00です。
2017/12/27(水) 16:27:33.29ID:Aacf2UtF0
>>652
UTF-8のBOM付きやSJISしたら動作した。

ウィンドウタイトルの日本語を探すのは初めてだから、ごめんちょ。
2017/12/30(土) 03:58:59.09ID:gls+cAd20
マウスの中ボタン+右クリックにホットキーを当てると
中ボタン単体では動作しなくなってしまうので

Mbutton::send,{Mbutton}
return

としていたのですが、これだと中ボタンでドラッグアンドドロップできなくなることに気付いて

Mbutton::MouseClick,middle,,,,,d
return
Mbutton up::send,{Mbutton Up}
return

と書いてみたのですがうまくドラッグアンドドロップ出来ません
どのように書けば良いのでしょうか?
2017/12/30(土) 04:20:23.50ID:b6YqK2p70
>>654
中ボタン+右クリックにホットキーを当てた時点で
中ボタン単体の判定は中ボタンを離した時に行われる様になるので
通常の方法ではドラッグは出来なくなる
別の対処策としては2度押しでドラッグにするとか、別のボタンにドラッグ割り当てるとか幾つかやりようはあるけど
どうしても普通にドラッグしたいなら中ボタン+右クリックを諦めた方が良い
2017/12/30(土) 05:26:41.98ID:xIT/wV5A0
Hotkeyコマンドでホットキーをトグルさせるのは?
特定のウィンドウがアクティブ時、または中クリック長押しで切り替えとか
2017/12/30(土) 09:28:37.04ID:mI1ieLxE0
>>654
中ボタンでドラッグアンドドロップ出来るアプリを持っていないので確認できないけど、
オートスクロールのキャンセルはCtrlで出来るから、
#if GetKeyState("MButton","P")
RButton::
Send,{Ctrl}
ToolTip,M+R
Sleep,1000
ToolTip
return
#if
こんな感じでどうだろ
2017/12/30(土) 10:20:44.83ID:gls+cAd20
>>657
出来ました!ありがとうございます
GetKeyStateを使えばホットキーとして割り当てなくて済むのですね!
2017/12/30(土) 13:31:53.23ID:fvgI/zHL0
>>658
それだと中+右ボタンを押す時にも中ボタン単体押しが送信されるのでは?
それで構わないならば
~MButton & RButton::
にすればいいだけだな
2017/12/30(土) 21:59:48.99ID:gls+cAd20
>>659
>>657でも出来るのですが  ~MButton & RButton:: でも出来ますね
~ の意味を調べたら イベントを乗っ取らず、そのままシステムに通す って書いてあったのですが
元のキーの機能を殺さずに的なことなんでしょうか?
2017/12/31(日) 12:27:31.81ID:cHZnLDz90
v1.1.27.01が公開されたよ

●Changes & New Features
https://www.autohotkey.com/docs/AHKL_ChangeLog.htm
2017/12/31(日) 15:22:16.33ID:VvllMHuur
>>661
vkF3SC029::rerurn ;全半角
vkF4SC029::rerurn ;全半角up
でエラー出る
俺環かな
スキャンコードなし指定ならokだた
2017/12/31(日) 17:48:52.87ID:iRBxU1N10
>>662
久しぶりにアップデートしたら自分もInvalid hotkeyってエラー出たわ
とりあえず1.1.26に戻した
2017/12/31(日) 17:56:20.08ID:iRBxU1N10
仕様変更あったのね
チェンジログ読んだらちゃんと書いてあったや
Scripts containing hotkeys of the form VKnnSCnnn:: will need to be corrected by removing SCnnn, which was previously ignored.

しかし互換性持たせてくれればいいのになぁ
2018/01/01(月) 22:19:27.79ID:Yv5Bp8s50
エラーが出るかと何かと思った
スキャンコード全部削除したけど動作がおかしくならないか不安
2018/01/02(火) 00:23:22.16ID:cBxV7kcZ0
え?scxxxのみで何も問題ないけど…
2018/01/05(金) 23:03:42.41ID:l4zNz2Hg0
あー、先にここ見とくべきだった。更新したら動かなくて何だろうかと
せっかくなので、これからverup予定の方に、自分が修正したキー一覧を以下に
変換…vk1Csc079
無変換…vk1Dsc07B
:(コロン)…vkBAsc028
:(コロン)…vkBAsc03A
;(セミコロン)…vkBBsc027
;(セミコロン)…vkBBsc03B
,(コンマ)…vkBCsc033
\(バックスラッシュ)…vkE2sc073
CapsLock…vkF0sc03A
ひらがな/カタカナ…vkF2sc070
全角/半角…vkF3sc029
全角/半角…vkF4sc029
grepツールで済ませてそんなに時間はかからなかったけど、久しぶりに面倒な更新作業だった
668sage (ワッチョイ 9f13-fYpg)
垢版 |
2018/01/06(土) 01:51:53.58ID:gHX87yO10
vkxxscxxxが使えなくなって
vkxxまたはscxxxのどちらかで指定と理解してるんだけどいいんかな?

使ってる人いるかわからないけど・・・
vkff系のscはkeywaitでエラー出たので
sc056::
keywait,vkff
return
としたらエラー無しで動いた。

sc05eは使えなくなったが、こいつだけvkff::をアテた。
とりあえず他とバッティングしてない。
2018/01/06(土) 22:19:48.65ID:L9VE7V/R0
こんばんはー、ホットストリングって機能に初めて手を出してみたんですけど、
ちょっと???な部分があるのでお伺いしたいです。
「[[」って打ったら「『」、「[[[」って打ったら「【」になるようにするにはどう書けばいいんでしょう?
Z0オプションでバッファが残るっていうならそれ指定するだけでいいのかなーと思ったら思うように動かず。
フラグを変数に格納するなり、複数行書かないとダメでしょうか?
2018/01/06(土) 23:15:38.82ID:G7wFYGrJ0
ここ↓見るとか具体的にスクリプト晒すとかしないとレス付かないぞ
ホットストリング - AutoHotkey Wiki
http://ahkwiki.net/Hotstrings
2018/01/07(日) 00:56:44.38ID:JkICX0vw0
ああいえ、読んだんですがイマイチ仕様を把握できず、
シンプルな構文で書けるのか書けないのか書けないのか、単にそれだけを慣れている人に聞きたかったんです。
必要ないでしょうけど一応晒すと、
:*Z0:[[::『
:*:[[[::【
で[を3回押したら【になりそうだなーと思ったのですがならないなーってことでして。
2018/01/07(日) 01:23:31.75ID:rPkuxGOZ0
ホントにちゃんと読んだのか?
特に「終了文字」の項目を・・・
2018/01/07(日) 01:54:30.71ID:JkICX0vw0
>>672
……? *で不要化してますよね?
2018/01/07(日) 12:54:08.50ID:vRDST1RB0
本当にちゃんと読んだか?
「置換後のテキストに2バイト文字を使うことはできないので、スクリプト実行型でクリップボードを経由して貼り付けるなどの方法を取る必要がある」
2018/01/07(日) 16:17:48.05ID:JkICX0vw0
>>674
ご自分で試されましたか?
大分前から2バイト文字送信も実装されているようですが
そもそも質問の方向性が全く違います
676名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 16:59:29.06ID:TEnpSFgY0
>>671
『が入力される時に[[がBSで消されたことになるので、続けて[を打っても:*:[[[::が実行されない。
677名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 17:03:26.18ID:TEnpSFgY0
ホットストリングでやっても出来なくはないけど、ややこしいし色々問題あるからおすすめしない
2018/01/07(日) 17:41:28.22ID:JkICX0vw0
>>677
あー、簡単に上手いことはいかないんですね。
B0にして、かつスクリプト実行型に変えたらようやく入力バッファ残りました。
しかもバグなのか、必要とされるBackspaceの量(置換後に本来消す文字数)まで引き継がれてしまい、
後続もB0で手動でBackspaceの数を調整しないといけないハメに。
さらに言うと、「:B0 O*:abc::」のあとは「:B0 O*:bcd::」では反応せず、「:B0 O*:abcd::」のみ受け付けると仕様がよーわからん…。
とりあえず↓のように出来ましたけど、もっとスマートな書きかたあります?

:B0 O*:[[[::{Backspace}【
:B0 O*:[[::
Send, {Backspace}『
Return
679名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 18:35:00.89ID:TEnpSFgY0
>>678
?オプション付けないとa〜z打った直後に動いてくれないから付けた方が良い
ちなみに、他にキー入力をいじるソフト(やまぶきRとか)使ってるとちゃんと動かない事がある
2018/01/10(水) 01:51:34.06ID:BCaOYMAn0
ゲームにAHKを利用しているのですが以下はQキーを押したとき
@Iキーを送る
A指定座標上で右クリ
B再びIキーを送る
という単純なものです

Q::example() ;
examplel(){
BlockInput On
Send {i}
Click right 1305,829
Send {i}
BlockInput Off
return
}

ここで質問なのですが、このマクロによる操作(@〜Bですね)が一通り終わった後、マウスポインタをもとの位置に戻ってこさせるということは可能でしょうか?
2018/01/10(水) 02:51:37.30ID:4l+dsFFh0
>>680
移動する前に座標取得
MouseGetPos
2018/01/10(水) 10:42:20.97ID:JKf1Cq3D0
>>681
ありがとうございます
683名無しさん@お腹いっぱい。 (ワッチョイ ea67-zHNy)
垢版 |
2018/01/11(木) 22:19:09.67ID:HG8U+U2Z0
RegExReplaceでファイルパスのファイル名だけを置き換えようとしたんですけどこう書いてしまうと

NewStr := RegExReplace("C:\a\b", "([^\\]+?)?$", "c")
tooltip,%NewStr%

結果が「C:\a\cc」となってしまいます。なぜか置き換え文字に指定した文字が二重で入力されます
以下のように置き換え回数を1に制限すると「C:\a\c」となってくれます

NewStr := RegExReplace("C:\a\b", "([^\\]+?)?$", "c",,1)
tooltip,%NewStr%

使っている正規表現がまずいのかRegExReplaceの記述の仕方がまずいのかわかりませんが置き換え文字が二重に入力されないようにするにはどうしたらいいんでしょうか?
2018/01/11(木) 22:55:45.09ID:8RyCoUmG0
>>683
RegExReplace("C:\a\b", "(.*\\).*", "$1c")
2018/01/12(金) 02:04:04.29ID:+j8QRcK60
>>683
拡張子、ファイルかフォルダの考慮も忘れずに
2018/01/13(土) 13:16:34.08ID:aFWvyjXJ0
>>683
正規表現がまずくて、量指定子"?"とグループ化"()"の使い方が迷走してるんだと思う
個人的にはこう
RegExReplace("C:\a\b", "[^\\]+$", "c")
2018/01/13(土) 13:50:09.04ID:NZPiUPRF0
いつの間にかバグフィックスが進んで
1.1.27.04になっとるやないかい
688名無しさん@お腹いっぱい。 (ワッチョイ ea67-zHNy)
垢版 |
2018/01/13(土) 23:00:31.98ID:u3DR4K2j0
>>684
>>685
>>686
ありがとうございます
参考になりました
2018/01/14(日) 11:50:07.84ID:M43+YLx+0
以下のスクリプトを「常時」「全てのウィンドウに」適用する(キャプションバーを隠す)にはどうすれば良いでしょうか

;キャプションバーをなくす
LWIN & LButton::
WinSet, Style, -0xC00000, A
return

「bug.n」の以下のスクリプトでも同様のことができているようなのでこの方法でもかまいません
(キャプションバーの非表示という部分の抽出の方法)
https://github.com/fuhsjr00/bug.n/blob/master/src/Window.ahk

実はこれで1年以上悩んでおります。
どうかよろしくお願いします。
2018/01/14(日) 13:28:36.81ID:SeWYloWZ0
>>689
https://arak.jp/diary/?20091030S1
2018/01/14(日) 13:50:26.25ID:M43+YLx+0
>>690
できました!
本当に助かりました
ありがとうございました
692名無しさん@お腹いっぱい。 (ワッチョイ 1e63-Un5q)
垢版 |
2018/01/15(月) 11:47:41.46ID:r2mlDsgK0
sc と vk だが,フォーラム読む限りはvkのほうがいいみたいだぞ.scは”still supported”とか書いてあるが,いつ消されるかわからんしな. 
2018/01/15(月) 23:34:41.39ID:6cx89JeH0
>>692
scのみで今まで問題無く行けてたがvkのみにしたら
一部でsc***→vk**変換以外で手直しやら動かなくなるやら困った事になった(ので途中で元に戻した)
例えば
sc029::send, {BS} ←[全角/半角]押下で{BS}
     ↓
vkF3::
vkF4::
send, {BS}
return
とする必要があったり

+sc03a::関数("引数") ←[shift]+[CapsLock]で関数実行
     ↓
普通にCapsLockのON/OFF切り替えになってしまう
([CapsLock]キーを[F**]に割り当てて、+F**::〜 とすれば行けるのかな?…面倒なので確認していない)

とりあえず未だsc***のみでも問題無く動いてるので行けるとこまでこのままいくわ(´・ω・`)
2018/01/16(火) 00:08:51.64ID:NLQSNNGB0
うちも試しに更新したらUSキーボドのCapsLock系が動作しなくなった
更新内容がいまいちわからん

これがエラーで動かなくなった
;CapsLock ON/OFF
~Shift & vkF0sc03A::Send, {CapsLock}

こっちは動く
;------CapsLock Auto OFF ------
CapsLock::
GetKeyState, state, CapsLock, T
If state = U ;OFF
SetCapsLockState, ON
else
{
SetCapsLockState, OFF
}
Timer03:
If(A_TimeIdlePhysical>5000)
SetCapsLockState, OFF
Return

でもこっちでCapsLockの状態取得しようとすると動かない
~Shift & vkF0sc03A::

バージョン戻したけど時間がある時にもう一度書き直してみようと思う
何か分かる人いたらヒントください。
2018/01/16(火) 07:21:01.72ID:NWgRaCQP0
>>694
vkF0sc03A

sc03A
でいけると思う。
2018/01/16(火) 14:37:48.49ID:NLQSNNGB0
>>695
vkF0sc03A が sc03a に置き換わっただけで状況は同じでした

どちらも動かない
+sc03a
~Shift & sc03a

動作する
sc03A

やりたいこと
違うソフトでCapsLockのオンオフの操作を変えていたので
Shift + CapsLock で統一したい
その際に自動オフのコードを...

CapsLock:: ;Shift + CapsLockにしたい
GetKeyState, state, CapsLock, T
If state = U ;OFF
SetCapsLockState, ON
else
{
SetCapsLockState, OFF
}
Timer03:
If(A_TimeIdlePhysical>5000)
SetCapsLockState, OFF
Return
2018/01/16(火) 14:45:00.33ID:NLQSNNGB0
あっ これも駄目ですね
~Shift & sc03A::Send, {CapsLock}
CapsLockのみでも反応してしまう

問題無し
~Shift & vkF0sc03A::Send, {CapsLock}
でも、~Shift & vkF0sc03Aはオートオフのコードが反応しない
2018/01/16(火) 16:07:31.09ID:NLQSNNGB0
連投すまん
>>697
CapsLock::returnしております
2018/01/16(火) 18:51:12.72ID:IxAc+IU+0
バグフィックスの動きが激しいし
しばらくは1.1.26.01で止めておいたほうがよさそうだな
2018/01/17(水) 03:45:15.83ID:5KJf9t9O0
1.1.27.06でdefenderがウィルス判定出しやがる
まあアプリの性質的に誤検出しやすいのはしょうがないけど
2018/01/17(水) 03:52:01.97ID:5KJf9t9O0
zip版なら平気だった
2018/01/17(水) 14:23:18.25ID:Pgssw/8N0
ControlSendですが、これで入力しようとすると、ターゲットのウィンドウがアクティブになって表に出てきてしまいます
裏で入力させることって出来ませんか
最前面では別のウインドウで作業していて、その間に、他の隠れているウインドウにControlSendで値を入れたい
のですが
2018/01/17(水) 18:15:41.52ID:RG3q26nn0
ソフトにもよるとしか言いようが無いけど
DetectHiddenWindowsを試してみたら
2018/01/18(木) 07:34:28.16ID:E6v3BPu00
DetectHiddenWindowsは関係ないんじゃね?
裏に隠れているだけだから
2018/01/19(金) 09:27:55.09ID:3Oem/ury0
10キー付きキーボードの10キー部分と、と10キーパッドで、それぞれ別の割当をすることって出来るのでしょうか? ハードウェア別の設定が出来れば10キーパッドを有効活用できるかなと思ったのですが…。
2018/01/19(金) 09:36:14.73ID:ds+5Qw5m0
出来ません
素直にプログラマブルキーパッドを使いましょう
2018/01/19(金) 10:11:56.19ID:3Oem/ury0
ありがとうございます。
2018/01/19(金) 10:40:55.87ID:m9/Neybx0
まさにそういうソフトは存在するよな
一時使ってた
2018/01/19(金) 16:07:46.92ID:AVpnJ5wF0
HID Macrosだっけっか
その辺は CG用補助入力総合スレ あたりが詳しかったと思う
http://mevius.5ch.net/test/read.cgi/cg/1486757763/
2018/01/22(月) 02:02:18.12ID:TAC5etfN0
main.ahkと更新.ahkで2つ起動したいと思うのですが
長時間起動してるといつの間にかフリーズしているので
更新.ahkで両方のahkをリロードしたいのですが
どのようなスクリプトを書けば良いのですか
よろしくお願いします
2018/01/22(月) 02:14:51.75ID:D9rOGpYI0
更新.ahk自身はReloadコマンドでリロード出来る

main.ahkは冒頭に
#SingleInstance force
を書いておけば更新.ahkでRunするだけでリロードされる
2018/01/22(月) 04:04:19.09ID:OoTUIsqF0
>>711
何とか出来ました!

reload
run , c:~main.ahk

上記のアホなことやっていて更新できないなぁと悩んでいましたw
教えて頂きありがとうございました
2018/01/23(火) 12:24:46.18ID:0+zHhbeo0
Autohotkeyで即時関数みたいなことできます?
MouseGestureLでジェスチャ毎に再利用しない変数を保持しっぱなしなのもなんだし
最後に一々解放するのもスマートでないというかめんどいというか
代替案でもいいのでお願いします
2018/01/23(火) 14:55:23.06ID:9c2K3oq50
>>713
どこでもいいから関数書いて呼び出すだけ
2018/01/23(火) 15:01:59.35ID:9c2K3oq50
hoge()
return

hoge() {
 MsgBox
}

; --------
hoge2()
hoge2() {
 MsgBox
}
return

; --------

hoge3() {
 MsgBox
}
hoge3()
return
2018/01/23(火) 21:28:28.51ID:0+zHhbeo0
いや、都度関数を作ると関数名がどんどん消費されちゃうってことで即時関数のやり方を聞いた次第です
っていうか即時関数というより無名関数でしたね
2018/01/24(水) 02:41:30.95ID:YYzix6Ix0
MouseGestureL使ってないんでわかんないけどObjectじゃだめなん?
2018/01/26(金) 11:51:05.61ID:A8q+WlDN0
LWin::[
ってやってるだけなんだけど
いつのバージョンからかキーボードの他のキーやマウスのサイドボタンまでおかしな挙動をするようになった
割り当て自体は成功してるんだけど副作用がすごい
仕様変更ですかそれともおま環ですか?
2018/01/26(金) 14:32:12.71ID:lXZy4ZkG0
>>718
そういうのはレジストリ変更タイプのキーチェンジャーをおすすめする
2018/01/26(金) 16:08:35.67ID:A8q+WlDN0
>>718
すまん…おま環だったわ
マウス変えた時に入れたLogicool Optionsと競合してるだけだった
まぁ解決は出来なかったんだけどね
2018/01/26(金) 19:32:30.01ID:tlFNmfdt0
>>716
できない
v2でも実装する予定なし(去年の時点で)
https://autohotkey.com/boards/viewtopic.php?p=150578#p150578
関数名やラベル名を消費しないでサブルーチン作る方法は今のところないんじゃないかな

変数の一斉解放だけなら、変数をオブジェクトにまとめておいて最後に空にするとかあるけど
代案とするには弱すぎる
2018/01/27(土) 12:35:13.87ID:CxWu/J0c0
>>717
>>721
実装予定もなしかー
プラグインレベルの大掛かりなのだとobjectもありかもですね
ありがとうございました
723名無しさん@お腹いっぱい。 (ニククエ 0Caf-N37C)
垢版 |
2018/01/29(月) 13:14:45.61ID:cdR4sGD2CNIKU
Ctrl+CでPageDown、Ctrl+Q Ctrl+CでCtrl+PageDownに
したくて以下のようにしたのですが、^q後の^cがPageDown
に置き換えられてしまっているのかInputで拾えません。
何か方法はありませんでしょうか?


^c::send, {PgDn}
^q::
Transform, CtrlC, Chr, 3

Input,InputChar,I M L1 T2

if (InputChar = "c" or InputChar = CtrlC)
Send,^{END}
2018/02/01(木) 01:50:51.47ID:IVRJohHu0
gpd pocket を axキーボード設定で使っているのですが ?? のキーにFnを入れることはできますか?もしできるようなら教えてください。
2018/02/01(木) 01:52:25.90ID:IVRJohHu0
724です。
??は 三と書いてあるキーです
2018/02/01(木) 02:21:21.73ID:pVoUMo//0
>>725
FnキーはOSやソフトウェアを介さないハードウェアキーなので無理
「三と書いてあるキー」と言うのは恐らくAppsKeyのことなんだろうけど、それなら
AppsKey & ○:: でそれぞれの機能を割り当てれば疑似的にFnキーの様に使うことは可能
一つずつ割り当て行う必要あるから少し面倒だけどね

例)
AppsKey & Left:: Send, {Home}

AppsKeyのことじゃなかったら知らん
2018/02/01(木) 06:26:10.42ID:IVRJohHu0
>>726
ありがとうございます。
三はAppsKeyというのですね。
何もしらなくてすいません。
Fnキー無理なのですね、ファンクションキーがFn+数字キーなので片手で押せないので指の届く近くのキーに割り当てようと思いました。
でも全然わからなかったので質問してみました。
親切にありがとうございます。
2018/02/01(木) 07:26:34.43ID:urvW4tJz0
>>727
だからFnキー自体は割り当てられないけどAppsKeyをFnキーの様に使うことはできるっつーの
AppsKeyと数字の1キーを押したらF1を出力
AppsKeyと数字の2キーを押したらF2を出力
AppsKeyと数字の3キーを押したらF3を出力
以下略

これらを一通り割り当てればAppsKeyをFnの替わりに使える
例まで出してやってんだしこれで分からないなら質問する以前に基礎知識不足
wikiをよく読んでから出直して
2018/02/01(木) 07:37:13.87ID:Y39MZt1z0
AHKアップデートかけたら
vk1Dsc07B & MButton:: foo()
みたいのが片っ端から動かなくなって焦った
結局元に戻したぜ
余計なことすんな
2018/02/01(木) 08:10:11.62ID:IVRJohHu0
>>728

AppsKey & 6:: Send, {F6}
AppsKey & 7:: Send, {F7}
AppsKey & 8:: Send, {F8}
AppsKey & 9:: Send, {F9}

できました。
これで日本語入力楽になります。
本当にありがとうございました。
助かったです。
2018/02/01(木) 08:45:01.74ID:9rNYl+bm0
>>729
>>648
2018/02/02(金) 02:59:10.15ID:wY+RdUVV00202
v1.1.27.07にアップしたら、
もともとWinデフォのホットキーがあるキーに、
下のようなKeyWaitを使った複数タップ系のスクリプトが動かなくなった。
とりあえず「#2 Up::return」を上に置けば動いたけど何だろな?

#2::
 Key := "2"
 Timeout := 0.5
 KeyWait,%Key%
 KeyWait,%Key%,D T%Timeout%
 if ErrorLevel = 1
 {
  スレタイ検索
  return
 }
 ;2タップ時
 Googleで全文検索
return
2018/02/02(金) 05:38:52.02ID:EGJ8lL3F00202
なんだろうな動いたけど
GetKeyState, state, CapsLock, T で状態取得してelseで分岐させると動かない
でもトリガーがCapsLockキー単体なら問題無く動くんだよなぁ
同じコードなのにキーが違うと動かない理由ってなんだろう

;Shift+CapsLockに変えると動かない
;------CapsLock Auto OFF ------
vkF0sc03A::
GetKeyState, state, CapsLock, T
If state = U ;OFF
SetCapsLockState, ON
else
{
SetCapsLockState, OFF
}
Timer03:
If(A_TimeIdlePhysical>5000)
SetCapsLockState, OFF
Return

;Shift+CapsLockはこれじゃないと動かない
;------CapsLock Auto OFF ------
CapsLock::return
~Shift & vkF0sc03A::
Send, {CapsLock}
Timer03:
If(A_TimeIdlePhysical>5000)
SetCapsLockState, OFF
Return
2018/02/02(金) 05:43:35.42ID:EGJ8lL3F00202
そもそも状態を取得する必要性が何でだったかを忘れてるが...
下のコードだと何か気持ち悪い
2018/02/02(金) 11:23:50.20ID:UlhnALdl00202
vk**sc***は>648

それはそれとしてもLock系キーの動作は日本語OSではもともと不定でBIOS(UEFI)によって挙動バラバラだったし
たまたま動いてたのがバージョン変わったことで動かなくなったとしても別に不思議じゃないと思うが
2018/02/11(日) 15:54:02.28ID:wLAjQo6+0
識者の知恵をお借りしたい
ほとほと困ってます…

環境:windows7 32bit + Autohotkey 1.1.27.07
上記はvmware上で動作しています
この環境に,ipad + bluetooth keyboard + vmware horizone clientで,リモート接続しています
(つまり,クライアント側(ipad)の環境には,手が出せないということです)

で,windows7側で,キー入力をフックしたいのだが,Autohotkeyのkey historyで探ると,例えば…
VK=E7,SC=003D Type=U → 実際のキー入力は ”=”
VK=E7,SC=005B Type=U → 同 ”[”
VK=E7,SC=0040 Type=U → 同 ”@"
と表示されます

この情報から例えば,
sc003D::a
sc005B::b
sc0040::c
と,キーのリマップを定義しても,思い通りの動作にはなりません(scの後を3桁にしてもダメ)
また,
=::a
[::b
@::c
とやっても,思い通りの動作となりません

どうやら,autohotkey側で,VK=E7のキー入力をフック出来ていないような感じがします
このような(妙なキー入力)をフックする方法をご教授頂きたいのです

良い知恵や,サンプルコードなど,ありませんでしょうか?
2018/02/11(日) 16:54:31.12ID:3ZvNHM330
普通に
=::a
[::b
@::c
で機能してるけど
単に権限で弾かれてるだけじゃね?
2018/02/11(日) 17:35:40.80ID:DQMytbvG0
>>737
試してもらった環境で、autohotkeyのkey historyを確認してほしい。
該当する箇所のVK、SC、Typeの欄、>>736 と違うのではないかと…。
2018/02/11(日) 17:47:15.75ID:j35DJg2F0
[ → vkDB sc01B
@ → vkC0 sc01A

=なんてキーはないから知らん
2018/02/11(日) 17:52:01.25ID:3ZvNHM330
@ は C0 01A
[ は DB 01B
= はshift-なので、- は BD 00C
2018/02/11(日) 18:32:04.46ID:DQMytbvG0
>>739-740
本来は、それが正しいんだと思う。
>>736 のキー入力は、特殊な環境で発生するみたいで…。
何とかフックして、正しい状態に変換したいというのが、やりたいことなんです。
autohotkeyの他、keymillを使っても確認したが、やはり、仮想キーコードとスキャンコードは、>>736 と同じでした。
手詰まりなのかなぁ。
2018/02/11(日) 19:10:35.03ID:tFbq6f170
$ や #UseHook はどうなってんの?
2018/02/11(日) 20:36:51.05ID:wLAjQo6+0
>>742
現時点ではサンプルコードで動作確認している程度なので,必要かどうかは疑問
----- -----
#InstallKeybdHook

sc003D::a ; sc03Dも試した
sc005B::b ; sc05Bも試した
sc0040::c ; sc040も試した
----- -----

scriptとしては,上記しか記載していないです
#UseHookの記載があったとしても,効果ないですよね?
$は関係なさそうだし…
2018/02/11(日) 21:23:43.50ID:tFbq6f170
>>743
$ や #UseHookは
実際にキーが押された信号を拾う(ドライバレベルのキー変更は変更後を拾う)
ないときはソフトで発行されたキーも拾う
2018/02/11(日) 21:25:35.35ID:tFbq6f170
#InstallKeybdHookもおなじね
2018/02/11(日) 21:34:15.09ID:tFbq6f170
#InstallKeybdHookは関係ないわ忘れてくれw
2018/02/11(日) 21:49:22.37ID:wLAjQo6+0
>>744
----- -----
#InstallKeybdHook
#UseHook On

sc003D::a ; sc03Dも試した
sc005B::b ; sc05Bも試した
sc0040::c ; sc040も試した
----- -----
とやっても,ダメポ
思った通りの動きをしてくれない
----- -----
#InstallKeybdHook
#UseHook On

=::a ; sc03Dも試した
[::b ; sc05Bも試した
@::c ; sc040も試した
----- -----
もダメ
ヤレヤレ…
2018/02/11(日) 22:08:12.57ID:wLAjQo6+0
>>747
今判ったのだが,SCの4桁って,Unicodeだわ
U+003Dは"=",U+005Bは"[",U+0040は"@"
autohotkeyでUnicodeの入力をフックすることは,さすがに出来ないんだろうな
悩ましい…
2018/02/13(火) 06:44:07.16ID:sFxCGnec0
1.1.28.00
変更点多数
2018/02/14(水) 04:54:09.67ID:IcKhWWhH0
オブジェクトのクリーンアップ中に呼び出されたときに例外をキャッチして報告するように__Deleteを変更しました。
以前は、次の関数呼び出しまたはtry-block / threadの終わりまで例外を延期する(誤った)影響がありました。
アクティブなウィンドウが変化するのではなく、フォーカスが変化したときにホットストリング認識機能をリセットしました。
メニュー0&をウィンドウのシステムメニューとして扱うようにWinMenuSelectItemを変更しました。

#Includeに渡されたパス内のすべてのビルトイン変数のサポートが追加されました。
A_TimeIdleKeyboardとA_TimeIdleMouseを追加しました。
A_ListLinesを追加しました。
A_ComSpec(ComSpecのエイリアス)を追加しました。
A_LoopFilePath(別名A_LoopFileFullPathのエイリアス)を追加しました。
自動置換の代わりに同じ行のアクションを実行するhotstring Xオプションを追加しました。
Hotstring()を追加しました。
機能ホットストリングを追加。
StrSplitにMaxPartsパラメータを追加しました。
#MenuMaskKeyを改善して、VKとSC、またはvk00sc000を指定できるようにしました。
2018/02/14(水) 05:01:13.25ID:Rm7A3QSM0
A_LoopFilePathはほぼLongのほうしか使わないからそっちのエイリアスにしてくれればよかったのに
2018/02/14(水) 07:56:06.39ID:IcKhWWhH0St.V
vkxxscxxx修正疲れた〜
vkxxは動くとこと動かないとこがある
scxxxは安定ぽい
2018/02/14(水) 12:30:38.02ID:eq9KUA5f0St.V
アプデしたいけどあらゆる作業に影響ありまくるから踏ん切りつかぬ
2018/02/14(水) 16:26:24.52ID:eOeOVFcL0St.V
うちなんかv1.1.24.00でずっと止めてるわ
v1.1.24.01のHotkeyコマンド関連の仕様変更にいまだに修正対応できずに足踏みしてる
2018/02/14(水) 21:21:16.70ID:AOagrs8+MSt.V
>>754
同じく
修正マンドクセ
2018/02/14(水) 23:58:57.92ID:yRogQsfK0
>>750
結局、vk**sc***表記を復活させたということかな
その方がいいんだけど、1.1.27〜の時の苦労は何だったのかw
週末にでも更新しようかね
2018/02/15(木) 00:40:13.12ID:02BDAqxY0
なに迷走してんだか…
2018/02/15(木) 00:52:21.11ID:MGxE8Lu40
v1.1.24.01 → 1.1.28.00
レスポンスが悪くなった?

ALTキーの空押しでIMEの制御してたけど
ALT upがワンテンポ遅くなった
IME自体の表示は即オンオフの反映されるんだけど
文字を打ち込もうとするとALTが押された状態みたいでエラー音がティンティン鳴る
2秒位待たないと文字が打てなくなってしまった
何故かエディタのみで起こってブラウザでは問題無い
後、トグル系が急に効かなくなったり効いたり
トライアンドエラーで対策できず、結局バージョン戻したわ
2018/02/15(木) 02:01:48.57ID:MGxE8Lu40
原因はアクセラレーターキーだった
何故か反応するようになってしまってる

ブラウザの方はアクセラレーター切ってってて
使ってるエディタにメニューバーが無いので気づかなかったわ
空押しでアクセラレーターキーが効かないのを効くように修正したってことかな

もう一度バージョン上げてみたみたはいいけど、やっぱ駄目かも
2018/02/15(木) 06:21:05.12ID:A4rUj4nf0
/*
┌────┐
│存在判定│
└────┘
WinExist→WinActive…アクティブ判定

■関数
WinExist_1("WinTitle") ;前方一致検索
WinExist_2("WinTitle") ;部分一致検索
WinExist_3("WinTitle") ;完全一致検索
WinExist_R("WinTitle") ;正規表現検索

■使用例
if WinExist_n("WinTitle") ;ウィンドウがあれば
if !WinExist_n("WinTitle") ;ウィンドウがなければ
*/
WinExist_1(WinTitle) {
 SavedTitleMatchMode := A_TitleMatchMode
 SetTitleMatchMode,1
 ErrorLevel := WinExist(WinTitle)
 SetTitleMatchMode,%SavedTitleMatchMode%
return ErrorLevel
}

WinExist_2(WinTitle) {
 SavedTitleMatchMode := A_TitleMatchMode
 SetTitleMatchMode,2
 ErrorLevel := WinExist(WinTitle)
 SetTitleMatchMode,%SavedTitleMatchMode%
return ErrorLevel
}
2018/02/15(木) 06:21:20.14ID:A4rUj4nf0
WinExist_3(WinTitle) {
 SavedTitleMatchMode := A_TitleMatchMode
 SetTitleMatchMode,3
 ErrorLevel := WinExist(WinTitle)
 SetTitleMatchMode,%SavedTitleMatchMode%
return ErrorLevel
}

WinExist_R(WinTitle) {
 SavedTitleMatchMode := A_TitleMatchMode
 SetTitleMatchMode,RegEx
 ErrorLevel := WinExist(WinTitle)
 SetTitleMatchMode,%SavedTitleMatchMode%
return ErrorLevel
}
2018/02/15(木) 07:44:58.37ID:DStDVLAI0
_1 _2 _3 _R も引数にしたくなる人が多そう
2018/02/15(木) 19:03:18.66ID:XW96eMY10
>>760
関数などの別スレッドの各種設定は終了すると
規定値(AutoExecuteセクションの設定)に戻るので戻す必要はないよ

> SavedTitleMatchMode := A_TitleMatchMode
> SetTitleMatchMode,%SavedTitleMatchMode%

大量の関数ではなく引数を使おう

MsgBox % isWindow(, 2, "電卓")
return

isWindow(Active=0, MatchMode=1, WinTitle="A", WinText="", ExcludeTitle="", ExcludeText="") {
 SetTitleMatchMode %MatchMode%
 return (Active ? WinActive(WinTitle, WinText, ExcludeTitle, ExcludeText)
          : WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText))
}
2018/02/15(木) 20:12:31.47ID:6ml6AmJ20
関数は別スレッドではありません
2018/02/15(木) 20:27:59.62ID:XW96eMY10
>>764
え?まじだ
すいません間違えました
2018/02/15(木) 20:50:07.36ID:XW96eMY10
>>763
すいません訂正します
同じスレッドでした
> 関数などの別スレッドの各種設定は終了すると
> 規定値(AutoExecuteセクションの設定)に戻るので戻す必要はないよ


MsgBox % isWindow(, 2, "電卓") "`nA_TitleMatchMode: " A_TitleMatchMode
return

isWindow(Active=0, MatchMode=1, WinTitle="A", WinText="", ExcludeTitle="", ExcludeText="") {
 Save := A_TitleMatchMode
 SetTitleMatchMode %MatchMode%
 e := (Active ? WinActive(WinTitle, WinText, ExcludeTitle, ExcludeText)
         : WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText))
 SetTitleMatchMode %Save%
 return e
}
2018/02/15(木) 23:28:05.40ID:A4rUj4nf0
>>766さん
別解ありがとうございます。知識になります。
768名無しさん@お腹いっぱい。 (ワッチョイ d767-MriG)
垢版 |
2018/02/16(金) 11:24:34.32ID:U6oi7OTq0
ゲームに使おうとしています。
https://i.imgur.com/DmXSDJk.png
上の画像のように、ゲーム内で検索した装備品で、
検索にヒットし黄色の枠でハイライトされているものを鞄にCtrl+LClickで移動させるマクロを作りたいと思っていまして
黄色の枠のみをペイントで抽出し、bmpで保存(下のコードのtest.bmpです)し
ahkのImageserchに使えばいけるのでは?と考えたわけですが
error level1が返ってきます。
同じように加工したjpg、枠以外を透過させたpngでも試しましたが同じくerorrlevel1でした
なにがまずいのでしょうか。。。

https://i.imgur.com/DDTMyo5.png(抽出画像)

F8::some()

some(){
BlockInput On
ImageSearch, foundX, foundY, 0, 0, 1920, 1080, *TransFFFFFF C:\Users\User01\Desktop\test.bmp
If ErrorLevel = 2
MsgBox Could not conduct the search.
Else If ErrorLevel = 1
MsgBox Icon could not be found on the screen.
if ErrorLevel = 0
{
SendInput, {
MouseMove, %foundX%, %foundY%
Send {Ctrl down}
Click, %foundX%, %foundY%, Left, 1
Send {Ctrl up}}
BlockInput Off
}
}
2018/02/16(金) 12:00:10.03ID:SvcDK4bi0
ImageSearchを完全一致やめて誤差の余裕持たせてみ
2018/02/16(金) 12:01:54.87ID:kFXWbhgF0
>>768
画像を見た感じ、境界の部分が明示的透過というより背景と混ざっているように見える
多分アンチエリアスとかのせい
よって、*Nオプションである程度認識する色に幅を持たせるか
抽出画像の方を明確に色の濃い部分だけを残して真っ白にして透過指定する
とかを試してみてはどうだろう?
2018/02/16(金) 16:13:41.17ID:m7uJKjCZa
>>769 >>770
ありがとうございます
誤差検索*90をオプションに追記しましたところ、
ハイライトされたもののうち2つには反応しましたが
その二つを取り除いてみるとerror2でした

>>770
たしかにwindowsプリセットの画像ビューワで見たとき滲んだように見えますね
しかしペイントで抽出した際は滲んでいるようには見えず、この枠の太さ(ほかに表現方法がわかりません笑)が1ドットになるようにしたのですがこれが限界ではないということでしょうか(;´Д`)
2018/02/16(金) 18:22:57.21ID:ajEghuwq0
>>768
枠の形変わりそうだし画像で探すなら
最小限の3ドット以上の角(┏)でいいのでは?
PixelSearch*3回でもおk
2018/02/16(金) 20:23:31.67ID:uKa9qGpV0
所詮おまけ機能なんだから複雑な事しようとするとすぐ手詰まりになるよ
そういうのは何か他のツールに処理投げた方がマシ
2018/02/16(金) 20:59:29.19ID:ifkLCsJ10
俺はむしろ、こういう変態的な使い方を考えるのは凄いと思うよw
日本人っぽいニッチな工夫というか何というか
2018/02/16(金) 21:16:18.23ID:j4lSZ2IT0
>>768
これ対象画像側の枠サイズ一定じゃないね
2018/02/16(金) 23:56:55.26ID:U6oi7OTq0
>>775
まじすか
それはどうやってわかりました?
777名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 00:32:17.20ID:a1W66dge0
流れ読まずに質問スマソ
管理者権限のアプリも操作するためにAHK自身を管理者で実行すると、
今度はRUNで何か走らせる際にそれらも全部管理者権限になってしまう。
対策としては、
・タスクスケジューラを噛ませる
・Win+R 窓を開いてそこでコマンドを実行する
ほかにもっと簡単な方法はないでしょうか?
2018/02/17(土) 00:38:19.47ID:xrBc6gW30
ほんとだ
画像編集ソフトで半透明レイヤー重ね合わせてみたら縦横ズレることろあるね
https://i.imgur.com/CzwkKZ1.png

775良く気付いたなw
2018/02/17(土) 00:45:15.12ID:xrBc6gW30
>>777
俺はこうやってる

Run, Explorer "標準権限で起動したいアプリ.exe"
2018/02/17(土) 01:00:18.16ID:ykUscsnm0
タスクバーをアクティブにしてMbuttonを押すと何かする
のをやろうとしたんですがMbuttonが効かないんです
スクロールは割り当てできます
おま環ですかね?
2018/02/17(土) 20:13:15.35ID:9Ob7L7Vv0
>>779
run, explorer "notepad.exe"
とかやってみたけど、マイドキュメントフォルダーが開くだけだったよ
782名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 20:20:17.03ID:9Ob7L7Vv0
>>779
>>781
run, explorer "C:\Windows\System32\notepad.exe"
パス付けたら動いた
どうもありがとう!!
2018/02/17(土) 20:27:03.30ID:Wm0LX3zO0
>>781
ちゃんとパス指定しないとアカン
パス指定は絶対パスでも相対パスでも可能

ただし起動したいexeと同一フォルダにahkファイル置くならパス指定不要
784名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 20:41:59.94ID:9Ob7L7Vv0
>782
いろいろ試したけど、
ターゲットアプリに引数を渡すことは出来ないみたいだね
例)
explorer "C:\Program Files\internet explorer\iexplore.exe" http://ntt.setup

explorer.exe の仕様なんだろうか
2018/02/17(土) 21:15:34.04ID:GM2z7ZiA0
https://github.com/Lexikos/AutoHotkey-Release/blob/master/installer/source/Lib/ShellRun.ahk

これ使えばできた
786名無しさん@お腹いっぱい。 (ワッチョイ ff01-MriG)
垢版 |
2018/02/18(日) 00:24:02.28ID:OinWbaSp0
いろいろありがとう!
2018/02/18(日) 13:06:36.91ID:R6I2ijWP0
vk**だとvkF0::Returnしか効かないな
sc03Aでやっと出来た

OFFにするだけのコードに手こずってしまった
何を当ててもOFFから当てたキーと同時にONになってしまうのね〜
GetKeyState, state,でイケたけどSetCapsLockState, OFFでONにしないというのは感覚的にキモいな
元々OFFの状態だからか何かもぞもぞする

;USキーボードCapsLock制御
#InstallKeybdHook
SetTimer, Timer01, 1000
SetStoreCapslockMode, off
;------------------------------------
~LShift & sc03A:: ;左Shift+CapsLockでCapsLockのON OFF
Send, {CapsLock}
Timer01:
If(A_TimeIdlePhysical>5000) ;5秒間何も押されなかったら
SetCapsLockState, OFF ;自動でOFFにする
Return

sc03A:: ;CapsLockがONの時にOFFにするだけ(ONにしない)
GetKeyState, state, CapsLock, T
If state = D ;ONだったら
SetCapsLockState, OFF ;OFFにする
GetKeyState, state, CapsLock, P
If state = U ;物理的にCapsLockキーが押し下げされてなければ
SetCapsLockState, OFF ;OFFにする(ONにしない)
Return
2018/02/18(日) 22:24:30.08ID:3FpAdC2Y0
┌──────────┐
│マッチ判定(通常検索)│
└──────────┘
■関数
□大文字/小文字の区別なし
InStr_1(var, "検索文字列") ;前方一致検索
InStr_2(var, "検索文字列") ;部分一致検索
InStr_3(var, "検索文字列") ;完全一致検索

□大文字/小文字の区別あり
InStr_1(var, "検索文字列", "true") ;前方一致検索(大文字/小文字の区別)
InStr_2(var, "検索文字列", "true") ;部分一致検索(大文字/小文字の区別)
InStr_3(var, "検索文字列", "true") ;完全一致検索(大文字/小文字の区別)

■返値
真…マッチ位置
偽…0

■使用例
if InStr_n(var, "検索文字列") ;マッチすれば
if !InStr_n(var, "検索文字列") ;マッチしなければ

if InStr_n(var, "検索文字列") = n ;検索文字列がn文字目にマッチすれば
2018/02/18(日) 22:35:18.66ID:3FpAdC2Y0
InStr_1(Haystack, Needle, CaseSensitive="") {
 SavedTMM := A_TitleMatchMode
 SetTitleMatchMode, 1
 FoundPos := InStr(Haystack, Needle, %CaseSensitive%)
 SetTitleMatchMode, %SavedTMM%
return FoundPos
}

InStr_2(Haystack, Needle, CaseSensitive="") {
 SavedTMM := A_TitleMatchMode
 SetTitleMatchMode, 2
 FoundPos := InStr(Haystack, Needle, %CaseSensitive%)
 SetTitleMatchMode, %SavedTMM%
return FoundPos
}
2018/02/18(日) 22:38:00.78ID:3FpAdC2Y0
InStr_3(Haystack, Needle, CaseSensitive="") {
 SavedTMM := A_TitleMatchMode
 SetTitleMatchMode, 3
 FoundPos := InStr(Haystack, Needle, %CaseSensitive%)
 SetTitleMatchMode, %SavedTMM%
return FoundPos
}
2018/02/18(日) 22:43:08.17ID:ZvCWwtWf0
>>788
>>1http://pastebin.com/を使ったらどう?
2018/02/18(日) 22:57:11.81ID:3FpAdC2Y0
>>791さん
次から使わせていただきます。
2018/02/19(月) 03:06:32.79ID:Y9HUB6jX0
それ _1 _2 _3 全部同じやw
InStr に SetTitleMatchMode を設定しても何の効果も無いよ
2018/02/19(月) 04:14:54.89ID:BdhMP5UP0
>>793さん
ご指摘ありがとうございます。

InStr()関数はIfInString文同様部分一致検索のみで意味ないことしてました。m(_ _)m
2018/02/19(月) 04:35:55.96ID:BdhMP5UP0
前方一致検索…RegExMatch(var, "^検索文字列")
後方一致検索…RegExMatch(var, "検索文字列$")
完全一致検索…RegExMatch(var, "^検索文字列$")
部分一致検索…InStr(var, "検索文字列")
部分一致検索…IfInString, var, 検索文字列
2018/02/19(月) 05:00:29.90ID:PJPmNhpU0
>>795
うざい
2018/02/19(月) 05:11:58.24ID:BdhMP5UP0
スレ汚しすみません。しばらくロムります。
2018/02/19(月) 11:21:09.62ID:IXuHbD6q0
WinExist_n()でn部分を引数にせえよって指摘されたのなら次にも生かしたらいいと思うの
…って書こうとしたら_nで分けること自体に意味がないのかこれw
2018/02/19(月) 11:40:12.03ID:BxLXEv6G0
添削お願いします の一文も無く、いきなり貼られても困るよね
2018/02/20(火) 00:26:22.82ID:9Z14yE7+0
ただ質問しただけだと教えてもらえないけど自信満々に間違ったことを書くと煽りとして正解が返ってくるという
2ちゃんあるあるを利用したのかもしれない
2018/02/23(金) 07:33:03.76ID:9Fk1AXu40
うむ、専門板では必須の基本テクだよな
2018/02/23(金) 07:33:14.45ID:Y0VJAwMh0
今更ながらこれを実装した
ペーストできない欄にID、パスワード等を書き込むのに便利
こんなの10年前にやるべきだったな…

^+v:: send,%clipboard%
2018/02/23(金) 07:50:14.04ID:ZjJ8bLPd0
>>802
コピペでパスワード入力するってことは、パソコン内にパスワードのテキストを置いているんでしょ。
Send,LoginID{Tab}PassWord{Enter}
で良いんじゃないの?
2018/02/24(土) 00:25:26.38ID:b4HvGc+S0
すみません質問なんですが
エディタ等では使えるんですがExplorer上でファイル名の編集で使えないです
クリップボードの文字に括弧を付けて一旦格納することは可能でしょうか?
タイムスタンプは^vで貼り付け出来ているのでこれも出来ないかなと思いまして
どなたか知恵をお貸しくださいおねしゃす

;選択したテキストを括弧で囲む
Menu, 01, Add, 【 】で囲む, Command1 ;メニュー
;━━━━━━
Command1:
clipboard =
Send ^c
ClipWait
Send 【%clipboard%】
clipboard =
Return
;━━━━━━
~Alt & [:: ;Alt+ [ でメニューの表示
IME_SET(0)
Menu, 01, Show
return

こっちはどこでも使える
;━━━━━━
~F13 & Tab::
FormatTime, TimeString,,yyyy_MMdd_HHmm
Clipboard = %TimeString%
Send, ^v
clipboard =
return
2018/02/24(土) 15:06:36.08ID:b4HvGc+S0
これで駄目なら無理なのかな?

Command1:
clipboard =
Send ^c
ClipWait
clipboard = 【%clipboard%】
Send ^v
clipboard =
Return
2018/02/24(土) 15:17:50.05ID:HoejbmkP0
>>804
最後の Send と clipboard = の間に、
Sleep,100
を入れて実験してみて。
2018/02/24(土) 15:45:22.10ID:J1gZxMO+0
>>804
メニュー表示した段階でファイル名編集状態が外れてるんじゃないの?
2018/02/24(土) 22:17:24.31ID:HiBHIVZG0
だな
フォーカス外れた段階でファイル名のEditBoxがなくなるから別窓やメニュー表示は無理
LiNameみたいなリネームソフトでいったんエディタに飛ばして変換するのが無難かと
2018/02/24(土) 22:47:10.87ID:b4HvGc+S0
ありがとうございます。なるほど理解しました
結果的にExplorer上ではメニュー出さずに直で行うようにしました

F14::
clipboard =
Send ^c
ClipWait
Send 【%clipboard%】
clipboard =
Return

あとはキーをちょっと工夫してみます。
トグルして括弧の種類を変えていければいいんだけど...
2018/02/28(水) 04:34:44.24ID:WVOCCenh0
エラー処理入れておいたほうがいいぞ

clipboard= ; クリップボードの内容をクリア
send, ^c
clipwait,1000 ; クリップボードの内容がからの間は待つ
if ErrorLevel <> 0 ; タイムアウト時のエラー処理もちゃんとする
{

return
}
msgbox, clipboard changed: [%clipboard%]
return
2018/02/28(水) 10:49:33.46ID:fyn3Q3mHr
正規表現スレからコピペ
RegExMatch("こんにちは。", "(.)+", $)
MsgBox, %$1% ;「こ」じゃなくて「。」が入るんだね
RegExMatch(str, "^(.)+", $)
でも同じ結果だた
2バイト文字だからこうかなと思たら
RegExMatch(str, "^(..)+", $)
$1に「は。」が入る
もうわけわかんねー
2018/02/28(水) 14:03:38.13ID:smTsGnw20
なにがわからないのかわからない
(.) 1文字キャプチャ
+ 繰り返し
→$1が都度上書きされて最終的に「。」
2018/02/28(水) 17:19:59.24ID:Wd8kHTTzM
わけわからんのは大抵仕様を読んでないからだ
2018/02/28(水) 17:40:10.57ID:fyn3Q3mHr
>>812
トン
>$1が都度上書きされて最終的に「。」
勉強になりました
815名無しさん@お腹いっぱい。 (ヒッナー a787-R89I)
垢版 |
2018/03/03(土) 21:32:14.87ID:8R4aDJlk00303
質問です

入力履歴、若しくはhotstring recognizerのリセットってできますか?
ホットストリング使ってるんですが、動作して欲しく無い場合があり、その場合途中でリセットしたいんです。

(物理)カーソルキーとかを挟むとリセットできるんですが、
AHKから(例えば無変換+で発生させたカーソルキー)だとリセットされないんですよね……
816名無しさん@お腹いっぱい。 (ワッチョイ a787-R89I)
垢版 |
2018/03/04(日) 00:32:52.54ID:Hu/zstz50
できないっぽいですね。

とりあえず、
問題のキー入力から最速で!"#$みたいな、絶対に使われない文字列をsendで出力して
ソレをホットストリングの確定文字無しで認識させて、その時Zオプションを使う
でイイですかね?
2018/03/04(日) 05:03:51.36ID:cZsx79sA0
#ifか新機能のHotstringで止めればいいのでは?
https://autohotkey.com/docs/commands/Hotstring.htm
818名無しさん@お腹いっぱい。 (ワッチョイ a787-R89I)
垢版 |
2018/03/04(日) 20:14:50.24ID:Hu/zstz50
リンクありがとうございます
コマンドのHotstringやZTオプションとか、色々増えてるんですね。
いつも日本語のwikiの方を見てました。

#IFを使って、
IMEオンオフでホットストリングの挙動を分けていたんですが、
IMEオンの時も、
IMEオフキーを押す操作(変換中 文字をかなからローマ字小・大にする)があるので、反応してしまい困ってました。

しかし、よく考えたら、
その操作の後は(AHK側の変数では)IMEオフになっているので打鍵に反応してしまいますね。
結局そのキーを2つに分けるしかないみたいです。

お騒がせしました。
819名無しさん@お腹いっぱい。 (ワッチョイ 6767-wl/W)
垢版 |
2018/03/05(月) 10:10:24.59ID:TBE7QJqP0
F1::SwitchingGems() ;

SwitchingGems(){
BlockInput On
Send I
Click, RIGHT, , 1690, 372
Click, LEFT, , 1615, 250
Click, RIGHT, , 1690, 372
Send I
BlockInput Off
return
}

上記のように指定箇所を計三回クリックするマクロを作りたいのですが
Clickの三回目だけが動作していないようでクリックされません
左クリックと右クリックの間にsleepやdelayなどを挟んでみましたが解決しませんでした。
どうすればいいのでしょうか。。。
2018/03/05(月) 11:18:03.82ID:IOshgH160
三回目だけ残しても動かないなら
マクロ対策されてるかもしれないから
sleepをすごい多めにとってみるとか
2018/03/05(月) 11:21:07.70ID:IOshgH160
× 三回目だけ残しても動かないなら
○ 三回目だけ残して動くなら
2018/03/05(月) 18:03:55.74ID:EWicYF830
>>819
ミスかどうか判断できないので
sleepやdelayなどを挟んで解決しなかったものを書いてほしい
2018/03/06(火) 10:20:22.05ID:zUUbNPBB0
loop,10{
Click, RIGHT, , 1690, 372
}
闇雲に連打してみる
2018/03/08(木) 08:50:41.34ID:BnoQlrXA0
Mouse without Bordersのコンパネなのですが
WinMoveやWinMaximaize等が効きません。
Winsetも効きません。
これらを効くようにすることは出来ませんか?
2018/03/08(木) 08:51:05.88ID:BnoQlrXA0
ちなみにWinActivateは効きます。
2018/03/08(木) 19:24:12.88ID:BnoQlrXA0
>>824ですが、一般論としてウインドウをWinMoveやWinSetが効かなくすることとかウインドウ側で
出来るのですか
2018/03/08(木) 20:21:04.86ID:Yf0JqExZ0
Mouse without Bordersとやらは知らんけど一般論で言うなら管理者権限のせいで弾かれるとか
その場合はahkスクリプトも管理者権限で実行する必要ある
あくまでも一般論
2018/03/08(木) 21:04:46.18ID:KOKOXPVs0
こういうマクロを作りたいと思っています
@指定キーを押すと画像認識マクロが有効になる
A有効となっている間、画面上にお目当ての画像が出てきた場合にInput
B指定キーをもう一度押すとマクロ自体をsuspend

マクロが有効となっている間、常時画像認識マクロが目を光らせるようにするには
どんなコマンドを使えばいいのでしょうか?

今のところ自分でできてるのは
suspendをトグルさせること(@とB)と
1回キー押したときに1回だけ画像認識を正確に行わせることまでです。。
2018/03/08(木) 21:21:08.26ID:KkF548Je0
画像認識って何の事だ?imagesearchか?
2018/03/08(木) 21:29:31.69ID:KOKOXPVs0
あ、すいませんimagesearchのことです
2018/03/08(木) 21:44:52.70ID:bMjXMYrA0
SetTimerでImageSearch繰り返せば良いんじゃね
あとは指定キーでSetTimerをON/OFF

あと質問するなら自分が書いたスクリプト張った方がいい
2018/03/09(金) 07:31:16.30ID:tuBlM4VC0
>>827
もちろん管理者権限でやってみましたよ。でもダメでした
2018/03/09(金) 08:03:10.58ID:0+2toMkh0
>>824
参考になるかどうか分からないけど、俺のウィンドウの移動やサイズ変更のスクリプトだと、
移動は、ハンドラを使ったWinMove と コントロールを使ったControlMove
の2通りを使っていて、サイズ変更も同じような感じ。
たしか、MDIウィンドウに対応するためだった。
2018/03/09(金) 08:11:40.12ID:tuBlM4VC0
>>833
ハンドラを使うということはDllを使うとかってことですか?
本来のWinMoveはハンドラは扱えないと思ったけど
2018/03/09(金) 08:45:40.20ID:0+2toMkh0
>>834
マウス位置のウィンドウを移動するのに
MouseGetPos,,,mh,ct,3
WinMove,ahk_id ,%mh%,,x,y
こんな感じの書き方をしてた。
2018/03/09(金) 08:46:35.41ID:0+2toMkh0
コントロールだと、
ControlMove,,x,y,,,ahk_id %ct%
2018/03/09(金) 08:52:03.57ID:tuBlM4VC0
そういうことか。ありがとう
2018/03/09(金) 14:09:34.75ID:Etdy2Nz+0
>>832
だったら先に言えよな
偉そうに「もちろんやった」とか後出しで言われても知ったこっちゃねえし
839名無しさん@お腹いっぱい。 (ワッチョイ 3f71-WxCv)
垢版 |
2018/03/09(金) 17:45:02.34ID:2iq8dj2Z0
Wikiにあったボタンを押すたびに動作が変わるってのを試しているんですが、
動作自体はして、111と押すと123と出力されるのですが、2回目移行は、
1111と入れないと、123と出力がされません。
何か他に設定する必要があるのでしょうか?

1::
ComboF += 1
If ComboF = 1
{
send, 1
return
}
If ComboF = 2
{
send, 2
return
}
If ComboF = 3
{
send, 3
return
}
ComboF = 0
return
2018/03/09(金) 17:50:14.55ID:c8UvBeAJ0
>>839
1回押すごとにComboFが今いくつで、どこのifに入って、どこでreturnしているのかをちゃんと追っていけばわかる
2018/03/09(金) 17:53:58.10ID:OlYgn7zv0
>>839
ComboF = 0
が4回目になってるからだろう
3回で繰り返したいならSend, 3の後に入れれば良い
2018/03/09(金) 21:08:38.36ID:LKcOP/MX0
>>840
>>841

ありがとう。
うまく動きました!
2018/03/10(土) 16:31:28.14ID:G9FIqbQm0
あるソフトで右Altに機能を割り当てているのでマウスボタンで呼び出そうと

xbutton1::send,{Ralt}
return

と書いても動きませんでした
AutoHotkeyの履歴ではRaltが送られているのですがソフト側が認識しないみたいです
試しにメモ帳などでも試したらキーボードでAltを打つとメニュー欄にフォーカスが移動しますが
AutoHotkeyからAltを送っても何も反応しません

修飾キーを単独で押した事にするには何か別な書き方があるのですか?
2018/03/11(日) 01:18:05.15ID:RPCHFg2O0
最近気づいたけど
Send,!^{Del}
って機能しない?
2018/03/11(日) 01:30:47.46ID:C1GH2eZG0
>>844
Send自体は機能してるので入力検出ソフトなどではCtrl Alt Delを検出してる
ただしOSは受け取らないっぽい
2018/03/11(日) 01:37:30.01ID:RPCHFg2O0
>>845
ありがとうございます。
できないことが、はっきりわかると
もう試行錯誤しなくてすむので。
2018/03/14(水) 13:33:38.67ID:HnQGWYiV0Pi
お尋ねします
trayメッセージ?の表示存在の有無や内容テキストを得る方法はあるんでしょうか
使っているbluetooth機器が自動電源オフになり、その都度trayに出てくるバルーンを数回クリックして再接続するのが手間なので、これを自動化できたらいいなと思っております
2018/03/15(木) 09:31:06.48ID:xPyBwzTO0
トリガーを3キー同時押し
一応動いてるんですが書き方はこんな感じでいいんでしょうか?

;a+CapsLock+SpaceでShift+a
a::
#if GetKeyState("sc03A", "Space")
Send, +a
return
2018/03/15(木) 09:36:02.65ID:xPyBwzTO0
すみませんつづき

押しっぱなしになってaキー単独で使えないっす
2018/03/15(木) 17:21:57.74ID:QbWkJm2V0
a:: だとaのキーの置き換えだから、そら単独では使えなくなるわ
a & space::
if [CapsLockの押し下げ状態] なら[処理]

ではどうです。Capsの押し下げは取得が面倒だったような気もするけど
2018/03/15(木) 17:49:42.32ID:VH/6Gl1J0
普通のキーをモディファイアキーとして使うのは、いろいろと不便があるよ。
2018/03/15(木) 18:33:48.29ID:xPyBwzTO0
>>850
あっ そうか
そりゃそうっすよね

しかし、2キーをトリガーで3つ目をifってみたけど駄目ですな〜
う〜ん

ちょっと分岐してごにょごにょしてみます
2018/03/15(木) 19:04:06.20ID:xPyBwzTO0
出来ますた

~a & sc03A:: ;a+CapsLock
GetKeyState, state, Space, P ;Spaceの状態
If state = D ;押されてたら
Send, +a ;Shift+aを送る
else ;そうでない場合
GetKeyState, state, Space, P ;Spaceの状態
If state = U ;押されてなかったら
Send, a ;aを送る
return

ありがとうございました!
2018/03/15(木) 19:08:59.45ID:xPyBwzTO0
と、思ったら駄目だった
CapsLock+aが使えなくなった

分岐の必要が無かった
~a & sc03A::
GetKeyState, state, Space, P
If state = D
Send, +a
return

しかし、CapsLock+aに行くには一度キーを離さないと駄目だぬ
2018/03/15(木) 19:25:35.53ID:xPyBwzTO0
結果的に1キートリガーのSpaceの状態をifった

a::
GetKeyState, state, Space, P
If state = U
Send, a
else
GetKeyState, state, Space, P
If state = D
Send, +a
Return

これならCapsLockに指乗せたままで2つのコマンドを行き来できて
単独でaキーも押せる

まぁ実際CapsLock押して無くていいんだけど
操作の流れで感覚的にCapsLockをコマンドキーにしたかったので
まぁいいか
2018/03/16(金) 12:26:04.83ID:UouS7uLn0
Msgboxですが、はい、いいえ、キャンセルと3つのボタンをつけられますが、
このはい、いいえ、キャンセルという名前を変えることは出来ませんか。
これらを表示してからあとからの変更でも構いません
2018/03/16(金) 12:53:58.76ID:08l5uqXC0
ControlSetText
ただし普通にMsgBoxの次の行に書いてもダメだからなんらかの別スレッドで
2018/03/16(金) 13:12:55.46ID:jjTV3maS0
試してないけどメニューと同じで別スクリプトでやらないとダメなんじゃないかしら
無理にmsgbox使うよりGUIでカスタムダイアログ作るほうが良さげ
2018/03/16(金) 13:17:19.26ID:UouS7uLn0
こんなのさあ、デフォルトで出来るようにしておいて欲しいよねw
2018/03/16(金) 13:40:44.65ID:jjTV3maS0
いや
winAPIのMessageBox関数を呼び出してるだけだし
AHKに限らず どの言語でもMsgBoxつったらこういう仕様なんだけど
2018/03/16(金) 18:01:07.16ID:dZXZHaN10
共通ダイアログは共通のUIであることこそが価値なのであって、勝手に変えられたら意味がない
862名無しさん@お腹いっぱい。 (ワッチョイ ad87-lboF)
垢版 |
2018/03/17(土) 21:56:35.01ID:J13vqzPo0
windows 10です
コマンドプロンプトにcontrolsendでファイル名やコマンドを送ると
2文字目が大文字になって(元の文字列の大文字にした文字の次の文字が大文字になります)
しまいます。どうしたらなおせますか?
2018/03/18(日) 03:08:50.12ID:f91JJX+I0
単純なコードがまったく効かず小一時間トライアンドエラー
おかしいと思いはじめ調べたところオートリーロードのコードが効かなくなっていた Orz

原因を調べようとエディタを変えてみたが変わらずリロードできない
別のahkファイルをオートリーロードすると効く
で、問題のファイルに戻りトライアンドエラー
ファイル名変更も駄目
ファイル作り直しても駄目
簡単なコードだけ残して試しても駄目
バックアップしておいた物を丸ごと上書きしても駄目

何故このファイルのみオートリーロードのコードが効かなくなってしまったか原因がわからない
ファイル名以外のとこを別のファイルへ移植して動くので
コード自体に問題は無いはず
ファイル名自体も間違っていない
Auto execute Section内は特に何も変更していない
タスクトレイのアイコンは反応ある
キーは送信されている
PCの再起動はした
セキュリティソフトで除外もした

#IfWinActive, ahk_class TextEditorWindowW166 ;サクラエディタ
~^s::
ScriptName :=Remap
If WinActive, %ScriptName%
{
Reload
}
Return
#IfWinActive

お手上げです
2018/03/18(日) 03:43:59.43ID:f91JJX+I0
再インストールしたら直りました。
何だよもぅ
はじめにトライすればよかった
時間を無駄にしたわ Orz

何が原因だったんだろう…
2018/03/18(日) 22:35:08.80ID:J+BCt/Kw0
c言語を大学の講義で習った程度のアラサー業界未経験でプログラマになりたいけど
autohotkeyでpc作業の効率化・自動化、正規表現を用いたファイル操作等を行うスクリプトは趣味でやったことありますはアピールになるかな?
2018/03/18(日) 22:37:10.61ID:aKvw3zvt0
趣味で→業務の効率化を行いました
と言い換えておけ。
大抵の人にはAHKなにそれって言われるだろうけど業務に役に立つものとわかれば多少のプラスにはなるんじゃないか
2018/03/18(日) 23:02:23.62ID:HRiJzGoo0
AHKが業務に役立つって一体なんだ?
せいぜいクリックしたりのルーチンワークをやらせるくらいだろ
そんなもの特技にもアピールにもなら無いと思うよ
まだExcel使いこなせます、の方が100倍通る
2018/03/18(日) 23:10:49.20ID:NAu7k0j60
未経験者歓迎の会社ならやる気がある人だとポジティブに見てもらえるかも程度かなあ
スキルとしては役に立つとは見なされないだろうけど

しかし今はアラサーからでも始められるんだねえ
うちなんかの頃はプログラマー35才定年説とか冗談でいいながら
結局30才の時に辞めちゃったけど
2018/03/19(月) 06:05:47.26ID:2K9mbLou0
>>867
業務にめっちゃ役立つだろ。 どんだけ効率化できることか
ただ世間では知らない人の方が圧倒的に多いから
何それって言われるだけ
2018/03/19(月) 09:08:30.30ID:1gBKOOv90
マー枠でないオフィスワークならPC作業のかなりの割合がルーチンワークなので
あの人に頼むと仕事速いって評価は得られる
履歴書段階ではよくわからん余計な事が書いてあるみたいな顔されるけどね

プログラマーの仕事は職場環境の改善や効率化ではないのでアピールとしては微妙かな
SEなら顧客先への提案にAHKでの効率化もねじ込めるかも知れないが
2018/03/19(月) 19:18:33.71ID:IzZLQY4r0
おしえてください。
.ahkにドラッグアンドドロップされたファイルを違うアプリにわたす場合、
どうやって変数を書いたらいいのでしょうか?(ドラッグアンドドロップされるファイル)

.ahkにドラッグアンドドロップされたmp3ファイルをmp3directcut.exeに渡したい(D&D)です。
2018/03/19(月) 21:21:51.70ID:+9jTrdWi0
>>871
スクリプトのコマンドライン引数
http://ahkwiki.net/Scripts

でも配列が分かるなら、というか分かるようになってでもa_argsを使うほうがいい
https://www.autohotkey.com/docs/Variables.htm#Args
2018/03/19(月) 21:24:00.32ID:U+xoQwSe0
まあいまなら、RPAツールで効率化って言えばいいんじゃね。
2018/03/20(火) 06:47:06.72ID:WP8liIaB0
>>871

#NoTrayIcon
Run, mp3directcut.exe %1%
875名無しさん@お腹いっぱい。 (ワッチョイ cdaa-JEBE)
垢版 |
2018/03/20(火) 15:11:55.67ID:+orTD+Tx0
このソフトって画像認識は余り重要視されない感じですか?
OpenCVベースのライブラリを作成中なのですが。
2018/03/20(火) 15:15:31.27ID:/qe8h6Jm0
>>875
ImageSearch
2018/03/21(水) 01:38:35.04ID:w/ym+8zsM
autohotkeyってプログラミング言語なの?
2018/03/21(水) 02:26:02.22ID:t6ZVDJkP0
>>877
AHKはスクリプトであり簡易的なプログラム
本格的なプログラミング言語に比べ、用途を限定することで、覚えやすいように簡単な構造になっている
スクリプトの中でもAHKは特に簡単な方なんじゃないかな多分
2018/03/21(水) 05:59:25.78ID:vW2s5IUZM
プログラミングの足掛かりにはなるけど
用途も限られ、誰でも覚えられ、用意されたコマンドも少ない
でも高度な事しようと思ったらwin apiの知識が必要だったり
他からライブラリ持ってきたり
リファレンスが英語しかなかったり
汎用性はあまりないよ
2018/03/21(水) 09:01:31.10ID:ra+qV9Ux0
>>878
AHKの言語はかなり特殊で癖が強すぎて出来は良くないよ
perlの方が圧倒的に言語としての出来はいい
2018/03/21(水) 11:15:53.77ID:vX0jpMkC0
いきなり使えるという意味では楽なほうだと思うけど
スプリクト言語として簡単な方だとは正直言い難い
増改築繰り返してて色んな言語の方言ぶち込まれてるから纏まりないしね
2018/03/21(水) 13:11:58.41ID:ltXmxIsFM
まぁ おもちゃ だね
2018/03/21(水) 14:35:23.46ID:7OKFzbdy0
>>880
出来がいいとか悪いとかそんな話は誰もしてないから
2018/03/21(水) 17:56:15.87ID:RBaLq5Ja0
>>877
プログラミング言語は以下の総称、AHKはスクリプト言語に属している

スクリプト言語 - プログラミング言語のうち、プログラムの記述や実行を比較的簡易に行うことができる言語の総称
           JavaScript、Perl、Python、PHP、Rubyなど

コンパイラ言語 - 人間が書いたプログラムをコンピュータが理解できる形式に変換するプログラム言語
           C言語やC++、Javaなど、上記と比較してパフォーマンスに優れている
2018/03/21(水) 18:36:08.33ID:zFBQqTlw0
>>884
スクリプト言語とインタープリタの違いは?
2018/03/21(水) 18:57:46.63ID:IUvp1TqV0
そろそろスレチ
2018/03/21(水) 19:06:50.77ID:vX0jpMkC0
アセンブラが抜けてるぞ
コンパイルせんけどあれもれっきとしたプログラミング言語ですよ
2018/03/21(水) 19:12:21.63ID:MLMIaNkj0
>>886に同感
2018/03/21(水) 20:42:05.97ID:TU8fmjCY0
日本語のwikiは4年前から更新が止まってるけど
日本のユーザーほとんどいないのかしら
2018/03/22(木) 04:39:01.11ID:VvTwrxCl0
「Insert」「Scroll Lock」って何で設置されてるんです? キーボードの“いらないキー”の使い方
https://headlines.yahoo.co.jp/hl?a=20180317-00000007-it_nlab-sci

本来の用途を知ってもやっぱりahkで覆すのが一番だな
2018/03/22(木) 09:00:22.19ID:U0cAdNVx0
Insertは固定テーブル書換でよくお世話になったし今もたまに使う
BreakもVBAの暴走止めるのに使うしScrollLockだけは要らんけど
あの辺をahkで覆すことってないなあ
そもそもホームポジションから遠いから便利キーとして活用しづらいというのもあるが
2018/03/22(木) 12:01:10.33ID:Ufwil7jA0
この前INSを知らんうちに押しててその性質を失念しててパニックになったw
2018/03/22(木) 12:37:22.06ID:e+UZ/a+c0
昔使ってたワープロ専用機がパソコンで言えば挿入キーが効いた状態が標準だったので、パソコンに移行した初期はよく使ってたな。今でもたまに長い名称の修正の時に使うことがある。
無変換キー使わないから他に置き換えるって記事も出てくるけど、個人的にはしょっちゅう使ってるんだよなぁ。ショートカットの関係とかもあるし、キーの置き換え考えるのってけっこう難しい。
2018/03/22(木) 13:16:44.76ID:DUtGpx6E0
Insert::return
^Insert::Send, {Insert}
2018/03/23(金) 10:21:17.86ID:b+Z0za8i0
例えば、
Aキーを押した後、Xを押したらある処理Xをする
Aキーを押した後、Yを押したらある処理Yをする
Aキーを押した後、Zを押したらある処理Zをする
みたいなことをしたいのですが、簡単なスクリプトの書き方ってありますか?
2018/03/23(金) 10:24:25.97ID:XAz/zURm0
>>895
キーによって最適の処理があるとおもうから、具体的に何のキーか書いた方が良いよ
2018/03/23(金) 14:14:04.10ID:GjwCbWet0
a & x::
処理
Return
ではいかんの?aキー殺したくないなら~a & x::で。
2018/03/23(金) 14:48:02.81ID:b+Z0za8i0
>>897
そぅいう書法があるのですか。これは初めて知りました。ちょっと調べてきますね
2018/03/23(金) 16:07:40.41ID:b+Z0za8i0
>>897
やってみました。 なるほど。これでもよさそうです。 ありがとうございました
2018/03/24(土) 19:08:51.99ID:QBdmJd9U0
スマホのWindows10 MobileにAuto Hot Keyって導入できる
んでしょうか?
無変換+Jに左矢印を割り当てるくらいできればいいのですが。
2018/03/27(火) 13:28:24.89ID:hp/Jmp+F0
何いってんだコイツ
2018/03/27(火) 23:21:47.06ID:gIH3YYjz0
おまいらファイル長くなりすぎた時どうしてるの?
2018/03/27(火) 23:48:02.88ID:2xWHg+240
機能ごとにプラグイン化してる
2018/03/28(水) 11:34:17.40ID:ojeN139t0
文字列で、最初の10行を取り出す、とかはないのでしょうか
2018/03/28(水) 13:54:22.18ID:aUGjB4dVM
wikiみろ
2018/03/28(水) 14:43:43.95ID:ojeN139t0
見つからないので、
StringGetPosで`nを見つけてみたいなことをしています。 それしか方法ないのかな
2018/03/28(水) 15:13:27.91ID:VqAJ66ND0
Loop,Parseってのがあるじゃろ…
2018/03/28(水) 19:42:08.35ID:wFJSmFtY0
やるとしたらLoop, ParseかRegExReplace()あたりでやるかなあ
2018/03/28(水) 20:08:23.29ID:VpMR9Ykb0
>>904
100万回ぶん回したらRegExMatchのほうが1.8倍早かった

Text =
(
111
222
333
444
)

RegExMatch(Text, "`n)(?:.*\n*){2}", Var1)
MsgBox % Var1

Loop, Parse, Text, `n
Var2 .= A_LoopField "`n"
Until A_Index = 2
MsgBox % Var2
return
2018/03/29(木) 08:46:20.34ID:Kt+xqO1A0
私は、
StringGetPos, n, text, `n, L10
StringLeft, text,text, n
としました。
Loop, ParseかRegExReplaceってのは気づきませんでした
いくつか方法ありますね。 gnuとかやってたのでもうちょっと関数ほしいかな
2018/04/02(月) 09:12:36.71ID:6CLUXBlN0
RegExMatchで変数同士の比較の際に、変数内に特殊記号が入ってる場合のエスケープってどうすればいいんですか?
例えば↓だと記号が入っている行では0が帰ってきてしまうので、これを正しくマッチさせたいです

str =
(
abcdefg
abcd*e\fg
hijklmn
hijk*"l\mn
)

Loop,parse,str, `n
{
a := RegExMatch(str, A_LoopField)
MsgBox % a
}
2018/04/02(月) 09:32:38.76ID:Bc45Krob0
\Q
2018/04/02(月) 09:56:17.05ID:6CLUXBlN0
>>912
できましたありがとうございます
914名無しさん@お腹いっぱい。 (ワッチョイ 2b96-bCzG)
垢版 |
2018/04/02(月) 23:41:48.53ID:/5qUy46v0
Class k{
A:="U|D|L|R"
x:="X|3|m|x"
Ax:="(" . A . "|" . x . ")"
}
k := new k
Shift & Ctrl::msgbox,% k.Ax

このk.Axが(U|D|L|R|X|3|m|x)で欲しいのですが
(|)が還ってきます
Classの中では、変数の再定義などもエラーになるので振る舞いが違うようですが、
Class中で自身の変数を使うにはどうしたらいいのでしょうか
2018/04/03(火) 01:17:27.13ID:nsnifR/q0
this
2018/04/05(木) 06:40:22.99ID:cEzeFAIV0
UWSCからAutoHotKeyに鞍替えしようと思っているのですが
UWSCのchkimgXのような高機能な画像認識機能はこちらにはありますか?
2018/04/05(木) 11:22:45.68ID:HI1fVzZM0
指定した画像と一致するかどうかという機能(完全一致〜ゆるく一致までざっくり設定可)と、
ピクセルの色を調べる機能はあるぞ
2018/04/06(金) 03:36:34.69ID:/B0boEGH0
DLL呼び出しはどうやるのかな?
必要なら私が作成したchkimgXのようなのを公開しますが。
2018/04/06(金) 10:13:31.58ID:/B0boEGH0
DLL呼び出しして画面と画像でテンプレートマッチングしてクリックまではできました。
配列とかが難しいですね><
2018/04/06(金) 19:19:42.82ID:OFzZtZ5C0
chkimg(完全一致検索)
chkimgX(テンプレートマッチング)
それぞれ互換性を持った関数をDLLとして提供しています。
ahkでUWSCとほぼ同じ画像認識操作が可能です。

https://www.axfc.net/u/3901288
2018/04/07(土) 11:43:46.03ID:fZhBhj010
1.1.28.02 リリース
また細かいバグフィックスだろうけど
現時点でチェンジログは出ていない
2018/04/07(土) 15:15:24.78ID:R1ORWks/0
https://github.com/Lexikos/AutoHotkey_L/releases
チェンジログはGitHubのが早い
2018/04/07(土) 15:40:04.20ID:fZhBhj010
>>922
thx

Fixed Control ChooseString and ControlGet FindString ignoring the first two items.
Fixed Control ChooseString to send WM_COMMAND even if the control's ID is 0.
Fixed WinActivate to restore the active window, as originally intended for [v1.1.20.00].

最後のやつ、なんかおかしいと思ってたんだよ
やっぱバグだったのか
2018/04/09(月) 09:25:51.24ID:c9jGED410
質問なのですが、画面の特定の座標だけでスクリプトを動作せたいので次の様に書いたのですが
ifの条件が無視されて画面のどこでも動作してしまいます
どのように書けば良いのでしょうか?

Xbutton1 ::
CoordMode,Mouse,Screen
MouseGetPos,xpos,ypos
if (100<xpos<200 && 100<ypos<200 )
{
send,a
}
return
2018/04/09(月) 09:30:42.59ID:G8+Atlb/0
a<b<c
って書き方を認めていない言語も多かったような
2018/04/09(月) 09:41:06.34ID:c9jGED410
>>925
その通りでした
if (100<xpos && xpos<200 && 100<ypos && ypos<200 )
としたら動きました、ありがとうございます
2018/04/12(木) 14:21:27.54ID:LYFBDP2J0
使い道がありそうでなさそうだな

上海問屋、6つのボタンに任意キーを割り当てできるUSB有線リモコン - ITmedia PC USER
http://www.itmedia.co.jp/pcuser/articles/1804/11/news093.html
http://image.itmedia.co.jp/pcuser/articles/1804/11/yk30028_2018-0411-1201-7.jpg
2018/04/12(木) 14:46:13.63ID:kOEYD5Ut0
これならゲームのコントローラーで事足りそう
2018/04/12(木) 14:47:22.87ID:W4scmFmJ0
どんやのパチモンじゃ購入初日にボタンが壊れそう
2018/04/12(木) 16:11:05.18ID:T0dluYzz0
AHKなどソフトウェアマクロが弾かれるゲームでどうしてもハードウェアマクロ使いたい人向けかな
ま、要らんけど
2018/04/12(木) 19:25:32.52ID:vJcRmT+E0
(ほしい…)
2018/04/13(金) 09:45:10.86ID:NtTFGXLa0
POS用のプログラマブルキーボードが鉄板やろ
933名無しさん@お腹いっぱい。 (ワッチョイ ff2e-XjMo)
垢版 |
2018/04/13(金) 17:18:58.63ID:paZWK/3z0
https://ux.getuploader.com/autohotkeyl/download/130

Autohotkeyでゲームパッドを弄り倒す叩き台作ってみたよ
サンプルはトーチライト2 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/13(金) 19:00:24.87ID:1ryaKKuDa
なんかすごいの来たぞ
2018/04/13(金) 20:25:23.22ID:j0qzzlLl0
win7からwin10に移行して1か月経ったが、ホイールリダイレクトがwin標準になったのを最近知った
なので、win7時代から使っていたWheelAccel.ahkが不要になったよ
(むしろ、スタートメニューなど一部の窓でスクロール出来なくて困っていたし、加速機能使わなかったから不便無い)
2018/04/13(金) 21:19:40.20ID:0+nIaT1E0
バイナリデータn書き換えについて質問します
例えばbinary.datと言うファイルがあります
このファイルの中身は”FF FF FF FF”とします
これを先頭が”FF”だった場合に”00 FF FF FF”と書き換えたいのです。
どこかに良いサンプルコードありませんでしょうか?
2018/04/13(金) 21:42:32.33ID:7h17ETYp0
更新フラグでFileOpenしてRawWriteでできるでしょ
2018/04/13(金) 22:12:16.80ID:0+nIaT1E0
書き換え方法がわかりません
どうすれば良いですか?

FileGetSize, size, binary.dat
FileRead, data, binary.dat
file := FileOpen("binary.dat", "w")
file.RawWrite(data, size)
2018/04/17(火) 11:04:41.37ID:/LpxS4AS0
>>933
Jtkのまがいもの更新しました。
https://ux.getuploader.com/autohotkeyl/download/131
思いつくのは入れて満足したのでしばらくこのままだと思います。
なにか要望あれば考えます 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/17(火) 15:16:07.19ID:TidmHlF5a
>>939
バグ報告いいかな?
無線パットだと起動した直後にLRがキーログに出てくる
実際押されてる模様。初期化の速さに通信が追いついてないっぽい

あと要望はLTトリガーにフルプル対応してほしい。それさえクリアしたらSteamのキーアサインの呪縛から抜けられそう
2018/04/17(火) 16:51:38.37ID:a0NxOH1g0
window10 pro 64bit版で.NETアプリを自動操作させようとしているのですが、
コントロール名の取得方法が分からず、座標で操作しています。
しかし、画面サイズが異なると座標がずれてしまうため、コントロール名で操作したいです。
コントロール名を取得する良い方法はありませんか。
Au3Info_x64を使ったりもしているのですが、テキストボックスやボタンの名前の取得もできません。
よろしくお願いします。
2018/04/17(火) 17:00:04.82ID:s4qV74PJa
mousrgetposで取れない?Dll叩いてもだめ?そうでないなら画像認識で無理やりかな
2018/04/18(水) 13:30:00.16ID:v+G5gwRf0
>>939
jtkモドキ微更新。何度もすみません
バグ取ってフルプル分岐作りました。
フルプルとソフトプルの分岐設定も書いているので参考に
https://ux.getuploader.com/autohotkeyl/download/132 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/18(水) 15:45:10.39ID:v+G5gwRf0
>>943
十字キー関数にミスが有りました。再アップしたので>>1のAutohotkey専用うpろだ からどうぞ。目玉でまくってるし
2018/04/18(水) 16:38:37.35ID:BxRxemHs0
>>942
ありがとうございます
mousegetpos試してみました
そこで取得したテキストボックスらしきClassNNにsendしてみたけど入力されないので、
ClassNNがあってるかどうかも分からない状態です
dllはまだよく分かっておらず、試せていません
もう少し試行してみます
2018/04/20(金) 01:59:31.80ID:CBU7UbTU0
gui上のあるボタンを押したらcaps入り切り、というのが上手くいきません
capslockのキーコードをsendすれば?と思いましたが必ずロック入にだけなってしまいオフにできません
2018/04/20(金) 08:47:40.18ID:dNl99PS50
>>946
SetCapsLockState
2018/04/20(金) 10:47:37.95ID:CBU7UbTU0
>>947
946です、出来ました感謝m(_ _)m
2018/04/21(土) 18:06:22.61ID:C1+iWiz90
Jtkモドキにマウスカーソルの形状を判断して1か0を返す関数を追加しました
画面上のボタンにマウスカーソルが乗っているかどうかを1か0で返す関数も作りました
今回は主に画像で分岐する処理を追加したものになります

https://ux.getuploader.com/autohotkeyl/download/137 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/21(土) 18:42:03.16ID:OB+FBU580
しつこく継続するつもりなら自分の日記でやってくれ
2018/04/21(土) 18:50:31.53ID:KPF3rMpt0
GitHubに上げてくれると助かる
2018/04/21(土) 20:02:17.73ID:9NdPyy9Da
今回のはガチ有能だから許してやるよ
これjtk超えたわ
2018/04/21(土) 20:21:57.16ID:C1+iWiz90
そろそろウザイいわれる頃だと思いました
今の所目立つ不具合もないので開発はこれで終わりです。お騒がせしました
2018/04/21(土) 20:25:29.17ID:rnogQ4Zw0
思ってても自重できないとかガイジかよ
2018/04/21(土) 20:25:41.02ID:NokkieTn0
お疲れ様でした
2018/04/21(土) 20:26:26.63ID:A/2ANSA+0
そんな〜
進捗知らせるリンクとかないの?
2018/04/21(土) 22:20:34.98ID:PYmE/PA4a
GitHubはいい選択肢だと思う
割とすごく便利に使ってるからこれで開発終了も勿体無い
これからなんか機能付け足すとかあるかも知れんからお願いします
2018/04/21(土) 22:33:06.01ID:fKXilc1u0
うん、ブログかなんか作って、改良したらリンクだけでも貼っておいてくれると助かる。
文字通りのウェブログみたいなのでかまわないから。
2018/04/21(土) 22:34:11.35ID:fKXilc1u0
あぁ、ギットハブでもいいね。
2018/04/22(日) 05:25:59.04ID:RQZNijO/0
ギフハフにかんしされてる
2018/04/22(日) 09:58:25.53ID:KrMwycZF0
お疲れ
たまにうpろだを覗いたらアップされてるくらいでも嬉しいから
よかったら続けてくれ
2018/04/22(日) 19:27:30.11ID:PW3IH2j00
以下のようなサンプルスクリプトを書き、Excel上で
動いたのですが、他のウィンドウに切り替えても
動いたままです。アクティブ時以外は停止させる
ことはできないのでしょうか。

#IfWinActive ahk_class XLMAIN
^!down::
Interval :=2
Loop, 20
{
Send {enter}
Sleep, 1000*Interval
}
#IfWinActive
2018/04/22(日) 19:30:44.48ID:RQZNijO/0
whileループ使えばよろし
2018/04/22(日) 22:10:37.71ID:+NuTjY0aM
#IfWinActiveはトリガー発動時の条件でしかない
アクティブ外れたからって実行中のスレッドを強制的に止めるような怖い機能はついてない

止めたいなら自分でloopの中でアクティブ切り替わったかどうか見てアボート処理入れないと
つうかhotkeyの中でsleep使うとキー連打したときにめんどくさくなるから
settimer使った方が安全だと思うけど
2018/04/22(日) 22:12:00.47ID:Na2a3cix0
俺なら、SetTimer使って
if(WinActive("ahk_class XLMAIN")){
で実行させるかなぁ
2018/04/22(日) 22:44:07.12ID:10Ec/CBsa
loop内からif式でブレイクなんてのもある。まぁ好きなの使えばいいよ
2018/04/23(月) 08:25:10.44ID:O5Q2FlPe0
みなさま、回答ありがとうございます
参考にさせてもらいます
2018/04/23(月) 17:57:46.27ID:AE7Q4/Eb0
要望があったのでJTKモドキの専用のブログ作りました。今後更新はこちらですることにします。
http://gamepadtokeybordframework.blogspot.jp/2018/04/gamepadtokeybord.html
2018/04/23(月) 18:01:29.23ID:pzh5FeO50
ありがとうございます
2018/04/23(月) 18:07:00.37ID:e3Qosisv0
>>968
2018/04/23(月) 18:25:32.83ID:kj66dibia
おお、続けてくれるか!ありがとう!
XboxコントローラーでLRトリガー同時押しできるってだけでも相当助かってるので頑張って
2018/04/23(月) 18:43:56.76ID:bXPE8uhS0
トリガー同時押しなんてJTKでもずっと前から出来てるのに何言ってんだこいつ
やたら過度に称賛してる連中自演臭い
2018/04/23(月) 20:57:13.94ID:Gj6VP1R00
まぁ、ここよりもブログに応援コメントしてあげた方が良いだろうね。
2018/04/23(月) 21:18:00.96ID:zWCv4IqX0
分かってない質問者来たときに上から偉そうなのがワラワラ涌く以外勢いつかないスレなんだから
この程度の自作自慢ぐらいいちいち締め出すこともないだろうに
噛みつきたいだけのキチガイの言うことなんかほっとけよ
2018/04/23(月) 21:34:02.76ID:x5JIhAAO0
と、噛みつきたいだけのキチガイが吠えてます
2018/04/24(火) 00:51:31.04ID:K1jVCB+q0
A_OSVersionってWin8までしかサポートしてない?
Windows10であることを取得したい場合なんか方法ある?
2018/04/24(火) 00:57:28.67ID:HNWPsUWl0
MsgBox, %A_OSVersion%

で10.0.16299と表示されたけど
2018/04/24(火) 01:01:20.02ID:K1jVCB+q0
最新版インストーラから入れたら直った、ZIPだと本体が入ってないのな
スレ汚しすまん
2018/04/24(火) 21:47:10.94ID:w2d0xl7M0
zip版はAutoHotkeyA32.exe(ANSI 32bit)、AutoHotkeyU32.exe(UNICODE 32bit)、
AutoHotkeyU64.exe(UNICODE 64bit)が入ってるので自分の環境に合うやつを
AutoHotkey.exeにリネームなりコピーなりして使う
2018/04/25(水) 02:45:11.77ID:C2JdtamLM
ポータブルマンセー厨だがahkは毎回インストーラ使って入れてるな
.ahkの関連付けされてないと不便だし
2018/04/25(水) 05:12:42.53ID:TT/mbE+J0
すみません初心者の質問です
AキーをCapsLockとSpaceキーの押下状態での分岐ですが
Aキーを単押しの状態は最初のSend, aだけでいいのでしょうか
一応どちらでも動作するのですがもっとスマートに記述する場合どの様にするのがベストですか?

A::
GetKeyState, state, sc03A, P
If state = U
Send, a
Else
GetKeyState, state, sc03A, P
If state = D
Send, ^!+{A}
Else
GetKeyState, state, Space, P
If state = U
Send, a
Else
GetKeyState, state, Space, P
If state = D
Send, +{A}
Return
2018/04/25(水) 05:35:11.89ID:pC9fkv9h0
>>981
普通にコンビネーションキーじゃダメなのか?
2018/04/25(水) 06:20:19.60ID:TT/mbE+J0
>>982
嫌です
2018/04/25(水) 06:27:05.95ID:RVBw9LmG0
>>981
そもそもIfとElseの使い方も滅茶苦茶
もう少し基本のサンプルコード良く見て基本中の基本を自力で理解した方が良い
そのスクリプト実行すると「a」を一回押しただけで「aa」が入力されるしな
2018/04/25(水) 08:08:05.11ID:TT/mbE+J0
>>984
指摘されて気付いたけどaが2回押されてた
ソフト側でaキーでトグルされる設定がワンセットあったので気づかなかった
詳しくは割愛するが実際に動作に支障がない状態にあった
2つ目はとりあえず消すことで対処出来たけど

とりあえず、書き方がめちゃくちゃと言われたので
ひとまず単純に分岐を1つにして書き方を変えてみた

Ifで条件に一致したときに実行させて一致しない時にElseで分岐でいいのかな?
この場合だとわざわざIf state = U で押上状態を取得しなくていいの?

あと、ifは1行ならカッコで閉じなくていい?閉じるべき?
単一コマンドはElseの直後に絶対書くべき?

↓一応これで意図した動作はします
A::
GetKeyState, state, sc03A, P
If state = D
Send, ^!+{A}
Else Send, a
Return
2018/04/25(水) 08:17:14.96ID:FDOLZigg0
まぁ、好みの問題だと思う。
俺は、
if(GetKeyState("sc03A","P")){
} else {
}
で書く方が好き。
2018/04/25(水) 08:22:27.28ID:cS31dOM80
動作仕様の説明なしでコードだけ貼られても意図した動作
(capsやスペース押下でどうしたいのか) そのものが他人にはわからんのだが
2018/04/25(水) 08:27:29.40ID:RVBw9LmG0
>>987
ほんとだよな
他人から見たらSpaceとaを押して「 A」(Aの前にSpaceが入る)になるのも本当に意図した通りなのか疑問だし
2018/04/25(水) 08:29:03.76ID:FDOLZigg0
>>985
結局、Spaceキーはどうでも良かったわけね
2018/04/25(水) 08:45:52.16ID:TT/mbE+J0
>>986
ありがとうございます
参考にします

985はひとまずって言ってるでしょ

>>987
>>988
CapsLock押下+aキーは Send, ^!+{A}
Space押下+aキーは Send, +{A}
aキーは aキー


で最初の質問での分岐はこうなった
これでaキーの単独押しをわざわざ条件から指定せず単純に分岐するだけでよくなった

A::
GetKeyState, state, sc03A, P
If state = D
{
Send, ^!+{A}
Return
}
GetKeyState, state, Space, P
If state = D
Send, +{A}
Else Send, a
Return
2018/04/25(水) 08:57:54.27ID:Uuym80WnD
続きはblogでやるからみんなみてね
2018/04/25(水) 09:05:46.23ID:2q8Y67NRa
過疎になるわけだ
2018/04/25(水) 09:29:19.28ID:ehxQscQV0
>>985

> Ifで条件に一致したときに実行させて一致しない時にElseで分岐でいいのかな?
OK

> この場合だとわざわざIf state = U で押上状態を取得しなくていいの?
押上を待ちたかったり、押上た時になにかしたいのでなければいらない

> あと、ifは1行ならカッコで閉じなくていい?閉じるべき?
> 単一コマンドはElseの直後に絶対書くべき?
究極的には趣味の問題だけど、初心者のうちはifやelseの後は必ず{}にしといたほうが無難

それとスマートさを求めるなら、If分岐を整理するのもそうだけど
>>988が言ってるCapsLockやSpaceが入力されてるのをどうにかするのが先だと思う
どんなソフトで試してるのか知らないけど、余計なキー入力は誤動作の元だから
KeyWaitを使って横取りするか、コンビネーションキーを使うのが早い
コンビネーションキーが嫌なら、あえてその理由を解消する方向でスクリプトを考えてみるのが楽な場合もある

ただ、今の時点で期待通りに動いてるなら
下手にいじらないのもひとつの手
初心者の自覚があるならなおさら
2018/04/25(水) 10:03:07.10ID:RVBw9LmG0
>>990
Spaceとaを押したときにAの前にスペースが送られてるのも意図的にやってるのであれば

a::
GetKeyState, state, Space, P
If state = D
Send, +{A}
Else Send, a
Return

↑この6行と

~Space & a::Send, +a

の一行で動作は同じだろう
なぜコンビネーションキーではダメなのか知らんが
スマートに記述するならこっちの方がスマート
2018/04/25(水) 10:31:32.03ID:TT/mbE+J0
>>993
ありがとうございます
元々Photoshop等同系ソフトの共通コマンドを同じキーにするための
単なるリマップでしたが、複数のコードをひとまとめにしたかったのがきっかけですです
内容的には押しにくいキーを押しやすくしてるのものです
単純に押しやすいものでも操作の流れ上押しにくかったりするので。
ちなみに、左の小指をCapsLockに固定、親指をSpaceに固定が理想です

~Space & W::Send, +{W}
~Space & S::Send, +{S}
~Space & A::Send, +{A}
~Space & D::Send, +{D}

~sc03A & W::Send, +{W}
~sc03A & S::Send, +{S}
~sc03A & A::Send, +{A}
~sc03A & D::Send, +{D}

Spaceキーは以前単純にリマップしてたときより理想的な動作になってるのですが...
Spaceキー押しっぱなしで次に押したいSpace+◯が動作出来るようになったので

CapsLockはUSキーボードですが、Shift+CapsLockでON、OFF + 単推しでのOFFにしています
ただし、Photoshop等ではCapsLock単体はsc03A::Returnで無効化しています
一応、CapsLockが送信されてることは確認していますが
意図せずオンオフになったりLEDがチラつくこともないです...

ただ、これが意図した動作だとしても書き方がおかしいようなら
もう少し考えます
2018/04/25(水) 10:43:10.93ID:TT/mbE+J0
ついでにCapsLockの動作のコードはこんな感じです
タイマーでもOFFになるようにしておりました

たぶんすごく不自然なことやってるんだと思いますがこれで意図した状態のことが出来てます

SetStoreCapslockMode, off
SetTimer, Timer05, 1000
;------------------------
~LShift & sc03A::
Send, {CapsLock}
Timer05:
If(A_TimeIdlePhysical>5000)
SetCapsLockState, OFF
Return

sc03A::
GetKeyState, state, CapsLock, T
If state = D
SetCapsLockState, OFF
GetKeyState, state, CapsLock, P
If state = U
SetCapsLockState, OFF
Return
2018/04/25(水) 10:47:25.65ID:RVBw9LmG0
>>983は何だったんだ
2018/04/25(水) 10:49:12.47ID:TT/mbE+J0
>>995はちょっと訂正
~sc03A & W::Send, ^!+{W}
~sc03A & S::Send, ^!+{S}
~sc03A & A::Send, ^!+{A}
~sc03A & D::Send, ^!+{D}
2018/04/25(水) 10:56:10.09ID:YVL3wDrE0
それで良いなら嫌ですとか言うなよ
2018/04/25(水) 10:59:43.24ID:TT/mbE+J0
CapsLockが送信されてるのは言われるまで送信されてるのがおかしいとは思っていなかったですが
とりあえず、状態を取得してもその後Ifでon,off出来なかったのでこんな事になってます
CapsLockがトリガーなら大丈夫なのですが、~LShift & sc03Aをトリガーにすると何故か動作しないので
CapsLockを送って処理してる次第です。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 222日 23時間 7分 3秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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