TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
【ニコ風】実況ソフト Nicort Part5【実況板対応】
Twitterクライアント[Web]Tabtter 3ツイート目
【Grep】複数ファイル文字列検索ソフト【置換】
Twitterクライアント ツイタマ 3ツイート目
★soft
Tor (トーア) - The Onion Router 26
Last Pass(ラストパス) part1
V2Cをいじってみた
ffmpegならこちらへ 4
【フリーソフト】動画編集

AutoHotkey スレッド part27


1 :2019/04/20 〜 最終レス :2020/02/20
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

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

■前スレ
AutoHotkey スレッド part26
https://egg.2ch.sc/test/read.cgi/software/1524647289/

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


2 :
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、
その場合はスクリプトの修正が必用です。

旧版のAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →http://ahkscript.org/docs/AHKL_Features.htm
 →http://ahkwiki.net/Addition_L

※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方が最新AHK対応版(MouseGestureL.ahk)を配布しているのでそれを
利用するのもありです。
http://hp.vector.co.jp/authors/VA018351/mglahk.html
http://code.google.com/p/mousegesturel/

※ACC.ahk(旧版用)とCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。
 http://ux.getuploader.com/autohotkeyl/download/24/ACC%2BCOM.zip
※Unicode版のACC.ahkは下記(AccInfoViewer.ahk付き)またはフォーラムから入手してください。
 http://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip

■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


3 :
■過去スレ
Part1 http://pc7.2ch.sc/test/read.cgi/software/1098531338/
Part2 http://pc7.2ch.sc/test/read.cgi/software/1129836713/
Part3 http://pc11.2ch.sc/test/read.cgi/software/1157043396/
Part4 http://pc11.2ch.sc/test/read.cgi/software/1184556627/
Part5 http://pc11.2ch.sc/test/read.cgi/software/1201502896/
Part6 http://pc11.2ch.sc/test/read.cgi/software/1219130051/
Part7 http://pc12.2ch.sc/test/read.cgi/software/1230694774/
Part8 http://pc12.2ch.sc/test/read.cgi/software/1243005818/
Part9 http://pc12.2ch.sc/test/read.cgi/software/1253888736/
Part10 http://pc12.2ch.sc/test/read.cgi/software/1265518996/
Part11 http://hibari.2ch.sc/test/read.cgi/software/1280482227/
Part12 http://hibari.2ch.sc/test/read.cgi/software/1296446228/
Part13 http://anago.2ch.sc/test/read.cgi/software/1317156599/
Part14 http://anago.2ch.sc/test/read.cgi/software/1333372506/
Part15 http://anago.2ch.sc/test/read.cgi/software/1349735581/
Part16 http://anago.2ch.sc/test/read.cgi/software/1367725658/
Part17 http://anago.2ch.sc/test/read.cgi/software/1383384464/
Part18 http://anago.2ch.sc/test/read.cgi/software/1398655195/
Part19 http://anago.2ch.sc/test/read.cgi/software/1411360229/
Part20 http://anago.2ch.sc/test/read.cgi/software/1422427426/
Part21 http://anago.2ch.sc/test/read.cgi/software/1437910497/
Part22 http://potato.2ch.sc/test/read.cgi/software/1452881399/
Part23 http://potato.2ch.sc/test/read.cgi/software/1470936221/
Part24 http://egg.2ch.sc/test/read.cgi/software/1487149472/
Part25 https://egg.2ch.sc/test/read.cgi/software/1505357560/

4 :
以下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を起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。

5 :
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 :
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 :
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pages/17.html の「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に各種エディタの定義ファイル及びキーワード一覧あり。( http://ahkwiki.net/Tools )

Q3:GUI作るのめんどくせ〜〜
A3:海外の有志が作ったツールを使うと楽。
 SmartGUI Creator ( http://www.autohotkey.com/board/topic/738-smartgui-creator/ )
 GUI Creator ( http://ahkscript.org/boards/viewtopic.php?f=6&t=303 )

Q4:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
  > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
  > → 実行中、 …:割り込み終了待ち
  > 元スレッド   →→→→→→……………………………………→→→→
  >                  ★割込                ↑再開
  > 割り込みスレ          →→→→…………→→→→→→END
  >                        ◆割込 ↑再開
  > 更に割り込み                →→→END

8 :
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} にする。

9 :
Q6:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど?
A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。

■回避策
1:管理者として実行
 Autohotkey.exeを右クリックしてプロパティを開き、「互換性」→「管理者としてこのプログラムを実行する」にチェック。
 スクリプトに記載する方法もある( http://www.autohotkey.com/board/topic/94126-ahk-problem-with-uac-and-privileges/ )

2:対策パッチ
 実行ファイルのマニフェスト書き換え、自己署名証明書のインストールが行われる。
 ※AutoHotkey.exeはProgram Files以下に置く必要がある。
 http://www.autohotkey.com/board/topic/70449-enable-interaction-with-administrative-programs/

3:UAC停止 ※注意!! 必ずHIPS機能がある他のセキュリティ対策ソフトを導入してください。
 「コントロールパネル」→「ユーザーアカウント」
 Vista:「ユーザーアカウント制御の有効化または無効化」→ チェックボックスをオフ。
 7/8/8.1:「ユーザーアカウント制御設定の変更」→ スライドバーを一番下に。
 ※Windows 8/8.1では上記に加えレジストリを変更する必要があります。(注意:Windowsストアアプリが実行できなくなる)
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
 「EbableLUA」の値を「0」に変更。

10 :
■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/

11 :
■派生版
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

※テンプレここまで

12 :
下記のスクリプトを作りました
関数fffで、引数としてジャンプの飛び先ラベル名を入力してそこに飛んで行きたいのですが出来ません
出来る方法はありませんか
ラベルが関数内にあれば出来るようですが、関数外のラベル名に飛びたいのです

fff( "labelJ" )
return

fff( la )
{
MsgBox %la%
goto %la%
}

labelJ:
MsgBox Label J!
return

q::ExitApp, 0

13 :
ラベルやめて関数にすればいい

14 :
>>12
Gosub
ttp://ahkwiki.net/Function#.E9.96.A2.E6.95.B0.E5.86.85.E3.81.8B.E3.82.89.E3.81.AEGosub.2FGoto.2FExit

15 :
背景を説明すると、もともと、
fff( la )
{
loop, 100
{
処理
}
}
という関数があるのですが、処理に時間がかかってその間他の処理ができなくなるので、これを分けて、
fff( la )
{
static cnt = 0
labelStart:
{
処理
cnt := cnt+1
if( cnt > 100 )
{
goto %la%
return
}
SetTimer, labelStart, -50
return
return
}
として、途中で他の処理が割り込めるようにしようとしたのです。 そしてこの処理が終わった時にジャンプで
外に飛び出したいのです

16 :
>>14
そうか。 gosubを使えばなんとかなるかもですね

17 :
前スレ989です

$WheelDown::
Send, {WheelDown}

If( GetKeyState( "RButton", "P" ) ) {

Send, ^w
}
Return

$RButton::
Send, {RButton Down}
KeyWait RButton
Send, {RButton Up}
Return

で、「右ボタンを押しながらホイールダウンしたらブラウザのタブを閉じる」
というマウスジェスチャーを作ったのですが
このままだとタブを閉じたあとに{RButton Up}に反応して右クリックメニューが開かれてしまうのをどうにかしたいと思っています

RButton & WheelDown:: Send, ^w
とかだと右ボタンを離すまで{RButton Down}もされなくなるのが困るので別の方法を取りたいのですが…

MouseGesture.ahkのソースは読んでみましたがちょっと長くてすぐには把握できませんでした…

18 :
>>17
これから出かけるので未確認&質問を勘違いしてるかもだけど
~RButton & WheelDown:: Send, ^w
だけで出来ない?

19 :
>>18
勘違いしてるね

20 :
>>17
>>18のだけだと結局右クリメニューが表示されるので
右クリ離してメニュー表示された直後にESCでメニューを即キャンセルすればいいんじゃね

~RButton & WheelDown::
Send, ^w
KeyWait, RButton
Send, {ESC}
Return

21 :
補足
場合によってはSend,{ESC}の前にsleep遅延入れた方がいいかも

22 :
>>17
>右ボタンを離すまで{RButton Down}もされなくなるのが困る

ジェスチャを聞かせたいアプリ(ウィンドウ)とそうでないものを#IfWinActiveで分ける
前者の中の右ボタンを押しはGetKeyStateなりKeyWaitなりで監視して自分で面倒を見る
簡単にやりたいならこれくらいじゃないかね

MGLが難解すぎるというなら簡易マウスジェスチャのMoGe.ahkあたりを見てみたら?
dllcall()使いまくりなのでこれはこれで理解はしんどいが
コメントちゃんと書いてあるので具体的に何やってるかが分かりやすい
https://sites.google.com/site/agkh6mze/strage

23 :
Firefoxを使ってるんですが、他のウィンドウでは効くのですが、Wordとタスクマネージャーのみで効きません。
タスクマネージャーはどうでもいいので、Wordで使えるように修正して下さい。

「ホイールクリックでウィンドウを閉じる」
~MButton up:: ;タイトルバーをホイールクリック = alt + F4
CoordMode,Mouse,Screen
MouseGetPos, x, y, h
SendMessage,0x84,0,% x|y<<16,,ahk_id %h%
WinGetClass, win_class, ahk_id %h%
;chromeが誤作動するのでchrome以外
If((ErrorLevel=2) && WinActive("ahk_id " . h) && (win_class!="Chrome_WidgetWin_1"))
{
Send,!{F4} ;alt + F4
}
return

24 :


25 :
お断りします

26 :
>>23
スクリプトを管理者権限で実行しな
それそのまま試したけどタスクマネージャーでも使えたよ

27 :
>>26
言われた通りにしたら、タスクマネージャーでは効くようになりましたけど、
やっぱりWordでは効かないですね。

28 :
時々効かないソフトある
Chromeも無理

29 :
うちだとOfficeもChromeも>23で取れてるけどなあ
win10 pro 1809 (ビルド17763.437) / Office365 / AHK 1.1.30.03 (管理者じゃない権限で実行)

けど自作関数見直したらoffice用にタイトルバー検出追加してあったんで
(今はその部分なくても動いてるけど)一応上げときます。
https://gist.github.com/eamatt
https://www6.atwiki.jp/eamat/pages/27.html

30 :
MGLは当然判別方法にAHKのものを使っている
条件指定をうまくやればできるものもある

31 :
無変換+カーソル移動を上下左右のホイール回転に割り当てることは可能ですか?

32 :
>>31
可能です

33 :
その心は?

34 :
前スレのタイマーでのすり抜け防止、一番効果あった
理屈がわかればなるほどだわな

35 :
数週間前からWheelをからめたスクリプトが急に動かなくなったりするようになったんだけどみんなはそんなことない?
Xbutton1 & Wheel downで動かすスクリプトがあるんだけどこれが急に動かなくなったりする
そうなったらリロードしてスクリプトを読み直すしかない
Windows10のアップデートのせいかなとか思ったんだけど原因がわからず

36 :
>>35
ないよ

37 :
vk1Dsc07B:: ;無変換
Flag += 1 ;判定用に変数に加算していく
If Flag = 1
{
MsgBox,1回目
Return
}
If Flag = 2
{
MsgBox,2回目

Return
}
〜〜〜〜〜〜〜〜〜〜〜〜〜中略〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
MsgBox,4回目
Flag = ;変数を空にして1回目に戻る
Return

wikiのサンプルコードに、前回このキーを押してから、3秒以内にこのキーの入力がなければ
Flag=1に戻るコードを組み込みたいんですが、どうしたらいいですか?
※のところに下記コードを入れてみたんですけど何が間違っているんでしょうか?

KeyWait,{vk1Dsc07B},T3
If(ErrorLevel=1)
{
Flag =
}
else
{
}
return

38 :
>>37
ツッコミどころ多いんだがとりあえず仮想キーの書き方は今のバージョンだと
vk1D か sc07B のどちらかにしないとwikiのサンプルコードのままではエラー出る
貼るならちゃんと動くコード貼ろうな

で本題の3秒以内に入力がなければって話だけど、最初のIf分岐の前に
SetTimer, Label, -3000
を入れてサブルーチンでFlagを空にすれば良いだけ
-3000は「3秒後に1回実行」の意味ね

これで3秒以内に無変換押せばFlagは2→3→4と増えて、3秒以内に押さなければ次に押した時は1に戻る

39 :
A_PriorHotkey
A_ThisHotkey
A_TimeSincePriorHotkey

この辺組み合わせて適当に判定文をつくる

40 :
>>38
無事望む結果が得られましたありがとうございます
>>39さんのようにキーを指定することも考えていたのですが
こっちの方がシンプルでいいですね

41 :
autohotkey で、ファイルから読み取った16進文字列を
変数に格納するエレガントな方法はないでしょうか。

いまのコードは長すぎて・・・

StringLen _len, aStr
uc := 0
loop,%_len%
{
 StringMid, c, aStr, A_Index, 1
 _code := Asc(c)
 if _code in 48,49,50,51,52,53,54,55,56,57
 {
  uc := uc*16 + _code - Asc("0")
 } else if _code in 65,66,67,68,69,70
 {
  uc := uc*16 + _code - Asc("A") + 10
 } else {
  uc := uc*16 + _code - Asc("a") + 10
 }
}

aStr に入った16進文字列を数値に変換して 変数 uc に格納するコードです。
もっとエレガントな方がいい。

42 :
こういうことではなくて?

aStr := "0x0A"
SetFormat, INTEGER, D
dec := aStr + 0
SetFormat, INTEGER, H
hex := aStr + 0
msgbox,% "aStr=" aStr "`ndec=" dec "`nhex=" hex

43 :
見識のある方いれば…

GetKeyState関数で修飾キー(alt)を検知しようとするとアクティブウィンドウへの入力を食ってしまうようなのですが、なにか良い回避策無いでしょうか?

やりたいこととしては、同一ゲーム(ff14)を2画面起動して同時操作のために1つのキーボードから入力をそれぞれのゲームウィンドウに送りたいのです。
実装内容としては、while無限ループ内で修飾キー+英字キーで該当する組み合わせ(今試しているのだとAlt+j)をgetkeystateで検知してcontrolsendでアクティブでない方のウィンドウにjを送信しています。
困っているのは、このプログラムを起動するとアクティブウィンドウへが修飾キー+英字キーではなく単なる英字キーが入力された時のように挙動することです。(alt+jではなくただのjとして動く)非アクティブウィンドウのもう一つのアプリは意図した通りに動いております。

ちなみにalt+jをほぼ同タイミングで押すとちゃんとアクティブウィンドウがalt+jとして動作しました。結構タイミングはシビアですが。

どなたか思い当たることある方いましたらなんでも良いので教えて下さいm(_ _)m

44 :
>>41
16進数を10進数にするだけの話ならFormat()

45 :
>>42 さん
ありがとうございました。16進数は4桁固定を想定なので、ちょっと追加

aStr := W0x0123W 
SetFormat, INTEGER, D 
dec := aStr + 0 
SetFormat, INTEGER, H
hex := dec + 0 
hex := W0000W . substr(hex,3)
StringRight,hex,hex,4
hex := W0xW . hex
msgbox,% WaStr=W aStr W`ndec=W dec W`nhex=W hex

46 :
先の書き込みを確認される際には、例えば
Word に貼り付けて全選択したのち、
ホームリボンの「文字種の選択」から、半角をクリックしてください。

半角で投稿しようとしたら、2ch.sc に「不正なコードを含む書き込み」として
ブロックされました。

47 :
>>44
Format関数は、Integer値を16進文字列に変換するときに使えそうです。
ありがとうございました。

aVal := 291
sdec := aVal
shex := Format("0x{4:x}", aVal)
msgbox,% "aVal=" aVal "`sdec=" sdec "`shex=" shex

48 :
>>43
自分はDllcall を使ってキー状態を調べています。多分、副作用はない筈。

vKey0 := 164 // 多分、左Alt
vKey1 := 165 // 多分、右Alt
stCurr := DllCall("GetKeyState", "UInt", vkey0) & 128
stCurr :=(DllCall("GetKeyState", "UInt", vkey1) & 128) | stCurr

49 :
>>45
確認してないけど多分それだとhexの入力値は数値じゃなくて文字列になってるで

数値の場合 0x000Aと0xAは記述方法が違うだけで値は同じなのでゼロサプレスする必要はない

50 :
>>48
ありがとうございます😊!
今帰省中でコードが手元にないですが帰ってみたらすぐに試してみますね!

51 :
>>36
となると自分の環境が問題か
どうも

52 :
>>51
今まで問題なかったモノが急に使えなくなったと言うことですか?
windows update以外に何か環境は変えましたか?

自分はwin8.1ですが、1年以上前、AHK使い始めた時からからずっとwheel絡めたスクリプトは全て急に動かなくなります。

スクリプト開始から5分後に使えなくなることもあれば数時間後に使えなくなることもある。

以前ここでこの症状について質問し、もらった回答全て試したり、違うメーカーのマウスとドライバに変えても駄目でした。

海外掲示板見てみても同じ症状の人がいて、色々対策書いてあったけど、効かない人には効かないみたい。

自分は諦めました。

53 :
>>51
あたしもロックなどの復帰後そうなります

Win7 x64 / 1.1.30.03

54 :
最近の話じゃないけど
リダイレクトホイールでホイールが急に遅延して
その間まったくスクロールが効かなくなることはよくあった
そのまましばらく放置してると忘れた頃にアクティブウィンドウがスクロールしまくる
最近はだいぶ頻度は下がった

55 :
>>48
うーん、ダメでした…
メインウィンドウをメモ帳とかにしても同じように修飾キーの入力が食われてしまうのでゲームの方の問題じゃないみたいですね…

osはwindows10ですがバージョンが悪さしてるのでしょうか

56 :
ちなみに今のコードはこんな感じです。

#InstallKeybdHook
#UseHook

SetKeyDelay,10,100
subPid = 22460
Loop
{
stCurr := DllCall("GetKeyState", "UInt", 164) & 128
stCurr2 := DllCall("GetKeyState", "UInt", 74) & 128
If stCurr && stCurr2
{
ControlSend, , j, ahk_pid %subPid%
}
}

57 :
FF14とかネトゲでAHKみたいな外部ツールを使うのは不正行為
別に運営じゃないしFF14もやってないので不正をするなとは言わないけど
不正行為の「やり方」を恥ずかしげもなく人様に聞くのはみっともない
自分で考えて誰にもバレないように使え
それが出来なけりゃ潔く諦めろ

58 :
はぁ〜い、トゥイマッテーンw

59 :
ただの池沼だった

60 :
年寄りは説教が好き

61 :
俺が若い頃はあ〜(以下略

62 :
ゴメ…

63 :
>>55
Win32のGetKeyState関数は静的状態を取得するものなので、
変化を検知して出力する方がよいです。
Notepad.exe を非アクティブウインドウとして、
サクラエディタをアクティブウインドウとしたとき、"j"キーを両方に出力するサンプルです。

#InstallKeybdHook
#UseHook

SetKeyDelay,10,100
Loop
{
Sleep,16
stCurr2 := DllCall("GetKeyState", "UInt", 74) & 128 ; VK_J
If(stCurr2=128 && stLast2= 0)
{
ControlSend, , {j down}, ahk_class Notepad
} else If(stCurr2=0 && stLast2= 128)
{
ControlSend, , {j up}, ahk_class Notepad
}
stLast2 := stCurr2
}

現状、このソフトウェアを持っていないので再現できないのですが、
非アクティブウインドウに Alt-JをControlsend できるならば、
寧ろ、Alt + j をホットキー登録して、Autohotkeyにキーを喰わせたのち、
アクティブウインドウと非アクティブウインドウに Alt-J を Controlsend してはどうでしょうか。

その場合、ループ処理と、GetKeyState関数は不要となります。

64 :
>>56
メイン秀丸 サブメモ帳でsubPidだけ変えて実行してみたが
アクティブウィンドウはちゃんとAlt+Jのショートカット動作したし
subPidの非アクティブウィンドウもちゃんと j が入力されたよ

つかFF14の2画面動作時の挙動は知らんけど
2ウィンドウで両方とも同じ挙動させたいのに非アクティブのほうに Alt 送らなくて大丈夫なの?

「アクティブのAltが食われてる」のではなく j しか送ってないsubPidのほうをメインだと思ってて
「非アクティブにAltが送られてない」状態を「食われてる」と勘違いしてたりしない?

65 :
Pictureコントロールで画像の比率を維持したまま固定の枠内に収める事ってできませんか?
比率を維持するには縦横どちらか片方だけを指定すればいいようなんですが
簡易のビューアのように縦長や横長のいろんな画像をそこに表示したいので
画像によってどちらを固定サイズにするか変わってきちゃうんです
その画像が縦長か横長なのかだけでも判断できれば行けそうなんですがAHKの機能だけでは無理なんでしょうか?

66 :
お二方共ありがとうございますm(__)m
ダメもとで書いてみましたがこんなに反応していただいて感謝感激です。

>>63
>>64
> 非アクティブウインドウに Alt-JをControlsend できるならば
> 非アクティブのほうに Alt 送らなくて大丈夫なの?
ControlSendでAlt送らなくてよいかという話ですが、自分の環境だとうまくいかなかった経緯があって抜いています。
ネットで同じようなQ&Aあって最終的には次の二通りの記述方法でやってみたのですがうまくいかずでした。
ControlSend, , ^v, ahk_pid %subPid%
ControlSend, , {ctrl down}{v}{ctrl up}, ahk_pid %subPid%
一応ゲームの方でキーバインドは変更できるので、サブの方は修飾キー使わない配置でもいいかなぁと思いメインにのみ修飾キーつける形にしてます。

> 寧ろ、Alt + j をホットキー登録して
たしかにそうですね…しかし↑のショートカットコマンドControlSendできない問題が解決しないとちょっと厳しいです。
もちろんメインの方も修飾キー使わないキーバインド配置にすれば可能なのですが、基本的にはメインの1画面だけでプレイしているのがほとんどなのでなるべくそういう時はautohotkeyを使いたくないのです。最終手段としては検討したいですが。

> アクティブウィンドウはちゃんとAlt+Jのショートカット動作したし
すみません書きそびれていましたが、タイミングによってはちゃんとアクティブウィンドウにAlt+jが送信されてました。
ですが確率でいうと成功するのは半分いかないくらいで、どんな時に成功するかの傾向もいまいち判断つきにくい状況です。
こころなしか>>48さんのコードを反映してから成功する確率は増した気がしますが…

> 「非アクティブにAltが送られてない」状態を「食われてる」と勘違いしてたりしない?
一応まったく別のキーの組み合わせでも試しているのでこちらは大丈夫だと思います。

67 :
>>52
原因はよくわからない
2ちゃんみるのにJane つかってるんだけど
image viewerが立ち上がるときにマウスホイールのスクリプトがかなりの確率で動かなくなる
あとXbutton & Lbutton でうごくやつを用意してるけどこれもだめになる

68 :
autohotkey で exe ファイルを作ったとき、
タスクアイコンを右クリックしたときのメニューに
"Suspend hotkeys" と "Pause Script" が表示されないようにしたい。

どなたかご存知でしょうか。

69 :
menu,tray,

70 :
>>69
68じゃないけど、トレイのメニューは無理なのでは?
Menu, Tray, Delete, Suspend Hotkeys
だとエラー吐くんだけど
"Suspend Hotkeys"にしてもダメだった

71 :
>>68
MenuをExitだけにする例
Menu, Tray, NoStandard
Menu, Tray, Add, Exit, Menu_Exit
default項目で他に追加したければAdd, 表示名, Label名

72 :
>>71
ありがd、できますた。

Menu, Tray, NoStandard
Menu, Tray, Add, Exit, Menu_Exit
return

Menu_Exit:
exitapp

a::return
a up::return

73 :
>>35
Win10にしたとかアップデートしたとかで効かなくなるものはある

74 :
ピリオド〜ピリオドに囲まれた範囲を削除したいんですが、
アイデアってありますでしょうか?

英文を書いていて、一文削除したいんです。
カーソルの位置はその文の任意の場所にあります。

75 :
クリップボードに取り込んで、変数に入れてからループ処理かなぁ

ふんわりは思いつくけど条件はめんどくさそう

76 :
カーソルの位置でどうこうするならエディタのマクロでやったほうが楽そう

77 :
ControlGetText
RegExReplace
FileDelete(あるいはバックアップ)
FileAppendでできるんじゃね

78 :
>>75
1文の長さもバラバラですし、正規表現難しいですよね。
と言いますか、「特定範囲を選択」するコマンドがAHKにないような。^aだと範囲が広すぎるし。
ワンプッシュでサクっと消えてほしいんですけど。

>>76
やっぱりエディタのマクロですかね……。

79 :
テキスト編集に特化したエディタならそういうコマンドくらいデフォで入ってそうだけど
あるいはそういうプラグインがありそうな開発環境向けの高機能エディタ使うか

80 :
>78
>1文の長さもバラバラ
何のための正規表現だよw
ましてや英文なら一番簡単パターンだろ
最短マッチ
var := RegExReplace(var, "s`n),[\w\x20'\.\-]*?,", ",,")
最長マッチ
var := RegExReplace(var, "s`n),.+,", ",,")

81 :
英文ならクリック3回くらい押せば1文選択できるだろうし(そのエディタでは出来ない?)
クリック3回のDeleteって簡単にやっちゃダメなん?

82 :
1文じゃなくて段落での選択だったわすまん

83 :
>>80
ありがとうございます。
でも、これってカーソルのある一文だけマッチさせれます?

84 :
>>83
; xxx,yyy,zzz,test,
; xxx,yyy,zzz,test,
; xxx,yyy,zzz,test,

F1::DeleteGroup()

DeleteGroup(String=",", Wait=0.3) {
ClipSaved := ClipboardAll
Clipboard =
Send ^x
ClipWait %Wait%
if (ErrorLevel) {
Send +{Home}^x
ClipWait %Wait%
Forward := Clipboard
if (Pos := InStr(Forward, String,, 0)) {
Clipboard =
Send +{End}^x
ClipWait %Wait%
Clipboard := RegExReplace(Forward Clipboard, String ".+?" String, String String,, 1, Pos)
Send ^v
} else
Send ^z
} else {
Clipboard := RegExReplace(Clipboard, "s)" String ".+?" String, String String,, 1)
Send ^v
}
Clipboard := ClipSaved
}

85 :
>>84
ありがとうございます。
勉強してみます。
やっぱり、Editorのマクロのほうがスマートに書けそうですね。

86 :
.ahkファイルの9割はエディタに関連付けしたほうが扱いやすいと気がついたんだが
インクルードされる専の.ahk以外で名の通った拡張子ってないの?

87 :
>>86
俺はahkファイルをそのままランチャーに登録したりしてるからエディタに関連付けたら使い物にならなくなるわ
その代わり常駐スクリプトなどはトレイアイコンダブルクリックでエディタ起動するようにしてる

88 :
>>86
txt

89 :
ファイラー使ってエディタ起動はEキーでとかだから困ること無いな

90 :
win10で2chMateを使いたくてエミュ導入したのですが
google日本語入力の109A選択で日本語/英語の切り替えがShift+Ctrlと押しづらい
「全角/半角」→認識なし?
「Del」→「.」
ってことでAutoHotkeyを使ってみました。

「半角/全角」を置換元キーにすると不安定。1回置きに指定リマップされてる?
置換先キーにShiftとCtrlの同時押しもうまくいきません

結局、今は無変換キーをShift、変換キーをCtrl に指定
無変換と変換キー同時押しで、Shift+Ctrl「日本語/英語切り替え」にはなりました。

#IfWinActive ahk_exe BlueStacks.exe
vk1C::Shift
vk1D::Ctrl
#IfWinActive

「半角/全角」を押してShift+Ctrl出力で日本語/英語切り替え
ができたら理想なのです、ご指導いただけたら嬉しいです。
ついでにDeleteキー復活もお願いします。

BlueStacks 4.60.20.1002
google日本語入力 109A
2chMate 0.8.10.45/

91 :
ChMateのためだけにBlueStacksは重くない?
まあ好き好きだけど
MEmuならAHKなしwin10側デフォルトのMS IMEでエミュのキーボード制御なしで行けたよ

92 :
>>91
そうなんですか、明日やってみます
ありがとうございます。

93 :
IME.ahk

94 :
>>91
MEmuですけど、google日本語入力と物理キーボードが上手く動かないのと、
ChMateでもカクカク動作になるので、今の所は敬遠します。

なんかかっこ悪いけど、一応AutoHotkeyで念願の様に組めました。

なぜか置換先にShiftとCtrl同時押しができませんが、
無意味なキー(vkF4)を含めた(+^vkF4)で代用ができました。
「半角/全角」(vkF3)を、日本語/英語の切り替え(+^vkF4)にリマップ
使ってなさそうな「カタカナ/ひらがな」(vkF2)も(+^vkF4)にリマップ

AndroidにはDelキーが無い?ので
→の後、BackSpaceでカーソル右側1文字削除を再現しました。


#IfWinActive ahk_exe BlueStacks.exe
vkF3::+^vkF4
vkF2::+^vkF4
Del::
send,{Right}
send,{BS}
return
#IfWinActive

AutoHotkey 1.1.30.03
BlueStacks 4.60.20.1002
google日本語入力 109A
2chMate 0.8.10.45/

95 :
>>94
俺はNOX使ってる
ChMateも動くし全/半キーで日本語オンに出来るしDELキーも使える
BlueStacksは昔一度使ってみて色々糞だったからすぐ消したわ

96 :
>>95
NOXはBlueStacksより嫌な噂が多いからなぁ
まぁ個人情報を使わねれば問題ないのだけど
って
Noxだとgoogle日本語入力109キーボード認識でDelキー使えるの?

97 :
>>96
だから使えると言ってんじゃん
俺はBlueStacksの嫌な噂の方が多く聞くぞ

98 :
>>97
そうなんだ、現状BlueStacksで不満なくなったけど
せっかくなんでNOXも使ってみる

ありがとうございます。スレチ話題ですまんかったです。

99 :
ていか泥の中のgoogle日本語入力を動かすことにこだわってるようだけど
PC側のIMEそのまま使うんじゃダメなの?
MEmuだと(泥の中ではなくエミュ側の)設定からソフトキーボード閉じれるので
わざわざ泥内のIME使う必要ないんだけど

一応 MEmuはブルスタやNOXより軽いと言われてる、怪しさに関しては目くそ鼻くそだが
カクついて遅いのはVT-xやOpenGLが有効になってないか泥のバージョンのせいかも
うちは泥バージョンをデフォルト(5.1)から7.1にしたら安定した

100 :
なんか、目的なしに泥エミュ使ってみたくなった
スレチだけど過疎ってるしありかwww


100〜のスレッドの続きを読む
Firefoxとか使う意義って何なの?
GreenBrowser & MyIE Part 6
【赤ペン先生募集】やましたくんスキルアップ総合
CUEtools 【リッピング】 CUERipper
CrystalDiskInfoクリスタルディスクインフォ
FileZillaってどうよ? Part2
2ちゃんねる用ブラウザ「Live2ch」part142
VMware総合スレ Part45
OmegaChartスレ ver.8
bbs2chreader/chaikaスキンスレッド part8
--------------------
【スズキ】旧型DA52・62 エブリイ 3台目【マツダ】
うんこちんちん
シン・ゴジラ GODZILLA RESURGENCE 105 [無断転載禁止]c2ch.net
保田圭応援スレッド(羊版)
言語道断!?
【中等教育】公立中高一貫校保護者専用【併設型】
2019年卒ブラック企業偏差値ランキング1【改訂版】
スプラトゥーン動画投稿者ID無しスレ226
【大喜利プラス九】マイマイル 主戦場
【3656】KLab441
【信者・腐】鬼滅愚痴吐き雑談スレ86【なんでもあり】
∩,,・д)おにーにワッチョイ虐待・虐殺スレ
◆集団ストーカー疑惑とダンマリ創価学会2◆
Squier スクワイア スクワイヤー 29
土屋太鳳 part74
街の自転車屋専用スレ 113店目
MacBook Pro (Part 183)
☆NHK連続テレビ小説★700本目
【 ヒプマイ】ヒプノシスマイク part5
排泄物以外にトイレに流すもの
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼