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

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ f977-fKjf)
垢版 |
2017/09/14(木) 11:52:40.84ID:uijNj4qb0

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

■前スレ
AutoHotkey スレッド part24
http://egg.2ch.net/test/read.cgi/software/1487149472/

■日本語解説等
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: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
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

これ使えばできた
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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