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/14(木) 12:18:05.36ID:uijNj4qb0
■AutoHotkeyの系譜
             ┌ AHK64(統合)
             │
AutoIt         .│ ┌ AHK_U(統合)
 │          │ │
AutoHotkey(1.0) ─ Autohotkey_L ┬ Autohotkey(1.1) ←いまここ
   │         │       │
   └ IronAHK×  │       └ Autohotkey v2(α版)
             │           │
             └ AutoHotkey.dll  .├ AutoHotkey_H v2
                │  │     │
                │  └ AutoHotkey_H
                │
                └ AutoHotkey_N×

■メインストリーム
AutoHotkey 1.0(開発終了)
http://www.autohotkey.com/
Autohotkey 1.1 (Autohotkey_L)
http://ahkscript.org/

■開発中
Autohotkey v2(下位互換性を排除して操作利便性の向上)
http://ahkscript.org/v2/
2017/09/14(木) 12:18:34.38ID:uijNj4qb0
■派生版
IronAhk(.NET製、クロスプラットフォーム。開発終了)
http://www.ironahk.net/

AutoHotkey.dll(真のマルチスレッド対応)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
AutoHotkey_N(開発終了)
AutoHotkey_H
http://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html

■統合
AHK_U(Unicode版)
http://www.autohotkey.com/board/topic/46563-unicode-version-of-autohotkey/
AHK64(64bit版)
http://www.autohotkey.com/board/topic/53878-autohotkey64-64-bit-autohotkey-l-updated-62410/

■スクリプト作成支援ツール
AutoHotKey専用エディター ※必須ではありあせん。
 SciTE4AutoHotkey
 http://fincs.ahk4.net/scite4ahk/

GUI作成ツール
 SmartGUI Creator
 http://www.autohotkey.com/board/topic/738-smartgui-creator/
 GUI Creator
 http://ahkscript.org/boards/viewtopic.php?f=6&;t=303
 AutoGUI
 https://www.autohotkey.com/boards/viewtopic.php?t=10157

※テンプレここまで
2017/09/14(木) 12:21:12.97ID:uijNj4qb0
テンプレの一部(このスレの>>9-10)は前スレではまとめて1つのレスだったのですが、
スレを埋め立てているのではと判定されてしまったため、
今回は分割して貼り込んであります。
2017/09/14(木) 18:25:44.27ID:CmOCopOE0
>>1
2017/09/14(木) 18:39:12.30ID:KTBfP0580
Toukou:=いちおつ
sleep 4
Toukou=
return
2017/09/14(木) 18:40:50.62ID:KTBfP0580
しまった " がない
17名無しさん@お腹いっぱい。 (ワッチョイ 5b09-8btW)
垢版 |
2017/09/15(金) 04:38:32.95ID:lepJIuBi0
1.特定のアプリだけ>>7のIME.ahkで常にIMEをOFFにする
2.頻繁に落ちるアプリをエラーダイアログ検知後、再起動する

この機能をそれぞれタイマーにして1つのスクリプトにすると
2のエラーダイアログ表示で固まることがあります

ログをみるとIME.ahkの途中で止まってるので
・1か2のタイマーを SetTimer, Main, 500, -1 としてスレッドの割り込み優先度を指定
・一方に Critical を付けてスレッド割り込みを禁止する
・一方に Thread, NoTimers を付けてタイマーイベントの割り込みを禁止する
など試してみましたが失敗します

ちなみに2つのスクリプトに分けると上手く動くのですが
これを1つで実現できる方法がありましたら教えてください
2017/09/15(金) 05:07:21.26ID:t6JvSMbV0
>>17
タイマー1つで出来ないかな
2017/09/15(金) 07:55:45.94ID:1jvV58yu0
具体的な環境とコードがわからないと何とも
2017/09/15(金) 14:20:00.31ID:qvzlKVt/0
あるウインドウがアクティブになったときに何かをする
そのウインドウが非アクティブになったときに何かをする

ということをしたいのですが、出来ますか?
2017/09/15(金) 14:24:35.08ID:qvzlKVt/0
OnMessage等を使ってもいいです。ただ、タイマーで監視とかは
アクティブになる機会はたまにしかないので、資源の浪費な気がして、気が引けます
2017/09/15(金) 14:34:36.19ID:JDrYmG0X0
https://sites.google.com/site/agkh6mze/howto/winevent
2017/09/15(金) 15:44:59.25ID:qvzlKVt/0
>>22
なるほど。なんか出来そうですねえ。ありがとうございました
2017/09/15(金) 23:15:45.05ID:lepJIuBi0
>>18-19
当初はタイマー1つで書いてましたがやはり止まるので
タイマー2つで片方の割り込みを制限すればと思い分けました

環境はWin8.1x64 AHKv1.1.24.02(U64)/v1.0.48.05(A32)で
以下コードの主要部分です
この2つのタイマーを2ファイルへ分けると正常に動きます
2017/09/15(金) 23:16:51.76ID:lepJIuBi0
#Persistent
Classes = 特定アプリのクラス名, ...
;ここにエラーになるアプリのタイトル数パターン分
GroupAdd, err, タイトル
:
SetTimer, Main, 500 ;IME.ahkのタイマー(IME.ahkはahkの.\lib以下へ
SetTimer, Mon, 500 ;エラー検知用のタイマー
Return

Main:
WinGetClass, ActiveWinClass, A
If ActiveWinClass in %Classes%
{
If (IME_GET()) {
;ここに特定のClasNNではOFFにせずReturnする例外処理
IME_SET(0)
}
}
Return
2017/09/15(金) 23:17:15.94ID:lepJIuBi0
Mon:
IfWinExist ahk_group err
{
WinActivate
ControlClick, OK, A ;アプリケーションエラー画面でOKを押す
Process, WaitClose, プロセス名, 30
If ErrorLevel = 0
{
Run, パス,,, PID
Process, Wait, %PID%, 30
If ErrorLevel <> 0
{
;ここにアプリの画面を普段の状態にする処理
}
}
}
Return
2017/09/16(土) 00:16:27.89ID:vASzTH8m0
ログの詳細詳しく
ME.ahkのどこで止まってる?
あと使ってるIMEは何?
2017/09/16(土) 04:55:52.43ID:aHU7hLXq0
シングルクリック?をコードできちんと定義できますでしょうか?
ひとつのキーで押し方によって違う動作をさせたいです
コードを書いてみましたがうまく行きません
Else以降が動作したりしなかったりです
また、シングルクリックでElseより上のコードを巻き込んでしまう場合もあり動作が安定しません
尚、別のキーにコードを分けると問題なく動作します

Pause:: ;━━ダブルクリックでモニタをオフにする━━
KeyWait, Pause
if (A_PriorHotkey==A_ThisHotkey)&&(500>A_TimeSincePriorHotkey)
Run,C:\Program\Monitor OFF.exe
Else ;━━シングルクリックでボスが来た━━
DetectHiddenWindows,On
ControlSend,,b,ahk_class MPC-BE
ControlSend,,^w,ahk_class MozillaWindowClass
ControlSend,,+{F8},ahk_class WindowsForms10.Window.8.app.0.141b42a_r14_ad1
Return

何かヒントをください。よろしくお願いします。
2017/09/16(土) 05:13:42.46ID:/k1Xm57s0
>>28
ifやelseは二行以上ある場合は{}で囲う
2017/09/16(土) 05:43:07.83ID:5bWrgVaq0
>>27
IMEはMS-IME2012で、Win2000のMS-IME2000でも確認してます
ログはエラー画面の時点で何も表示されず
OKを押すと復旧して以下で止まっていたことが分かります

046: WinGetClass,ActiveWinClass,A
047: if ActiveWinClass in %Classes%
049: if (IME_GET())
---- ahk\Lib\IME.ahk
147: ControlGet,hwnd,HWND,,,%WinTitle%
148: if (WinActive(WinTitle))
149: ptrSize := !A_PtrSize ? 4 : A_PtrSize
150: VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0)
151: NumPut(cbSize, stGTI, 0, "UInt")
152: hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI) ? NumGet(stGTI,8+PtrSize,"UInt") : hwnd
154: }
156: Return,DllCall("SendMessage", UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd), UInt, 0x0283, Int, 0x0005, Int, 0) (14.77)
2017/09/16(土) 07:23:01.09ID:aHU7hLXq0
>>29
ありがとうございます

前よりマシな動作になりましたが何回か押してみたところ、ダブルクリックでElse以降のコードを巻き込んでしまうことがあります
Pause upにしたらだいぶマシになった気はするものの安定しませんね

また、シングルクリックで上のコードを巻き込むことはなくなりました
しかし、シングルクリックの場合動作が安定しません。動作したりしなかったりです
キー自体は青軸なのでしっかりカチッと入ってることがわかります(キーを変えても同じでした)
う〜ん押し方のタイミングの問題でしょうか? 軸がカチッと入って1秒くらい押し下げてからアップしないと動作しないことがありますし
また、軽いタッチでカチッと入って素早くキーから指を離しても動作することもあります

Pause up:: ;ダブルクリック的直し方でモニタをオフにする
KeyWait, Pause
if (A_PriorHotkey==A_ThisHotkey)&&(500>A_TimeSincePriorHotkey)
{
Run,C:\Program\Monitor OFF.exe
}
Else
{ ;シングルクリックでボスが来た
DetectHiddenWindows,On
ControlSend,,b,ahk_class MPC-BE
ControlSend,,^w,ahk_class MozillaWindowClass
ControlSend,,+{F8},ahk_class WindowsForms10.Window.8.app.0.141b42a_r14_ad1
}
Return

長押しという選択肢もあろうかとは思いますが、コードの内容上長押しにはしたくないので何とかワンクリックで確実に動作しないでしょうか?
2017/09/16(土) 08:11:29.94ID:FeLII/E00
巻き込んでるというか、1回目を押した時点で
未来に2回目が押されるかどうか関係なく即座に1度押しとしてelseのほうに行ってる
2017/09/16(土) 09:07:41.02ID:aHU7hLXq0
>>32
あぁなるほど状況は理解した
1回押しで動くコードがあるからそれがダブルの1回目で邪魔してるのね
ということはElse以降の方をダブルクリックにしたほうがいいのかな
もうちょい頑張ってみます
ありがとうございました
2017/09/16(土) 09:16:40.59ID:wsPHlpoD0
>>30
32bit64bitの問題じゃねえかな149でポインタサイズ確認してるのに
152のポインタ渡で型が32bitのUInt、SendMessageも64bitだと64,32,64,64で
型はptr, UInt, ptr, ptrになると思う
2017/09/16(土) 09:53:44.44ID:aHU7hLXq0
あぁ逆にしても駄目ですな
条件分岐する前に1回押されてしまう
1回押しを定義しつつダブルクリックを否定
から〜の Else
で、ダブルクリックを設定しつつシングルクリックを拒否
理屈だとこういうことか

できんのかなコレ...
2017/09/16(土) 10:02:33.95ID:wsPHlpoD0
>>35
タイマー使わないとだめだと思う
2017/09/16(土) 10:17:02.44ID:LFPsV6Pf0
「空気読め!」ってお叱り受けるのを覚悟で言っちゃう

>>35
サンプルコード集
http://ahkwiki.net/SampleCodes
で解決するよ
2017/09/16(土) 10:29:23.67ID:sfnfppsC0
>>34
https://ux.getuploader.com/autohotkeyl/download/123
勝手にIME.ahkを修正してみたけどこんな感じかな? 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/09/16(土) 11:49:48.01ID:wsPHlpoD0
>>38
WPARAMにUPtrすばらしい
2017/09/16(土) 19:46:44.50ID:aHU7hLXq0
一応、ElseじゃなくReturn で繋いで双方のコードを引き込まなくなった(タイミングは調整中)

しかし、ボスが来た自体に問題が出てることが発覚
どうやらプログラムによって発動までにラグがあったり、何度か押さないと反応が無い
あれ? 単独スクリプトでもっとしっかり動いてたはずなんだけどなぁ
特にFirefoxの反応が悪すぎる。それに対して動画プレイヤーは素直に反応する
音楽プレイヤーはちょっと遅れ気味で反応
SetKeyDelay,を10から-1にしても変わらず...
クラスを1個づつに分けて試したけど反応悪い
直接のショトカは問題ないので何か悪さしてるのかな
2017/09/16(土) 20:19:04.67ID:KYSYUlmE0
サンプルコード集の例を元にして1度押しと2度押しで動作を分けてみたけど
Pauseキーだと10回に1回くらい2度押し判定がスカってaがsendされることがある

#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする
Pause:: ;無変換
KeyWait,Pause
KeyWait,Pause,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
;ここに任意のコマンド 1度押し
Send, a
KeyWait,Pause
Return
}
;ここに任意のコマンド 2度押し
Send,b
KeyWait,Pause
Return


他のキーだと2度押し判定ミスすることないからキーボードの仕様なのかな
まあPauseはそういう使い方想定してないから2度押ししたいなら素直に別キー使った方が良いんだろうね
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だけででリピートできないかな
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

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