AutoHotkey スレッド part25 [無断転載禁止]©2ch.net
: [] 2017/09/14(木) 11:52:40.84:uijNj4qb0 ■配布元 ttp://ahkscript.org/download/ ■前スレ AutoHotkey スレッド part24 ttp://egg.2ch.net/test/read.cgi/software/1487149472/ ■日本語解説等 AutoHotkey Wik ttp://ahkwiki.net AutoHotkeyを流行らせるページ(ミラー) ttp://ahk.xrea.jp/ (不調時は ttp://hdd.s300.xrea.com/ahk/ ) AutoHotkeyJp(過去ログdatあり) ttp://sites.google.com/site/autohotkeyjp/ Autohotkey日本語ヘルプ(chmファイル) ttp://www6.atwiki.jp/eamat/ Autohotkey専用うpろだ ttp://ux.getuploader.com/autohotkeyl/ 簡易スクリプト掲示板 ttp://pastebin.com/ ■派生版 IronAhk (.NET製、クロスプラットフォーム) ttps://github.com/polyethene/IronAHK AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生) ttp://www.autohotkey.com/board/topic/39588-autohotkeydll/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2017/09/14(木) 11:53:33.21:uijNj4qb0 ■重要事項 オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。 現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ 正式にAutohotkeyとして扱われるようになりました。 よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、 その場合はスクリプトの修正が必用です。 旧版のAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。 → ttp://ahkscript.org/docs/AHKL_Features.htm → ttp://ahkwiki.net/Addition_L ※新規利用者には最新版を推奨しますが、旧AHK(2009年9月までのVer)の利用者は新AHKへの移行に際して 少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは そのままでは動作しません。安定利用できている環境を崩して移行するかどうかは各人の判断による。 MouseGestureについては有志の方が最新AHK対応版(MouseGestureL.ahk)を配布しているのでそれを 利用するのもありです。 ttp://hp.vector.co.jp/authors/VA018351/mglahk.html ttp://code.google.com/p/mousegesturel/ ※ACC.ahk(旧版用)とCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。 ttp://ux.getuploader.com/autohotkeyl/download/24/ACC%2BCOM.zip ※Unicode版のACC.ahkは下記(AccInfoViewer.ahk付き)またはフォーラムから入手してください。 ttp://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) : [sage] 2017/09/14(木) 11:54:40.33:uijNj4qb0 ■過去スレ Part1 ttp://pc7.2ch.net/test/read.cgi/software/1098531338/ Part2 ttp://pc7.2ch.net/test/read.cgi/software/1129836713/ Part3 ttp://pc11.2ch.net/test/read.cgi/software/1157043396/ Part4 ttp://pc11.2ch.net/test/read.cgi/software/1184556627/ Part5 ttp://pc11.2ch.net/test/read.cgi/software/1201502896/ Part6 ttp://pc11.2ch.net/test/read.cgi/software/1219130051/ Part7 ttp://pc12.2ch.net/test/read.cgi/software/1230694774/ Part8 ttp://pc12.2ch.net/test/read.cgi/software/1243005818/ Part9 ttp://pc12.2ch.net/test/read.cgi/software/1253888736/ Part10 ttp://pc12.2ch.net/test/read.cgi/software/1265518996/ Part11 ttp://hibari.2ch.net/test/read.cgi/software/1280482227/ Part12 ttp://hibari.2ch.net/test/read.cgi/software/1296446228/ Part13 ttp://anago.2ch.net/test/read.cgi/software/1317156599/ Part14 ttp://anago.2ch.net/test/read.cgi/software/1333372506/ Part15 ttp://anago.2ch.net/test/read.cgi/software/1349735581/ Part16 ttp://anago.2ch.net/test/read.cgi/software/1367725658/ Part17 ttp://anago.2ch.net/test/read.cgi/software/1383384464/ Part18 ttp://anago.2ch.net/test/read.cgi/software/1398655195/ Part19 ttp://anago.2ch.net/test/read.cgi/software/1411360229/ Part20 ttp://anago.2ch.net/test/read.cgi/software/1422427426/ Part21 ttp://anago.2ch.net/test/read.cgi/software/1437910497/ Part22 ttp://potato.2ch.net/test/read.cgi/software/1452881399/ Part23 ttp://potato.2ch.net/test/read.cgi/software/1470936221/ Part24 ttp://egg.2ch.net/test/read.cgi/software/1487149472/ : [sage] 2017/09/14(木) 11:55:20.32:uijNj4qb0 以下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を起動する。( ttp://www.forest.impress.co.jp/library/software/changekey/ ) 「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。 F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。 「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という ウィンドウが表示されるので右上の「Scan code」をクリック。 覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。 「登録」をクリックし、Windowsを再起動する。 : [sage] 2017/09/14(木) 11:55:58.23:uijNj4qb0 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のジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。 : [sage] 2017/09/14(木) 11:57:01.04:uijNj4qb0 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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている : [sage] 2017/09/14(木) 11:57:51.02:uijNj4qb0 ■ IME関連 Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの? A1: ttp://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に各種エディタの定義ファイル及びキーワード一覧あり。( ttp://ahkwiki.net/Tools ) Q3:GUI作るのめんどくせ〜〜 A3:海外の有志が作ったツールを使うと楽。 SmartGUI Creator ( ttp://www.autohotkey.com/board/topic/738-smartgui-creator/ ) GUI Creator ( ttp://ahkscript.org/boards/viewtopic.php?f=6&t=303 ) Q4:AHKってマルチスレッドじゃないの? タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。 A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。 > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。 > → 実行中、 …:割り込み終了待ち > 元スレッド →→→→→→……………………………………→→→→ > ★割込 ↑再開 > 割り込みスレ →→→→…………→→→→→→END > ◆割込 ↑再開 > 更に割り込み →→→END : [sage] 2017/09/14(木) 12:15:31.88:uijNj4qb0 次スレを立てる際は、1行目に「!extend:checked:vvvvv:1000:512」と記入してください。 その行はスレが立った時点で消えてなくなるので、 告知のため、その呪文を2行目以降に再度書いてください。 : [sage] 2017/09/14(木) 12:17:11.83:uijNj4qb0 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} にする。 : [sage] 2017/09/14(木) 12:17:32.04:uijNj4qb0 Q6:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど? A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。 ■回避策 1:管理者として実行 Autohotkey.exeを右クリックしてプロパティを開き、「互換性」→「管理者としてこのプログラムを実行する」にチェック。 スクリプトに記載する方法もある( ttp://www.autohotkey.com/board/topic/94126-ahk-problem-with-uac-and-privileges/ ) 2:対策パッチ 実行ファイルのマニフェスト書き換え、自己署名証明書のインストールが行われる。 ※AutoHotkey.exeはProgram Files以下に置く必要がある。 ttp://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」に変更。 : [sage] 2017/09/14(木) 12:18:05.36: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(開発終了) ttp://www.autohotkey.com/ Autohotkey 1.1 (Autohotkey_L) ttp://ahkscript.org/ ■開発中 Autohotkey v2(下位互換性を排除して操作利便性の向上) ttp://ahkscript.org/v2/ : [sage] 2017/09/14(木) 12:18:34.38:uijNj4qb0 ■派生版 IronAhk(.NET製、クロスプラットフォーム。開発終了) ttp://www.ironahk.net/ AutoHotkey.dll(真のマルチスレッド対応) ttp://www.autohotkey.com/board/topic/39588-autohotkeydll/ AutoHotkey_N(開発終了) AutoHotkey_H ttp://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html ■統合 AHK_U(Unicode版) ttp://www.autohotkey.com/board/topic/46563-unicode-version-of-autohotkey/ AHK64(64bit版) ttp://www.autohotkey.com/board/topic/53878-autohotkey64-64-bit-autohotkey-l-updated-62410/ ■スクリプト作成支援ツール AutoHotKey専用エディター ※必須ではありあせん。 SciTE4AutoHotkey ttp://fincs.ahk4.net/scite4ahk/ GUI作成ツール SmartGUI Creator ttp://www.autohotkey.com/board/topic/738-smartgui-creator/ GUI Creator ttp://ahkscript.org/boards/viewtopic.php?f=6&t=303 AutoGUI ttps://www.autohotkey.com/boards/viewtopic.php?t=10157 ※テンプレここまで : [sage] 2017/09/14(木) 12:21:12.97:uijNj4qb0 テンプレの一部(このスレの)は前スレではまとめて1つのレスだったのですが、 スレを埋め立てているのではと判定されてしまったため、 今回は分割して貼り込んであります。 : [sage] 2017/09/14(木) 18:25:44.27:CmOCopOE0 乙 : [sage] 2017/09/14(木) 18:39:12.30:KTBfP0580 Toukou:=いちおつ sleep 4 Toukou= return : [sage] 2017/09/14(木) 18:40:50.62:KTBfP0580 しまった " がない : [] 2017/09/15(金) 04:38:32.95:lepJIuBi0 1.特定のアプリだけのIME.ahkで常にIMEをOFFにする 2.頻繁に落ちるアプリをエラーダイアログ検知後、再起動する この機能をそれぞれタイマーにして1つのスクリプトにすると 2のエラーダイアログ表示で固まることがあります ログをみるとIME.ahkの途中で止まってるので ・1か2のタイマーを SetTimer, Main, 500, -1 としてスレッドの割り込み優先度を指定 ・一方に Critical を付けてスレッド割り込みを禁止する ・一方に Thread, NoTimers を付けてタイマーイベントの割り込みを禁止する など試してみましたが失敗します ちなみに2つのスクリプトに分けると上手く動くのですが これを1つで実現できる方法がありましたら教えてください : [sage] 2017/09/15(金) 05:07:21.26:t6JvSMbV0 タイマー1つで出来ないかな : [sage] 2017/09/15(金) 07:55:45.94:1jvV58yu0 具体的な環境とコードがわからないと何とも : [sage] 2017/09/15(金) 14:20:00.31:qvzlKVt/0 あるウインドウがアクティブになったときに何かをする そのウインドウが非アクティブになったときに何かをする ということをしたいのですが、出来ますか? : [sage] 2017/09/15(金) 14:24:35.08:qvzlKVt/0 OnMessage等を使ってもいいです。ただ、タイマーで監視とかは アクティブになる機会はたまにしかないので、資源の浪費な気がして、気が引けます : [sage] 2017/09/15(金) 14:34:36.19:JDrYmG0X0 ttps://sites.google.com/site/agkh6mze/howto/winevent : [sage] 2017/09/15(金) 15:44:59.25:qvzlKVt/0 なるほど。なんか出来そうですねえ。ありがとうございました : [sage] 2017/09/15(金) 23:15:45.05:lepJIuBi0 当初はタイマー1つで書いてましたがやはり止まるので タイマー2つで片方の割り込みを制限すればと思い分けました 環境はWin8.1x64 AHKv1.1.24.02(U64)/v1.0.48.05(A32)で 以下コードの主要部分です この2つのタイマーを2ファイルへ分けると正常に動きます : [sage] 2017/09/15(金) 23:16:51.76: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 : [sage] 2017/09/15(金) 23:17:15.94: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 : [sage] 2017/09/16(土) 00:16:27.89:vASzTH8m0 ログの詳細詳しく ME.ahkのどこで止まってる? あと使ってるIMEは何? : [sage] 2017/09/16(土) 04:55:52.43: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 何かヒントをください。よろしくお願いします。 : [sage] 2017/09/16(土) 05:13:42.46:/k1Xm57s0 ifやelseは二行以上ある場合は{}で囲う : [sage] 2017/09/16(土) 05:43:07.83:5bWrgVaq0 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) : [sage] 2017/09/16(土) 07:23:01.09:aHU7hLXq0 ありがとうございます 前よりマシな動作になりましたが何回か押してみたところ、ダブルクリックで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 長押しという選択肢もあろうかとは思いますが、コードの内容上長押しにはしたくないので何とかワンクリックで確実に動作しないでしょうか? : [sage] 2017/09/16(土) 08:11:29.94:FeLII/E00 巻き込んでるというか、1回目を押した時点で 未来に2回目が押されるかどうか関係なく即座に1度押しとしてelseのほうに行ってる : [sage] 2017/09/16(土) 09:07:41.02:aHU7hLXq0 あぁなるほど状況は理解した 1回押しで動くコードがあるからそれがダブルの1回目で邪魔してるのね ということはElse以降の方をダブルクリックにしたほうがいいのかな もうちょい頑張ってみます ありがとうございました : [sage] 2017/09/16(土) 09:16:40.59:wsPHlpoD0 32bit64bitの問題じゃねえかな149でポインタサイズ確認してるのに 152のポインタ渡で型が32bitのUInt、SendMessageも64bitだと64,32,64,64で 型はptr, UInt, ptr, ptrになると思う : [sage] 2017/09/16(土) 09:53:44.44:aHU7hLXq0 あぁ逆にしても駄目ですな 条件分岐する前に1回押されてしまう 1回押しを定義しつつダブルクリックを否定 から〜の Else で、ダブルクリックを設定しつつシングルクリックを拒否 理屈だとこういうことか できんのかなコレ... : [sage] 2017/09/16(土) 10:02:33.95:wsPHlpoD0 タイマー使わないとだめだと思う : [sage] 2017/09/16(土) 10:17:02.44:LFPsV6Pf0 「空気読め!」ってお叱り受けるのを覚悟で言っちゃう サンプルコード集 ttp://ahkwiki.net/SampleCodes で解決するよ : [sage] 2017/09/16(土) 10:29:23.67:sfnfppsC0 ttps://ux.getuploader.com/autohotkeyl/download/123 勝手にIME.ahkを修正してみたけどこんな感じかな? 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2017/09/16(土) 11:49:48.01:wsPHlpoD0 WPARAMにUPtrすばらしい : [sage] 2017/09/16(土) 19:46:44.50:aHU7hLXq0 一応、ElseじゃなくReturn で繋いで双方のコードを引き込まなくなった(タイミングは調整中) しかし、ボスが来た自体に問題が出てることが発覚 どうやらプログラムによって発動までにラグがあったり、何度か押さないと反応が無い あれ? 単独スクリプトでもっとしっかり動いてたはずなんだけどなぁ 特にFirefoxの反応が悪すぎる。それに対して動画プレイヤーは素直に反応する 音楽プレイヤーはちょっと遅れ気味で反応 SetKeyDelay,を10から-1にしても変わらず... クラスを1個づつに分けて試したけど反応悪い 直接のショトカは問題ないので何か悪さしてるのかな : [sage] 2017/09/16(土) 20:19:04.67: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度押ししたいなら素直に別キー使った方が良いんだろうね : [sage] 2017/09/16(土) 21:41:53.91:aHU7hLXq0 検証ありがとうございます 現在、F13キーにして検証中 ボスキーの反応がキーによってまちまちです もう、わけわからんのでショトカの割り当て含めて組み直しですね MusicBee MusicBeeのショトカをグローバル設定に変えてControlSend,,を使わず直接Send, +{f8}で送ってみた結果、レスポンスとしては全く問題なし。 それ以外の機能のショトカをControlSend,,で送ったところMusicBeeはレスポンスが非常に悪いようです 一度反応した後は間をあけないと2回目以降ラグが出てしまう?遅延しやすい感じ 分けて使ってる時はたまたま運が良かったみたい?。ボスが来なくてよかった... Firefox F13で反応無し、#F13で確実にレスポンスよく反応する MPC-BE どのキーでも確実にレスポンスよく反応する 発動キーを2キー以上使えば行けそうな気がしてきましたが そうなるとコードをひとまとめにして簡単にしてやろうという当初の目論見から少しズレてしまうだよね ってかFirefoxどうしたんだって感じです。もともと1キーでテキパキ反応してたんだけど もうちょい頑張ってみます : [sage] 2017/09/17(日) 04:52:29.36:oCfXbTFr0 ◯:: DetectHiddenWindows,On ControlSend,,^w,ahk_class MozillaWindowClass Return F13:: まったく動作せず #F13:: アクティブの時動作せず ^F13:: アクティブでも非アクティブでも動作する F13長押し まったく動作せず ^F13長押し アクティブの時動作せず #F13長押し アクティブの時動作せず うん。心が折れた ^F13でいこう。そしてボスキーは他のコードと分けようかな... ってか面倒くさいから普通にボスキーアプリ拾ってこいって話だよな : [sage] 2017/09/17(日) 06:15:54.77:p/7ZTW530 F13をどこに割り当ててんだ? : [sage] 2017/09/17(日) 06:50:16.95:oCfXbTFr0 割当じゃなくキーコード自体がF13キー 元々はAppsKey : [] 2017/09/17(日) 09:43:50.02: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なりで自由に使えるなら、わざわざ自作するのも馬鹿らしいので…。 : [sage] 2017/09/17(日) 17:16:58.81:XAx2qwWa0 そのどれもそんなたいした手間かかるものじゃないんで みんな自分で書いてるんじゃないの : [sage] 2017/09/17(日) 19:34:08.24:4ImUmMF/0 過去ログのどっかにありそうだな : [sage] 2017/09/17(日) 19:35:09.61:TU6C1wnl0 ttps://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings.strconv(v=vs.110).aspx 俺は知識のない人間だからよくわからんけどこれは使えないのだろうか : [sage] 2017/09/17(日) 19:45:12.80:4ImUmMF/0 あった ttp://anago.2ch.net/test/read.cgi/software/1398655195/974 ttp://pastebin.com/diJWv0pw : [sage] 2017/09/18(月) 15:18:21.15:30s93rv60 です。皆さんありがとうございます。 まあ、そういわれればそうですね。書いても大した手間じゃないと思ってはいます。 .NETでDLLをひとつビルドする必要がありますね。 Visual Studioが今は無料になったとはいえ、もしかしたらWindows 2000とか 98とかのVMにAHKを入れて使う可能性があるので、.NETは避けたいです。 #単に.NETに対してアレルギーがあるだけなんだけど。 けっこう面倒臭そうですね。 * * * というわけで、大した手間じゃないので自分で書くことにします。 tr() って、いろんな言語で汎用的に使いそうな関数ですから、 著作権フリーの自前のものを手元に持っておいたほうが、 あとあと融通がききそうですし。 : [sage] 2017/09/18(月) 19:35:44.46:MAIQQZAv0 マウスのホイールで加速 ってAHK単体で実現できますか? Webブラウザで超縦長ページを高速スクロールさせたいとき、ホイールを高速で回すと10数ページぐらい移動とか・・・ : [sage] 2017/09/18(月) 20:35:20.93:wwQcrx5N0 拾ってきたAccelerated Scrollingてのを少しいじってメインに組み込んでる : [sage] 2017/09/18(月) 21:34:32.47:plzfm86Y0 ホイールスクロール - eamat @Cabinet - アットウィキ ttps://www6.atwiki.jp/eamat/pages/30.html WheelScroll.ahkはどうだろう 一応日本人作だから日本語の説明だから分かりやすいかと 10数ページ一気に移動とか可能か分からないけど・・・ : [sage] 2017/09/18(月) 21:59:14.37:MAIQQZAv0 素早いレスをありがとうございます AHKの万能さに感動しました : [sage] 2017/09/19(火) 03:22:47.92:IXDgiRwq0 自分は加速ではなく サイドボタン1&ホイール上下でHome/End サイドボタン2&ホイール上下でPageUP/PageDown を割り当ててる とりあえず一番上か一番下に飛びたいことが多いのでHome/End割り当てるのが効率良いです : [sage] 2017/09/19(火) 06:19:29.73:g9F/3nwt0 デスクトップのなにもないところ(ウインドウも、アイコンも無い壁紙部分)をダブルクリックすると、特定のアプリを起動する って事はAHKで出来ますか? : [sage] 2017/09/19(火) 06:47:36.39:zmB9SGAt0 出来ると思います : [sage] 2017/09/19(火) 17:19:30.66:I2JJpXcS0 LOOP中にキーボードAを押したらLOOPから抜けるようにするにはどうすればいいですか? : [sage] 2017/09/19(火) 18:33:04.11:kLxokK7d0 Loop間隔が短いならGetKeyStateでif分岐してBreak Loop間隔が長いならAキーに変数指定を割り当てといて Loop中にその変数の値でif分岐してBreakとか : [sage] 2017/09/19(火) 20:25:23.62:FwZUdIIc0 あとはUntilかWhile : [sage] 2017/09/20(水) 00:48:55.91:VcXou4qe0 ありがとうございます : [sage] 2017/09/20(水) 02:50:57.69:RyttgFZS0 横からだけどって出来るのか気になる デスクトップのアイコンの有無ってどうやって判別したら良いんだろう? : [sage] 2017/09/20(水) 03:03:21.51:YkfHD61c0 例えば、コピー送ってクリップボードに入るかどうか、とか : [sage] 2017/09/20(水) 04:26:52.19:cHabdo460 AHKにSendMessageでポインタを渡す機能があればLVM_HITTESTを送る -1が返るとアイコンなし : [sage] 2017/09/20(水) 05:36:41.50:1u+zkbMh0 色々調べたけど殆ど分からない user32.dllを読み込んで何かのイベントを貰えれば良いのだけど、それについての情報が殆ど無いですよね やり方もわからないし… で、 ttps://sites.google.com/site/agkh6mze/howto/winevent このページ見てて、デスクトップのなにもない所をダブルクリックという作動をよくよく考えてみると、 すべてのフォーカスが外れた状態でダブルクリックイベント という事なんじゃないかと その先さっぱり パラメータの説明はMSにあるけど、無能過ぎてちんぷんかんぷん Spy++で調べるとデスクトップはFolder viewというFormだということはわかったけど… : [sage] 2017/09/20(水) 05:42:34.55:1u+zkbMh0 ありがとうございます まだ良くわかってないけど調べてみるとLVM_HITTESTというキーワードをちょこっと調べるとどうにかできそうな匂いがします もうちょっと調べてみるです : [sage] 2017/09/20(水) 06:24:09.05:UwzymyTj0 他にやりようがあるんだからできる範囲で工夫すりゃいいのに : [] 2017/09/20(水) 07:55:16.00:VDqFQXZJ0 検索したらすぐに見つかったけど ttps://autohotkey.com/board/topic/82196-solved-double-click-on-the-desktop/ 1ページ目に手抜きのコード 2ページ目に実用上ほぼ問題なさそうなきれいなコード(中程のやつ) これだと問題となるケースがあって、それを除外する努力が3ページ目までつづくけど、 結局は潰しきれないので、好きなやつをどうぞ : [sage] 2017/09/20(水) 08:03:50.81:1u+zkbMh0 おぉありがとうございます 今は無理なので後で使ってみます ありがとうございました : [sage] 2017/09/21(木) 14:16:57.34:h2uQQOf90 >>38 解析有難うございます 修正版にてようやくエラーが再現しましたが、応答なしになるのは変わらずでした Win2000+IME2000ではIMEの状態が常にOFFになりました 残念ですが2つ起動することにします : [sage] 2017/09/21(木) 16:45:49.92:HOY/MTbD0 64bit版で32bitアプリにSendMessageでメッセージは送れないと思うその逆も タイマー1つにしてまずエラーダイアログ判定して、でなければIMEへ : [sage] 2017/09/21(木) 16:59:11.88:HOY/MTbD0 それとは ;ここに特定のClasNNではOFFにせずReturnする例外処理 If (IME_GET()) { IME_SET(0) と書けないかな : [sage] 2017/09/21(木) 19:45:29.75:d8X2A9cD0 GetKeyStateで無変換キー(vk1Dsc07B)が取得できないんだけど、何か方法ないかな? : [sage] 2017/09/21(木) 20:00:00.03:aaW3C7Am0 できるけど : [sage] 2017/09/21(木) 20:40:29.55:d8X2A9cD0 まじ?GetKeyState("vk1Dsc07B", "P")で? 俺の指定方法がおかしいのかな 他のキーは取得できるのにな : [sage] 2017/09/21(木) 21:43:38.91:so7+jRcr0 どちらかにすれば? vk1D sc07B : [sage] 2017/09/21(木) 22:28:51.86:aaW3C7Am0 それでも"vk1D"でも"sc07B"でも"P"があってもなくても0|1ちゃんと返る : [sage] 2017/09/21(木) 22:36:11.29:d8X2A9cD0 おっかしいなぁ・・・ ならないから多分おま環かも 面倒だし別のキーに割り当てますわ : [sage] 2017/09/22(金) 06:58:59.56:OAhgYF7S0 キーヒストリー(アイコンダブルクリックでCtrl+K)に何が入っているか気になるね。 レジストリで変更してるとか。 : [sage] 2017/09/24(日) 01:23:40.12:ovq+ASMp0 キーを押している間 クリックして マウスムーブ クリックして マウスムーブ を繰り返したいんですが マウスムーブの値が一定じゃない場合 数珠繋ぎにif文を増やして行けばいいのでしょうか? キーを離したら停止は出来るんですが If文の数珠繋ぎにするやり方を教えてください : [sage] 2017/09/24(日) 01:34:28.38:0aSErUDh0 質問するならもう少し具体例を挙げるとかとかした方がいいんじゃないかな : [sage] 2017/09/24(日) 03:46:08.78:EkpWsIry0 if (式1) { ・・・ } else if (式2) { ・・・ } else if (式3) { ・・・ } : [sage] 2017/09/24(日) 05:24:39.24:rm7yR9v00 多分コレジャナイ感 : [sage] 2017/09/24(日) 09:42:45.44:199+CCx20 じゃあ if (式1) { ・・・ } if (式2) { ・・・ } if (式3) { ・・・ } : [] 2017/09/24(日) 13:45:20.15:vmDjT91J0 概略こんなコードになるはず。 何か適当な名前の関数() { マウスムーブ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 とかかいて呼び出してやればいい。 #テストしてないので誤字とかあったらごめんね : [sage] 2017/09/25(月) 17:03:34.64:FNSh64gG0 if (3 < %A% < 5) とかの3項比較すらできないとか何このクソ言語 一つづつ比較しろってのかよ 一々%がついたりつかなかったりもウザいし : [sage] 2017/09/25(月) 19:15:51.75:b7qo8gsc0 if A between 3 and 5 : [sage] 2017/09/25(月) 19:32:18.57:dkkQJqva0 サルが迷い込んでてわろた : [sage] 2017/09/25(月) 22:47:53.97:gWdFgzgp0 サルのふりをすると素早く結果が得られるのか よいなウキキ : [sage] 2017/09/25(月) 22:57:58.76:E5zwZhHI0 サルまねは簡単に見抜かれるがな ウッキー : [sage] 2017/09/27(水) 23:26:25.74: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% : [sage] 2017/09/27(水) 23:54:13.76:5X3wI39C0 A32.exeってUTF-8のスクリプト読み込ませても普通に動くしL版の追加機能も使えるのか 今まで本家版そのままと勘違いしてた : [sage] 2017/09/28(木) 01:00:06.89:ZCT1JF0Y0 Outputunko is allowed to be the same unko as an Inputunko. : [sage] 2017/09/28(木) 02:29:17.50:GQSksrr90 なるほど、変数を複数作らなくてもいいんですね。 確かにスマートですね。 勉強になりました、有難うございます。 : [sage] 2017/09/28(木) 11:06:02.36:sWQkFnkH0 キーリピートできない多ボタンマウスに キーリピートできるようにはできないんでしょうか? 左クリック押しながら、マウスの別ボタンを押すと ロジクールの多ボタンマウスだとちゃんと書いたコードが機能しますが、今のやつは無理です。 たぶん、キーリピートが関係している?気がするんですが。 : [sage] 2017/09/28(木) 11:43:16.41:tPmB9WEX0 どんな挙動しているか自分で確認しよう キーリピートやキーUp/Downの時間など #InstallMouseHook KeyHistory : [sage] 2017/09/28(木) 13:37:56.81:sWQkFnkH0 Auto Hot Keyにだけマウスのボタンの入力が行ってませんでした。 左クリックだけしか反応がありません……。 : [sage] 2017/09/28(木) 16:18:29.95:mqOcEldg0 質問するなら自分がどういうコード書いてるのが具体的に書けよ エスパースレじゃねえんだから : [sage] 2017/09/28(木) 17:18:30.28:sWQkFnkH0 たぶんマウスの問題なんだと思います。 いろいろ実験したんですけど、そのマウスだけAuto Hot Keyが認識しませんでした。 KeyHistoryを教えてくれた方、ありがとうございました。 これを知らなかったら、認識しないのに無駄にコードを書いて悩んでたと思います。感謝です。 : [sage] 2017/09/28(木) 17:26:18.24:a7Erhn8f0 普通多ボタンマウスならボタンのカスタマイズやキーアサイン機能あるだろ 俺の場合ならRazerNagaにF13〜F24など割り当ててAHK側でキーリピートさせたりも出来る どこのマウス使ってんだよ : [sage] 2017/09/28(木) 17:38:54.39:tPmB9WEX0 ひょっとしてマウスソフト設定がキーボードのキーになってるのでは? さっきは書いてなかったが#InstallKeybdHook書けばそちらもログにでる サイドボタンのマウス設定が「Z」ならAHKは「Z」と認識する #InstallKeybdHook ; キーボードログON #InstallMouseHook ; マウスログON KeyHistory : [sage] 2017/09/28(木) 17:45:34.30:a7Erhn8f0 だから具体的なこと一切書かないから悪いんだよ の「別のボタン」とは何ボタンなのか、多ボタンマウスの特殊ボタンならばそこに何を割り当ててたのか 「今のやつ」とはどのマウスのことなのか : [sage] 2017/09/28(木) 17:54:32.61:sWQkFnkH0 「エレコム ワイヤレスマウス 無線 2.4GHz レーザー 8ボタン チルトホイール Lサイズ ブラック M-XGL20DLBK」です。 KeyHistoryでは、左右クリックとホイールの上下左右しか認識がありませんでした。サイドボタンは認識していません。 サイドボタン(5番)にPgDnを、右クリックにPgUpをマウスアシスタントドライバで割り当てて、 以下のようにコードを書きました。 ~LButton & PgDn::Send,{RButton} ;@左クリックを押しながらサイドボタン(5番)(PgDn) ~LButton & PgUp::Send,#d ;A左クリックを押しながら右クリック(PgUp) このコードはロジクールのG700Sなら動くんですが、エレコムマウスでは動かないです……。 : [sage] 2017/09/28(木) 18:51:25.73:Mhj4kady0 単にエレコムのマウスアシスタントの使い方を間違ってる可能性 : [sage] 2017/09/28(木) 19:27:11.97:sWQkFnkH0 Auto Hot Keyとこのマウスの相性が悪いのかもしれません。 もしくはエレコムのマウスアシスタントとの相性か。 エレコムの有線ゲーミングマウス(ドライバはゲーミング用)だと@もAも動いたんですけどね。 : [sage] 2017/09/28(木) 19:45:30.11:Mhj4kady0 そもそもPageUp/Downは効いてるのかい? : [sage] 2017/09/28(木) 20:03:04.75:sWQkFnkH0 効いてますね。 : [sage] 2017/09/28(木) 20:45:00.19:Mhj4kady0 それなのにのキーボードログONにしてもAHKはPagUp/Dnを検出しない? : [sage] 2017/09/29(金) 03:11:51.19:r2OLOVvo0 横だけどエレコムのマウスアシスタントを切ってAHKだけででリピートできないかな : [sage] 2017/09/29(金) 08:53:16.46:r/lUdNoa0 アシスタントで割り当てたキーが検出されませんね。 マウスアシスタントを切ってKeyHistoryを試してみたら、 サイドボタンの「XButton1」と「XButton2」は検出されましたが、それらにAHKでKeyを割り当てても、 KeyHistoryで「XButton1」「XButton2」と認識されるだけで、割り当てできませんでした。 もはや何が原因か分かりません。 : [sage] 2017/09/29(金) 09:44:16.78:r2OLOVvo0 目的の操作と動作を書いてみて : [sage] 2017/09/29(金) 12:12:15.51:fLOXyM62aNIKU ブラウザ(IE)の倍率を取得する方法ないですか? : [sage] 2017/09/29(金) 21:28:26.66:mExGP7Np0NIKU File.RawRead()でバイナリとして読み込みたいときに BOM付テキストだとBOMの3バイト勝手に削られちゃうのどうしたらいいの : [sage] 2017/09/29(金) 22:28:58.15:ZjfVNOK80NIKU 何がしたいのか知らんけど、BOM付きで保存したいならFileOpen()でエンコーディングを指定すればいい File := FileOpen("a.txt", "r") Enc := File.Encoding Len := File.Length VarSetCapacity(Buf, Len, 0) Len := File.RawRead(Buf, Len) File.Close() File := FileOpen("b.txt", "w", Enc) File.RawWrite(Buf, Len) File.Close() : [sage] 2017/09/29(金) 23:03:04.15:mExGP7Np0NIKU 保存はしない ただ丸ごと取り込みたい 5行目の時点でLenが3行目のLenより3少なくなってるのが困る : [sage] 2017/09/30(土) 00:16:35.49:B2QZrWW30 File.RawReadのまえにFile.Seek(0)する : [sage] 2017/09/30(土) 00:34:10.13:Cebj4y3r0 へー、File.Seek(0)でいけるのか : [sage] 2017/09/30(土) 00:42:17.41:nKssOyMy0 バッチリです ありがとう : [sage] 2017/09/30(土) 00:58:39.63:B2QZrWW30 公式のドキュメントにBOMがある時はポインタを進めるってちゃんと書いてあるよ ttps://autohotkey.com/docs/commands/FileOpen.htm : [sage] 2017/09/30(土) 08:43:40.77:Cebj4y3r0 やっぱ、ちゃんと公式のドキュメント読まんといかんね : [sage] 2017/09/30(土) 11:15:24.15:1lMD47790 あるウィンドウにあるメニューバー、文字メニューでリスト内テキストと付随したチェックマーク有無を取得する方法はありますか? 例えばあるソフトで「☑」夜間モード、みたくなっていて そのチェックありなしでキーボード操作が大幅に変わってしまうようなものに対応したホットキー(意図しない暴発を避けるため、片方のモード時にはスルーする、など)を設定したく調べでいるのです。 : [sage] 2017/09/30(土) 11:40:52.35:8Huw1vzT0 メニューバーの左から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だからかな) できれば、 も解決すると思う。 IEのメニューのハンドル取得方法を知っている人求む。 : [sage] 2017/09/30(土) 13:15:40.77:1lMD47790 ありがとうございます!使用したいソフトに数値あてはめてテストしたら問題なく動きました。 最近ahkを触り出したので、ご紹介いただいたDllCallなど、まだ触ったことのないコマンドでした。さっそくwikiを見つつ理解しようとしてますが頭がパニックになってます!アリモノの関数から値を引き出している?うーむ またじっくり勉強していこうと思います、ありがとうございましたm(_ _)m : [sage] 2017/09/30(土) 14:39:05.78:0PNJ6R9f0 サイドボタンに割り当てた任意キー(PgDnなど)がAHKに入力されないのは原因不明で まだ解決してないんですが、いろいろいじってたら Xbutton1と2がAHKに認識してくれるようになりました。 Xbutton2:: Send,{PgDn} Sleep,200 While (GetKeyState("Xbutton2", "P")) { Send,{PgDn} Sleep,30 } Return こんな感じで、リピート機能がないサイドバタンにリピートさせてます。 こんなコードでいいのか分かりませんが。 : [sage] 2017/09/30(土) 15:50:31.87:O67+Avl20 はじめとリピート中は Send {PgDn down} で、return前に Send {PgDn up} : [sage] 2017/10/01(日) 08:25:25.42:5/Rqy1jY0 添削ありがとうございます。 たしかにそれのほうがスマートですね。 : [] 2017/10/01(日) 08:37:12.64:gRVszgej0 Ctrlのショートカットでカーソル移動をしてるのですが、 長押しすると文字のすり抜けが発生します。 どうすればこのすり抜け現象が解決するのでしょうか? <^h::switchKeyByWindow("{Home}", "^h") <^;::switchKeyByWindow("{End}", "^;") <^l::switchKeyByWindow("{Right}", "^l") <^j::switchKeyByWindow("{Left}", "^j") <^i::switchKeyByWindow("{Up}", "^i") <^k::switchKeyByWindow("{Down}", "^k") : [sage] 2017/10/01(日) 09:12:52.31:Zz0Wp6Pe0 そんな関数知らねーよ : [sage] 2017/10/01(日) 09:16:25.09:CNkKl/UV0 ググったら、1ページだけヒットした。 その作者に知らせてあげるのが一番良いよ。 : [] 2017/10/01(日) 09:25:13.81:gRVszgej0 申し訳ありませn( ^ω^ ) ;---------------------------------------------------------------- ; Window によって送信するキーを振り分ける ; ; defaultKey デフォルトで送信するキー ; ctrlKey Ctrlを送信するウィンドウのとき送信するキー ;---------------------------------------------------------------- switchKeyByWindow(defaultKey, ctrlKey) { if (isCtrlKeyWindow()) { Send,%ctrlKey% } else { Send,%defaultKey% } Return } : [] 2017/10/01(日) 09:38:47.57:gRVszgej0 さらに、、、 ;---------------------------------------------------------------- ; Ctrl キーを送信する Window かどうかを判断する ;---------------------------------------------------------------- isCtrlKeyWindow() { ; GVim IfWinActive,ahk_class Vim { return 1 } ; Poderosa IfWinActive,ahk_class WindowsForms10.Window.8.app.0.20f9772 { return 1 } ; Mingw IfWinActive,ahk_class ConsoleWindowClass { return 1 } Return 0 } : [sage] 2017/10/01(日) 09:44:20.65:ibUzHhgP0 自力で直せないならその関数使うのやめて#ifで書き直したほうがいいと思う : [sage] 2017/10/01(日) 10:15:37.57:J6v0aHef0 SendMode, Playにすると動かないマシンがあるんだけどどういうことなんだろう Win8やWin10のマシンではちゃんと機能するのにWin7のマシンではPlayにすると全く動作しなくなる : [] 2017/10/01(日) 10:16:23.02:gRVszgej0 単純にSendだけでもキーを切り替えた瞬間にすり抜けが発生してしまいます : [] 2017/10/01(日) 10:29:42.68:gRVszgej0 以下のスクリプトで、Ctrl+通常キーとのショートカットを長押して カーソル移動しているのですが、上下左右を切り替えた瞬間に 通常キーがすり抜けます。何か手立てはありますか? <^h::Send,{Home} <^;::Send,{End} <^l::Send,{Right} <^j::Send,{Left} <^i::Send,{Up} <^k::Send,{Down} : [sage] 2017/10/01(日) 13:36:43.12:CNkKl/UV0 SendMode,Input #InstallKeybdHook #UseHook この設定だとどうなる? : [sage] 2017/10/01(日) 15:24:44.69:gRVszgej0 レスありがとうございます 試しましたが、結果は変わりませんでした( ˘ω˘ ) Ctrlキー押しっぱなしで通常キーを切り替えた瞬間、 一文字だけすり抜けてしまいますね : [sage] 2017/10/01(日) 18:45:43.89:rJfDiFvr0 MouseGestureLで画面端に接触って機能がありますが autohotkeyではどのように再現すれば良いのでしょうか? : [sage] 2017/10/01(日) 19:10:22.42:k6gLp1+F0 MouseGetPos : [] 2017/10/01(日) 20:28:29.75:gRVszgej0 Ctrlキーを使ったカーソル移動で、 Ctrlキーと通常キーの両方を押しっぱなしにしただけでも 時々すり抜けが起きますね、、、困ったな(''_'') : [sage] 2017/10/01(日) 23:10:27.69:s8qjH76V0 Ctrlが押されてる間ループで自前処理はどうでしょう : [sage] 2017/10/02(月) 18:40:04.60:aXY7sAIp0 それってどうやるのでしょう?教えて : [sage] 2017/10/03(火) 11:26:31.37:k2wSjcMy0 わりと最近何度も話題になってたので過去ログさがせばすぐ出てくると思う : [sage] 2017/10/03(火) 17:29:15.20:Z94A9/610 Win7ですが、プロセスの優先度を変更するのに、MSDOSでは wmic process where name= を使って変更できますが、AHKでも出来ますか アプリを起動するごとに複数のアプリの優先度を組み合わせによって変更したいのです アプリの起動はAHKで行うので、AHKで優先度も変更できれば楽です MSDOSのバッチファイルを作っていちいちそれを起動するというのは避けたいのですが : [sage] 2017/10/03(火) 17:41:40.86:y7JHy7Th0 Process : [sage] 2017/10/03(火) 17:59:47.31:Z94A9/610 ありがとうございました やってみたのですが、firefox.exeなのですが複数のプロセスがありますが1つだけしか変わりません DOSではすべてが変わるのですが、全部を変える方法はありますか WinGetのListで取ろうとしてもPIDは取れないし、同じイメージ名が複数ある場合は1つだけしか変えられないのでしょうか : [sage] 2017/10/03(火) 18:09:22.57:ApSdm6mu0 winget List取得後にLoopで winget PIDしていけばよいのでは? それかrunコマンド経由でwmic.exeの実行はできないん? : [sage] 2017/10/03(火) 18:18:34.78:Z94A9/610 Firefoxはウインドウは1つだけ(タブは複数)起動しているんです で、WinGet Listで取得すると、IDが1つだけしか取れません でも、firefox.exeの同名のプロセスが3つ存在しています : [] 2017/10/03(火) 18:31:52.02:tZYykB2i0 なにをやりたいのかわかってないんだけど、 AHKで起動してるんだから、RunコマンドのOutputVarPIDでいいんじゃないの? Run Firefox.exe, , , NewPID Process, priority, %NewPID%, Low でこのスクリプトで起動されたfirefox processは全部Low priority OneTabのせいで、Firefoxのマルチプロセスが無効だったことに気がつかせてくれてありがとう Firefox削除した : [sage] 2017/10/03(火) 18:38:15.32:jR7/UGDJ0 頭悪い人の意見だけど For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process") で全部取得しつつfirefox.exeならprocessで変えるようにすればいいんじゃない : [sage] 2017/10/03(火) 18:51:40.20:Z94A9/610 やってみました まず、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つのプロセスも 低のプロセスから派生したものだから低になるのでしょうね この方法で出来ることはわかりました でもすでに起動しているものを変更することはできないのかな : [sage] 2017/10/03(火) 19:14:51.43:ApSdm6mu0 隠しプロセスだったらdetecthiddenwindows ONにしてからwingetは? : [sage] 2017/10/03(火) 19:24:52.04:Z94A9/610 やってみました。 驚いたことに detecthiddenwindows on すると、1つだったIDが8つ出てきました。 これらはもちろん異なるIDだったのですが、WinGetでこれからPIDを求めるとすべて同じ多分親のPIDしか 出てこず、残りの2つのPIDは出ませんでした : [] 2017/10/03(火) 22:12:00.42:aFw/sdPM0 Ctrlキー押しっぱのカーソル移動のすり抜けは 以下のメソッドを追加したら少し改善した。 少なくとも一定時間の移動ではすり抜けなくなってみたい。 但し、方向切り替え時に通常キーの同時押し状態になってしまう瞬間はダメですが、 SendMode Event #UseHook #InstallKeybdHook #HotkeyModifierTimeout 100 SetKeyDelay,0 : [sage] 2017/10/03(火) 22:41:37.06:v5TBqoIN0 それキーボード側の同時押し可能数の問題じゃね ゲーミングキーボードとか多同時押し対応したものなら起きないかもな : [sage] 2017/10/03(火) 23:05:38.81:aFw/sdPM0 自分が使ってるのはリアフォかHHKBPro2だから同時押し6つのヤツ 恐らくCtrl+I,J,K,Lの2つのキーのSendだから3つ目が来た時に 単独押しの判定になるのかな? 少し改善したのはHotkeyModifierTimeoutを追加したのが効いてると思う。 : [] 2017/10/03(火) 23:30:28.37:Fa/rtAAh0 Ctrl+Iが押されたときAHKはまずCtrl upをSendしてから↑をSendし↑ upをSendしCtrlをSendする この処理中にJ,K,Lを押すとスルーするかな : [sage] 2017/10/04(水) 00:35:32.62:QCRp6QYx0 コマンドラインのツールのフロントエンドを作ろうとしたんですけど Runwaitするとタイマーも割り込めないんですね… Runの後にループでスリープしながら見張るのが無難でしょうか? : [sage] 2017/10/04(水) 15:56:38.38:rfwLN1/G0 Send, {Blind}{Up} : [sage] 2017/10/04(水) 16:53:46.41:LAY40rLs0 Ctrl+上 になってしまうのでは : [sage] 2017/10/04(水) 23:43:40.87:eAdJsIi70 wikiに「1つのキーに3種類以上の動作割り当て」っていうサンプルがありますが なぜあれで2度押しができるんですか? 解説お願いしたいです。 : [sage] 2017/10/05(木) 00:56:48.37:6h/nzYUE0 押された:: Q.すぐに離されましたか? ↓yes no→ A.長押しです Q.またすぐに押されましたか? ↓yes no→ A.1度押しです A.2度押しです : [sage] 2017/10/05(木) 01:09:31.71:L8qoU5mE0 あれはキーダウンでラベルが呼び出されてから keywaitでキーアップを待っているわけよ 0.3秒以内にキーアップがこなければ長押し 0.3秒以内にキーアップが来てそこから0.2秒以内にまたキーダウンが来たら2度押し そうでなければ1度押し : [sage] 2017/10/05(木) 08:37:47.60:YdyjWLJj0 解説必要かな コメント適切すぎてどこで何してるのか一目瞭然だし あれ以上の説明って逆に難しい気がするんだけど : [sage] 2017/10/05(木) 09:00:00.95:6h/nzYUE0 押されているのが離されるのを待つコマンドで 離されることなくタイムアウトしたら errorlevelが trueになる ちょっと理解が混乱するのはいたしかたない : [sage] 2017/10/05(木) 17:46:10.09:lN6wv7uW0 あるアプリにEditのコントロールがたくさんあります。50個くらい これらのテキストをControlGetTextで取っているのですが ひとつひとつクリックして選択してからGetしているので時間がとてもかかるのです なので、このコントロールのメモリアドレスを取得することはできませんか そうするとメモリから直接すべてのテキストを取得することができそうな気がするのですが ControlGetTextでテキストを取得しているということは当然メモリにアクセスしているので AHKはアドレスをゲットしているはずですね 一度すべてのEditコントロールのメモリアドレスをゲットしておけば以降はメモリアクセス だけでゲットできるか考えているのですが : [sage] 2017/10/05(木) 17:56:02.37:/O7vn0vF0 WinGetのControlListかControlListHwndとか? : [sage] 2017/10/05(木) 18:26:18.76:lN6wv7uW0 controlHWNDをゲットして出来そうですね。 ありがとうございました : [sage] 2017/10/05(木) 18:44:26.59:Mw/WW6ff0 Send, {Blind}でやってみたが、カーソルの動きが 変な動きをするんだけど、、、 : [sage] 2017/10/05(木) 19:01:28.37:pHsu3ccW0 説明を聞いたら分かりました。ありがとうございます! 「KeyWait,vk1Dsc07B,D T0.2」は0.2秒経過してもdownされてなかったらそのまま通すんですね。 そこが分かってなかったです。 : [sage] 2017/10/05(木) 23:48:46.74:ZYF3rk8J0 {Blind} は変換キー+JKLi とかで使う時が良いよ。 : [sage] 2017/10/06(金) 12:38:18.47:TXUF7LvYa 左クリックでsetkeydelayを効かせるにはどう書いたらいいんですか? 3パターンともディレイがききません。 setkeydelay,400 send,{LButton 4} send,{LButton}{LButton}{LButton}{LButton} Click,Left 4 return : [sage] 2017/10/06(金) 12:46:51.83:PVKvJFle0 SetMouseDelay : [sage] 2017/10/06(金) 12:59:37.03:TXUF7LvYa ディレイできるようになりました。 ありがとうございます。 : [] 2017/10/06(金) 22:23:31.17:qJK6Bjjm0 Ctrl+通常キーの長押しは、ほぼこれでOKのようです。 同時押し時のすり抜けはまだ解決してませんが 今のところはキーの切り替え時に同時押しにならないようにすれば、 なんとかイケてます(^^♪ : [] 2017/10/08(日) 06:34:31.46:QHNb58xD0 HHKBで単独のDelキーがほしいのでバッククォートに割り当てたんだけど バッククォート自体の入力をCtrl+バッククォートでSendしたけどうまく出来ません。 対処方法を教えてください : [sage] 2017/10/08(日) 07:05:56.35:PU2F6qYD0 質問するならまず自分が書いたスクリプトを貼るのが筋 : [sage] 2017/10/08(日) 08:08:29.49:QHNb58xD0 `::Send,{Blind}{Delete}←バッククォートをDelキーに割り当てはOK ^`::Send,{Blind}`←Ctrl+バッククォートでバッククォート入力がうまくいかない : [sage] 2017/10/08(日) 08:17:56.19:PU2F6qYD0 仮想キーコード{vkC0}を使えば? : [sage] 2017/10/08(日) 08:19:10.59:PU2F6qYD0 てかその使い方なら{Blind}は付けたらダメでしょ : [sage] 2017/10/08(日) 08:22:33.90:TwLxa7sA0 `はエスケープ文字 wikiの仕様のとこ読んどいで 原因追求せずいきなり対処法教えてってのもなんだかな : [sage] 2017/10/08(日) 10:03:11.28:QHNb58xD0 ^`::Send,``とかでしょうか?いろいろ試したけどうまくいかない、、、 : [sage] 2017/10/08(日) 10:13:23.44:cTqdANU50 あとは >5のQ4 : [sage] 2017/10/08(日) 11:10:37.98:QHNb58xD0 #UseHookを定義してるので$は不要だと思う : [sage] 2017/10/08(日) 18:29:50.95:PU2F6qYD0 vkC0使えと言ってるのになんで人の言うこと聞かないんだ? : [sage] 2017/10/08(日) 19:21:06.25:QHNb58xD0 ^`::Send,{vkC0}とかでしょうか?もちろん試したけどダメでしたよ : [sage] 2017/10/08(日) 19:28:07.35:CPS4vhgt0 出力がダメなのか、入力がダメなのかを実験して : [sage] 2017/10/08(日) 19:39:59.07:jtfbjOQf0 お前さあ、ここエスパーすれじゃねえんだから「もちろん試した」とか他人が分かるわけねえだろ ろくに検証してないくせに上から目線になってんじゃねえよ : [sage] 2017/10/08(日) 19:44:43.35:QHNb58xD0 入力がダメです。何か手立てはありますか? : [sage] 2017/10/08(日) 19:47:31.10:Hhhcm4fC0 入力を仮想キーコードにすりゃいいじゃん 思考力停止してんのか? : [sage] 2017/10/08(日) 20:25:27.98:QHNb58xD0 ^{vkC0}::Send,{vkC0}か?実行エラー発生だわw : [sage] 2017/10/08(日) 20:26:12.98:Hhhcm4fC0 入力の書き方が間違ってる もっとちゃんと調べろ : [sage] 2017/10/08(日) 20:30:32.94:mvXpExRv0 面白すぎるぞw これ延々と続けるの? : [sage] 2017/10/08(日) 20:46:24.13:QHNb58xD0 ^vkC0::Send,{vkC0}か?これもダメだわ : [sage] 2017/10/08(日) 20:52:54.09:mvXpExRv0 お前わざとやってるだろw : [sage] 2017/10/08(日) 21:00:16.02:DDBFFTha0 なら君のキーボードが特殊で何か別のキーコードが発行されてんじゃね #InstallKeybdHookでキーコード調べな : [sage] 2017/10/08(日) 21:38:05.05:CPS4vhgt0 入力が問題ないかどうかは、 MsgBox,OK とか出してみれば良い。 出力が問題ないかどうかは、 ^a:: とかの入力で表示できるかどうか試せば良い。 : [sage] 2017/10/08(日) 21:58:28.07:K4/7+oooM うちでは$付けて>183で出力できてるけどな 日本語キーボードだから実際に押すキーはshift+ctrl+@だけど : [sage] 2017/10/09(月) 00:09:43.90:EuzlchIz0 エスパーになりたいなあ : [sage] 2017/10/09(月) 00:46:03.79:l1fzjuhd0 Ctrlとバッククォートの同時押しをKeymillで見たら VK_OEM3とVK_OEM4の二つの仮想キーが使われてるみたいなので その値でSendしたら出来ました(^^♪ ^vkF3::Send,`` ^vkF4:Send,`` : [sage] 2017/10/09(月) 00:54:57.08:r2rCO5Lw0 散々アドバイス貰っておいて礼の一言も無し こういう奴って他人を利用することしか考えてないんだろうな : [sage] 2017/10/09(月) 01:29:35.12:ylAweGgd0 最近質問初回からストレートに「教えて」って言い方する人いて 地味に気になるわ : [sage] 2017/10/09(月) 05:41:17.13:rf1NTRhp0 教えて!goo : [sage] 2017/10/09(月) 11:57:03.87:HTLieya10 以下のスクリプトが急に効かなくなった ;━現在日時をスタンプする ^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 : [205] 2017/10/09(月) 11:57:38.06:HTLieya10 つづき 削除前の無編集バックアップをそのまま上書きしてみる(動作しなかった時の状態のファイル) 何故か動作OK。その後ahkファイルを再起動するが動作せず 再度、スクリプトの自動リロードのコードを削除しリロードで動作OK 何か考えられる原因てあります? この2つのコードが相性悪いようなのですが何かおかしいところはありますか? エディタはサクラエディタを使用しています スクリプトの自動リロードのスクリプト自体の方は問題無く動きます 自動リロードのスクリプトがある他のファイルでは問題は全く無いです 元々動作していましたが気付いたら動作しなくなってしまいました : [sage] 2017/10/09(月) 12:16:33.49:HTLieya10 連投ですみません スクリプトの順番を入れ替えたら問題無く動作するようになりました う〜ん でも何故かはわからないです 動作OK @現在日時をスタンプする Aスクリプトの自動リロード Bその他 動作せず @スクリプトの自動リロード A現在日時をスタンプする Bその他 : [sage] 2017/10/09(月) 12:25:24.39:KhNcOqwe0 はやく教えろ : [sage] 2017/10/09(月) 12:45:44.05:rf1NTRhp0 教えました。 : [sage] 2017/10/09(月) 12:50:33.29:NXVnt0i+0 #If閉じてないだけとか : [sage] 2017/10/09(月) 13:18:13.91:HTLieya10 ありがとうございました まさにその通りでした いつの間にか#IfWinActiveを消してしまっていたようです こんな初歩的なミスに気づかないとは...恥ずかしい : [sage] 2017/10/10(火) 02:32:14.41:EmIG0yKf0 controlsend,について質問があります たとえば以下の記述でwindows標準のメモ帳なら動きます ControlSend, , test, ahk_class Notepad ただこの記述では動かないアプリが結構ありますが、そのアプリでも成功したりしなかったりの条件があります testをControlSendするアプリケーションのウィンドウが前面にあり、アクティブ状態なら成功しますがウィンドウが最小化状態だと失敗します なのでwinactivateで失敗するアプリのウィンドウをアクティブ化してからcontrolsendしていますが 失敗するアプリでもwinactivateなし、最小化状態でcontrolsendすることってできないもんでしょうか : [sage] 2017/10/10(火) 08:00:37.48:fQ70ranb0 その質問過去に何度も見てるけど解決したところは見たことない気がする ただその質問する人ってほぼもれなくctrl空欄にしてるんだよね まずは送りたいctrl特定してやってみて、できればハンドル指定で バックグラウンド時にはcontrolフォーカス取れなくなるようなアプリなら効果あるかもしれないし そこきちんと指定してやると結構精度上がるよ : [sage] 2017/10/11(水) 11:38:11.27:eCPj5mWL0 Process, Priorityで、AutoHotkey自身をAboveNormalに変更しようとしたのですが、 出来ないようです でも、タスクマネージャーで手動では変更できます。 なぜでしょうか? 出来ないのですか? 自分で自分は変更できないのかな : [sage] 2017/10/11(水) 11:55:15.44:eCPj5mWL0 管理者権限でもやってみましたが変わりません : [sage] 2017/10/11(水) 17:53:01.10:FW7ud3JO0 SetBatchLines, -1にして、数千行のバッチ処理をしている方って居ます? 最近AHKをアップデートしたんですけど、SetBatchLines, -1にしても昔の様に失敗しなくなったみたいなんです もしかして修正でもされたのかな : [sage] 2017/10/11(水) 18:16:15.05:MfAdhfs40 問題のスクリプトと環境は最低限書きましょう そうしなければ何が間違っているのか誰にも分かりません #Persistent Process, Priority,, High MsgBox % ErrorLevel ? "成功" : "失敗" ESC:: ExitApp : [sage] 2017/10/11(水) 21:21:43.67:eCPj5mWL0 失礼しました。私のとんだ勘違いでした。 私のスクリプトは Process, priority, ahk_exe AutoHotkey.exe, AboveNormal としていました ahk_exeを外したら出来ました : [sage] 2017/10/12(木) 01:02:36.24:9+/edpnH0 その方法でためしたところ一応キーはsendできていましたがショートカットは動きませんでした アプリ側の問題みたいです ありがとうございました : [sage] 2017/10/12(木) 12:40:14.52:fl4Aa2dU0 すみません エクスプローラで選択しているファイルをあらかじめ指定したプログラムで起動したいのですが、 選択しているファイルのパスを取得するにはどうすればよいでしょうか? : [sage] 2017/10/12(木) 13:48:00.68:22LCJS230 ctrl+cでクリップボード参照すればいいんじゃない? : [sage] 2017/10/12(木) 14:30:20.01:WOPpKOf60 目的から考えると、Windowsの機能としてある右クリックメニューの「プログラムから開く」とか「送る」で出来るようにしておいて、 それをAutoHotkeyでキーを送って自動化すれば良いような。 : [sage] 2017/10/12(木) 15:31:51.36:gbYEcDhtM 昔ここでcomだかアクティブXだかでエクスプローラからファイル情取得するコードで盛り上がってた記憶あるけど OSバージョンアップのたびにエクスプローラも様変わりしてるから今でも使えるかはわからんね そもそも質問者の環境書いてないし 汎用で使いたいならクリップボードからパス拾うのが無難かと : [] 2017/10/12(木) 18:16:00.48:sKWnufrn0 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になってしまいます。 どなたかお助けを : [sage] 2017/10/12(木) 18:30:17.45:fl4Aa2dU0 220です クリップボード経由で思惑通りの動作できました ありがとうございます : [sage] 2017/10/12(木) 22:33:41.59:hFLP6ZS00 ControlGetText, text, , ahk_id %OutputVar% これだとわざわざID取得した意味あんまりないけど 検索窓のハンドルではなくEditBOXハンドルを取得したい場合は WinGetではなくControlGetを使う その場合もControlGetTextでの指定はControlではなくWinTitleとして指定する ttp://ahkwiki.net/Window#Control.E7.B3.BB.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.81.A7.E3.81.AE.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.83.8F.E3.83.B3.E3.83.89.E3.83.AB.E3.81.AE.E7.9B.B4.E6.8E.A5.E6.8C.87.E5.AE.9A : [sage] 2017/10/12(木) 23:11:28.22:TjO6Vz8k0 スクロールバーのShift+左クリックの動作を中クリックで実現したいんですが、 アドバイス頂けないでしょうか。 : [sage] 2017/10/12(木) 23:36:21.69:WOPpKOf60 その機能、今知ったわ。 今まで知らなかったWindowsの操作かと思ったけど、Live5chの機能なのかな。 : [sage] 2017/10/12(木) 23:43:42.76:hFLP6ZS00 その機能とやらは MButton:: +LButton でできる機能とは違うのかえ? OSバージョンによって挙動違うかもしらんから正しく再現できてるかもわからんが win8ではおなじ挙動になってるようだが : [sage] 2017/10/13(金) 01:10:48.45:3xeDM7QO0 一部効かないのもあるけど、割と昔からあるっぽいWindows標準の操作みたい。 俺も最近知りました。 確かに、MButton:: +LButtonで行けますね。 何か変に難しく考えちゃってたみたいです。 ありがとうございます! : [sage] 2017/10/13(金) 08:14:19.11:3Z5Ik+Fw0 それは、スクロールバーの余白部分のShift+クリックという機能の方なのかな?(いきなりその場所に移動) 最初に試したのが、Live5chでスクロールバーをShift+ドラッグして、Shiftは押したまま維持、 Shiftを離すと、スクロール前の位置に自動的に戻ったから、Windowsにこんな機能があったのかと 思って他のソフトで試すと出来なかったからさっきの書き込みをした。 : [sage] 2017/10/13(金) 08:59:11.07:3xeDM7QO0 いきなりその場所に移動する機能のことですね。 Shift+ドラッグでShift離したら元の位置に戻るというのは見たこと無いですね。 : [] 2017/10/13(金) 09:10:31.30:Kmc31x970 224です。 回答ありがとうございます。 しかし、依然として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 としてみたりしましたがうまくいきません。 ちょっと調べてみたところ ttps://so-zou.jp/software/tool/system/auto-hot-key/commands/window.htm#no26 に「なお、このコマンドで取得できるのはWindow Spyの[Control Under Mouse Position]のTextと同じであり、これで取得できない情報はこのコマンドでも取得できません。」と記載されていたのでこれが原因なのかなと思いました。 長文失礼しました。 : [sage] 2017/10/13(金) 13:27:09.12:trCb60PR0 >226の後半にも書いたがcontrolHWNDはControlではなくWinTitleとして指定する ControlGetText, text, ,ahk_id %controlHWND% 古くてすまんがうちのExcel2007ではAU3_Spy.exeで情報取れてるよ 最新のExcelは持ってないのでわからないが ttps://i.imgur.com/DSOGYgq.png : [] 2017/10/13(金) 14:39:55.15:Kmc31x970 233です。 なるほどーーーーーーーーーーーーーーー 完全に私が勘違いしてました。質問自体が正しくありませんでした。 下記画像の「大文字と小文字を区別する」の文字列を取得するにはどうしたらよいですか? ttps://imgur.com/a/DVFmh : [sage] 2017/10/13(金) 18:05:09.37:xSVAQVol0 テンプレにあるACC.ahkをつかうと取れることは取れる : [sage] 2017/10/13(金) 19:20:26.57:1yuJh+l1M 後出しすぎてワロタ : [sage] 2017/10/13(金) 21:29:13.62:sASp439J0 これを後出しって言うか? 自分が勘違いしてたのが分かったから質問し直しただけでしょ : [sage] 2017/10/13(金) 22:33:16.76:trCb60PR0 解答してた身として言わせてもらうがエスパー要求度高すぎやでw オプション表示の有無についてはままある勘違いだけど あの質問内容とコードからフォーカス行ってないコントロールの情報を取得しようとしてるとはまず気づけないっす つか今回の教訓は下手な説明よりSS一発ってことですな : [sage] 2017/10/14(土) 20:58:48.61:TUhxuyu80 Windows 10でMouseGestureLで管理者権限のアプリ操作する正しいやり方ってなに?。。。 AutoHotKey.exeを管理者権限で実行させる →スタートアップで起動できなくなる MouseGestureLでタスクスケジューラでスタートアップさせる →設定反映後に管理者権限のアプリが操作できなくなる UAC下げるしかないの?うまくやれている人は教えてくれ : [] 2017/10/14(土) 22:39:53.23:zq2sRIVJ0 keyhac >>>>>>>ahk : [sage] 2017/10/15(日) 00:25:01.54:kczcI/Ax0 guiのボタンのテキストを押す度にplayとかpauseとかに替えたいんですけど これって出来ますか? : [sage] 2017/10/15(日) 02:35:03.28:TFGCjPn+0 242ですが guicontrolで出来ました : [] 2017/10/15(日) 07:29:44.49:nQ2z0aEU0 MouseGestureLは タスクスケジューラ>該当タスクのプロパティ>全般タブ>「最上位の特権で実行する」にチェック : [] 2017/10/15(日) 17:15:52.69:Ug0/OrZC0 keyhac >>>>>>>>>>>>>>>>>>ahk : [sage] 2017/10/15(日) 18:39:01.48:jZaJe0Jda Keyhac ・キーボード操作系しかコントロールできない ←AutoHotkeyとはユーザー層が異なる ・設定ファイルはPython ←多少は羨ましい, 複雑な処理をする場合に処理速度が遅そう ・一応、Macにも対応 ・Win版はVisual Studio 2015 ランタイム必須 ←糞 ・アプリケーションデータディレクトリを使う ←糞 ・配布用の実行ファイルを作成できない ・環境のHDD容量が16MBくらい必要(AutoHotkeyの倍) ,245 Keyhacスレ作ってそちらでヤレ : [] 2017/10/15(日) 18:54:34.65:Ug0/OrZC0 キー押しっぱなし病・ホットキーすり抜け病対策の研究 ttp://did2memo.net/2013/10/03/autohotkey-ctrl-key-is-stuck/ : [sage] 2017/10/16(月) 02:40:41.03:wsUgyV9w0 それになってるんだけど何かの拍子で管理者権限のツールが動かなくなる。Windows 10 Insider Previewだから何か変わっちゃったのか?前はいけたのか、最近Windows 10にしたからわからん : [sage] 2017/10/16(月) 04:07:50.47:tduCt/4y0 MGLってAHK_LのインストーラのオプションからUI Accessを有効にしても効かないの? : [sage] 2017/10/16(月) 04:13:04.63:RJWuaMVg0 なんでInsider Previewなんか使ってんの? : [sage] 2017/10/18(水) 01:07:39.70:BXsLEC/o0 UpDownのRangeですが、小数点以下の数値は出来ませんか。 以下の様にしても、5から10までの5段階になってしまいます。 Gui, res:Add, UpDown, Range5.0-10.0 よろしくおねがいすます。 : [sage] 2017/10/18(水) 07:17:16.46:ycPUavpC0 50-100にしてgの中で割って再表示 : [sage] 2017/10/18(水) 11:46:51.26:BXsLEC/o0 サブラベルで処理するのですね。 やってみます、有難うございました。 : [sage] 2017/10/18(水) 15:45:22.45:000xPmmi0 続けて質問失礼します。 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,^,\,@,[,],:,/,* 上記処理をする時にカンマとセミコロンを含めたいのですが、上手くいきません。 よろしくおねがいします。 : [sage] 2017/10/18(水) 18:37:36.90:000xPmmi0 お騒がせしましたが、これで対応できました。 If MyVar is Number : [sage] 2017/10/21(土) 10:48:43.67:ib1iSRB60 既出かと思いますが、見つけられませんでした。 同じ状況の方いらっしゃるかと思うのですが、対処をご教示賜りたく。 よろしくお願いいたします。 windows10 pro 64bit thunderbird 52.4 32bit ロジクールM510 WheelAccel.ahkの加速は"0"でしてません。 WheelAccel.ahkにて、thunderbirdの全てのペインにおいて thunderbirdをアクティブな状態でスクロールすると、ホイール1ノッチに対して一気に何行もスクロールしてしまいます。 非アクティブな状態では、通常(希望通り)の動きになります。 互換スクロールに指定すると、ホイールが効かなくなってしまいます。 thunderbirdでは一切機能させなくてもいいのですが、どうしたらいいでしょうか。。 : [sage] 2017/10/21(土) 11:07:15.17:zu1VgrM50 ahkスクリプト全終了させた状態ではどうなん? thunderbird使ってないからわからんけど多分↓このあたりの予感 トラックボール コロコロ(((○ Part125©2ch.net ttp://mevius.5ch.net/test/read.cgi/hard/1505627302/537-538 : [sage] 2017/10/22(日) 10:54:03.79:Dcuxbaqr0VOTE ギャー send,{shiftup} のことを今までぜーんぶ{shift up}と書いていたー 道理でへんな動きしてたんだ… 以上ですご清澄ありがとうございました : [sage] 2017/10/22(日) 12:00:06.03:4CdFLK3a0VOTE ありがとうございます。 WheelAccel.ahkを走らせていないときは、通常の動きをします。 スームーズスクロールはoffにしてましたが、onでも変わりません。 (´・ω・`) : [sage] 2017/10/22(日) 14:32:51.29:L96ui5KXrVOTE ? それで正常に動いてるなら別にそのままでも良いかも知れないが 盛大に誤解してそう : [sage] 2017/10/22(日) 19:36:09.31:Dcuxbaqr0VOTE あれれ、ウィキ見直したら確かに混在してる…表組みのほうはスペースなしで例示されてて、コード用例ではスペース入ってますね でも自分の場合、今まで不要なShift押下げが発生してた(どうやらShiftとUpとが発生していた?)のがスペースなくすことによってスッキリ根絶されたので、ううむ謎です : [sage] 2017/10/22(日) 20:33:35.27:L96ui5KXr つ公式Help : [sage] 2017/10/22(日) 23:00:48.87:h+7LhoKm0 失礼しました うちの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 ttps://www6.atwiki.jp/eamat/pages/30.html : [sage] 2017/10/23(月) 20:33:30.32:IGQCHjjB0 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 の結果が返ってきます。 考えられる要因を教えてくださるエスパーの方、いらっしゃいましたら。。。(;´Д`) : [sage] 2017/10/23(月) 20:44:49.90:oxsVTEnZ0 全角スペース : [sage] 2017/10/23(月) 20:47:54.03:WCeYnLa+0 の書き込みではつかっちゃいましたが 全角スペースは使用してないと思います(><;) : [sage] 2017/10/23(月) 21:08:58.83:oxsVTEnZ0 画像ファイルをフルパス指定すれば : [sage] 2017/10/23(月) 21:14:49.38:IGQCHjjB0 \Users\HK\Desktop\pics\alc.jpg ↓ C:\Users\HK\Desktop\pics\alc.jpg のフルパス指定にしましたが同じでした><; : [sage] 2017/10/23(月) 21:17:38.32:vqubHTur0 =266 デスクトップスクショの場合、自分は劣化の無いBMPで保存してそれ使ってたな 一度BMPで試してみては?(PNGも使えるようだけど自分は試したことない) : [sage] 2017/10/23(月) 21:19:32.28:vqubHTur0 あ、リロードしてなかったorz 解決したみたいねは忘れて良いよ : [sage] 2017/10/23(月) 21:22:53.81:IGQCHjjB0 BMPで保存したところ できました!!!!!!! 感動です! 皆さんありがとうございました : [sage] 2017/10/25(水) 17:03:51.19:ypp7UERA0 ご返信賜り誠にありがとうございます。 なんだと言われてしまいそうですが、setpointにスムーズスクロールがあり それをoffにすることで、何十ノッチも発生することはなくなりましたが、挙動がおかしかったため setpointをアンインストールし、無事解決しました。 一部機能を使ってましたが、autohotkeyでまかなえますし! firefox quantumのタブスイッチのため、autohotkeyを導入しましたが ztopをやめて、一本化出来ました。 ありがとうございました。 : [sage] 2017/10/26(木) 00:31:46.15:X6UNjp0Ir 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に削らないとマッチしませんでした : [sage] 2017/10/26(木) 00:32:21.09:X6UNjp0Ir 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です : [sage] 2017/10/27(金) 20:04:09.15:EJJiT1eZ0 AHKのエディタですが Notepad++ サクラエディタ 秀丸エディタ EmEditor sublime などがあるようですが、これらの中で、ラベルやホットキーへジャンプ出来るものは どれですか SciTEではラベル名を選択してF12を押すとラベルの個所へジャンプしてくれるし ホットキーのリストも表示してくれるのですが、同じ機能を持っているエディタは どれでしょうか ちなみに、秀丸ではなさそうでした : [sage] 2017/10/27(金) 21:59:52.86:rnKjM+z20 sakura 秀丸 その他のブラウザにタグジャンプ機能があるけど・・・ c言語専用? : [sage] 2017/10/28(土) 01:37:13.87:3WINCwSX0 AHKはメジャー言語ではないので大抵のエディタではデフォルト対応はしていないと思う AHK用のプラグインなりカスタマイズなりが必要になるのでは ちなみに秀丸の場合はAHKシンタックスの強調表示定義ファイルを作ってやると それを元にTagsファイル生成や単語補完などが可能になる Tagsファイルを作っておくことでダイレクトタグジャンブで飛べるようになる 他のエディタも大抵はctags使えるみたいだし ctags形式のタグファイル吐き出せるスクリプトさえ書けば お好みのエディタでダイレクトタグジャンブできるようになると思われ : [sage] 2017/10/28(土) 01:43:48.93:LU+IQveF0 ttp://ahkwiki.net/Tools AutoHotkey用のシンタックスハイライト、オートコンプリートなどの定義ファイルあり : [sage] 2017/10/28(土) 02:09:08.35:kOR4GWlf0 DPIが高すぎるとMouseGestureLのジェスチャーツールチップが小さくて見えない & RR、LL、UU、DDのピクセル数判定が緩くなっちゃうのだけど、これってなんとかなんない?? : [sage] 2017/10/28(土) 06:26:09.85:Ctf6COgz0 秀丸エディターで、AutoHotkey_L.hilight、AutoHotkey_L.txt は入れています タグジャンプですが、tagsファイルの作成でする方法と、Exuberant Ctagsを使ってプログラム実行でする方法を やってみましたが、AHKには対応していませんでした。 ラベルは認識されません ちなみに使い方が違うのかと思って、cppファイルで試してみましたがこちらは関数等はちゃんと認識されていました ということで、ahk用には何か別の専用スクリプトとか用意しないとダメなようです : [sage] 2017/10/28(土) 06:33:37.89:Ctf6COgz0 秀丸エディターではダイレクトジャンプを選ぶとgrepで探すというのがあるので 当分はこれでしますか : [sage] 2017/10/28(土) 08:40:24.48:coB4BUvsr ctagsは自分でルールを書けば解析されるよ : [sage] 2017/10/28(土) 13:24:55.08:kOR4GWlf0 よく考えたらマルチディスプレイで高DPIと通常DPIのディスプレイが混在しているとジェスチャーの判定もおかしくなるしもうだめだ/(^o^)\ 100px移動でジェスチャー判定していたとしたら、200%スケールしているディスプレイでは200px移動に変えないと実態としてずれる。 アドバンスナビのほうもソースコード見てみたけど辛うじて描画領域確保しているのがわかるだけでフォントが小さく表示される原因がわからん・・・ : [sage] 2017/10/28(土) 15:19:16.97:Ctf6COgz0 秀丸エディターですが、AutoHotkey_L.hilightファイルをいろいろ触ってみました もともと入っていたC-function.hilightを参照しながら触ったのですが 91,^[a-zA-Z0-9]+: として、これをtagsファイルの作成のときに選択すると出来なかったのですが 21,^[a-zA-Z0-9]+: としてやると、tagsファイルにラベルも出てきてダイレクトタグジャンプが出来るようになりました この91や21で協調文字の種類を決めているのはわかるのですが、タグの生成にも関わっているとか いろいろとめんどくさいそうですが、タグ生成用のためのファイルは出来そうです あとは、スレチなので、秀丸さんの方で聞いてきますか : [sage] 2017/10/28(土) 19:06:53.26:3WINCwSX0 あらら自己解決してたかな こっちでも調べてたんだけど飛び先ラベルとして認識させるには「行の強調」にしてやらないとダメっぽいね > 21,^[a-zA-Z0-9]+: これだけだとホットキーラベルとサブルーチンラベルにしか飛べないので関数にもジャンプさせるなら 149,^[_a-zA-Z0-9]*\(.*\) を追加すると良さげ ちなみにうちの.hilight 独自構築モノなのでwikiの強調定義とは互換ないです ttps://ux.getuploader.com/autohotkeyl/download/124 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2017/10/28(土) 20:25:45.14:g6R5313m0 わざわざありがとう。DLして参考にさせてもらいました hilightファイルの構造がどうなってるのかググっても良くわからなかったので試行錯誤してやるしかないです でも目的はtagsファイルを作ることなので、tagsファイルは中を見ると構成が簡単そうなので、直接外部アプリ(DosやGnu)で tagsファイルを作成することを考えてもいいかなとも思ったのですが、助かりました : [sage] 2017/10/28(土) 21:30:38.60:3WINCwSX0 ごめん.hilightの中に構造説明のコメント付けてたんだけど長くなるので削っちゃった 秀丸エディタマクロヘルプのloadhilight文の項に強調定義フラグの意味が載ってるので 興味当たったら調べてみて下さい : [sage] 2017/10/29(日) 06:33:32.61:QNF+jVue0 マクロヘルプのloadhilight見てきました。ありがとう。こんなところに書かれても見つからんわw でも良くわかりました。 あとはColorSetだな : [sage] 2017/10/29(日) 06:41:23.64:QNF+jVue0 ColorSet、こちらもわかりました。 マクロヘルプのconfigcolorにありました 頂いたahk20171028.hilightのColorSetのコメントの意味はこれだったのですね これでもうほぼ理解できました。ありがとうございました : [] 2017/10/29(日) 13:56:57.31:KzWRlc+C0NIKU 開いているメモ帳のファイルパスを取得し、エクスプローラで開きたいんですがうまくいきません。 ComGet(WinTitle) { if(WinTitle = "ahk_class XLMAIN"){ ControlGet, hwnd, hwnd, , Excel71, %WinTitle% }else if(WinTitle = "ahk_class OpusApp"){ ControlGet, hwnd, hwnd, , _WwG1, %WinTitle% }else if(WinTitle = "ahk_class PPTFrameClass"){ ControlGet, hwnd, hwnd, , paneClassDC1, %WinTitle% }else if(WinTitle = "ahk_class Notepad"){ ControlGet, hwnd, hwnd, , Edit1, %WinTitle% } Window := Acc_ObjectFromWindow(hwnd, -16) Loop,10 try{ Application := Window.Application }catch{ if(WinTitle = "ahk_class XLMAIN"){ ControlSend, Excel71, {esc}, %WinTitle% }else if(WinTitle = "ahk_class OpusApp"){ ControlSend, _WwG1, {esc}, %WinTitle% }else if(WinTitle = "ahk_class PPTFrameClass"){ ControlSend, paneClassDC1, {esc}, %WinTitle% }else if(WinTitle = "ahk_class Notepad"){ ControlSend, Edit1, {esc}, %WinTitle% } } Until !!Application return Application } : [] 2017/10/29(日) 13:57:59.50:KzWRlc+C0NIKU ;エクスプローラでフォルダを開く WinTitle := "ahk_class Notepad" oNotepad := ComGet(WinTitle) filePath := oNotepad.ActiveWindow.FullName RunAs, %USERNAME%, %PASSWORD% Run, explorer `/select`,"%filePath%" RunAs この様に書いたらエクセル、ワード、パワーポイントまではうまくいったんですが、メモ帳だけうまくいきません。どうかご教授を。 : [sage] 2017/10/29(日) 14:58:41.15:NgmpJOSW0NIKU ifwinexist winget processpath run : [sage] 2017/10/29(日) 15:57:39.21:oo5Bc3OZ0NIKU メモ帳にはCOMが用意されていないみたいだね 素直に、名前を付けて保存 : [] 2017/10/29(日) 16:17:30.91:KzWRlc+C0NIKU ありがとうございます。スッキリしました。 : [sage] 2017/10/29(日) 23:34:38.22:sce/LU2/0NIKU スクリプト&AutoHotKey初心者です 欲しいものは、アプリケーションキーAppsKeyを押すと 1回目 wキーを長押し 2回め wキー+8キーを長押し 3回目 動作無し 以降繰り返し というものです。 何から手を付けていいのかわからないのでここで質問させて頂きました。 ttps://sites.google.com/site/ahktips/howto/helloworld にあることは確認しています。 どうか御教授お願いします。 : [sage] 2017/10/30(月) 04:09:49.70:dZnUwqZQ0 Run, ttp://www.google.com/search?q=%Clipboard% このスクリプトで検索しているのですが、以下の(1)〜(3)のようなことはできるのでしょうか? (1)エディタで文字列を選択してこのスクリプトを実行した時、ブラウザをActiveにしない。 (2)新しいTabを開かないで検索する。 (3)新しいTabで検索するが、現在のTabに留まる。 (1)は検索したあとにもう1度エディタをActivateさせているのですが、もっとうまくできないかと。 : [sage] 2017/10/30(月) 04:34:56.79:vmv0acd+0 wikiのサンプルコード集に「キーを押す度に機能を切り替え」ってのがあるからそれ参考にするといい ttp://ahkwiki.net/SampleCodes 何から手を付けていいか分からないならとにかくwikiをよく読みな 急がば回れ : [sage] 2017/10/30(月) 10:16:54.38:vMir4n9d0 どれもブラウザ依存だからAHK側からは基本ムリ ブラウザ側で設定したり、ショートカットキーやコマンドラインオプションをAHK側から利用するしかない ブラウザ側でできないなら、(1)は検索する前にエディタを最前面固定するといくらかマシに見える (2)(3)は諦メロン : [sage] 2017/10/30(月) 10:17:43.96:jNVZDUzg0 ご使用中のブラウザのコマンドラインパラメータをご確認ください : [sage] 2017/10/30(月) 12:35:59.54:dZnUwqZQ0 分かりました。ブラウザの機能も調べてみます。ありがとうございます。 : [sage] 2017/10/30(月) 22:34:34.80:BusKigX60 回答ありがとうございます。およそ次のような枠組みになることはわかりました。 AppsKey:: Flag += 1 If Flag =1 { 「コマンド1」 Return } If Flag =2 { 略 Return } Flag = ;3回目変数をカラ Return 「コマンド1」に関して ttp://ahkwiki.net/Send を参照すると Loop { Send {w down} sleep 30 } Send {w up} のように書くのかと思いましたが、 loopを脱出する条件やAppsKey:: Flag += 1などを考えるとわかりません。 サーチが不足しているかも知れませんが、どうかお助け願います。 : [sage] 2017/10/31(火) 00:01:07.53:IArYTqnO0 何をやりたいのか良く分からないんだがの 1回目と2回目押した時の「長押し」って押しっぱなし状態で固定して 3回目押したときにwと8を離すってことじゃないの? : [sage] 2017/10/31(火) 05:01:26.49:7gNoBxwg0 ahk初心者です。よろしくお願いします。 環境(win10 64bit、AHK v1.1.26.01) 最初にアクティブだった窓で再生したスクリプトが違う窓に切り替えた後でも、バックグラウン ドの最初の窓で終了(動作)させたくて、下記を書いたのですが反応なしです(IEなら動作しま した)。chromeやoperaをWintitle指定でControlsendをさせる方法がありましたら教えてください r:: WinGetTitle, title, Yahoo! JAPAN ControlSend, ahk_parent, {f5}, Yahoo! JAPAN Sleep, 2000 ControlSend, ahk_parent, {f5}, Yahoo! JAPAN Sleep, 2000 ControlSend, ahk_parent, {f5}, Yahoo! JAPAN return : [sage] 2017/10/31(火) 09:19:18.89:HXbL+oKY0 WingetClassを使おう 脱出条件が書けないのは動作イメージがあいまいだからでは? 「長押し」をどういう挙動にしたいのか考えてみて n秒以上押下 なのか AppsKey離されるまで押下 なのか等 : [sage] 2017/10/31(火) 10:31:49.91:7gNoBxwg0 回答ありがとうございます 下のをやっても反応なしでしたorz 諦める系なのかな?。。 ;r:: DetectHiddenWindows, on WinGetClass, Chrome_WidgetWin_1, A ControlSend, ahk_parent, {f5}, Yahoo! JAPAN return r:: WinGetClass, Chrome_WidgetWin_1 ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN return : [sage] 2017/10/31(火) 12:48:17.99:HXbL+oKY0 タイトルやclass名が固定でわかってるときはGetしなくていいよ とりあえずウィンドウ指定の方法からわかってなさそうなのでwikiを読もう ttp://ahkwiki.net/Window (別タブではなくあくまで別窓という前提で) 確認してみたがアクティブ化後は効くけど非アクティブ時は効かない この手の挙動のアプリはControlSendでは無理な場合が多い WinActivate, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1 ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1 : [sage] 2017/10/31(火) 16:35:05.33:zqELyNoa0 SysListView32ですが、値をとってくるのはGetContorolを使えば出来るのですが リストの任意の場所の値をセットすることって出来ますか 今はその場所へmousemoveでカーソルを移動してクリックさせて Sendで値を入れるみたいなことをリストのひとつひとつにしているのですが、時間がとてもかかります : [sage] 2017/10/31(火) 16:36:10.72:zqELyNoa0 →ControlGet : [sage] 2017/10/31(火) 19:20:47.45:7gNoBxwg0 無理なんですね・・・ わざわざ確認とスクリプト、ありがとうございました : [sage] 2017/11/01(水) 13:04:59.67:oLVxkSWa0 新しいPCでahkファイルへのD&Dで引数が正常に取れないと思ったら8.3形式のファイル名が無効になってた Win10ではシステムドライブ以外のフォーマットは8.3形式のファイル名の無効がデフォになったのかな? : [sage] 2017/11/01(水) 22:15:18.71:0XbH3Oow0 解決しました。指摘通り単に一回目がSend {w down}...etcで動作しました。 動作チェックがテキストエディタ上のみで、またその挙動が物理キーを押し続けた場合と違ってwがリピートされなかったため、 仕様を誤認していました。混乱させてしまい申しわけありませんでした。 アドバイスくださった方々、ありがとうございました。 : [sage] 2017/11/02(木) 11:23:34.64:F6tfVhm+0 AHKで、任意のウインドウのWinTitleを変えることって出来ますか : [sage] 2017/11/02(木) 11:58:51.92:aI4Kc6yj0 出来ます : [sage] 2017/11/02(木) 14:38:27.28:gLmdbRIP0 ``` result2 := VarSetCapacity(point, 64, 0x00) result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int") lasterror := Dllcall("GetLastError") ListVars msgbox ``` このようなものを書いたのですが、GlobalMemoryStatusExが失敗しているようで、 Global Variables (alphabetical) -------------------------------------------------- 0[1 of 3]: 0 ErrorLevel[1 of 3]: 0 lasterror[2 of 3]: 87 point[0 of 32]: result[1 of 3]: 0 result2[2 of 3]: 64 と表示されてます。 error codeの87は"パラメータが正しくない"だそうです。なにがだめなのでしょうか? 環境はwin8.1 64 のAutoHotkeyU64.exeです。 プログラム言語やスクリプトはAutoHotkey以外ほとんどやった事がないです。 : [sage] 2017/11/02(木) 15:00:05.60:k9JkDB2u0 ttps://msdn.microsoft.com/ja-jp/library/windows/desktop/aa366770(v=vs.85).aspx NumPutで構造体のdwLengthを指定しないとだめでしょ : [sage] 2017/11/02(木) 15:02:04.54:VfmNp1pV0 dwLength The size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx. : [sage] 2017/11/02(木) 17:44:56.54:gLmdbRIP0 ありがとうございます!解決しました。 ``` result2 := VarSetCapacity(point, 64, 0x00) NumPut(64, point , 0, "int") result := DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", &point, "int") ;dwLength := NumGet(point, 0, "Int") dwMemoryLoad := NumGet(point, 4, "Int") ullTotalPhys := NumGet(point, 8, "Int64") ullAvailPhys := NumGet(point, 16, "Int64") ullTotalPageFile := NumGet(point, 24, "Int64") ullAvailPageFile := NumGet(point, 32, "Int64") ullTotalVirtual := NumGet(point, 40, "Int64") ullAvailVirtual := NumGet(point, 48, "Int64") ;ullAvailExtendedVirtual := NumGet(point, 56, "Int64") MsgBox, ( メモリ使用率:%dwMemoryLoad%`% 全物理メモリ:%ullTotalPhys%B 利用可能メモリ:%ullAvailPhys%B ページング可能な最大ファイルサイズ:%ullTotalPageFile%B 現在ページング可能なファイルサイズ:%ullAvailPageFile%B 全仮想メモリ:%ullTotalVirtual%B 利用可能仮想メモリ:%ullAvailVirtual%B ) ``` : [sage] 2017/11/03(金) 14:40:06.50:l+MEYLy90 これはバグでしょうか。 ツールチップなのですが 下記のスクリプトで、tipwindowというのを表示させてこれをアクティブにして ActiveWindowsInfoを見てもWindowTitleのところに tipwindow というのが出てきません。にもかかわらず WinGet, aid, ID, tipwindow WinGetTitle, t1, ahk_id %aid% とすると拾えて、t1にはtipwindowと入っています これにExcludeTitleを加えて WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe WinGetTitle, t1, ahk_id %aid% とすると取れないだろうと思ったのですが、これでも t1には、tipwindow が入ってきます。 なぜでしょうか idでもpidでも同じ結果です ^a:: ToolTip, tipwindow, 100, 500, 2 WinSet, AlwaysOnTop, On, ahk_class tooltips_class32 WinGet, aid, ID, tipwindow,,ahk_exe AutoHotkey.exe WinGet, apid, PID, tipwindow,,ahk_exe AutoHotkey.exe WinGetTitle, t1, ahk_id %aid% WinGetTitle, t2, ahk_pid %apid% MsgBox aid=%aid%`napid=%apid%`nt1=%t1%`nt2=%t2% return : [sage] 2017/11/03(金) 14:46:15.58:l+MEYLy90 あ、AHKのバージョンは、v1.1.24.04です ToolTip, tipwindow, 100, 500, 2の最後の2にはなんの関係もありません。これはなしでも同じ結果です : [sage] 2017/11/03(金) 16:03:16.16:bkVry8BK0 #If MouseIsOver("ahk_class Shell_TrayWnd") このコードがwikiにありますが タスクバー上で、Wheelの左右が効かないのはなぜでしょうか? : [sage] 2017/11/03(金) 16:58:12.94:oAKaFRrm0 少し試してみた感じだと、Tooltipの内容をタイトルとして取得できるのは同一のプロセス内だけっぽい? AWIは別スクリプトだから取れてないのかと あとExcludeTitleにはahk_??は使えなかったような : [sage] 2017/11/03(金) 17:24:02.39:l+MEYLy90 ToolTipsのときは、ActiveWindowsInfoのWindowTitleには出てないのに WinGet等で取れるっていうのがなんとも気持ち悪いです デバッグするときにあれって思う : [sage] 2017/11/03(金) 17:29:54.20:l+MEYLy90 ああ、ActiveWindowsInfoっていうのは Window Spyのことね : [sage] 2017/11/03(金) 17:45:24.63:AEQ8+teS0 WindowSpyがTooltipの内容をタイトルとして拾えないのは昔から仕様扱いだったと思う。 ahkとWindowSpyの両方から全く同じコードでGetWindowText()を呼び出しても、 ahkからしか取得できないので、OSの仕様じゃねーの?という扱いだったような。 ahkのcppソースのコメントにWM_GETTEXT()とGetWindowText()のどちらを使うかってのが説明してあって、 WindowSpy改造すればタイトルとして取得できるけど、問題のほうが多そうということで仕様扱い。 まあ、tooltipにはタイトルなんてない、で誰も困らないような。 : [sage] 2017/11/03(金) 18:03:00.03:l+MEYLy90 複数のアプリを立ち上げていて、そのWinTitleがたとえば アプリ1 アプリ2 アプリ3 となっていて、ToolTipsにアクティブになってる同じタイトル名を表示する、ということをしたのですよ で、WinGet, v, PID, アプリ1 ってやったら、なぜかAutoHotkey.exeのPIDを取ってきたのです で、なんで? ってなって今回の話になりました ToolTipsはWindowSpyで見たらタイトルにはなかったのでテキストに入ってるのかと思ってて 原因究明にめっちゃ時間がかかりました。まさかToolTipsのPIDを取って来てたなんて思っても いなかった 結局、こういう場合、WinTitleからは確実にアプリ1のPIDをとることが出来ません 現状ではアプリ1のexe名を憶えておいて、それを利用するとかしか出来ません ExcludeTitleも使えないなんてなあ でもexe名もWinTitleからは得られないんですよね。AutoHotkey.exeになっちゃうから : [sage] 2017/11/03(金) 18:14:40.56:AEQ8+teS0 やろうとしたことは大まかにわかったけど詳細がわからないので解決できるのか知らないけど、 WinGet使う前にtooltip非表示にしてしまえばいいのでは? : [sage] 2017/11/03(金) 18:25:55.44:l+MEYLy90 WinGetで取る前にtooltip非表示にして取ってから 再度表示にする、ということですね 非表示にすると取らなくなるのかな でも可能性はありますね でもなあ、ExcludeTitleが使えたら解決するんですけどねえ ahk_XXのときは使えないとか、なんでやねんw 今日は疲れました : [sage] 2017/11/03(金) 18:37:53.97:l+MEYLy90 >まあ、tooltipにはタイトルなんてない、で誰も困らないような。 それとここですが、結局、Tooltipsの場合は、そこに表示されている内容も WinTitleになる、ということですね。でもWindowSpyには出ないので要注意です ほんとこれこそちょっとしたTIPSになりましたw : [sage] 2017/11/03(金) 19:28:22.49:oAKaFRrm0 ActiveWindowInfo.ahkをモジュール化して組み込んだら 自分のtooltipはちゃんとタイトル表示されるようになったわ : [sage] 2017/11/05(日) 14:42:30.14:lmZ+8dDx0 俺も似たようなことやってるけど 「アクティブウィンドウ:t1」みたいに表示させてたおかげで無自覚回避できてたようだな というか真面目な話、バグとして報告していい案件なんじゃないの : [sage] 2017/11/05(日) 23:42:34.65:mfJuW1tS0 >ToolTipsにアクティブになってる同じタイトル名を表示する この部分がよく分からないんだけど、アクティブになってるウインドウのPIDを取得して、 それを元にウインドウタイトルを取得して、 そのタイトルをtooltipに表示する ということだろうか? だとしたら、 ^a:: WinGet, v, PID, A WinGetTitle, title, ahk_pid %v% ToolTip, % title, 100, 500, 2 return というのは? wingetにおけるPIDの説明には PID 条件に一致する一番最初(前面)のウィンドウのPID(プロセスID)。 となっており、「一番最初(前面)」というのは必ずしも「アクティブ」とは限らないと思うんだが… 間違っていたらスマン : [sage] 2017/11/06(月) 08:39:10.84:+3FFCnlR0 1.app1というアプリが起動してあり、さらに 2.tooltipにapp1と表示させてた状況で 3.WinGetでタイトルがapp1のappを釣ろうとしたら、tooltipの中身のほうにひっかかった という話でしょ。 : [sage] 2017/11/06(月) 17:03:32.17:whGphSg+0 で、そのとき appとtooltipを区別して釣ることができない、ということ : [sage] 2017/11/06(月) 18:29:26.02:M//XmyI50 タイトル指定でツールチップを除外したいだけなら普通にやりようあるけど あまり相手したくない感じの人だから関わらないほうがいいかな : [sage] 2017/11/07(火) 11:44:49.50:C4uwBzlx0 TrayTip の Seconds って機能してるのかな 10 も 30 も変わりないように感じるけど : [sage] 2017/11/07(火) 12:02:59.88:wPhF9P5t0 Note: This parameter has no effect on Windows Vista and later. : [sage] 2017/11/07(火) 12:06:09.50:FUUC0b2I0 本家ヘルプによるとvista以降で機能しない 横からだけどよかったら触りだけ教えて : [sage] 2017/11/07(火) 13:05:31.04:C4uwBzlx0 書いてあったんですね、ごめんなさい。 ありがとうございます。 : [sage] 2017/11/07(火) 17:19:49.83:SgV85eZs0 ahk_class ^(?!tooltips_class32$) : [sage] 2017/11/08(水) 12:57:11.90:FQHhkSa+0 その正規表現の意味がわからなかったけど試したらできたわありがとう 正規表現の勉強しなおしてくる : [sage] 2017/11/08(水) 21:20:19.90:Aynw/XIa0 aaa() { 実行文字列 } で読み込んだ関数が この後に v:: while (GetKeyState("v","p") ) { aaa() } return で読み込めないのなんでだ… aaaの実行ラインは v:: の後に書き込むと問題なく動いてる 1.関数化できてない? 2.引数できてない? あまり恥ずかしい内容なので中身を詳しく書けませんが 原因として考えられることがあれば教えてください : [sage] 2017/11/08(水) 21:50:37.38:D9XhZkru0 よーわからんがとりあえずtooltipで試しすとちゃんと動くので 恥ずかしい内容の中身に問題があるのでは? v:: while (GetKeyState("v","p") ) { aaa() } tooltip return aa(){ tooltip,aaa } : [sage] 2017/11/08(水) 23:12:20.37:Aynw/XIa0 確かにtooltipで動かすと問題なく作動してますね 中を確認してみます ありがとうございます : [sage] 2017/11/10(金) 00:56:44.09:far4pfand 1つの処理だと問題ないんですが a:: の中と b:: の中に 同じ処理を入れようとすると Duplicateエラーが出るのは同じ関数を使っているから? 対応策はありますか? : [sage] 2017/11/10(金) 01:37:54.01:a/DVTS050 記述を隠したがるやつ妙に増えたな : [sage] 2017/11/10(金) 03:14:31.48:U5SA2Xv00 a:: goto label1 label1: return b:: goto label1 label1: return だとエスパー : [sage] 2017/11/10(金) 05:39:27.48:a1txFjAv0 最近、AHKが動かないソフトが増えている気がするけど、俺だけかな? トライアル版を試したこれも動かなかった。 HippoEDIT ttps://www.hippoedit.com/ 俺のバージョンはv1.1.22.04。OSはWin7 64bit。 外国ののソフトは動かないのが多い気がする。 : [sage] 2017/11/10(金) 09:21:13.07:rAX5gFmOa 一年半まえに使い始めたわいので v1.1.23.05やで 最新の v1.1.26.01 試してみたらどうや アプデって言っても置き換えるだけだし : [sage] 2017/11/10(金) 18:02:19.75:a/s4mTF+0 AHKの「なにが」動かない? 書かなければ「分からない」 : [sage] 2017/11/10(金) 18:23:39.05:a1txFjAv0 ホットキーが無視されてしまいます。v1.1.26.0.1でも同様です。キーをフックする優先順位がAHKよりも高いような印象です。 皆様はいかがでしょうか? 最近、海外のソフトでは案外ひんぱんに経験します。AHKを管理者権限でインスコすればいいのかな? : [sage] 2017/11/10(金) 18:33:22.48:e6Htw9YT0 管理者権限で試すのはインストールではなくスクリプトの起動では : [sage] 2017/11/10(金) 18:38:52.24:a/s4mTF+0 問題が起こる最小限のスクリプトを書いていれば話がスムーズに進む F1::MsgBox フックなし $F2::MsgBox フックあり フックの有無 管理者権限 : [sage] 2017/11/10(金) 18:38:58.39:uMNzoQ5c0 質問が頓珍漢過ぎて、さすがに釣りとしかw : [sage] 2017/11/10(金) 18:43:51.83:a1txFjAv0 おお、動きました。ありがとうございました。 管理者権限で起動する方法は↓にありましたので早速やってみます。 管理者権限で実行しなければいけない常駐アプリのスタートアップ設定方法 ttp://tanweb.net/2015/10/21/5101/ : [sage] 2017/11/10(金) 19:04:38.60:a1txFjAv0 私はいわゆるSpaceFNをやっていまして、それがSpace押下でSpaceが入力されて困っていました。 何故外国のマイナーなソフトだとこういう現象が起きるのか不思議ですね。定番のソフトでは経験したことありませんでした。 : [] 2017/11/10(金) 22:15:32.90:Oslygo4n0 windows APIのABM_SETSTATE messageを使って「タスクバーを自動的に隠す」をオンにしたいのですが、 APPBARDATA構造体のlParamメンバーには何を入れればいいのでしょうか?また、hWndメンバーに入れるのはタスクバーのハンドルということでいいのでしょうか? : [sage] 2017/11/11(土) 01:35:11.41:gMztQec90 ABS_ALWAYSONTOP = 0x0002 ABS_AUTOHIDE = 0x0001 : [] 2017/11/11(土) 07:52:33.31:IBbBqaBiM よろしければ出典を : [sage] 2017/11/11(土) 16:56:54.15:F5Z3qywF01111 「タスクバーを自動的に隠す」とは全く違う内容だが、こんなのあったの思い出した 1 Hour Software by Skrommel - DonationCoder.com ttp://www.donationcoder.com/Software/Skrommel/index.html 【RunAndHide】 #NoEnv #SingleInstance,Force #NoTrayIcon SetWinDelay,0 IfWinExist,ahk_class Shell_TrayWnd { WinHide,ahk_class Shell_TrayWnd WinHide,Start ahk_class Button } Else { WinShow,ahk_class Shell_TrayWnd WinShow,Start ahk_class Button } : [sage] 2017/11/11(土) 17:01:34.05:F5Z3qywF01111 あ 「Start」は「スタート」と日本語にしないとスタートボタンに適用されないはず ま、どうでもいいけどスレ汚しスマン : [sage] 2017/11/11(土) 19:12:22.78:r2k0ryN301111 ttp://anago.5ch.net/test/read.cgi/software/1317156599/7 のマンドクセがすげー便利だからブクマしとくといい >■リンク等 >AutoHotkey メモ - Principia > ttp://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2 >なまず日記 > ttp://www.tierra.ne.jp/~aki/diary/ >eamatの日記 > ttp://d.hatena.ne.jp/eamat/ >1 Hour Software by Skrommel - DonationCoder.com > ttp://www.donationcoder.com/Software/Skrommel/ >Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較) > ttp://rosettacode.org/wiki/Category:Programming_Tasks > >以下公式フォーラムより > ttp://www.autohotkey.com/forum/topic8795.html Tips N Tricks > ttp://www.autohotkey.com/forum/topic26855.html ListViewで大きな画像を扱いたい > ttp://www.autohotkey.com/forum/topic19509.html GUIで標準のもの以外を使いたい > ttp://www.autohotkey.com/forum/topic20097.html GUIを手軽に作りたい > ttp://www.autohotkey.com/forum/topic39598.html DllCallで定数調べるのマンドクセ > ttp://www.autohotkey.com/forum/topic22975.html コンパイルユーティリティ%28Compile_AHK II) > ttp://www.autohotkey.com/forum/topic23072.html HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい > ttp://www.autohotkey.com/forum/topic19367.html Windowsのイベントをフックして色々やりたい > ttp://www.autohotkey.com/forum/topic20701.html ShellFolder() : エクスプローラのPathおよび選択ファイルを取得 > ttp://www.autohotkey.com/forum/topic20701-42.html ShellDesktop() : デスクトップで選択されたファイルを取得 > ttp://www.autohotkey.com/forum/topic21451.html ポップアップメニューの情報を得る 昔はテンプレにあったんだがいつの間にか消えてたんだな : [] 2017/11/12(日) 12:55:49.04:8syapqkm0 ジョイスティックの傾き検出して逆にキーボード操作に置き換えるスクリプトが出来たけど需要ある? G13使用とかでジョイスティックの傾きで歩き、走りを検出できるようにしたもの Fallout4用に作ったけどジョイスティックが使えないゲームとか、他にも応用が効くはず あるならうpします : [sage] 2017/11/12(日) 13:08:15.48:WM9jBImW0 JTKで間に合ってます : [sage] 2017/11/12(日) 13:58:55.86:zqxC5E00a 内部的にどうしてんのかは見てみたいからうぷっていいのよ : [sage] 2017/11/12(日) 14:31:21.01:RFK/5/nu0 ブログとかにアップして、アドレス貼ってくれる方が読みやすいから好き。 : [sage] 2017/11/12(日) 17:34:26.63:8syapqkm0 アップしてみました JTKまがいなジョイスティックの傾き入力をキーボードに変換するということをAutohotkeyでやりたいという人 興味があればどうぞ ttps://ux.getuploader.com/autohotkeyl/download/125 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2017/11/12(日) 18:50:56.86:BMyO5Iwfa 入力角度まで検出できんのか ありがてえありがてえ JTKより好みにキーコンフィグできそうだ : [] 2017/11/12(日) 21:23:05.65:PxES/4Ifa この設定ってAHKで実現できますかね..? ttps://qiita.com/hakomo/items/a19eb4b08bc2b3aa1533 緑文字の「Ctrlキーと(SandSの)Shiftキーを押しながら」のところが実現できるのか... : [sage] 2017/11/12(日) 21:24:18.65:0k5Ffqyx0 JTKで出来るのになんでこんなもの作ったのかというと JTKの特殊入力のアナログレベルによって切り替えるってところに不満があったから 多分、座標のXYの傾きだけで長方形判定してる。斜め入力時のときに誤操作が起きるって理由から コッチは半径を求めてそれを目安にすることにした それと内部的にキーおしっぱループの処理がわかってないのが怖い、連打してるかもしれないから なので作った : [] 2017/11/12(日) 21:28:02.68:PRQr2sD50 ありがとうございます。もう少し調べてみます。 : [sage] 2017/11/12(日) 22:24:35.47:0k5Ffqyx0 ttp://jump.5ch.net/?https://ux.getuploader.com/autohotkeyl/download/126 "> ttps://ux.getuploader.com/autohotkeyl/download/126 : [sage] 2017/11/12(日) 23:49:57.26:8jWLb8S60 右スティックの軸はゲームパッドによってZ/Z回転だったり X回転/Y回転だったりモデルによって異なるぞ : [sage] 2017/11/12(日) 23:53:32.89:0k5Ffqyx0 ああ、そうか、そうなっちゃうともうデバッグonにして動いてるパラメーターから同じ要領で変更してください。 関数化してもよかったか : [sage] 2017/11/13(月) 00:03:39.23:HPvoCD+z0 そのうち角度計算、半径計算は関数化してもう少しシンプルに各軸設定出来るようにします。お待ち下さい : [sage] 2017/11/13(月) 00:05:12.60:4HU28rAR0 いや別に要らんけど : [sage] 2017/11/13(月) 00:10:45.51:mG2uBOBH0 ジョイなんとかは自分とこだと暴発しておっかないから使うのやめたなあ : [sage] 2017/11/13(月) 00:16:44.83:jtVf8kaUa 三角関数とか半径計算とか思いつかなかったしめんどくさいことを代わりにやってくれただけでも俺としては助かったか これだけあれば無理にバージョンアップしなくてもええで 軸情報さえ与えればいいからな GPDwin用に使わせてもらうわ : [] 2017/11/13(月) 01:55:06.59:9Yyb7OWG0 Menuで出すホップアップメニューがたまに外クリックしても消えなかったりするんだけど対策とかある? : [sage] 2017/11/13(月) 04:56:43.07:DdvhQXaH0 対策は知らんけど、消す方法ならある loop, 5 { ifwinexist break winactivate, ahk_class #32768 send, {alt} } : [sage] 2017/11/13(月) 05:03:16.68:DdvhQXaH0 ifwinexist じゃなくて ifwinnotexist, ahk_class #32768 : [sage] 2017/11/13(月) 07:42:55.30:GHdXBXoe0 ポップアップメニュー表示中は、SetTimerの割り込みでさえ出来なくなるので、 ポップアップメニューを別AHKにして呼び出さないと、表示後の対策は何も出来ない。 : [sage] 2017/11/13(月) 11:33:02.31:MpwXGRWu0 使ってたフリーソフトがたびたび落ちるから、似たようなの自作して安定してたけど 元がmigemo対応してたんで、こっちにも組み込んでみたら落ちるようになったつらい : [sage] 2017/11/13(月) 16:43:29.88:fTwFmDsma #usehook ^b:: send,^a return ^a:: ;コピー send,^c return ^bでコピーのスクリプトを動かす方法ってないですか?Goto、Gosubは使わないで : [sage] 2017/11/13(月) 17:12:12.27:1/94+gPG0 何がしたいのかさっぱりわからん : [sage] 2017/11/13(月) 17:19:11.52:CsIQdQOr0 この手の質問にあるあるだな 何をしたいのか具体的に書かずに、省略した謎コードを添削させるという : [] 2017/11/13(月) 17:54:41.25:fTwFmDsma なぜそうしたいのかなんて書く必要ねーからだろアホ : [] 2017/11/13(月) 17:56:04.52:fTwFmDsma 質問に答えねーでケチつけるだけのゴミがでてくることこそあるある : [sage] 2017/11/13(月) 18:07:11.52:GHdXBXoe0 クイズ問題だと思って答えれば良いってことだな。 : [sage] 2017/11/13(月) 18:10:32.01:GHdXBXoe0 ^b:: ^a:: send,^c return : [sage] 2017/11/13(月) 19:13:13.64:uV0ePfEm0 いやいやそこでクイズに答えてしまうと質問者は己のコードミスに気が付かないまま終わるで send,^a はどこ行っちゃったんですかねぇ : [sage] 2017/11/13(月) 19:19:50.16:uV0ePfEm0 ああ^cと^a間違えてるわけじゃなくてソフトウェアホットキー有効にしたいのね #usehook外せばいいんじゃないすか : [sage] 2017/11/13(月) 20:15:26.75:fTwFmDsma すいませんその方法も使えないんです。 そうですソフトウエアホットキーを使いたいということです。 ですが#usehookや$がないと無限ループがおこるとかリスクがあるみたいなのでもう少し調べてなかったらあきらめます。 ありがとうございました。 : [sage] 2017/11/13(月) 21:47:08.56:uV0ePfEm0 無限ループ起こるのは ^a:: send,^a とかやった場合だよ A_ThisHotkeyと同じものをsendしたい場合だけ ラベルに$つければいいだけじゃね : [sage] 2017/11/14(火) 23:10:37.76:5FT+P57l0 ダメだ。マウスエミュレーションじゃゲーム上でカメラ動かないわ 何が条件なんだろう : [sage] 2017/11/17(金) 20:21:21.45:v4vSzIoOa 3つを一度に比較ってできませんか? space:: a:=10 b:=20 c:=30 z:=(a < c > b) tooltip,%z%,600,800 return : [sage] 2017/11/17(金) 21:19:49.16:/dyoxVd70 そういう関数を作ればいい : [sage] 2017/11/17(金) 21:26:38.63:Bg65fQp30 ここ2,3か月前に同じような質問見たな まああれは質問というか文句言いに来て恥かいただけだったが : [sage] 2017/11/18(土) 00:44:39.76:9bPtI36B0 and使うのが嫌ってこと? まとめて一行で書く方法が分からないってこと? : [sage] 2017/11/18(土) 01:29:01.86:/66QZllda だいぶ説明不足でしたすいません。 3つの数字は常に変動してて、ホットキー押したときにそのとき一番大きい値のを選択するってことがしたいです。 ifを沢山書けばできるけど一行でやる方法ないかなあと調べたのですが分からず。 一つ増えまして4つで比較ができればいいのですが。 : [sage] 2017/11/18(土) 02:02:09.20:s0iz+kxI0 z := (a >= b ? a : b) >= ( c >= d ? c : d ) ? (a >= b ? a : b) : ( c >= d ? c : d ) 1行で書けるけど、1年後とかに見たら何をやってるのか分かり難いので ifで書いといたほうが視認性はいいんじゃないかな : [sage] 2017/11/18(土) 02:03:39.21:9bPtI36B0 参考演算子使えばやれないこともないが素直にif書くほうが楽だと思うわ : [sage] 2017/11/18(土) 02:04:14.18:9bPtI36B0 おっとかぶった : [sage] 2017/11/18(土) 02:26:47.34:vo5Qrzy00 可変長引数を取るmax関数でも定義すればいいじゃない Max(params*) { t := params[1] Loop % params.MaxIndex() - 1 { b := params[A_Index + 1] t := t > b ? t : b } Return t } a := 10 b := 20 c := 30 d := 40 MsgBox % Max(a, b, c, d) Return : [sage] 2017/11/18(土) 07:53:06.18:DK0R+z7u0 これはすばらしい。 こんなこと出来たんだ : [sage] 2017/11/18(土) 09:51:33.02:73eJM4Pl0 integer限定でよければこういう方法も Max_integer(params*) { o := object() Loop % params.MaxIndex() { o[params[a_index]] := true } Return, o.MaxIndex() } : [sage] 2017/11/18(土) 15:19:43.22:KK0M+Lkna 質問です 対話形式プログラムの自動化ってできるんでしょうか? コマンドプロンプトに対してControlSendで送ることは出来ても 返答メッセージの読み取り方が分かりません。 : [sage] 2017/11/18(土) 17:29:00.55:9x5Xxm/fa おー、すごい できるようになりましたありがとうございました。 ahkを一年以上使ってるけどwiki読んだり検索して似たようなことやってる人のスクリプトを見てもわからなくてちょっと改変して移植もできない場合が多すぎて自分のポンコツぶりが悲しいw : [sage] 2017/11/19(日) 10:41:23.26:Z14m3kUG0 uwscは doscmd で出来るけど、ahkでは試そうとしたこと無いので出来るかどうか解らない : [sage] 2017/11/19(日) 12:25:42.07:S3PDgYNS0 大昔に無理やり実装してた人はいた、オリジナルANSI版の頃のだからたぶん今だと動かないと思うが ここの プロセスを起動して標準出力を読み書き ttp://lukewarm.s101.xrea.com/myscripts/ 最近のだとこの辺とか? AutoHotKey_Lで、標準出力を得る方法。 ttp://poimono.exblog.jp/22219786/ 単純に出力見たいだけだったらファイルにリダイレクトしちゃうのが簡単だけど (書き込み規制に引っかかるので全角化) RunWait, cmd.exe /c es.exe 検索文字列>temp.tmp,,Hide /UseErrorLevel FileRead,var,temp.tmp msgbox,%var% : [sage] 2017/11/19(日) 13:05:22.35:TLd+5rvh0 |clip : [sage] 2017/11/19(日) 16:27:40.09:wn0nPePn0 例えば rmdir を使ってフォルダとその中にあるファイルを削除する場合 app := ComObjCreate("WScript.Shell").Exec(ComSpec) app.StdIn.WriteLine("rmdir /s D:\DeleteMe") ; D:\DeleteMe と DeleteMe フォルダの中にあるファイルを削除するコマンド While (1) { ; DeleteMe フォルダの中に一つでもファイルやフォルダがないと無限ループするから注意 msg .= app.StdOut.Read(1) ; ReadLine だとこちらの入力待ちの時にデッドロックする If (InStr(msg, "よろしいですか (Y/N)?")) { MsgBox % msg app.StdIn.WriteLine("Y") ; 確認を求められたので y を入力して削除を実行 break } } app.StdIn.WriteLine("exit") Return こちらの入力待ちになるまでの処理は色々なやり方があると思う : [sage] 2017/11/19(日) 16:56:27.05:X7pjzKSy0 ttps://autohotkey.com/board/topic/82732-class-command-line-interface/ : [sage] 2017/11/20(月) 09:16:01.49:r9poHEzN0HAPPY いろんなご意見ありがとうございます! 対話型には向いてなさそうな… url一つ目のやつは試してみたけどahk_lだと動きませんでした url二つ目のやつはout of memoryとでて、こっちもダメでした😭 これです! なるほどこうやってCOMオブジェクトを使うんですね すごい勉強になりました 原理的には411とほぼ一緒みたいですね WINAPIはいまだにさっぱりよくわかりません 高速でControlSendを使うと キーボードからの入力がたまにロックされて使えなくなってしまうことがあったので COMオブジェクトで直接読み書きできるならそれにこしたことないですね : [] 2017/11/22(水) 03:26:57.07:DaaBsnMY0 キーの長押しすり抜け病って修正されてるのかな? 未だなら早よ! これがちゃんとできないとカーソル移動とか怖くてAHKは使えないんだよ 致命的な不具合だ! : [sage] 2017/11/22(水) 06:40:23.02:ee0mAgGh0 一生治らないから諦めろ : [] 2017/11/23(木) 11:33:48.10:IP8Uaqwm0 こんなポンコツよく使ってると感心する 信じられないw もちろんこれがゆえにkeyhacに移行したわ! : [sage] 2017/11/23(木) 12:32:45.22:AEqjMUC50 ハイハイ二度と来るなよ : [sage] 2017/11/23(木) 12:36:42.73:6CZftXIg0 ここ数年で作ったものを見返してみたら全くホットキーと関係ないものばかり なんで俺はAHKを使ってるんだろう…? : [] 2017/11/23(木) 14:25:49.30:ekf0KvoP0 : [sage] 2017/11/23(木) 14:48:38.73:S1ijK/CVM ちょっとしたファイル操作とかでもahkでやろうとする癖は付いてしまってるな 本来ならbatやwshあたりでやればいいんだろうけど : [] 2017/11/23(木) 21:58:00.87:IP8Uaqwm0 本当にAHKは使いもんにならんのよ! キーログを見るツールとかを立ち上げてAHKの動作を確認したんだが スクリプトがまともに動かんのよ、ダメだろこれは! ちゃんとフックできてないんよ、笑うわw : [sage] 2017/11/23(木) 22:19:25.20:AEqjMUC50 だからもう来るなよ 頭沸いてんの? : [sage] 2017/11/23(木) 22:38:36.55:IP8Uaqwm0 AHKって宗教か? 本当に改善が必要な部分を指摘してるのにまともに考えられないの? だよ : [sage] 2017/11/23(木) 23:07:41.31:AEqjMUC50 お前こそ宗教なの? 気持ち悪いから早く消えろよ : [sage] 2017/11/24(金) 00:16:07.99:uAE0Il4A0 すり抜けとか押しっぱなしの指摘なんて散々されてると思ってたけど、そうでも無いの? : [sage] 2017/11/24(金) 00:28:07.79:VrzeCVMba /ヽ /ヽ / ヽ / ヽ ______ /U ヽ___/ ヽ | ____ / U :::::::::::U:\ | | ハサミ が // ___ \ ::::::::::::::| | | 使エネーヨ | | | U :::::::::::::| | | ヽ(`Д´)ノ.|U | | ::::::U::::| | | | ├―-┤ U.....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ :::::: : [sage] 2017/11/24(金) 00:40:22.15:2kxbHRR30 いうても困らない範囲内でしか使ってないからなあ そもキーリピート発生するキーをホットキー長押ししようとは思わんし ahkは名前こそAutoHotkeyだがキーカスタマイズだけが目的なソフトじゃないしな ウィンドウ制御とかいらんならahkである必要性は薄い ソフトによって得手不得手あるんだし自分の目的に合ったもん使えばいいよ : [sage] 2017/11/24(金) 05:53:07.19:nG64IX5N0 GUIについての挙動についてです GUI,Add, GUI,Showなどで作ったウインドウ上でスペースキーを押したときの挙動 ってどこかに書いてあるでしょうか このときに別の挙動をするように、 #IfWinActive でこのGUIがアクティブになったときに Space:Msgbox TEST としても反応しないのです で、このGUIウインドウ上でアクティブなボタンが実行されます GUIがアクティブのときにSpaceキーで別の挙動をするようにする方法を 教えてください : [] 2017/11/24(金) 05:59:36.57:FhfG+MVc0 AHKでは長押しカーソル移動がまともにできませんよ ソースコードをテキストエディタで開いてカーソル移動したら 意図しない文字が入力されてしまうなんて怖くて使えませんな : [sage] 2017/11/24(金) 06:10:17.36:nG64IX5N0 テスト用のサンプルスクリプトを作りました スペースキーが出来ません Gui,Add,Button,GButton1 W242 H30,ボタン1 Gui,Add,Button,GButton2 W242 H30,ボタン2 Gui,Show, , テスト return Button1: MsgBox ボタン1 return Button2: MsgBox ボタン2 return #IfWinActive, テスト Space::MsgBox SPACE Up::MsgBox UP #IfWinActive : [sage] 2017/11/24(金) 08:25:23.92:uAE0Il4A0 俺の環境でも再現できるかどうか実験したいから、そのスクリプトを書き込んでくれるとありがたい。 : [sage] 2017/11/24(金) 10:04:29.03:H9F6LVQ/a 伸びてると思ったら変なのが居た : [sage] 2017/11/24(金) 11:37:55.77:L3hSVCH20 Spaceキーを押したらmsgboxに SPACE と表示されるよ : [sage] 2017/11/24(金) 12:01:15.75:/KejfmoM0 だから使わなきゃいいだろ 思考力停止してんの? : [sage] 2017/11/24(金) 12:07:56.16:nG64IX5N0 ごめんなさい。 いまやったら出来ました。おかしいな、さっきは何回やっても出来なかったのに どうも私の環境のようです。 この質問は撤回します : [sage] 2017/11/24(金) 12:25:49.45:QRaiE2Jja 2バイト文字でスクリプト書かないほうがいいぞー : [] 2017/11/24(金) 12:58:05.32:RTDitcQE0 ネットワーク上にあるファイルをFileCreateShortcutでショートカット作りたいんですが、 処理が異常に遅いんですけど、10秒くらいかかるんですけど、何か対処法 知っていたらご教授お願いします。 : [sage] 2017/11/24(金) 13:31:37.36:V79XzJDg0 くわしく : [] 2017/11/24(金) 13:33:56.53:RTDitcQE0 です。 自己解決したので報告します。 FileCreateShortcut, "%filePath%", %shortcutName% といった具合に%filePath%にはダブルクオーテーションを付ける。 以上です。 : [sage] 2017/11/24(金) 14:12:59.90:X+2EL7n0a ラベル名の話。テストとか : [sage] 2017/11/24(金) 14:55:45.26:uBW3Ah/90 自分はじゃないが試してみたら確かに"すり抜け"っつうのは発生した 例えばメモ帳でctrl押しながらhを押しっぱなしにして十数秒〜数十秒そのままにしてると 文字の「h」が入力されたり「置換」ダイアログが現われたりした win7 32bit home ahk 1.1.26.01 自分はこんな操作しないから困らないな : [sage] 2017/11/24(金) 14:57:52.80:V79XzJDg0 いやだから具体的に何故ダメなのか教えて : [sage] 2017/11/24(金) 15:59:58.59:hNkbZ/Nua 俺が引っかかった事例としては関数呼び出しのときにエラー吐いたり、文字化け起こしたり、ファイルの保存形式によってはそのまま貼るとエラー吐いたりして二度手間になったり、コンパイルする時エラー吐いたりした : [sage] 2017/11/24(金) 16:50:37.32:MGSGyO6j0 GUIのボタンです Gui,Add,Buttonで作ったボタンの色を変えることは出来ますか Gui, Color, Red, Blue とかやってみたのですが、ウインドウの背景は変わってもボタンの色が 変わりません ボタンはひとつづつ個別に色を変えたいです オプションのBackgroundもやってみたのですが、良くわかりません Cnもボタンのテキストの色が変わりません : [sage] 2017/11/24(金) 17:18:51.48:jYHL/YfM0 UTF8だから3バイトじゃないの : [sage] 2017/11/25(土) 00:41:35.70:LFO66Rjj0 7-zip32.dll使いたくて↓を参考にDllcallのめぼしいところを Astrに直してみたんですがA32.exeでしか上手くいかないです ttp://mimizun.com/log/2ch/software/1265518996/420-422 U32.exeはLPCSTRの型をAStrにすると戻ってこなくなっちゃう Strのままだと文字化けしちゃう VarSetCapacityのポインタ回りだと思うんですがどう直したらいいかわかる方いますでしょうか ArcGetName(){ /*** int WINAPI SevenZipGetFileName(HARC _harc, LPCSTR _lpBuffer, int _nSize) ***/ global ;;;size:=VarSetCapacity(buf,256) ;;;DllCall(ArcLibPrefix . "GetFileName",UInt,hArc,Str,buf,Int,size,Int) size:=VarSetCapacity(buf,256*2) DllCall(ArcLibPrefix . "GetFileName",UInt,hArc,AStr,buf,Int,size,Int) return buf } : [sage] 2017/11/25(土) 01:07:14.55:g6gRHPWN0 憶測だけど GetFileName が UTF16 じゃなくて CP932 で返すんでしょ。だから U32 を使ってそのまま使おうとすると文字化けする DllCall した後に、StrGet(buf, "cp932") すればいいんでない : [sage] 2017/11/25(土) 05:36:53.80:GERaD2vLM これってマウスの操作はできないんだっけ? : [sage] 2017/11/25(土) 09:19:47.50:5xCYZF4O0 できる : [sage] 2017/11/25(土) 10:20:06.46:96jiAY9X0 基本的にできない 応用的には超めんどい( ttp://anago.5ch.net/test/read.cgi/software/1317156599/659,661 ) Pictureで代用するのが早いと思う ButtonではなくCheckbox, ComboBox, DropDownList, Edit, ListBox, Radio, Textのいずれかなら以下を使うとできる [CLASS] CtlColors - color your controls (2017-10-30) ttps://autohotkey.com/boards/viewtopic.php?f=6&t=2197 : [sage] 2017/11/25(土) 11:42:19.29:LFO66Rjj0 return buf ↓ return StrGet(&buf, "cp932") でできました! ついでに 7-zip64.dll 入れてライブラリ参照元書き換えたらU64.exeでも動きました ありがとうございます! : [sage] 2017/11/25(土) 11:56:20.53:lMhgyyaw0 たとえば、 label1: filename=test1 gosub routine return label2: filename=test2 gosub routine return label3: filename=test3 gosub routine return と、番号が違うだけでほかは同じスクリプトが20個くらいある場合、これって ずらっと書かないとダメなのでしょうか。 それともAHKらしく、 loop,20 { label%A_index%: filename=test%A_index% gosub routine return } みたいな技って使えませんか。これではダメだと思いますが。スクリプト生成まではやってくれないのでしょうか : [sage] 2017/11/25(土) 12:00:28.80:kBt1V0zO0 それなら、filenameを引数にした関数で良いんじゃないかな : [sage] 2017/11/25(土) 12:07:18.25:lMhgyyaw0 そう言われると思いましたが、これは一例で関数は使えないときでお願いします スクリプトの展開まではしてくれないのですか : [sage] 2017/11/25(土) 12:28:22.23:YtrqIety0 ラベルの省略はできないが処理はまとめられる label1: label2: label3: label4: label5: label20: StringReplace filename, A_thisLabel,label,,ALL gosub routine return ラベルごとループで作成したいなら一旦ファイルに書き出して .ahkスクリプトとして実行するしかないのでは loop,20 { FileAppend,label%A_index%:,temp.ahk FileAppend,gosub routine,temp.ahk FileAppend,return,temp.ahk } run,temp.ahk : [sage] 2017/11/25(土) 12:39:03.92:lMhgyyaw0 なるほど、A_thisLabelを使うというのは思いつきませんでした ちょっとやってみましたが、これは使えそうです それと、temp.ahkを出力するやり方ですが、これもインクルードファイルを自動生成させて それを読み込ませるという方法が出来そうですね ahkがインクルードファイルを読み込むタイミングを確認する必要がありそうですが ちょっと期待できそうですw インクルードファイルがなければ自動生成させてreloadで再実行し、ファイルが出来てれば 自動生成処理は飛ばすとか : [sage] 2017/11/25(土) 12:46:13.64:E2bEhulC0 いろいろわかったつもりになってるだけのことが多そうな人だから 関数が使えないと言うのもきっと思い込みなんだろう : [sage] 2017/11/25(土) 12:49:04.66:lMhgyyaw0 ラベルは最初からないとエラーになってしまうのか ならインクルードファイルではダメなのかな でもthisLabelが使えるのは教えて頂いて助かりました : [sage] 2017/11/25(土) 13:02:38.22:lMhgyyaw0 インクルードファイルを使う方法も、ラベルだけを宣言しておいたファイルを作っておいて その後自動生成させれば出来ました。ありがとうございます : [sage] 2017/11/25(土) 14:01:31.19:YtrqIety0 呼び元を動的callにすればdummyラベル処理も省けると思われ if IsLabel(label%no%){ gosub,label%no% } : [sage] 2017/11/25(土) 15:17:00.90:b+uTWP1T0 「AutoHotkey:キー押しっぱなし病・ホットキーすり抜け病対策の研究」 ttp://did2memo.net/2013/10/03/autohotkey-ctrl-key-is-stuck/ : [sage] 2017/11/26(日) 01:39:07.12:M6Ym3I8na そういえば俺の環境下だとすり抜け最近ないな スクリプトの書き方でかなり変わるのかも : [sage] 2017/11/26(日) 07:00:55.53:JvtGy1OW0 キーログソフト(インストール不要)を立ち上げて負荷を掛ける顕著に再現できる ttp://kts.sakaiweb.com/keymill.html : [] 2017/11/26(日) 08:14:54.78:Dha5Tkpk0 ホットキーを押したら特定の変数をリストビューに追加する事って出来ますか? リストビュー初期化時にLV_Addで追加する事は出来たのですが、リストが作られた後に追加する方法が分かりません。 : [] 2017/11/26(日) 08:25:47.32:Dha5Tkpk0 自己解決しました。 LV_Addで変数を%で囲ったらダメでした。外したらいけました>< : [] 2017/11/26(日) 20:16:06.88:dJtA2dZF0 現在のCoordModeを参照する方法ってありますか? 関数内でのみScreenにしたいのですが。 : [sage] 2017/11/26(日) 20:18:04.92:tWW84a3A0 A_CoordMode : [] 2017/11/26(日) 20:57:46.19:dJtA2dZF0 A_CoordModeToolTipみたいな感じなんですね A_CoordModeだけで試してて「出ないじゃん」とか思ってました ありがとうございます : [sage] 2017/11/27(月) 19:53:12.22:EWIA3ZBQ0 Visual Studioで AutoHotKeyを動かす方法はないでしょうか Win10 + Visual Studio community 2017 では動きませんでした Win7 + Visual Studio 2013(管理者権限で実行) もダメでした Win7 + Visual Studio 2013(管理者権限でない) はAHKきちんと動いたのが謎ですが・・ : [sage] 2017/11/27(月) 19:56:01.38:EWIA3ZBQ0 すいません、 Win10 + Visual Studio community 2017 も 管理者権限だとAHKは動かなくて 管理者権限でないとAHKが動きました。 これは何なんだろう : [] 2017/11/28(火) 01:35:37.31:mrDQFh/p0 確実にAHKがダメだから この際、keyhacに乗り換えるのが賢明、時間が勿体無い : [sage] 2017/11/28(火) 01:49:44.36:yiIB//of0 いつまでこのスレに粘着してんだよ 早く消えればいいのに ここに居る人はkeyhacじゃ出来ない事が腐るほどあるからahk使ってんだし : [sage] 2017/11/28(火) 03:26:21.76:xNQcaR7I0 KeyHacも試してみましたが、こちらもやはり Visual Studioを管理者権限で実行するとキーリマップが効かないみたいですね・・ : [sage] 2017/11/28(火) 06:51:35.58:58J1MEBb0 一応確認しとくけど、Visual Studioそのものを操作したいなら、管理者権限が必要かもしれないのはAHKの方だぞ AHKの側に権限が無いなら、 は正常動作 : [sage] 2017/11/28(火) 11:52:35.53:kVU4R78e0 keyhac最高!! : [sage] 2017/11/28(火) 12:13:32.39:vCAPOVUQa きーはっくってのは使ったことがない : [sage] 2017/11/28(火) 14:03:02.90:marODPdK0 ウインドウのハンドルを取って来て、そのウインドウ上に絵を描くことって出来ますか? Dll等を使っても構いません あるウインドウがあって、特定の場所がはっきりわかるように色を上書きして塗りたいのです。 既存のウインドウにデコレーションするというか AHK以外でも、もしそういうことが出来る方法をご存じなら教えてください : [sage] 2017/11/28(火) 16:51:01.37:xNQcaR7I0 ありがとう!解決しました! おっしゃる通りAHKを管理者権限で実行したらVisualStudioでもきちんと動きました : [sage] 2017/11/28(火) 17:10:30.64:Aj3x6nim0 ttps://autohotkey.com/docs/FAQ.htm#uac UIA有効じゃダメなん? : [sage] 2017/11/28(火) 19:00:19.64:mbteePMb0 WinGetでハンドルが取れる WinGetPosでウィンドウのサイズと位置が取れる Guiでウィンドウにかぶさるようなウィンドウを作ったり画像を表示できる WinSetでウィンドウの表示領域や透明度をいじれる こんなとこ? : [sage] 2017/11/28(火) 19:47:20.21:marODPdK0 とってもいいヒントを頂きました。ウインドウに直接描画するのではなく、別のウインドウを作って それにお絵かきして上に載せるということですね。で、WinSetで表示領域を加工するとか ちなみに、AHKのGUIで、ツールチップのようにタイトルとか枠とかのないほんとにプレーンなウインドウって 作れますか : [sage] 2017/11/28(火) 20:41:51.03:lLg2f02R0 F1:: Gui, Color, 00AA00 Gui, -0x00C00000 +ToolWindow Gui, Show, W300 H200 Return みたいな感じかな あとはマウスイベント透過するとかWindowの切り抜きとか透過率とかはWinsetで指定 さらにWindowの移動やサイズ変更に追従させるとか、非アクティブ時や最小化時にhideするとかの必要があればそれも考慮する必要あるかな : [sage] 2017/11/28(火) 20:49:17.54:marODPdK0 すばらしい。ありがとうございました。これは参考になりました : [sage] 2017/11/28(火) 20:50:45.05:marODPdK0 ああ、実際にこれ、動かして試してみましたよ。これをベースにいろいろと考えてみます : [sage] 2017/11/29(水) 17:22:52.94:n/Ybzuan0NIKU tooltipの背景色を変えることは出来ますか。その方法を教えてください : [sage] 2017/11/29(水) 23:31:00.65:Fqluvrxu0NIKU MGLのジェスチャ表示が色付きだけどあれはツールチップじゃなくてGUIをツールチップっぽくしてるだけなのかな? MGLのソース見てみたら分かるかも : [sage] 2017/11/29(水) 23:37:42.39:GQggD9Lg0NIKU progressやguiなら色やサイズを変更可能なのでTooltipとして代用可能 ttps://egg.5ch.net/test/read.cgi/software/1487149472/134 : [sage] 2017/11/30(木) 15:57:06.36:S5EWhTc40 特定のコントロールにマウスオーバーしただけで、そのコントロールにフォーカスを移すことは出来ますか? 教えてエロいひと。 : [sage] 2017/11/30(木) 17:17:53.07:JYsA73zK0 1.MouseGetPosでマウス下のコントロールを取得できる 2.SetTimerで常にマウス下のコントロールを監視 3.取得したコントロールにControlFocus(必要に応じてWinActivateも追加)でフォーカスを移す でどうだろう。スマートではないが。 : [sage] 2017/11/30(木) 18:19:12.52:S5EWhTc40 ありがとうございます。 本来の目的を達成する方法はあるのですが。。 マウスオーバーはトリガーに出来なさそうですね。。。 : [sage] 2017/11/30(木) 19:21:19.06:YADM5yWfd 再生デバイスを変更して ポップアップに変更した端末名 が出るようなスクリプトを Windows10でやり方教えて いただけないでしょうか? : [sage] 2017/11/30(木) 23:52:51.72:z9WhXSkf0 割りとかんたん。 タイマーでモニターしてマウスオーバーでウィンドクラスを取り続けて変数によけとく 変数内のウィンドクラスとマウスオーバーで取ったクラスが違ったらそのウィンドクラスをアクティベートする 以前作ったけどウィンドの順序が切り替わりまくってボツにした : [sage] 2017/11/30(木) 23:54:25.60:z9WhXSkf0 ホットキーをトリガーにするのが嫌ならセットタイマー判定とかWhile判定でええんよって話 : [] 2017/12/01(金) 11:10:36.81:TiVxu/Rn0 Run, explorer `/select`,"%path%" ってやるとQTTabBarで新しいウィンドウが開いてしまうから ファイル名を指定して実行でやってるんです。下記のように。 string = explorer `/select`,"%path%" MGU_ExecuteByFileName(string) MGU_ExecuteByFileName(exeString){ Send, #r WinWaitActive, ファイル名を指定して実行,, 5 MGU_PasteString(exeString) Send, {Enter} Return } MGU_PasteString(string, pasteKeys := "^v"){ Backup := ClipboardAll Clipboard := string Send,%pasteKeys% Sleep, 200 Clipboard := Backup } っていう風にしてるんですけど、これだとたまーーに実行文字列がNullになったり するんで、もっといい方法ないですか? ご教授お願いします。 : [sage] 2017/12/01(金) 21:47:06.69:rX6n9K6c0 OHP 見た感じ COM が使えそうなんだけど、どうだろう ttp://qttabbar-ja.wikidot.com/scripting qt := ComObjCreate("QTTabBarLib.Scripting") qt.Open(path) : [sage] 2017/12/01(金) 23:41:13.96:3bBdrdON0 QTTabBarは使ったことないのでいい加減だけど、タブブラウザみたいに 新規ウインドウで開くか新規タブで開くかオプションで設定できないのかな? : [] 2017/12/02(土) 10:28:46.57:kgC/DzRO0 です。 どうも、ファイルを選択してフォルダを開くメソッドが無いみたいなんですが、 どうでしょうか? shellexecutehookを利用してキャプチャするにチェックをしても、別のプロセスで フォルダーウィンドウを開くのチェックを外しても Run, explorer `/select`,"%path%" とすると、新規ウィンドウで開いてしまうみたいです。 あと報告です。 Clipboard := string の後に Sleep, 100 を入れたらNullになる症状が今のところ出ていません。 : [sage] 2017/12/02(土) 10:39:02.57:/oo7d0lg0 少し脱線するけど俺は「App=Device」というコマンドラインで再生デバイスを変更できるフリーソフトを使用してる AHKとこれを組み合わせてポップアップを表示したりすればお望みのことが出来るんじゃないかな 環境によっては管理者権限で実行する必要がある : [] 2017/12/02(土) 11:44:01.02:kgC/DzRO0 qs := ComObjCreate("QTTabBarLib.Scripting") qs.Open("C:\Users\UserName\Documents") aw := qs.ActiveWindow at := aw.ActiveTab at.SelectedItems := "Book2.xlsx" と記述したらできました!ありがとうございました! : [sage] 2017/12/02(土) 12:08:48.75:TChgRzeMM 解決したみたいだから蛇足だけど起動中のエクスプローラ(qttab)と ahkrun、ファイル名runで管理者権限の有無が統一されてなかったとか? ファイル名runでだけ別プロセスにならない理由がよく分からんね : [] 2017/12/02(土) 15:13:06.03:kgC/DzRO0 です。 試しに RunAs, %USERNAME%, %PASSWORD% Run, explorer `/select`,`"%filePath%`" RunAs とやっていたところを、単に Run, explorer `/select`,`"%filePath%`" と書き換えてみましたが、どちらとも新規ウィンドウで開いてしまいます。 コマンドプロンプトからやってみても同じでした。 ファイル名を指定して実行のexeを見てみたところ、explorer.exeとなっていた のでこれが原因ではないでしょうか? : [sage] 2017/12/02(土) 20:16:38.83:uHWvz9WS0 すみません、以下の場合に複数のキーの状態をまとめて指定する事は可能でしょうか?。 If GetKeyState("RButton", "P") msgbox, 押されている else msgbox, 押されていない この部分を If GetKeyState("RButton" "MButton" "XButton1", "P") とか If GetKeyState("RButton" and "MButton" and "XButton1", "P") とか If GetKeyState("RButton" || "MButton" || "XButton1", "P") とか If GetKeyState("RButton" or "MButton" or "XButton1", "P") とか素人なりにやってみましたが、全くダメでした。 宜しくお願いします。 : [sage] 2017/12/02(土) 20:34:40.15:cHZIOoQo0 やってないから動くかわかんないけど、普通に考えるなら If( GetKeyState("RButton", "P") or GetKeyState("MButton", "P") or GetKeyState("XButton", "P") ) msgbox Hit とか : [sage] 2017/12/02(土) 20:58:57.20:uHWvz9WS0 キタ━━━━━━(゚∀゚)━━━━━━ !!! キタ━━━━━━(゚∀゚)━━━━━━ !!!!! 顔射感激雨あられぇ! 本当にありがとうございました! : [sage] 2017/12/02(土) 23:02:31.70:WK+VS/5y0 「and」や「||」や「or」を知ってるのに書式が分からないって・・・ wikiとかhelp見ないで適当にやってできないから質問した感がもの凄くあるんだが・・・ : [sage] 2017/12/02(土) 23:07:16.71:uHWvz9WS0 これが素人AHK使いの現実何です。 お察し下さい。 : [sage] 2017/12/02(土) 23:16:56.10:cHZIOoQo0 ルールブックがあってもその見方がわからんってレベルだろ でもちょっとやれば、すぐにわかるようになるよ : [sage] 2017/12/02(土) 23:26:20.75:uHWvz9WS0 はい、精進します。 : [sage] 2017/12/03(日) 07:59:09.08:QukwnooP0 andとorは数学の集合でやるからプログラム素人でもわかるよ。 「かつ」と「または」のことだ。縦線は初めてみたときわからんかったので ヘルプみたが。 : [sage] 2017/12/03(日) 08:08:36.38:Y2oOWibi0 中学校かよここは : [] 2017/12/03(日) 10:41:00.60:OIZ/xCmR0 です。 前述した方法で行うとAHK起動後、約5分くらいで下記のエラーが出ます。 Error.File:C:\Apps\MouseGestureL\Config\MG_User.ahk Error.Line:771 Error.Message:0x8013150B - Source: mscorlib Description: オブジェクト '/62092dc6_d0c8_47dd_803a_d87384c15e0f/sqpempia+y4xaa3s532qntda_2.rem' が切断されたか、サーバーに存在しません。 HelpFile: (null) HelpContext: 0 Error.What: Error.Extra: ActiveTab aw := qs.ActiveWindow at := aw.ActiveTab at.SelectedItems := "Book2.xlsx" を下記のように修正したりしましたがエラーが出ます。 qs.ActiveWindow.ActiveTab.SelectedItems := fileName どうもタイムアウトエラーのようなのですが、下記のページの解決策のように AHKで記述する方法がわかりません。 ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=21484&KLOG=41 どなたか解決策をご存知の方、ご教授お願いします。 : [sage] 2017/12/03(日) 10:43:25.22:vwDuTRcl0 Dllがよくわかりません。詳しく説明してるサイトとかないですか : [] 2017/12/03(日) 11:38:27.14:OIZ/xCmR0 こんなのとかどうでしょう? ttps://support.microsoft.com/ja-jp/help/815065/what-is-a-dll : [sage] 2017/12/03(日) 18:02:34.24:Ob6koUHa0 VisualStudio VC++とかやらないとその世界は難しいよ : [sage] 2017/12/03(日) 20:28:38.05:cPf87cAl0 winapi関係はほぼVB(A)で覚えたわ あっちもDeclare宣言必要だから型とか調べるのによくVBの解説サイト見に言ってたわ 今だとMSDN直に見たほうが早いんだろうけど : [] 2017/12/03(日) 20:52:39.69:1qkTmGRt0 ttps://sites.google.com/site/agkh6mze/howto/dllcall : [sage] 2017/12/03(日) 23:38:28.28:3sJMVIk90 Mouseclick left Sleep,aaa mouseclick left Sleep,bbb . . Gosub,A でgosubの処理時間をループするsleepで調整したいのですが Gosubの処理時間を計る方法ありませんか : [sage] 2017/12/03(日) 23:52:11.18:cPf87cAl0 A_TickCountとかA_Nowとか見て処理開始と処理終了で引き算すればいいよ : [sage] 2017/12/04(月) 00:26:00.35:EgqKnQ0L0 ; A_TickCount精度10ms StartTime := A_TickCount Sleep 1000 MsgBox % A_TickCount - StartTime " (ms)" ; ナノ秒の精度が欲しいなら高分解能タイマ DllCall("QueryPerformanceCounter", "Int64*", CounterBefore) Sleep 1000 DllCall("QueryPerformanceCounter", "Int64*", CounterAfter) MsgBox % CounterAfter*1000 / CounterBefore " (ms)" return : [sage] 2017/12/04(月) 00:34:18.83:W2przMgQ0 StartTime := A_TickCount Gosub,A ElapsedTime := A_TickCount - StartTime MsgBox, %ElapsedTime% milliseconds have elapsed. これでも可? : [sage] 2017/12/04(月) 00:42:07.14:W2przMgQ0 お二人が答えてくれてました。 ありがとうございます! : [sage] 2017/12/04(月) 03:27:44.42:K4EOO4xA0 ComObjCreate("QTTabBarLib.Scripting") を使って、使う度に毎回インスタンスを取得してますか? グローバル変数に一度取得したあと、使いまわしてたりしませんか : [sage] 2017/12/04(月) 09:05:37.77:x7eWud6V0 です。 グローバル変数に代入してません。毎回取得してます。 後、mscorlib.dll ver 5.1.30514.0をダウンロードしSystem32フォルダへ投入した ところ、エラー内容が変わりました。下記のようになります。 --------------------------- Error in #include file "C:\Apps\MouseGestureL\Config\MG_User.ahk": 0x8013150B - Source: mscorlib Description: IPC ポートに接続できません。指定されたファイルが見つかりません。 HelpFile: (null) HelpContext: 0 Specifically: SelectedItems Line# 769: } 770: dirPath := MGU_GetDirFullPath(dirPath) 771: qs := ComObjCreate("QTTabBarLib.Scripting") 772: wnd := qs.ActiveWindow 773: qs.Open(dirPath) 774: if (file = TRUE) 774: { ---> 775: wnd.SelectedItems := fileOrDirPath 776: } 777: ObjRelease(qs) 778: } 780: { 781: Try 781: { 787: if (appName = null) Continue running the script? : [] 2017/12/04(月) 09:05:55.01:x7eWud6V0 AHK起動から5分くらいたってから出るエラーって言うところが気になるんですけど どうでしょうか? 私の書いたソースを載せておきます。 MGU_OpenWithQTTabBar(fileOrDirPath, file){ if(file = TRUE){ fileName := MGU_GetFileNameFromPath(fileOrDirPath) dirPath := MGU_GetDirPathFromPath(fileOrDirPath) }else{ dirPath := fileOrDirPath } dirPath := MGU_GetDirFullPath(dirPath) qs := ComObjCreate("QTTabBarLib.Scripting") wnd := qs.ActiveWindow qs.Open(dirPath) if(file = TRUE){ wnd.SelectedItems := fileOrDirPath } ObjRelease(qs) } あと、qs.Open(dirPath)まではエラーなく進むんですけど、 wnd.SelectedItems := fileOrDirPath でエラーが出るんですよね〜。 理由がいまいち分かりません。 : [sage] 2017/12/04(月) 09:57:59.55:ytS1hYKF0 Chromeで何十ページも開いて、特定の文字(リンクになってる)をクリックする作業をしてるんですが、自動化したいです 特定の文字をクリックする方法があれば教えてください。 文字の場所はばらばらなので、場所指定のクリックは出来ません。 : [] 2017/12/04(月) 16:44:32.30:x7eWud6V0 です。 結局、その箇所だけjsで対応することにしました。 原因は今も分からずです。 お騒がせしてすいませんでした。 : [sage] 2017/12/05(火) 15:13:33.43:8CvOUnVS0 1、最初に開くページをURLDownloadToFileでローカルにファイルとして落としていく 2、落としたファイルの中をLoop(file)、Loop,Readでループさせ、RegExMatch()で検索する 3、目的の文字列があったらRunでそのURLを開く : [sage] 2017/12/06(水) 01:55:08.84:HOg34AwG0 自分には難しかったので、URLコピペして文字追加して貼り付ける方法で代用できました。 ありがとうございました。 : [sage] 2017/12/06(水) 10:06:45.47:WwbqM6o60 お知恵拝借したく… getkeystateによってあるキーの押し下げ有無はとれますが そうでなく、「いま押し下げられてるキーを一覧で得る」ような方法はありますか? ホットキーなど使用していると、自分の環境だとわりと発行されたキーがそのまま残ったりします 今まではプログラム的にキー残りがないよう試行錯誤してましたが、単純に「物理的に、残ったそのキーをもう一回押す」と直ることに気づきました ちょうど、今押してるキーやマウスを画面表示させられるkbvというフリーソフトを見つけたので、それで一応対応はできなくはないのですが若干起動が重くて…なのでahk内でどうにか調べられたら良いなと思ったのです : [sage] 2017/12/06(水) 12:06:47.69:DTW3oegna Pはずせ : [sage] 2017/12/07(木) 13:15:23.97:JhBoA+GN0 Win7です GUIでウインドウをたくさん作ると、左下のタスクバーのAHKのところにカーソルを持っていくと 作っただけのウインドウ数のタイトルがポップアップで出てきてしまいます 邪魔なので、これを出さないようにする方法ってありますか スクリプトは1つなので、1つのスクリプトに1つのポップアップのタイトルで十分だとおもうのですが : [sage] 2017/12/07(木) 15:12:11.79:Q21iGqYS0 ttp://ahkwiki.net/Gui,Option : [sage] 2017/12/07(木) 15:39:20.80:JhBoA+GN0 Ownerですか。やってみます : [sage] 2017/12/07(木) 15:47:48.48:IxXRrrQG0 実験してみたよ。 AHKのSetTimerでAltキーを監視してON/OFF表示させていて、 ついさっきたまたまAltを離しているのにAlt押しっぱなし状態になった。 しかし、AHKのGetKeyStateではOFF判定だった。 : [sage] 2017/12/07(木) 16:03:30.20:IxXRrrQG0 また同じ症状になった。 今度はON判定。 とりあえず、あてにならんわ。 : [sage] 2017/12/08(金) 00:47:16.58:2hAmoAId0 529です、いろいろありがとうです キー押し下げ判定自体も精度アヤシイようだと、ちょっとアレですね 過度にahkでゴチャゴチャやらない方向で運用を見直すようにしてみます : [sage] 2017/12/08(金) 00:58:05.77:zpL6DWI5a すり抜け自体体感してないからすり抜けるすり抜けるってのが何なのかすらわからん フックは?ディレイは?ちゃんとDown Up使ってる?Sleepも無茶な数値入れてない? よくわからんな : [sage] 2017/12/08(金) 08:15:37.96:Uq10ElWI0 Photoshopでマウスホイールのみで拡大縮小しようとして Alt Down Scroll Up Alt Up でやると、早くグリグリ回すと拡大しないときが数回に一回発生する。 Sleep入れてもダメ。 これがすり抜け? : [sage] 2017/12/08(金) 08:40:53.67:D3cQmZala それそもそもの書き方がまずいんでは Alt押し込んでホイール離すを何度も何度も繰り返してるから操作のエミュレートになってない Alt押し下げた状態でホイール操作を待つっていうスクリプト書かないと : [sage] 2017/12/08(金) 09:56:51.07:lDhAMoXF0 キーやボタンと違ってホイールには押す/離すなんて判定は無いけど ホイール操作の何を待つんだ? : [sage] 2017/12/08(金) 10:04:31.07:D3cQmZala wheel操作をalt downとalt upで挟めってこと loopで出来る : [sage] 2017/12/08(金) 10:09:13.41:lDhAMoXF0 >Alt押し込んでホイール離すを何度も何度も繰り返してる この文章からして意味不明だし : [sage] 2017/12/08(金) 10:37:25.55:D3cQmZala まじか、わかってないのか : [sage] 2017/12/08(金) 10:40:23.55:D3cQmZala とりあえず続けてもわかってくれそうになさそうだから帰ったらサンプルコード書くわ : [sage] 2017/12/08(金) 10:47:31.06:lDhAMoXF0 「ホイール離すを繰り返す」→そんなことはしてませんよ なぜなら「ホイール離す」なんで動作は存在しないので そもそも質問者が何をやろうとしてるのか分かって無さそうだけど まあも端折らずに自分が書いたコードそのまま貼った方がいいと思うけど : [sage] 2017/12/08(金) 11:04:48.87:lDhAMoXF0 的外れなサンプルとか要らんよ 俺は質問者でもなければコードなんて求めてないし ただお前の言う「ホイール離す」とは何のことだ?って聞いただけだし : [sage] 2017/12/08(金) 11:13:40.82:NsN4xeHW0 そもそも、Photoshopのオプションに「ホイールスクロールでズーム」という項目があるんだけどな。 : [sage] 2017/12/08(金) 11:28:24.09:TIXIlEDB0 ワロタ : [sage] 2017/12/08(金) 11:47:56.54:3CDYarjh0 AHKのすり抜け問題とは関係ないが Photoshop CS6 環境設定 - 一般 Photoshop CC 環境設定 - ツール にそれぞれ 「スクロールホイールでズーム」って項目あるよ チェック入れとけばAlt押さなくてもホイールだけでズームできる : [sage] 2017/12/08(金) 12:04:33.70:iQK6bfpR0 釣りだったりして。 興味があったんで、541は見たいです。 : [sage] 2017/12/08(金) 12:06:49.15:zf1T1yH1M すみません、538です。 出先なので、コードはうろ覚えなのですが、 実際はシフトとアルトを押しながらホイールを回す動作をしたいです。 Shift Down Alt Down Wheel Up(Down) Shift Up Alt Up で書いています。ゆっくり回す分には動作しますが、早く回すと抜けが発生すします。 が言うのはホイールを離すじゃなくてホイールを回すの間違いでは? ホイール操作を待つってスクリプトがよくわからないので、サンプルコード待ってます。 ありがとうございます。 バージョンが違うのでできるかはわかりませんが、それはそれで参考にさせて頂きます。 : [sage] 2017/12/08(金) 12:41:25.62:lDhAMoXF0 だからさ、それはahkのコードじゃないから質問する際にそういう中途半端な書き方は良くないぞって意味な で、本題だけどのオプション設定で済む話ならそれが一番いいだろうけど 余談になるがShiftやAltなど修飾キーならいちいちDownとかUpとか書かずとも WheelUp::Send, +!{WheelUp} だけでいいんじゃね? それでもすり抜けるならしょうがないね が言ってた「ホイール離す」は所詮そのレベルの勘違いだろうな 何を待つのかは未だによく分からんけど : [sage] 2017/12/08(金) 12:43:13.79:NsN4xeHW0 Wheel Up(Down) の前後に Sleep,50 を入れたらどうなる? : [sage] 2017/12/08(金) 13:08:08.94:2S31fZSzM 失礼しました。 修飾キーでの記述では、そもそも全く動作しなかった記憶があります。 すり抜けも変な感じで、Shiftだけ押されてAltが押されないままホイールが回る動作をしたりします。 Sleepを入れて色々時間を調整すると、入れない時よりも失敗の頻度は改善されました。が、完全には対策できていません。 : [sage] 2017/12/08(金) 13:14:27.13:lDhAMoXF0 #Usehook は使ってる? : [sage] 2017/12/08(金) 13:16:54.42:D3cQmZala いやまぁ、使おうが使わまいが構わないけど、帰ったらサンプル書くよ 言いたいことが伝わってないのは気持ち悪い : [sage] 2017/12/08(金) 13:23:15.80:2S31fZSzM 使い方がいまいちわからず、使ってませんでした… >>よろしくお願いしますm(_ _)m : [sage] 2017/12/08(金) 20:23:38.48:RT6XFZXq0 #NoEnv #InstallMouseHook ~*WheelDown:: ~*WheelUp:: wheel := A_ThisHotkey loop { If wheel contains ^,+,!,*,~,#,<,>,$ StringTrimLeft, wheel, wheel, 1 else BREAK } GetKeyState, state, LAlt If state = U send,{blind}{LAlt Down} sleep,30 send,{Blind}{{%wheel%} settimer,AltRelease,-200 Return AltRelease: send,{Blind}{LAlt up} Return すまんloop監視使うよりタイマー使ったほうが簡単だった 最初はloopで全体を監視してWheelを監視して回した分だけ変数にためて sendの回数部分に渡す予定だったけどややこしくなりそうだ 言いたかったのはこんな感じで、まずキーボード操作ならAltを押しっぱなしにしたままwheel操作をするはず その間Altは離さないはずなんだ これを簡単に書こうとして send,{LAlt Down}{Wheel up}{LAlt up} なんて書こうもんならログではホイール回すたびにAltキーが連打されることになる : [sage] 2017/12/08(金) 20:26:39.02:RT6XFZXq0 あ、ホットキーラベルの~は要らないわ。クセで書いちゃったけど : [sage] 2017/12/08(金) 20:38:48.94:WwZSRzo/0 で、「ホイール離す」って何のこと? : [sage] 2017/12/08(金) 20:46:42.00:Vl1WWwQG0 しつけーんだよ : [sage] 2017/12/08(金) 20:53:54.83:WwZSRzo/0 何をキレてんだよ 少し頭冷やせ : [sage] 2017/12/08(金) 21:04:03.00:HqbBgtaD0 冷やし中華はじめました : [sage] 2017/12/08(金) 21:22:38.10:VSEzKsSRM 質問者はサンプル待つつもりで「よろしく」って言ってるのに、横からしつこく揚げ足とりしてるあなたの方が頭冷やすべきでしょ : [sage] 2017/12/08(金) 21:25:44.43:WwZSRzo/0 横からしつこくもなにも俺は最初からその一点についてしか話してない それなのに一人で勝手に興奮してるだけ 間違いなら最初から間違い認めりゃいいだけなのにな : [sage] 2017/12/08(金) 21:33:28.45:3e+Ho6oe0 それがしつこいって言われてるんじゃないか? : [sage] 2017/12/08(金) 21:35:16.88:WwZSRzo/0 だから昼の時点でさっさと答えてりゃいいだけだろ : [sage] 2017/12/08(金) 21:36:17.80:3e+Ho6oe0 お前がしつこく絡んでるようにしか見えないw : [sage] 2017/12/08(金) 21:37:00.69:WwZSRzo/0 じゃあお前はなんでそんな必死に絡んでくるんだ? : [sage] 2017/12/08(金) 21:38:55.52:HqbBgtaD0 冷やし中華はじめましたので... : [sage] 2017/12/08(金) 21:40:10.88:AjW1HkCjM キチガイなんだから 無視しとけよw なんでみんなからしつこいって 言われるかわからないんだから : [sage] 2017/12/08(金) 21:42:13.77:WwZSRzo/0 お前もそんな顔真っ赤にしてんなよ : [sage] 2017/12/08(金) 21:44:12.58:HqbBgtaD0 冷やし中華はじめましたから!...冷やし中華はじめましたから!!! : [] 2017/12/08(金) 22:32:51.68:fgs+Qvb60 amemiyaうっせ : [sage] 2017/12/08(金) 23:16:41.31:3CDYarjh0 ワッチョイもIDも違う複数書き込みを >一人で >顔真っ赤 とか言い出したら要注意な : [sage] 2017/12/08(金) 23:30:52.99:3vQpN7Oh0 いつまでやってんだよ : [sage] 2017/12/09(土) 07:28:21.89:CYxvg1W8M ありがとうございます。 今外出中で試せないのですが、今夜やってみます。 : [sage] 2017/12/09(土) 15:59:53.03:0ga8E3eN0 #NoEnv #InstallMouseHook ; variable EtatWheelDown = 1 EtatWheelUp = 1 Check_EtatWheelDown = 1 Check_EtatWheelUp = 1 Loop, ; ( or SetTimer ) { if EtatWheelDown <> %Check_EtatWheelDown% ; Wheel Down is turn { Tooltip, Wheel Down is turn. Break } if EtatWheelUp <> %Check_EtatWheelUp% ; Wheel Up is turn { Tooltip, Wheel Up is turn. Break } Check_EtatWheelDown = %EtatWheelDown% Check_EtatWheelUp = %EtatWheelUp% } ~*WheelDown:: EtatWheelDown += 1 return ~*WheelUp:: EtatWheelUp += 1 return ちょっと探したらgetkeystateじゃないにしてもホイール回してるか回してないかの取得スクリプトならあった これでホイール離してる状態も取得できるな : [sage] 2017/12/09(土) 23:24:41.40:8nqZo3FbM 質問者です。 わざわざコードを書いて下さりありがとうございます。 今試してみたら動きました! なるほど、ホイール回す度にalt連打されると処理がおかしくなるのですね。(処理が完了する前に次の入力が来る?) ホイール回す間はalt押しっぱなしにするという方法は目から鱗でした。 アルゴリズムやコマンドの勉強にもなりました。これで長くAutohotkeyを愛用していけそうです。 重ねてお礼申し上げます。 : [sage] 2017/12/10(日) 15:50:48.28:Pqr6ID550 あるファイルがあったとして、そのファイルが書き換えられたとき、それをトリガーにある処理をしたいのです どうしたらいいでしょうか タイマーで1秒おきとかにファイルのプロパティーを見ながら日付の変更確認とか、そんなことをしないと いけないのですか? : [sage] 2017/12/10(日) 16:32:00.90:APrQc+rqM ReadDirectoryChangesWとか使えばイベントドリブンにできるかもしれんけど 多分settimerでFileGetTimeし続けるほうが楽だと思う : [sage] 2017/12/11(月) 00:43:34.72:R4P+4TIr0 Windows10のデスクトップはahk_class Progmanですが、一度でもWin+Tabを押すとahk_class WorkerWになります。 これを強制的にahk_class Progmanに戻す事って出来ますか?。 : [sage] 2017/12/11(月) 00:57:30.17:Wcw0iGf+a できない 何故戻したいのかはわからないけど、同時に適用したいならClass判定のところをorでいいんじゃないの? : [sage] 2017/12/11(月) 01:30:33.02:R4P+4TIr0 分かりました、有難うございますた。 : [sage] 2017/12/11(月) 21:58:26.99:jRSbSjCy0 v = aaatttaaa aは文字、tは数字 となっているとします。文字の長さ、数字の桁数は別に3ということではなく任意です この変数vから、数字のtttだけをとってくるにはどうしたらいいでしょうか RegExMatch()とかを使うのですか。 かなりややこしくなりそうですが : [sage] 2017/12/11(月) 22:15:06.32:jRSbSjCy0 文字には漢字やひらがなもあります : [sage] 2017/12/11(月) 22:23:28.76:jRSbSjCy0 すいません。これで出来ました NewStr := RegExReplace( ttl, "[^0-9]+", "") これでいいのかな。 一応、確認したところ出来ていそうです 数字の0-9ってなにか\を使った記法ってあったような : [sage] 2017/12/11(月) 23:12:38.47:n7RiSe0za 正規表現を調べるのを勧める loopでぶん回して取得する無理矢理な方法もなくはないけど : [] 2017/12/14(木) 16:25:41.48:6GnanOnj0 ブラウザ(IE)上で、webに設定されたドロップダウンリストに 規定値(一番上)に選択→隣接リストで同じ処理…… を5回位繰り返させようとしています。 【処理】 start地点のコントロールを選択してからHotKeyを押して処理開始。 1.ControlGetFocus →どのコントロールでも、どのwebページでも 「Ineternet Explorer_server1」しか返ってこない。 2.Key(↑)を送ってリストを遡らせる →TABで次のコントロールに移るを繰り返す →Javascriptで監視されているようで、コントロールの value変更後の処理でFocusが外れてしまい、処理が継続できなくなる。 AutoHotKey無印を使っています。 AutoHotKeyでは、そもそもブラウザ上に展開したコントロールを 直接操作することはできないのでしょうか? : [sage] 2017/12/14(木) 17:05:48.16:e4aJwnFFa javaでやりな : [sage] 2017/12/14(木) 17:34:29.24:/wRQoE030 なぜAHKで無理やりやろうとするのかが謎 : [] 2017/12/14(木) 21:57:18.36:GqJFhkoy0 ショートカットキーを使って、既存のブラウザのコントロールにアクセスしたいというのが もともとの願望でした。 (会社の基幹システムの提携作業をマクロ化したいという動機) 検索すると、HotKey制御ならAutoHotKeyらしいということがわかって、 いろいろ試行錯誤してみた次第です。 ずっとVBAで業務支援ソフトなんかを同僚のために作ってきたのですが、 HotKeyの制御はC#やVBなんかでもできるのでしょうか? 初心者ですが、VisualAtudioは最近ちょろっと触ってるので、 HotKeyを使ったブラウザ制御なんかを学べる環境を教えていただけると幸いです。 : [sage] 2017/12/15(金) 07:32:08.50:lV80xGQe0 | IEウインドウを最大化 | IEを最前面表示固定 | 座標100,200 を左クリック | 1秒待つ | 座標100,220 を左クリック | 0.5秒待つ | 座標300,200 を左クリック | 1秒待つ | 座標300,220 を左クリック | ・・・ | IEを最前面表示固定解除 みたいなのにすればいいだろ #スクリプト動作中はマウス、キーボードを触らない AHKじゃなくても、マウスユーティリティー系で可能 openmausujiならソースが公開されているから、業務で使用も可能だろ : [sage] 2017/12/15(金) 20:50:32.58:OrMVJhUA0 テンプレにあるACC.ahkでDoDefaultActionでいいんじゃないかな それでできないならUI AutomationのSetFocus()でフォーカス合わせるぐらいしか思いつかないけど UI AutomationのほうもAutoHotKeyである程度使いやすいようにされたものがどっかにあったはず : [] 2017/12/16(土) 16:06:02.33:AUvdSLPQ0 ありがとうございます。 レスが遅くなって申し訳ありません。 上記を参考に一度トライしてみます。 : [sage] 2017/12/17(日) 02:32:30.21:MdcvIGaz0 マウスのホイール操作全般(WheelUp WheelDown WheelLeft WheelRight)にキーを割り当てると、単純な a とか一文字でも 不定期に反応しなくなります すり抜けとかではなく全く反応しなくなるのですが、リロードすれば直ります 右クリック、左クリック、サイドボタンでは全く問題ないです 定期的にリロードするよう書き込んだ方が良いのか、それとも 他に何か原因があるのでしょうか? : [sage] 2017/12/17(日) 07:31:34.32:DTDP6E0d0 まず、余分なものをどんどん省いていって、それが再現する必要最低限のスクリプトにしてみましょう。 その結果、原因が分かって自分で解決できる場合もあるし、その最低限のスクリプトをここに書き込めば 誰かにヒントをもらえる確率が上がると思います。 : [sage] 2017/12/17(日) 08:29:26.24:MdcvIGaz0 WheelRight::send,a return これだけしか書いてないスクリプトでも急に受け付けなくなるのですが・・ : [sage] 2017/12/17(日) 09:58:02.93:ZbWlvwyg0 再インストールしてみるとか? : [sage] 2017/12/17(日) 10:15:31.95:ZbWlvwyg0 うちの環境だと問題なく動いてるけどなぁ : [sage] 2017/12/17(日) 11:06:05.21:pdjYZcFx0 一体どういう状況でソレが使いたいのかが分かれば精査しようもある ただ言えるのは、短く書こうとして誤動作おきてるなんてことはよくある WheelRight:: send,{a down} keywait,WheelRight send,{a up} Return くらいは書かないとダメかも : [sage] 2017/12/17(日) 11:12:23.44:pdjYZcFx0 もうちょっというなら、キーヒストリーはちゃんと確認しよう 早すぎて抜けてるとかなら調節しないといけないわけだし、そもそもキーが送られてないとかになると、マウスとの相性まで疑ったほうが良い。 WheelLeft、Rightはうちも反応して無くて、しょうがないからF13,F14をレジストリレベルで割り当ててF13に設定してたりする : [sage] 2017/12/17(日) 11:22:47.97:4YmA5vyY0 それロジマウス使ってるだけじゃねえの : [sage] 2017/12/17(日) 11:34:53.14:fzbLbuEn0 LogicoolのSetpointのような他のカスタマイズ系ツールが入ってて競合していたり 仮想PC上で動かしていたりするんじゃない? もしそうなら思考錯誤すればなんとかなったりするけど Autohotkeyとの併用だと根本的解決は厳しいのでどこかで妥協が必要 : [sage] 2017/12/17(日) 11:39:13.82:4YmA5vyY0 ロジの左右スクロールはWindows標準APIじゃないから反応しないだけ 質問者の様に途中から反応しなくなると言った症状とは全く別問題 : [sage] 2017/12/17(日) 12:12:17.21:eySZ52HR0 その手の質問するときはちゃんと環境書いたほうがいいよ 反応しなくなるのは件のホットキーだけ? それとも他のホットキーも全滅になるん? リダイレクトホイール系のスクリプト入れてるけど ブラウザとかでページの読み込みが重いとスクロール処理に遅延が生じてしまって それ以降他のアプリ上でホイール回しても一切スクロールしなくなることはあった ただ処理はロストしてるわけじゃなく溜まっててるだけで 数分〜10分後に え今更?ってタイミングでスクロールされるけど (win8 x64 & ahkL U64 v1.1.24 & m570) : [sage] 2017/12/17(日) 16:53:37.57:MdcvIGaz0 ありがとうございます そのスクリプトでやってみると初めの一文字だけしか出てきません キーヒストリーを見ると 002: Send,{a down} (0.09) 003: KeyWait,WheelRight (2.81) で止まって Send,{a up} が送られていないようでそれ以降反応しません WheelLeft、,WheelUp とかでも同じ挙動です WheelRight::send,a return で反応しなくなるときはキーヒストリーにも何も記述されなくなってます 環境は win8 x64 & ahk v1.1.26.01(Unicode 32-bit) マウスはエレコム です : [sage] 2017/12/17(日) 17:20:03.67:DTDP6E0d0 #NoEnv #InstallKeybdHook #UseHook SendMode,Input WheelRight::send,a このスクリプトのみを書いたAHKを実行させてみたけど、問題なく動いてるよ。 何回目のホイール右倒しで無反応になるの? : [sage] 2017/12/17(日) 17:31:48.08:3XY+E35O0 とりあえずは無視した方が良いぞ ろくに確認もしてないやつだから : [sage] 2017/12/17(日) 20:17:29.22:MdcvIGaz0 ありがとうございます WheelRight:: send,{a down} keywait,WheelRight send,{a up} Return で反応しなくなるのは2回目からです とりあえずスクリプトの頭に #NoEnv #InstallKeybdHook #UseHook SendMode,Input を付けてうまくいくのか様子を見てみます : [sage] 2017/12/17(日) 20:23:31.32:DTDP6E0d0 俺のロジクールマウスの場合、ホイールに関しては d のみで u の発行は無い。 ボタンのアップ待ちは無駄かもよ。 : [sage] 2017/12/17(日) 20:56:02.37:7BTXFvHJ0 だからホイールには「離す」なんて概念は無いって keywait,WheelRight とか言ってるやつがアホなだけ : [] 2017/12/18(月) 00:49:44.45:fHENqFFZ0 そもそもお前らにとってマウスは仇なの? そこまでキーボードでやりだい心境ってどうなの? : [sage] 2017/12/18(月) 00:56:22.46:L9Sezhe2a keywaitがだめと言うならSleepでもいいぞ。とにかく押し下げて離すをエミュレートさせたほうが確実って話だから : [sage] 2017/12/18(月) 01:09:51.37:D6Zzwcuh0 脳波でカーソルうごかせたら万事解決するのに : [sage] 2017/12/18(月) 01:55:14.23:82QJfRCd0 お前何と戦ってんの? 全く真逆のこと言ってんだがw : [sage] 2017/12/18(月) 11:07:38.53:dHJj4PmW0 >551の時は代替キーがモデファイヤ含んでたからそういう処理が必要だったけどそうでないなら助長じゃね WheelLeft/Rightは倒してる間中リピート発生するみたいだし本来なら WheelRight::a だけでいいはず 書き方じゃなく環境的な問題な予感 : [sage] 2017/12/18(月) 19:44:47.33:8SoFyHAV0 です #NoEnv #InstallKeybdHook #UseHook SendMode,Input スクリプトの頭に上のを付けてもやっぱり不定期にホイールは反応しなくなるので 諦めます : [sage] 2017/12/19(火) 11:49:43.42:Van3T9iO0 WheelScroll.ahkとかWheelaccel.ahkだと、WINDOWS10の modern UI でスクロールできないです。 MGLを使った回避はあったのですが、単体利用での回避方法を誘導していただけないでしょうか。 よろしくお願いいたします。 : [sage] 2017/12/19(火) 12:15:03.89:ZXNMo4hja あれってスクロールメッセージ送ってるはずだからそれがないなら反応しないとかだったような : [sage] 2017/12/19(火) 17:14:58.39:knaBMDJJ0 WheelScroll.ahk modernUI対策版を上げました ただwin10の場合は標準でリダイレクトホイール可能ですのでもうこのスクリプトは要らないかも ttp://www6.atwiki.jp/eamat/pages/30.html : [] 2017/12/19(火) 22:34:23.63:TaxqTr0o0 FileGetShortcutを使って指定したショートカットファイルのアイコンをGUIに表示させたいのですが、FileGetShortcutで取得したアイコンのフルパスは「C:\Users\ユーザー名」の部分が%USERPROFILE%となっているようで、GUIに表示できません。 %USERPROFILE%を展開する方法などはないでしょうか。 Path := "C:\Users\ユーザー名\Desktop\Google Keep - メモとリスト.lnk" FileGetShortcut,% Path,,,,, OutIcon Gui, Add, Picture ,w32 h32 ,%OutIcon% Gui, Show, AutoSize x60y60 : [sage] 2017/12/19(火) 22:50:38.94:spQDjKkw0 %USERPROFILE%を直接展開する方法は分からないが、 A_UserNameでログインしているユーザー名を または、A_Desktopでデスクトップフォルダのフルパスを 取得することは出来るから置換すればいいような… : [] 2017/12/19(火) 23:25:51.46:TaxqTr0o0 ありがとうございます。 StringReplace, OutIcon, OutIcon,% "%USERPROFILE%" , %USERPROFILE%, All この一行で解決しました。 : [sage] 2017/12/20(水) 08:57:02.76:CxHWmxkW0 お世話になってます。 WheelScroll.ahkの作者さんがいらっしゃったのですね。 スクリプトの修正ありがとうございました。 業務用ソフトだからでしょうか。 特殊なコントロールが多いせいか、必須スクリプトです! 加速以外は全部の機能を使ってると思います。 横スクロールのコメントがございました。 Shiftホイールで横スクロール部分を有効にしました。 : [sage] 2017/12/20(水) 17:56:12.25:CxHWmxkW0 もしお時間をいただけるならば、ご確認、ご対応いただければ幸いです。。 20150711バージョンにて、excelのシート切り替えのため、下記を追加しておりましたが 20171219バージョンで機能しなくなりました。 スクリプトを比較してみて、競合しそうな追加部分は無いように見えるのですが、いかがでしょうか。 WheelScroll.ahkの最終行に追加 #IfWinActive ahk_exe EXCEL.EXE XButton1::Send ^{PgUp} XButton2::Send ^{PgDn} Return あと、諦めていたことなのですが、excelにて、列の固定(ウインドウ枠の固定)をしていると横スクロールできません。 環境依存などあれば書き込みます。 よろしくお願いいたします。 : [sage] 2017/12/21(木) 00:44:34.93:tyYKgEs60 ご使用&報告ありがとうございます 当方先月やっとwin10に移行したばかりであまり動作確認が取れておりませんでご不便をおかけします 色々酷いので手直ししたいんですがWheelaccelやMGLのほうがいい感じに改良されてるようですし こっちはもう自分用で汚くてもいいかな〜みたいな感じで放置してました こんなでも使ってくださってる方がいるのは嬉しいです、ありがとうございます >WheelScroll.ahkの最終行に追加 こちらでも20171219に同条件で追加し、Excel2007、2016の2種で試しましたがどちらも問題なくシート切替できました もしやShiftホイール部のコメントを外されたときに */での閉じに失敗してたりしないでしょうか ; /***** チルトが無いマウス用 : ; */ ↑行頭にセミコロンでコメントのコメント化してみてください (shift横スクロールはチルトのないm570使い続けてる自分のために入れたままにしてたんですが 今更チルトマウス使ってない人のほうが少なかろうということで今回コメントにしてしまいました ややこしいことしてすみません) excelの固定時横スクロールについては原因判明しましたので次回更新時に修正いたします 他にも手直ししたい箇所があるため少しお時間下さい : [] 2017/12/21(木) 01:20:20.36:SquZXOD10 send {5 down} の5を変数でできないです? : [] 2017/12/21(木) 01:33:36.72:SquZXOD10 evalがあったのか〜 : [sage] 2017/12/21(木) 01:44:00.48:PxmCSxyY0 a:=5 send {down %a%} : [] 2017/12/21(木) 02:05:04.78:SquZXOD10 %か〜さんんきゅ〜 : [sage] 2017/12/21(木) 09:26:50.18:Iywphmus0 ご説明賜り感謝致します。 コメントアウトの方法は理解しており間違っていませんでした。。 これから出張なので、来週改めて確認していきたいと思います。 その他含め、ありがとうございました! 私はm510でチルト出来るのですが、shift横スクロールの方がスクロール量をコントロールできるので便利です。 : [sage] 2017/12/21(木) 17:04:35.86:6WwU69go0 : [sage] 2017/12/21(木) 17:38:42.68:WwMk0bk3p 632です。 ahk_classで指定したらシートの切り替えができました。 あとコメントにありました互換固定のテストは、| modeの方でないと動かないソフトがありました。 ありがとうございました。 : [sage] 2017/12/21(木) 20:40:35.45:WrHlVdtR0 最近 本体アップデートされないですね : [sage] 2017/12/21(木) 21:04:01.05:coGv5Pxe0 github見ると前回の更新からFixedが大分溜まってきてるし落ち着いたら更新するんでない : [sage] 2017/12/22(金) 10:01:04.41:vcVm8yL20 ソートはせずに、前に出てきたものを同じ行を省く操作ってありますか たとえば、 aaa bbb ccc aaa ddd bbb を aaa bbb ccc ddd としてほしいのです。ソートはしません : [sage] 2017/12/22(金) 12:31:37.29:DzJ++uf1r >637 var = ( aaa bbb ccc bbb aaa ) Loop, Parse, var, `n { If(!InStr(newvar, a_loopfield "`n")) newvar .= a_loopfield "`n" } Msgbox, %newvar% : [sage] 2017/12/22(金) 12:35:31.15:CpHj++au0 すべての変数を一個ずつIfで比較して、一致しなければ出力してけばいいんじゃね : [sage] 2017/12/22(金) 15:39:38.72:O+PHC10P0 ポインタの使い方がよく分かりません i := 4 p := &i MsgBox, % *p MsgBox, % NumGet(p + 0, "int") のように書いても両方共iとは関係のない値が出てしまいます どうすればpからiの中身にアクセスできるのでしょうか? : [sage] 2017/12/22(金) 15:49:45.03:O+PHC10P0 すいません、自己解決しました VarSetCapacityとNumPutを使えば良かったのですね : [sage] 2017/12/23(土) 08:30:47.00:jbJlOP0C0 あるアプリでツリービューをクリックするとサーバーと通信してその結果を 隣のリストボックスに表示する、というのがあります 今はAHKでmousemoveでカーソル移動してツリービュー上でクリックして 隣のリストボックスの情報をControlGet等でとっています これをもっとスマートにしたいのですが、 ツリービューをクリックしてネットに情報を送るところを直接httpで送ることは できませんか。具体的にどういうメッセージを送ってるのかを知ることは出来ないのでしょうか URLDownloadToFileというのは見つけたのですがここまでのことはAHKでは出来ませんか : [sage] 2017/12/23(土) 12:21:47.75:2pB5qSyN0 アプリの名前伏せられても通信プロトコルすら分からないわけだが 質問内容から想像つく範囲で答えるならdllcallからwinsockAPI叩けばおそらく可能ではある ただSendMessageみたいに1発投げればいいってもんじゃないし 相手サーバーとのネゴシエート必要だし通信プログラムの知識は必要になると思うが : [sage] 2017/12/25(月) 10:30:36.34:LC3msSEB0XMAS v.1.1.27.00にアップデートした ●AutoHotkey Downloads ttps://autohotkey.com/download/ : [sage] 2017/12/25(月) 15:17:48.28:4tI3Wjp7aXMAS エディタであるように二打鍵からなるホットキーを設定したいのですが どうやればいいのでしょうか? たとえば Ctrl+K→Ctrl+T など : [sage] 2017/12/25(月) 16:05:01.58:dcbUg3oN0XMAS v.1.1.27.00にしたらremap用スクリプトがエラーで起動しなくなった sc073::+vkE2sc073という記述が一箇所あってそこでエラー発生したてので、 sc073::+sc073としたらスクリプトが正常に動いた 今バージョンからvk**付けるとエラーになってしまうのか? : [sage] 2017/12/25(月) 16:10:40.46:mWbboXyW0XMAS wiki読め : [sage] 2017/12/25(月) 16:31:55.71:LC3msSEB0XMAS 変更履歴によるとこれまでの「vk**sc***」という記述は廃棄されてsc***を削除した「vk**」でOK ●Changes & New Features ttps://autohotkey.com/docs/AHKL_ChangeLog.htm : [sage] 2017/12/25(月) 18:24:54.21:mj5Z4sTu0XMAS ahk2なんて作ってるのか 期待はしたいが現状のコード1万行を移植しないといけないと思うとめっちゃだるいな : [sage] 2017/12/25(月) 21:26:06.64:Hj7/q9TgaXMAS ソースコードはテキストだ つまり文章をコンバートするスクリプトさえ作ればなんとかなんじゃね? : [sage] 2017/12/26(火) 04:54:57.32:uLjqpZSC0 A_Argsは嬉しい : [sage] 2017/12/27(水) 16:25:05.40:Aacf2UtF0 #IfWinActive,無題 ahk_exe notepad.exe としてもメモ帳を認識しない。 無題をやめて - にすると大丈夫。 何か問題ある? スクリプトはUTF-8。 環境は、Windows10で、v.1.1.27.00です。 : [sage] 2017/12/27(水) 16:27:33.29:Aacf2UtF0 UTF-8のBOM付きやSJISしたら動作した。 ウィンドウタイトルの日本語を探すのは初めてだから、ごめんちょ。 : [sage] 2017/12/30(土) 03:58:59.09:gls+cAd20 マウスの中ボタン+右クリックにホットキーを当てると 中ボタン単体では動作しなくなってしまうので Mbutton::send,{Mbutton} return としていたのですが、これだと中ボタンでドラッグアンドドロップできなくなることに気付いて Mbutton::MouseClick,middle,,,,,d return Mbutton up::send,{Mbutton Up} return と書いてみたのですがうまくドラッグアンドドロップ出来ません どのように書けば良いのでしょうか? : [sage] 2017/12/30(土) 04:20:23.50:b6YqK2p70 中ボタン+右クリックにホットキーを当てた時点で 中ボタン単体の判定は中ボタンを離した時に行われる様になるので 通常の方法ではドラッグは出来なくなる 別の対処策としては2度押しでドラッグにするとか、別のボタンにドラッグ割り当てるとか幾つかやりようはあるけど どうしても普通にドラッグしたいなら中ボタン+右クリックを諦めた方が良い : [sage] 2017/12/30(土) 05:26:41.98:xIT/wV5A0 Hotkeyコマンドでホットキーをトグルさせるのは? 特定のウィンドウがアクティブ時、または中クリック長押しで切り替えとか : [sage] 2017/12/30(土) 09:28:37.04:mI1ieLxE0 中ボタンでドラッグアンドドロップ出来るアプリを持っていないので確認できないけど、 オートスクロールのキャンセルはCtrlで出来るから、 #if GetKeyState("MButton","P") RButton:: Send,{Ctrl} ToolTip,M+R Sleep,1000 ToolTip return #if こんな感じでどうだろ : [sage] 2017/12/30(土) 10:20:44.83:gls+cAd20 出来ました!ありがとうございます GetKeyStateを使えばホットキーとして割り当てなくて済むのですね! : [sage] 2017/12/30(土) 13:31:53.23:fvgI/zHL0 それだと中+右ボタンを押す時にも中ボタン単体押しが送信されるのでは? それで構わないならば ~MButton & RButton:: にすればいいだけだな : [sage] 2017/12/30(土) 21:59:48.99:gls+cAd20 でも出来るのですが ~MButton & RButton:: でも出来ますね ~ の意味を調べたら イベントを乗っ取らず、そのままシステムに通す って書いてあったのですが 元のキーの機能を殺さずに的なことなんでしょうか? : [sage] 2017/12/31(日) 12:27:31.81:cHZnLDz90 v1.1.27.01が公開されたよ ●Changes & New Features ttps://www.autohotkey.com/docs/AHKL_ChangeLog.htm : [sage] 2017/12/31(日) 15:22:16.33:VvllMHuur vkF3SC029::rerurn ;全半角 vkF4SC029::rerurn ;全半角up でエラー出る 俺環かな スキャンコードなし指定ならokだた : [sage] 2017/12/31(日) 17:48:52.87:iRBxU1N10 久しぶりにアップデートしたら自分もInvalid hotkeyってエラー出たわ とりあえず1.1.26に戻した : [sage] 2017/12/31(日) 17:56:20.08:iRBxU1N10 仕様変更あったのね チェンジログ読んだらちゃんと書いてあったや Scripts containing hotkeys of the form VKnnSCnnn:: will need to be corrected by removing SCnnn, which was previously ignored. しかし互換性持たせてくれればいいのになぁ : [sage] 2018/01/01(月) 22:19:27.79:Yv5Bp8s50 エラーが出るかと何かと思った スキャンコード全部削除したけど動作がおかしくならないか不安 : [sage] 2018/01/02(火) 00:23:22.16:cBxV7kcZ0 え?scxxxのみで何も問題ないけど… : [sage] 2018/01/05(金) 23:03:42.41:l4zNz2Hg0 あー、先にここ見とくべきだった。更新したら動かなくて何だろうかと せっかくなので、これからverup予定の方に、自分が修正したキー一覧を以下に 変換…vk1Csc079 無変換…vk1Dsc07B :(コロン)…vkBAsc028 :(コロン)…vkBAsc03A ;(セミコロン)…vkBBsc027 ;(セミコロン)…vkBBsc03B ,(コンマ)…vkBCsc033 \(バックスラッシュ)…vkE2sc073 CapsLock…vkF0sc03A ひらがな/カタカナ…vkF2sc070 全角/半角…vkF3sc029 全角/半角…vkF4sc029 grepツールで済ませてそんなに時間はかからなかったけど、久しぶりに面倒な更新作業だった : [] 2018/01/06(土) 01:51:53.58:gHX87yO10 vkxxscxxxが使えなくなって vkxxまたはscxxxのどちらかで指定と理解してるんだけどいいんかな? 使ってる人いるかわからないけど・・・ vkff系のscはkeywaitでエラー出たので sc056:: keywait,vkff return としたらエラー無しで動いた。 sc05eは使えなくなったが、こいつだけvkff::をアテた。 とりあえず他とバッティングしてない。 : [sage] 2018/01/06(土) 22:19:48.65:L9VE7V/R0 こんばんはー、ホットストリングって機能に初めて手を出してみたんですけど、 ちょっと???な部分があるのでお伺いしたいです。 「[[」って打ったら「『」、「[[[」って打ったら「【」になるようにするにはどう書けばいいんでしょう? Z0オプションでバッファが残るっていうならそれ指定するだけでいいのかなーと思ったら思うように動かず。 フラグを変数に格納するなり、複数行書かないとダメでしょうか? : [sage] 2018/01/06(土) 23:15:38.82:G7wFYGrJ0 ここ↓見るとか具体的にスクリプト晒すとかしないとレス付かないぞ ホットストリング - AutoHotkey Wiki ttp://ahkwiki.net/Hotstrings : [sage] 2018/01/07(日) 00:56:44.38:JkICX0vw0 ああいえ、読んだんですがイマイチ仕様を把握できず、 シンプルな構文で書けるのか書けないのか書けないのか、単にそれだけを慣れている人に聞きたかったんです。 必要ないでしょうけど一応晒すと、 :*Z0:[[::『 :*:[[[::【 で[を3回押したら【になりそうだなーと思ったのですがならないなーってことでして。 : [sage] 2018/01/07(日) 01:23:31.75:rPkuxGOZ0 ホントにちゃんと読んだのか? 特に「終了文字」の項目を・・・ : [sage] 2018/01/07(日) 01:54:30.71:JkICX0vw0 ……? *で不要化してますよね? : [sage] 2018/01/07(日) 12:54:08.50:vRDST1RB0 本当にちゃんと読んだか? 「置換後のテキストに2バイト文字を使うことはできないので、スクリプト実行型でクリップボードを経由して貼り付けるなどの方法を取る必要がある」 : [sage] 2018/01/07(日) 16:17:48.05:JkICX0vw0 ご自分で試されましたか? 大分前から2バイト文字送信も実装されているようですが そもそも質問の方向性が全く違います : [] 2018/01/07(日) 16:59:29.06:TEnpSFgY0 『が入力される時に[[がBSで消されたことになるので、続けて[を打っても:*:[[[::が実行されない。 : [] 2018/01/07(日) 17:03:26.18:TEnpSFgY0 ホットストリングでやっても出来なくはないけど、ややこしいし色々問題あるからおすすめしない : [sage] 2018/01/07(日) 17:41:28.22:JkICX0vw0 あー、簡単に上手いことはいかないんですね。 B0にして、かつスクリプト実行型に変えたらようやく入力バッファ残りました。 しかもバグなのか、必要とされるBackspaceの量(置換後に本来消す文字数)まで引き継がれてしまい、 後続もB0で手動でBackspaceの数を調整しないといけないハメに。 さらに言うと、「:B0 O*:abc::」のあとは「:B0 O*:bcd::」では反応せず、「:B0 O*:abcd::」のみ受け付けると仕様がよーわからん…。 とりあえず↓のように出来ましたけど、もっとスマートな書きかたあります? :B0 O*:[[[::{Backspace}【 :B0 O*:[[:: Send, {Backspace}『 Return : [] 2018/01/07(日) 18:35:00.89:TEnpSFgY0 ?オプション付けないとa〜z打った直後に動いてくれないから付けた方が良い ちなみに、他にキー入力をいじるソフト(やまぶきRとか)使ってるとちゃんと動かない事がある : [sage] 2018/01/10(水) 01:51:34.06:BCaOYMAn0 ゲームにAHKを利用しているのですが以下はQキーを押したとき @Iキーを送る A指定座標上で右クリ B再びIキーを送る という単純なものです Q::example() ; examplel(){ BlockInput On Send {i} Click right 1305,829 Send {i} BlockInput Off return } ここで質問なのですが、このマクロによる操作(@〜Bですね)が一通り終わった後、マウスポインタをもとの位置に戻ってこさせるということは可能でしょうか? : [sage] 2018/01/10(水) 02:51:37.30:4l+dsFFh0 移動する前に座標取得 MouseGetPos : [sage] 2018/01/10(水) 10:42:20.97:JKf1Cq3D0 ありがとうございます : [] 2018/01/11(木) 22:19:09.67:HG8U+U2Z0 RegExReplaceでファイルパスのファイル名だけを置き換えようとしたんですけどこう書いてしまうと NewStr := RegExReplace("C:\a\b", "([^\\]+?)?$", "c") tooltip,%NewStr% 結果が「C:\a\cc」となってしまいます。なぜか置き換え文字に指定した文字が二重で入力されます 以下のように置き換え回数を1に制限すると「C:\a\c」となってくれます NewStr := RegExReplace("C:\a\b", "([^\\]+?)?$", "c",,1) tooltip,%NewStr% 使っている正規表現がまずいのかRegExReplaceの記述の仕方がまずいのかわかりませんが置き換え文字が二重に入力されないようにするにはどうしたらいいんでしょうか? : [sage] 2018/01/11(木) 22:55:45.09:8RyCoUmG0 RegExReplace("C:\a\b", "(.*\\).*", "$1c") : [sage] 2018/01/12(金) 02:04:04.29:+j8QRcK60 拡張子、ファイルかフォルダの考慮も忘れずに : [sage] 2018/01/13(土) 13:16:34.08:aFWvyjXJ0 正規表現がまずくて、量指定子"?"とグループ化"()"の使い方が迷走してるんだと思う 個人的にはこう RegExReplace("C:\a\b", "[^\\]+$", "c") : [sage] 2018/01/13(土) 13:50:09.04:NZPiUPRF0 いつの間にかバグフィックスが進んで 1.1.27.04になっとるやないかい : [] 2018/01/13(土) 23:00:31.98:u3DR4K2j0 ありがとうございます 参考になりました : [sage] 2018/01/14(日) 11:50:07.84:M43+YLx+0 以下のスクリプトを「常時」「全てのウィンドウに」適用する(キャプションバーを隠す)にはどうすれば良いでしょうか ;キャプションバーをなくす LWIN & LButton:: WinSet, Style, -0xC00000, A return 「bug.n」の以下のスクリプトでも同様のことができているようなのでこの方法でもかまいません (キャプションバーの非表示という部分の抽出の方法) ttps://github.com/fuhsjr00/bug.n/blob/master/src/Window.ahk 実はこれで1年以上悩んでおります。 どうかよろしくお願いします。 : [sage] 2018/01/14(日) 13:28:36.81:SeWYloWZ0 ttps://arak.jp/diary/?20091030S1 : [sage] 2018/01/14(日) 13:50:26.25:M43+YLx+0 できました! 本当に助かりました ありがとうございました : [] 2018/01/15(月) 11:47:41.46:r2mlDsgK0 sc と vk だが,フォーラム読む限りはvkのほうがいいみたいだぞ.scは”still supported”とか書いてあるが,いつ消されるかわからんしな. : [sage] 2018/01/15(月) 23:34:41.39:6cx89JeH0 scのみで今まで問題無く行けてたがvkのみにしたら 一部でsc***→vk**変換以外で手直しやら動かなくなるやら困った事になった(ので途中で元に戻した) 例えば sc029::send, {BS} ←[全角/半角]押下で{BS} ↓ vkF3:: vkF4:: send, {BS} return とする必要があったり +sc03a::関数("引数") ←[shift]+[CapsLock]で関数実行 ↓ 普通にCapsLockのON/OFF切り替えになってしまう ([CapsLock]キーを[F**]に割り当てて、+F**::〜 とすれば行けるのかな?…面倒なので確認していない) とりあえず未だsc***のみでも問題無く動いてるので行けるとこまでこのままいくわ(´・ω・`) : [sage] 2018/01/16(火) 00:08:51.64:NLQSNNGB0 うちも試しに更新したらUSキーボドのCapsLock系が動作しなくなった 更新内容がいまいちわからん これがエラーで動かなくなった ;CapsLock ON/OFF ~Shift & vkF0sc03A::Send, {CapsLock} こっちは動く ;------CapsLock Auto OFF ------ CapsLock:: GetKeyState, state, CapsLock, T If state = U ;OFF SetCapsLockState, ON else { SetCapsLockState, OFF } Timer03: If(A_TimeIdlePhysical>5000) SetCapsLockState, OFF Return でもこっちでCapsLockの状態取得しようとすると動かない ~Shift & vkF0sc03A:: バージョン戻したけど時間がある時にもう一度書き直してみようと思う 何か分かる人いたらヒントください。 : [sage] 2018/01/16(火) 07:21:01.72:NWgRaCQP0 vkF0sc03A ↓ sc03A でいけると思う。 : [sage] 2018/01/16(火) 14:37:48.49:NLQSNNGB0 vkF0sc03A が sc03a に置き換わっただけで状況は同じでした どちらも動かない +sc03a ~Shift & sc03a 動作する sc03A やりたいこと 違うソフトでCapsLockのオンオフの操作を変えていたので Shift + CapsLock で統一したい その際に自動オフのコードを... CapsLock:: ;Shift + CapsLockにしたい GetKeyState, state, CapsLock, T If state = U ;OFF SetCapsLockState, ON else { SetCapsLockState, OFF } Timer03: If(A_TimeIdlePhysical>5000) SetCapsLockState, OFF Return : [sage] 2018/01/16(火) 14:45:00.33:NLQSNNGB0 あっ これも駄目ですね ~Shift & sc03A::Send, {CapsLock} CapsLockのみでも反応してしまう 問題無し ~Shift & vkF0sc03A::Send, {CapsLock} でも、~Shift & vkF0sc03Aはオートオフのコードが反応しない : [sage] 2018/01/16(火) 16:07:31.09:NLQSNNGB0 連投すまん は CapsLock::returnしております : [sage] 2018/01/16(火) 18:51:12.72:IxAc+IU+0 バグフィックスの動きが激しいし しばらくは1.1.26.01で止めておいたほうがよさそうだな : [sage] 2018/01/17(水) 03:45:15.83:5KJf9t9O0 1.1.27.06でdefenderがウィルス判定出しやがる まあアプリの性質的に誤検出しやすいのはしょうがないけど : [sage] 2018/01/17(水) 03:52:01.97:5KJf9t9O0 zip版なら平気だった : [sage] 2018/01/17(水) 14:23:18.25:Pgssw/8N0 ControlSendですが、これで入力しようとすると、ターゲットのウィンドウがアクティブになって表に出てきてしまいます 裏で入力させることって出来ませんか 最前面では別のウインドウで作業していて、その間に、他の隠れているウインドウにControlSendで値を入れたい のですが : [sage] 2018/01/17(水) 18:15:41.52:RG3q26nn0 ソフトにもよるとしか言いようが無いけど DetectHiddenWindowsを試してみたら : [sage] 2018/01/18(木) 07:34:28.16:E6v3BPu00 DetectHiddenWindowsは関係ないんじゃね? 裏に隠れているだけだから : [sage] 2018/01/19(金) 09:27:55.09:3Oem/ury0 10キー付きキーボードの10キー部分と、と10キーパッドで、それぞれ別の割当をすることって出来るのでしょうか? ハードウェア別の設定が出来れば10キーパッドを有効活用できるかなと思ったのですが…。 : [sage] 2018/01/19(金) 09:36:14.73:ds+5Qw5m0 出来ません 素直にプログラマブルキーパッドを使いましょう : [sage] 2018/01/19(金) 10:11:56.19:3Oem/ury0 ありがとうございます。 : [sage] 2018/01/19(金) 10:40:55.87:m9/Neybx0 まさにそういうソフトは存在するよな 一時使ってた : [sage] 2018/01/19(金) 16:07:46.92:AVpnJ5wF0 HID Macrosだっけっか その辺は CG用補助入力総合スレ あたりが詳しかったと思う ttp://mevius.5ch.net/test/read.cgi/cg/1486757763/ : [sage] 2018/01/22(月) 02:02:18.12:TAC5etfN0 main.ahkと更新.ahkで2つ起動したいと思うのですが 長時間起動してるといつの間にかフリーズしているので 更新.ahkで両方のahkをリロードしたいのですが どのようなスクリプトを書けば良いのですか よろしくお願いします : [sage] 2018/01/22(月) 02:14:51.75:D9rOGpYI0 更新.ahk自身はReloadコマンドでリロード出来る main.ahkは冒頭に #SingleInstance force を書いておけば更新.ahkでRunするだけでリロードされる : [sage] 2018/01/22(月) 04:04:19.09:OoTUIsqF0 何とか出来ました! reload run , c:~main.ahk 上記のアホなことやっていて更新できないなぁと悩んでいましたw 教えて頂きありがとうございました : [sage] 2018/01/23(火) 12:24:46.18:0+zHhbeo0 Autohotkeyで即時関数みたいなことできます? MouseGestureLでジェスチャ毎に再利用しない変数を保持しっぱなしなのもなんだし 最後に一々解放するのもスマートでないというかめんどいというか 代替案でもいいのでお願いします : [sage] 2018/01/23(火) 14:55:23.06:9c2K3oq50 どこでもいいから関数書いて呼び出すだけ : [sage] 2018/01/23(火) 15:01:59.35:9c2K3oq50 hoge() return hoge() { MsgBox } ; -------- hoge2() hoge2() { MsgBox } return ; -------- hoge3() { MsgBox } hoge3() return : [sage] 2018/01/23(火) 21:28:28.51:0+zHhbeo0 いや、都度関数を作ると関数名がどんどん消費されちゃうってことで即時関数のやり方を聞いた次第です っていうか即時関数というより無名関数でしたね : [sage] 2018/01/24(水) 02:41:30.95:YYzix6Ix0 MouseGestureL使ってないんでわかんないけどObjectじゃだめなん? : [sage] 2018/01/26(金) 11:51:05.61:A8q+WlDN0 LWin::[ ってやってるだけなんだけど いつのバージョンからかキーボードの他のキーやマウスのサイドボタンまでおかしな挙動をするようになった 割り当て自体は成功してるんだけど副作用がすごい 仕様変更ですかそれともおま環ですか? : [sage] 2018/01/26(金) 14:32:12.71:lXZy4ZkG0 そういうのはレジストリ変更タイプのキーチェンジャーをおすすめする : [sage] 2018/01/26(金) 16:08:35.67:A8q+WlDN0 すまん…おま環だったわ マウス変えた時に入れたLogicool Optionsと競合してるだけだった まぁ解決は出来なかったんだけどね : [sage] 2018/01/26(金) 19:32:30.01:tlFNmfdt0 できない v2でも実装する予定なし(去年の時点で) ttps://autohotkey.com/boards/viewtopic.php?p=150578#p150578 関数名やラベル名を消費しないでサブルーチン作る方法は今のところないんじゃないかな 変数の一斉解放だけなら、変数をオブジェクトにまとめておいて最後に空にするとかあるけど 代案とするには弱すぎる : [sage] 2018/01/27(土) 12:35:13.87:CxWu/J0c0 実装予定もなしかー プラグインレベルの大掛かりなのだとobjectもありかもですね ありがとうございました : [] 2018/01/29(月) 13:14:45.61:cdR4sGD2CNIKU Ctrl+CでPageDown、Ctrl+Q Ctrl+CでCtrl+PageDownに したくて以下のようにしたのですが、^q後の^cがPageDown に置き換えられてしまっているのかInputで拾えません。 何か方法はありませんでしょうか? ^c::send, {PgDn} ^q:: Transform, CtrlC, Chr, 3 Input,InputChar,I M L1 T2 if (InputChar = "c" or InputChar = CtrlC) Send,^{END} : [sage] 2018/02/01(木) 01:50:51.47:IVRJohHu0 gpd pocket を axキーボード設定で使っているのですが ?? のキーにFnを入れることはできますか?もしできるようなら教えてください。 : [sage] 2018/02/01(木) 01:52:25.90:IVRJohHu0 724です。 ??は 三と書いてあるキーです : [sage] 2018/02/01(木) 02:21:21.73:pVoUMo//0 FnキーはOSやソフトウェアを介さないハードウェアキーなので無理 「三と書いてあるキー」と言うのは恐らくAppsKeyのことなんだろうけど、それなら AppsKey & ○:: でそれぞれの機能を割り当てれば疑似的にFnキーの様に使うことは可能 一つずつ割り当て行う必要あるから少し面倒だけどね 例) AppsKey & Left:: Send, {Home} AppsKeyのことじゃなかったら知らん : [sage] 2018/02/01(木) 06:26:10.42:IVRJohHu0 ありがとうございます。 三はAppsKeyというのですね。 何もしらなくてすいません。 Fnキー無理なのですね、ファンクションキーがFn+数字キーなので片手で押せないので指の届く近くのキーに割り当てようと思いました。 でも全然わからなかったので質問してみました。 親切にありがとうございます。 : [sage] 2018/02/01(木) 07:26:34.43:urvW4tJz0 だからFnキー自体は割り当てられないけどAppsKeyをFnキーの様に使うことはできるっつーの AppsKeyと数字の1キーを押したらF1を出力 AppsKeyと数字の2キーを押したらF2を出力 AppsKeyと数字の3キーを押したらF3を出力 以下略 これらを一通り割り当てればAppsKeyをFnの替わりに使える 例まで出してやってんだしこれで分からないなら質問する以前に基礎知識不足 wikiをよく読んでから出直して : [sage] 2018/02/01(木) 07:37:13.87:Y39MZt1z0 AHKアップデートかけたら vk1Dsc07B & MButton:: foo() みたいのが片っ端から動かなくなって焦った 結局元に戻したぜ 余計なことすんな : [sage] 2018/02/01(木) 08:10:11.62:IVRJohHu0 AppsKey & 6:: Send, {F6} AppsKey & 7:: Send, {F7} AppsKey & 8:: Send, {F8} AppsKey & 9:: Send, {F9} できました。 これで日本語入力楽になります。 本当にありがとうございました。 助かったです。 : [sage] 2018/02/01(木) 08:45:01.74:9rNYl+bm0 : [sage] 2018/02/02(金) 02:59:10.15:wY+RdUVV00202 v1.1.27.07にアップしたら、 もともとWinデフォのホットキーがあるキーに、 下のようなKeyWaitを使った複数タップ系のスクリプトが動かなくなった。 とりあえず「#2 Up::return」を上に置けば動いたけど何だろな? #2:: Key := "2" Timeout := 0.5 KeyWait,%Key% KeyWait,%Key%,D T%Timeout% if ErrorLevel = 1 { スレタイ検索 return } ;2タップ時 Googleで全文検索 return : [sage] 2018/02/02(金) 05:38:52.02:EGJ8lL3F00202 なんだろうな動いたけど GetKeyState, state, CapsLock, T で状態取得してelseで分岐させると動かない でもトリガーがCapsLockキー単体なら問題無く動くんだよなぁ 同じコードなのにキーが違うと動かない理由ってなんだろう ;Shift+CapsLockに変えると動かない ;------CapsLock Auto OFF ------ vkF0sc03A:: GetKeyState, state, CapsLock, T If state = U ;OFF SetCapsLockState, ON else { SetCapsLockState, OFF } Timer03: If(A_TimeIdlePhysical>5000) SetCapsLockState, OFF Return ;Shift+CapsLockはこれじゃないと動かない ;------CapsLock Auto OFF ------ CapsLock::return ~Shift & vkF0sc03A:: Send, {CapsLock} Timer03: If(A_TimeIdlePhysical>5000) SetCapsLockState, OFF Return : [sage] 2018/02/02(金) 05:43:35.42:EGJ8lL3F00202 そもそも状態を取得する必要性が何でだったかを忘れてるが... 下のコードだと何か気持ち悪い : [sage] 2018/02/02(金) 11:23:50.20:UlhnALdl00202 vk**sc***は>648 それはそれとしてもLock系キーの動作は日本語OSではもともと不定でBIOS(UEFI)によって挙動バラバラだったし たまたま動いてたのがバージョン変わったことで動かなくなったとしても別に不思議じゃないと思うが : [sage] 2018/02/11(日) 15:54:02.28:wLAjQo6+0 識者の知恵をお借りしたい ほとほと困ってます… 環境:windows7 32bit + Autohotkey 1.1.27.07 上記はvmware上で動作しています この環境に,ipad + bluetooth keyboard + vmware horizone clientで,リモート接続しています (つまり,クライアント側(ipad)の環境には,手が出せないということです) で,windows7側で,キー入力をフックしたいのだが,Autohotkeyのkey historyで探ると,例えば… VK=E7,SC=003D Type=U → 実際のキー入力は ”=” VK=E7,SC=005B Type=U → 同 ”[” VK=E7,SC=0040 Type=U → 同 ”@" と表示されます この情報から例えば, sc003D::a sc005B::b sc0040::c と,キーのリマップを定義しても,思い通りの動作にはなりません(scの後を3桁にしてもダメ) また, =::a [::b @::c とやっても,思い通りの動作となりません どうやら,autohotkey側で,VK=E7のキー入力をフック出来ていないような感じがします このような(妙なキー入力)をフックする方法をご教授頂きたいのです 良い知恵や,サンプルコードなど,ありませんでしょうか? : [sage] 2018/02/11(日) 16:54:31.12:3ZvNHM330 普通に =::a [::b @::c で機能してるけど 単に権限で弾かれてるだけじゃね? : [sage] 2018/02/11(日) 17:35:40.80:DQMytbvG0 試してもらった環境で、autohotkeyのkey historyを確認してほしい。 該当する箇所のVK、SC、Typeの欄、 と違うのではないかと…。 : [sage] 2018/02/11(日) 17:47:15.75:j35DJg2F0 [ → vkDB sc01B @ → vkC0 sc01A =なんてキーはないから知らん : [sage] 2018/02/11(日) 17:52:01.25:3ZvNHM330 @ は C0 01A [ は DB 01B = はshift-なので、- は BD 00C : [sage] 2018/02/11(日) 18:32:04.46:DQMytbvG0 本来は、それが正しいんだと思う。 のキー入力は、特殊な環境で発生するみたいで…。 何とかフックして、正しい状態に変換したいというのが、やりたいことなんです。 autohotkeyの他、keymillを使っても確認したが、やはり、仮想キーコードとスキャンコードは、 と同じでした。 手詰まりなのかなぁ。 : [sage] 2018/02/11(日) 19:10:35.03:tFbq6f170 $ や #UseHook はどうなってんの? : [sage] 2018/02/11(日) 20:36:51.05:wLAjQo6+0 現時点ではサンプルコードで動作確認している程度なので,必要かどうかは疑問 ----- ----- #InstallKeybdHook sc003D::a ; sc03Dも試した sc005B::b ; sc05Bも試した sc0040::c ; sc040も試した ----- ----- scriptとしては,上記しか記載していないです #UseHookの記載があったとしても,効果ないですよね? $は関係なさそうだし… : [sage] 2018/02/11(日) 21:23:43.50:tFbq6f170 $ や #UseHookは 実際にキーが押された信号を拾う(ドライバレベルのキー変更は変更後を拾う) ないときはソフトで発行されたキーも拾う : [sage] 2018/02/11(日) 21:25:35.35:tFbq6f170 #InstallKeybdHookもおなじね : [sage] 2018/02/11(日) 21:34:15.09:tFbq6f170 #InstallKeybdHookは関係ないわ忘れてくれw : [sage] 2018/02/11(日) 21:49:22.37:wLAjQo6+0 ----- ----- #InstallKeybdHook #UseHook On sc003D::a ; sc03Dも試した sc005B::b ; sc05Bも試した sc0040::c ; sc040も試した ----- ----- とやっても,ダメポ 思った通りの動きをしてくれない ----- ----- #InstallKeybdHook #UseHook On =::a ; sc03Dも試した [::b ; sc05Bも試した @::c ; sc040も試した ----- ----- もダメ ヤレヤレ… : [sage] 2018/02/11(日) 22:08:12.57:wLAjQo6+0 今判ったのだが,SCの4桁って,Unicodeだわ U+003Dは"=",U+005Bは"[",U+0040は"@" autohotkeyでUnicodeの入力をフックすることは,さすがに出来ないんだろうな 悩ましい… : [sage] 2018/02/13(火) 06:44:07.16:sFxCGnec0 1.1.28.00 変更点多数 : [sage] 2018/02/14(水) 04:54:09.67:IcKhWWhH0 オブジェクトのクリーンアップ中に呼び出されたときに例外をキャッチして報告するように__Deleteを変更しました。 以前は、次の関数呼び出しまたはtry-block / threadの終わりまで例外を延期する(誤った)影響がありました。 アクティブなウィンドウが変化するのではなく、フォーカスが変化したときにホットストリング認識機能をリセットしました。 メニュー0&をウィンドウのシステムメニューとして扱うようにWinMenuSelectItemを変更しました。 #Includeに渡されたパス内のすべてのビルトイン変数のサポートが追加されました。 A_TimeIdleKeyboardとA_TimeIdleMouseを追加しました。 A_ListLinesを追加しました。 A_ComSpec(ComSpecのエイリアス)を追加しました。 A_LoopFilePath(別名A_LoopFileFullPathのエイリアス)を追加しました。 自動置換の代わりに同じ行のアクションを実行するhotstring Xオプションを追加しました。 Hotstring()を追加しました。 機能ホットストリングを追加。 StrSplitにMaxPartsパラメータを追加しました。 #MenuMaskKeyを改善して、VKとSC、またはvk00sc000を指定できるようにしました。 : [sage] 2018/02/14(水) 05:01:13.25:Rm7A3QSM0 A_LoopFilePathはほぼLongのほうしか使わないからそっちのエイリアスにしてくれればよかったのに : [sage] 2018/02/14(水) 07:56:06.39:IcKhWWhH0St.V vkxxscxxx修正疲れた〜 vkxxは動くとこと動かないとこがある scxxxは安定ぽい : [sage] 2018/02/14(水) 12:30:38.02:eq9KUA5f0St.V アプデしたいけどあらゆる作業に影響ありまくるから踏ん切りつかぬ : [sage] 2018/02/14(水) 16:26:24.52:eOeOVFcL0St.V うちなんかv1.1.24.00でずっと止めてるわ v1.1.24.01のHotkeyコマンド関連の仕様変更にいまだに修正対応できずに足踏みしてる : [sage] 2018/02/14(水) 21:21:16.70:AOagrs8+MSt.V 同じく 修正マンドクセ : [sage] 2018/02/14(水) 23:58:57.92:yRogQsfK0 結局、vk**sc***表記を復活させたということかな その方がいいんだけど、1.1.27〜の時の苦労は何だったのかw 週末にでも更新しようかね : [sage] 2018/02/15(木) 00:40:13.12:02BDAqxY0 なに迷走してんだか… : [sage] 2018/02/15(木) 00:52:21.11:MGxE8Lu40 v1.1.24.01 → 1.1.28.00 レスポンスが悪くなった? ALTキーの空押しでIMEの制御してたけど ALT upがワンテンポ遅くなった IME自体の表示は即オンオフの反映されるんだけど 文字を打ち込もうとするとALTが押された状態みたいでエラー音がティンティン鳴る 2秒位待たないと文字が打てなくなってしまった 何故かエディタのみで起こってブラウザでは問題無い 後、トグル系が急に効かなくなったり効いたり トライアンドエラーで対策できず、結局バージョン戻したわ : [sage] 2018/02/15(木) 02:01:48.57:MGxE8Lu40 原因はアクセラレーターキーだった 何故か反応するようになってしまってる ブラウザの方はアクセラレーター切ってってて 使ってるエディタにメニューバーが無いので気づかなかったわ 空押しでアクセラレーターキーが効かないのを効くように修正したってことかな もう一度バージョン上げてみたみたはいいけど、やっぱ駄目かも : [sage] 2018/02/15(木) 06:21:05.12:A4rUj4nf0 /* ┌────┐ │存在判定│ └────┘ WinExist→WinActive…アクティブ判定 ■関数 WinExist_1("WinTitle") ;前方一致検索 WinExist_2("WinTitle") ;部分一致検索 WinExist_3("WinTitle") ;完全一致検索 WinExist_R("WinTitle") ;正規表現検索 ■使用例 if WinExist_n("WinTitle") ;ウィンドウがあれば if !WinExist_n("WinTitle") ;ウィンドウがなければ */ WinExist_1(WinTitle) { SavedTitleMatchMode := A_TitleMatchMode SetTitleMatchMode,1 ErrorLevel := WinExist(WinTitle) SetTitleMatchMode,%SavedTitleMatchMode% return ErrorLevel } WinExist_2(WinTitle) { SavedTitleMatchMode := A_TitleMatchMode SetTitleMatchMode,2 ErrorLevel := WinExist(WinTitle) SetTitleMatchMode,%SavedTitleMatchMode% return ErrorLevel } : [sage] 2018/02/15(木) 06:21:20.14:A4rUj4nf0 WinExist_3(WinTitle) { SavedTitleMatchMode := A_TitleMatchMode SetTitleMatchMode,3 ErrorLevel := WinExist(WinTitle) SetTitleMatchMode,%SavedTitleMatchMode% return ErrorLevel } WinExist_R(WinTitle) { SavedTitleMatchMode := A_TitleMatchMode SetTitleMatchMode,RegEx ErrorLevel := WinExist(WinTitle) SetTitleMatchMode,%SavedTitleMatchMode% return ErrorLevel } : [sage] 2018/02/15(木) 07:44:58.37:DStDVLAI0 _1 _2 _3 _R も引数にしたくなる人が多そう : [sage] 2018/02/15(木) 19:03:18.66:XW96eMY10 関数などの別スレッドの各種設定は終了すると 規定値(AutoExecuteセクションの設定)に戻るので戻す必要はないよ > SavedTitleMatchMode := A_TitleMatchMode > SetTitleMatchMode,%SavedTitleMatchMode% 大量の関数ではなく引数を使おう MsgBox % isWindow(, 2, "電卓") return isWindow(Active=0, MatchMode=1, WinTitle="A", WinText="", ExcludeTitle="", ExcludeText="") { SetTitleMatchMode %MatchMode% return (Active ? WinActive(WinTitle, WinText, ExcludeTitle, ExcludeText) : WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText)) } : [sage] 2018/02/15(木) 20:12:31.47:6ml6AmJ20 関数は別スレッドではありません : [sage] 2018/02/15(木) 20:27:59.62:XW96eMY10 え?まじだ すいません間違えました : [sage] 2018/02/15(木) 20:50:07.36:XW96eMY10 すいません訂正します 同じスレッドでした > 関数などの別スレッドの各種設定は終了すると > 規定値(AutoExecuteセクションの設定)に戻るので戻す必要はないよ MsgBox % isWindow(, 2, "電卓") "`nA_TitleMatchMode: " A_TitleMatchMode return isWindow(Active=0, MatchMode=1, WinTitle="A", WinText="", ExcludeTitle="", ExcludeText="") { Save := A_TitleMatchMode SetTitleMatchMode %MatchMode% e := (Active ? WinActive(WinTitle, WinText, ExcludeTitle, ExcludeText) : WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText)) SetTitleMatchMode %Save% return e } : [sage] 2018/02/15(木) 23:28:05.40:A4rUj4nf0 さん 別解ありがとうございます。知識になります。 : [] 2018/02/16(金) 11:24:34.32:U6oi7OTq0 ゲームに使おうとしています。 ttps://i.imgur.com/DmXSDJk.png 上の画像のように、ゲーム内で検索した装備品で、 検索にヒットし黄色の枠でハイライトされているものを鞄にCtrl+LClickで移動させるマクロを作りたいと思っていまして 黄色の枠のみをペイントで抽出し、bmpで保存(下のコードのtest.bmpです)し ahkのImageserchに使えばいけるのでは?と考えたわけですが error level1が返ってきます。 同じように加工したjpg、枠以外を透過させたpngでも試しましたが同じくerorrlevel1でした なにがまずいのでしょうか。。。 ttps://i.imgur.com/DDTMyo5.png (抽出画像) F8::some() some(){ BlockInput On ImageSearch, foundX, foundY, 0, 0, 1920, 1080, *TransFFFFFF C:\Users\User01\Desktop\test.bmp If ErrorLevel = 2 MsgBox Could not conduct the search. Else If ErrorLevel = 1 MsgBox Icon could not be found on the screen. if ErrorLevel = 0 { SendInput, { MouseMove, %foundX%, %foundY% Send {Ctrl down} Click, %foundX%, %foundY%, Left, 1 Send {Ctrl up}} BlockInput Off } } : [sage] 2018/02/16(金) 12:00:10.03:SvcDK4bi0 ImageSearchを完全一致やめて誤差の余裕持たせてみ : [sage] 2018/02/16(金) 12:01:54.87:kFXWbhgF0 画像を見た感じ、境界の部分が明示的透過というより背景と混ざっているように見える 多分アンチエリアスとかのせい よって、*Nオプションである程度認識する色に幅を持たせるか 抽出画像の方を明確に色の濃い部分だけを残して真っ白にして透過指定する とかを試してみてはどうだろう? : [sage] 2018/02/16(金) 16:13:41.17:m7uJKjCZa ありがとうございます 誤差検索*90をオプションに追記しましたところ、 ハイライトされたもののうち2つには反応しましたが その二つを取り除いてみるとerror2でした たしかにwindowsプリセットの画像ビューワで見たとき滲んだように見えますね しかしペイントで抽出した際は滲んでいるようには見えず、この枠の太さ(ほかに表現方法がわかりません笑)が1ドットになるようにしたのですがこれが限界ではないということでしょうか(;´Д`) : [sage] 2018/02/16(金) 18:22:57.21:ajEghuwq0 枠の形変わりそうだし画像で探すなら 最小限の3ドット以上の角(┏)でいいのでは? PixelSearch*3回でもおk : [sage] 2018/02/16(金) 20:23:31.67:uKa9qGpV0 所詮おまけ機能なんだから複雑な事しようとするとすぐ手詰まりになるよ そういうのは何か他のツールに処理投げた方がマシ : [sage] 2018/02/16(金) 20:59:29.19:ifkLCsJ10 俺はむしろ、こういう変態的な使い方を考えるのは凄いと思うよw 日本人っぽいニッチな工夫というか何というか : [sage] 2018/02/16(金) 21:16:18.23:j4lSZ2IT0 これ対象画像側の枠サイズ一定じゃないね : [sage] 2018/02/16(金) 23:56:55.26:U6oi7OTq0 まじすか それはどうやってわかりました? : [] 2018/02/17(土) 00:32:17.20:a1W66dge0 流れ読まずに質問スマソ 管理者権限のアプリも操作するためにAHK自身を管理者で実行すると、 今度はRUNで何か走らせる際にそれらも全部管理者権限になってしまう。 対策としては、 ・タスクスケジューラを噛ませる ・Win+R 窓を開いてそこでコマンドを実行する ほかにもっと簡単な方法はないでしょうか? : [sage] 2018/02/17(土) 00:38:19.47:xrBc6gW30 ほんとだ 画像編集ソフトで半透明レイヤー重ね合わせてみたら縦横ズレることろあるね ttps://i.imgur.com/CzwkKZ1.png 775良く気付いたなw : [sage] 2018/02/17(土) 00:45:15.12:xrBc6gW30 俺はこうやってる Run, Explorer "標準権限で起動したいアプリ.exe" : [sage] 2018/02/17(土) 01:00:18.16:ykUscsnm0 タスクバーをアクティブにしてMbuttonを押すと何かする のをやろうとしたんですがMbuttonが効かないんです スクロールは割り当てできます おま環ですかね? : [sage] 2018/02/17(土) 20:13:15.35:9Ob7L7Vv0 run, explorer "notepad.exe" とかやってみたけど、マイドキュメントフォルダーが開くだけだったよ : [] 2018/02/17(土) 20:20:17.03:9Ob7L7Vv0 run, explorer "C:\Windows\System32\notepad.exe" パス付けたら動いた どうもありがとう!! : [sage] 2018/02/17(土) 20:27:03.30:Wm0LX3zO0 ちゃんとパス指定しないとアカン パス指定は絶対パスでも相対パスでも可能 ただし起動したいexeと同一フォルダにahkファイル置くならパス指定不要 : [] 2018/02/17(土) 20:41:59.94:9Ob7L7Vv0 >782 いろいろ試したけど、 ターゲットアプリに引数を渡すことは出来ないみたいだね 例) explorer "C:\Program Files\internet explorer\iexplore.exe" ttp://ntt.setup explorer.exe の仕様なんだろうか : [sage] 2018/02/17(土) 21:15:34.04:GM2z7ZiA0 ttps://github.com/Lexikos/AutoHotkey-Release/blob/master/installer/source/Lib/ShellRun.ahk これ使えばできた : [] 2018/02/18(日) 00:24:02.28:OinWbaSp0 いろいろありがとう! : [sage] 2018/02/18(日) 13:06:36.91:R6I2ijWP0 vk**だとvkF0::Returnしか効かないな sc03Aでやっと出来た OFFにするだけのコードに手こずってしまった 何を当ててもOFFから当てたキーと同時にONになってしまうのね〜 GetKeyState, state,でイケたけどSetCapsLockState, OFFでONにしないというのは感覚的にキモいな 元々OFFの状態だからか何かもぞもぞする ;USキーボードCapsLock制御 #InstallKeybdHook SetTimer, Timer01, 1000 SetStoreCapslockMode, off ;------------------------------------ ~LShift & sc03A:: ;左Shift+CapsLockでCapsLockのON OFF Send, {CapsLock} Timer01: If(A_TimeIdlePhysical>5000) ;5秒間何も押されなかったら SetCapsLockState, OFF ;自動でOFFにする Return sc03A:: ;CapsLockがONの時にOFFにするだけ(ONにしない) GetKeyState, state, CapsLock, T If state = D ;ONだったら SetCapsLockState, OFF ;OFFにする GetKeyState, state, CapsLock, P If state = U ;物理的にCapsLockキーが押し下げされてなければ SetCapsLockState, OFF ;OFFにする(ONにしない) Return : [sage] 2018/02/18(日) 22:24:30.08:3FpAdC2Y0 ┌──────────┐ │マッチ判定(通常検索)│ └──────────┘ ■関数 □大文字/小文字の区別なし InStr_1(var, "検索文字列") ;前方一致検索 InStr_2(var, "検索文字列") ;部分一致検索 InStr_3(var, "検索文字列") ;完全一致検索 □大文字/小文字の区別あり InStr_1(var, "検索文字列", "true") ;前方一致検索(大文字/小文字の区別) InStr_2(var, "検索文字列", "true") ;部分一致検索(大文字/小文字の区別) InStr_3(var, "検索文字列", "true") ;完全一致検索(大文字/小文字の区別) ■返値 真…マッチ位置 偽…0 ■使用例 if InStr_n(var, "検索文字列") ;マッチすれば if !InStr_n(var, "検索文字列") ;マッチしなければ if InStr_n(var, "検索文字列") = n ;検索文字列がn文字目にマッチすれば : [sage] 2018/02/18(日) 22:35:18.66:3FpAdC2Y0 InStr_1(Haystack, Needle, CaseSensitive="") { SavedTMM := A_TitleMatchMode SetTitleMatchMode, 1 FoundPos := InStr(Haystack, Needle, %CaseSensitive%) SetTitleMatchMode, %SavedTMM% return FoundPos } InStr_2(Haystack, Needle, CaseSensitive="") { SavedTMM := A_TitleMatchMode SetTitleMatchMode, 2 FoundPos := InStr(Haystack, Needle, %CaseSensitive%) SetTitleMatchMode, %SavedTMM% return FoundPos } : [sage] 2018/02/18(日) 22:38:00.78:3FpAdC2Y0 InStr_3(Haystack, Needle, CaseSensitive="") { SavedTMM := A_TitleMatchMode SetTitleMatchMode, 3 FoundPos := InStr(Haystack, Needle, %CaseSensitive%) SetTitleMatchMode, %SavedTMM% return FoundPos } : [sage] 2018/02/18(日) 22:43:08.17:ZvCWwtWf0 の ttp://pastebin.com/ を使ったらどう? : [sage] 2018/02/18(日) 22:57:11.81:3FpAdC2Y0 さん 次から使わせていただきます。 : [sage] 2018/02/19(月) 03:06:32.79:Y9HUB6jX0 それ _1 _2 _3 全部同じやw InStr に SetTitleMatchMode を設定しても何の効果も無いよ : [sage] 2018/02/19(月) 04:14:54.89:BdhMP5UP0 さん ご指摘ありがとうございます。 InStr()関数はIfInString文同様部分一致検索のみで意味ないことしてました。m(_ _)m : [sage] 2018/02/19(月) 04:35:55.96:BdhMP5UP0 前方一致検索…RegExMatch(var, "^検索文字列") 後方一致検索…RegExMatch(var, "検索文字列$") 完全一致検索…RegExMatch(var, "^検索文字列$") 部分一致検索…InStr(var, "検索文字列") 部分一致検索…IfInString, var, 検索文字列 : [sage] 2018/02/19(月) 05:00:29.90:PJPmNhpU0 うざい : [sage] 2018/02/19(月) 05:11:58.24:BdhMP5UP0 スレ汚しすみません。しばらくロムります。 : [sage] 2018/02/19(月) 11:21:09.62:IXuHbD6q0 WinExist_n()でn部分を引数にせえよって指摘されたのなら次にも生かしたらいいと思うの …って書こうとしたら_nで分けること自体に意味がないのかこれw : [sage] 2018/02/19(月) 11:40:12.03:BxLXEv6G0 添削お願いします の一文も無く、いきなり貼られても困るよね : [sage] 2018/02/20(火) 00:26:22.82:9Z14yE7+0 ただ質問しただけだと教えてもらえないけど自信満々に間違ったことを書くと煽りとして正解が返ってくるという 2ちゃんあるあるを利用したのかもしれない : [sage] 2018/02/23(金) 07:33:03.76:9Fk1AXu40 うむ、専門板では必須の基本テクだよな : [sage] 2018/02/23(金) 07:33:14.45:Y0VJAwMh0 今更ながらこれを実装した ペーストできない欄にID、パスワード等を書き込むのに便利 こんなの10年前にやるべきだったな… ^+v:: send,%clipboard% : [sage] 2018/02/23(金) 07:50:14.04:ZjJ8bLPd0 コピペでパスワード入力するってことは、パソコン内にパスワードのテキストを置いているんでしょ。 Send,LoginID{Tab}PassWord{Enter} で良いんじゃないの? : [sage] 2018/02/24(土) 00:25:26.38:b4HvGc+S0 すみません質問なんですが エディタ等では使えるんですがExplorer上でファイル名の編集で使えないです クリップボードの文字に括弧を付けて一旦格納することは可能でしょうか? タイムスタンプは^vで貼り付け出来ているのでこれも出来ないかなと思いまして どなたか知恵をお貸しくださいおねしゃす ;選択したテキストを括弧で囲む Menu, 01, Add, 【 】で囲む, Command1 ;メニュー ;━━━━━━ Command1: clipboard = Send ^c ClipWait Send 【%clipboard%】 clipboard = Return ;━━━━━━ ~Alt & [:: ;Alt+ [ でメニューの表示 IME_SET(0) Menu, 01, Show return こっちはどこでも使える ;━━━━━━ ~F13 & Tab:: FormatTime, TimeString,,yyyy_MMdd_HHmm Clipboard = %TimeString% Send, ^v clipboard = return : [sage] 2018/02/24(土) 15:06:36.08:b4HvGc+S0 これで駄目なら無理なのかな? Command1: clipboard = Send ^c ClipWait clipboard = 【%clipboard%】 Send ^v clipboard = Return : [sage] 2018/02/24(土) 15:17:50.05:HoejbmkP0 最後の Send と clipboard = の間に、 Sleep,100 を入れて実験してみて。 : [sage] 2018/02/24(土) 15:45:22.10:J1gZxMO+0 メニュー表示した段階でファイル名編集状態が外れてるんじゃないの? : [sage] 2018/02/24(土) 22:17:24.31:HiBHIVZG0 だな フォーカス外れた段階でファイル名のEditBoxがなくなるから別窓やメニュー表示は無理 LiNameみたいなリネームソフトでいったんエディタに飛ばして変換するのが無難かと : [sage] 2018/02/24(土) 22:47:10.87:b4HvGc+S0 ありがとうございます。なるほど理解しました 結果的にExplorer上ではメニュー出さずに直で行うようにしました F14:: clipboard = Send ^c ClipWait Send 【%clipboard%】 clipboard = Return あとはキーをちょっと工夫してみます。 トグルして括弧の種類を変えていければいいんだけど... : [sage] 2018/02/28(水) 04:34:44.24:WVOCCenh0 エラー処理入れておいたほうがいいぞ clipboard= ; クリップボードの内容をクリア send, ^c clipwait,1000 ; クリップボードの内容がからの間は待つ if ErrorLevel <> 0 ; タイムアウト時のエラー処理もちゃんとする { return } msgbox, clipboard changed: [%clipboard%] return : [sage] 2018/02/28(水) 10:49:33.46:fyn3Q3mHr 正規表現スレからコピペ RegExMatch("こんにちは。", "(.)+", $) MsgBox, %$1% ;「こ」じゃなくて「。」が入るんだね RegExMatch(str, "^(.)+", $) でも同じ結果だた 2バイト文字だからこうかなと思たら RegExMatch(str, "^(..)+", $) $1に「は。」が入る もうわけわかんねー : [sage] 2018/02/28(水) 14:03:38.13:smTsGnw20 なにがわからないのかわからない (.) 1文字キャプチャ + 繰り返し →$1が都度上書きされて最終的に「。」 : [sage] 2018/02/28(水) 17:19:59.24:Wd8kHTTzM わけわからんのは大抵仕様を読んでないからだ : [sage] 2018/02/28(水) 17:40:10.57:fyn3Q3mHr トン >$1が都度上書きされて最終的に「。」 勉強になりました : [] 2018/03/03(土) 21:32:14.87:8R4aDJlk00303 質問です 入力履歴、若しくはhotstring recognizerのリセットってできますか? ホットストリング使ってるんですが、動作して欲しく無い場合があり、その場合途中でリセットしたいんです。 (物理)カーソルキーとかを挟むとリセットできるんですが、 AHKから(例えば無変換+で発生させたカーソルキー)だとリセットされないんですよね…… : [] 2018/03/04(日) 00:32:52.54:Hu/zstz50 できないっぽいですね。 とりあえず、 問題のキー入力から最速で!"#$みたいな、絶対に使われない文字列をsendで出力して ソレをホットストリングの確定文字無しで認識させて、その時Zオプションを使う でイイですかね? : [sage] 2018/03/04(日) 05:03:51.36:cZsx79sA0 #ifか新機能のHotstringで止めればいいのでは? ttps://autohotkey.com/docs/commands/Hotstring.htm : [] 2018/03/04(日) 20:14:50.24:Hu/zstz50 リンクありがとうございます コマンドのHotstringやZTオプションとか、色々増えてるんですね。 いつも日本語のwikiの方を見てました。 #IFを使って、 IMEオンオフでホットストリングの挙動を分けていたんですが、 IMEオンの時も、 IMEオフキーを押す操作(変換中 文字をかなからローマ字小・大にする)があるので、反応してしまい困ってました。 しかし、よく考えたら、 その操作の後は(AHK側の変数では)IMEオフになっているので打鍵に反応してしまいますね。 結局そのキーを2つに分けるしかないみたいです。 お騒がせしました。 : [] 2018/03/05(月) 10:10:24.59:TBE7QJqP0 F1::SwitchingGems() ; SwitchingGems(){ BlockInput On Send I Click, RIGHT, , 1690, 372 Click, LEFT, , 1615, 250 Click, RIGHT, , 1690, 372 Send I BlockInput Off return } 上記のように指定箇所を計三回クリックするマクロを作りたいのですが Clickの三回目だけが動作していないようでクリックされません 左クリックと右クリックの間にsleepやdelayなどを挟んでみましたが解決しませんでした。 どうすればいいのでしょうか。。。 : [sage] 2018/03/05(月) 11:18:03.82:IOshgH160 三回目だけ残しても動かないなら マクロ対策されてるかもしれないから sleepをすごい多めにとってみるとか : [sage] 2018/03/05(月) 11:21:07.70:IOshgH160 × 三回目だけ残しても動かないなら ○ 三回目だけ残して動くなら : [sage] 2018/03/05(月) 18:03:55.74:EWicYF830 ミスかどうか判断できないので sleepやdelayなどを挟んで解決しなかったものを書いてほしい : [sage] 2018/03/06(火) 10:20:22.05:zUUbNPBB0 loop,10{ Click, RIGHT, , 1690, 372 } 闇雲に連打してみる : [sage] 2018/03/08(木) 08:50:41.34:BnoQlrXA0 Mouse without Bordersのコンパネなのですが WinMoveやWinMaximaize等が効きません。 Winsetも効きません。 これらを効くようにすることは出来ませんか? : [sage] 2018/03/08(木) 08:51:05.88:BnoQlrXA0 ちなみにWinActivateは効きます。 : [sage] 2018/03/08(木) 19:24:12.88:BnoQlrXA0 ですが、一般論としてウインドウをWinMoveやWinSetが効かなくすることとかウインドウ側で 出来るのですか : [sage] 2018/03/08(木) 20:21:04.86:Yf0JqExZ0 Mouse without Bordersとやらは知らんけど一般論で言うなら管理者権限のせいで弾かれるとか その場合はahkスクリプトも管理者権限で実行する必要ある あくまでも一般論 : [sage] 2018/03/08(木) 21:04:46.18:KOKOXPVs0 こういうマクロを作りたいと思っています @指定キーを押すと画像認識マクロが有効になる A有効となっている間、画面上にお目当ての画像が出てきた場合にInput B指定キーをもう一度押すとマクロ自体をsuspend マクロが有効となっている間、常時画像認識マクロが目を光らせるようにするには どんなコマンドを使えばいいのでしょうか? 今のところ自分でできてるのは suspendをトグルさせること(@とB)と 1回キー押したときに1回だけ画像認識を正確に行わせることまでです。。 : [sage] 2018/03/08(木) 21:21:08.26:KkF548Je0 画像認識って何の事だ?imagesearchか? : [sage] 2018/03/08(木) 21:29:31.69:KOKOXPVs0 あ、すいませんimagesearchのことです : [sage] 2018/03/08(木) 21:44:52.70:bMjXMYrA0 SetTimerでImageSearch繰り返せば良いんじゃね あとは指定キーでSetTimerをON/OFF あと質問するなら自分が書いたスクリプト張った方がいい : [sage] 2018/03/09(金) 07:31:16.30:tuBlM4VC0 もちろん管理者権限でやってみましたよ。でもダメでした : [sage] 2018/03/09(金) 08:03:10.58:0+2toMkh0 参考になるかどうか分からないけど、俺のウィンドウの移動やサイズ変更のスクリプトだと、 移動は、ハンドラを使ったWinMove と コントロールを使ったControlMove の2通りを使っていて、サイズ変更も同じような感じ。 たしか、MDIウィンドウに対応するためだった。 : [sage] 2018/03/09(金) 08:11:40.12:tuBlM4VC0 ハンドラを使うということはDllを使うとかってことですか? 本来のWinMoveはハンドラは扱えないと思ったけど : [sage] 2018/03/09(金) 08:45:40.20:0+2toMkh0 マウス位置のウィンドウを移動するのに MouseGetPos,,,mh,ct,3 WinMove,ahk_id ,%mh%,,x,y こんな感じの書き方をしてた。 : [sage] 2018/03/09(金) 08:46:35.41:0+2toMkh0 コントロールだと、 ControlMove,,x,y,,,ahk_id %ct% : [sage] 2018/03/09(金) 08:52:03.57:tuBlM4VC0 そういうことか。ありがとう : [sage] 2018/03/09(金) 14:09:34.75:Etdy2Nz+0 だったら先に言えよな 偉そうに「もちろんやった」とか後出しで言われても知ったこっちゃねえし : [] 2018/03/09(金) 17:45:02.34:2iq8dj2Z0 Wikiにあったボタンを押すたびに動作が変わるってのを試しているんですが、 動作自体はして、111と押すと123と出力されるのですが、2回目移行は、 1111と入れないと、123と出力がされません。 何か他に設定する必要があるのでしょうか? 1:: ComboF += 1 If ComboF = 1 { send, 1 return } If ComboF = 2 { send, 2 return } If ComboF = 3 { send, 3 return } ComboF = 0 return : [sage] 2018/03/09(金) 17:50:14.55:c8UvBeAJ0 1回押すごとにComboFが今いくつで、どこのifに入って、どこでreturnしているのかをちゃんと追っていけばわかる : [sage] 2018/03/09(金) 17:53:58.10:OlYgn7zv0 ComboF = 0 が4回目になってるからだろう 3回で繰り返したいならSend, 3の後に入れれば良い : [sage] 2018/03/09(金) 21:08:38.36:LKcOP/MX0 ありがとう。 うまく動きました! : [sage] 2018/03/10(土) 16:31:28.14:G9FIqbQm0 あるソフトで右Altに機能を割り当てているのでマウスボタンで呼び出そうと xbutton1::send,{Ralt} return と書いても動きませんでした AutoHotkeyの履歴ではRaltが送られているのですがソフト側が認識しないみたいです 試しにメモ帳などでも試したらキーボードでAltを打つとメニュー欄にフォーカスが移動しますが AutoHotkeyからAltを送っても何も反応しません 修飾キーを単独で押した事にするには何か別な書き方があるのですか? : [sage] 2018/03/11(日) 01:18:05.15:RPCHFg2O0 最近気づいたけど Send,!^{Del} って機能しない? : [sage] 2018/03/11(日) 01:30:47.46:C1GH2eZG0 Send自体は機能してるので入力検出ソフトなどではCtrl Alt Delを検出してる ただしOSは受け取らないっぽい : [sage] 2018/03/11(日) 01:37:30.01:RPCHFg2O0 ありがとうございます。 できないことが、はっきりわかると もう試行錯誤しなくてすむので。 : [sage] 2018/03/14(水) 13:33:38.67:HnQGWYiV0Pi お尋ねします trayメッセージ?の表示存在の有無や内容テキストを得る方法はあるんでしょうか 使っているbluetooth機器が自動電源オフになり、その都度trayに出てくるバルーンを数回クリックして再接続するのが手間なので、これを自動化できたらいいなと思っております : [sage] 2018/03/15(木) 09:31:06.48:xPyBwzTO0 トリガーを3キー同時押し 一応動いてるんですが書き方はこんな感じでいいんでしょうか? ;a+CapsLock+SpaceでShift+a a:: #if GetKeyState("sc03A", "Space") Send, +a return : [sage] 2018/03/15(木) 09:36:02.65:xPyBwzTO0 すみませんつづき 押しっぱなしになってaキー単独で使えないっす : [sage] 2018/03/15(木) 17:21:57.74:QbWkJm2V0 a:: だとaのキーの置き換えだから、そら単独では使えなくなるわ a & space:: if [CapsLockの押し下げ状態] なら[処理] ではどうです。Capsの押し下げは取得が面倒だったような気もするけど : [sage] 2018/03/15(木) 17:49:42.32:VH/6Gl1J0 普通のキーをモディファイアキーとして使うのは、いろいろと不便があるよ。 : [sage] 2018/03/15(木) 18:33:48.29:xPyBwzTO0 あっ そうか そりゃそうっすよね しかし、2キーをトリガーで3つ目をifってみたけど駄目ですな〜 う〜ん ちょっと分岐してごにょごにょしてみます : [sage] 2018/03/15(木) 19:04:06.20:xPyBwzTO0 出来ますた ~a & sc03A:: ;a+CapsLock GetKeyState, state, Space, P ;Spaceの状態 If state = D ;押されてたら Send, +a ;Shift+aを送る else ;そうでない場合 GetKeyState, state, Space, P ;Spaceの状態 If state = U ;押されてなかったら Send, a ;aを送る return ありがとうございました! : [sage] 2018/03/15(木) 19:08:59.45:xPyBwzTO0 と、思ったら駄目だった CapsLock+aが使えなくなった 分岐の必要が無かった ~a & sc03A:: GetKeyState, state, Space, P If state = D Send, +a return しかし、CapsLock+aに行くには一度キーを離さないと駄目だぬ : [sage] 2018/03/15(木) 19:25:35.53:xPyBwzTO0 結果的に1キートリガーのSpaceの状態をifった a:: GetKeyState, state, Space, P If state = U Send, a else GetKeyState, state, Space, P If state = D Send, +a Return これならCapsLockに指乗せたままで2つのコマンドを行き来できて 単独でaキーも押せる まぁ実際CapsLock押して無くていいんだけど 操作の流れで感覚的にCapsLockをコマンドキーにしたかったので まぁいいか : [sage] 2018/03/16(金) 12:26:04.83:UouS7uLn0 Msgboxですが、はい、いいえ、キャンセルと3つのボタンをつけられますが、 このはい、いいえ、キャンセルという名前を変えることは出来ませんか。 これらを表示してからあとからの変更でも構いません : [sage] 2018/03/16(金) 12:53:58.76:08l5uqXC0 ControlSetText ただし普通にMsgBoxの次の行に書いてもダメだからなんらかの別スレッドで : [sage] 2018/03/16(金) 13:12:55.46:jjTV3maS0 試してないけどメニューと同じで別スクリプトでやらないとダメなんじゃないかしら 無理にmsgbox使うよりGUIでカスタムダイアログ作るほうが良さげ : [sage] 2018/03/16(金) 13:17:19.26:UouS7uLn0 こんなのさあ、デフォルトで出来るようにしておいて欲しいよねw : [sage] 2018/03/16(金) 13:40:44.65:jjTV3maS0 いや winAPIのMessageBox関数を呼び出してるだけだし AHKに限らず どの言語でもMsgBoxつったらこういう仕様なんだけど : [sage] 2018/03/16(金) 18:01:07.16:dZXZHaN10 共通ダイアログは共通のUIであることこそが価値なのであって、勝手に変えられたら意味がない : [] 2018/03/17(土) 21:56:35.01:J13vqzPo0 windows 10です コマンドプロンプトにcontrolsendでファイル名やコマンドを送ると 2文字目が大文字になって(元の文字列の大文字にした文字の次の文字が大文字になります) しまいます。どうしたらなおせますか? : [sage] 2018/03/18(日) 03:08:50.12:f91JJX+I0 単純なコードがまったく効かず小一時間トライアンドエラー おかしいと思いはじめ調べたところオートリーロードのコードが効かなくなっていた Orz 原因を調べようとエディタを変えてみたが変わらずリロードできない 別のahkファイルをオートリーロードすると効く で、問題のファイルに戻りトライアンドエラー ファイル名変更も駄目 ファイル作り直しても駄目 簡単なコードだけ残して試しても駄目 バックアップしておいた物を丸ごと上書きしても駄目 何故このファイルのみオートリーロードのコードが効かなくなってしまったか原因がわからない ファイル名以外のとこを別のファイルへ移植して動くので コード自体に問題は無いはず ファイル名自体も間違っていない Auto execute Section内は特に何も変更していない タスクトレイのアイコンは反応ある キーは送信されている PCの再起動はした セキュリティソフトで除外もした #IfWinActive, ahk_class TextEditorWindowW166 ;サクラエディタ ~^s:: ScriptName :=Remap If WinActive, %ScriptName% { Reload } Return #IfWinActive お手上げです : [sage] 2018/03/18(日) 03:43:59.43:f91JJX+I0 再インストールしたら直りました。 何だよもぅ はじめにトライすればよかった 時間を無駄にしたわ Orz 何が原因だったんだろう… : [sage] 2018/03/18(日) 22:35:08.80:J+BCt/Kw0 c言語を大学の講義で習った程度のアラサー業界未経験でプログラマになりたいけど autohotkeyでpc作業の効率化・自動化、正規表現を用いたファイル操作等を行うスクリプトは趣味でやったことありますはアピールになるかな? : [sage] 2018/03/18(日) 22:37:10.61:aKvw3zvt0 趣味で→業務の効率化を行いました と言い換えておけ。 大抵の人にはAHKなにそれって言われるだろうけど業務に役に立つものとわかれば多少のプラスにはなるんじゃないか : [sage] 2018/03/18(日) 23:02:23.62:HRiJzGoo0 AHKが業務に役立つって一体なんだ? せいぜいクリックしたりのルーチンワークをやらせるくらいだろ そんなもの特技にもアピールにもなら無いと思うよ まだExcel使いこなせます、の方が100倍通る : [sage] 2018/03/18(日) 23:10:49.20:NAu7k0j60 未経験者歓迎の会社ならやる気がある人だとポジティブに見てもらえるかも程度かなあ スキルとしては役に立つとは見なされないだろうけど しかし今はアラサーからでも始められるんだねえ うちなんかの頃はプログラマー35才定年説とか冗談でいいながら 結局30才の時に辞めちゃったけど : [sage] 2018/03/19(月) 06:05:47.26:2K9mbLou0 業務にめっちゃ役立つだろ。 どんだけ効率化できることか ただ世間では知らない人の方が圧倒的に多いから 何それって言われるだけ : [sage] 2018/03/19(月) 09:08:30.30:1gBKOOv90 マー枠でないオフィスワークならPC作業のかなりの割合がルーチンワークなので あの人に頼むと仕事速いって評価は得られる 履歴書段階ではよくわからん余計な事が書いてあるみたいな顔されるけどね プログラマーの仕事は職場環境の改善や効率化ではないのでアピールとしては微妙かな SEなら顧客先への提案にAHKでの効率化もねじ込めるかも知れないが : [sage] 2018/03/19(月) 19:18:33.71:IzZLQY4r0 おしえてください。 .ahkにドラッグアンドドロップされたファイルを違うアプリにわたす場合、 どうやって変数を書いたらいいのでしょうか?(ドラッグアンドドロップされるファイル) .ahkにドラッグアンドドロップされたmp3ファイルをmp3directcut.exeに渡したい(D&D)です。 : [sage] 2018/03/19(月) 21:21:51.70:+9jTrdWi0 スクリプトのコマンドライン引数 ttp://ahkwiki.net/Scripts でも配列が分かるなら、というか分かるようになってでもa_argsを使うほうがいい ttps://www.autohotkey.com/docs/Variables.htm#Args : [sage] 2018/03/19(月) 21:24:00.32:U+xoQwSe0 まあいまなら、RPAツールで効率化って言えばいいんじゃね。 : [sage] 2018/03/20(火) 06:47:06.72:WP8liIaB0 #NoTrayIcon Run, mp3directcut.exe %1% : [] 2018/03/20(火) 15:11:55.67:+orTD+Tx0 このソフトって画像認識は余り重要視されない感じですか? OpenCVベースのライブラリを作成中なのですが。 : [sage] 2018/03/20(火) 15:15:31.27:/qe8h6Jm0 ImageSearch : [sage] 2018/03/21(水) 01:38:35.04:w/ym+8zsM autohotkeyってプログラミング言語なの? : [sage] 2018/03/21(水) 02:26:02.22:t6ZVDJkP0 AHKはスクリプトであり簡易的なプログラム 本格的なプログラミング言語に比べ、用途を限定することで、覚えやすいように簡単な構造になっている スクリプトの中でもAHKは特に簡単な方なんじゃないかな多分 : [sage] 2018/03/21(水) 05:59:25.78:vW2s5IUZM プログラミングの足掛かりにはなるけど 用途も限られ、誰でも覚えられ、用意されたコマンドも少ない でも高度な事しようと思ったらwin apiの知識が必要だったり 他からライブラリ持ってきたり リファレンスが英語しかなかったり 汎用性はあまりないよ : [sage] 2018/03/21(水) 09:01:31.10:ra+qV9Ux0 AHKの言語はかなり特殊で癖が強すぎて出来は良くないよ perlの方が圧倒的に言語としての出来はいい : [sage] 2018/03/21(水) 11:15:53.77:vX0jpMkC0 いきなり使えるという意味では楽なほうだと思うけど スプリクト言語として簡単な方だとは正直言い難い 増改築繰り返してて色んな言語の方言ぶち込まれてるから纏まりないしね : [sage] 2018/03/21(水) 13:11:58.41:ltXmxIsFM まぁ おもちゃ だね : [sage] 2018/03/21(水) 14:35:23.46:7OKFzbdy0 出来がいいとか悪いとかそんな話は誰もしてないから : [sage] 2018/03/21(水) 17:56:15.87:RBaLq5Ja0 プログラミング言語は以下の総称、AHKはスクリプト言語に属している スクリプト言語 - プログラミング言語のうち、プログラムの記述や実行を比較的簡易に行うことができる言語の総称 JavaScript、Perl、Python、PHP、Rubyなど コンパイラ言語 - 人間が書いたプログラムをコンピュータが理解できる形式に変換するプログラム言語 C言語やC++、Javaなど、上記と比較してパフォーマンスに優れている : [sage] 2018/03/21(水) 18:36:08.33:zFBQqTlw0 スクリプト言語とインタープリタの違いは? : [sage] 2018/03/21(水) 18:57:46.63:IUvp1TqV0 そろそろスレチ : [sage] 2018/03/21(水) 19:06:50.77:vX0jpMkC0 アセンブラが抜けてるぞ コンパイルせんけどあれもれっきとしたプログラミング言語ですよ : [sage] 2018/03/21(水) 19:12:21.63:MLMIaNkj0 に同感 : [sage] 2018/03/21(水) 20:42:05.97:TU8fmjCY0 日本語のwikiは4年前から更新が止まってるけど 日本のユーザーほとんどいないのかしら : [sage] 2018/03/22(木) 04:39:01.11:VvTwrxCl0 「Insert」「Scroll Lock」って何で設置されてるんです? キーボードの“いらないキー”の使い方 ttps://headlines.yahoo.co.jp/hl?a=20180317-00000007-it_nlab-sci 本来の用途を知ってもやっぱりahkで覆すのが一番だな : [sage] 2018/03/22(木) 09:00:22.19:U0cAdNVx0 Insertは固定テーブル書換でよくお世話になったし今もたまに使う BreakもVBAの暴走止めるのに使うしScrollLockだけは要らんけど あの辺をahkで覆すことってないなあ そもそもホームポジションから遠いから便利キーとして活用しづらいというのもあるが : [sage] 2018/03/22(木) 12:01:10.33:Ufwil7jA0 この前INSを知らんうちに押しててその性質を失念しててパニックになったw : [sage] 2018/03/22(木) 12:37:22.06:e+UZ/a+c0 昔使ってたワープロ専用機がパソコンで言えば挿入キーが効いた状態が標準だったので、パソコンに移行した初期はよく使ってたな。今でもたまに長い名称の修正の時に使うことがある。 無変換キー使わないから他に置き換えるって記事も出てくるけど、個人的にはしょっちゅう使ってるんだよなぁ。ショートカットの関係とかもあるし、キーの置き換え考えるのってけっこう難しい。 : [sage] 2018/03/22(木) 13:16:44.76:DUtGpx6E0 Insert::return ^Insert::Send, {Insert} : [sage] 2018/03/23(金) 10:21:17.86:b+Z0za8i0 例えば、 Aキーを押した後、Xを押したらある処理Xをする Aキーを押した後、Yを押したらある処理Yをする Aキーを押した後、Zを押したらある処理Zをする みたいなことをしたいのですが、簡単なスクリプトの書き方ってありますか? : [sage] 2018/03/23(金) 10:24:25.97:XAz/zURm0 キーによって最適の処理があるとおもうから、具体的に何のキーか書いた方が良いよ : [sage] 2018/03/23(金) 14:14:04.10:GjwCbWet0 a & x:: 処理 Return ではいかんの?aキー殺したくないなら~a & x::で。 : [sage] 2018/03/23(金) 14:48:02.81:b+Z0za8i0 そぅいう書法があるのですか。これは初めて知りました。ちょっと調べてきますね : [sage] 2018/03/23(金) 16:07:40.41:b+Z0za8i0 やってみました。 なるほど。これでもよさそうです。 ありがとうございました : [sage] 2018/03/24(土) 19:08:51.99:QBdmJd9U0 スマホのWindows10 MobileにAuto Hot Keyって導入できる んでしょうか? 無変換+Jに左矢印を割り当てるくらいできればいいのですが。 : [sage] 2018/03/27(火) 13:28:24.89:hp/Jmp+F0 何いってんだコイツ : [sage] 2018/03/27(火) 23:21:47.06:gIH3YYjz0 おまいらファイル長くなりすぎた時どうしてるの? : [sage] 2018/03/27(火) 23:48:02.88:2xWHg+240 機能ごとにプラグイン化してる : [sage] 2018/03/28(水) 11:34:17.40:ojeN139t0 文字列で、最初の10行を取り出す、とかはないのでしょうか : [sage] 2018/03/28(水) 13:54:22.18:aUGjB4dVM wikiみろ : [sage] 2018/03/28(水) 14:43:43.95:ojeN139t0 見つからないので、 StringGetPosで`nを見つけてみたいなことをしています。 それしか方法ないのかな : [sage] 2018/03/28(水) 15:13:27.91:VqAJ66ND0 Loop,Parseってのがあるじゃろ… : [sage] 2018/03/28(水) 19:42:08.35:wFJSmFtY0 やるとしたらLoop, ParseかRegExReplace()あたりでやるかなあ : [sage] 2018/03/28(水) 20:08:23.29:VpMR9Ykb0 100万回ぶん回したらRegExMatchのほうが1.8倍早かった Text = ( 111 222 333 444 ) RegExMatch(Text, "`n)(?:.*\n*){2}", Var1) MsgBox % Var1 Loop, Parse, Text, `n Var2 .= A_LoopField "`n" Until A_Index = 2 MsgBox % Var2 return : [sage] 2018/03/29(木) 08:46:20.34:Kt+xqO1A0 私は、 StringGetPos, n, text, `n, L10 StringLeft, text,text, n としました。 Loop, ParseかRegExReplaceってのは気づきませんでした いくつか方法ありますね。 gnuとかやってたのでもうちょっと関数ほしいかな : [sage] 2018/04/02(月) 09:12:36.71:6CLUXBlN0 RegExMatchで変数同士の比較の際に、変数内に特殊記号が入ってる場合のエスケープってどうすればいいんですか? 例えば↓だと記号が入っている行では0が帰ってきてしまうので、これを正しくマッチさせたいです str = ( abcdefg abcd*e\fg hijklmn hijk*"l\mn ) Loop,parse,str, `n { a := RegExMatch(str, A_LoopField) MsgBox % a } : [sage] 2018/04/02(月) 09:32:38.76:Bc45Krob0 \Q : [sage] 2018/04/02(月) 09:56:17.05:6CLUXBlN0 できましたありがとうございます : [] 2018/04/02(月) 23:41:48.53:/5qUy46v0 Class k{ A:="U|D|L|R" x:="X|3|m|x" Ax:="(" . A . "|" . x . ")" } k := new k Shift & Ctrl::msgbox,% k.Ax このk.Axが(U|D|L|R|X|3|m|x)で欲しいのですが (|)が還ってきます Classの中では、変数の再定義などもエラーになるので振る舞いが違うようですが、 Class中で自身の変数を使うにはどうしたらいいのでしょうか : [sage] 2018/04/03(火) 01:17:27.13:nsnifR/q0 this : [sage] 2018/04/05(木) 06:40:22.99:cEzeFAIV0 UWSCからAutoHotKeyに鞍替えしようと思っているのですが UWSCのchkimgXのような高機能な画像認識機能はこちらにはありますか? : [sage] 2018/04/05(木) 11:22:45.68:HI1fVzZM0 指定した画像と一致するかどうかという機能(完全一致〜ゆるく一致までざっくり設定可)と、 ピクセルの色を調べる機能はあるぞ : [sage] 2018/04/06(金) 03:36:34.69:/B0boEGH0 DLL呼び出しはどうやるのかな? 必要なら私が作成したchkimgXのようなのを公開しますが。 : [sage] 2018/04/06(金) 10:13:31.58:/B0boEGH0 DLL呼び出しして画面と画像でテンプレートマッチングしてクリックまではできました。 配列とかが難しいですね>< : [sage] 2018/04/06(金) 19:19:42.82:OFzZtZ5C0 chkimg(完全一致検索) chkimgX(テンプレートマッチング) それぞれ互換性を持った関数をDLLとして提供しています。 ahkでUWSCとほぼ同じ画像認識操作が可能です。 ttps://www.axfc.net/u/3901288 : [sage] 2018/04/07(土) 11:43:46.03:fZhBhj010 1.1.28.02 リリース また細かいバグフィックスだろうけど 現時点でチェンジログは出ていない : [sage] 2018/04/07(土) 15:15:24.78:R1ORWks/0 ttps://github.com/Lexikos/AutoHotkey_L/releases チェンジログはGitHubのが早い : [sage] 2018/04/07(土) 15:40:04.20:fZhBhj010 thx Fixed Control ChooseString and ControlGet FindString ignoring the first two items. Fixed Control ChooseString to send WM_COMMAND even if the control's ID is 0. Fixed WinActivate to restore the active window, as originally intended for [v1.1.20.00]. 最後のやつ、なんかおかしいと思ってたんだよ やっぱバグだったのか : [sage] 2018/04/09(月) 09:25:51.24:c9jGED410 質問なのですが、画面の特定の座標だけでスクリプトを動作せたいので次の様に書いたのですが ifの条件が無視されて画面のどこでも動作してしまいます どのように書けば良いのでしょうか? Xbutton1 :: CoordMode,Mouse,Screen MouseGetPos,xpos,ypos if (100<xpos<200 && 100<ypos<200 ) { send,a } return : [sage] 2018/04/09(月) 09:30:42.59:G8+Atlb/0 a<b<c って書き方を認めていない言語も多かったような : [sage] 2018/04/09(月) 09:41:06.34:c9jGED410 その通りでした if (100<xpos && xpos<200 && 100<ypos && ypos<200 ) としたら動きました、ありがとうございます : [sage] 2018/04/12(木) 14:21:27.54:LYFBDP2J0 使い道がありそうでなさそうだな 上海問屋、6つのボタンに任意キーを割り当てできるUSB有線リモコン - ITmedia PC USER ttp://jump.5ch.net/?http://www.itmedia.co.jp/pcuser/articles/1804/11/news093.html "> ttp://www.itmedia.co.jp/pcuser/articles/1804/11/news093.html : [sage] 2018/04/12(木) 14:46:13.63:kOEYD5Ut0 これならゲームのコントローラーで事足りそう : [sage] 2018/04/12(木) 14:47:22.87:W4scmFmJ0 どんやのパチモンじゃ購入初日にボタンが壊れそう : [sage] 2018/04/12(木) 16:11:05.18:T0dluYzz0 AHKなどソフトウェアマクロが弾かれるゲームでどうしてもハードウェアマクロ使いたい人向けかな ま、要らんけど : [sage] 2018/04/12(木) 19:25:32.52:vJcRmT+E0 (ほしい…) : [sage] 2018/04/13(金) 09:45:10.86:NtTFGXLa0 POS用のプログラマブルキーボードが鉄板やろ : [] 2018/04/13(金) 17:18:58.63:paZWK/3z0 ttps://ux.getuploader.com/autohotkeyl/download/130 Autohotkeyでゲームパッドを弄り倒す叩き台作ってみたよ サンプルはトーチライト2 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2018/04/13(金) 19:00:24.87:1ryaKKuDa なんかすごいの来たぞ : [sage] 2018/04/13(金) 20:25:23.22:j0qzzlLl0 win7からwin10に移行して1か月経ったが、ホイールリダイレクトがwin標準になったのを最近知った なので、win7時代から使っていたWheelAccel.ahkが不要になったよ (むしろ、スタートメニューなど一部の窓でスクロール出来なくて困っていたし、加速機能使わなかったから不便無い) : [sage] 2018/04/13(金) 21:19:40.20:0+nIaT1E0 バイナリデータn書き換えについて質問します 例えばbinary.datと言うファイルがあります このファイルの中身は”FF FF FF FF”とします これを先頭が”FF”だった場合に”00 FF FF FF”と書き換えたいのです。 どこかに良いサンプルコードありませんでしょうか? : [sage] 2018/04/13(金) 21:42:32.33:7h17ETYp0 更新フラグでFileOpenしてRawWriteでできるでしょ : [sage] 2018/04/13(金) 22:12:16.80:0+nIaT1E0 書き換え方法がわかりません どうすれば良いですか? FileGetSize, size, binary.dat FileRead, data, binary.dat file := FileOpen("binary.dat", "w") file.RawWrite(data, size) : [sage] 2018/04/17(火) 11:04:41.37:/LpxS4AS0 Jtkのまがいもの更新しました。 ttps://ux.getuploader.com/autohotkeyl/download/131 思いつくのは入れて満足したのでしばらくこのままだと思います。 なにか要望あれば考えます 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2018/04/17(火) 15:16:07.19:TidmHlF5a バグ報告いいかな? 無線パットだと起動した直後にLRがキーログに出てくる 実際押されてる模様。初期化の速さに通信が追いついてないっぽい あと要望はLTトリガーにフルプル対応してほしい。それさえクリアしたらSteamのキーアサインの呪縛から抜けられそう : [sage] 2018/04/17(火) 16:51:38.37:a0NxOH1g0 window10 pro 64bit版で.NETアプリを自動操作させようとしているのですが、 コントロール名の取得方法が分からず、座標で操作しています。 しかし、画面サイズが異なると座標がずれてしまうため、コントロール名で操作したいです。 コントロール名を取得する良い方法はありませんか。 Au3Info_x64を使ったりもしているのですが、テキストボックスやボタンの名前の取得もできません。 よろしくお願いします。 : [sage] 2018/04/17(火) 17:00:04.82:s4qV74PJa mousrgetposで取れない?Dll叩いてもだめ?そうでないなら画像認識で無理やりかな : [sage] 2018/04/18(水) 13:30:00.16:v+G5gwRf0 jtkモドキ微更新。何度もすみません バグ取ってフルプル分岐作りました。 フルプルとソフトプルの分岐設定も書いているので参考に ttps://ux.getuploader.com/autohotkeyl/download/132 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2018/04/18(水) 15:45:10.39:v+G5gwRf0 十字キー関数にミスが有りました。再アップしたのでのAutohotkey専用うpろだ からどうぞ。目玉でまくってるし : [sage] 2018/04/18(水) 16:38:37.35:BxRxemHs0 ありがとうございます mousegetpos試してみました そこで取得したテキストボックスらしきClassNNにsendしてみたけど入力されないので、 ClassNNがあってるかどうかも分からない状態です dllはまだよく分かっておらず、試せていません もう少し試行してみます : [sage] 2018/04/20(金) 01:59:31.80:CBU7UbTU0 gui上のあるボタンを押したらcaps入り切り、というのが上手くいきません capslockのキーコードをsendすれば?と思いましたが必ずロック入にだけなってしまいオフにできません : [sage] 2018/04/20(金) 08:47:40.18:dNl99PS50 SetCapsLockState : [sage] 2018/04/20(金) 10:47:37.95:CBU7UbTU0 946です、出来ました感謝m(_ _)m : [sage] 2018/04/21(土) 18:06:22.61:C1+iWiz90 Jtkモドキにマウスカーソルの形状を判断して1か0を返す関数を追加しました 画面上のボタンにマウスカーソルが乗っているかどうかを1か0で返す関数も作りました 今回は主に画像で分岐する処理を追加したものになります ttps://ux.getuploader.com/autohotkeyl/download/137 👀 Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2) : [sage] 2018/04/21(土) 18:42:03.16:OB+FBU580 しつこく継続するつもりなら自分の日記でやってくれ : [sage] 2018/04/21(土) 18:50:31.53:KPF3rMpt0 GitHubに上げてくれると助かる : [sage] 2018/04/21(土) 20:02:17.73:9NdPyy9Da 今回のはガチ有能だから許してやるよ これjtk超えたわ : [sage] 2018/04/21(土) 20:21:57.16:C1+iWiz90 そろそろウザイいわれる頃だと思いました 今の所目立つ不具合もないので開発はこれで終わりです。お騒がせしました : [sage] 2018/04/21(土) 20:25:29.17:rnogQ4Zw0 思ってても自重できないとかガイジかよ : [sage] 2018/04/21(土) 20:25:41.02:NokkieTn0 お疲れ様でした : [sage] 2018/04/21(土) 20:26:26.63:A/2ANSA+0 そんな〜 進捗知らせるリンクとかないの? : [sage] 2018/04/21(土) 22:20:34.98:PYmE/PA4a GitHubはいい選択肢だと思う 割とすごく便利に使ってるからこれで開発終了も勿体無い これからなんか機能付け足すとかあるかも知れんからお願いします : [sage] 2018/04/21(土) 22:33:06.01:fKXilc1u0 うん、ブログかなんか作って、改良したらリンクだけでも貼っておいてくれると助かる。 文字通りのウェブログみたいなのでかまわないから。 : [sage] 2018/04/21(土) 22:34:11.35:fKXilc1u0 あぁ、ギットハブでもいいね。 : [sage] 2018/04/22(日) 05:25:59.04:RQZNijO/0 ギフハフにかんしされてる : [sage] 2018/04/22(日) 09:58:25.53:KrMwycZF0 お疲れ たまにうpろだを覗いたらアップされてるくらいでも嬉しいから よかったら続けてくれ : [sage] 2018/04/22(日) 19:27:30.11:PW3IH2j00 以下のようなサンプルスクリプトを書き、Excel上で 動いたのですが、他のウィンドウに切り替えても 動いたままです。アクティブ時以外は停止させる ことはできないのでしょうか。 #IfWinActive ahk_class XLMAIN ^!down:: Interval :=2 Loop, 20 { Send {enter} Sleep, 1000*Interval } #IfWinActive : [sage] 2018/04/22(日) 19:30:44.48:RQZNijO/0 whileループ使えばよろし : [sage] 2018/04/22(日) 22:10:37.71:+NuTjY0aM #IfWinActiveはトリガー発動時の条件でしかない アクティブ外れたからって実行中のスレッドを強制的に止めるような怖い機能はついてない 止めたいなら自分でloopの中でアクティブ切り替わったかどうか見てアボート処理入れないと つうかhotkeyの中でsleep使うとキー連打したときにめんどくさくなるから settimer使った方が安全だと思うけど : [sage] 2018/04/22(日) 22:12:00.47:Na2a3cix0 俺なら、SetTimer使って if(WinActive("ahk_class XLMAIN")){ で実行させるかなぁ : [sage] 2018/04/22(日) 22:44:07.12:10Ec/CBsa loop内からif式でブレイクなんてのもある。まぁ好きなの使えばいいよ : [sage] 2018/04/23(月) 08:25:10.44:O5Q2FlPe0 みなさま、回答ありがとうございます 参考にさせてもらいます : [sage] 2018/04/23(月) 17:57:46.27:AE7Q4/Eb0 要望があったのでJTKモドキの専用のブログ作りました。今後更新はこちらですることにします。 ttp://gamepadtokeybordframework.blogspot.jp/2018/04/gamepadtokeybord.html : [sage] 2018/04/23(月) 18:01:29.23:pzh5FeO50 ありがとうございます : [sage] 2018/04/23(月) 18:07:00.37:e3Qosisv0 乙 : [sage] 2018/04/23(月) 18:25:32.83:kj66dibia おお、続けてくれるか!ありがとう! XboxコントローラーでLRトリガー同時押しできるってだけでも相当助かってるので頑張って : [sage] 2018/04/23(月) 18:43:56.76:bXPE8uhS0 トリガー同時押しなんてJTKでもずっと前から出来てるのに何言ってんだこいつ やたら過度に称賛してる連中自演臭い : [sage] 2018/04/23(月) 20:57:13.94:Gj6VP1R00 まぁ、ここよりもブログに応援コメントしてあげた方が良いだろうね。 : [sage] 2018/04/23(月) 21:18:00.96:zWCv4IqX0 分かってない質問者来たときに上から偉そうなのがワラワラ涌く以外勢いつかないスレなんだから この程度の自作自慢ぐらいいちいち締め出すこともないだろうに 噛みつきたいだけのキチガイの言うことなんかほっとけよ : [sage] 2018/04/23(月) 21:34:02.76:x5JIhAAO0 と、噛みつきたいだけのキチガイが吠えてます : [sage] 2018/04/24(火) 00:51:31.04:K1jVCB+q0 A_OSVersionってWin8までしかサポートしてない? Windows10であることを取得したい場合なんか方法ある? : [sage] 2018/04/24(火) 00:57:28.67:HNWPsUWl0 MsgBox, %A_OSVersion% で10.0.16299と表示されたけど : [sage] 2018/04/24(火) 01:01:20.02:K1jVCB+q0 最新版インストーラから入れたら直った、ZIPだと本体が入ってないのな スレ汚しすまん : [sage] 2018/04/24(火) 21:47:10.94:w2d0xl7M0 zip版はAutoHotkeyA32.exe(ANSI 32bit)、AutoHotkeyU32.exe(UNICODE 32bit)、 AutoHotkeyU64.exe(UNICODE 64bit)が入ってるので自分の環境に合うやつを AutoHotkey.exeにリネームなりコピーなりして使う : [sage] 2018/04/25(水) 02:45:11.77:C2JdtamLM ポータブルマンセー厨だがahkは毎回インストーラ使って入れてるな .ahkの関連付けされてないと不便だし : [sage] 2018/04/25(水) 05:12:42.53:TT/mbE+J0 すみません初心者の質問です AキーをCapsLockとSpaceキーの押下状態での分岐ですが Aキーを単押しの状態は最初のSend, aだけでいいのでしょうか 一応どちらでも動作するのですがもっとスマートに記述する場合どの様にするのがベストですか? A:: GetKeyState, state, sc03A, P If state = U Send, a Else GetKeyState, state, sc03A, P If state = D Send, ^!+{A} Else GetKeyState, state, Space, P If state = U Send, a Else GetKeyState, state, Space, P If state = D Send, +{A} Return : [sage] 2018/04/25(水) 05:35:11.89:pC9fkv9h0 普通にコンビネーションキーじゃダメなのか? : [sage] 2018/04/25(水) 06:20:19.60:TT/mbE+J0 嫌です : [sage] 2018/04/25(水) 06:27:05.95:RVBw9LmG0 そもそもIfとElseの使い方も滅茶苦茶 もう少し基本のサンプルコード良く見て基本中の基本を自力で理解した方が良い そのスクリプト実行すると「a」を一回押しただけで「aa」が入力されるしな : [sage] 2018/04/25(水) 08:08:05.11:TT/mbE+J0 指摘されて気付いたけどaが2回押されてた ソフト側でaキーでトグルされる設定がワンセットあったので気づかなかった 詳しくは割愛するが実際に動作に支障がない状態にあった 2つ目はとりあえず消すことで対処出来たけど とりあえず、書き方がめちゃくちゃと言われたので ひとまず単純に分岐を1つにして書き方を変えてみた Ifで条件に一致したときに実行させて一致しない時にElseで分岐でいいのかな? この場合だとわざわざIf state = U で押上状態を取得しなくていいの? あと、ifは1行ならカッコで閉じなくていい?閉じるべき? 単一コマンドはElseの直後に絶対書くべき? ↓一応これで意図した動作はします A:: GetKeyState, state, sc03A, P If state = D Send, ^!+{A} Else Send, a Return : [sage] 2018/04/25(水) 08:17:14.96:FDOLZigg0 まぁ、好みの問題だと思う。 俺は、 if(GetKeyState("sc03A","P")){ } else { } で書く方が好き。 : [sage] 2018/04/25(水) 08:22:27.28:cS31dOM80 動作仕様の説明なしでコードだけ貼られても意図した動作 (capsやスペース押下でどうしたいのか) そのものが他人にはわからんのだが : [sage] 2018/04/25(水) 08:27:29.40:RVBw9LmG0 ほんとだよな 他人から見たらSpaceとaを押して「 A」(Aの前にSpaceが入る)になるのも本当に意図した通りなのか疑問だし : [sage] 2018/04/25(水) 08:29:03.76:FDOLZigg0 結局、Spaceキーはどうでも良かったわけね : [sage] 2018/04/25(水) 08:45:52.16:TT/mbE+J0 ありがとうございます 参考にします 985はひとまずって言ってるでしょ CapsLock押下+aキーは Send, ^!+{A} Space押下+aキーは Send, +{A} aキーは aキー で最初の質問での分岐はこうなった これでaキーの単独押しをわざわざ条件から指定せず単純に分岐するだけでよくなった A:: GetKeyState, state, sc03A, P If state = D { Send, ^!+{A} Return } GetKeyState, state, Space, P If state = D Send, +{A} Else Send, a Return : [sage] 2018/04/25(水) 08:57:54.27:Uuym80WnD 続きはblogでやるからみんなみてね : [sage] 2018/04/25(水) 09:05:46.23:2q8Y67NRa 過疎になるわけだ : [sage] 2018/04/25(水) 09:29:19.28:ehxQscQV0 > Ifで条件に一致したときに実行させて一致しない時にElseで分岐でいいのかな? OK > この場合だとわざわざIf state = U で押上状態を取得しなくていいの? 押上を待ちたかったり、押上た時になにかしたいのでなければいらない > あと、ifは1行ならカッコで閉じなくていい?閉じるべき? > 単一コマンドはElseの直後に絶対書くべき? 究極的には趣味の問題だけど、初心者のうちはifやelseの後は必ず{}にしといたほうが無難 それとスマートさを求めるなら、If分岐を整理するのもそうだけど が言ってるCapsLockやSpaceが入力されてるのをどうにかするのが先だと思う どんなソフトで試してるのか知らないけど、余計なキー入力は誤動作の元だから KeyWaitを使って横取りするか、コンビネーションキーを使うのが早い コンビネーションキーが嫌なら、あえてその理由を解消する方向でスクリプトを考えてみるのが楽な場合もある ただ、今の時点で期待通りに動いてるなら 下手にいじらないのもひとつの手 初心者の自覚があるならなおさら : [sage] 2018/04/25(水) 10:03:07.10:RVBw9LmG0 Spaceとaを押したときにAの前にスペースが送られてるのも意図的にやってるのであれば a:: GetKeyState, state, Space, P If state = D Send, +{A} Else Send, a Return ↑この6行と ~Space & a::Send, +a の一行で動作は同じだろう なぜコンビネーションキーではダメなのか知らんが スマートに記述するならこっちの方がスマート : [sage] 2018/04/25(水) 10:31:32.03:TT/mbE+J0 ありがとうございます 元々Photoshop等同系ソフトの共通コマンドを同じキーにするための 単なるリマップでしたが、複数のコードをひとまとめにしたかったのがきっかけですです 内容的には押しにくいキーを押しやすくしてるのものです 単純に押しやすいものでも操作の流れ上押しにくかったりするので。 ちなみに、左の小指をCapsLockに固定、親指をSpaceに固定が理想です ~Space & W::Send, +{W} ~Space & S::Send, +{S} ~Space & A::Send, +{A} ~Space & D::Send, +{D} ~sc03A & W::Send, +{W} ~sc03A & S::Send, +{S} ~sc03A & A::Send, +{A} ~sc03A & D::Send, +{D} Spaceキーは以前単純にリマップしてたときより理想的な動作になってるのですが... Spaceキー押しっぱなしで次に押したいSpace+◯が動作出来るようになったので CapsLockはUSキーボードですが、Shift+CapsLockでON、OFF + 単推しでのOFFにしています ただし、Photoshop等ではCapsLock単体はsc03A::Returnで無効化しています 一応、CapsLockが送信されてることは確認していますが 意図せずオンオフになったりLEDがチラつくこともないです... ただ、これが意図した動作だとしても書き方がおかしいようなら もう少し考えます : [sage] 2018/04/25(水) 10:43:10.93:TT/mbE+J0 ついでにCapsLockの動作のコードはこんな感じです タイマーでもOFFになるようにしておりました たぶんすごく不自然なことやってるんだと思いますがこれで意図した状態のことが出来てます SetStoreCapslockMode, off SetTimer, Timer05, 1000 ;------------------------ ~LShift & sc03A:: Send, {CapsLock} Timer05: If(A_TimeIdlePhysical>5000) SetCapsLockState, OFF Return sc03A:: GetKeyState, state, CapsLock, T If state = D SetCapsLockState, OFF GetKeyState, state, CapsLock, P If state = U SetCapsLockState, OFF Return : [sage] 2018/04/25(水) 10:47:25.65:RVBw9LmG0 は何だったんだ : [sage] 2018/04/25(水) 10:49:12.47:TT/mbE+J0 はちょっと訂正 ~sc03A & W::Send, ^!+{W} ~sc03A & S::Send, ^!+{S} ~sc03A & A::Send, ^!+{A} ~sc03A & D::Send, ^!+{D} : [sage] 2018/04/25(水) 10:56:10.09:YVL3wDrE0 それで良いなら嫌ですとか言うなよ : [sage] 2018/04/25(水) 10:59:43.24:TT/mbE+J0 CapsLockが送信されてるのは言われるまで送信されてるのがおかしいとは思っていなかったですが とりあえず、状態を取得してもその後Ifでon,off出来なかったのでこんな事になってます CapsLockがトリガーなら大丈夫なのですが、~LShift & sc03Aをトリガーにすると何故か動作しないので CapsLockを送って処理してる次第です。 : [] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 222日 23時間 7分 3秒 : [] 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 5ちゃんねる専用ブラウザからの広告除去 ★ 5ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ ttps://premium.5ch.net/ ▼ 浪人ログインはこちら ▼ ttps://login.5ch.net/login.php
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。