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)
2017/09/16(土) 21:41:53.91ID:aHU7hLXq0
>>41
検証ありがとうございます
現在、F13キーにして検証中
ボスキーの反応がキーによってまちまちです
もう、わけわからんのでショトカの割り当て含めて組み直しですね

MusicBee
MusicBeeのショトカをグローバル設定に変えてControlSend,,を使わず直接Send, +{f8}で送ってみた結果、レスポンスとしては全く問題なし。
それ以外の機能のショトカをControlSend,,で送ったところMusicBeeはレスポンスが非常に悪いようです
一度反応した後は間をあけないと2回目以降ラグが出てしまう?遅延しやすい感じ
分けて使ってる時はたまたま運が良かったみたい?。ボスが来なくてよかった...

Firefox
F13で反応無し、#F13で確実にレスポンスよく反応する

MPC-BE
どのキーでも確実にレスポンスよく反応する

発動キーを2キー以上使えば行けそうな気がしてきましたが
そうなるとコードをひとまとめにして簡単にしてやろうという当初の目論見から少しズレてしまうだよね
ってかFirefoxどうしたんだって感じです。もともと1キーでテキパキ反応してたんだけど

もうちょい頑張ってみます
2017/09/17(日) 04:52:29.36ID:oCfXbTFr0
◯::
DetectHiddenWindows,On
ControlSend,,^w,ahk_class MozillaWindowClass
Return

F13:: まったく動作せず
#F13:: アクティブの時動作せず
^F13:: アクティブでも非アクティブでも動作する
F13長押し まったく動作せず
^F13長押し アクティブの時動作せず
#F13長押し アクティブの時動作せず

うん。心が折れた
^F13でいこう。そしてボスキーは他のコードと分けようかな...
ってか面倒くさいから普通にボスキーアプリ拾ってこいって話だよな
2017/09/17(日) 06:15:54.77ID:p/7ZTW530
F13をどこに割り当ててんだ?
2017/09/17(日) 06:50:16.95ID:oCfXbTFr0
>>44
割当じゃなくキーコード自体がF13キー
元々はAppsKey
46名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)
垢版 |
2017/09/17(日) 09:43:50.02ID:ZslvSlHV0
AHKのスクリプトから簡単に使える文字コード変換ライブラリって、何があります?
AHKネイティブでも、あるいはDLLになっているものでも構いません。
環境はXP 32bit版、Windows 7 64bit版、Windows 10 32bit版(いずれも日本語版)の
3つで動くことが前提、Ahk2ExeでUnicode 32bitのEXEファイルにして持ち歩くことも想定中。

もしまだなければ自分で書くしかないのかなと思っていますけど、
既にあるようなら教えていただきたく。

具体的にやりたい操作としては、文字列が与えられたときに、
・全角英数字をすべて半角にする
・ASCII文字のうちファイル名に使えないものを、すべて対応する全角文字に置き換える
・カタカナの全角⇔半角を一括して切り替える
・ひらがなをすべて全角カタカナに変換する
という操作ができればOKです。

秀丸エディタを持っているので、その変換モジュールを使うという手もあるのですが、
そのまま使うには色々とネックがあります。
・秀丸の32bit DLL呼び出しはWINAPIV規約なので、WINAPI規約を前提にしたAHKの
 DLL呼び出し機能で呼ぶには、ラッパーDLLをひとつ書く必要がある
・秀丸の変換モジュールの内部コードはCP932で、Unicode文字は独自の内部表現にして
 渡す必要があるので、Unicode文字の入った文字列の場合には注意を要する

…やっぱり、tr() 関数を自分で書くのが手っ取り早いでしょうか?
ざっと見た限りではJavaScriptにも tr() はないようですし、いちど一念発起して作っておけば
使い回しがきくかも、とは思っているのですが、もし既に存在してBSDライセンスなり
LGPLなりで自由に使えるなら、わざわざ自作するのも馬鹿らしいので…。
2017/09/17(日) 17:16:58.81ID:XAx2qwWa0
そのどれもそんなたいした手間かかるものじゃないんで
みんな自分で書いてるんじゃないの
2017/09/17(日) 19:34:08.24ID:4ImUmMF/0
過去ログのどっかにありそうだな
2017/09/17(日) 19:35:09.61ID:TU6C1wnl0
https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings.strconv(v=vs.110).aspx

俺は知識のない人間だからよくわからんけどこれは使えないのだろうか
2017/09/17(日) 19:45:12.80ID:4ImUmMF/0
あった

http://anago.2ch.net/test/read.cgi/software/1398655195/974
http://pastebin.com/diJWv0pw
2017/09/18(月) 15:18:21.15ID:30s93rv60
>>46です。皆さんありがとうございます。

>>47
まあ、そういわれればそうですね。書いても大した手間じゃないと思ってはいます。

>>49
.NETでDLLをひとつビルドする必要がありますね。
Visual Studioが今は無料になったとはいえ、もしかしたらWindows 2000とか
98とかのVMにAHKを入れて使う可能性があるので、.NETは避けたいです。
#単に.NETに対してアレルギーがあるだけなんだけど。

>>48 >>50
けっこう面倒臭そうですね。

*   *   *

というわけで、大した手間じゃないので自分で書くことにします。
tr() って、いろんな言語で汎用的に使いそうな関数ですから、
著作権フリーの自前のものを手元に持っておいたほうが、
あとあと融通がききそうですし。
2017/09/18(月) 19:35:44.46ID:MAIQQZAv0
マウスのホイールで加速
ってAHK単体で実現できますか?

Webブラウザで超縦長ページを高速スクロールさせたいとき、ホイールを高速で回すと10数ページぐらい移動とか・・・
2017/09/18(月) 20:35:20.93ID:wwQcrx5N0
拾ってきたAccelerated Scrollingてのを少しいじってメインに組み込んでる
2017/09/18(月) 21:34:32.47ID:plzfm86Y0
>>52
ホイールスクロール - eamat @Cabinet - アットウィキ
https://www6.atwiki.jp/eamat/pages/30.html
WheelScroll.ahkはどうだろう
一応日本人作だから日本語の説明だから分かりやすいかと
10数ページ一気に移動とか可能か分からないけど・・・
2017/09/18(月) 21:59:14.37ID:MAIQQZAv0
素早いレスをありがとうございます
AHKの万能さに感動しました
2017/09/19(火) 03:22:47.92ID:IXDgiRwq0
自分は加速ではなく
サイドボタン1&ホイール上下でHome/End
サイドボタン2&ホイール上下でPageUP/PageDown
を割り当ててる
とりあえず一番上か一番下に飛びたいことが多いのでHome/End割り当てるのが効率良いです
2017/09/19(火) 06:19:29.73ID:g9F/3nwt0
デスクトップのなにもないところ(ウインドウも、アイコンも無い壁紙部分)をダブルクリックすると、特定のアプリを起動する
って事はAHKで出来ますか?
2017/09/19(火) 06:47:36.39ID:zmB9SGAt0
出来ると思います
2017/09/19(火) 17:19:30.66ID:I2JJpXcS0
LOOP中にキーボードAを押したらLOOPから抜けるようにするにはどうすればいいですか?
2017/09/19(火) 18:33:04.11ID:kLxokK7d0
>>59
Loop間隔が短いならGetKeyStateでif分岐してBreak

Loop間隔が長いならAキーに変数指定を割り当てといて
Loop中にその変数の値でif分岐してBreakとか
2017/09/19(火) 20:25:23.62ID:FwZUdIIc0
あとはUntilかWhile
2017/09/20(水) 00:48:55.91ID:VcXou4qe0
>>60
>>61
ありがとうございます
2017/09/20(水) 02:50:57.69ID:RyttgFZS0
横からだけど>>57って出来るのか気になる
デスクトップのアイコンの有無ってどうやって判別したら良いんだろう?
2017/09/20(水) 03:03:21.51ID:YkfHD61c0
例えば、コピー送ってクリップボードに入るかどうか、とか
2017/09/20(水) 04:26:52.19ID:cHabdo460
AHKにSendMessageでポインタを渡す機能があればLVM_HITTESTを送る
-1が返るとアイコンなし
2017/09/20(水) 05:36:41.50ID:1u+zkbMh0
色々調べたけど殆ど分からない
user32.dllを読み込んで何かのイベントを貰えれば良いのだけど、それについての情報が殆ど無いですよね
やり方もわからないし…

で、https://sites.google.com/site/agkh6mze/howto/winevent
このページ見てて、デスクトップのなにもない所をダブルクリックという作動をよくよく考えてみると、
すべてのフォーカスが外れた状態でダブルクリックイベント
という事なんじゃないかと

その先さっぱり
パラメータの説明はMSにあるけど、無能過ぎてちんぷんかんぷん
Spy++で調べるとデスクトップはFolder viewというFormだということはわかったけど…
2017/09/20(水) 05:42:34.55ID:1u+zkbMh0
>>65
ありがとうございます
まだ良くわかってないけど調べてみるとLVM_HITTESTというキーワードをちょこっと調べるとどうにかできそうな匂いがします
もうちょっと調べてみるです
2017/09/20(水) 06:24:09.05ID:UwzymyTj0
他にやりようがあるんだからできる範囲で工夫すりゃいいのに
69名無しさん@お腹いっぱい。 (ワッチョイ 814c-O10d)
垢版 |
2017/09/20(水) 07:55:16.00ID:VDqFQXZJ0
>>66
検索したらすぐに見つかったけど
https://autohotkey.com/board/topic/82196-solved-double-click-on-the-desktop/

1ページ目に手抜きのコード
2ページ目に実用上ほぼ問題なさそうなきれいなコード(中程のやつ)
これだと問題となるケースがあって、それを除外する努力が3ページ目までつづくけど、
結局は潰しきれないので、好きなやつをどうぞ
2017/09/20(水) 08:03:50.81ID:1u+zkbMh0
>>69
おぉありがとうございます
今は無理なので後で使ってみます
ありがとうございました
2017/09/21(木) 14:16:57.34ID:h2uQQOf90
>>34>>38
解析有難うございます
修正版にてようやくエラーが再現しましたが、応答なしになるのは変わらずでした
Win2000+IME2000ではIMEの状態が常にOFFになりました
残念ですが2つ起動することにします
2017/09/21(木) 16:45:49.92ID:HOY/MTbD0
>>71
64bit版で32bitアプリにSendMessageでメッセージは送れないと思うその逆も
タイマー1つにしてまずエラーダイアログ判定して、でなければIMEへ
2017/09/21(木) 16:59:11.88ID:HOY/MTbD0
それと>>25
;ここに特定のClasNNではOFFにせずReturnする例外処理
If (IME_GET()) {
IME_SET(0)
と書けないかな
2017/09/21(木) 19:45:29.75ID:d8X2A9cD0
GetKeyStateで無変換キー(vk1Dsc07B)が取得できないんだけど、何か方法ないかな?
2017/09/21(木) 20:00:00.03ID:aaW3C7Am0
できるけど
2017/09/21(木) 20:40:29.55ID:d8X2A9cD0
>>75
まじ?GetKeyState("vk1Dsc07B", "P")で?
俺の指定方法がおかしいのかな
他のキーは取得できるのにな
2017/09/21(木) 21:43:38.91ID:so7+jRcr0
どちらかにすれば?
vk1D
sc07B
2017/09/21(木) 22:28:51.86ID:aaW3C7Am0
>>76
それでも"vk1D"でも"sc07B"でも"P"があってもなくても0|1ちゃんと返る
2017/09/21(木) 22:36:11.29ID:d8X2A9cD0
おっかしいなぁ・・・
ならないから多分おま環かも
面倒だし別のキーに割り当てますわ
2017/09/22(金) 06:58:59.56ID:OAhgYF7S0
>>79
キーヒストリー(アイコンダブルクリックでCtrl+K)に何が入っているか気になるね。
レジストリで変更してるとか。
2017/09/24(日) 01:23:40.12ID:ovq+ASMp0
キーを押している間
クリックして
マウスムーブ
クリックして
マウスムーブ を繰り返したいんですが
マウスムーブの値が一定じゃない場合
数珠繋ぎにif文を増やして行けばいいのでしょうか?
キーを離したら停止は出来るんですが
If文の数珠繋ぎにするやり方を教えてください
2017/09/24(日) 01:34:28.38ID:0aSErUDh0
>>81
質問するならもう少し具体例を挙げるとかとかした方がいいんじゃないかな
2017/09/24(日) 03:46:08.78ID:EkpWsIry0
>>81
if (式1) {
 ・・・
} else if (式2) {
 ・・・
} else if (式3) {
 ・・・
}
2017/09/24(日) 05:24:39.24ID:rm7yR9v00
>>83
多分コレジャナイ感
2017/09/24(日) 09:42:45.44ID:199+CCx20
じゃあ
>>81
if (式1) {
 ・・・
}
if (式2) {
 ・・・
}
if (式3) {
 ・・・
}
86名無しさん@お腹いっぱい。 (ワッチョイ a777-LePR)
垢版 |
2017/09/24(日) 13:45:20.15ID:vmDjT91J0
>>81
概略こんなコードになるはず。

何か適当な名前の関数()
{
  マウスムーブ1回目を実行
  当該キーの状態を取得
  if (押されていない)
    return

  マウスムーブ2回目を実行
  当該キーの状態を取得
  if (押されていない)
    return
   :
}

で、回数が多いようならこんな感じで1回分の作業単位の関数を書いたほうがいい。
MouseMoveAndKeyCheck(dx, dy, strKeyName)
{
  MouseMove, dx, dy,. , R
  return ( GetKeyState(strKeyName)=="D" )
}

この場合、この関数を
if ( !MouseMoveAndKeyCheck(10,10,"LShift") )
  return
if ( !MouseMoveAndKeyCheck(10,-20,"LShift") )
  return
とかかいて呼び出してやればいい。

#テストしてないので誤字とかあったらごめんね
2017/09/25(月) 17:03:34.64ID:FNSh64gG0
if (3 < %A% < 5) とかの3項比較すらできないとか何このクソ言語
一つづつ比較しろってのかよ
一々%がついたりつかなかったりもウザいし
2017/09/25(月) 19:15:51.75ID:b7qo8gsc0
if A between 3 and 5
2017/09/25(月) 19:32:18.57ID:dkkQJqva0
サルが迷い込んでてわろた
2017/09/25(月) 22:47:53.97ID:gWdFgzgp0
サルのふりをすると素早く結果が得られるのか
よいなウキキ
2017/09/25(月) 22:57:58.76ID:E5zwZhHI0
サルまねは簡単に見抜かれるがな
ウッキー
2017/09/27(水) 23:26:25.74ID:8l6buZma0
お尋ねします。
FileReadからのStringReplace何ですが、よく理解していないので以下のように変数から変数へリプレイスしています。
もっとスマートな方法はありますか?。

unko0 =
(
unko chan
geriguso chan
bichiguso chan
)
StringReplace, unko1, unko0, unko chan, unko kun
StringReplace, unko2, unko1, geriguso chan, geriguso kun
StringReplace, unko3, unko2, bichiguso chan, bichiguso kun
msgbox, リプレイス前`n%unko0%`n`nリプレイス後`n%unko3%
2017/09/27(水) 23:54:13.76ID:5X3wI39C0
A32.exeってUTF-8のスクリプト読み込ませても普通に動くしL版の追加機能も使えるのか
今まで本家版そのままと勘違いしてた
2017/09/28(木) 01:00:06.89ID:ZCT1JF0Y0
Outputunko is allowed to be the same unko as an Inputunko.
2017/09/28(木) 02:29:17.50ID:GQSksrr90
>>94
なるほど、変数を複数作らなくてもいいんですね。
確かにスマートですね。
勉強になりました、有難うございます。
2017/09/28(木) 11:06:02.36ID:sWQkFnkH0
キーリピートできない多ボタンマウスに
キーリピートできるようにはできないんでしょうか?

左クリック押しながら、マウスの別ボタンを押すと
ロジクールの多ボタンマウスだとちゃんと書いたコードが機能しますが、今のやつは無理です。

たぶん、キーリピートが関係している?気がするんですが。
2017/09/28(木) 11:43:16.41ID:tPmB9WEX0
>>96
どんな挙動しているか自分で確認しよう
キーリピートやキーUp/Downの時間など

#InstallMouseHook
KeyHistory
2017/09/28(木) 13:37:56.81ID:sWQkFnkH0
>>97
Auto Hot Keyにだけマウスのボタンの入力が行ってませんでした。
左クリックだけしか反応がありません……。
2017/09/28(木) 16:18:29.95ID:mqOcEldg0
>>98
質問するなら自分がどういうコード書いてるのが具体的に書けよ
エスパースレじゃねえんだから
2017/09/28(木) 17:18:30.28ID:sWQkFnkH0
たぶんマウスの問題なんだと思います。
いろいろ実験したんですけど、そのマウスだけAuto Hot Keyが認識しませんでした。
KeyHistoryを教えてくれた方、ありがとうございました。
これを知らなかったら、認識しないのに無駄にコードを書いて悩んでたと思います。感謝です。
2017/09/28(木) 17:26:18.24ID:a7Erhn8f0
>>100
普通多ボタンマウスならボタンのカスタマイズやキーアサイン機能あるだろ
俺の場合ならRazerNagaにF13〜F24など割り当ててAHK側でキーリピートさせたりも出来る
どこのマウス使ってんだよ
2017/09/28(木) 17:38:54.39ID:tPmB9WEX0
ひょっとしてマウスソフト設定がキーボードのキーになってるのでは?
さっきは書いてなかったが#InstallKeybdHook書けばそちらもログにでる
サイドボタンのマウス設定が「Z」ならAHKは「Z」と認識する

#InstallKeybdHook ; キーボードログON
#InstallMouseHook ; マウスログON
KeyHistory
2017/09/28(木) 17:45:34.30ID:a7Erhn8f0
だから具体的なこと一切書かないから悪いんだよ
>>96の「別のボタン」とは何ボタンなのか、多ボタンマウスの特殊ボタンならばそこに何を割り当ててたのか
「今のやつ」とはどのマウスのことなのか
2017/09/28(木) 17:54:32.61ID:sWQkFnkH0
>>101
「エレコム ワイヤレスマウス 無線 2.4GHz レーザー 8ボタン チルトホイール Lサイズ ブラック M-XGL20DLBK」です。
KeyHistoryでは、左右クリックとホイールの上下左右しか認識がありませんでした。サイドボタンは認識していません。

サイドボタン(5番)にPgDnを、右クリックにPgUpをマウスアシスタントドライバで割り当てて、
以下のようにコードを書きました。

~LButton & PgDn::Send,{RButton} ;@左クリックを押しながらサイドボタン(5番)(PgDn)
~LButton & PgUp::Send,#d ;A左クリックを押しながら右クリック(PgUp)

このコードはロジクールのG700Sなら動くんですが、エレコムマウスでは動かないです……。
2017/09/28(木) 18:51:25.73ID:Mhj4kady0
単にエレコムのマウスアシスタントの使い方を間違ってる可能性
2017/09/28(木) 19:27:11.97ID:sWQkFnkH0
Auto Hot Keyとこのマウスの相性が悪いのかもしれません。
もしくはエレコムのマウスアシスタントとの相性か。
エレコムの有線ゲーミングマウス(ドライバはゲーミング用)だと@もAも動いたんですけどね。
2017/09/28(木) 19:45:30.11ID:Mhj4kady0
そもそもPageUp/Downは効いてるのかい?
2017/09/28(木) 20:03:04.75ID:sWQkFnkH0
>>107
効いてますね。
2017/09/28(木) 20:45:00.19ID:Mhj4kady0
それなのに>>102のキーボードログONにしてもAHKはPagUp/Dnを検出しない?
2017/09/29(金) 03:11:51.19ID:r2OLOVvo0
>>104
横だけどエレコムのマウスアシスタントを切ってAHKだけででリピートできないかな
2017/09/29(金) 08:53:16.46ID:r/lUdNoa0
>>102
>>109
アシスタントで割り当てたキーが検出されませんね。

>>110
マウスアシスタントを切ってKeyHistoryを試してみたら、
サイドボタンの「XButton1」と「XButton2」は検出されましたが、それらにAHKでKeyを割り当てても、
KeyHistoryで「XButton1」「XButton2」と認識されるだけで、割り当てできませんでした。

もはや何が原因か分かりません。
2017/09/29(金) 09:44:16.78ID:r2OLOVvo0
>>111
目的の操作と動作を書いてみて
2017/09/29(金) 12:12:15.51ID:fLOXyM62aNIKU
ブラウザ(IE)の倍率を取得する方法ないですか?
2017/09/29(金) 21:28:26.66ID:mExGP7Np0NIKU
File.RawRead()でバイナリとして読み込みたいときに
BOM付テキストだとBOMの3バイト勝手に削られちゃうのどうしたらいいの
2017/09/29(金) 22:28:58.15ID:ZjfVNOK80NIKU
何がしたいのか知らんけど、BOM付きで保存したいならFileOpen()でエンコーディングを指定すればいい

File := FileOpen("a.txt", "r")
Enc := File.Encoding
Len := File.Length
VarSetCapacity(Buf, Len, 0)
Len := File.RawRead(Buf, Len)
File.Close()

File := FileOpen("b.txt", "w", Enc)
File.RawWrite(Buf, Len)
File.Close()
2017/09/29(金) 23:03:04.15ID:mExGP7Np0NIKU
>>115
保存はしない ただ丸ごと取り込みたい
5行目の時点でLenが3行目のLenより3少なくなってるのが困る
2017/09/30(土) 00:16:35.49ID:B2QZrWW30
File.RawReadのまえにFile.Seek(0)する
2017/09/30(土) 00:34:10.13ID:Cebj4y3r0
へー、File.Seek(0)でいけるのか
2017/09/30(土) 00:42:17.41ID:nKssOyMy0
>>117
バッチリです ありがとう
2017/09/30(土) 00:58:39.63ID:B2QZrWW30
公式のドキュメントにBOMがある時はポインタを進めるってちゃんと書いてあるよ
https://autohotkey.com/docs/commands/FileOpen.htm
2017/09/30(土) 08:43:40.77ID:Cebj4y3r0
やっぱ、ちゃんと公式のドキュメント読まんといかんね
2017/09/30(土) 11:15:24.15ID:1lMD47790
あるウィンドウにあるメニューバー、文字メニューでリスト内テキストと付随したチェックマーク有無を取得する方法はありますか?
例えばあるソフトで「☑」夜間モード、みたくなっていて
そのチェックありなしでキーボード操作が大幅に変わってしまうようなものに対応したホットキー(意図しない暴発を避けるため、片方のモード時にはスルーする、など)を設定したく調べでいるのです。
2017/09/30(土) 11:40:52.35ID:8Huw1vzT0
>>122
メニューバーの左から3番目のプルダウンの8番目のサブメニュー内の4番目の状態を取得する例。
メニューアイテムはゼロから数える。セパレータも数える。

hWnd:=WinExist("a")
hMenu:=DllCall("GetMenu","uint",hWnd)
hSmenu1:=DllCall("GetSubMenu","uint",hMenu,"uint",2)
hSmenu2:=DllCall("GetSubMenu","uint",hSmenu1,"uint",7)
St:=DllCall("GetMenuState","uint",hSmenu2,"uint",3,"uint",0x0400)
MsgBox,%St%

チェックされているかどうかでstの値が違う。
IEやchromeだと、このやり方ではメニューのハンドルが取得できない。(MDIだからかな)
できれば、>>113 も解決すると思う。
IEのメニューのハンドル取得方法を知っている人求む。
2017/09/30(土) 13:15:40.77ID:1lMD47790
>>123
ありがとうございます!使用したいソフトに数値あてはめてテストしたら問題なく動きました。
最近ahkを触り出したので、ご紹介いただいたDllCallなど、まだ触ったことのないコマンドでした。さっそくwikiを見つつ理解しようとしてますが頭がパニックになってます!アリモノの関数から値を引き出している?うーむ
またじっくり勉強していこうと思います、ありがとうございましたm(_ _)m
2017/09/30(土) 14:39:05.78ID:0PNJ6R9f0
>>112
サイドボタンに割り当てた任意キー(PgDnなど)がAHKに入力されないのは原因不明で
まだ解決してないんですが、いろいろいじってたら
Xbutton1と2がAHKに認識してくれるようになりました。

Xbutton2::
Send,{PgDn}
Sleep,200
While (GetKeyState("Xbutton2", "P"))
{
Send,{PgDn}
Sleep,30
}
Return

こんな感じで、リピート機能がないサイドバタンにリピートさせてます。
こんなコードでいいのか分かりませんが。
2017/09/30(土) 15:50:31.87ID:O67+Avl20
>>125
はじめとリピート中は
Send {PgDn down}
で、return前に
Send {PgDn up}
2017/10/01(日) 08:25:25.42ID:5/Rqy1jY0
>>126
添削ありがとうございます。
たしかにそれのほうがスマートですね。
128名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 08:37:12.64ID:gRVszgej0
Ctrlのショートカットでカーソル移動をしてるのですが、
長押しすると文字のすり抜けが発生します。
どうすればこのすり抜け現象が解決するのでしょうか?

<^h::switchKeyByWindow("{Home}", "^h")
<^;::switchKeyByWindow("{End}", "^;")
<^l::switchKeyByWindow("{Right}", "^l")
<^j::switchKeyByWindow("{Left}", "^j")
<^i::switchKeyByWindow("{Up}", "^i")
<^k::switchKeyByWindow("{Down}", "^k")
2017/10/01(日) 09:12:52.31ID:Zz0Wp6Pe0
そんな関数知らねーよ
2017/10/01(日) 09:16:25.09ID:CNkKl/UV0
>>128
ググったら、1ページだけヒットした。
その作者に知らせてあげるのが一番良いよ。
131名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 09:25:13.81ID:gRVszgej0
申し訳ありませn( ^ω^ )
;----------------------------------------------------------------
; Window によって送信するキーを振り分ける
;
; defaultKey デフォルトで送信するキー
; ctrlKey Ctrlを送信するウィンドウのとき送信するキー
;----------------------------------------------------------------
switchKeyByWindow(defaultKey, ctrlKey)
{
if (isCtrlKeyWindow())
{
Send,%ctrlKey%
}
else
{
Send,%defaultKey%
}
Return
}
132名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 09:38:47.57ID:gRVszgej0
さらに、、、
;----------------------------------------------------------------
; Ctrl キーを送信する Window かどうかを判断する
;----------------------------------------------------------------
isCtrlKeyWindow()
{
; GVim
IfWinActive,ahk_class Vim
{
return 1
}
; Poderosa
IfWinActive,ahk_class WindowsForms10.Window.8.app.0.20f9772
{
return 1
}
; Mingw
IfWinActive,ahk_class ConsoleWindowClass
{
return 1
}
Return 0
}
2017/10/01(日) 09:44:20.65ID:ibUzHhgP0
自力で直せないならその関数使うのやめて#ifで書き直したほうがいいと思う
2017/10/01(日) 10:15:37.57ID:J6v0aHef0
SendMode, Playにすると動かないマシンがあるんだけどどういうことなんだろう
Win8やWin10のマシンではちゃんと機能するのにWin7のマシンではPlayにすると全く動作しなくなる
135名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 10:16:23.02ID:gRVszgej0
単純にSendだけでもキーを切り替えた瞬間にすり抜けが発生してしまいます
136名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 10:29:42.68ID:gRVszgej0
以下のスクリプトで、Ctrl+通常キーとのショートカットを長押して
カーソル移動しているのですが、上下左右を切り替えた瞬間に
通常キーがすり抜けます。何か手立てはありますか?

<^h::Send,{Home}
<^;::Send,{End}
<^l::Send,{Right}
<^j::Send,{Left}
<^i::Send,{Up}
<^k::Send,{Down}
2017/10/01(日) 13:36:43.12ID:CNkKl/UV0
>>136
SendMode,Input
#InstallKeybdHook
#UseHook
この設定だとどうなる?
2017/10/01(日) 15:24:44.69ID:gRVszgej0
>>137
レスありがとうございます
試しましたが、結果は変わりませんでした( ˘ω˘ )
Ctrlキー押しっぱなしで通常キーを切り替えた瞬間、
一文字だけすり抜けてしまいますね
2017/10/01(日) 18:45:43.89ID:rJfDiFvr0
MouseGestureLで画面端に接触って機能がありますが
autohotkeyではどのように再現すれば良いのでしょうか?
2017/10/01(日) 19:10:22.42ID:k6gLp1+F0
>>139
MouseGetPos
141名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 20:28:29.75ID:gRVszgej0
Ctrlキーを使ったカーソル移動で、
Ctrlキーと通常キーの両方を押しっぱなしにしただけでも
時々すり抜けが起きますね、、、困ったな(''_'')
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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