AutoHotkey スレッド part25at SOFTWARE
AutoHotkey スレッド part25 - 暇つぶし2ch1:名無しさん@お腹いっぱい。
17/09/14 11:52:40.84 uijNj4qb0.net

■配布元
URLリンク(ahkscript.org)
■前スレ
AutoHotkey スレッド part24
スレリンク(software板)
■日本語解説等
AutoHotkey Wik
URLリンク(ahkwiki.net)<) (不調時は URLリンク(hdd.s300.xrea.com) )
AutoHotkeyJp(過去ログdatあり)
URLリンク(sites.google.com)
Autohotkey日本語ヘルプ(chmファイル)
URLリンク(www6.atwiki.jp)
Autohotkey専用うpろだ
URLリンク(ux.getuploader.com)
簡易スクリプト掲示板
URLリンク(pastebin.com)
■派生版
IronAhk (.NET製、クロスプラットフォーム)
URLリンク(github.com)
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
URLリンク(www.autohotkey.com)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


2:名無しさん@お腹いっぱい。
17/09/14 11:53:33.21 uijNj4qb0.net
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、
その場合はスクリプトの修正が必用です。
旧版のAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →URLリンク(ahkscript.org)
 →URLリンク(ahkwiki.net)
※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方が最新AHK対応版(MouseGestureL.ahk)を配布しているのでそれを
利用するのもありです。
URLリンク(hp.vector.co.jp)
URLリンク(code.google.com)
※ACC.ahk(旧版用)とCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。
 URLリンク(ux.getuploader.com)
※Unicode版のACC.ahkは下記(AccInfoViewer.ahk付き)またはフォーラムから入手してください。
 URLリンク(ux.getuploader.com)
■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。 👀 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


3:名無しさん@お腹いっぱい。
17/09/14 11:54:40.33 uijNj4qb0.net
■過去スレ
Part1 スレリンク(software板)
Part2 スレリンク(software板)
Part3 スレリンク(software板)
Part4 スレリンク(software板)
Part5 スレリンク(software板)
Part6 スレリンク(software板)
Part7 スレリンク(software板)
Part8 スレリンク(software板)
Part9 スレリンク(software板)
Part10 スレリンク(software板)
Part11 スレリンク(software板)
Part12 スレリンク(software板)
Part13 スレリンク(software板)
Part14 スレリンク(software板)
Part15 スレリンク(software板)
Part16 スレリンク(software板)
Part17 スレリンク(software板)
Part18 スレリンク(software板)
Part19 スレリンク(software板)
Part20 スレリンク(software板)
Part21 スレリンク(software板)
Part22 スレリンク(software板)
Part23 スレリンク(software板)
Part24 スレリンク(software板)

4:名無しさん@お腹いっぱい。
17/09/14 11:55:20.32 uijNj4qb0.net
以下FAQ等
■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHK1.1の場合)
Q2:初めて使うけどどれを使えばいいの?
A2:AHK1.1のユニコード版を推奨。
  旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
  64ビットOSでAHK1.1 32ビット版の使用は制約が多いので、64ビット版を強く推奨。
■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( URLリンク(www.forest.impress.co.jp) )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。

5:名無しさん@お腹いっぱい。
17/09/14 11:55:58.23 uijNj4qb0.net
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
  これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
   ^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
 例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
   sc07B & I::Send, {Blind}{Up}
   sc07B & K::Send, {Blind}{Down}
   sc07B & J::Send, {Blind}{Left}
   sc07B & L::Send, {Blind}{Right}
Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
  #UseHookで全部にキーボードフックを適応する方法でも可。
Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
   × Joy1::Esc
   ○ Joy1::Send, {Esc}
Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。

6:名無しさん@お腹いっぱい。
17/09/14 11:57:01.04 uijNj4qb0.net
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。
Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
 ○AHKが原因の場合
  AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
  一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
  しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
  物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
   例) ^W::Send, {w 30}
  これを回避するためには、以下の方法をとればよい:
   ・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
   ・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
   ・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
     #HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
  なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
  発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
 ○AHK以外が原因の場合:
  環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
  ・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)など他多数
  ・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている

7:名無しさん@お腹いっぱい。
17/09/14 11:57:51.02 uijNj4qb0.net
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:URLリンク(www6.atwiki.jp) の「IME.ahk」を使いましょう。
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
  複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
  が、バッチでかなりの回数(数万↑~)回したりする場合以外は、体感出来るほどの差はない。
Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:wikiに各種エディタの定義ファイル及びキーワード一覧あり。( URLリンク(ahkwiki.net) )
Q3:GUI作るのめんどくせ~~
A3:海外の有志が作ったツールを使うと楽。
 SmartGUI Creator ( URLリンク(www.autohotkey.com) )
 GUI Creator ( URLリンク(ahkscript.org) )
Q4:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
  > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
  > → 実行中、 …:割り込み終了待ち
  > 元スレッド   →→→→→→……………………………………→→→→
  >                  ★割込                ↑再開
  > 割り込みスレ          →→→→…………→→→→→→END
  >                        ◆割込 ↑再開
  > 更に割り込み                →→→END

8:>>1より、テンプレに割り込んで業務連絡。
17/09/14 12:15:31.88 uijNj4qb0.net
次スレを立てる際は、1行目に「!extend:checked:vvvvv:1000:512」と記入してください。
その行はスレが立った時点で消えてなくなるので、
告知のため、その呪文を2行目以降に再度書いてください。

9:名無しさん@お腹いっぱい。
17/09/14 12:17:11.83 uijNj4qb0.net
Q5:AHK(A32)、AHKLx86(U32)、AHKLx64(U64)の共存は出来る?
A5:それぞれを違うフォルダにインストールする(最新版は分ける必要無し)
  但し、インストーラーを使って最後にインストールしたAutohotkeyに対して
  ahkファイルの関連付けが行われるので、レジストリエディタ(Regedit.exe)や
  FileTypesMan等のツールを使って関連付を変更してください。
  ahkファイルをAHK(A32)、ahlファイルをAHKLx86(U32)、ah6ファイルをAHKLx64(U64)
  といったように別々の拡張子に関連付けが可能です。
  それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
  [HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler]
  の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。

10:名無しさん@お腹いっぱい。
17/09/14 12:17:32.04 uijNj4qb0.net
Q6:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど?
A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。
■回避策
1:管理者として実行
 Autohotkey.exeを右クリックしてプロパティを開き、「互換性」→「管理者としてこのプログラムを実行する」にチェック。
 スクリプトに記載する方法もある( URLリンク(www.autohotkey.com) )
2:対策パッチ
 実行ファイルのマニフェスト書き換え、自己署名証明書のインストールが行われる。
 ※AutoHotkey.exeはProgram Files以下に置く必要がある。
 URLリンク(www.autohotkey.com)
3:UAC停止 ※注意!! 必ずHIPS機能がある他のセキュリティ対策ソフトを導入してください。
 「コントロールパネル」→「ユーザーアカウント」
 Vista:「ユーザーアカウント制御の有効化または無効化」→ チェックボックスをオフ。
 7/8/8.1:「ユーザーアカウント制御設定の変更」→ スライドバーを一番下に。
 ※Windows 8/8.1では上記に加えレジストリを変更する必要があります。(注意:Windowsストアアプリが実行できなくなる)
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
 「EbableLUA」の値を「0」に変更。

11:名無しさん@お腹いっぱい。
17/09/14 12:18:05.36 uijNj4qb0.net
■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(開発終了)
URLリンク(www.autohotkey.com)
Autohotkey 1.1 (Autohotkey_L)
URLリンク(ahkscript.org)
■開発中
Autohotkey v2(下位互換性を排除して操作利便性の向上)
URLリンク(ahkscript.org)

12:名無しさん@お腹いっぱい。
17/09/14 12:18:34.38 uijNj4qb0.net
■派生版
IronAhk(.NET製、クロスプラットフォーム。開発終了)
URLリンク(www.ironahk.net)
AutoHotkey.dll(真のマルチスレッド対応)
URLリンク(www.autohotkey.com)
AutoHotkey_N(開発終了)
AutoHotkey_H
URLリンク(www.autohotkey.net)
■統合
AHK_U(Unicode版)
URLリンク(www.autohotkey.com)
AHK64(64bit版)
URLリンク(www.autohotkey.com)
■スクリプト作成支援ツール
AutoHotKey専用エディター ※必須ではありあせん。
 SciTE4AutoHotkey
 URLリンク(fincs.ahk4.net)
GUI作成ツール
 SmartGUI Creator
 URLリンク(www.autohotkey.com)
 GUI Creator
 URLリンク(ahkscript.org)
 AutoGUI
 URLリンク(www.autohotkey.com)
※テンプレここまで

13:>>1より業務連絡。
17/09/14 12:21:12.97 uijNj4qb0.net
テンプレの一部(このスレの>>9-10)は前スレではまとめて1つのレスだったのですが、
スレを埋め立てているのではと判定されてしまったため、
今回は分割して貼り込んであります。

14:名無しさん@お腹いっぱい。
17/09/14 18:25:44.27 CmOCopOE0.net
>>1

15:名無しさん@お腹いっぱい。
17/09/14 18:39:12.30 KTBfP0580.net
Toukou:=いちおつ
sleep 4
Toukou=
return

16:名無しさん@お腹いっぱい。
17/09/14 18:40:50.62 KTBfP0580.net
しまった " がない

17:名無しさん@お腹いっぱい。
17/09/15 04:38:32.95 lepJIuBi0.net
1.特定のアプリだけ>>7のIME.ahkで常にIMEをOFFにする
2.頻繁に落ちるアプリをエラーダイアログ検知後、再起動する
この機能をそれぞれタイマーにして1つのスクリプトにすると
2のエラーダイアログ表示で固まることがあります
ログをみるとIME.ahkの途中で止まってるので
・1か2のタイマーを SetTimer, Main, 500, -1 としてスレッドの割り込み優先度を指定
・一方に Critical を付けてスレッド割り込みを禁止する
・一方に Thread, NoTimers を付けてタイマーイベントの割り込みを禁止する
など試してみましたが失敗します
ちなみに2つのスクリプトに分けると上手く動くのですが
これを1つで実現できる方法がありましたら教えてください

18:名無しさん@お腹いっぱい。
17/09/15 05:07:21.26 t6JvSMbV0.net
>>17
タイマー1つで出来ないかな

19:名無しさん@お腹いっぱい。
17/09/15 07:55:45.94 1jvV58yu0.net
具体的な環境とコードがわからないと何とも

20:名無しさん@お腹いっぱい。
17/09/15 14:20:00.31 qvzlKVt/0.net
あるウインドウがアクティブになったときに何かをする
そのウインドウが非アクティブになったときに何かをする
ということをしたいのですが、出来ますか?

21:名無しさん@お腹いっぱい。
17/09/15 14:24:35.08 qvzlKVt/0.net
OnMessage等を使ってもいいです。ただ、タイマーで監視とかは
アクティブになる機会はたまにしかないので、資源の浪費な気がして、気が引けます

22:名無しさん@お腹いっぱい。
17/09/15 14:34:36.19 JDrYmG0X0.net
URLリンク(sites.google.com)

23:名無しさん@お腹いっぱい。
17/09/15 15:44:59.25 qvzlKVt/0.net
>>22
なるほど。なんか出来そうですねえ。ありがとうございました

24:17
17/09/15 23:15:45.05 lepJIuBi0.net
>>18-19
当初はタイマー1つで書いてましたがやはり止まるので
タイマー2つで片方の割り込みを制限すればと思い分けました
環境はWin8.1x64 AHKv1.1.24.02(U64)/v1.0.48.05(A32)で
以下コードの主要部分です
この2つのタイマーを2ファイルへ分けると正常に動きます

25:17
17/09/15 23:16:51.76 lepJIuBi0.net
#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

26:17
17/09/15 23:17:15.94 lepJIuBi0.net
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

27:名無しさん@お腹いっぱい。
17/09/16 00:16:27.89 vASzTH8m0.net
ログの詳細詳しく
ME.ahkのどこで止まってる?
あと使ってるIMEは何?

28:名無しさん@お腹いっぱい。
17/09/16 04:55:52.43 aHU7hLXq0.net
シングルクリック?をコードできちんと定義できますでしょうか?
ひとつのキーで押し方によって違う動作をさせたいです
コードを書いてみましたがうまく行きません
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
何かヒントをください。よろしくお願いします。

29:名無しさん@お腹いっぱい。
17/09/16 05:13:42.46 /k1Xm57s0.net
>>28
ifやelseは二行以上ある場合は{}で囲う

30:17
17/09/16 05:43:07.83 5bWrgVaq0.net
>>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)

31:名無しさん@お腹いっぱい。
17/09/16 07:23:01.09 aHU7hLXq0.net
>>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
長押しという選択肢もあろうかとは思いますが、コードの内容上長押しにはしたくないので何とかワンクリックで確実に動作しないでしょうか?

32:名無しさん@お腹いっぱい。
17/09/16 08:11:29.94 FeLII/E00.net
巻き込んでるというか、1回目を押した時点で
未来に2回目が押されるかどうか関係なく即座に1度押しとしてelseのほうに行ってる

33:名無しさん@お腹いっぱい。
17/09/16 09:07:41.02 aHU7hLXq0.net
>>32
あぁなるほど状況は理解した
1回押しで動くコードがあるからそれがダブルの1回目で邪魔してるのね
ということはElse以降の方をダブルクリックにしたほうがいいのかな
もうちょい頑張ってみます
ありがとうございました

34:名無しさん@お腹いっぱい。
17/09/16 09:16:40.59 wsPHlpoD0.net
>>30
32bit64bitの問題じゃねえかな149でポインタサイズ確認してるのに
152のポインタ渡で型が32bitのUInt、SendMessageも64bitだと64,32,64,64で
型はptr, UInt, ptr, ptrになると思う

35:名無しさん@お腹いっぱい。
17/09/16 09:53:44.44 aHU7hLXq0.net
あぁ逆にしても駄目ですな
条件分岐する前に1回押されてしまう
1回押しを定義しつつダブルクリックを否定
から~の Else
で、ダブルクリックを設定しつつシングルクリックを拒否
理屈だとこういうことか
できんのかなコレ...

36:名無しさん@お腹いっぱい。
17/09/16 10:02:33.95 wsPHlpoD0.net
>>35
タイマー使わないとだめだと思う

37:名無しさん@お腹いっぱい。
17/09/16 10:17:02.44 LFPsV6Pf0.net
「空気読め!」ってお叱り受けるのを覚悟で言っちゃう
>>35
サンプルコード集
URLリンク(ahkwiki.net)
で解決するよ

38:名無しさん@お腹いっぱい。
17/09/16 10:29:23.67 sfnfppsC0.net
>>34
URLリンク(ux.getuploader.com)
勝手にIME.ahkを修正してみたけどこんな感じかな? 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


39:名無しさん@お腹いっぱい。
17/09/16 11:49:48.01 wsPHlpoD0.net
>>38
WPARAMにUPtrすばらしい

40:35
17/09/16 19:46:44.50 aHU7hLXq0.net
一応、ElseじゃなくReturn で繋いで双方のコードを引き込まなくなった(タイミングは調整中)
しかし、ボスが来た自体に問題が出てることが発覚
どうやらプログラムによって発動までにラグがあったり、何度か押さないと反応が無い
あれ? 単独スクリプトでもっとしっかり動いてたはずなんだけどなぁ
特にFirefoxの反応が悪すぎる。それに対して動画プレイヤーは素直に反応する
音楽プレイヤーはちょっと遅れ気味で反応
SetKeyDelay,を10から-1にしても変わらず...
クラスを1個づつに分けて試したけど反応悪い
直接のショトカは問題ないので何か悪さしてるのかな

41:名無しさん@お腹いっぱい。
17/09/16 20:19:04.67 KYSYUlmE0.net
サンプルコード集の例を元にして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度押ししたいなら素直に別キー使った方が良いんだろうね

42:名無しさん@お腹いっぱい。
17/09/16 21:41:53.91 aHU7hLXq0.net
>>41
検証ありがとうございます
現在、F13キーにして検証中
ボスキーの反応がキーによってまちまちです
もう、わけわからんのでショトカの割り当て含めて組み直しですね
MusicBee
MusicBeeのショトカをグローバル設定に変えてControlSend,,を使わず直接Send, +{f8}で送ってみた結果、レスポンスとしては全く問題なし。
それ以外の機能のショトカをControlSend,,で送ったところMusicBeeはレスポンスが非常に悪いようです
一度反応した後は間をあけないと2回目以降ラグが出てしまう?遅延しやすい感じ
分けて使ってる時はたまたま運が良かったみたい?。ボスが来なくてよかった...
Firefox
F13で反応無し、#F13で確実にレスポンスよく反応する
MPC-BE
どのキーでも確実にレスポンスよく反応する
発動キーを2キー以上使えば行けそうな気がしてきましたが
そうなるとコードをひとまとめにして簡単にしてやろうという当初の目論見から少しズレてしまうだよね
ってかFirefoxどうしたんだって感じです。もともと1キーでテキパキ反応してたんだけど
もうちょい頑張ってみます

43:名無しさん@お腹いっぱい。
17/09/17 04:52:29.36 oCfXbTFr0.net
◯::
DetectHiddenWindows,On
ControlSend,,^w,ahk_class MozillaWindowClass
Return
F13:: まったく動作せず
#F13:: アクティブの時動作せず
^F13:: アクティブでも非アクティブでも動作する
F13長押し まったく動作せず
^F13長押し アクティブの時動作せず
#F13長押し アクティブの時動作せず
うん。心が折れた
^F13でいこう。そしてボスキーは他のコードと分けようかな...
ってか面倒くさいから普通にボスキーアプリ拾ってこいって話だよな

44:名無しさん@お腹いっぱい。
17/09/17 06:15:54.77 p/7ZTW530.net
F13をどこに割り当ててんだ?

45:名無しさん@お腹いっぱい。
17/09/17 06:50:16.95 oCfXbTFr0.net
>>44
割当じゃなくキーコード自体がF13キー
元々はAppsKey

46:名無しさん@お腹いっぱい。
17/09/17 09:43:50.02 ZslvSlHV0.net
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() はないよう�


47:ナすし、いちど一念発起して作っておけば 使い回しがきくかも、とは思っているのですが、もし既に存在してBSDライセンスなり LGPLなりで自由に使えるなら、わざわざ自作するのも馬鹿らしいので…。



48:名無しさん@お腹いっぱい。
17/09/17 17:16:58.81 XAx2qwWa0.net
そのどれもそんなたいした手間かかるものじゃないんで
みんな自分で書いてるんじゃないの

49:名無しさん@お腹いっぱい。
17/09/17 19:34:08.24 4ImUmMF/0.net
過去ログのどっかにありそうだな

50:名無しさん@お腹いっぱい。
17/09/17 19:35:09.61 TU6C1wnl0.net
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
俺は知識のない人間だからよくわからんけどこれは使えないのだろうか

51:名無しさん@お腹いっぱい。
17/09/17 19:45:12.80 4ImUmMF/0.net
あった
スレリンク(software板:974番)
URLリンク(pastebin.com)

52:46
17/09/18 15:18:21.15 30s93rv60.net
>>46です。皆さんありがとうございます。
>>47
まあ、そういわれればそうですね。書いても大した手間じゃないと思ってはいます。
>>49
.NETでDLLをひとつビルドする必要がありますね。
Visual Studioが今は無料になったとはいえ、もしかしたらWindows 2000とか
98とかのVMにAHKを入れて使う可能性があるので、.NETは避けたいです。
#単に.NETに対してアレルギーがあるだけなんだけど。
>>48 >>50
けっこう面倒臭そうですね。
*   *   *
というわけで、大した手間じゃないので自分で書くことにします。
tr() って、いろんな言語で汎用的に使いそうな関数ですから、
著作権フリーの自前のものを手元に持っておいたほうが、
あとあと融通がききそうですし。

53:名無しさん@お腹いっぱい。
17/09/18 19:35:44.46 MAIQQZAv0.net
マウスのホイールで加速
ってAHK単体で実現できますか?
Webブラウザで超縦長ページを高速スクロールさせたいとき、ホイールを高速で回すと10数ページぐらい移動とか・・・

54:名無しさん@お腹いっぱい。
17/09/18 20:35:20.93 wwQcrx5N0.net
拾ってきたAccelerated Scrollingてのを少しいじってメインに組み込んでる

55:名無しさん@お腹いっぱい。
17/09/18 21:34:32.47 plzfm86Y0.net
>>52
ホイールスクロール - eamat @Cabinet - アットウィキ
URLリンク(www6.atwiki.jp)
WheelScroll.ahkはどうだろう
一応日本人作だから日本語の説明だから分かりやすいかと
10数ページ一気に移動とか可能か分からないけど・・・

56:名無しさん@お腹いっぱい。
17/09/18 21:59:14.37 MAIQQZAv0.net
素早いレスを


57:ありがとうございます AHKの万能さに感動しました



58:名無しさん@お腹いっぱい。
17/09/19 03:22:47.92 IXDgiRwq0.net
自分は加速ではなく
サイドボタン1&ホイール上下でHome/End
サイドボタン2&ホイール上下でPageUP/PageDown
を割り当ててる
とりあえず一番上か一番下に飛びたいことが多いのでHome/End割り当てるのが効率良いです

59:名無しさん@お腹いっぱい。
17/09/19 06:19:29.73 g9F/3nwt0.net
デスクトップのなにもないところ(ウインドウも、アイコンも無い壁紙部分)をダブルクリックすると、特定のアプリを起動する
って事はAHKで出来ますか?

60:名無しさん@お腹いっぱい。
17/09/19 06:47:36.39 zmB9SGAt0.net
出来ると思います

61:名無しさん@お腹いっぱい。
17/09/19 17:19:30.66 I2JJpXcS0.net
LOOP中にキーボードAを押したらLOOPから抜けるようにするにはどうすればいいですか?

62:名無しさん@お腹いっぱい。
17/09/19 18:33:04.11 kLxokK7d0.net
>>59
Loop間隔が短いならGetKeyStateでif分岐してBreak
Loop間隔が長いならAキーに変数指定を割り当てといて
Loop中にその変数の値でif分岐してBreakとか

63:名無しさん@お腹いっぱい。
17/09/19 20:25:23.62 FwZUdIIc0.net
あとはUntilかWhile

64:名無しさん@お腹いっぱい。
17/09/20 00:48:55.91 VcXou4qe0.net
>>60
>>61
ありがとうございます

65:名無しさん@お腹いっぱい。
17/09/20 02:50:57.69 RyttgFZS0.net
横からだけど>>57って出来るのか気になる
デスクトップのアイコンの有無ってどうやって判別したら良いんだろう?

66:名無しさん@お腹いっぱい。
17/09/20 03:03:21.51 YkfHD61c0.net
例えば、コピー送ってクリップボードに入るかどうか、とか

67:名無しさん@お腹いっぱい。
17/09/20 04:26:52.19 cHabdo460.net
AHKにSendMessageでポインタを渡す機能があればLVM_HITTESTを送る
-1が返るとアイコンなし

68:57
17/09/20 05:36:41.50 1u+zkbMh0.net
色々調べたけど殆ど分からない
user32.dllを読み込んで何かのイベントを貰えれば良いのだけど、それについての情報が殆ど無いですよね
やり方もわからないし…
で、URLリンク(sites.google.com)
このページ見てて、デスクトップのなにもない所をダブルクリックという作動をよくよく考えてみると、
すべてのフォーカスが外れた状態でダブルクリックイベント
という事なんじゃないかと
その先さっぱり
パラメータの説明はMSにあるけど、無能過ぎてちんぷんかんぷん
Spy++で調べるとデスクトップはFolder viewというFormだということはわかったけど…

69:名無しさん@お腹いっぱい。
17/09/20 05:42:34.55 1u+zkbMh0.net
>>65
ありがとうございます
まだ良くわかってないけど調べてみるとLVM_HITTESTというキーワードをちょこっと調べるとどうにかできそうな匂いがします
もうちょっと調べてみるです

70:名無しさん@お腹いっぱい。
17/09/20 06:24:09.05 UwzymyTj0.net
他にやりようがあるんだからできる範囲で工夫すりゃいいのに

71:名無しさん@お腹いっぱい。
17/09/20 07:55:16.00 VDqFQXZJ0.net
>>66
検索したらすぐに見つかったけど
URLリンク(autohotkey.com)
1ページ目に手抜きのコード
2ページ目に実用上ほぼ問題なさそうなきれいなコード(中程のやつ)
これだと問題となるケースがあって、それを除外する努力が3ページ目までつづくけど、
結局は潰しきれないので、好きなやつをどうぞ

72:名無しさん@お腹いっぱい。
17/09/20 08:03:50.81 1u+zkbMh0.net
>>69
おぉありがとうございます
今は無理なので後で使ってみます
ありがとうございました

73:17
17/09/21 14:16:57.34 h2uQQOf90.net
>>34>>38
解析有難うございます
修正版にてようやくエラーが再現しましたが、応答なしになるのは変わらずでした
Win2000+IME2000ではIMEの状態が常にOFFになりました
残念ですが2つ起動することにします

74:名無しさん@お腹いっぱい。
17/09/21 16:45:49.92 HOY/MTbD0.net
>>71
64bit版で32bitアプリにSendMessageでメッセージは送れないと思うその逆も
タイマー1つにしてまずエラーダイアログ判定して、でなければIMEへ

75:名無しさん@お腹いっぱい。
17/09/21 16:59:11.88 HOY/MTbD0.net
それと>>25
;ここに特定のClasNNではOFFにせずReturnする例外処理
If (IME_GET()) {
IME_SET(0)
と書けないかな

76:名無しさん@お腹いっぱい。
17/09/21 19:45:29.75 d8X2A9cD0.net
GetKeyStateで無変換キー(vk1Dsc07B)が取得できないんだけど、何か方法ないかな?

77:名無しさん@お腹いっぱい。
17/09/21 20:00:00.03 aaW3C7Am0.net
できるけど

78:名無しさん@お腹いっぱい。
17/09/21 20:40:29.55 d8X2A9cD0.net
>>75
まじ?GetKeyState("vk1Dsc07B", "P")で?
俺の指定方法がおかしいのかな
他のキーは取得できるのにな

79:名無しさん@お腹いっぱい。
17/09/21 21:43:38.91 so7+jRcr0.net
どちらかにすれば?
vk1D
sc07B

80:名無しさん@お腹いっぱい。
17/09/21 22:28:51.86 aaW3C7Am0.net
>>76
それでも"vk1D"でも"sc07B"でも"P"があってもなくても0|1ちゃんと返る

81:名無しさん@お腹いっぱい。
17/09/21 22:36:11.29 d8X2A9cD0.net
おっかしいなぁ・・・
ならないから多分おま環かも
面倒だし別のキーに割り当てますわ

82:名無しさん@お腹いっぱい。
17/09/22 06:58:59.56 OAhgYF7S0.net
>>79
キーヒストリー(アイコンダブルクリックでCtrl+K)に何が入っているか気になるね。
レジストリで変更してるとか。

83:名無しさん@お腹いっぱい。
17/09/24 01:23:40.12 ovq+ASMp0.net
キーを押している間
クリックして
マウスムーブ
クリックして
マウスムーブ を繰り返したいんですが
マウスムーブの値が一定じゃない場合
数珠繋ぎにif文を増やして行けばいいのでしょうか?
キーを離したら停止は出来るんですが
If文の数珠繋ぎにするやり方を教えてください

84:名無しさん@お腹いっぱい。
17/09/24 01:34:28.38 0aSErUDh0.net
>>81
質問するならもう少し具体例を挙げるとかとかした方がいいんじゃないかな

85:名無しさん@お腹いっぱい。
17/09/24 03:46:08.78 EkpWsIry0.net
>>81
if (式1) {
 ・・・
} else if (式2) {
 ・・・
} else if (式3) {
 ・・・
}

86:名無しさん@お腹いっぱい。
17/09/24 05:24:39.24 rm7yR9v00.net
>>83
多分コレジャナイ感

87:名無しさん@お腹いっぱい。
17/09/24 09:42:45.44 199+CCx20.net
じゃあ
>>81
if (式1) {
 ・・・
}
if (式2) {
 ・・・
}
if (式3) {
 ・・・
}

88:名無しさん@お腹いっぱい。
17/09/24 13:45:20.15 vmDjT91J0.net
>>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
とかかいて呼び出してやればいい。
#テストしてないので誤字とかあったらごめんね

89:名無しさん@お腹いっぱい。
17/09/25 17:03:34.64 FNSh64gG0.net
if (3 < %A% < 5) とかの3項比較すらできないとか何このクソ言語
一つづつ比較しろってのかよ
一々%がついたりつかなかったりもウザいし

90:名無しさん@お腹いっぱい。
17/09/25 19:15:51.75 b7qo8gsc0.net
if A between 3 and 5

91:名無しさん@お腹いっぱい。
17/09/25 19:32:18.57 dkkQJqva0.net
サルが迷い込んでてわろた

92:名無しさん@お腹いっぱい。
17/09/25 22:47:53.97 gWdFgzgp0.net
サルのふりをすると素早く結果が得られるのか
よいなウキキ

93:名無しさん@お腹いっぱい。
17/09/25 22:57:58.76 E5zwZhHI0.net
サルまねは簡単に見抜かれるがな
ウッキー

94:名無しさん@お腹いっぱい。
17/09/27 23:26:25.74 8l6buZma0.net
お尋ねします。
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%

95:名無しさん@お腹いっぱい。
17/09/27 23:54:13.76 5X3wI39C0.net
A32.exeってUTF-8のスクリプト読み込ませても普通に動くしL版の追加機能も使えるのか
今まで本家版そのままと勘違いしてた

96:名無しさん@お腹いっぱい。
17/09/28 01:00:06.89 ZCT1JF0Y0.net
Outputunko is allowed to be the same unko as an Inputunko.

97:名無しさん@お腹いっぱい。
17/09/28 02:29:17.50 GQSksrr90.net
>>94
なるほど、変数を複数作らなくてもいいんですね。
確かにスマートですね。
勉強になりました、有難うございます。

98:名無しさん@お腹いっぱい。
17/09/28 11:06:02.36 sWQkFnkH0.net
キーリピートできない多ボタンマウスに
キーリピートできるようにはできないんでしょうか?
左クリック押しながら、マウスの別ボタンを押すと
ロジクールの多ボタンマウスだとちゃんと書いたコードが機能しますが、今のやつは無理です。
たぶん、キーリピートが関係している?気がするんですが。

99:名無しさん@お腹いっぱい。
17/09/28 11:43:16.41 tPmB9WEX0.net
>>96
どんな挙動しているか自分で確認しよう
キーリピートやキーUp/Downの時間など
#InstallMouseHook
KeyHistory

100:名無しさん@お腹いっぱい。
17/09/28 13:37:56.81 sWQkFnkH0.net
>>97
Auto Hot Keyにだけマウスのボタンの入力が行ってませんでした。
左クリックだけしか反応がありません……。

101:名無しさん@お腹いっぱい。
17/09/28 16:18:29.95 mqOcEldg0.net
>>98
質問するなら自分がどういうコード書いてるのが具体的に書けよ
エスパースレじゃねえんだから

102:名無しさん@お腹いっぱい。
17/09/28 17:18:30.28 sWQkFnkH0.net
たぶんマウスの問題なんだと思います。
いろいろ実験したんですけど、そのマウスだけAuto Hot Keyが認識しませんでした。
KeyHistoryを教えてくれた方、ありがとうございました。
これを知らなかったら、認識しないのに無駄にコードを書いて悩んでたと思います。感謝です。

103:名無しさん@お腹いっぱい。
17/09/28 17:26:18.24 a7Erhn8f0.net
>>100
普通多ボタンマウスならボタンのカスタマイズやキーアサイン機能あるだろ
俺の場合ならRazerNagaにF13~F24など割り当ててAHK側でキーリピートさせたりも出来る
どこのマウス使ってんだよ

104:名無しさん@お腹いっぱい。
17/09/28 17:38:54.39 tPmB9WEX0.net
ひょっとしてマウスソフト設定がキーボードのキーになってるのでは?
さっきは書いてなかったが#InstallKeybdHook書けばそちらもログにでる
サイドボタンのマウス設定が「Z」ならAHKは「Z」と認識する
#InstallKeybdHook ; キーボードログON
#InstallMouseHook ; マウスログON
KeyHistory

105:名無しさん@お腹いっぱい。
17/09/28 17:45:34.30 a7Erhn8f0.net
だから具体的なこと一切書かないから悪いんだよ
>>96の「別のボタン」とは何ボタンなのか、多ボタンマウスの特殊ボタンならばそこに何を割り当ててたのか
「今のやつ」とはどのマウスのことなのか

106:名無しさん@お腹いっぱい。
17/09/28 17:54:32.61 sWQkFnkH0.net
>>101
「エレコム ワイヤレスマウス 無線 2.4GHz レーザー 8ボタン チルトホイール Lサイズ ブラック M-XGL20DLBK」です。
KeyHistoryでは、左右クリックとホイールの上下左右しか認識がありませんでした。サイドボタンは認識していません。



107: サイドボタン(5番)にPgDnを、右クリックにPgUpをマウスアシスタントドライバで割り当てて、 以下のようにコードを書きました。 ~LButton & PgDn::Send,{RButton} ;①左クリックを押しながらサイドボタン(5番)(PgDn) ~LButton & PgUp::Send,#d ;②左クリックを押しながら右クリック(PgUp) このコードはロジクールのG700Sなら動くんですが、エレコムマウスでは動かないです……。



108:名無しさん@お腹いっぱい。
17/09/28 18:51:25.73 Mhj4kady0.net
単にエレコムのマウスアシスタントの使い方を間違ってる可能性

109:名無しさん@お腹いっぱい。
17/09/28 19:27:11.97 sWQkFnkH0.net
Auto Hot Keyとこのマウスの相性が悪いのかもしれません。
もしくはエレコムのマウスアシスタントとの相性か。
エレコムの有線ゲーミングマウス(ドライバはゲーミング用)だと①も②も動いたんですけどね。

110:名無しさん@お腹いっぱい。
17/09/28 19:45:30.11 Mhj4kady0.net
そもそもPageUp/Downは効いてるのかい?

111:名無しさん@お腹いっぱい。
17/09/28 20:03:04.75 sWQkFnkH0.net
>>107
効いてますね。

112:名無しさん@お腹いっぱい。
17/09/28 20:45:00.19 Mhj4kady0.net
それなのに>>102のキーボードログONにしてもAHKはPagUp/Dnを検出しない?

113:名無しさん@お腹いっぱい。
17/09/29 03:11:51.19 r2OLOVvo0.net
>>104
横だけどエレコムのマウスアシスタントを切ってAHKだけででリピートできないかな

114:名無しさん@お腹いっぱい。
17/09/29 08:53:16.46 r/lUdNoa0.net
>>102
>>109
アシスタントで割り当てたキーが検出されませんね。
>>110
マウスアシスタントを切ってKeyHistoryを試してみたら、
サイドボタンの「XButton1」と「XButton2」は検出されましたが、それらにAHKでKeyを割り当てても、
KeyHistoryで「XButton1」「XButton2」と認識されるだけで、割り当てできませんでした。
もはや何が原因か分かりません。

115:名無しさん@お腹いっぱい。
17/09/29 09:44:16.78 r2OLOVvo0.net
>>111
目的の操作と動作を書いてみて

116:名無しさん@お腹いっぱい。
17/09/29 12:12:15.51 fLOXyM62aNIKU.net
ブラウザ(IE)の倍率を取得する方法ないですか?

117:名無しさん@お腹いっぱい。
17/09/29 21:28:26.66 mExGP7Np0NIKU.net
File.RawRead()でバイナリとして読み込みたいときに
BOM付テキストだとBOMの3バイト勝手に削られちゃうのどうしたらいいの

118:名無しさん@お腹いっぱい。
17/09/29 22:28:58.15 ZjfVNOK80NIKU.net
何がしたいのか知らんけど、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()

119:名無しさん@お腹いっぱい。
17/09/29 23:03:04.15 mExGP7Np0NIKU.net
>>115
保存はしない ただ丸ごと取り込みたい
5行目の時点でLenが3行目のLenより3少なくなってるのが困る

120:名無しさん@お腹いっぱい。
17/09/30 00:16:35.49 B2QZrWW30.net
File.RawReadのまえにFile.Seek(0)する

121:名無しさん@お腹いっぱい。
17/09/30 00:34:10.13 Cebj4y3r0.net
へー、File.Seek(0)でいけるのか

122:名無しさん@お腹いっぱい。
17/09/30 00:42:17.41 nKssOyMy0.net
>>117
バッチリです ありがとう

123:名無しさん@お腹いっぱい。
17/09/30 00:58:39.63 B2QZrWW30.net
公式のドキュメントにBOMがある時はポインタを進めるってちゃんと書いてあるよ
URLリンク(autohotkey.com)

124:名無しさん@お腹いっぱい。
17/09/30 08:43:40.77 Cebj4y3r0.net
やっぱ、ちゃんと公式のドキュメント読まんといかんね

125:名無しさん@お腹いっぱい。
17/09/30 11:15:24.15 1lMD47790.net
あるウィンドウにあるメニューバー、文字メニューでリスト内テキストと付随したチェックマーク有無を取得する方法はありますか?
例えばあるソフトで「☑」夜間モード、みたくなっていて
そのチェックありなしでキーボード操作が大幅に変わってしまうようなものに対応したホットキー(意図しない暴発を避けるため、片方のモード時にはスルーする、など)


126:を設定したく調べでいるのです。



127:名無しさん@お腹いっぱい。
17/09/30 11:40:52.35 8Huw1vzT0.net
>>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のメニューのハンドル取得方法を知っている人求む。

128:名無しさん@お腹いっぱい。
17/09/30 13:15:40.77 1lMD47790.net
>>123
ありがとうございます!使用したいソフトに数値あてはめてテストしたら問題なく動きました。
最近ahkを触り出したので、ご紹介いただいたDllCallなど、まだ触ったことのないコマンドでした。さっそくwikiを見つつ理解しようとしてますが頭がパニックになってます!アリモノの関数から値を引き出している?うーむ
またじっくり勉強していこうと思います、ありがとうございましたm(_ _)m

129:名無しさん@お腹いっぱい。
17/09/30 14:39:05.78 0PNJ6R9f0.net
>>112
サイドボタンに割り当てた任意キー(PgDnなど)がAHKに入力されないのは原因不明で
まだ解決してないんですが、いろいろいじってたら
Xbutton1と2がAHKに認識してくれるようになりました。
Xbutton2::
Send,{PgDn}
Sleep,200
While (GetKeyState("Xbutton2", "P"))
{
Send,{PgDn}
Sleep,30
}
Return
こんな感じで、リピート機能がないサイドバタンにリピートさせてます。
こんなコードでいいのか分かりませんが。

130:名無しさん@お腹いっぱい。
17/09/30 15:50:31.87 O67+Avl20.net
>>125
はじめとリピート中は
Send {PgDn down}
で、return前に
Send {PgDn up}

131:名無しさん@お腹いっぱい。
17/10/01 08:25:25.42 5/Rqy1jY0.net
>>126
添削ありがとうございます。
たしかにそれのほうがスマートですね。

132:名無しさん@お腹いっぱい。
17/10/01 08:37:12.64 gRVszgej0.net
Ctrlのショートカットでカーソル移動をしてるのですが、
長押しすると文字のすり抜けが発生します。
どうすればこのすり抜け現象が解決するのでしょうか?
<^h::switchKeyByWindow("{Home}", "^h")
<^;::switchKeyByWindow("{End}", "^;")
<^l::switchKeyByWindow("{Right}", "^l")
<^j::switchKeyByWindow("{Left}", "^j")
<^i::switchKeyByWindow("{Up}", "^i")
<^k::switchKeyByWindow("{Down}", "^k")

133:名無しさん@お腹いっぱい。
17/10/01 09:12:52.31 Zz0Wp6Pe0.net
そんな関数知らねーよ

134:名無しさん@お腹いっぱい。
17/10/01 09:16:25.09 CNkKl/UV0.net
>>128
ググったら、1ページだけヒットした。
その作者に知らせてあげるのが一番良いよ。

135:名無しさん@お腹いっぱい。
17/10/01 09:25:13.81 gRVszgej0.net
申し訳ありませn( ^ω^ )
;----------------------------------------------------------------
; Window によって送信するキーを振り分ける
;
; defaultKey デフォルトで送信するキー
; ctrlKey Ctrlを送信するウィンドウのとき送信するキー
;----------------------------------------------------------------
switchKeyByWindow(defaultKey, ctrlKey)
{
if (isCtrlKeyWindow())
{
Send,%ctrlKey%
}
else
{
Send,%defaultKey%
}
Return
}

136:名無しさん@お腹いっぱい。
17/10/01 09:38:47.57 gRVszgej0.net
さらに、、、
;----------------------------------------------------------------
; 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
}

137:名無しさん@お腹いっぱい。
17/10/01 09:44:20.65 ibUzHhgP0.net
自力で直せないならその関数使うのやめて#ifで書き直したほうがいいと思う

138:名無しさん@お腹いっぱい。
17/10/01 10:15:37.57 J6v0aHef0.net
SendMode, Playにすると動かないマシンがあるんだけどどういうことなんだろう
Win8やWin10のマシンではちゃんと機能するのにWin7のマシンではPlayにすると全く動作しなくなる

139:名無しさん@お腹いっぱい。
17/10/01 10:16:23.02 gRVszgej0.net
単純にSendだけでもキーを切り替えた瞬間にすり抜けが発生してしまいます

140:名無しさん@お腹いっぱい。
17/10/01 10:29:42.68 gRVszgej0.net
以下のスクリプトで、Ctrl+通常キーとのショートカットを長押して
カーソル移動しているのですが、上下左右を切り替えた瞬間に
通常キーがすり抜けます。何か手立てはありますか?
<^h::Send,{Home}
<^;::Send,{End}
<^l::Send,{Right}
<^j::Send,{Left}
<^i::Send,{Up}
<^k::Send,{Down}

141:名無しさん@お腹いっぱい。
17/10/01 13:36:43.12 CNkKl/UV0.net
>>136
SendMode,Input
#InstallKeybdHook
#UseHook
この設定だとどうなる?

142:名無しさん@お腹いっぱい。
17/10/01 15:24:44.69 gRVszgej0.net
>>137
レスありがとうございます
試しましたが、結果は変わりませんでした( ˘ω˘ )
Ctrlキー押しっぱなしで通常キーを切り替えた瞬間、
一文字だけすり抜けてしまいますね

143:名無しさん@お腹いっぱい。
17/10/01 18:45:43.89 rJfDiFvr0.net
MouseGestureLで画面端に接触って機能がありますが
autohotkeyではどのように再現すれば良いのでしょうか?

144:名無しさん@お腹いっぱい。
17/10/01 19:10:22.42 k6gLp1+F0.net
>>139
MouseGetPos

145:名無しさん@お腹いっぱい。
17/10/01 20:28:29.75 gRVszgej0.net
Ctrlキーを使ったカーソル移動で、
Ctrlキーと通常キーの両方を押しっぱなしにしただけでも
時々すり抜けが起きますね、、、困ったな(''_'')

146:名無しさん@お腹いっぱい。
17/10/01 23:10:27.69 s8qjH76V0.net
>>141
Ctrlが押されてる間ループで自前処理はどうでしょう

147:名無しさん@お腹いっぱい。
17/10/02 18:40:04.60 aXY7sAIp0.net
>>142
それってどうやるのでしょう?教えて

148:名無しさん@お腹いっぱい。
17/10/03 11:26:31.37 k2wSjcMy0.net
わりと最近何度も話題になってたので過去ログさがせばすぐ出てくると思う

149:名無しさん@お腹いっぱい。
17/10/03 17:29:15.20 Z94A9/610.net
Win7ですが、プロセスの優先度を変更するのに、MSDOSでは
wmic process where name=
を使って変更できますが、AHKでも出来ますか
アプリを起動するごとに複数のアプリの優先度を組み合わせによって変更したいのです
アプリの起動はAHKで行うので、AHKで優先度も変更できれば楽です
MSDOSのバッチファイルを作っていちいちそれを起動するというのは避けたいのですが

150:名無しさん@お腹いっぱい。
17/10/03 17:41:40.86 y7JHy7Th0.net
Process

151:名無しさん@お腹いっぱい。
17/10/03 17:59:47.31 Z94A9/610.net
ありがとうございました
やってみたのですが、firefox.exeなのですが複数のプロセスがありますが1つだけしか変わりません
DOSではすべてが変わるのですが、全部を変える方法はありますか
WinGetのListで取ろうとしてもPIDは取れないし、同じイメージ名が複数ある場合は1つだけしか変えられないのでしょうか

152:名無しさん@お腹いっぱい。
17/10/03 18:09:22.57 ApSdm6mu0.net
winget List取得後にLoopで winget PIDしていけばよいのでは?
それかrunコマンド経由でwmic.exeの実行はできないん?

153:名無しさん@お腹いっぱい。
17/10/03 18:18:34.78 Z94A9/610.net
Firefoxはウインドウは1つだけ(タブは複数)起動しているんです
で、WinGet Listで取得すると、IDが1つだけしか取れません
でも、firefox.exeの同名のプロセスが3つ存在しています

154:名無しさん@お腹いっぱい。
17/10/03 18:31:52.02 tZYykB2i0.net
なにをやりたいのかわかってないんだけど、
AHKで起動してるんだから、RunコマンドのOutputVarPIDでいいんじゃないの?
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low
でこのスクリプトで起動されたfirefox processは全部Low priority
OneTabのせいで、Firefoxのマルチプロセスが無効だったことに気がつかせてくれて


155:ありがとう Firefox削除した



156:名無しさん@お腹いっぱい。
17/10/03 18:38:15.32 jR7/UGDJ0.net
頭悪い人の意見だけど
For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
で全部取得しつつfirefox.exeならprocessで変えるようにすればいいんじゃない

157:名無しさん@お腹いっぱい。
17/10/03 18:51:40.20 Z94A9/610.net
>>150
やってみました
まず、Firefoxを全部閉じて、タブも1つだけ起動するようにして普通にFirefoxを起動しました
すると、firefox.exeという同名のプロセスが3つできます
次にこれをProcess, priorityで変更しようとすると、1つだけしか変更できず、2つは変更できません
次に
Run Firefox.exe, , , NewPID
MsgBox %NewPID%
Process, priority, %NewPID%, Low
としてやってみました。 MsgBoxでPIDを確認したかったからです
すると、確認している間にプロセスが3つ立ち上がって、結局変更できたのは1つだけ
ところが、MsgBoxをコメントアウトして
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low
でやれば、3つとも、プロセスがすべて低になりました
多分最初に起動したプロセスが親で、これをすぐに低に設定したら、それに続く2つのプロセスも
低のプロセスから派生したものだから低になるのでしょうね

この方法で出来ることはわかりました
でもすでに起動しているものを変更することはできないのかな

158:名無しさん@お腹いっぱい。
17/10/03 19:14:51.43 ApSdm6mu0.net
隠しプロセスだったらdetecthiddenwindows ONにしてからwingetは?

159:名無しさん@お腹いっぱい。
17/10/03 19:24:52.04 Z94A9/610.net
>>153
やってみました。 驚いたことに
detecthiddenwindows on
すると、1つだったIDが8つ出てきました。
これらはもちろん異なるIDだったのですが、WinGetでこれからPIDを求めるとすべて同じ多分親のPIDしか
出てこず、残りの2つのPIDは出ませんでした

160:名無しさん@お腹いっぱい。
17/10/03 22:12:00.42 aFw/sdPM0.net
Ctrlキー押しっぱのカーソル移動のすり抜けは
以下のメソッドを追加したら少し改善した。
少なくとも一定時間の移動ではすり抜けなくなってみたい。
但し、方向切り替え時に通常キーの同時押し状態になってしまう瞬間はダメですが、
SendMode Event
#UseHook
#InstallKeybdHook
#HotkeyModifierTimeout 100
SetKeyDelay,0

161:名無しさん@お腹いっぱい。
17/10/03 22:41:37.06 v5TBqoIN0.net
>>155
それキーボード側の同時押し可能数の問題じゃね
ゲーミングキーボードとか多同時押し対応したものなら起きないかもな

162:名無しさん@お腹いっぱい。
17/10/03 23:05:38.81 aFw/sdPM0.net
>>156
自分が使ってるのはリアフォかHHKBPro2だから同時押し6つのヤツ
恐らくCtrl+I,J,K,Lの2つのキーのSendだから3つ目が来た時に
単独押しの判定になるのかな?
少し改善したのはHotkeyModifierTimeoutを追加したのが効いてると思う。

163:名無しさん@お腹いっぱい。
17/10/03 23:30:28.37 Fa/rtAAh0.net
>>157
Ctrl+Iが押されたときAHKはまずCtrl upをSendしてから↑をSendし↑ upをSendしCtrlをSendする
この処理中にJ,K,Lを押すとスルーするかな

164:名無しさん@お腹いっぱい。
17/10/04 00:35:32.62 QCRp6QYx0.net
コマンドラインのツールのフロントエンドを作ろうとしたんですけど
Runwaitするとタイマーも割り込めないんですね…
Runの後にループでスリープしながら見張るのが無難でしょうか?

165:名無しさん@お腹いっぱい。
17/10/04 15:56:38.38 rfwLN1/G0.net
>>157
Send, {Blind}{Up}

166:名無しさん@お腹いっぱい。
17/10/04 16:53:46.41 LAY40rLs0.net
>>160
Ctrl+上 になってしまうのでは

167:名無しさん@お腹いっぱい。
17/10/04 23:43:40.87 eAdJsIi70.net
wikiに「1つのキーに3種類以上の動作割り当て」っていうサンプルがありますが
なぜあれで2度押しができるんですか?
解説お願いしたいです。

168:名無しさん@お腹いっぱい。
17/10/05 00:56:48.37 6h/nzYUE0.net
押された::
Q.すぐに離されましたか?
↓yes  no→ A.長押しです
Q.またすぐに押されましたか?
↓yes  no→ A.1度押しです
A.2度押しです

169:名無しさん@お腹いっぱい。
17/10/05 01:09:31.71 L8qoU5mE0.net
あれはキーダウンでラベルが呼び出されてから
keywaitでキーアップを待っているわけよ
0.3秒以内にキーアップがこなければ長押し
0.3秒以内にキーアップが来てそこから0.2秒以内にまたキーダウンが来たら2度押し
そうでなければ1度押し

170:名無しさん@お腹いっぱい。
17/10/05 08:37:47.60 YdyjWLJj0.net
解説必要かな
コメント適切すぎてどこで何してるのか一目瞭然だし
あれ以上の説明って逆に難しい気がするんだけど

171:名無しさん@お腹いっぱい。
17/10/05 09:00:00.95 6h/nzYUE0.net
押されているのが離されるのを待つコマンドで
離されることなくタイムアウトしたら
errorlevelが trueになる
ちょっと理解が混乱するのはいたしかたない

172:名無しさん@お腹いっぱい。
17/10/05 17:46:10.09 lN6wv7uW0.net
あるアプリにEditのコントロールがたくさんあります。50個くらい
これらのテキストをControlGetTextで取っているのですが
ひとつひとつクリックして選択してからGetしているので時間がとてもかかるのです
なので、このコントロールのメモリアドレスを取得することはできませんか
そうするとメモリから直接すべてのテキストを取得することができそうな気がするのですが
ControlGetTextでテキストを取得しているということは当然メモリにアクセスしているので
AHKはアドレスをゲットしているはずですね
一度すべてのEditコントロールのメモリアドレスをゲットしておけば以降はメモリアクセス
だけでゲットできるか考えているのですが

173:名無しさん@お腹いっぱい。
17/10/05 17:56:02.37 /O7vn0vF0.net
WinGetのControlListかControlListHwndとか?

174:名無しさん@お腹いっぱい。
17/10/05 18:26:18.76 lN6wv7uW0.net
>>168
controlHWNDをゲットして出来そうですね。 ありがとうございました

175:名無しさん@お腹いっぱい。
17/10/05 18:44:26.59 Mw/WW6ff0.net
>>160
Send, {Blind}でやってみたが、カーソルの動きが
変な動きをするんだけど、、、

176:名無しさん@お腹いっぱい。
17/10/05 19:01:28.37 pHsu3ccW0.net
説明を聞いたら分かりました。ありがとうございます!
「KeyWait,vk1Dsc07B,D T0.2」は0.2秒経過してもdownされてなかったらそのまま通すんですね。
そこが分かってなかったです。

177:名無しさん@お腹いっぱい。
17/10/05 23:48:46.74 ZYF3rk8J0.net
>>170
{Blind} は変換キー+JKLi とかで使う時が良いよ。

178:名無しさん@お腹いっぱい。
17/10/06 12:38:18.47 TXUF7LvYa.net
左クリックでsetkeydelayを効かせるにはどう書いたらいいんですか?
3パターンともディレイがききません。
setkeydelay,400
send,{LButton 4}
send,{LButton}{LButton}{LButton}{LButton}
Click,Left 4
return

179:名無しさん@お腹いっぱい。
17/10/06 12:46:51.83 PVKvJFle0.net
SetMouseDelay

180:名無しさん@お腹いっぱい。
17/10/06 12:59:37.03 TXUF7LvYa.net
>>174
ディレイできるようになりました。
ありがとうございます。

181:名無しさん@お腹いっぱい。
17/10/06 22:23:31.17 qJK6Bjjm0.net
>>172
Ctrl+通常キーの長押しは、ほぼこれでOKのようです。
同時押し時のすり抜けはまだ解決してませんが
今のところはキーの切り替え時に同時押しにならないようにすれば、
なんとかイケてます(^^♪

182:名無しさん@お腹いっぱい。
17/10/08 06:34:31.46 QHNb58xD0.net
HHKBで単独のDelキーがほしいのでバッククォートに割り当てたんだけど
バッククォート自体の入力をCtrl+バッククォートでSendしたけどうまく出来ません。
対処方法を教えてください

183:名無しさん@お腹いっぱい。
17/10/08 07:05:56.35 PU2F6qYD0.net
質問するならまず自分が書いたスクリプトを貼るのが筋

184:名無しさん@お腹いっぱい。
17/10/08 08:08:29.49 QHNb58xD0.net
>>178
`::Send,{Blind}{Delete}←バッククォートをDelキーに割り当てはOK
^`::Send,{Blind}`←Ctrl+バッククォートでバッククォート入力がうまく


185:いかない



186:名無しさん@お腹いっぱい。
17/10/08 08:17:56.19 PU2F6qYD0.net
>>179
仮想キーコード{vkC0}を使えば?

187:名無しさん@お腹いっぱい。
17/10/08 08:19:10.59 PU2F6qYD0.net
てかその使い方なら{Blind}は付けたらダメでしょ

188:名無しさん@お腹いっぱい。
17/10/08 08:22:33.90 TwLxa7sA0.net
`はエスケープ文字
wikiの仕様のとこ読んどいで
原因追求せずいきなり対処法教えてってのもなんだかな

189:名無しさん@お腹いっぱい。
17/10/08 10:03:11.28 QHNb58xD0.net
>>182
^`::Send,``とかでしょうか?いろいろ試したけどうまくいかない、、、

190:名無しさん@お腹いっぱい。
17/10/08 10:13:23.44 cTqdANU50.net
あとは >5のQ4

191:名無しさん@お腹いっぱい。
17/10/08 11:10:37.98 QHNb58xD0.net
#UseHookを定義してるので$は不要だと思う

192:名無しさん@お腹いっぱい。
17/10/08 18:29:50.95 PU2F6qYD0.net
vkC0使えと言ってるのになんで人の言うこと聞かないんだ?

193:名無しさん@お腹いっぱい。
17/10/08 19:21:06.25 QHNb58xD0.net
>>186
^`::Send,{vkC0}とかでしょうか?もちろん試したけどダメでしたよ

194:名無しさん@お腹いっぱい。
17/10/08 19:28:07.35 CPS4vhgt0.net
>>187
出力がダメなのか、入力がダメなのかを実験して

195:名無しさん@お腹いっぱい。
17/10/08 19:39:59.07 jtfbjOQf0.net
>>187
お前さあ、ここエスパーすれじゃねえんだから「もちろん試した」とか他人が分かるわけねえだろ
ろくに検証してないくせに上から目線になってんじゃねえよ

196:名無しさん@お腹いっぱい。
17/10/08 19:44:43.35 QHNb58xD0.net
>>188
入力がダメです。何か手立てはありますか?

197:名無しさん@お腹いっぱい。
17/10/08 19:47:31.10 Hhhcm4fC0.net
>>190
入力を仮想キーコードにすりゃいいじゃん
思考力停止してんのか?

198:名無しさん@お腹いっぱい。
17/10/08 20:25:27.98 QHNb58xD0.net
>>191
^{vkC0}::Send,{vkC0}か?実行エラー発生だわw

199:名無しさん@お腹いっぱい。
17/10/08 20:26:12.98 Hhhcm4fC0.net
>>192
入力の書き方が間違ってる
もっとちゃんと調べろ

200:名無しさん@お腹いっぱい。
17/10/08 20:30:32.94 mvXpExRv0.net
面白すぎるぞw
これ延々と続けるの?

201:名無しさん@お腹いっぱい。
17/10/08 20:46:24.13 QHNb58xD0.net
>>193
^vkC0::Send,{vkC0}か?これもダメだわ

202:名無しさん@お腹いっぱい。
17/10/08 20:52:54.09 mvXpExRv0.net
お前わざとやってるだろw

203:名無しさん@お腹いっぱい。
17/10/08 21:00:16.02 DDBFFTha0.net
>>195
なら君のキーボードが特殊で何か別のキーコードが発行されてんじゃね
#InstallKeybdHookでキーコード調べな

204:名無しさん@お腹いっぱい。
17/10/08 21:38:05.05 CPS4vhgt0.net
>>195
入力が問題ないかどうかは、
MsgBox,OK
とか出してみれば良い。
出力が問題ないかどうかは、
^a::
とかの入力で表示できるかどうか試せば良い。

205:名無しさん@お腹いっぱい。
17/10/08 21:58:28.07 K4/7+oooM.net
うちでは$付けて>183で出力できてるけどな
日本語キーボードだから実際に押すキーはshift+ctrl+@だけど

206:名無しさん@お腹いっぱい。
17/10/09 00:09:43.90 EuzlchIz0.net
エスパーになりたいなあ

207:名無しさん@お腹いっぱい。
17/10/09 00:46:03.79 l1fzjuhd0.net
Ctrlとバッククォートの同時押しをKeymillで見たら
VK_OEM3とVK_OEM4の二つの仮想キーが使われてるみたいなので
その値でSendしたら出来ました(^^♪
^vkF3::Send,``
^vkF4:Send,``

208:名無しさん@お腹いっぱい。
17/10/09 00:54:57.08 r2rCO5Lw0.net
散々アドバイス貰っておいて礼の一言も無し
こういう奴って他人を利用することしか考えてないんだろうな

209:名無しさん@お腹いっぱい。
17/10/09 01:29:35.12 ylAweGgd0.net
最近質問初回からストレートに「教えて」って言い方する人いて
地味に気になるわ

210:名無しさん@お腹いっぱい。
17/10/09 05:41:17.13 rf1NTRhp0.net
教えて!goo

211:名無しさん@お腹いっぱい。
17/10/09 11:57:03.87 HTLieya10.net
以下のスクリプトが急に効かなくなった
;━現在日時をスタンプする
^Tab::
FormatTime, TimeString,,yyyy_MMdd_HHmm
Clipboard = %TimeString%
Send, +{Insert}
Sleep, 200
clipboard =
return
PCの再起動しても直らず
単独のahkファイルにコピーで動作OK (他のコードを除外して)
元のファイルの別のコードを一つづつ削除していき
下記のスクリプトを削除で動作OK
;━スクリプトの自動リロード
#IfWinActive, ahk_class TextEditorWindowW166
~^s::
ScriptName := Script
IfWinActive, %ScriptName%
{
Reload
}
return

212:名無しさん@お腹いっぱい。
17/10/09 11:57:38.06 HTLieya10.net
つづき
削除前の無編集バックアップをそのまま上書きしてみる(動作しなかった時の状態のファイル)
何故か動作OK。その後ahkファイルを再起動するが動作せず
再度、スクリプトの自動リロードのコードを削除しリロードで動作OK
何か考えられる原因てあります?
この2つのコードが相性悪いようなのですが何かおかしいところはありますか?
エディタはサクラエディタを使用しています
スクリプトの自動リロードのスクリプト自体の方は問題無く動きます
自動リロードのスクリプトがある他のファイルでは問題は全く無いです
元々動作していましたが気付いたら動作しなくなってしまいました

213:名無しさん@お腹いっぱい。
17/10/09 12:16:33.49 HTLieya10.net
連投ですみません
スクリプトの順番を入れ替えたら問題無く動作するようになりました
う~ん でも何故かはわからないです
動作OK
①現在日時をスタンプする
②スクリプトの自動リロード
③その他
動作せず
①スクリプトの自動リロード
②現在日時をスタンプする
③その他

214:名無しさん@お腹いっぱい。
17/10/09 12:25:24.39 KhNcOqwe0.net
はやく教えろ

215:名無しさん@お腹いっぱい。
17/10/09 12:45:44.05 rf1NTRhp0.net
教えました。

216:名無しさん@お腹いっぱい。
17/10/09 12:50:33.29 NXVnt0i+0.net
#If閉じてないだけとか

217:名無しさん@お腹いっぱい。
17/10/09 13:18:13.91 HTLieya10.net
>>210
ありがとうございました
まさにその通りでした
いつの間にか#IfWinActiveを消してしまっていたようです
こんな初歩的なミスに気づかないとは...恥ずかしい

218:名無しさん@お腹いっぱい。
17/10/10 02:32:14.41 EmIG0yKf0.net
controlsend,について質問があります
たとえば以下の記述でwindows標準のメモ帳なら動きます
ControlSend, , test, ahk_class Notepad
ただこの記述では動かないアプリが結構ありますが、そのアプリでも成功したりしなかったりの条件があります
testをControlSendするアプリケーションのウィンドウが前面にあり、アクティブ状態なら成功しますがウィンドウが最小化状態だと失敗します
なのでwinactivateで失敗するアプリのウィンドウをアクティブ化してからcontrolsendしていますが
失敗するアプリでもwinactivateなし、最小化状態でcontrolsendすることってできないもんでしょうか

219:名無しさん@お腹いっぱい。
17/10/10 08:00:37.48 fQ70ranb0.net
その質問過去に何度も見てるけど解決したところは見たことない気がする
ただその質問する人ってほぼもれなくctrl空欄にしてるんだよね
まずは送りたいctrl特定してやってみて、できればハンドル指定で
バックグラウンド時にはcontrolフォーカス取れなくなるようなアプリなら効果あるかもしれないし
そこきちんと指定してやると結構精度上がるよ

220:名無しさん@お腹いっぱい。
17/10/11 11:38:11.27 eCPj5mWL0.net
Process, Priorityで、AutoHotkey自身をAboveNormalに変更しようとしたのですが、
出来ないようです
でも、タスクマネージャーで手動では変更できます。 なぜでしょうか?
出来ないのですか? 自分で自分は変更できないのかな

221:名無しさん@お腹いっぱい。
17/10/11 11:55:15.44 eCPj5mWL0.net
管理者権限でもやってみましたが変わりません

222:名無しさん@お腹いっぱい。
17/10/11 17:53:01.10 FW7ud3JO0.net
SetBatchLines, -1にして、数千行のバッチ処理をしている方って居ます?
最近AHKをアップデートしたんですけど、SetBatchLines, -1にしても昔の様に失敗しなくなったみたいなんです
もしかして修正でもされたのかな

223:名無しさん@お腹いっぱい。
17/10/11 18:16:15.05 MfAdhfs40.net
>>214
問題のスクリプトと環境は最低限書きましょう
そうしなければ何が間違っているのか誰にも分かりません

#Persistent
Process, Priority,, High
MsgBox % ErrorLevel ? "成功" : "失敗"
ESC::
ExitApp

224:214
17/10/11 21:21:43.67 eCPj5mWL0.net
>>217
失礼しました。私のとんだ勘違いでした。 私のスクリプトは
Process, priority, ahk_exe AutoHotkey.exe, AboveNormal
としていました
ahk_exeを外したら出来ました

225:名無しさん@お腹いっぱい。
17/10/12 01:02:36.24 9+/edpnH0.net
>>213
その方法でためしたところ一応キーはsendできていましたがショートカットは動きませんでした
アプリ側の問題みたいです ありがとうございました

226:名無しさん@お腹いっぱい。
17/10/12 12:40:14.52 fl4Aa2dU0.net
すみません
エクスプローラで選択しているファイルをあらかじめ指定したプログラムで起動したいのですが、
選択しているファイルのパスを取得するにはどうすればよいでしょうか?

227:名無しさん@お腹いっぱい。
17/10/12 13:48:00.68 22LCJS230.net
ctrl+cでクリップボード参照すればいいんじゃない?

228:名無しさん@お腹いっぱい。
17/10/12 14:30:20.01 WOPpKOf60.net
目的から考えると、Windowsの機能としてある右クリックメニューの「プログラムから開く」とか「送る」で出来るようにしておいて、
それをAutoHotkeyでキーを送って自動化すれば良いような。

229:名無しさん@お腹いっぱい。
17/10/12 15:31:51.36 gbYEcDhtM.net
昔ここでcomだかアクティブXだかでエクスプローラからファイル情取得するコードで盛り上がってた記憶あるけど
OSバージョンアップのたびにエクスプローラも様変わりしてるから今でも使えるかはわからんね
そもそも質問者の環境書いてないし
汎用で使いたいならクリップボードからパス拾うのが無難かと

230:名無しさん@お腹いっぱい。
17/10/12 18:16:00.48 sKWnufrn0.net
Excelの検索フォームのテキストを取得したいんですがうまくいきません。
Send, ^f
WinWaitActive, ahk_class bosa_sdm_XL9,,5
WinGet, OutputVar, ID
ControlGetText, text, ahk_id %OutputVar%
MsgBox, The text is:`n%text%
これで起動させるとtextがnullになってしまいます。
どなたかお助けを

231:220
17/10/12 18:30:17.45 fl4Aa2dU0.net
220です
クリップボード経由で思惑通りの動作できました
ありがとうございます

232:名無しさん@お腹いっぱい。
17/10/12 22:33:41.59 hFLP6ZS00.net
>>224
ControlGetText, text, , ahk_id %OutputVar%
これだとわざわざID取得した意味あんまりないけど
検索窓のハンドルではなくEditBOXハンドルを取得したい場合は WinGetではなくControlGetを使う
その場合もControlGetTextでの指定はControlではなくWinTitleとして指定する
URLリンク(ahkwiki.net)

233:名無しさん@お腹いっぱい。
17/10/12 23:11:28.22 TjO6Vz8k0.net
スクロールバーのShift+左クリックの動作を中クリックで実現したいんですが、
アドバイス頂けないでしょうか。

234:名無しさん@お腹いっぱい。
17/10/12 23:36:21.69 WOPpKOf60.net
>>227
その機能、今知ったわ。
今まで知らなかったWindowsの操作かと思ったけど、Live5chの機能なのかな。

235:名無しさん@お腹いっぱい。
17/10/12 23:43:42.76 hFLP6ZS00.net
その機能とやらは MButton:: +LButton でできる機能とは違うのかえ?
OSバージョンによって挙動違うかもしらんから正しく再現できてるかもわからんが
win8ではおなじ挙動になってるようだが

236:227
17/10/13 01:10:48.45 3xeDM7QO0.net
>>228
一部効かないのもあるけど、割と昔からあるっぽいWindows標準の操作みたい。
俺も最近知りました。
>>229
確かに、MButton:: +LButtonで行けますね。
何か変に難しく考えちゃってたみたいです。
ありがとうございます!

237:名無しさん@お腹いっぱい。
17/10/13 08:14:19.11 3Z5Ik+Fw0.net
>>230
それは、スクロールバーの余白


238:部分のShift+クリックという機能の方なのかな?(いきなりその場所に移動) 最初に試したのが、Live5chでスクロールバーをShift+ドラッグして、Shiftは押したまま維持、 Shiftを離すと、スクロール前の位置に自動的に戻ったから、Windowsにこんな機能があったのかと 思って他のソフトで試すと出来なかったからさっきの書き込みをした。



239:227
17/10/13 08:59:11.07 3xeDM7QO0.net
>>231
いきなりその場所に移動する機能のことですね。
Shift+ドラッグでShift離したら元の位置に戻るというのは見たこと無いですね。

240:名無しさん@お腹いっぱい。
17/10/13 09:10:31.30 Kmc31x970.net
224です。
>>226
回答ありがとうございます。
しかし、依然としてtextの値はnullのままです。
Send, ^f
WinWaitActive, ahk_class bosa_sdm_XL9,,5
ControlGet, controlHWND, Hwnd,,, 検索と置換
ControlGetText, text, ahk_id %controlHWND%, 検索と置換
MsgBox, The text is:`n%text%
このように修正しましたがダメでした。他にも
ControlGetText, text,, A
としてみたりしましたがうまくいきません。
ちょっと調べてみたところ
URLリンク(so-zou.jp)
に「なお、このコマンドで取得できるのはWindow Spyの[Control Under Mouse Position]のTextと同じであり、これで取得できない情報はこのコマンドでも取得できません。」と記載されていたのでこれが原因なのかなと思いました。
長文失礼しました。

241:名無しさん@お腹いっぱい。
17/10/13 13:27:09.12 trCb60PR0.net
>>233
>226の後半にも書いたがcontrolHWNDはControlではなくWinTitleとして指定する
ControlGetText, text, ,ahk_id %controlHWND%
古くてすまんがうちのExcel2007ではAU3_Spy.exeで情報取れてるよ
最新のExcelは持ってないのでわからないが
URLリンク(i.imgur.com)

242:名無しさん@お腹いっぱい。
17/10/13 14:39:55.15 Kmc31x970.net
233です。
>>226
なるほどーーーーーーーーーーーーーーー
完全に私が勘違いしてました。質問自体が正しくありませんでした。
下記画像の「大文字と小文字を区別する」の文字列を取得するにはどうしたらよいですか?
URLリンク(imgur.com)

243:名無しさん@お腹いっぱい。
17/10/13 18:05:09.37 xSVAQVol0.net
テンプレにあるACC.ahkをつかうと取れることは取れる

244:名無しさん@お腹いっぱい。
17/10/13 19:20:26.57 1yuJh+l1M.net
後出しすぎてワロタ

245:名無しさん@お腹いっぱい。
17/10/13 21:29:13.62 sASp439J0.net
これを後出しって言うか?
自分が勘違いしてたのが分かったから質問し直しただけでしょ

246:名無しさん@お腹いっぱい。
17/10/13 22:33:16.76 trCb60PR0.net
解答してた身として言わせてもらうがエスパー要求度高すぎやでw
オプション表示の有無についてはままある勘違いだけど
あの質問内容とコードからフォーカス行ってないコントロールの情報を取得しようとしてるとはまず気づけないっす
つか今回の教訓は下手な説明よりSS一発ってことですな

247:名無しさん@お腹いっぱい。
17/10/14 20:58:48.61 TUhxuyu80.net
Windows 10でMouseGestureLで管理者権限のアプリ操作する正しいやり方ってなに?。。。
AutoHotKey.exeを管理者権限で実行させる
→スタートアップで起動できなくなる
MouseGestureLでタスクスケジューラでスタートアップさせる
→設定反映後に管理者権限のアプリが操作できなくなる
UAC下げるしかないの?うまくやれている人は教えてくれ

248:名無しさん@お腹いっぱい。
17/10/14 22:39:53.23 zq2sRIVJ0.net
keyhac >>>>>>>ahk

249:名無しさん@お腹いっぱい。
17/10/15 00:25:01.54 kczcI/Ax0.net
guiのボタンのテキストを押す度にplayとかpauseとかに替えたいんですけど
これって出来ますか?

250:名無しさん@お腹いっぱい。
17/10/15 02:35:03.28 TFGCjPn+0.net
242ですが
guicontrolで出来ました

251:名無しさん@お腹いっぱい。
17/10/15 07:29:44.49 nQ2z0aEU0.net
>>240
MouseGestureLは
タスクスケジューラ>該当タスクのプロパティ>


252:全般タブ>「最上位の特権で実行する」にチェック



253:名無しさん@お腹いっぱい。
17/10/15 17:15:52.69 Ug0/OrZC0.net
keyhac >>>>>>>>>>>>>>>>>>ahk

254:名無しさん@お腹いっぱい。
17/10/15 18:39:01.48 jZaJe0Jda.net
Keyhac
 ・キーボード操作系しかコントロールできない     ←AutoHotkeyとはユーザー層が異なる
 ・設定ファイルはPython                   ←多少は羨ましい, 複雑な処理をする場合に処理速度が遅そう
 ・一応、Macにも対応
 ・Win版はVisual Studio 2015 ランタイム必須       ←糞
 ・アプリケーションデータディレクトリを使う       ←糞
 ・配布用の実行ファイルを作成できない
 ・環境のHDD容量が16MBくらい必要(AutoHotkeyの倍)

>>241,245
Keyhacスレ作ってそちらでヤレ

255:名無しさん@お腹いっぱい。
17/10/15 18:54:34.65 Ug0/OrZC0.net
キー押しっぱなし病・ホットキーすり抜け病対策の研究
URLリンク(did2memo.net)

256:名無しさん@お腹いっぱい。
17/10/16 02:40:41.03 wsUgyV9w0.net
>>244
それになってるんだけど何かの拍子で管理者権限のツールが動かなくなる。Windows 10 Insider Previewだから何か変わっちゃったのか?前はいけたのか、最近Windows 10にしたからわからん

257:名無しさん@お腹いっぱい。
17/10/16 04:07:50.47 tduCt/4y0.net
MGLってAHK_LのインストーラのオプションからUI Accessを有効にしても効かないの?

258:名無しさん@お腹いっぱい。
17/10/16 04:13:04.63 RJWuaMVg0.net
>>248
なんでInsider Previewなんか使ってんの?

259:名無しさん@お腹いっぱい。
17/10/18 01:07:39.70 BXsLEC/o0.net
UpDownのRangeですが、小数点以下の数値は出来ませんか。
以下の様にしても、5から10までの5段階になってしまいます。
Gui, res:Add, UpDown, Range5.0-10.0
よろしくおねがいすます。

260:名無しさん@お腹いっぱい。
17/10/18 07:17:16.46 ycPUavpC0.net
50-100にしてgの中で割って再表示

261:名無しさん@お腹いっぱい。
17/10/18 11:46:51.26 BXsLEC/o0.net
サブラベルで処理するのですね。
やってみます、有難うございました。

262:名無しさん@お腹いっぱい。
17/10/18 15:45:22.45 000xPmmi0.net
続けて質問失礼します。
If MyVar Not Contains a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,^,\,@,[,],:,/,*
上記処理をする時にカンマとセミコロンを含めたいのですが、上手くいきません。
よろしくおねがいします。

263:名無しさん@お腹いっぱい。
17/10/18 18:37:36.90 000xPmmi0.net
お騒がせしましたが、これで対応できました。
If MyVar is Number

264:名無しさん@お腹いっぱい。
17/10/21 10:48:43.67 ib1iSRB60.net
既出かと思いますが、見つけられませんでした。
同じ状況の方いらっしゃるかと思うのですが、対処をご教示賜りたく。
よろしくお願いいたします。
windows10 pro 64bit
thunderbird 52.4 32bit
ロジクールM510
WheelAccel.ahkの加速は"0"でしてません。
WheelAccel.ahkにて、thunderbirdの全てのペインにおいて
thunderbirdをアクティブな状態でスクロールすると、ホイール1ノッチに対して一気に何行もスクロールしてしまいます。
非アクティブな状態では、通常(希望通り)の動きになります。
互換スクロールに指定すると、ホイールが効かなくなってしまいます。
thunderbirdでは一切機能させなくてもいいのですが、どうしたらいいでしょうか。。

265:名無しさん@お腹いっぱい。
17/10/21 11:07:15.17 zu1VgrM50.net
>>256
ahkスクリプト全終了させた状態ではどうなん?
thunderbird使ってないからわからんけど多分↓このあたりの予感
トラックボール コロコロ(((○ Part125©2ch.net
スレリンク(hard板:537番)-538

266:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 10:54:03.79 Dcuxbaqr0VOTE.net
ギャー
send,{shiftup} のことを今までぜーんぶ{shift up}と書いていたー
道理でへんな動きしてたんだ…
以上ですご清澄ありがとうございました

267:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 12:00:06.03 4CdFLK3a0VOTE.net
>>257
ありがとうございます。
WheelAccel.ahkを走らせていないときは、通常の動きをします。
スームーズスクロールはoffにしてましたが、onでも変わりません。
(´・ω・`)

268:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 14:32:51.29 L96ui5KXrVOTE.net
>>258
?
それで正常に動いてるなら別にそのままでも良いかも知れないが
盛大に誤解してそう

269:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 19:36:09.31 Dcuxbaqr0VOTE.net
>>260
あれれ、ウィキ見直したら確かに混在してる…表組みのほうはスペースなしで例示されてて、コード用例ではスペース入ってますね
でも自分の場合、今まで不要なShift押下げが発生してた(どうやらShiftとUpとが発生していた?)のがスペースなくすことによってスッキリ根絶されたので、ううむ謎です

270:名無しさん@お腹いっぱい。
17/10/22 20:33:35.27 L96ui5KXr.net
>>261
つ公式Help

271:名無しさん@お腹いっぱい。
17/10/22 23:00:48.87 h+7LhoKm0.net
>>259
失礼しました
うちのwin8 & ロジマウス(M505、M570)では問題が起きないため確認できないのですが
Hotkeysの先頭に以下追加でアクティブ時に機能OFFできると思います
#IfWinActive ahk_exe thunderbird.exe
WheelDown:: Send,{WheelDown}
WheelUp:: Send,{WheelUp}
#IfWinActive

蛇足ですがWheelAccel.ahkでは加速OFFにはできないようなので加速が不要な場合は
ここのWheelScroll.ahkで以下の設定にしてみて下さい
AcclMode = 0
AcclSpeed = 0
URLリンク(www6.atwiki.jp)

272:名無しさん@お腹いっぱい。
17/10/23 20:33:30.32 IGQCHjjB0.net
F8を押したら画面範囲内にあらかじめスクショ&ペイントで抽出しておいたjpg画像と一致する箇所があれば
そこにマウスカーソルが移動して一致箇所の左上でCtrl+右クリをするマクロを作りたいと思い、
始めてコードというものを書いているシロウトです。
F8::CtS()
CtS(){
BlockInput On
ImageSearch, foundX, foundY, 1266, 584, 1904, 856, *50 \Users\HK\Desktop\pics\alc.jpg
if ErrorLevel = 0
SendInput, {Click, %foundX%, %foundY%, Left, 1}
  Else If ErrorLevel = 1
MsgBox Icon could not be found on the screen.
If ErrorLevel = 2
MsgBox Could not conduct the search.
  BlockInput Off
}

上記を実行したところ(このときエラーはありません)
ErrorLevel = 2 の結果が返ってきます。
考えられる要因を教えてくださるエスパーの方、いらっしゃいましたら。。。(;´Д`)

273:名無しさん@お腹いっぱい。
17/10/23 20:44:49.90 oxsVTEnZ0.net
>>264
全角スペース

274:名無しさん@お腹いっぱい。
17/10/23 20:47:54.03 WCeYnLa+0.net
>>265
>>264の書き込みではつかっちゃいましたが
全角スペースは使用してないと思います(><;)

275:名無しさん@お腹いっぱい。
17/10/23 21:08:58.83 oxsVTEnZ0.net
>>266
画像ファイルをフルパス


276:指定すれば



277:名無しさん@お腹いっぱい。
17/10/23 21:14:49.38 IGQCHjjB0.net
\Users\HK\Desktop\pics\alc.jpg

C:\Users\HK\Desktop\pics\alc.jpg
のフルパス指定にしましたが同じでした><;

278:名無しさん@お腹いっぱい。
17/10/23 21:17:38.32 vqubHTur0.net
>>264=266
デスクトップスクショの場合、自分は劣化の無いBMPで保存してそれ使ってたな
一度BMPで試してみては?(PNGも使えるようだけど自分は試したことない)

279:名無しさん@お腹いっぱい。
17/10/23 21:19:32.28 vqubHTur0.net
あ、リロードしてなかったorz
解決したみたいね>>269は忘れて良いよ

280:名無しさん@お腹いっぱい。
17/10/23 21:22:53.81 IGQCHjjB0.net
>>269
BMPで保存したところ
できました!!!!!!!
感動です!
皆さんありがとうございました

281:名無しさん@お腹いっぱい。
17/10/25 17:03:51.19 ypp7UERA0.net
>>263
ご返信賜り誠にありがとうございます。
なんだと言われてしまいそうですが、setpointにスムーズスクロールがあり
それをoffにすることで、何十ノッチも発生することはなくなりましたが、挙動がおかしかったため
setpointをアンインストールし、無事解決しました。
一部機能を使ってましたが、autohotkeyでまかなえますし!
firefox quantumのタブスイッチのため、autohotkeyを導入しましたが
ztopをやめて、一本化出来ました。
ありがとうございました。

282:名無しさん@お腹いっぱい。
17/10/26 00:31:46.15 X6UNjp0Ir.net
var =
(
<tag1 value1="0.0" value2="1.0">
<tag2>1.0</tag2>
</tag1>
<tag1 value1="2.0" value2="3.0">
<tag2>2.0</tag2>
</tag1>
) ;文の一番最後に改行が1個入ります
;これが連続するUTF-8(BOMなし)/改行LFの440KBの文書test.xmlを
;#MaxMem 1000 ;#MaxMemありなしで変化無し
FileEncoding, UTF-8-RAW
FileRead, var, *t %A_ScriptDir%\test.xml ;440KB
RegExMatch(var, "s)^<(tag1).+/\1>\n", $)
FileAppend, %$%, *%A_ScriptDir%\output1.xml ;test.xmlとまったく同じものになります(1)
;これを以下のようにするとvar変数を72.0KBに削らないとマッチしませんでした

283:名無しさん@お腹いっぱい。
17/10/26 00:32:21.09 X6UNjp0Ir.net
Loop
{
if(!RegExMatch(var, "s)(?:^<(tag1).+?>\n<(tag2)>\d+(?:\.\d+)?</\2>\n</\1>\n)+", $)) {
var := RegExReplace(var, "s)(^.+)(?:<tag1.+$)", "$1") ;マッチするまで末尾を削る
continue
}else {
MsgBox, %A_Index%周目でマッチした, ;4430周目でした
FileAppend, %var%, *%A_ScriptDir%\output2.xml ;72.0KB(2)
break
}
}
MsgBox, おわり
(1)の$変数には440KB代入できるのに
(2)ではvar変数が72.0KBになるまでマッチしないのはなぜでしょうか
#MaxMem 1000 では結果は同じでした
Loopの手前にVarSetCapacity(var, 1000000)を入れたらスクリプトがフリーズしました
環境古くてすいません v1.1.26.01 u32版 win7です

284:名無しさん@お腹いっぱい。
17/10/27 20:04:09.15 EJJiT1eZ0.net
AHKのエディタですが
Notepad++
サクラエディタ
秀丸エディタ
EmEditor
sublime
などがあるようですが、これらの中で、ラベルやホットキーへジャンプ出来るものは
どれですか
SciTEではラベル名を選択してF12を押すとラベルの個所へジャンプしてくれるし
ホットキーのリストも表示してくれるのですが、同じ機能を持っているエディタは
どれでしょうか
ちなみに、秀丸ではなさそうでした

285:名無しさん@お腹いっぱい。
17/10/27 21:59:52.86 rnKjM+z20.net
sakura 秀丸 その他のブラウザにタグジャンプ機能があるけど・・・
c言語専用?

286:名無しさん@お腹いっぱい。
17/10/28 01:37:13.87 3WINCwSX0.net
AHKはメジャー言語ではないので大抵のエディタではデフォルト対応はしていないと思う
AHK用のプラグインなりカスタマイズなりが必要になるのでは
ちなみに秀丸の場合はAHKシンタックスの強調表示定義ファイルを作ってやると
それを元にTagsファイル生成や単語補完などが可能になる
Tagsファイルを作っておくことでダイレクトタグジャンブで飛べるようになる
他のエディタも大抵はctags使えるみたいだし ctags形式のタグファイル吐き出せるスクリプトさえ書けば
お好みのエディタでダイレクトタグジャンブできるようになると思われ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch