AutoHotkey スレッド part25 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
1名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ f977-fKjf)
垢版 |
2017/09/14(木) 11:52:40.84ID:uijNj4qb0

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

■前スレ
AutoHotkey スレッド part24
http://egg.2ch.net/test/read.cgi/software/1487149472/

■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/09/14(木) 11:53:33.21ID:uijNj4qb0
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、
その場合はスクリプトの修正が必用です。

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

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

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

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

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。 👀 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/09/14(木) 11:54:40.33ID:uijNj4qb0
■過去スレ
Part1 http://pc7.2ch.net/test/read.cgi/software/1098531338/
Part2 http://pc7.2ch.net/test/read.cgi/software/1129836713/
Part3 http://pc11.2ch.net/test/read.cgi/software/1157043396/
Part4 http://pc11.2ch.net/test/read.cgi/software/1184556627/
Part5 http://pc11.2ch.net/test/read.cgi/software/1201502896/
Part6 http://pc11.2ch.net/test/read.cgi/software/1219130051/
Part7 http://pc12.2ch.net/test/read.cgi/software/1230694774/
Part8 http://pc12.2ch.net/test/read.cgi/software/1243005818/
Part9 http://pc12.2ch.net/test/read.cgi/software/1253888736/
Part10 http://pc12.2ch.net/test/read.cgi/software/1265518996/
Part11 http://hibari.2ch.net/test/read.cgi/software/1280482227/
Part12 http://hibari.2ch.net/test/read.cgi/software/1296446228/
Part13 http://anago.2ch.net/test/read.cgi/software/1317156599/
Part14 http://anago.2ch.net/test/read.cgi/software/1333372506/
Part15 http://anago.2ch.net/test/read.cgi/software/1349735581/
Part16 http://anago.2ch.net/test/read.cgi/software/1367725658/
Part17 http://anago.2ch.net/test/read.cgi/software/1383384464/
Part18 http://anago.2ch.net/test/read.cgi/software/1398655195/
Part19 http://anago.2ch.net/test/read.cgi/software/1411360229/
Part20 http://anago.2ch.net/test/read.cgi/software/1422427426/
Part21 http://anago.2ch.net/test/read.cgi/software/1437910497/
Part22 http://potato.2ch.net/test/read.cgi/software/1452881399/
Part23 http://potato.2ch.net/test/read.cgi/software/1470936221/
Part24 http://egg.2ch.net/test/read.cgi/software/1487149472/
2017/09/14(木) 11:55:20.32ID: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を起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。
2017/09/14(木) 11:55:58.23ID: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のジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
2017/09/14(木) 11:57:01.04ID: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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
2017/09/14(木) 11:57:51.02ID:uijNj4qb0
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。

Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)

■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
  複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
  が、バッチでかなりの回数(数万↑〜)回したりする場合以外は、体感出来るほどの差はない。

Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:wikiに各種エディタの定義ファイル及びキーワード一覧あり。( http://ahkwiki.net/Tools )

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

Q4:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
  > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
  > → 実行中、 …:割り込み終了待ち
  > 元スレッド   →→→→→→……………………………………→→→→
  >                  ★割込                ↑再開
  > 割り込みスレ          →→→→…………→→→→→→END
  >                        ◆割込 ↑再開
  > 更に割り込み                →→→END
2017/09/14(木) 12:15:31.88ID:uijNj4qb0
次スレを立てる際は、1行目に「!extend:checked:vvvvv:1000:512」と記入してください。
その行はスレが立った時点で消えてなくなるので、
告知のため、その呪文を2行目以降に再度書いてください。
2017/09/14(木) 12:17:11.83ID: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} にする。
2017/09/14(木) 12:17:32.04ID:uijNj4qb0
Q6:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど?
A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。

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

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

3:UAC停止 ※注意!! 必ずHIPS機能がある他のセキュリティ対策ソフトを導入してください。
 「コントロールパネル」→「ユーザーアカウント」
 Vista:「ユーザーアカウント制御の有効化または無効化」→ チェックボックスをオフ。
 7/8/8.1:「ユーザーアカウント制御設定の変更」→ スライドバーを一番下に。
 ※Windows 8/8.1では上記に加えレジストリを変更する必要があります。(注意:Windowsストアアプリが実行できなくなる)
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
 「EbableLUA」の値を「0」に変更。
2017/09/14(木) 12:18:05.36ID:uijNj4qb0
■AutoHotkeyの系譜
             ┌ AHK64(統合)
             │
AutoIt         .│ ┌ AHK_U(統合)
 │          │ │
AutoHotkey(1.0) ─ Autohotkey_L ┬ Autohotkey(1.1) ←いまここ
   │         │       │
   └ IronAHK×  │       └ Autohotkey v2(α版)
             │           │
             └ AutoHotkey.dll  .├ AutoHotkey_H v2
                │  │     │
                │  └ AutoHotkey_H
                │
                └ AutoHotkey_N×

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


他のキーだと2度押し判定ミスすることないからキーボードの仕様なのかな
まあPauseはそういう使い方想定してないから2度押ししたいなら素直に別キー使った方が良いんだろうね
2017/09/16(土) 21:41:53.91ID:aHU7hLXq0
>>41
検証ありがとうございます
現在、F13キーにして検証中
ボスキーの反応がキーによってまちまちです
もう、わけわからんのでショトカの割り当て含めて組み直しですね

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

*   *   *

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<^h::Send,{Home}
<^;::Send,{End}
<^l::Send,{Right}
<^j::Send,{Left}
<^i::Send,{Up}
<^k::Send,{Down}
2017/10/01(日) 13:36:43.12ID:CNkKl/UV0
>>136
SendMode,Input
#InstallKeybdHook
#UseHook
この設定だとどうなる?
2017/10/01(日) 15:24:44.69ID:gRVszgej0
>>137
レスありがとうございます
試しましたが、結果は変わりませんでした( ˘ω˘ )
Ctrlキー押しっぱなしで通常キーを切り替えた瞬間、
一文字だけすり抜けてしまいますね
2017/10/01(日) 18:45:43.89ID:rJfDiFvr0
MouseGestureLで画面端に接触って機能がありますが
autohotkeyではどのように再現すれば良いのでしょうか?
2017/10/01(日) 19:10:22.42ID:k6gLp1+F0
>>139
MouseGetPos
141名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/01(日) 20:28:29.75ID:gRVszgej0
Ctrlキーを使ったカーソル移動で、
Ctrlキーと通常キーの両方を押しっぱなしにしただけでも
時々すり抜けが起きますね、、、困ったな(''_'')
2017/10/01(日) 23:10:27.69ID:s8qjH76V0
>>141
Ctrlが押されてる間ループで自前処理はどうでしょう
2017/10/02(月) 18:40:04.60ID:aXY7sAIp0
>>142
それってどうやるのでしょう?教えて
2017/10/03(火) 11:26:31.37ID:k2wSjcMy0
わりと最近何度も話題になってたので過去ログさがせばすぐ出てくると思う
2017/10/03(火) 17:29:15.20ID:Z94A9/610
Win7ですが、プロセスの優先度を変更するのに、MSDOSでは
wmic process where name=
を使って変更できますが、AHKでも出来ますか
アプリを起動するごとに複数のアプリの優先度を組み合わせによって変更したいのです
アプリの起動はAHKで行うので、AHKで優先度も変更できれば楽です
MSDOSのバッチファイルを作っていちいちそれを起動するというのは避けたいのですが
2017/10/03(火) 17:41:40.86ID:y7JHy7Th0
Process
2017/10/03(火) 17:59:47.31ID:Z94A9/610
ありがとうございました
やってみたのですが、firefox.exeなのですが複数のプロセスがありますが1つだけしか変わりません
DOSではすべてが変わるのですが、全部を変える方法はありますか
WinGetのListで取ろうとしてもPIDは取れないし、同じイメージ名が複数ある場合は1つだけしか変えられないのでしょうか
2017/10/03(火) 18:09:22.57ID:ApSdm6mu0
winget List取得後にLoopで winget PIDしていけばよいのでは?
それかrunコマンド経由でwmic.exeの実行はできないん?
2017/10/03(火) 18:18:34.78ID:Z94A9/610
Firefoxはウインドウは1つだけ(タブは複数)起動しているんです
で、WinGet Listで取得すると、IDが1つだけしか取れません
でも、firefox.exeの同名のプロセスが3つ存在しています
150名無しさん@お腹いっぱい。 (ワッチョイ b54c-RH3k)
垢版 |
2017/10/03(火) 18:31:52.02ID:tZYykB2i0
なにをやりたいのかわかってないんだけど、
AHKで起動してるんだから、RunコマンドのOutputVarPIDでいいんじゃないの?
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low
でこのスクリプトで起動されたfirefox processは全部Low priority

OneTabのせいで、Firefoxのマルチプロセスが無効だったことに気がつかせてくれてありがとう
Firefox削除した
2017/10/03(火) 18:38:15.32ID:jR7/UGDJ0
頭悪い人の意見だけど
For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
で全部取得しつつfirefox.exeならprocessで変えるようにすればいいんじゃない
2017/10/03(火) 18:51:40.20ID:Z94A9/610
>>150
やってみました
まず、Firefoxを全部閉じて、タブも1つだけ起動するようにして普通にFirefoxを起動しました
すると、firefox.exeという同名のプロセスが3つできます
次にこれをProcess, priorityで変更しようとすると、1つだけしか変更できず、2つは変更できません

次に
Run Firefox.exe, , , NewPID
MsgBox %NewPID%
Process, priority, %NewPID%, Low
としてやってみました。 MsgBoxでPIDを確認したかったからです
すると、確認している間にプロセスが3つ立ち上がって、結局変更できたのは1つだけ

ところが、MsgBoxをコメントアウトして
Run Firefox.exe, , , NewPID
Process, priority, %NewPID%, Low

でやれば、3つとも、プロセスがすべて低になりました
多分最初に起動したプロセスが親で、これをすぐに低に設定したら、それに続く2つのプロセスも
低のプロセスから派生したものだから低になるのでしょうね


この方法で出来ることはわかりました
でもすでに起動しているものを変更することはできないのかな
2017/10/03(火) 19:14:51.43ID:ApSdm6mu0
隠しプロセスだったらdetecthiddenwindows ONにしてからwingetは?
2017/10/03(火) 19:24:52.04ID:Z94A9/610
>>153
やってみました。 驚いたことに
detecthiddenwindows on
すると、1つだったIDが8つ出てきました。
これらはもちろん異なるIDだったのですが、WinGetでこれからPIDを求めるとすべて同じ多分親のPIDしか
出てこず、残りの2つのPIDは出ませんでした
155名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)
垢版 |
2017/10/03(火) 22:12:00.42ID:aFw/sdPM0
Ctrlキー押しっぱのカーソル移動のすり抜けは
以下のメソッドを追加したら少し改善した。
少なくとも一定時間の移動ではすり抜けなくなってみたい。
但し、方向切り替え時に通常キーの同時押し状態になってしまう瞬間はダメですが、

SendMode Event
#UseHook
#InstallKeybdHook
#HotkeyModifierTimeout 100
SetKeyDelay,0
2017/10/03(火) 22:41:37.06ID:v5TBqoIN0
>>155
それキーボード側の同時押し可能数の問題じゃね
ゲーミングキーボードとか多同時押し対応したものなら起きないかもな
2017/10/03(火) 23:05:38.81ID:aFw/sdPM0
>>156
自分が使ってるのはリアフォかHHKBPro2だから同時押し6つのヤツ
恐らくCtrl+I,J,K,Lの2つのキーのSendだから3つ目が来た時に
単独押しの判定になるのかな?
少し改善したのはHotkeyModifierTimeoutを追加したのが効いてると思う。
158名無しさん@お腹いっぱい。 (ワッチョイ 236e-e2we)
垢版 |
2017/10/03(火) 23:30:28.37ID:Fa/rtAAh0
>>157
Ctrl+Iが押されたときAHKはまずCtrl upをSendしてから↑をSendし↑ upをSendしCtrlをSendする
この処理中にJ,K,Lを押すとスルーするかな
2017/10/04(水) 00:35:32.62ID:QCRp6QYx0
コマンドラインのツールのフロントエンドを作ろうとしたんですけど
Runwaitするとタイマーも割り込めないんですね…
Runの後にループでスリープしながら見張るのが無難でしょうか?
2017/10/04(水) 15:56:38.38ID:rfwLN1/G0
>>157
Send, {Blind}{Up}
2017/10/04(水) 16:53:46.41ID:LAY40rLs0
>>160
Ctrl+上 になってしまうのでは
2017/10/04(水) 23:43:40.87ID:eAdJsIi70
wikiに「1つのキーに3種類以上の動作割り当て」っていうサンプルがありますが
なぜあれで2度押しができるんですか?
解説お願いしたいです。
2017/10/05(木) 00:56:48.37ID:6h/nzYUE0
押された::
Q.すぐに離されましたか?
↓yes  no→ A.長押しです
Q.またすぐに押されましたか?
↓yes  no→ A.1度押しです
A.2度押しです
2017/10/05(木) 01:09:31.71ID:L8qoU5mE0
あれはキーダウンでラベルが呼び出されてから
keywaitでキーアップを待っているわけよ
0.3秒以内にキーアップがこなければ長押し
0.3秒以内にキーアップが来てそこから0.2秒以内にまたキーダウンが来たら2度押し
そうでなければ1度押し
2017/10/05(木) 08:37:47.60ID:YdyjWLJj0
解説必要かな
コメント適切すぎてどこで何してるのか一目瞭然だし
あれ以上の説明って逆に難しい気がするんだけど
2017/10/05(木) 09:00:00.95ID:6h/nzYUE0
押されているのが離されるのを待つコマンドで
離されることなくタイムアウトしたら
errorlevelが trueになる

ちょっと理解が混乱するのはいたしかたない
2017/10/05(木) 17:46:10.09ID:lN6wv7uW0
あるアプリにEditのコントロールがたくさんあります。50個くらい
これらのテキストをControlGetTextで取っているのですが
ひとつひとつクリックして選択してからGetしているので時間がとてもかかるのです
なので、このコントロールのメモリアドレスを取得することはできませんか
そうするとメモリから直接すべてのテキストを取得することができそうな気がするのですが
ControlGetTextでテキストを取得しているということは当然メモリにアクセスしているので
AHKはアドレスをゲットしているはずですね
一度すべてのEditコントロールのメモリアドレスをゲットしておけば以降はメモリアクセス
だけでゲットできるか考えているのですが
2017/10/05(木) 17:56:02.37ID:/O7vn0vF0
WinGetのControlListかControlListHwndとか?
2017/10/05(木) 18:26:18.76ID:lN6wv7uW0
>>168
controlHWNDをゲットして出来そうですね。 ありがとうございました
2017/10/05(木) 18:44:26.59ID:Mw/WW6ff0
>>160
Send, {Blind}でやってみたが、カーソルの動きが
変な動きをするんだけど、、、
2017/10/05(木) 19:01:28.37ID:pHsu3ccW0
説明を聞いたら分かりました。ありがとうございます!
「KeyWait,vk1Dsc07B,D T0.2」は0.2秒経過してもdownされてなかったらそのまま通すんですね。
そこが分かってなかったです。
2017/10/05(木) 23:48:46.74ID:ZYF3rk8J0
>>170
{Blind} は変換キー+JKLi とかで使う時が良いよ。
2017/10/06(金) 12:38:18.47ID:TXUF7LvYa
左クリックでsetkeydelayを効かせるにはどう書いたらいいんですか?
3パターンともディレイがききません。

setkeydelay,400
send,{LButton 4}
send,{LButton}{LButton}{LButton}{LButton}
Click,Left 4
return
2017/10/06(金) 12:46:51.83ID:PVKvJFle0
SetMouseDelay
2017/10/06(金) 12:59:37.03ID:TXUF7LvYa
>>174
ディレイできるようになりました。
ありがとうございます。
176名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)
垢版 |
2017/10/06(金) 22:23:31.17ID:qJK6Bjjm0
>>172
Ctrl+通常キーの長押しは、ほぼこれでOKのようです。
同時押し時のすり抜けはまだ解決してませんが
今のところはキーの切り替え時に同時押しにならないようにすれば、
なんとかイケてます(^^♪
177名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)
垢版 |
2017/10/08(日) 06:34:31.46ID:QHNb58xD0
HHKBで単独のDelキーがほしいのでバッククォートに割り当てたんだけど
バッククォート自体の入力をCtrl+バッククォートでSendしたけどうまく出来ません。
対処方法を教えてください
2017/10/08(日) 07:05:56.35ID:PU2F6qYD0
質問するならまず自分が書いたスクリプトを貼るのが筋
2017/10/08(日) 08:08:29.49ID:QHNb58xD0
>>178
`::Send,{Blind}{Delete}←バッククォートをDelキーに割り当てはOK
^`::Send,{Blind}`←Ctrl+バッククォートでバッククォート入力がうまくいかない
2017/10/08(日) 08:17:56.19ID:PU2F6qYD0
>>179
仮想キーコード{vkC0}を使えば?
2017/10/08(日) 08:19:10.59ID:PU2F6qYD0
てかその使い方なら{Blind}は付けたらダメでしょ
2017/10/08(日) 08:22:33.90ID:TwLxa7sA0
`はエスケープ文字
wikiの仕様のとこ読んどいで

原因追求せずいきなり対処法教えてってのもなんだかな
2017/10/08(日) 10:03:11.28ID:QHNb58xD0
>>182
^`::Send,``とかでしょうか?いろいろ試したけどうまくいかない、、、
2017/10/08(日) 10:13:23.44ID:cTqdANU50
あとは >5のQ4
2017/10/08(日) 11:10:37.98ID:QHNb58xD0
#UseHookを定義してるので$は不要だと思う
2017/10/08(日) 18:29:50.95ID:PU2F6qYD0
vkC0使えと言ってるのになんで人の言うこと聞かないんだ?
2017/10/08(日) 19:21:06.25ID:QHNb58xD0
>>186
^`::Send,{vkC0}とかでしょうか?もちろん試したけどダメでしたよ
2017/10/08(日) 19:28:07.35ID:CPS4vhgt0
>>187
出力がダメなのか、入力がダメなのかを実験して
2017/10/08(日) 19:39:59.07ID:jtfbjOQf0
>>187
お前さあ、ここエスパーすれじゃねえんだから「もちろん試した」とか他人が分かるわけねえだろ
ろくに検証してないくせに上から目線になってんじゃねえよ
2017/10/08(日) 19:44:43.35ID:QHNb58xD0
>>188
入力がダメです。何か手立てはありますか?
2017/10/08(日) 19:47:31.10ID:Hhhcm4fC0
>>190
入力を仮想キーコードにすりゃいいじゃん
思考力停止してんのか?
2017/10/08(日) 20:25:27.98ID:QHNb58xD0
>>191
^{vkC0}::Send,{vkC0}か?実行エラー発生だわw
2017/10/08(日) 20:26:12.98ID:Hhhcm4fC0
>>192
入力の書き方が間違ってる
もっとちゃんと調べろ
2017/10/08(日) 20:30:32.94ID:mvXpExRv0
面白すぎるぞw
これ延々と続けるの?
2017/10/08(日) 20:46:24.13ID:QHNb58xD0
>>193
^vkC0::Send,{vkC0}か?これもダメだわ
2017/10/08(日) 20:52:54.09ID:mvXpExRv0
お前わざとやってるだろw
2017/10/08(日) 21:00:16.02ID:DDBFFTha0
>>195
なら君のキーボードが特殊で何か別のキーコードが発行されてんじゃね
#InstallKeybdHookでキーコード調べな
2017/10/08(日) 21:38:05.05ID:CPS4vhgt0
>>195
入力が問題ないかどうかは、
MsgBox,OK
とか出してみれば良い。
出力が問題ないかどうかは、
^a::
とかの入力で表示できるかどうか試せば良い。
2017/10/08(日) 21:58:28.07ID:K4/7+oooM
うちでは$付けて>183で出力できてるけどな
日本語キーボードだから実際に押すキーはshift+ctrl+@だけど
2017/10/09(月) 00:09:43.90ID:EuzlchIz0
エスパーになりたいなあ
2017/10/09(月) 00:46:03.79ID:l1fzjuhd0
Ctrlとバッククォートの同時押しをKeymillで見たら
VK_OEM3とVK_OEM4の二つの仮想キーが使われてるみたいなので
その値でSendしたら出来ました(^^♪
^vkF3::Send,``
^vkF4:Send,``
2017/10/09(月) 00:54:57.08ID:r2rCO5Lw0
散々アドバイス貰っておいて礼の一言も無し
こういう奴って他人を利用することしか考えてないんだろうな
2017/10/09(月) 01:29:35.12ID:ylAweGgd0
最近質問初回からストレートに「教えて」って言い方する人いて
地味に気になるわ
2017/10/09(月) 05:41:17.13ID:rf1NTRhp0
教えて!goo
2017/10/09(月) 11:57:03.87ID: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
2017/10/09(月) 11:57:38.06ID:HTLieya10
つづき

削除前の無編集バックアップをそのまま上書きしてみる(動作しなかった時の状態のファイル)
何故か動作OK。その後ahkファイルを再起動するが動作せず
再度、スクリプトの自動リロードのコードを削除しリロードで動作OK

何か考えられる原因てあります?
この2つのコードが相性悪いようなのですが何かおかしいところはありますか?
エディタはサクラエディタを使用しています
スクリプトの自動リロードのスクリプト自体の方は問題無く動きます
自動リロードのスクリプトがある他のファイルでは問題は全く無いです
元々動作していましたが気付いたら動作しなくなってしまいました
2017/10/09(月) 12:16:33.49ID:HTLieya10
連投ですみません
スクリプトの順番を入れ替えたら問題無く動作するようになりました
う〜ん でも何故かはわからないです

動作OK
@現在日時をスタンプする
Aスクリプトの自動リロード
Bその他

動作せず
@スクリプトの自動リロード
A現在日時をスタンプする
Bその他
2017/10/09(月) 12:25:24.39ID:KhNcOqwe0
はやく教えろ
2017/10/09(月) 12:45:44.05ID:rf1NTRhp0
教えました。
2017/10/09(月) 12:50:33.29ID:NXVnt0i+0
#If閉じてないだけとか
2017/10/09(月) 13:18:13.91ID:HTLieya10
>>210
ありがとうございました
まさにその通りでした
いつの間にか#IfWinActiveを消してしまっていたようです
こんな初歩的なミスに気づかないとは...恥ずかしい
2017/10/10(火) 02:32:14.41ID:EmIG0yKf0
controlsend,について質問があります
たとえば以下の記述でwindows標準のメモ帳なら動きます

ControlSend, , test, ahk_class Notepad

ただこの記述では動かないアプリが結構ありますが、そのアプリでも成功したりしなかったりの条件があります
testをControlSendするアプリケーションのウィンドウが前面にあり、アクティブ状態なら成功しますがウィンドウが最小化状態だと失敗します
なのでwinactivateで失敗するアプリのウィンドウをアクティブ化してからcontrolsendしていますが
失敗するアプリでもwinactivateなし、最小化状態でcontrolsendすることってできないもんでしょうか
2017/10/10(火) 08:00:37.48ID:fQ70ranb0
その質問過去に何度も見てるけど解決したところは見たことない気がする
ただその質問する人ってほぼもれなくctrl空欄にしてるんだよね
まずは送りたいctrl特定してやってみて、できればハンドル指定で
バックグラウンド時にはcontrolフォーカス取れなくなるようなアプリなら効果あるかもしれないし
そこきちんと指定してやると結構精度上がるよ
2017/10/11(水) 11:38:11.27ID:eCPj5mWL0
Process, Priorityで、AutoHotkey自身をAboveNormalに変更しようとしたのですが、
出来ないようです
でも、タスクマネージャーで手動では変更できます。 なぜでしょうか?
出来ないのですか? 自分で自分は変更できないのかな
2017/10/11(水) 11:55:15.44ID:eCPj5mWL0
管理者権限でもやってみましたが変わりません
2017/10/11(水) 17:53:01.10ID:FW7ud3JO0
SetBatchLines, -1にして、数千行のバッチ処理をしている方って居ます?
最近AHKをアップデートしたんですけど、SetBatchLines, -1にしても昔の様に失敗しなくなったみたいなんです
もしかして修正でもされたのかな
2017/10/11(水) 18:16:15.05ID:MfAdhfs40
>>214
問題のスクリプトと環境は最低限書きましょう
そうしなければ何が間違っているのか誰にも分かりません


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

ESC::
ExitApp
2017/10/11(水) 21:21:43.67ID:eCPj5mWL0
>>217
失礼しました。私のとんだ勘違いでした。 私のスクリプトは
Process, priority, ahk_exe AutoHotkey.exe, AboveNormal
としていました
ahk_exeを外したら出来ました
2017/10/12(木) 01:02:36.24ID:9+/edpnH0
>>213
その方法でためしたところ一応キーはsendできていましたがショートカットは動きませんでした
アプリ側の問題みたいです ありがとうございました
2017/10/12(木) 12:40:14.52ID:fl4Aa2dU0
すみません
エクスプローラで選択しているファイルをあらかじめ指定したプログラムで起動したいのですが、
選択しているファイルのパスを取得するにはどうすればよいでしょうか?
2017/10/12(木) 13:48:00.68ID:22LCJS230
ctrl+cでクリップボード参照すればいいんじゃない?
2017/10/12(木) 14:30:20.01ID:WOPpKOf60
目的から考えると、Windowsの機能としてある右クリックメニューの「プログラムから開く」とか「送る」で出来るようにしておいて、
それをAutoHotkeyでキーを送って自動化すれば良いような。
2017/10/12(木) 15:31:51.36ID:gbYEcDhtM
昔ここでcomだかアクティブXだかでエクスプローラからファイル情取得するコードで盛り上がってた記憶あるけど
OSバージョンアップのたびにエクスプローラも様変わりしてるから今でも使えるかはわからんね

そもそも質問者の環境書いてないし
汎用で使いたいならクリップボードからパス拾うのが無難かと
224名無しさん@お腹いっぱい。 (ワッチョイ f17d-z1uI)
垢版 |
2017/10/12(木) 18:16:00.48ID: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になってしまいます。
どなたかお助けを
2017/10/12(木) 18:30:17.45ID:fl4Aa2dU0
220です
クリップボード経由で思惑通りの動作できました
ありがとうございます
2017/10/12(木) 22:33:41.59ID:hFLP6ZS00
>>224
ControlGetText, text, , ahk_id %OutputVar%
これだとわざわざID取得した意味あんまりないけど

検索窓のハンドルではなくEditBOXハンドルを取得したい場合は WinGetではなくControlGetを使う
その場合もControlGetTextでの指定はControlではなくWinTitleとして指定する
http://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
2017/10/12(木) 23:11:28.22ID:TjO6Vz8k0
スクロールバーのShift+左クリックの動作を中クリックで実現したいんですが、
アドバイス頂けないでしょうか。
2017/10/12(木) 23:36:21.69ID:WOPpKOf60
>>227
その機能、今知ったわ。
今まで知らなかったWindowsの操作かと思ったけど、Live5chの機能なのかな。
2017/10/12(木) 23:43:42.76ID:hFLP6ZS00
その機能とやらは MButton:: +LButton でできる機能とは違うのかえ?
OSバージョンによって挙動違うかもしらんから正しく再現できてるかもわからんが
win8ではおなじ挙動になってるようだが
2017/10/13(金) 01:10:48.45ID:3xeDM7QO0
>>228
一部効かないのもあるけど、割と昔からあるっぽいWindows標準の操作みたい。
俺も最近知りました。

>>229
確かに、MButton:: +LButtonで行けますね。
何か変に難しく考えちゃってたみたいです。
ありがとうございます!
2017/10/13(金) 08:14:19.11ID:3Z5Ik+Fw0
>>230
それは、スクロールバーの余白部分のShift+クリックという機能の方なのかな?(いきなりその場所に移動)

最初に試したのが、Live5chでスクロールバーをShift+ドラッグして、Shiftは押したまま維持、
Shiftを離すと、スクロール前の位置に自動的に戻ったから、Windowsにこんな機能があったのかと
思って他のソフトで試すと出来なかったからさっきの書き込みをした。
2017/10/13(金) 08:59:11.07ID:3xeDM7QO0
>>231
いきなりその場所に移動する機能のことですね。
Shift+ドラッグでShift離したら元の位置に戻るというのは見たこと無いですね。
233名無しさん@お腹いっぱい。 (ワッチョイ f17d-z1uI)
垢版 |
2017/10/13(金) 09:10:31.30ID:Kmc31x970
224です。
>>226
回答ありがとうございます。
しかし、依然としてtextの値はnullのままです。

Send, ^f
WinWaitActive, ahk_class bosa_sdm_XL9,,5
ControlGet, controlHWND, Hwnd,,, 検索と置換
ControlGetText, text, ahk_id %controlHWND%, 検索と置換
MsgBox, The text is:`n%text%

このように修正しましたがダメでした。他にも
ControlGetText, text,, A
としてみたりしましたがうまくいきません。
ちょっと調べてみたところ
https://so-zou.jp/software/tool/system/auto-hot-key/commands/window.htm#no26
に「なお、このコマンドで取得できるのはWindow Spyの[Control Under Mouse Position]のTextと同じであり、これで取得できない情報はこのコマンドでも取得できません。」と記載されていたのでこれが原因なのかなと思いました。
長文失礼しました。
2017/10/13(金) 13:27:09.12ID:trCb60PR0
>>233
>226の後半にも書いたがcontrolHWNDはControlではなくWinTitleとして指定する
ControlGetText, text, ,ahk_id %controlHWND%

古くてすまんがうちのExcel2007ではAU3_Spy.exeで情報取れてるよ
最新のExcelは持ってないのでわからないが
https://i.imgur.com/DSOGYgq.png
235名無しさん@お腹いっぱい。 (ワッチョイ f17d-z1uI)
垢版 |
2017/10/13(金) 14:39:55.15ID:Kmc31x970
233です。
>>226
なるほどーーーーーーーーーーーーーーー
完全に私が勘違いしてました。質問自体が正しくありませんでした。

下記画像の「大文字と小文字を区別する」の文字列を取得するにはどうしたらよいですか?
https://imgur.com/a/DVFmh
2017/10/13(金) 18:05:09.37ID:xSVAQVol0
テンプレにあるACC.ahkをつかうと取れることは取れる
2017/10/13(金) 19:20:26.57ID:1yuJh+l1M
後出しすぎてワロタ
2017/10/13(金) 21:29:13.62ID:sASp439J0
これを後出しって言うか?
自分が勘違いしてたのが分かったから質問し直しただけでしょ
2017/10/13(金) 22:33:16.76ID:trCb60PR0
解答してた身として言わせてもらうがエスパー要求度高すぎやでw

オプション表示の有無についてはままある勘違いだけど
あの質問内容とコードからフォーカス行ってないコントロールの情報を取得しようとしてるとはまず気づけないっす
つか今回の教訓は下手な説明よりSS一発ってことですな
2017/10/14(土) 20:58:48.61ID:TUhxuyu80
Windows 10でMouseGestureLで管理者権限のアプリ操作する正しいやり方ってなに?。。。

AutoHotKey.exeを管理者権限で実行させる
→スタートアップで起動できなくなる
MouseGestureLでタスクスケジューラでスタートアップさせる
→設定反映後に管理者権限のアプリが操作できなくなる

UAC下げるしかないの?うまくやれている人は教えてくれ
241名無しさん@お腹いっぱい。 (ワッチョイ 0987-z1uI)
垢版 |
2017/10/14(土) 22:39:53.23ID:zq2sRIVJ0
keyhac >>>>>>>ahk
2017/10/15(日) 00:25:01.54ID:kczcI/Ax0
guiのボタンのテキストを押す度にplayとかpauseとかに替えたいんですけど
これって出来ますか?
2017/10/15(日) 02:35:03.28ID:TFGCjPn+0
242ですが
guicontrolで出来ました
244名無しさん@お腹いっぱい。 (ワッチョイ f17d-z1uI)
垢版 |
2017/10/15(日) 07:29:44.49ID:nQ2z0aEU0
>>240
MouseGestureLは
タスクスケジューラ>該当タスクのプロパティ>全般タブ>「最上位の特権で実行する」にチェック
245名無しさん@お腹いっぱい。 (ワッチョイ 0987-z1uI)
垢版 |
2017/10/15(日) 17:15:52.69ID:Ug0/OrZC0
keyhac >>>>>>>>>>>>>>>>>>ahk
2017/10/15(日) 18:39:01.48ID:jZaJe0Jda
Keyhac
 ・キーボード操作系しかコントロールできない     ←AutoHotkeyとはユーザー層が異なる
 ・設定ファイルはPython                   ←多少は羨ましい, 複雑な処理をする場合に処理速度が遅そう
 ・一応、Macにも対応
 ・Win版はVisual Studio 2015 ランタイム必須       ←糞
 ・アプリケーションデータディレクトリを使う       ←糞
 ・配布用の実行ファイルを作成できない
 ・環境のHDD容量が16MBくらい必要(AutoHotkeyの倍)


>>241,245
Keyhacスレ作ってそちらでヤレ
247名無しさん@お腹いっぱい。 (ワッチョイ 0987-z1uI)
垢版 |
2017/10/15(日) 18:54:34.65ID:Ug0/OrZC0
キー押しっぱなし病・ホットキーすり抜け病対策の研究
http://did2memo.net/2013/10/03/autohotkey-ctrl-key-is-stuck/
2017/10/16(月) 02:40:41.03ID:wsUgyV9w0
>>244
それになってるんだけど何かの拍子で管理者権限のツールが動かなくなる。Windows 10 Insider Previewだから何か変わっちゃったのか?前はいけたのか、最近Windows 10にしたからわからん
2017/10/16(月) 04:07:50.47ID:tduCt/4y0
MGLってAHK_LのインストーラのオプションからUI Accessを有効にしても効かないの?
2017/10/16(月) 04:13:04.63ID:RJWuaMVg0
>>248
なんでInsider Previewなんか使ってんの?
2017/10/18(水) 01:07:39.70ID:BXsLEC/o0
UpDownのRangeですが、小数点以下の数値は出来ませんか。
以下の様にしても、5から10までの5段階になってしまいます。
Gui, res:Add, UpDown, Range5.0-10.0
よろしくおねがいすます。
2017/10/18(水) 07:17:16.46ID:ycPUavpC0
50-100にしてgの中で割って再表示
2017/10/18(水) 11:46:51.26ID:BXsLEC/o0
サブラベルで処理するのですね。
やってみます、有難うございました。
2017/10/18(水) 15:45:22.45ID: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,^,\,@,[,],:,/,*

上記処理をする時にカンマとセミコロンを含めたいのですが、上手くいきません。
よろしくおねがいします。
2017/10/18(水) 18:37:36.90ID:000xPmmi0
お騒がせしましたが、これで対応できました。
If MyVar is Number
2017/10/21(土) 10:48:43.67ID:ib1iSRB60
既出かと思いますが、見つけられませんでした。
同じ状況の方いらっしゃるかと思うのですが、対処をご教示賜りたく。
よろしくお願いいたします。

windows10 pro 64bit
thunderbird 52.4 32bit
ロジクールM510
WheelAccel.ahkの加速は"0"でしてません。

WheelAccel.ahkにて、thunderbirdの全てのペインにおいて
thunderbirdをアクティブな状態でスクロールすると、ホイール1ノッチに対して一気に何行もスクロールしてしまいます。
非アクティブな状態では、通常(希望通り)の動きになります。

互換スクロールに指定すると、ホイールが効かなくなってしまいます。
thunderbirdでは一切機能させなくてもいいのですが、どうしたらいいでしょうか。。
2017/10/21(土) 11:07:15.17ID:zu1VgrM50
>>256
ahkスクリプト全終了させた状態ではどうなん?
thunderbird使ってないからわからんけど多分↓このあたりの予感

トラックボール コロコロ(((○ Part125©2ch.net
http://mevius.5ch.net/test/read.cgi/hard/1505627302/537-538
2017/10/22(日) 10:54:03.79ID:Dcuxbaqr0VOTE
ギャー
send,{shiftup} のことを今までぜーんぶ{shift up}と書いていたー
道理でへんな動きしてたんだ…
以上ですご清澄ありがとうございました
2017/10/22(日) 12:00:06.03ID:4CdFLK3a0VOTE
>>257
ありがとうございます。
WheelAccel.ahkを走らせていないときは、通常の動きをします。
スームーズスクロールはoffにしてましたが、onでも変わりません。
(´・ω・`)
2017/10/22(日) 14:32:51.29ID:L96ui5KXrVOTE
>>258
?
それで正常に動いてるなら別にそのままでも良いかも知れないが
盛大に誤解してそう
2017/10/22(日) 19:36:09.31ID:Dcuxbaqr0VOTE
>>260
あれれ、ウィキ見直したら確かに混在してる…表組みのほうはスペースなしで例示されてて、コード用例ではスペース入ってますね
でも自分の場合、今まで不要なShift押下げが発生してた(どうやらShiftとUpとが発生していた?)のがスペースなくすことによってスッキリ根絶されたので、ううむ謎です
2017/10/22(日) 20:33:35.27ID:L96ui5KXr
>>261
つ公式Help
2017/10/22(日) 23:00:48.87ID:h+7LhoKm0
>>259
失礼しました
うちのwin8 & ロジマウス(M505、M570)では問題が起きないため確認できないのですが
Hotkeysの先頭に以下追加でアクティブ時に機能OFFできると思います

#IfWinActive ahk_exe thunderbird.exe
WheelDown:: Send,{WheelDown}
WheelUp:: Send,{WheelUp}
#IfWinActive


蛇足ですがWheelAccel.ahkでは加速OFFにはできないようなので加速が不要な場合は
ここのWheelScroll.ahkで以下の設定にしてみて下さい
AcclMode = 0
AcclSpeed = 0
https://www6.atwiki.jp/eamat/pages/30.html
2017/10/23(月) 20:33:30.32ID: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 の結果が返ってきます。
考えられる要因を教えてくださるエスパーの方、いらっしゃいましたら。。。(;´Д`)
2017/10/23(月) 20:44:49.90ID:oxsVTEnZ0
>>264
全角スペース
2017/10/23(月) 20:47:54.03ID:WCeYnLa+0
>>265
>>264の書き込みではつかっちゃいましたが

全角スペースは使用してないと思います(><;)
2017/10/23(月) 21:08:58.83ID:oxsVTEnZ0
>>266
画像ファイルをフルパス指定すれば
2017/10/23(月) 21:14:49.38ID:IGQCHjjB0
\Users\HK\Desktop\pics\alc.jpg

C:\Users\HK\Desktop\pics\alc.jpg
のフルパス指定にしましたが同じでした><;
2017/10/23(月) 21:17:38.32ID:vqubHTur0
>>264=266
デスクトップスクショの場合、自分は劣化の無いBMPで保存してそれ使ってたな
一度BMPで試してみては?(PNGも使えるようだけど自分は試したことない)
2017/10/23(月) 21:19:32.28ID:vqubHTur0
あ、リロードしてなかったorz
解決したみたいね>>269は忘れて良いよ
2017/10/23(月) 21:22:53.81ID:IGQCHjjB0
>>269
BMPで保存したところ
できました!!!!!!!
感動です!
皆さんありがとうございました
2017/10/25(水) 17:03:51.19ID:ypp7UERA0
>>263
ご返信賜り誠にありがとうございます。
なんだと言われてしまいそうですが、setpointにスムーズスクロールがあり
それをoffにすることで、何十ノッチも発生することはなくなりましたが、挙動がおかしかったため
setpointをアンインストールし、無事解決しました。
一部機能を使ってましたが、autohotkeyでまかなえますし!

firefox quantumのタブスイッチのため、autohotkeyを導入しましたが
ztopをやめて、一本化出来ました。
ありがとうございました。
2017/10/26(木) 00:31:46.15ID: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に削らないとマッチしませんでした
2017/10/26(木) 00:32:21.09ID: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です
2017/10/27(金) 20:04:09.15ID:EJJiT1eZ0
AHKのエディタですが
Notepad++
サクラエディタ
秀丸エディタ
EmEditor
sublime
などがあるようですが、これらの中で、ラベルやホットキーへジャンプ出来るものは
どれですか
SciTEではラベル名を選択してF12を押すとラベルの個所へジャンプしてくれるし
ホットキーのリストも表示してくれるのですが、同じ機能を持っているエディタは
どれでしょうか
ちなみに、秀丸ではなさそうでした
2017/10/27(金) 21:59:52.86ID:rnKjM+z20
sakura 秀丸 その他のブラウザにタグジャンプ機能があるけど・・・
c言語専用?
2017/10/28(土) 01:37:13.87ID:3WINCwSX0
AHKはメジャー言語ではないので大抵のエディタではデフォルト対応はしていないと思う
AHK用のプラグインなりカスタマイズなりが必要になるのでは

ちなみに秀丸の場合はAHKシンタックスの強調表示定義ファイルを作ってやると
それを元にTagsファイル生成や単語補完などが可能になる
Tagsファイルを作っておくことでダイレクトタグジャンブで飛べるようになる

他のエディタも大抵はctags使えるみたいだし ctags形式のタグファイル吐き出せるスクリプトさえ書けば
お好みのエディタでダイレクトタグジャンブできるようになると思われ
2017/10/28(土) 01:43:48.93ID:LU+IQveF0
http://ahkwiki.net/Tools

AutoHotkey用のシンタックスハイライト、オートコンプリートなどの定義ファイルあり
2017/10/28(土) 02:09:08.35ID:kOR4GWlf0
DPIが高すぎるとMouseGestureLのジェスチャーツールチップが小さくて見えない & RR、LL、UU、DDのピクセル数判定が緩くなっちゃうのだけど、これってなんとかなんない??
2017/10/28(土) 06:26:09.85ID:Ctf6COgz0
>>276-278
秀丸エディターで、AutoHotkey_L.hilight、AutoHotkey_L.txt は入れています

タグジャンプですが、tagsファイルの作成でする方法と、Exuberant Ctagsを使ってプログラム実行でする方法を
やってみましたが、AHKには対応していませんでした。 ラベルは認識されません
ちなみに使い方が違うのかと思って、cppファイルで試してみましたがこちらは関数等はちゃんと認識されていました
ということで、ahk用には何か別の専用スクリプトとか用意しないとダメなようです
2017/10/28(土) 06:33:37.89ID:Ctf6COgz0
秀丸エディターではダイレクトジャンプを選ぶとgrepで探すというのがあるので
当分はこれでしますか
2017/10/28(土) 08:40:24.48ID:coB4BUvsr
ctagsは自分でルールを書けば解析されるよ
2017/10/28(土) 13:24:55.08ID:kOR4GWlf0
よく考えたらマルチディスプレイで高DPIと通常DPIのディスプレイが混在しているとジェスチャーの判定もおかしくなるしもうだめだ/(^o^)\
100px移動でジェスチャー判定していたとしたら、200%スケールしているディスプレイでは200px移動に変えないと実態としてずれる。
アドバンスナビのほうもソースコード見てみたけど辛うじて描画領域確保しているのがわかるだけでフォントが小さく表示される原因がわからん・・・
2017/10/28(土) 15:19:16.97ID:Ctf6COgz0
秀丸エディターですが、AutoHotkey_L.hilightファイルをいろいろ触ってみました
もともと入っていたC-function.hilightを参照しながら触ったのですが
91,^[a-zA-Z0-9]+:
として、これをtagsファイルの作成のときに選択すると出来なかったのですが
21,^[a-zA-Z0-9]+:
としてやると、tagsファイルにラベルも出てきてダイレクトタグジャンプが出来るようになりました
この91や21で協調文字の種類を決めているのはわかるのですが、タグの生成にも関わっているとか
いろいろとめんどくさいそうですが、タグ生成用のためのファイルは出来そうです
あとは、スレチなので、秀丸さんの方で聞いてきますか
2017/10/28(土) 19:06:53.26ID:3WINCwSX0
>>284
あらら自己解決してたかな
こっちでも調べてたんだけど飛び先ラベルとして認識させるには「行の強調」にしてやらないとダメっぽいね

> 21,^[a-zA-Z0-9]+:
これだけだとホットキーラベルとサブルーチンラベルにしか飛べないので関数にもジャンプさせるなら
149,^[_a-zA-Z0-9]*\(.*\)
を追加すると良さげ

ちなみにうちの.hilight
独自構築モノなのでwikiの強調定義とは互換ないです
https://ux.getuploader.com/autohotkeyl/download/124 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/10/28(土) 20:25:45.14ID:g6R5313m0
>>285
わざわざありがとう。DLして参考にさせてもらいました
hilightファイルの構造がどうなってるのかググっても良くわからなかったので試行錯誤してやるしかないです
でも目的はtagsファイルを作ることなので、tagsファイルは中を見ると構成が簡単そうなので、直接外部アプリ(DosやGnu)で
tagsファイルを作成することを考えてもいいかなとも思ったのですが、助かりました
2017/10/28(土) 21:30:38.60ID:3WINCwSX0
ごめん.hilightの中に構造説明のコメント付けてたんだけど長くなるので削っちゃった
秀丸エディタマクロヘルプのloadhilight文の項に強調定義フラグの意味が載ってるので
興味当たったら調べてみて下さい
2017/10/29(日) 06:33:32.61ID:QNF+jVue0
>>287
マクロヘルプのloadhilight見てきました。ありがとう。こんなところに書かれても見つからんわw
でも良くわかりました。 あとはColorSetだな
2017/10/29(日) 06:41:23.64ID:QNF+jVue0
>>287
ColorSet、こちらもわかりました。 マクロヘルプのconfigcolorにありました
頂いたahk20171028.hilightのColorSetのコメントの意味はこれだったのですね
これでもうほぼ理解できました。ありがとうございました
290名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 13:56:57.31ID: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
}
291名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 13:57:59.50ID:KzWRlc+C0NIKU
;エクスプローラでフォルダを開く
WinTitle := "ahk_class Notepad"
oNotepad := ComGet(WinTitle)
filePath := oNotepad.ActiveWindow.FullName
RunAs, %USERNAME%, %PASSWORD%
Run, explorer `/select`,"%filePath%"
RunAs

この様に書いたらエクセル、ワード、パワーポイントまではうまくいったんですが、メモ帳だけうまくいきません。どうかご教授を。
2017/10/29(日) 14:58:41.15ID:NgmpJOSW0NIKU
ifwinexist
winget processpath
run
2017/10/29(日) 15:57:39.21ID:oo5Bc3OZ0NIKU
メモ帳にはCOMが用意されていないみたいだね
素直に、名前を付けて保存
294名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)
垢版 |
2017/10/29(日) 16:17:30.91ID:KzWRlc+C0NIKU
>>293
ありがとうございます。スッキリしました。
2017/10/29(日) 23:34:38.22ID:sce/LU2/0NIKU
スクリプト&AutoHotKey初心者です
欲しいものは、アプリケーションキーAppsKeyを押すと
1回目 wキーを長押し
2回め wキー+8キーを長押し
3回目 動作無し
以降繰り返し
というものです。
何から手を付けていいのかわからないのでここで質問させて頂きました。
https://sites.google.com/site/ahktips/howto/helloworldにあることは確認しています。
どうか御教授お願いします。
2017/10/30(月) 04:09:49.70ID:dZnUwqZQ0
Run,http://www.google.com/search?q=%Clipboard%
このスクリプトで検索しているのですが、以下の(1)〜(3)のようなことはできるのでしょうか?

(1)エディタで文字列を選択してこのスクリプトを実行した時、ブラウザをActiveにしない。
(2)新しいTabを開かないで検索する。
(3)新しいTabで検索するが、現在のTabに留まる。

(1)は検索したあとにもう1度エディタをActivateさせているのですが、もっとうまくできないかと。
2017/10/30(月) 04:34:56.79ID:vmv0acd+0
>>295
wikiのサンプルコード集に「キーを押す度に機能を切り替え」ってのがあるからそれ参考にするといい
http://ahkwiki.net/SampleCodes
何から手を付けていいか分からないならとにかくwikiをよく読みな
急がば回れ
2017/10/30(月) 10:16:54.38ID:vMir4n9d0
>>296
どれもブラウザ依存だからAHK側からは基本ムリ
ブラウザ側で設定したり、ショートカットキーやコマンドラインオプションをAHK側から利用するしかない

ブラウザ側でできないなら、(1)は検索する前にエディタを最前面固定するといくらかマシに見える
(2)(3)は諦メロン
2017/10/30(月) 10:17:43.96ID:jNVZDUzg0
>>296
ご使用中のブラウザのコマンドラインパラメータをご確認ください
2017/10/30(月) 12:35:59.54ID:dZnUwqZQ0
>>298
>>299
分かりました。ブラウザの機能も調べてみます。ありがとうございます。
2017/10/30(月) 22:34:34.80ID:BusKigX60
>>297
回答ありがとうございます。およそ次のような枠組みになることはわかりました。
AppsKey::
Flag += 1
If Flag =1
{
「コマンド1」
Return
}
If Flag =2
{

Return
}
Flag = ;3回目変数をカラ
Return

「コマンド1」に関してhttp://ahkwiki.net/Sendを参照すると
Loop
{
Send {w down}
sleep 30
}
Send {w up}
のように書くのかと思いましたが、 loopを脱出する条件やAppsKey:: Flag += 1などを考えるとわかりません。
サーチが不足しているかも知れませんが、どうかお助け願います。
2017/10/31(火) 00:01:07.53ID:IArYTqnO0
>>301
何をやりたいのか良く分からないんだが>>295
1回目と2回目押した時の「長押し」って押しっぱなし状態で固定して
3回目押したときにwと8を離すってことじゃないの?
2017/10/31(火) 05:01:26.49ID: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
2017/10/31(火) 09:19:18.89ID:HXbL+oKY0
>>303
WingetClassを使おう

>>301
脱出条件が書けないのは動作イメージがあいまいだからでは?
「長押し」をどういう挙動にしたいのか考えてみて
n秒以上押下 なのか AppsKey離されるまで押下 なのか等
2017/10/31(火) 10:31:49.91ID:7gNoBxwg0
>>304
回答ありがとうございます
下のをやっても反応なしでした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
2017/10/31(火) 12:48:17.99ID:HXbL+oKY0
タイトルやclass名が固定でわかってるときはGetしなくていいよ
とりあえずウィンドウ指定の方法からわかってなさそうなのでwikiを読もう
http://ahkwiki.net/Window


(別タブではなくあくまで別窓という前提で)
確認してみたがアクティブ化後は効くけど非アクティブ時は効かない
この手の挙動のアプリはControlSendでは無理な場合が多い

WinActivate, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
ControlSend, Chrome_RenderWidgetHostHWND1, {f5}, Yahoo! JAPAN ahk_class Chrome_WidgetWin_1
2017/10/31(火) 16:35:05.33ID:zqELyNoa0
SysListView32ですが、値をとってくるのはGetContorolを使えば出来るのですが
リストの任意の場所の値をセットすることって出来ますか
今はその場所へmousemoveでカーソルを移動してクリックさせて
Sendで値を入れるみたいなことをリストのひとつひとつにしているのですが、時間がとてもかかります
2017/10/31(火) 16:36:10.72ID:zqELyNoa0
→ControlGet
2017/10/31(火) 19:20:47.45ID:7gNoBxwg0
>>306
無理なんですね・・・
わざわざ確認とスクリプト、ありがとうございました
2017/11/01(水) 13:04:59.67ID:oLVxkSWa0
新しいPCでahkファイルへのD&Dで引数が正常に取れないと思ったら8.3形式のファイル名が無効になってた
Win10ではシステムドライブ以外のフォーマットは8.3形式のファイル名の無効がデフォになったのかな?
2017/11/01(水) 22:15:18.71ID:0XbH3Oow0
>>302
解決しました。指摘通り単に一回目がSend {w down}...etcで動作しました。
動作チェックがテキストエディタ上のみで、またその挙動が物理キーを押し続けた場合と違ってwがリピートされなかったため、
仕様を誤認していました。混乱させてしまい申しわけありませんでした。
アドバイスくださった方々、ありがとうございました。
2017/11/02(木) 11:23:34.64ID:F6tfVhm+0
AHKで、任意のウインドウのWinTitleを変えることって出来ますか
2017/11/02(木) 11:58:51.92ID:aI4Kc6yj0
>>312
出来ます
2017/11/02(木) 14:38:27.28ID: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以外ほとんどやった事がないです。
2017/11/02(木) 15:00:05.60ID:k9JkDB2u0
>>314
https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa366770(v=vs.85).aspx
NumPutで構造体のdwLengthを指定しないとだめでしょ
2017/11/02(木) 15:02:04.54ID:VfmNp1pV0
dwLength

The size of the structure, in bytes. You must set this member before calling GlobalMemoryStatusEx.
2017/11/02(木) 17:44:56.54ID:gLmdbRIP0
>>315
ありがとうございます!解決しました。
```
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
)
```
2017/11/03(金) 14:40:06.50ID: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
2017/11/03(金) 14:46:15.58ID:l+MEYLy90
あ、AHKのバージョンは、v1.1.24.04です
ToolTip, tipwindow, 100, 500, 2の最後の2にはなんの関係もありません。これはなしでも同じ結果です
2017/11/03(金) 16:03:16.16ID:bkVry8BK0
#If MouseIsOver("ahk_class Shell_TrayWnd")
このコードがwikiにありますが
タスクバー上で、Wheelの左右が効かないのはなぜでしょうか?
2017/11/03(金) 16:58:12.94ID:oAKaFRrm0
>>318
少し試してみた感じだと、Tooltipの内容をタイトルとして取得できるのは同一のプロセス内だけっぽい?
AWIは別スクリプトだから取れてないのかと

あとExcludeTitleにはahk_??は使えなかったような
2017/11/03(金) 17:24:02.39ID:l+MEYLy90
>>321
ToolTipsのときは、ActiveWindowsInfoのWindowTitleには出てないのに
WinGet等で取れるっていうのがなんとも気持ち悪いです
デバッグするときにあれって思う
2017/11/03(金) 17:29:54.20ID:l+MEYLy90
ああ、ActiveWindowsInfoっていうのは
Window Spyのことね
2017/11/03(金) 17:45:24.63ID:AEQ8+teS0
>>318
WindowSpyがTooltipの内容をタイトルとして拾えないのは昔から仕様扱いだったと思う。
ahkとWindowSpyの両方から全く同じコードでGetWindowText()を呼び出しても、
ahkからしか取得できないので、OSの仕様じゃねーの?という扱いだったような。
ahkのcppソースのコメントにWM_GETTEXT()とGetWindowText()のどちらを使うかってのが説明してあって、
WindowSpy改造すればタイトルとして取得できるけど、問題のほうが多そうということで仕様扱い。

まあ、tooltipにはタイトルなんてない、で誰も困らないような。
2017/11/03(金) 18:03:00.03ID:l+MEYLy90
>>324
複数のアプリを立ち上げていて、その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になっちゃうから
2017/11/03(金) 18:14:40.56ID:AEQ8+teS0
>>325
やろうとしたことは大まかにわかったけど詳細がわからないので解決できるのか知らないけど、
WinGet使う前にtooltip非表示にしてしまえばいいのでは?
2017/11/03(金) 18:25:55.44ID:l+MEYLy90
>>326
WinGetで取る前にtooltip非表示にして取ってから
再度表示にする、ということですね
非表示にすると取らなくなるのかな
でも可能性はありますね
でもなあ、ExcludeTitleが使えたら解決するんですけどねえ

ahk_XXのときは使えないとか、なんでやねんw
今日は疲れました
2017/11/03(金) 18:37:53.97ID:l+MEYLy90
>>324
>まあ、tooltipにはタイトルなんてない、で誰も困らないような。

それとここですが、結局、Tooltipsの場合は、そこに表示されている内容も
WinTitleになる、ということですね。でもWindowSpyには出ないので要注意です

ほんとこれこそちょっとしたTIPSになりましたw
2017/11/03(金) 19:28:22.49ID:oAKaFRrm0
ActiveWindowInfo.ahkをモジュール化して組み込んだら
自分のtooltipはちゃんとタイトル表示されるようになったわ
2017/11/05(日) 14:42:30.14ID:lmZ+8dDx0
>>325
俺も似たようなことやってるけど
「アクティブウィンドウ:t1」みたいに表示させてたおかげで無自覚回避できてたようだな

というか真面目な話、バグとして報告していい案件なんじゃないの
2017/11/05(日) 23:42:34.65ID:mfJuW1tS0
>>325
>ToolTipsにアクティブになってる同じタイトル名を表示する
この部分がよく分からないんだけど、アクティブになってるウインドウのPIDを取得して、
それを元にウインドウタイトルを取得して、
そのタイトルをtooltipに表示する
ということだろうか?

だとしたら、
^a::
WinGet, v, PID, A
WinGetTitle, title, ahk_pid %v%
ToolTip, % title, 100, 500, 2
return
というのは?

wingetにおけるPIDの説明には
PID 条件に一致する一番最初(前面)のウィンドウのPID(プロセスID)。
となっており、「一番最初(前面)」というのは必ずしも「アクティブ」とは限らないと思うんだが…

間違っていたらスマン
2017/11/06(月) 08:39:10.84ID:+3FFCnlR0
1.app1というアプリが起動してあり、さらに
2.tooltipにapp1と表示させてた状況で
3.WinGetでタイトルがapp1のappを釣ろうとしたら、tooltipの中身のほうにひっかかった
という話でしょ。
2017/11/06(月) 17:03:32.17ID:whGphSg+0
で、そのとき
appとtooltipを区別して釣ることができない、ということ
2017/11/06(月) 18:29:26.02ID:M//XmyI50
タイトル指定でツールチップを除外したいだけなら普通にやりようあるけど
あまり相手したくない感じの人だから関わらないほうがいいかな
2017/11/07(火) 11:44:49.50ID:C4uwBzlx0
TrayTip の Seconds って機能してるのかな
10 も 30 も変わりないように感じるけど
2017/11/07(火) 12:02:59.88ID:wPhF9P5t0
Note: This parameter has no effect on Windows Vista and later.
2017/11/07(火) 12:06:09.50ID:FUUC0b2I0
>>335
本家ヘルプによるとvista以降で機能しない

>>334
横からだけどよかったら触りだけ教えて
2017/11/07(火) 13:05:31.04ID:C4uwBzlx0
>>336
>>337
書いてあったんですね、ごめんなさい。
ありがとうございます。
2017/11/07(火) 17:19:49.83ID:SgV85eZs0
>>337
ahk_class ^(?!tooltips_class32$)
2017/11/08(水) 12:57:11.90ID:FQHhkSa+0
>>339
その正規表現の意味がわからなかったけど試したらできたわありがとう
正規表現の勉強しなおしてくる
2017/11/08(水) 21:20:19.90ID:Aynw/XIa0
aaa()
{
実行文字列
}
で読み込んだ関数が

この後に
v::
while (GetKeyState("v","p") )
{
aaa()
}
return

で読み込めないのなんでだ…
aaaの実行ラインは
v::
の後に書き込むと問題なく動いてる

1.関数化できてない?
2.引数できてない?

あまり恥ずかしい内容なので中身を詳しく書けませんが
原因として考えられることがあれば教えてください
2017/11/08(水) 21:50:37.38ID:D9XhZkru0
よーわからんがとりあえずtooltipで試しすとちゃんと動くので
恥ずかしい内容の中身に問題があるのでは?


v::
while (GetKeyState("v","p") )
{
aaa()
}
tooltip
return

aa(){
tooltip,aaa
}
2017/11/08(水) 23:12:20.37ID:Aynw/XIa0
>>342
確かにtooltipで動かすと問題なく作動してますね
中を確認してみます
ありがとうございます
2017/11/10(金) 00:56:44.09ID:far4pfand
1つの処理だと問題ないんですが
a::
の中と

b::
の中に
同じ処理を入れようとすると
Duplicateエラーが出るのは同じ関数を使っているから?
対応策はありますか?
2017/11/10(金) 01:37:54.01ID:a/DVTS050
記述を隠したがるやつ妙に増えたな
2017/11/10(金) 03:14:31.48ID:U5SA2Xv00
a::
goto label1
label1:
return

b::
goto label1
label1:
return

だとエスパー
2017/11/10(金) 05:39:27.48ID:a1txFjAv0
最近、AHKが動かないソフトが増えている気がするけど、俺だけかな?
トライアル版を試したこれも動かなかった。
HippoEDIT
https://www.hippoedit.com/

俺のバージョンはv1.1.22.04。OSはWin7 64bit。
外国ののソフトは動かないのが多い気がする。
2017/11/10(金) 09:21:13.07ID:rAX5gFmOa
一年半まえに使い始めたわいので
v1.1.23.05やで

最新の
v1.1.26.01
試してみたらどうや
アプデって言っても置き換えるだけだし
2017/11/10(金) 18:02:19.75ID:a/s4mTF+0
>>344
>>347
AHKの「なにが」動かない?
書かなければ「分からない」
2017/11/10(金) 18:23:39.05ID:a1txFjAv0
>>349
ホットキーが無視されてしまいます。v1.1.26.0.1でも同様です。キーをフックする優先順位がAHKよりも高いような印象です。
皆様はいかがでしょうか?
最近、海外のソフトでは案外ひんぱんに経験します。AHKを管理者権限でインスコすればいいのかな?
2017/11/10(金) 18:33:22.48ID:e6Htw9YT0
管理者権限で試すのはインストールではなくスクリプトの起動では
2017/11/10(金) 18:38:52.24ID:a/s4mTF+0
>>350
問題が起こる最小限のスクリプトを書いていれば話がスムーズに進む

F1::MsgBox フックなし
$F2::MsgBox フックあり

フックの有無
管理者権限 >>10
2017/11/10(金) 18:38:58.39ID:uMNzoQ5c0
質問が頓珍漢過ぎて、さすがに釣りとしかw
2017/11/10(金) 18:43:51.83ID:a1txFjAv0
>>351
おお、動きました。ありがとうございました。
管理者権限で起動する方法は↓にありましたので早速やってみます。

管理者権限で実行しなければいけない常駐アプリのスタートアップ設定方法
http://tanweb.net/2015/10/21/5101/
2017/11/10(金) 19:04:38.60ID:a1txFjAv0
>>352
私はいわゆるSpaceFNをやっていまして、それがSpace押下でSpaceが入力されて困っていました。
何故外国のマイナーなソフトだとこういう現象が起きるのか不思議ですね。定番のソフトでは経験したことありませんでした。
356名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)
垢版 |
2017/11/10(金) 22:15:32.90ID:Oslygo4n0
windows APIのABM_SETSTATE messageを使って「タスクバーを自動的に隠す」をオンにしたいのですが、 APPBARDATA構造体のlParamメンバーには何を入れればいいのでしょうか?また、hWndメンバーに入れるのはタスクバーのハンドルということでいいのでしょうか?
2017/11/11(土) 01:35:11.41ID:gMztQec90
ABS_ALWAYSONTOP = 0x0002
ABS_AUTOHIDE = 0x0001
358名無しさん@お腹いっぱい。 (ブーイモ MM0f-mI+x)
垢版 |
2017/11/11(土) 07:52:33.31ID:IBbBqaBiM
>>357
よろしければ出典を
2017/11/11(土) 16:56:54.15ID:F5Z3qywF01111
「タスクバーを自動的に隠す」とは全く違う内容だが、こんなのあったの思い出した

1 Hour Software by Skrommel - DonationCoder.com
http://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
}
2017/11/11(土) 17:01:34.05ID:F5Z3qywF01111
>>359

「Start」は「スタート」と日本語にしないとスタートボタンに適用されないはず

ま、どうでもいいけどスレ汚しスマン
2017/11/11(土) 19:12:22.78ID:r2k0ryN301111
>>358
http://anago.5ch.net/test/read.cgi/software/1317156599/7のマンドクセがすげー便利だからブクマしとくといい

>■リンク等
>AutoHotkey メモ - Principia
>http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
>なまず日記
>http://www.tierra.ne.jp/~aki/diary/
>eamatの日記
>http://d.hatena.ne.jp/eamat/
>1 Hour Software by Skrommel - DonationCoder.com
>http://www.donationcoder.com/Software/Skrommel/
>Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較)
>http://rosettacode.org/wiki/Category:Programming_Tasks
>
>以下公式フォーラムより
>http://www.autohotkey.com/forum/topic8795.html  Tips N Tricks
>http://www.autohotkey.com/forum/topic26855.html ListViewで大きな画像を扱いたい
>http://www.autohotkey.com/forum/topic19509.html GUIで標準のもの以外を使いたい
>http://www.autohotkey.com/forum/topic20097.html GUIを手軽に作りたい
>http://www.autohotkey.com/forum/topic39598.html DllCallで定数調べるのマンドクセ
>http://www.autohotkey.com/forum/topic22975.html コンパイルユーティリティ%28Compile_AHK II)
>http://www.autohotkey.com/forum/topic23072.html HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい
>http://www.autohotkey.com/forum/topic19367.html Windowsのイベントをフックして色々やりたい
>http://www.autohotkey.com/forum/topic20701.html ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
>http://www.autohotkey.com/forum/topic20701-42.html ShellDesktop() : デスクトップで選択されたファイルを取得
>http://www.autohotkey.com/forum/topic21451.html ポップアップメニューの情報を得る

昔はテンプレにあったんだがいつの間にか消えてたんだな
362名無しさん@お腹いっぱい。 (ワッチョイ 5fab-9JVD)
垢版 |
2017/11/12(日) 12:55:49.04ID:8syapqkm0
ジョイスティックの傾き検出して逆にキーボード操作に置き換えるスクリプトが出来たけど需要ある?
G13使用とかでジョイスティックの傾きで歩き、走りを検出できるようにしたもの
Fallout4用に作ったけどジョイスティックが使えないゲームとか、他にも応用が効くはず
あるならうpします
2017/11/12(日) 13:08:15.48ID:WM9jBImW0
JTKで間に合ってます
2017/11/12(日) 13:58:55.86ID:zqxC5E00a
内部的にどうしてんのかは見てみたいからうぷっていいのよ
2017/11/12(日) 14:31:21.01ID:RFK/5/nu0
ブログとかにアップして、アドレス貼ってくれる方が読みやすいから好き。
2017/11/12(日) 17:34:26.63ID:8syapqkm0
アップしてみました
JTKまがいなジョイスティックの傾き入力をキーボードに変換するということをAutohotkeyでやりたいという人
興味があればどうぞ
https://ux.getuploader.com/autohotkeyl/download/125 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/11/12(日) 18:50:56.86ID:BMyO5Iwfa
入力角度まで検出できんのか
ありがてえありがてえ
JTKより好みにキーコンフィグできそうだ
368名無しさん@お腹いっぱい。 (アウアウオーT Sa7f-0rpk)
垢版 |
2017/11/12(日) 21:23:05.65ID:PxES/4Ifa
この設定ってAHKで実現できますかね..?
https://qiita.com/hakomo/items/a19eb4b08bc2b3aa1533
緑文字の「Ctrlキーと(SandSの)Shiftキーを押しながら」のところが実現できるのか...
2017/11/12(日) 21:24:18.65ID:0k5Ffqyx0
JTKで出来るのになんでこんなもの作ったのかというと
JTKの特殊入力のアナログレベルによって切り替えるってところに不満があったから
多分、座標のXYの傾きだけで長方形判定してる。斜め入力時のときに誤操作が起きるって理由から
コッチは半径を求めてそれを目安にすることにした
それと内部的にキーおしっぱループの処理がわかってないのが怖い、連打してるかもしれないから
なので作った
370名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)
垢版 |
2017/11/12(日) 21:28:02.68ID:PRQr2sD50
>>361
ありがとうございます。もう少し調べてみます。
2017/11/12(日) 22:24:35.47ID:0k5Ffqyx0
https://ux.getuploader.com/autohotkeyl/download/126
>>366のものを二軸対応しました。ゲームパッドは二軸が主流でしたね。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/11/12(日) 23:49:57.26ID:8jWLb8S60
>>371
右スティックの軸はゲームパッドによってZ/Z回転だったり
X回転/Y回転だったりモデルによって異なるぞ
2017/11/12(日) 23:53:32.89ID:0k5Ffqyx0
>>372
ああ、そうか、そうなっちゃうともうデバッグonにして動いてるパラメーターから同じ要領で変更してください。
関数化してもよかったか
2017/11/13(月) 00:03:39.23ID:HPvoCD+z0
そのうち角度計算、半径計算は関数化してもう少しシンプルに各軸設定出来るようにします。お待ち下さい
2017/11/13(月) 00:05:12.60ID:4HU28rAR0
いや別に要らんけど
2017/11/13(月) 00:10:45.51ID:mG2uBOBH0
ジョイなんとかは自分とこだと暴発しておっかないから使うのやめたなあ
2017/11/13(月) 00:16:44.83ID:jtVf8kaUa
三角関数とか半径計算とか思いつかなかったしめんどくさいことを代わりにやってくれただけでも俺としては助かったか
これだけあれば無理にバージョンアップしなくてもええで
軸情報さえ与えればいいからな
GPDwin用に使わせてもらうわ
378名無しさん@お腹いっぱい。 (ワッチョイ 5f67-0ibl)
垢版 |
2017/11/13(月) 01:55:06.59ID:9Yyb7OWG0
Menuで出すホップアップメニューがたまに外クリックしても消えなかったりするんだけど対策とかある?
2017/11/13(月) 04:56:43.07ID:DdvhQXaH0
>>378
対策は知らんけど、消す方法ならある

loop, 5 {
ifwinexist
break
winactivate, ahk_class #32768
send, {alt}
}
2017/11/13(月) 05:03:16.68ID:DdvhQXaH0
ifwinexist
じゃなくて
ifwinnotexist, ahk_class #32768
2017/11/13(月) 07:42:55.30ID:GHdXBXoe0
>>378
ポップアップメニュー表示中は、SetTimerの割り込みでさえ出来なくなるので、
ポップアップメニューを別AHKにして呼び出さないと、表示後の対策は何も出来ない。
2017/11/13(月) 11:33:02.31ID:MpwXGRWu0
使ってたフリーソフトがたびたび落ちるから、似たようなの自作して安定してたけど
元がmigemo対応してたんで、こっちにも組み込んでみたら落ちるようになったつらい
2017/11/13(月) 16:43:29.88ID:fTwFmDsma
#usehook

^b::
send,^a
return


^a:: ;コピー
send,^c
return


^bでコピーのスクリプトを動かす方法ってないですか?Goto、Gosubは使わないで
2017/11/13(月) 17:12:12.27ID:1/94+gPG0
何がしたいのかさっぱりわからん
2017/11/13(月) 17:19:11.52ID:CsIQdQOr0
この手の質問にあるあるだな
何をしたいのか具体的に書かずに、省略した謎コードを添削させるという
386名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:54:41.25ID:fTwFmDsma
なぜそうしたいのかなんて書く必要ねーからだろアホ
387名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)
垢版 |
2017/11/13(月) 17:56:04.52ID:fTwFmDsma
質問に答えねーでケチつけるだけのゴミがでてくることこそあるある
2017/11/13(月) 18:07:11.52ID:GHdXBXoe0
クイズ問題だと思って答えれば良いってことだな。
2017/11/13(月) 18:10:32.01ID:GHdXBXoe0
^b::
^a::
send,^c
return
2017/11/13(月) 19:13:13.64ID:uV0ePfEm0
いやいやそこでクイズに答えてしまうと質問者は己のコードミスに気が付かないまま終わるで

send,^a はどこ行っちゃったんですかねぇ
2017/11/13(月) 19:19:50.16ID:uV0ePfEm0
ああ^cと^a間違えてるわけじゃなくてソフトウェアホットキー有効にしたいのね
#usehook外せばいいんじゃないすか
2017/11/13(月) 20:15:26.75ID:fTwFmDsma
>>389
すいませんその方法も使えないんです。
>>391
そうですソフトウエアホットキーを使いたいということです。
ですが#usehookや$がないと無限ループがおこるとかリスクがあるみたいなのでもう少し調べてなかったらあきらめます。
ありがとうございました。
2017/11/13(月) 21:47:08.56ID:uV0ePfEm0
無限ループ起こるのは

^a:: send,^a

とかやった場合だよ
A_ThisHotkeyと同じものをsendしたい場合だけ ラベルに$つければいいだけじゃね
2017/11/14(火) 23:10:37.76ID:5FT+P57l0
ダメだ。マウスエミュレーションじゃゲーム上でカメラ動かないわ
何が条件なんだろう
2017/11/17(金) 20:21:21.45ID:v4vSzIoOa
3つを一度に比較ってできませんか?

space::
a:=10
b:=20
c:=30

z:=(a < c > b)
tooltip,%z%,600,800
return
2017/11/17(金) 21:19:49.16ID:/dyoxVd70
そういう関数を作ればいい
2017/11/17(金) 21:26:38.63ID:Bg65fQp30
ここ2,3か月前に同じような質問見たな
まああれは質問というか文句言いに来て恥かいただけだったが
2017/11/18(土) 00:44:39.76ID:9bPtI36B0
and使うのが嫌ってこと?
まとめて一行で書く方法が分からないってこと?
2017/11/18(土) 01:29:01.86ID:/66QZllda
だいぶ説明不足でしたすいません。
3つの数字は常に変動してて、ホットキー押したときにそのとき一番大きい値のを選択するってことがしたいです。
ifを沢山書けばできるけど一行でやる方法ないかなあと調べたのですが分からず。
一つ増えまして4つで比較ができればいいのですが。
2017/11/18(土) 02:02:09.20ID:s0iz+kxI0
z := (a >= b ? a : b) >= ( c >= d ? c : d ) ? (a >= b ? a : b) : ( c >= d ? c : d )

1行で書けるけど、1年後とかに見たら何をやってるのか分かり難いので
ifで書いといたほうが視認性はいいんじゃないかな
2017/11/18(土) 02:03:39.21ID:9bPtI36B0
参考演算子使えばやれないこともないが素直にif書くほうが楽だと思うわ
2017/11/18(土) 02:04:14.18ID:9bPtI36B0
おっとかぶった
2017/11/18(土) 02:26:47.34ID: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
2017/11/18(土) 07:53:06.18ID:DK0R+z7u0
>>403
これはすばらしい。 こんなこと出来たんだ
2017/11/18(土) 09:51:33.02ID:73eJM4Pl0
integer限定でよければこういう方法も

Max_integer(params*) {
o := object()
Loop % params.MaxIndex() {
o[params[a_index]] := true
}
Return, o.MaxIndex()
}
2017/11/18(土) 15:19:43.22ID:KK0M+Lkna
質問です

対話形式プログラムの自動化ってできるんでしょうか?
コマンドプロンプトに対してControlSendで送ることは出来ても
返答メッセージの読み取り方が分かりません。
2017/11/18(土) 17:29:00.55ID:9x5Xxm/fa
>>400
>>403
>>405
おー、すごい
できるようになりましたありがとうございました。
ahkを一年以上使ってるけどwiki読んだり検索して似たようなことやってる人のスクリプトを見てもわからなくてちょっと改変して移植もできない場合が多すぎて自分のポンコツぶりが悲しいw
2017/11/19(日) 10:41:23.26ID:Z14m3kUG0
>>406
uwscは doscmd で出来るけど、ahkでは試そうとしたこと無いので出来るかどうか解らない
2017/11/19(日) 12:25:42.07ID:S3PDgYNS0
>>406
大昔に無理やり実装してた人はいた、オリジナルANSI版の頃のだからたぶん今だと動かないと思うが
ここの プロセスを起動して標準出力を読み書き
http://lukewarm.s101.xrea.com/myscripts/

最近のだとこの辺とか?
AutoHotKey_Lで、標準出力を得る方法。
http://poimono.exblog.jp/22219786/

単純に出力見たいだけだったらファイルにリダイレクトしちゃうのが簡単だけど
(書き込み規制に引っかかるので全角化)
RunWait, cmd.exe /c es.exe 検索文字列>temp.tmp,,Hide /UseErrorLevel
FileRead,var,temp.tmp
msgbox,%var%
2017/11/19(日) 13:05:22.35ID:TLd+5rvh0
|clip
2017/11/19(日) 16:27:40.09ID:wn0nPePn0
>>406
例えば 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

こちらの入力待ちになるまでの処理は色々なやり方があると思う
2017/11/19(日) 16:56:27.05ID:X7pjzKSy0
https://autohotkey.com/board/topic/82732-class-command-line-interface/
2017/11/20(月) 09:16:01.49ID:r9poHEzN0HAPPY
いろんなご意見ありがとうございます!

>>408
対話型には向いてなさそうな…

>>409
url一つ目のやつは試してみたけどahk_lだと動きませんでした
url二つ目のやつはout of memoryとでて、こっちもダメでした😭

>>411
これです!
なるほどこうやってCOMオブジェクトを使うんですね
すごい勉強になりました

>>412
原理的には411とほぼ一緒みたいですね
WINAPIはいまだにさっぱりよくわかりません

高速でControlSendを使うと
キーボードからの入力がたまにロックされて使えなくなってしまうことがあったので
COMオブジェクトで直接読み書きできるならそれにこしたことないですね
414名無しさん@お腹いっぱい。 (ワッチョイ f987-ijJr)
垢版 |
2017/11/22(水) 03:26:57.07ID:DaaBsnMY0
キーの長押しすり抜け病って修正されてるのかな?
未だなら早よ!
これがちゃんとできないとカーソル移動とか怖くてAHKは使えないんだよ
致命的な不具合だ!
2017/11/22(水) 06:40:23.02ID:ee0mAgGh0
一生治らないから諦めろ
416名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/23(木) 11:33:48.10ID:IP8Uaqwm0
>>415
こんなポンコツよく使ってると感心する 信じられないw
もちろんこれがゆえにkeyhacに移行したわ!
2017/11/23(木) 12:32:45.22ID:AEqjMUC50
>>416
ハイハイ二度と来るなよ
2017/11/23(木) 12:36:42.73ID:6CZftXIg0
ここ数年で作ったものを見返してみたら全くホットキーと関係ないものばかり
なんで俺はAHKを使ってるんだろう…?
419名無しさん@お腹いっぱい。 (ワッチョイ df8e-067h)
垢版 |
2017/11/23(木) 14:25:49.30ID:ekf0KvoP0
>>416
>>246
2017/11/23(木) 14:48:38.73ID:S1ijK/CVM
ちょっとしたファイル操作とかでもahkでやろうとする癖は付いてしまってるな
本来ならbatやwshあたりでやればいいんだろうけど
421名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/23(木) 21:58:00.87ID:IP8Uaqwm0
本当にAHKは使いもんにならんのよ!
キーログを見るツールとかを立ち上げてAHKの動作を確認したんだが
スクリプトがまともに動かんのよ、ダメだろこれは!
ちゃんとフックできてないんよ、笑うわw
2017/11/23(木) 22:19:25.20ID:AEqjMUC50
>>421
だからもう来るなよ
頭沸いてんの?
2017/11/23(木) 22:38:36.55ID:IP8Uaqwm0
AHKって宗教か?
本当に改善が必要な部分を指摘してるのにまともに考えられないの?
だよ
2017/11/23(木) 23:07:41.31ID:AEqjMUC50
>>423
お前こそ宗教なの?
気持ち悪いから早く消えろよ
2017/11/24(金) 00:16:07.99ID:uAE0Il4A0
すり抜けとか押しっぱなしの指摘なんて散々されてると思ってたけど、そうでも無いの?
2017/11/24(金) 00:28:07.79ID:VrzeCVMba
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | | ハサミ が  // ___   \  ::::::::::::::|
  | | 使エネーヨ |  |   |     U :::::::::::::|
  | | ヽ(`Д´)ノ.|U |   |      ::::::U::::|
  | |  >>421  | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \   \___      ::::::
2017/11/24(金) 00:40:22.15ID:2kxbHRR30
いうても困らない範囲内でしか使ってないからなあ
そもキーリピート発生するキーをホットキー長押ししようとは思わんし
ahkは名前こそAutoHotkeyだがキーカスタマイズだけが目的なソフトじゃないしな

ウィンドウ制御とかいらんならahkである必要性は薄い
ソフトによって得手不得手あるんだし自分の目的に合ったもん使えばいいよ
2017/11/24(金) 05:53:07.19ID:nG64IX5N0
GUIについての挙動についてです
GUI,Add, GUI,Showなどで作ったウインドウ上でスペースキーを押したときの挙動
ってどこかに書いてあるでしょうか
このときに別の挙動をするように、
#IfWinActive
でこのGUIがアクティブになったときに
Space:Msgbox TEST
としても反応しないのです
で、このGUIウインドウ上でアクティブなボタンが実行されます
GUIがアクティブのときにSpaceキーで別の挙動をするようにする方法を
教えてください
429名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/24(金) 05:59:36.57ID:FhfG+MVc0
AHKでは長押しカーソル移動がまともにできませんよ
ソースコードをテキストエディタで開いてカーソル移動したら
意図しない文字が入力されてしまうなんて怖くて使えませんな
2017/11/24(金) 06:10:17.36ID: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
2017/11/24(金) 08:25:23.92ID:uAE0Il4A0
>>429
俺の環境でも再現できるかどうか実験したいから、そのスクリプトを書き込んでくれるとありがたい。
2017/11/24(金) 10:04:29.03ID:H9F6LVQ/a
伸びてると思ったら変なのが居た
2017/11/24(金) 11:37:55.77ID:L3hSVCH20
>>430
Spaceキーを押したらmsgboxに SPACE と表示されるよ
2017/11/24(金) 12:01:15.75ID:/KejfmoM0
>>429
だから使わなきゃいいだろ
思考力停止してんの?
2017/11/24(金) 12:07:56.16ID:nG64IX5N0
>>433
ごめんなさい。 いまやったら出来ました。おかしいな、さっきは何回やっても出来なかったのに
どうも私の環境のようです。 この質問は撤回します
2017/11/24(金) 12:25:49.45ID:QRaiE2Jja
2バイト文字でスクリプト書かないほうがいいぞー
437名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)
垢版 |
2017/11/24(金) 12:58:05.32ID:RTDitcQE0
ネットワーク上にあるファイルをFileCreateShortcutでショートカット作りたいんですが、
処理が異常に遅いんですけど、10秒くらいかかるんですけど、何か対処法
知っていたらご教授お願いします。
2017/11/24(金) 13:31:37.36ID:V79XzJDg0
>>436
くわしく
439名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)
垢版 |
2017/11/24(金) 13:33:56.53ID:RTDitcQE0
>>437です。
自己解決したので報告します。
FileCreateShortcut, "%filePath%", %shortcutName%
といった具合に%filePath%にはダブルクオーテーションを付ける。
以上です。
2017/11/24(金) 14:12:59.90ID:X+2EL7n0a
>>438
ラベル名の話。テストとか
2017/11/24(金) 14:55:45.26ID:uBW3Ah/90
>>431
自分は>>249じゃないが>>136試してみたら確かに"すり抜け"っつうのは発生した
例えばメモ帳でctrl押しながらhを押しっぱなしにして十数秒〜数十秒そのままにしてると
文字の「h」が入力されたり「置換」ダイアログが現われたりした
win7 32bit home ahk 1.1.26.01

自分はこんな操作しないから困らないな
2017/11/24(金) 14:57:52.80ID:V79XzJDg0
>>440
いやだから具体的に何故ダメなのか教えて
2017/11/24(金) 15:59:58.59ID:hNkbZ/Nua
>>442
俺が引っかかった事例としては関数呼び出しのときにエラー吐いたり、文字化け起こしたり、ファイルの保存形式によってはそのまま貼るとエラー吐いたりして二度手間になったり、コンパイルする時エラー吐いたりした
2017/11/24(金) 16:50:37.32ID:MGSGyO6j0
GUIのボタンです
Gui,Add,Buttonで作ったボタンの色を変えることは出来ますか
Gui, Color, Red, Blue
とかやってみたのですが、ウインドウの背景は変わってもボタンの色が
変わりません
ボタンはひとつづつ個別に色を変えたいです
オプションのBackgroundもやってみたのですが、良くわかりません
Cnもボタンのテキストの色が変わりません
2017/11/24(金) 17:18:51.48ID:jYHL/YfM0
>>436
UTF8だから3バイトじゃないの
2017/11/25(土) 00:41:35.70ID:LFO66Rjj0
7-zip32.dll使いたくて↓を参考にDllcallのめぼしいところを Astrに直してみたんですがA32.exeでしか上手くいかないです
http://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
}
2017/11/25(土) 01:07:14.55ID:g6gRHPWN0
憶測だけど GetFileName が UTF16 じゃなくて CP932 で返すんでしょ。だから U32 を使ってそのまま使おうとすると文字化けする
DllCall した後に、StrGet(buf, "cp932") すればいいんでない
2017/11/25(土) 05:36:53.80ID:GERaD2vLM
これってマウスの操作はできないんだっけ?
2017/11/25(土) 09:19:47.50ID:5xCYZF4O0
できる
2017/11/25(土) 10:20:06.46ID:96jiAY9X0
>>444
基本的にできない
応用的には超めんどい(http://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)
https://autohotkey.com/boards/viewtopic.php?f=6&;t=2197
2017/11/25(土) 11:42:19.29ID:LFO66Rjj0
>>447
return buf
 ↓
return StrGet(&buf, "cp932")

でできました!
ついでに 7-zip64.dll 入れてライブラリ参照元書き換えたらU64.exeでも動きました
ありがとうございます!
2017/11/25(土) 11:56:20.53ID: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
}
みたいな技って使えませんか。これではダメだと思いますが。スクリプト生成まではやってくれないのでしょうか
2017/11/25(土) 12:00:28.80ID:kBt1V0zO0
>>452
それなら、filenameを引数にした関数で良いんじゃないかな
2017/11/25(土) 12:07:18.25ID:lMhgyyaw0
そう言われると思いましたが、これは一例で関数は使えないときでお願いします
スクリプトの展開まではしてくれないのですか
2017/11/25(土) 12:28:22.23ID: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
2017/11/25(土) 12:39:03.92ID:lMhgyyaw0
>>455
なるほど、A_thisLabelを使うというのは思いつきませんでした
ちょっとやってみましたが、これは使えそうです
それと、temp.ahkを出力するやり方ですが、これもインクルードファイルを自動生成させて
それを読み込ませるという方法が出来そうですね
ahkがインクルードファイルを読み込むタイミングを確認する必要がありそうですが
ちょっと期待できそうですw
インクルードファイルがなければ自動生成させてreloadで再実行し、ファイルが出来てれば
自動生成処理は飛ばすとか
2017/11/25(土) 12:46:13.64ID:E2bEhulC0
いろいろわかったつもりになってるだけのことが多そうな人だから
関数が使えないと言うのもきっと思い込みなんだろう
2017/11/25(土) 12:49:04.66ID:lMhgyyaw0
ラベルは最初からないとエラーになってしまうのか
ならインクルードファイルではダメなのかな
でもthisLabelが使えるのは教えて頂いて助かりました
2017/11/25(土) 13:02:38.22ID:lMhgyyaw0
インクルードファイルを使う方法も、ラベルだけを宣言しておいたファイルを作っておいて
その後自動生成させれば出来ました。ありがとうございます
2017/11/25(土) 14:01:31.19ID:YtrqIety0
呼び元を動的callにすればdummyラベル処理も省けると思われ
if IsLabel(label%no%){
gosub,label%no%
}
2017/11/25(土) 15:17:00.90ID:b+uTWP1T0
>>431
「AutoHotkey:キー押しっぱなし病・ホットキーすり抜け病対策の研究」
http://did2memo.net/2013/10/03/autohotkey-ctrl-key-is-stuck/
2017/11/26(日) 01:39:07.12ID:M6Ym3I8na
そういえば俺の環境下だとすり抜け最近ないな
スクリプトの書き方でかなり変わるのかも
2017/11/26(日) 07:00:55.53ID:JvtGy1OW0
>>462
キーログソフト(インストール不要)を立ち上げて負荷を掛ける顕著に再現できる
http://kts.sakaiweb.com/keymill.html
464名無しさん@お腹いっぱい。 (ワッチョイ 7fe0-DWFp)
垢版 |
2017/11/26(日) 08:14:54.78ID:Dha5Tkpk0
ホットキーを押したら特定の変数をリストビューに追加する事って出来ますか?
リストビュー初期化時にLV_Addで追加する事は出来たのですが、リストが作られた後に追加する方法が分かりません。
465464 (ワッチョイ 7fe0-DWFp)
垢版 |
2017/11/26(日) 08:25:47.32ID:Dha5Tkpk0
自己解決しました。
LV_Addで変数を%で囲ったらダメでした。外したらいけました><
466名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)
垢版 |
2017/11/26(日) 20:16:06.88ID:dJtA2dZF0
現在のCoordModeを参照する方法ってありますか?
関数内でのみScreenにしたいのですが。
2017/11/26(日) 20:18:04.92ID:tWW84a3A0
A_CoordMode
468名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)
垢版 |
2017/11/26(日) 20:57:46.19ID:dJtA2dZF0
A_CoordModeToolTipみたいな感じなんですね
A_CoordModeだけで試してて「出ないじゃん」とか思ってました
ありがとうございます
2017/11/27(月) 19:53:12.22ID:EWIA3ZBQ0
Visual Studioで AutoHotKeyを動かす方法はないでしょうか
Win10 + Visual Studio community 2017 では動きませんでした
Win7 + Visual Studio 2013(管理者権限で実行) もダメでした
Win7 + Visual Studio 2013(管理者権限でない) はAHKきちんと動いたのが謎ですが・・
2017/11/27(月) 19:56:01.38ID:EWIA3ZBQ0
すいません、
Win10 + Visual Studio community 2017 も
管理者権限だとAHKは動かなくて
管理者権限でないとAHKが動きました。
これは何なんだろう
471名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)
垢版 |
2017/11/28(火) 01:35:37.31ID:mrDQFh/p0
確実にAHKがダメだから
この際、keyhacに乗り換えるのが賢明、時間が勿体無い
2017/11/28(火) 01:49:44.36ID:yiIB//of0
いつまでこのスレに粘着してんだよ
早く消えればいいのに
ここに居る人はkeyhacじゃ出来ない事が腐るほどあるからahk使ってんだし
2017/11/28(火) 03:26:21.76ID:xNQcaR7I0
KeyHacも試してみましたが、こちらもやはり
Visual Studioを管理者権限で実行するとキーリマップが効かないみたいですね・・
2017/11/28(火) 06:51:35.58ID:58J1MEBb0
>>473
一応確認しとくけど、Visual Studioそのものを操作したいなら、管理者権限が必要かもしれないのはAHKの方だぞ
AHKの側に権限が無いなら、>>469-470 は正常動作
2017/11/28(火) 11:52:35.53ID:kVU4R78e0
keyhac最高!!
2017/11/28(火) 12:13:32.39ID:vCAPOVUQa
きーはっくってのは使ったことがない
2017/11/28(火) 14:03:02.90ID:marODPdK0
ウインドウのハンドルを取って来て、そのウインドウ上に絵を描くことって出来ますか?
Dll等を使っても構いません

あるウインドウがあって、特定の場所がはっきりわかるように色を上書きして塗りたいのです。
既存のウインドウにデコレーションするというか

AHK以外でも、もしそういうことが出来る方法をご存じなら教えてください
2017/11/28(火) 16:51:01.37ID:xNQcaR7I0
>>474
ありがとう!解決しました!
おっしゃる通りAHKを管理者権限で実行したらVisualStudioでもきちんと動きました
2017/11/28(火) 17:10:30.64ID:Aj3x6nim0
https://autohotkey.com/docs/FAQ.htm#uac

UIA有効じゃダメなん?
2017/11/28(火) 19:00:19.64ID:mbteePMb0
>>477
WinGetでハンドルが取れる
WinGetPosでウィンドウのサイズと位置が取れる
Guiでウィンドウにかぶさるようなウィンドウを作ったり画像を表示できる
WinSetでウィンドウの表示領域や透明度をいじれる

こんなとこ?
2017/11/28(火) 19:47:20.21ID:marODPdK0
>>480
とってもいいヒントを頂きました。ウインドウに直接描画するのではなく、別のウインドウを作って
それにお絵かきして上に載せるということですね。で、WinSetで表示領域を加工するとか
ちなみに、AHKのGUIで、ツールチップのようにタイトルとか枠とかのないほんとにプレーンなウインドウって
作れますか
2017/11/28(火) 20:41:51.03ID:lLg2f02R0
>>481
F1::
Gui, Color, 00AA00
Gui, -0x00C00000 +ToolWindow
Gui, Show, W300 H200
Return

みたいな感じかな
あとはマウスイベント透過するとかWindowの切り抜きとか透過率とかはWinsetで指定
さらにWindowの移動やサイズ変更に追従させるとか、非アクティブ時や最小化時にhideするとかの必要があればそれも考慮する必要あるかな
2017/11/28(火) 20:49:17.54ID:marODPdK0
>>482
すばらしい。ありがとうございました。これは参考になりました
2017/11/28(火) 20:50:45.05ID:marODPdK0
ああ、実際にこれ、動かして試してみましたよ。これをベースにいろいろと考えてみます
2017/11/29(水) 17:22:52.94ID:n/Ybzuan0NIKU
tooltipの背景色を変えることは出来ますか。その方法を教えてください
2017/11/29(水) 23:31:00.65ID:Fqluvrxu0NIKU
MGLのジェスチャ表示が色付きだけどあれはツールチップじゃなくてGUIをツールチップっぽくしてるだけなのかな?
MGLのソース見てみたら分かるかも
2017/11/29(水) 23:37:42.39ID:GQggD9Lg0NIKU
>>485
progressやguiなら色やサイズを変更可能なのでTooltipとして代用可能
https://egg.5ch.net/test/read.cgi/software/1487149472/134
2017/11/30(木) 15:57:06.36ID:S5EWhTc40
特定のコントロールにマウスオーバーしただけで、そのコントロールにフォーカスを移すことは出来ますか?
教えてエロいひと。
2017/11/30(木) 17:17:53.07ID:JYsA73zK0
1.MouseGetPosでマウス下のコントロールを取得できる
2.SetTimerで常にマウス下のコントロールを監視
3.取得したコントロールにControlFocus(必要に応じてWinActivateも追加)でフォーカスを移す
でどうだろう。スマートではないが。
2017/11/30(木) 18:19:12.52ID:S5EWhTc40
>>489
ありがとうございます。
本来の目的を達成する方法はあるのですが。。
マウスオーバーはトリガーに出来なさそうですね。。。
2017/11/30(木) 19:21:19.06ID:YADM5yWfd
再生デバイスを変更して
ポップアップに変更した端末名
が出るようなスクリプトを
Windows10でやり方教えて
いただけないでしょうか?
2017/11/30(木) 23:52:51.72ID:z9WhXSkf0
>>488
割りとかんたん。
タイマーでモニターしてマウスオーバーでウィンドクラスを取り続けて変数によけとく
変数内のウィンドクラスとマウスオーバーで取ったクラスが違ったらそのウィンドクラスをアクティベートする


以前作ったけどウィンドの順序が切り替わりまくってボツにした
2017/11/30(木) 23:54:25.60ID:z9WhXSkf0
ホットキーをトリガーにするのが嫌ならセットタイマー判定とかWhile判定でええんよって話
494名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/01(金) 11:10:36.81ID: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になったり
するんで、もっといい方法ないですか?
ご教授お願いします。
2017/12/01(金) 21:47:06.69ID:rX6n9K6c0
>>494
OHP 見た感じ COM が使えそうなんだけど、どうだろう
http://qttabbar-ja.wikidot.com/scripting

qt := ComObjCreate("QTTabBarLib.Scripting")
qt.Open(path)
2017/12/01(金) 23:41:13.96ID:3bBdrdON0
>>494
QTTabBarは使ったことないのでいい加減だけど、タブブラウザみたいに
新規ウインドウで開くか新規タブで開くかオプションで設定できないのかな?
497名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/02(土) 10:28:46.57ID:kgC/DzRO0
>>494です。
>>495
どうも、ファイルを選択してフォルダを開くメソッドが無いみたいなんですが、
どうでしょうか?
>>496
shellexecutehookを利用してキャプチャするにチェックをしても、別のプロセスで
フォルダーウィンドウを開くのチェックを外しても
Run, explorer `/select`,"%path%"
とすると、新規ウィンドウで開いてしまうみたいです。

あと報告です。
Clipboard := string
の後に
Sleep, 100
を入れたらNullになる症状が今のところ出ていません。
2017/12/02(土) 10:39:02.57ID:/oo7d0lg0
>>491
少し脱線するけど俺は「App=Device」というコマンドラインで再生デバイスを変更できるフリーソフトを使用してる
AHKとこれを組み合わせてポップアップを表示したりすればお望みのことが出来るんじゃないかな
環境によっては管理者権限で実行する必要がある
499名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/02(土) 11:44:01.02ID:kgC/DzRO0
>>495
qs := ComObjCreate("QTTabBarLib.Scripting")
qs.Open("C:\Users\UserName\Documents")
aw := qs.ActiveWindow
at := aw.ActiveTab
at.SelectedItems := "Book2.xlsx"
と記述したらできました!ありがとうございました!
2017/12/02(土) 12:08:48.75ID:TChgRzeMM
解決したみたいだから蛇足だけど起動中のエクスプローラ(qttab)と
ahkrun、ファイル名runで管理者権限の有無が統一されてなかったとか?
ファイル名runでだけ別プロセスにならない理由がよく分からんね
501名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/02(土) 15:13:06.03ID:kgC/DzRO0
>>494です。
>>500
試しに
RunAs, %USERNAME%, %PASSWORD%
Run, explorer `/select`,`"%filePath%`"
RunAs
とやっていたところを、単に
Run, explorer `/select`,`"%filePath%`"
と書き換えてみましたが、どちらとも新規ウィンドウで開いてしまいます。
コマンドプロンプトからやってみても同じでした。

ファイル名を指定して実行のexeを見てみたところ、explorer.exeとなっていた
のでこれが原因ではないでしょうか?
2017/12/02(土) 20:16:38.83ID: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")
とか素人なりにやってみましたが、全くダメでした。
宜しくお願いします。
2017/12/02(土) 20:34:40.15ID:cHZIOoQo0
やってないから動くかわかんないけど、普通に考えるなら

If( GetKeyState("RButton", "P") or GetKeyState("MButton", "P") or GetKeyState("XButton", "P") )
msgbox Hit

とか
2017/12/02(土) 20:58:57.20ID:uHWvz9WS0
>>503
キタ━━━━━━(゚∀゚)━━━━━━ !!!
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
顔射感激雨あられぇ!
本当にありがとうございました!
2017/12/02(土) 23:02:31.70ID:WK+VS/5y0
>>503
「and」や「||」や「or」を知ってるのに書式が分からないって・・・
wikiとかhelp見ないで適当にやってできないから質問した感がもの凄くあるんだが・・・
2017/12/02(土) 23:07:16.71ID:uHWvz9WS0
>>505
これが素人AHK使いの現実何です。
お察し下さい。
2017/12/02(土) 23:16:56.10ID:cHZIOoQo0
ルールブックがあってもその見方がわからんってレベルだろ
でもちょっとやれば、すぐにわかるようになるよ
2017/12/02(土) 23:26:20.75ID:uHWvz9WS0
はい、精進します。
2017/12/03(日) 07:59:09.08ID:QukwnooP0
andとorは数学の集合でやるからプログラム素人でもわかるよ。
「かつ」と「または」のことだ。縦線は初めてみたときわからんかったので
ヘルプみたが。
2017/12/03(日) 08:08:36.38ID:Y2oOWibi0
中学校かよここは
511名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/03(日) 10:41:00.60ID:OIZ/xCmR0
>>499です。
前述した方法で行うと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で記述する方法がわかりません。
http://bbs.wankuma.com/index.cgi?mode=al2&;namber=21484&KLOG=41

どなたか解決策をご存知の方、ご教授お願いします。
2017/12/03(日) 10:43:25.22ID:vwDuTRcl0
Dllがよくわかりません。詳しく説明してるサイトとかないですか
513名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/03(日) 11:38:27.14ID:OIZ/xCmR0
こんなのとかどうでしょう?
https://support.microsoft.com/ja-jp/help/815065/what-is-a-dll
2017/12/03(日) 18:02:34.24ID:Ob6koUHa0
>>512
VisualStudio VC++とかやらないとその世界は難しいよ
2017/12/03(日) 20:28:38.05ID:cPf87cAl0
winapi関係はほぼVB(A)で覚えたわ
あっちもDeclare宣言必要だから型とか調べるのによくVBの解説サイト見に言ってたわ
今だとMSDN直に見たほうが早いんだろうけど
516名無しさん@お腹いっぱい。 (ワッチョイWW b587-5nm6)
垢版 |
2017/12/03(日) 20:52:39.69ID:1qkTmGRt0
>>512
https://sites.google.com/site/agkh6mze/howto/dllcall
2017/12/03(日) 23:38:28.28ID:3sJMVIk90
Mouseclick left
Sleep,aaa
mouseclick left
Sleep,bbb
.
.
Gosub,A


でgosubの処理時間をループするsleepで調整したいのですが
Gosubの処理時間を計る方法ありませんか
2017/12/03(日) 23:52:11.18ID:cPf87cAl0
A_TickCountとかA_Nowとか見て処理開始と処理終了で引き算すればいいよ
2017/12/04(月) 00:26:00.35ID:EgqKnQ0L0
>>517
; 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
2017/12/04(月) 00:34:18.83ID:W2przMgQ0
StartTime := A_TickCount
Gosub,A
ElapsedTime := A_TickCount - StartTime
MsgBox, %ElapsedTime% milliseconds have elapsed.

これでも可?
2017/12/04(月) 00:42:07.14ID:W2przMgQ0
お二人が答えてくれてました。
ありがとうございます!
2017/12/04(月) 03:27:44.42ID:K4EOO4xA0
>>511
ComObjCreate("QTTabBarLib.Scripting") を使って、使う度に毎回インスタンスを取得してますか?
グローバル変数に一度取得したあと、使いまわしてたりしませんか
2017/12/04(月) 09:05:37.77ID:x7eWud6V0
>>511です。
>>522
グローバル変数に代入してません。毎回取得してます。
後、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?
524名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/04(月) 09:05:55.01ID: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
でエラーが出るんですよね〜。
理由がいまいち分かりません。
2017/12/04(月) 09:57:59.55ID:ytS1hYKF0
Chromeで何十ページも開いて、特定の文字(リンクになってる)をクリックする作業をしてるんですが、自動化したいです
特定の文字をクリックする方法があれば教えてください。
文字の場所はばらばらなので、場所指定のクリックは出来ません。
526名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)
垢版 |
2017/12/04(月) 16:44:32.30ID:x7eWud6V0
>>524です。
結局、その箇所だけjsで対応することにしました。
原因は今も分からずです。
お騒がせしてすいませんでした。
2017/12/05(火) 15:13:33.43ID:8CvOUnVS0
>>525
1、最初に開くページをURLDownloadToFileでローカルにファイルとして落としていく
2、落としたファイルの中をLoop(file)、Loop,Readでループさせ、RegExMatch()で検索する
3、目的の文字列があったらRunでそのURLを開く
2017/12/06(水) 01:55:08.84ID:HOg34AwG0
>>527
自分には難しかったので、URLコピペして文字追加して貼り付ける方法で代用できました。
ありがとうございました。
2017/12/06(水) 10:06:45.47ID:WwbqM6o60
お知恵拝借したく…
getkeystateによってあるキーの押し下げ有無はとれますが そうでなく、「いま押し下げられてるキーを一覧で得る」ような方法はありますか?

ホットキーなど使用していると、自分の環境だとわりと発行されたキーがそのまま残ったりします
今まではプログラム的にキー残りがないよう試行錯誤してましたが、単純に「物理的に、残ったそのキーをもう一回押す」と直ることに気づきました
ちょうど、今押してるキーやマウスを画面表示させられるkbvというフリーソフトを見つけたので、それで一応対応はできなくはないのですが若干起動が重くて…なのでahk内でどうにか調べられたら良いなと思ったのです
2017/12/06(水) 12:06:47.69ID:DTW3oegna
>>529
Pはずせ
2017/12/07(木) 13:15:23.97ID:JhBoA+GN0
Win7です
GUIでウインドウをたくさん作ると、左下のタスクバーのAHKのところにカーソルを持っていくと
作っただけのウインドウ数のタイトルがポップアップで出てきてしまいます
邪魔なので、これを出さないようにする方法ってありますか
スクリプトは1つなので、1つのスクリプトに1つのポップアップのタイトルで十分だとおもうのですが
2017/12/07(木) 15:12:11.79ID:Q21iGqYS0
http://ahkwiki.net/Gui,Option
2017/12/07(木) 15:39:20.80ID:JhBoA+GN0
Ownerですか。やってみます
2017/12/07(木) 15:47:48.48ID:IxXRrrQG0
>>529
実験してみたよ。
AHKのSetTimerでAltキーを監視してON/OFF表示させていて、
ついさっきたまたまAltを離しているのにAlt押しっぱなし状態になった。
しかし、AHKのGetKeyStateではOFF判定だった。
2017/12/07(木) 16:03:30.20ID:IxXRrrQG0
また同じ症状になった。
今度はON判定。
とりあえず、あてにならんわ。
2017/12/08(金) 00:47:16.58ID:2hAmoAId0
529です、いろいろありがとうです
キー押し下げ判定自体も精度アヤシイようだと、ちょっとアレですね
過度にahkでゴチャゴチャやらない方向で運用を見直すようにしてみます
2017/12/08(金) 00:58:05.77ID:zpL6DWI5a
すり抜け自体体感してないからすり抜けるすり抜けるってのが何なのかすらわからん
フックは?ディレイは?ちゃんとDown Up使ってる?Sleepも無茶な数値入れてない?

よくわからんな
2017/12/08(金) 08:15:37.96ID:Uq10ElWI0
Photoshopでマウスホイールのみで拡大縮小しようとして

Alt Down
Scroll Up
Alt Up

でやると、早くグリグリ回すと拡大しないときが数回に一回発生する。
Sleep入れてもダメ。

これがすり抜け?
2017/12/08(金) 08:40:53.67ID:D3cQmZala
それそもそもの書き方がまずいんでは

Alt押し込んでホイール離すを何度も何度も繰り返してるから操作のエミュレートになってない

Alt押し下げた状態でホイール操作を待つっていうスクリプト書かないと
2017/12/08(金) 09:56:51.07ID:lDhAMoXF0
>>539
キーやボタンと違ってホイールには押す/離すなんて判定は無いけど
ホイール操作の何を待つんだ?
2017/12/08(金) 10:04:31.07ID:D3cQmZala
wheel操作をalt downとalt upで挟めってこと
loopで出来る
2017/12/08(金) 10:09:13.41ID:lDhAMoXF0
>Alt押し込んでホイール離すを何度も何度も繰り返してる

この文章からして意味不明だし
2017/12/08(金) 10:37:25.55ID:D3cQmZala
まじか、わかってないのか
2017/12/08(金) 10:40:23.55ID:D3cQmZala
とりあえず続けてもわかってくれそうになさそうだから帰ったらサンプルコード書くわ
2017/12/08(金) 10:47:31.06ID:lDhAMoXF0
「ホイール離すを繰り返す」→そんなことはしてませんよ
なぜなら「ホイール離す」なんで動作は存在しないので

そもそも質問者が何をやろうとしてるのか分かって無さそうだけど
まあ>>538も端折らずに自分が書いたコードそのまま貼った方がいいと思うけど
2017/12/08(金) 11:04:48.87ID:lDhAMoXF0
>>544
的外れなサンプルとか要らんよ
俺は質問者でもなければコードなんて求めてないし
ただお前の言う「ホイール離す」とは何のことだ?って聞いただけだし
2017/12/08(金) 11:13:40.82ID:NsN4xeHW0
そもそも、Photoshopのオプションに「ホイールスクロールでズーム」という項目があるんだけどな。
2017/12/08(金) 11:28:24.09ID:TIXIlEDB0
ワロタ
2017/12/08(金) 11:47:56.54ID:3CDYarjh0
AHKのすり抜け問題とは関係ないが
Photoshop CS6 環境設定 - 一般
Photoshop CC 環境設定 - ツール
にそれぞれ 「スクロールホイールでズーム」って項目あるよ
チェック入れとけばAlt押さなくてもホイールだけでズームできる
2017/12/08(金) 12:04:33.70ID:iQK6bfpR0
釣りだったりして。
興味があったんで、541は見たいです。
2017/12/08(金) 12:06:49.15ID:zf1T1yH1M
すみません、538です。
出先なので、コードはうろ覚えなのですが、
実際はシフトとアルトを押しながらホイールを回す動作をしたいです。

Shift Down
Alt Down
Wheel Up(Down)
Shift Up
Alt Up

で書いています。ゆっくり回す分には動作しますが、早く回すと抜けが発生すします。
>>539が言うのはホイールを離すじゃなくてホイールを回すの間違いでは?
ホイール操作を待つってスクリプトがよくわからないので、サンプルコード待ってます。

>>549
ありがとうございます。
バージョンが違うのでできるかはわかりませんが、それはそれで参考にさせて頂きます。
2017/12/08(金) 12:41:25.62ID:lDhAMoXF0
>>551
だからさ、それはahkのコードじゃないから質問する際にそういう中途半端な書き方は良くないぞって意味な

で、本題だけど>>547のオプション設定で済む話ならそれが一番いいだろうけど
余談になるがShiftやAltなど修飾キーならいちいちDownとかUpとか書かずとも

WheelUp::Send, +!{WheelUp}

だけでいいんじゃね?
それでもすり抜けるならしょうがないね

>>539が言ってた「ホイール離す」は所詮そのレベルの勘違いだろうな
何を待つのかは未だによく分からんけど
2017/12/08(金) 12:43:13.79ID:NsN4xeHW0
>>551
Wheel Up(Down) の前後に
Sleep,50
を入れたらどうなる?
2017/12/08(金) 13:08:08.94ID:2S31fZSzM
>>552-553
失礼しました。

修飾キーでの記述では、そもそも全く動作しなかった記憶があります。

すり抜けも変な感じで、Shiftだけ押されてAltが押されないままホイールが回る動作をしたりします。

Sleepを入れて色々時間を調整すると、入れない時よりも失敗の頻度は改善されました。が、完全には対策できていません。
2017/12/08(金) 13:14:27.13ID:lDhAMoXF0
>>554
#Usehook は使ってる?
2017/12/08(金) 13:16:54.42ID:D3cQmZala
いやまぁ、使おうが使わまいが構わないけど、帰ったらサンプル書くよ
言いたいことが伝わってないのは気持ち悪い
2017/12/08(金) 13:23:15.80ID:2S31fZSzM
>>555
使い方がいまいちわからず、使ってませんでした…

>>556
>>よろしくお願いしますm(_ _)m
2017/12/08(金) 20:23:38.48ID: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キーが連打されることになる
2017/12/08(金) 20:26:39.02ID:RT6XFZXq0
あ、ホットキーラベルの~は要らないわ。クセで書いちゃったけど
2017/12/08(金) 20:38:48.94ID:WwZSRzo/0
で、「ホイール離す」って何のこと?
2017/12/08(金) 20:46:42.00ID:Vl1WWwQG0
>>560
しつけーんだよ
2017/12/08(金) 20:53:54.83ID:WwZSRzo/0
何をキレてんだよ
少し頭冷やせ
2017/12/08(金) 21:04:03.00ID:HqbBgtaD0
冷やし中華はじめました
2017/12/08(金) 21:22:38.10ID:VSEzKsSRM
>>562
質問者はサンプル待つつもりで「よろしく」って言ってるのに、横からしつこく揚げ足とりしてるあなたの方が頭冷やすべきでしょ
2017/12/08(金) 21:25:44.43ID:WwZSRzo/0
>>564
横からしつこくもなにも俺は最初からその一点についてしか話してない
それなのに一人で勝手に興奮してるだけ
間違いなら最初から間違い認めりゃいいだけなのにな
2017/12/08(金) 21:33:28.45ID:3e+Ho6oe0
それがしつこいって言われてるんじゃないか?
2017/12/08(金) 21:35:16.88ID:WwZSRzo/0
だから昼の時点でさっさと答えてりゃいいだけだろ
2017/12/08(金) 21:36:17.80ID:3e+Ho6oe0
お前がしつこく絡んでるようにしか見えないw
2017/12/08(金) 21:37:00.69ID:WwZSRzo/0
じゃあお前はなんでそんな必死に絡んでくるんだ?
2017/12/08(金) 21:38:55.52ID:HqbBgtaD0
冷やし中華はじめましたので...
2017/12/08(金) 21:40:10.88ID:AjW1HkCjM
キチガイなんだから
無視しとけよw
なんでみんなからしつこいって
言われるかわからないんだから
2017/12/08(金) 21:42:13.77ID:WwZSRzo/0
>>571
お前もそんな顔真っ赤にしてんなよ
2017/12/08(金) 21:44:12.58ID:HqbBgtaD0
冷やし中華はじめましたから!...冷やし中華はじめましたから!!!
574名無しさん@お腹いっぱい。 (ワッチョイ b740-gcK6)
垢版 |
2017/12/08(金) 22:32:51.68ID:fgs+Qvb60
amemiyaうっせ
2017/12/08(金) 23:16:41.31ID:3CDYarjh0
ワッチョイもIDも違う複数書き込みを
>一人で
>顔真っ赤
とか言い出したら要注意な
2017/12/08(金) 23:30:52.99ID:3vQpN7Oh0
いつまでやってんだよ
2017/12/09(土) 07:28:21.89ID:CYxvg1W8M
>>558
ありがとうございます。

今外出中で試せないのですが、今夜やってみます。
2017/12/09(土) 15:59:53.03ID: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じゃないにしてもホイール回してるか回してないかの取得スクリプトならあった
これでホイール離してる状態も取得できるな
2017/12/09(土) 23:24:41.40ID:8nqZo3FbM
>>558
質問者です。

わざわざコードを書いて下さりありがとうございます。
今試してみたら動きました!

なるほど、ホイール回す度にalt連打されると処理がおかしくなるのですね。(処理が完了する前に次の入力が来る?)
ホイール回す間はalt押しっぱなしにするという方法は目から鱗でした。

アルゴリズムやコマンドの勉強にもなりました。これで長くAutohotkeyを愛用していけそうです。
重ねてお礼申し上げます。
2017/12/10(日) 15:50:48.28ID:Pqr6ID550
あるファイルがあったとして、そのファイルが書き換えられたとき、それをトリガーにある処理をしたいのです
どうしたらいいでしょうか
タイマーで1秒おきとかにファイルのプロパティーを見ながら日付の変更確認とか、そんなことをしないと
いけないのですか?
2017/12/10(日) 16:32:00.90ID:APrQc+rqM
ReadDirectoryChangesWとか使えばイベントドリブンにできるかもしれんけど
多分settimerでFileGetTimeし続けるほうが楽だと思う
2017/12/11(月) 00:43:34.72ID:R4P+4TIr0
Windows10のデスクトップはahk_class Progmanですが、一度でもWin+Tabを押すとahk_class WorkerWになります。
これを強制的にahk_class Progmanに戻す事って出来ますか?。
2017/12/11(月) 00:57:30.17ID:Wcw0iGf+a
できない
何故戻したいのかはわからないけど、同時に適用したいならClass判定のところをorでいいんじゃないの?
2017/12/11(月) 01:30:33.02ID:R4P+4TIr0
分かりました、有難うございますた。
2017/12/11(月) 21:58:26.99ID:jRSbSjCy0
v = aaatttaaa aは文字、tは数字
となっているとします。文字の長さ、数字の桁数は別に3ということではなく任意です
この変数vから、数字のtttだけをとってくるにはどうしたらいいでしょうか
RegExMatch()とかを使うのですか。 かなりややこしくなりそうですが
2017/12/11(月) 22:15:06.32ID:jRSbSjCy0
文字には漢字やひらがなもあります
2017/12/11(月) 22:23:28.76ID:jRSbSjCy0
すいません。これで出来ました
NewStr := RegExReplace( ttl, "[^0-9]+", "")

これでいいのかな。 一応、確認したところ出来ていそうです
数字の0-9ってなにか\を使った記法ってあったような
2017/12/11(月) 23:12:38.47ID:n7RiSe0za
正規表現を調べるのを勧める
loopでぶん回して取得する無理矢理な方法もなくはないけど
589名無しさん@お腹いっぱい。 (ワッチョイ 16e6-WcAR)
垢版 |
2017/12/14(木) 16:25:41.48ID:6GnanOnj0
ブラウザ(IE)上で、webに設定されたドロップダウンリストに
規定値(一番上)に選択→隣接リストで同じ処理……
を5回位繰り返させようとしています。

【処理】
start地点のコントロールを選択してからHotKeyを押して処理開始。

1.ControlGetFocus
 →どのコントロールでも、どのwebページでも
 「Ineternet Explorer_server1」しか返ってこない。
2.Key(↑)を送ってリストを遡らせる
 →TABで次のコントロールに移るを繰り返す
 →Javascriptで監視されているようで、コントロールの
 value変更後の処理でFocusが外れてしまい、処理が継続できなくなる。

AutoHotKey無印を使っています。
AutoHotKeyでは、そもそもブラウザ上に展開したコントロールを
直接操作することはできないのでしょうか?
2017/12/14(木) 17:05:48.16ID:e4aJwnFFa
javaでやりな
2017/12/14(木) 17:34:29.24ID:/wRQoE030
なぜAHKで無理やりやろうとするのかが謎
592名無しさん@お腹いっぱい。 (ワッチョイ d2d9-w+5f)
垢版 |
2017/12/14(木) 21:57:18.36ID:GqJFhkoy0
>>590 >>591
ショートカットキーを使って、既存のブラウザのコントロールにアクセスしたいというのが
もともとの願望でした。
(会社の基幹システムの提携作業をマクロ化したいという動機)

検索すると、HotKey制御ならAutoHotKeyらしいということがわかって、
いろいろ試行錯誤してみた次第です。

ずっとVBAで業務支援ソフトなんかを同僚のために作ってきたのですが、
HotKeyの制御はC#やVBなんかでもできるのでしょうか?
初心者ですが、VisualAtudioは最近ちょろっと触ってるので、
HotKeyを使ったブラウザ制御なんかを学べる環境を教えていただけると幸いです。
2017/12/15(金) 07:32:08.50ID:lV80xGQe0
>>589

| IEウインドウを最大化
| IEを最前面表示固定
| 座標100,200 を左クリック
| 1秒待つ
| 座標100,220 を左クリック
| 0.5秒待つ
| 座標300,200 を左クリック
| 1秒待つ
| 座標300,220 を左クリック
| ・・・
| IEを最前面表示固定解除

みたいなのにすればいいだろ
#スクリプト動作中はマウス、キーボードを触らない


AHKじゃなくても、マウスユーティリティー系で可能
openmausujiならソースが公開されているから、業務で使用も可能だろ
2017/12/15(金) 20:50:32.58ID:OrMVJhUA0
>>589
テンプレにあるACC.ahkでDoDefaultActionでいいんじゃないかな
それでできないならUI AutomationのSetFocus()でフォーカス合わせるぐらいしか思いつかないけど
UI AutomationのほうもAutoHotKeyである程度使いやすいようにされたものがどっかにあったはず
595名無しさん@お腹いっぱい。 (ワッチョイ 16e6-WcAR)
垢版 |
2017/12/16(土) 16:06:02.33ID:AUvdSLPQ0
>>593 >>594
ありがとうございます。
レスが遅くなって申し訳ありません。

上記を参考に一度トライしてみます。
2017/12/17(日) 02:32:30.21ID:MdcvIGaz0
マウスのホイール操作全般(WheelUp WheelDown WheelLeft WheelRight)にキーを割り当てると、単純な a とか一文字でも
不定期に反応しなくなります
すり抜けとかではなく全く反応しなくなるのですが、リロードすれば直ります
右クリック、左クリック、サイドボタンでは全く問題ないです

定期的にリロードするよう書き込んだ方が良いのか、それとも
他に何か原因があるのでしょうか?
2017/12/17(日) 07:31:34.32ID:DTDP6E0d0
>>596
まず、余分なものをどんどん省いていって、それが再現する必要最低限のスクリプトにしてみましょう。
その結果、原因が分かって自分で解決できる場合もあるし、その最低限のスクリプトをここに書き込めば
誰かにヒントをもらえる確率が上がると思います。
2017/12/17(日) 08:29:26.24ID:MdcvIGaz0
>>597
WheelRight::send,a
return

これだけしか書いてないスクリプトでも急に受け付けなくなるのですが・・
2017/12/17(日) 09:58:02.93ID:ZbWlvwyg0
再インストールしてみるとか?
2017/12/17(日) 10:15:31.95ID:ZbWlvwyg0
うちの環境だと問題なく動いてるけどなぁ
2017/12/17(日) 11:06:05.21ID:pdjYZcFx0
一体どういう状況でソレが使いたいのかが分かれば精査しようもある
ただ言えるのは、短く書こうとして誤動作おきてるなんてことはよくある

WheelRight::
send,{a down}
keywait,WheelRight
send,{a up}
Return

くらいは書かないとダメかも
2017/12/17(日) 11:12:23.44ID:pdjYZcFx0
もうちょっというなら、キーヒストリーはちゃんと確認しよう
早すぎて抜けてるとかなら調節しないといけないわけだし、そもそもキーが送られてないとかになると、マウスとの相性まで疑ったほうが良い。
WheelLeft、Rightはうちも反応して無くて、しょうがないからF13,F14をレジストリレベルで割り当ててF13に設定してたりする
2017/12/17(日) 11:22:47.97ID:4YmA5vyY0
それロジマウス使ってるだけじゃねえの
2017/12/17(日) 11:34:53.14ID:fzbLbuEn0
LogicoolのSetpointのような他のカスタマイズ系ツールが入ってて競合していたり
仮想PC上で動かしていたりするんじゃない?
もしそうなら思考錯誤すればなんとかなったりするけど
Autohotkeyとの併用だと根本的解決は厳しいのでどこかで妥協が必要
2017/12/17(日) 11:39:13.82ID:4YmA5vyY0
ロジの左右スクロールはWindows標準APIじゃないから反応しないだけ
質問者の様に途中から反応しなくなると言った症状とは全く別問題
2017/12/17(日) 12:12:17.21ID:eySZ52HR0
その手の質問するときはちゃんと環境書いたほうがいいよ
反応しなくなるのは件のホットキーだけ?
それとも他のホットキーも全滅になるん?

リダイレクトホイール系のスクリプト入れてるけど
ブラウザとかでページの読み込みが重いとスクロール処理に遅延が生じてしまって
それ以降他のアプリ上でホイール回しても一切スクロールしなくなることはあった
ただ処理はロストしてるわけじゃなく溜まっててるだけで
数分〜10分後に え今更?ってタイミングでスクロールされるけど
(win8 x64 & ahkL U64 v1.1.24 & m570)
2017/12/17(日) 16:53:37.57ID:MdcvIGaz0
>>601
ありがとうございます
そのスクリプトでやってみると初めの一文字だけしか出てきません
キーヒストリーを見ると

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) マウスはエレコム です
2017/12/17(日) 17:20:03.67ID:DTDP6E0d0
>>607
#NoEnv
#InstallKeybdHook
#UseHook
SendMode,Input

WheelRight::send,a

このスクリプトのみを書いたAHKを実行させてみたけど、問題なく動いてるよ。
何回目のホイール右倒しで無反応になるの?
2017/12/17(日) 17:31:48.08ID:3XY+E35O0
>>607
とりあえず>>601は無視した方が良いぞ
ろくに確認もしてないやつだから
2017/12/17(日) 20:17:29.22ID:MdcvIGaz0
>>608
ありがとうございます

WheelRight::
send,{a down}
keywait,WheelRight
send,{a up}
Return

で反応しなくなるのは2回目からです

とりあえずスクリプトの頭に
#NoEnv
#InstallKeybdHook
#UseHook
SendMode,Input
を付けてうまくいくのか様子を見てみます
2017/12/17(日) 20:23:31.32ID:DTDP6E0d0
俺のロジクールマウスの場合、ホイールに関しては d のみで u の発行は無い。
ボタンのアップ待ちは無駄かもよ。
2017/12/17(日) 20:56:02.37ID:7BTXFvHJ0
だからホイールには「離す」なんて概念は無いって
keywait,WheelRight とか言ってるやつがアホなだけ
613名無しさん@お腹いっぱい。 (ワッチョイ a787-OyZG)
垢版 |
2017/12/18(月) 00:49:44.45ID:fHENqFFZ0
そもそもお前らにとってマウスは仇なの?
そこまでキーボードでやりだい心境ってどうなの?
2017/12/18(月) 00:56:22.46ID:L9Sezhe2a
keywaitがだめと言うならSleepでもいいぞ。とにかく押し下げて離すをエミュレートさせたほうが確実って話だから
2017/12/18(月) 01:09:51.37ID:D6Zzwcuh0
脳波でカーソルうごかせたら万事解決するのに
2017/12/18(月) 01:55:14.23ID:82QJfRCd0
>>613
お前何と戦ってんの?
全く真逆のこと言ってんだがw
2017/12/18(月) 11:07:38.53ID:dHJj4PmW0
>>614
>551の時は代替キーがモデファイヤ含んでたからそういう処理が必要だったけどそうでないなら助長じゃね
WheelLeft/Rightは倒してる間中リピート発生するみたいだし本来なら
WheelRight::a
だけでいいはず

書き方じゃなく環境的な問題な予感
2017/12/18(月) 19:44:47.33ID:8SoFyHAV0
>>610です
#NoEnv
#InstallKeybdHook
#UseHook
SendMode,Input

スクリプトの頭に上のを付けてもやっぱり不定期にホイールは反応しなくなるので
諦めます
2017/12/19(火) 11:49:43.42ID:Van3T9iO0
WheelScroll.ahkとかWheelaccel.ahkだと、WINDOWS10の modern UI でスクロールできないです。
MGLを使った回避はあったのですが、単体利用での回避方法を誘導していただけないでしょうか。
よろしくお願いいたします。
2017/12/19(火) 12:15:03.89ID:ZXNMo4hja
あれってスクロールメッセージ送ってるはずだからそれがないなら反応しないとかだったような
2017/12/19(火) 17:14:58.39ID:knaBMDJJ0
>>619
WheelScroll.ahk modernUI対策版を上げました
ただwin10の場合は標準でリダイレクトホイール可能ですのでもうこのスクリプトは要らないかも
http://www6.atwiki.jp/eamat/pages/30.html
622名無しさん@お腹いっぱい。 (ワッチョイWW a787-XSIK)
垢版 |
2017/12/19(火) 22:34:23.63ID: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
2017/12/19(火) 22:50:38.94ID:spQDjKkw0
>>622
%USERPROFILE%を直接展開する方法は分からないが、
A_UserNameでログインしているユーザー名を
または、A_Desktopでデスクトップフォルダのフルパスを
取得することは出来るから置換すればいいような…
624名無しさん@お腹いっぱい。 (ワッチョイWW a787-XSIK)
垢版 |
2017/12/19(火) 23:25:51.46ID:TaxqTr0o0
>>623
ありがとうございます。
StringReplace, OutIcon, OutIcon,% "%USERPROFILE%" , %USERPROFILE%, All
この一行で解決しました。
2017/12/20(水) 08:57:02.76ID:CxHWmxkW0
>>621
お世話になってます。
WheelScroll.ahkの作者さんがいらっしゃったのですね。
スクリプトの修正ありがとうございました。

業務用ソフトだからでしょうか。
特殊なコントロールが多いせいか、必須スクリプトです!
加速以外は全部の機能を使ってると思います。

横スクロールのコメントがございました。
Shiftホイールで横スクロール部分を有効にしました。
2017/12/20(水) 17:56:12.25ID:CxHWmxkW0
もしお時間をいただけるならば、ご確認、ご対応いただければ幸いです。。

20150711バージョンにて、excelのシート切り替えのため、下記を追加しておりましたが
20171219バージョンで機能しなくなりました。
スクリプトを比較してみて、競合しそうな追加部分は無いように見えるのですが、いかがでしょうか。

WheelScroll.ahkの最終行に追加
#IfWinActive ahk_exe EXCEL.EXE
XButton1::Send ^{PgUp}
XButton2::Send ^{PgDn}
Return

あと、諦めていたことなのですが、excelにて、列の固定(ウインドウ枠の固定)をしていると横スクロールできません。
環境依存などあれば書き込みます。
よろしくお願いいたします。
2017/12/21(木) 00:44:34.93ID:tyYKgEs60
>>625-626
ご使用&報告ありがとうございます
当方先月やっとwin10に移行したばかりであまり動作確認が取れておりませんでご不便をおかけします
色々酷いので手直ししたいんですがWheelaccelやMGLのほうがいい感じに改良されてるようですし
こっちはもう自分用で汚くてもいいかな〜みたいな感じで放置してました
こんなでも使ってくださってる方がいるのは嬉しいです、ありがとうございます

>WheelScroll.ahkの最終行に追加
こちらでも20171219に同条件で追加し、Excel2007、2016の2種で試しましたがどちらも問題なくシート切替できました
もしやShiftホイール部のコメントを外されたときに */での閉じに失敗してたりしないでしょうか
; /***** チルトが無いマウス用
  :
; */
↑行頭にセミコロンでコメントのコメント化してみてください
(shift横スクロールはチルトのないm570使い続けてる自分のために入れたままにしてたんですが
今更チルトマウス使ってない人のほうが少なかろうということで今回コメントにしてしまいました
ややこしいことしてすみません)

excelの固定時横スクロールについては原因判明しましたので次回更新時に修正いたします
他にも手直ししたい箇所があるため少しお時間下さい
628名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 01:20:20.36ID:SquZXOD10
send {5 down}

の5を変数でできないです?
629名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 01:33:36.72ID:SquZXOD10
evalがあったのか〜
2017/12/21(木) 01:44:00.48ID:PxmCSxyY0
a:=5
send {down %a%}
631名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)
垢版 |
2017/12/21(木) 02:05:04.78ID:SquZXOD10
>>630
%か〜さんんきゅ〜
2017/12/21(木) 09:26:50.18ID:Iywphmus0
>>627
ご説明賜り感謝致します。
コメントアウトの方法は理解しており間違っていませんでした。。
これから出張なので、来週改めて確認していきたいと思います。
その他含め、ありがとうございました!
私はm510でチルト出来るのですが、shift横スクロールの方がスクロール量をコントロールできるので便利です。
2017/12/21(木) 17:04:35.86ID:6WwU69go0
>>627
2017/12/21(木) 17:38:42.68ID:WwMk0bk3p
>>627
632です。
ahk_classで指定したらシートの切り替えができました。
あとコメントにありました互換固定のテストは、| modeの方でないと動かないソフトがありました。
ありがとうございました。
2017/12/21(木) 20:40:35.45ID:WrHlVdtR0
最近 本体アップデートされないですね
2017/12/21(木) 21:04:01.05ID:coGv5Pxe0
github見ると前回の更新からFixedが大分溜まってきてるし落ち着いたら更新するんでない
2017/12/22(金) 10:01:04.41ID:vcVm8yL20
ソートはせずに、前に出てきたものを同じ行を省く操作ってありますか
たとえば、
aaa
bbb
ccc
aaa
ddd
bbb

aaa
bbb
ccc
ddd
としてほしいのです。ソートはしません
2017/12/22(金) 12:31:37.29ID: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%
2017/12/22(金) 12:35:31.15ID:CpHj++au0
すべての変数を一個ずつIfで比較して、一致しなければ出力してけばいいんじゃね
2017/12/22(金) 15:39:38.72ID:O+PHC10P0
ポインタの使い方がよく分かりません

i := 4
p := &i

MsgBox, % *p
MsgBox, % NumGet(p + 0, "int")

のように書いても両方共iとは関係のない値が出てしまいます
どうすればpからiの中身にアクセスできるのでしょうか?
2017/12/22(金) 15:49:45.03ID:O+PHC10P0
すいません、自己解決しました
VarSetCapacityとNumPutを使えば良かったのですね
2017/12/23(土) 08:30:47.00ID:jbJlOP0C0
あるアプリでツリービューをクリックするとサーバーと通信してその結果を
隣のリストボックスに表示する、というのがあります
今はAHKでmousemoveでカーソル移動してツリービュー上でクリックして
隣のリストボックスの情報をControlGet等でとっています
これをもっとスマートにしたいのですが、
ツリービューをクリックしてネットに情報を送るところを直接httpで送ることは
できませんか。具体的にどういうメッセージを送ってるのかを知ることは出来ないのでしょうか
URLDownloadToFileというのは見つけたのですがここまでのことはAHKでは出来ませんか
2017/12/23(土) 12:21:47.75ID:2pB5qSyN0
アプリの名前伏せられても通信プロトコルすら分からないわけだが
質問内容から想像つく範囲で答えるならdllcallからwinsockAPI叩けばおそらく可能ではある
ただSendMessageみたいに1発投げればいいってもんじゃないし
相手サーバーとのネゴシエート必要だし通信プログラムの知識は必要になると思うが
2017/12/25(月) 10:30:36.34ID:LC3msSEB0XMAS
v.1.1.27.00にアップデートした

●AutoHotkey Downloads
https://autohotkey.com/download/
2017/12/25(月) 15:17:48.28ID:4tI3Wjp7aXMAS
エディタであるように二打鍵からなるホットキーを設定したいのですが
どうやればいいのでしょうか?
たとえば
Ctrl+K→Ctrl+T
など
2017/12/25(月) 16:05:01.58ID:dcbUg3oN0XMAS
>>644
v.1.1.27.00にしたらremap用スクリプトがエラーで起動しなくなった
sc073::+vkE2sc073という記述が一箇所あってそこでエラー発生したてので、
sc073::+sc073としたらスクリプトが正常に動いた
今バージョンからvk**付けるとエラーになってしまうのか?
2017/12/25(月) 16:10:40.46ID:mWbboXyW0XMAS
>>645
wiki読め
2017/12/25(月) 16:31:55.71ID:LC3msSEB0XMAS
>>646
変更履歴によるとこれまでの「vk**sc***」という記述は廃棄されてsc***を削除した「vk**」でOK

●Changes & New Features
https://autohotkey.com/docs/AHKL_ChangeLog.htm
2017/12/25(月) 18:24:54.21ID:mj5Z4sTu0XMAS
ahk2なんて作ってるのか
期待はしたいが現状のコード1万行を移植しないといけないと思うとめっちゃだるいな
2017/12/25(月) 21:26:06.64ID:Hj7/q9TgaXMAS
ソースコードはテキストだ
つまり文章をコンバートするスクリプトさえ作ればなんとかなんじゃね?
2017/12/26(火) 04:54:57.32ID:uLjqpZSC0
A_Argsは嬉しい
2017/12/27(水) 16:25:05.40ID:Aacf2UtF0
#IfWinActive,無題 ahk_exe notepad.exe
としてもメモ帳を認識しない。
無題をやめて - にすると大丈夫。
何か問題ある?

スクリプトはUTF-8。
環境は、Windows10で、v.1.1.27.00です。
2017/12/27(水) 16:27:33.29ID:Aacf2UtF0
>>652
UTF-8のBOM付きやSJISしたら動作した。

ウィンドウタイトルの日本語を探すのは初めてだから、ごめんちょ。
2017/12/30(土) 03:58:59.09ID:gls+cAd20
マウスの中ボタン+右クリックにホットキーを当てると
中ボタン単体では動作しなくなってしまうので

Mbutton::send,{Mbutton}
return

としていたのですが、これだと中ボタンでドラッグアンドドロップできなくなることに気付いて

Mbutton::MouseClick,middle,,,,,d
return
Mbutton up::send,{Mbutton Up}
return

と書いてみたのですがうまくドラッグアンドドロップ出来ません
どのように書けば良いのでしょうか?
2017/12/30(土) 04:20:23.50ID:b6YqK2p70
>>654
中ボタン+右クリックにホットキーを当てた時点で
中ボタン単体の判定は中ボタンを離した時に行われる様になるので
通常の方法ではドラッグは出来なくなる
別の対処策としては2度押しでドラッグにするとか、別のボタンにドラッグ割り当てるとか幾つかやりようはあるけど
どうしても普通にドラッグしたいなら中ボタン+右クリックを諦めた方が良い
2017/12/30(土) 05:26:41.98ID:xIT/wV5A0
Hotkeyコマンドでホットキーをトグルさせるのは?
特定のウィンドウがアクティブ時、または中クリック長押しで切り替えとか
2017/12/30(土) 09:28:37.04ID:mI1ieLxE0
>>654
中ボタンでドラッグアンドドロップ出来るアプリを持っていないので確認できないけど、
オートスクロールのキャンセルはCtrlで出来るから、
#if GetKeyState("MButton","P")
RButton::
Send,{Ctrl}
ToolTip,M+R
Sleep,1000
ToolTip
return
#if
こんな感じでどうだろ
2017/12/30(土) 10:20:44.83ID:gls+cAd20
>>657
出来ました!ありがとうございます
GetKeyStateを使えばホットキーとして割り当てなくて済むのですね!
2017/12/30(土) 13:31:53.23ID:fvgI/zHL0
>>658
それだと中+右ボタンを押す時にも中ボタン単体押しが送信されるのでは?
それで構わないならば
~MButton & RButton::
にすればいいだけだな
2017/12/30(土) 21:59:48.99ID:gls+cAd20
>>659
>>657でも出来るのですが  ~MButton & RButton:: でも出来ますね
~ の意味を調べたら イベントを乗っ取らず、そのままシステムに通す って書いてあったのですが
元のキーの機能を殺さずに的なことなんでしょうか?
2017/12/31(日) 12:27:31.81ID:cHZnLDz90
v1.1.27.01が公開されたよ

●Changes & New Features
https://www.autohotkey.com/docs/AHKL_ChangeLog.htm
2017/12/31(日) 15:22:16.33ID:VvllMHuur
>>661
vkF3SC029::rerurn ;全半角
vkF4SC029::rerurn ;全半角up
でエラー出る
俺環かな
スキャンコードなし指定ならokだた
2017/12/31(日) 17:48:52.87ID:iRBxU1N10
>>662
久しぶりにアップデートしたら自分もInvalid hotkeyってエラー出たわ
とりあえず1.1.26に戻した
2017/12/31(日) 17:56:20.08ID:iRBxU1N10
仕様変更あったのね
チェンジログ読んだらちゃんと書いてあったや
Scripts containing hotkeys of the form VKnnSCnnn:: will need to be corrected by removing SCnnn, which was previously ignored.

しかし互換性持たせてくれればいいのになぁ
2018/01/01(月) 22:19:27.79ID:Yv5Bp8s50
エラーが出るかと何かと思った
スキャンコード全部削除したけど動作がおかしくならないか不安
2018/01/02(火) 00:23:22.16ID:cBxV7kcZ0
え?scxxxのみで何も問題ないけど…
2018/01/05(金) 23:03:42.41ID:l4zNz2Hg0
あー、先にここ見とくべきだった。更新したら動かなくて何だろうかと
せっかくなので、これからverup予定の方に、自分が修正したキー一覧を以下に
変換…vk1Csc079
無変換…vk1Dsc07B
:(コロン)…vkBAsc028
:(コロン)…vkBAsc03A
;(セミコロン)…vkBBsc027
;(セミコロン)…vkBBsc03B
,(コンマ)…vkBCsc033
\(バックスラッシュ)…vkE2sc073
CapsLock…vkF0sc03A
ひらがな/カタカナ…vkF2sc070
全角/半角…vkF3sc029
全角/半角…vkF4sc029
grepツールで済ませてそんなに時間はかからなかったけど、久しぶりに面倒な更新作業だった
668sage (ワッチョイ 9f13-fYpg)
垢版 |
2018/01/06(土) 01:51:53.58ID:gHX87yO10
vkxxscxxxが使えなくなって
vkxxまたはscxxxのどちらかで指定と理解してるんだけどいいんかな?

使ってる人いるかわからないけど・・・
vkff系のscはkeywaitでエラー出たので
sc056::
keywait,vkff
return
としたらエラー無しで動いた。

sc05eは使えなくなったが、こいつだけvkff::をアテた。
とりあえず他とバッティングしてない。
2018/01/06(土) 22:19:48.65ID:L9VE7V/R0
こんばんはー、ホットストリングって機能に初めて手を出してみたんですけど、
ちょっと???な部分があるのでお伺いしたいです。
「[[」って打ったら「『」、「[[[」って打ったら「【」になるようにするにはどう書けばいいんでしょう?
Z0オプションでバッファが残るっていうならそれ指定するだけでいいのかなーと思ったら思うように動かず。
フラグを変数に格納するなり、複数行書かないとダメでしょうか?
2018/01/06(土) 23:15:38.82ID:G7wFYGrJ0
ここ↓見るとか具体的にスクリプト晒すとかしないとレス付かないぞ
ホットストリング - AutoHotkey Wiki
http://ahkwiki.net/Hotstrings
2018/01/07(日) 00:56:44.38ID:JkICX0vw0
ああいえ、読んだんですがイマイチ仕様を把握できず、
シンプルな構文で書けるのか書けないのか書けないのか、単にそれだけを慣れている人に聞きたかったんです。
必要ないでしょうけど一応晒すと、
:*Z0:[[::『
:*:[[[::【
で[を3回押したら【になりそうだなーと思ったのですがならないなーってことでして。
2018/01/07(日) 01:23:31.75ID:rPkuxGOZ0
ホントにちゃんと読んだのか?
特に「終了文字」の項目を・・・
2018/01/07(日) 01:54:30.71ID:JkICX0vw0
>>672
……? *で不要化してますよね?
2018/01/07(日) 12:54:08.50ID:vRDST1RB0
本当にちゃんと読んだか?
「置換後のテキストに2バイト文字を使うことはできないので、スクリプト実行型でクリップボードを経由して貼り付けるなどの方法を取る必要がある」
2018/01/07(日) 16:17:48.05ID:JkICX0vw0
>>674
ご自分で試されましたか?
大分前から2バイト文字送信も実装されているようですが
そもそも質問の方向性が全く違います
676名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 16:59:29.06ID:TEnpSFgY0
>>671
『が入力される時に[[がBSで消されたことになるので、続けて[を打っても:*:[[[::が実行されない。
677名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 17:03:26.18ID:TEnpSFgY0
ホットストリングでやっても出来なくはないけど、ややこしいし色々問題あるからおすすめしない
2018/01/07(日) 17:41:28.22ID:JkICX0vw0
>>677
あー、簡単に上手いことはいかないんですね。
B0にして、かつスクリプト実行型に変えたらようやく入力バッファ残りました。
しかもバグなのか、必要とされるBackspaceの量(置換後に本来消す文字数)まで引き継がれてしまい、
後続もB0で手動でBackspaceの数を調整しないといけないハメに。
さらに言うと、「:B0 O*:abc::」のあとは「:B0 O*:bcd::」では反応せず、「:B0 O*:abcd::」のみ受け付けると仕様がよーわからん…。
とりあえず↓のように出来ましたけど、もっとスマートな書きかたあります?

:B0 O*:[[[::{Backspace}【
:B0 O*:[[::
Send, {Backspace}『
Return
679名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)
垢版 |
2018/01/07(日) 18:35:00.89ID:TEnpSFgY0
>>678
?オプション付けないとa〜z打った直後に動いてくれないから付けた方が良い
ちなみに、他にキー入力をいじるソフト(やまぶきRとか)使ってるとちゃんと動かない事がある
2018/01/10(水) 01:51:34.06ID:BCaOYMAn0
ゲームにAHKを利用しているのですが以下はQキーを押したとき
@Iキーを送る
A指定座標上で右クリ
B再びIキーを送る
という単純なものです

Q::example() ;
examplel(){
BlockInput On
Send {i}
Click right 1305,829
Send {i}
BlockInput Off
return
}

ここで質問なのですが、このマクロによる操作(@〜Bですね)が一通り終わった後、マウスポインタをもとの位置に戻ってこさせるということは可能でしょうか?
2018/01/10(水) 02:51:37.30ID:4l+dsFFh0
>>680
移動する前に座標取得
MouseGetPos
2018/01/10(水) 10:42:20.97ID:JKf1Cq3D0
>>681
ありがとうございます
683名無しさん@お腹いっぱい。 (ワッチョイ ea67-zHNy)
垢版 |
2018/01/11(木) 22:19:09.67ID: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の記述の仕方がまずいのかわかりませんが置き換え文字が二重に入力されないようにするにはどうしたらいいんでしょうか?
2018/01/11(木) 22:55:45.09ID:8RyCoUmG0
>>683
RegExReplace("C:\a\b", "(.*\\).*", "$1c")
2018/01/12(金) 02:04:04.29ID:+j8QRcK60
>>683
拡張子、ファイルかフォルダの考慮も忘れずに
2018/01/13(土) 13:16:34.08ID:aFWvyjXJ0
>>683
正規表現がまずくて、量指定子"?"とグループ化"()"の使い方が迷走してるんだと思う
個人的にはこう
RegExReplace("C:\a\b", "[^\\]+$", "c")
2018/01/13(土) 13:50:09.04ID:NZPiUPRF0
いつの間にかバグフィックスが進んで
1.1.27.04になっとるやないかい
688名無しさん@お腹いっぱい。 (ワッチョイ ea67-zHNy)
垢版 |
2018/01/13(土) 23:00:31.98ID:u3DR4K2j0
>>684
>>685
>>686
ありがとうございます
参考になりました
2018/01/14(日) 11:50:07.84ID:M43+YLx+0
以下のスクリプトを「常時」「全てのウィンドウに」適用する(キャプションバーを隠す)にはどうすれば良いでしょうか

;キャプションバーをなくす
LWIN & LButton::
WinSet, Style, -0xC00000, A
return

「bug.n」の以下のスクリプトでも同様のことができているようなのでこの方法でもかまいません
(キャプションバーの非表示という部分の抽出の方法)
https://github.com/fuhsjr00/bug.n/blob/master/src/Window.ahk

実はこれで1年以上悩んでおります。
どうかよろしくお願いします。
2018/01/14(日) 13:28:36.81ID:SeWYloWZ0
>>689
https://arak.jp/diary/?20091030S1
2018/01/14(日) 13:50:26.25ID:M43+YLx+0
>>690
できました!
本当に助かりました
ありがとうございました
692名無しさん@お腹いっぱい。 (ワッチョイ 1e63-Un5q)
垢版 |
2018/01/15(月) 11:47:41.46ID:r2mlDsgK0
sc と vk だが,フォーラム読む限りはvkのほうがいいみたいだぞ.scは”still supported”とか書いてあるが,いつ消されるかわからんしな. 
2018/01/15(月) 23:34:41.39ID:6cx89JeH0
>>692
scのみで今まで問題無く行けてたがvkのみにしたら
一部でsc***→vk**変換以外で手直しやら動かなくなるやら困った事になった(ので途中で元に戻した)
例えば
sc029::send, {BS} ←[全角/半角]押下で{BS}
     ↓
vkF3::
vkF4::
send, {BS}
return
とする必要があったり

+sc03a::関数("引数") ←[shift]+[CapsLock]で関数実行
     ↓
普通にCapsLockのON/OFF切り替えになってしまう
([CapsLock]キーを[F**]に割り当てて、+F**::〜 とすれば行けるのかな?…面倒なので確認していない)

とりあえず未だsc***のみでも問題無く動いてるので行けるとこまでこのままいくわ(´・ω・`)
2018/01/16(火) 00:08:51.64ID: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::

バージョン戻したけど時間がある時にもう一度書き直してみようと思う
何か分かる人いたらヒントください。
2018/01/16(火) 07:21:01.72ID:NWgRaCQP0
>>694
vkF0sc03A

sc03A
でいけると思う。
2018/01/16(火) 14:37:48.49ID:NLQSNNGB0
>>695
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
2018/01/16(火) 14:45:00.33ID:NLQSNNGB0
あっ これも駄目ですね
~Shift & sc03A::Send, {CapsLock}
CapsLockのみでも反応してしまう

問題無し
~Shift & vkF0sc03A::Send, {CapsLock}
でも、~Shift & vkF0sc03Aはオートオフのコードが反応しない
2018/01/16(火) 16:07:31.09ID:NLQSNNGB0
連投すまん
>>697
CapsLock::returnしております
2018/01/16(火) 18:51:12.72ID:IxAc+IU+0
バグフィックスの動きが激しいし
しばらくは1.1.26.01で止めておいたほうがよさそうだな
2018/01/17(水) 03:45:15.83ID:5KJf9t9O0
1.1.27.06でdefenderがウィルス判定出しやがる
まあアプリの性質的に誤検出しやすいのはしょうがないけど
2018/01/17(水) 03:52:01.97ID:5KJf9t9O0
zip版なら平気だった
2018/01/17(水) 14:23:18.25ID:Pgssw/8N0
ControlSendですが、これで入力しようとすると、ターゲットのウィンドウがアクティブになって表に出てきてしまいます
裏で入力させることって出来ませんか
最前面では別のウインドウで作業していて、その間に、他の隠れているウインドウにControlSendで値を入れたい
のですが
2018/01/17(水) 18:15:41.52ID:RG3q26nn0
ソフトにもよるとしか言いようが無いけど
DetectHiddenWindowsを試してみたら
2018/01/18(木) 07:34:28.16ID:E6v3BPu00
DetectHiddenWindowsは関係ないんじゃね?
裏に隠れているだけだから
2018/01/19(金) 09:27:55.09ID:3Oem/ury0
10キー付きキーボードの10キー部分と、と10キーパッドで、それぞれ別の割当をすることって出来るのでしょうか? ハードウェア別の設定が出来れば10キーパッドを有効活用できるかなと思ったのですが…。
2018/01/19(金) 09:36:14.73ID:ds+5Qw5m0
出来ません
素直にプログラマブルキーパッドを使いましょう
2018/01/19(金) 10:11:56.19ID:3Oem/ury0
ありがとうございます。
2018/01/19(金) 10:40:55.87ID:m9/Neybx0
まさにそういうソフトは存在するよな
一時使ってた
2018/01/19(金) 16:07:46.92ID:AVpnJ5wF0
HID Macrosだっけっか
その辺は CG用補助入力総合スレ あたりが詳しかったと思う
http://mevius.5ch.net/test/read.cgi/cg/1486757763/
2018/01/22(月) 02:02:18.12ID:TAC5etfN0
main.ahkと更新.ahkで2つ起動したいと思うのですが
長時間起動してるといつの間にかフリーズしているので
更新.ahkで両方のahkをリロードしたいのですが
どのようなスクリプトを書けば良いのですか
よろしくお願いします
2018/01/22(月) 02:14:51.75ID:D9rOGpYI0
更新.ahk自身はReloadコマンドでリロード出来る

main.ahkは冒頭に
#SingleInstance force
を書いておけば更新.ahkでRunするだけでリロードされる
2018/01/22(月) 04:04:19.09ID:OoTUIsqF0
>>711
何とか出来ました!

reload
run , c:~main.ahk

上記のアホなことやっていて更新できないなぁと悩んでいましたw
教えて頂きありがとうございました
2018/01/23(火) 12:24:46.18ID:0+zHhbeo0
Autohotkeyで即時関数みたいなことできます?
MouseGestureLでジェスチャ毎に再利用しない変数を保持しっぱなしなのもなんだし
最後に一々解放するのもスマートでないというかめんどいというか
代替案でもいいのでお願いします
2018/01/23(火) 14:55:23.06ID:9c2K3oq50
>>713
どこでもいいから関数書いて呼び出すだけ
2018/01/23(火) 15:01:59.35ID:9c2K3oq50
hoge()
return

hoge() {
 MsgBox
}

; --------
hoge2()
hoge2() {
 MsgBox
}
return

; --------

hoge3() {
 MsgBox
}
hoge3()
return
2018/01/23(火) 21:28:28.51ID:0+zHhbeo0
いや、都度関数を作ると関数名がどんどん消費されちゃうってことで即時関数のやり方を聞いた次第です
っていうか即時関数というより無名関数でしたね
2018/01/24(水) 02:41:30.95ID:YYzix6Ix0
MouseGestureL使ってないんでわかんないけどObjectじゃだめなん?
2018/01/26(金) 11:51:05.61ID:A8q+WlDN0
LWin::[
ってやってるだけなんだけど
いつのバージョンからかキーボードの他のキーやマウスのサイドボタンまでおかしな挙動をするようになった
割り当て自体は成功してるんだけど副作用がすごい
仕様変更ですかそれともおま環ですか?
2018/01/26(金) 14:32:12.71ID:lXZy4ZkG0
>>718
そういうのはレジストリ変更タイプのキーチェンジャーをおすすめする
2018/01/26(金) 16:08:35.67ID:A8q+WlDN0
>>718
すまん…おま環だったわ
マウス変えた時に入れたLogicool Optionsと競合してるだけだった
まぁ解決は出来なかったんだけどね
2018/01/26(金) 19:32:30.01ID:tlFNmfdt0
>>716
できない
v2でも実装する予定なし(去年の時点で)
https://autohotkey.com/boards/viewtopic.php?p=150578#p150578
関数名やラベル名を消費しないでサブルーチン作る方法は今のところないんじゃないかな

変数の一斉解放だけなら、変数をオブジェクトにまとめておいて最後に空にするとかあるけど
代案とするには弱すぎる
2018/01/27(土) 12:35:13.87ID:CxWu/J0c0
>>717
>>721
実装予定もなしかー
プラグインレベルの大掛かりなのだとobjectもありかもですね
ありがとうございました
723名無しさん@お腹いっぱい。 (ニククエ 0Caf-N37C)
垢版 |
2018/01/29(月) 13:14:45.61ID: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}
2018/02/01(木) 01:50:51.47ID:IVRJohHu0
gpd pocket を axキーボード設定で使っているのですが ?? のキーにFnを入れることはできますか?もしできるようなら教えてください。
2018/02/01(木) 01:52:25.90ID:IVRJohHu0
724です。
??は 三と書いてあるキーです
2018/02/01(木) 02:21:21.73ID:pVoUMo//0
>>725
FnキーはOSやソフトウェアを介さないハードウェアキーなので無理
「三と書いてあるキー」と言うのは恐らくAppsKeyのことなんだろうけど、それなら
AppsKey & ○:: でそれぞれの機能を割り当てれば疑似的にFnキーの様に使うことは可能
一つずつ割り当て行う必要あるから少し面倒だけどね

例)
AppsKey & Left:: Send, {Home}

AppsKeyのことじゃなかったら知らん
2018/02/01(木) 06:26:10.42ID:IVRJohHu0
>>726
ありがとうございます。
三はAppsKeyというのですね。
何もしらなくてすいません。
Fnキー無理なのですね、ファンクションキーがFn+数字キーなので片手で押せないので指の届く近くのキーに割り当てようと思いました。
でも全然わからなかったので質問してみました。
親切にありがとうございます。
2018/02/01(木) 07:26:34.43ID:urvW4tJz0
>>727
だからFnキー自体は割り当てられないけどAppsKeyをFnキーの様に使うことはできるっつーの
AppsKeyと数字の1キーを押したらF1を出力
AppsKeyと数字の2キーを押したらF2を出力
AppsKeyと数字の3キーを押したらF3を出力
以下略

これらを一通り割り当てればAppsKeyをFnの替わりに使える
例まで出してやってんだしこれで分からないなら質問する以前に基礎知識不足
wikiをよく読んでから出直して
2018/02/01(木) 07:37:13.87ID:Y39MZt1z0
AHKアップデートかけたら
vk1Dsc07B & MButton:: foo()
みたいのが片っ端から動かなくなって焦った
結局元に戻したぜ
余計なことすんな
2018/02/01(木) 08:10:11.62ID:IVRJohHu0
>>728

AppsKey & 6:: Send, {F6}
AppsKey & 7:: Send, {F7}
AppsKey & 8:: Send, {F8}
AppsKey & 9:: Send, {F9}

できました。
これで日本語入力楽になります。
本当にありがとうございました。
助かったです。
2018/02/01(木) 08:45:01.74ID:9rNYl+bm0
>>729
>>648
2018/02/02(金) 02:59:10.15ID: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
2018/02/02(金) 05:38:52.02ID: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
2018/02/02(金) 05:43:35.42ID:EGJ8lL3F00202
そもそも状態を取得する必要性が何でだったかを忘れてるが...
下のコードだと何か気持ち悪い
2018/02/02(金) 11:23:50.20ID:UlhnALdl00202
vk**sc***は>648

それはそれとしてもLock系キーの動作は日本語OSではもともと不定でBIOS(UEFI)によって挙動バラバラだったし
たまたま動いてたのがバージョン変わったことで動かなくなったとしても別に不思議じゃないと思うが
2018/02/11(日) 15:54:02.28ID: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のキー入力をフック出来ていないような感じがします
このような(妙なキー入力)をフックする方法をご教授頂きたいのです

良い知恵や,サンプルコードなど,ありませんでしょうか?
2018/02/11(日) 16:54:31.12ID:3ZvNHM330
普通に
=::a
[::b
@::c
で機能してるけど
単に権限で弾かれてるだけじゃね?
2018/02/11(日) 17:35:40.80ID:DQMytbvG0
>>737
試してもらった環境で、autohotkeyのkey historyを確認してほしい。
該当する箇所のVK、SC、Typeの欄、>>736 と違うのではないかと…。
2018/02/11(日) 17:47:15.75ID:j35DJg2F0
[ → vkDB sc01B
@ → vkC0 sc01A

=なんてキーはないから知らん
2018/02/11(日) 17:52:01.25ID:3ZvNHM330
@ は C0 01A
[ は DB 01B
= はshift-なので、- は BD 00C
2018/02/11(日) 18:32:04.46ID:DQMytbvG0
>>739-740
本来は、それが正しいんだと思う。
>>736 のキー入力は、特殊な環境で発生するみたいで…。
何とかフックして、正しい状態に変換したいというのが、やりたいことなんです。
autohotkeyの他、keymillを使っても確認したが、やはり、仮想キーコードとスキャンコードは、>>736 と同じでした。
手詰まりなのかなぁ。
2018/02/11(日) 19:10:35.03ID:tFbq6f170
$ や #UseHook はどうなってんの?
2018/02/11(日) 20:36:51.05ID:wLAjQo6+0
>>742
現時点ではサンプルコードで動作確認している程度なので,必要かどうかは疑問
----- -----
#InstallKeybdHook

sc003D::a ; sc03Dも試した
sc005B::b ; sc05Bも試した
sc0040::c ; sc040も試した
----- -----

scriptとしては,上記しか記載していないです
#UseHookの記載があったとしても,効果ないですよね?
$は関係なさそうだし…
2018/02/11(日) 21:23:43.50ID:tFbq6f170
>>743
$ や #UseHookは
実際にキーが押された信号を拾う(ドライバレベルのキー変更は変更後を拾う)
ないときはソフトで発行されたキーも拾う
2018/02/11(日) 21:25:35.35ID:tFbq6f170
#InstallKeybdHookもおなじね
2018/02/11(日) 21:34:15.09ID:tFbq6f170
#InstallKeybdHookは関係ないわ忘れてくれw
2018/02/11(日) 21:49:22.37ID:wLAjQo6+0
>>744
----- -----
#InstallKeybdHook
#UseHook On

sc003D::a ; sc03Dも試した
sc005B::b ; sc05Bも試した
sc0040::c ; sc040も試した
----- -----
とやっても,ダメポ
思った通りの動きをしてくれない
----- -----
#InstallKeybdHook
#UseHook On

=::a ; sc03Dも試した
[::b ; sc05Bも試した
@::c ; sc040も試した
----- -----
もダメ
ヤレヤレ…
2018/02/11(日) 22:08:12.57ID:wLAjQo6+0
>>747
今判ったのだが,SCの4桁って,Unicodeだわ
U+003Dは"=",U+005Bは"[",U+0040は"@"
autohotkeyでUnicodeの入力をフックすることは,さすがに出来ないんだろうな
悩ましい…
2018/02/13(火) 06:44:07.16ID:sFxCGnec0
1.1.28.00
変更点多数
2018/02/14(水) 04:54:09.67ID: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を指定できるようにしました。
2018/02/14(水) 05:01:13.25ID:Rm7A3QSM0
A_LoopFilePathはほぼLongのほうしか使わないからそっちのエイリアスにしてくれればよかったのに
2018/02/14(水) 07:56:06.39ID:IcKhWWhH0St.V
vkxxscxxx修正疲れた〜
vkxxは動くとこと動かないとこがある
scxxxは安定ぽい
2018/02/14(水) 12:30:38.02ID:eq9KUA5f0St.V
アプデしたいけどあらゆる作業に影響ありまくるから踏ん切りつかぬ
2018/02/14(水) 16:26:24.52ID:eOeOVFcL0St.V
うちなんかv1.1.24.00でずっと止めてるわ
v1.1.24.01のHotkeyコマンド関連の仕様変更にいまだに修正対応できずに足踏みしてる
2018/02/14(水) 21:21:16.70ID:AOagrs8+MSt.V
>>754
同じく
修正マンドクセ
2018/02/14(水) 23:58:57.92ID:yRogQsfK0
>>750
結局、vk**sc***表記を復活させたということかな
その方がいいんだけど、1.1.27〜の時の苦労は何だったのかw
週末にでも更新しようかね
2018/02/15(木) 00:40:13.12ID:02BDAqxY0
なに迷走してんだか…
2018/02/15(木) 00:52:21.11ID:MGxE8Lu40
v1.1.24.01 → 1.1.28.00
レスポンスが悪くなった?

ALTキーの空押しでIMEの制御してたけど
ALT upがワンテンポ遅くなった
IME自体の表示は即オンオフの反映されるんだけど
文字を打ち込もうとするとALTが押された状態みたいでエラー音がティンティン鳴る
2秒位待たないと文字が打てなくなってしまった
何故かエディタのみで起こってブラウザでは問題無い
後、トグル系が急に効かなくなったり効いたり
トライアンドエラーで対策できず、結局バージョン戻したわ
2018/02/15(木) 02:01:48.57ID:MGxE8Lu40
原因はアクセラレーターキーだった
何故か反応するようになってしまってる

ブラウザの方はアクセラレーター切ってってて
使ってるエディタにメニューバーが無いので気づかなかったわ
空押しでアクセラレーターキーが効かないのを効くように修正したってことかな

もう一度バージョン上げてみたみたはいいけど、やっぱ駄目かも
2018/02/15(木) 06:21:05.12ID: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
}
2018/02/15(木) 06:21:20.14ID: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
}
2018/02/15(木) 07:44:58.37ID:DStDVLAI0
_1 _2 _3 _R も引数にしたくなる人が多そう
2018/02/15(木) 19:03:18.66ID:XW96eMY10
>>760
関数などの別スレッドの各種設定は終了すると
規定値(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))
}
2018/02/15(木) 20:12:31.47ID:6ml6AmJ20
関数は別スレッドではありません
2018/02/15(木) 20:27:59.62ID:XW96eMY10
>>764
え?まじだ
すいません間違えました
2018/02/15(木) 20:50:07.36ID:XW96eMY10
>>763
すいません訂正します
同じスレッドでした
> 関数などの別スレッドの各種設定は終了すると
> 規定値(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
}
2018/02/15(木) 23:28:05.40ID:A4rUj4nf0
>>766さん
別解ありがとうございます。知識になります。
768名無しさん@お腹いっぱい。 (ワッチョイ d767-MriG)
垢版 |
2018/02/16(金) 11:24:34.32ID:U6oi7OTq0
ゲームに使おうとしています。
https://i.imgur.com/DmXSDJk.png
上の画像のように、ゲーム内で検索した装備品で、
検索にヒットし黄色の枠でハイライトされているものを鞄にCtrl+LClickで移動させるマクロを作りたいと思っていまして
黄色の枠のみをペイントで抽出し、bmpで保存(下のコードのtest.bmpです)し
ahkのImageserchに使えばいけるのでは?と考えたわけですが
error level1が返ってきます。
同じように加工したjpg、枠以外を透過させたpngでも試しましたが同じくerorrlevel1でした
なにがまずいのでしょうか。。。

https://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
}
}
2018/02/16(金) 12:00:10.03ID:SvcDK4bi0
ImageSearchを完全一致やめて誤差の余裕持たせてみ
2018/02/16(金) 12:01:54.87ID:kFXWbhgF0
>>768
画像を見た感じ、境界の部分が明示的透過というより背景と混ざっているように見える
多分アンチエリアスとかのせい
よって、*Nオプションである程度認識する色に幅を持たせるか
抽出画像の方を明確に色の濃い部分だけを残して真っ白にして透過指定する
とかを試してみてはどうだろう?
2018/02/16(金) 16:13:41.17ID:m7uJKjCZa
>>769 >>770
ありがとうございます
誤差検索*90をオプションに追記しましたところ、
ハイライトされたもののうち2つには反応しましたが
その二つを取り除いてみるとerror2でした

>>770
たしかにwindowsプリセットの画像ビューワで見たとき滲んだように見えますね
しかしペイントで抽出した際は滲んでいるようには見えず、この枠の太さ(ほかに表現方法がわかりません笑)が1ドットになるようにしたのですがこれが限界ではないということでしょうか(;´Д`)
2018/02/16(金) 18:22:57.21ID:ajEghuwq0
>>768
枠の形変わりそうだし画像で探すなら
最小限の3ドット以上の角(┏)でいいのでは?
PixelSearch*3回でもおk
2018/02/16(金) 20:23:31.67ID:uKa9qGpV0
所詮おまけ機能なんだから複雑な事しようとするとすぐ手詰まりになるよ
そういうのは何か他のツールに処理投げた方がマシ
2018/02/16(金) 20:59:29.19ID:ifkLCsJ10
俺はむしろ、こういう変態的な使い方を考えるのは凄いと思うよw
日本人っぽいニッチな工夫というか何というか
2018/02/16(金) 21:16:18.23ID:j4lSZ2IT0
>>768
これ対象画像側の枠サイズ一定じゃないね
2018/02/16(金) 23:56:55.26ID:U6oi7OTq0
>>775
まじすか
それはどうやってわかりました?
777名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 00:32:17.20ID:a1W66dge0
流れ読まずに質問スマソ
管理者権限のアプリも操作するためにAHK自身を管理者で実行すると、
今度はRUNで何か走らせる際にそれらも全部管理者権限になってしまう。
対策としては、
・タスクスケジューラを噛ませる
・Win+R 窓を開いてそこでコマンドを実行する
ほかにもっと簡単な方法はないでしょうか?
2018/02/17(土) 00:38:19.47ID:xrBc6gW30
ほんとだ
画像編集ソフトで半透明レイヤー重ね合わせてみたら縦横ズレることろあるね
https://i.imgur.com/CzwkKZ1.png

775良く気付いたなw
2018/02/17(土) 00:45:15.12ID:xrBc6gW30
>>777
俺はこうやってる

Run, Explorer "標準権限で起動したいアプリ.exe"
2018/02/17(土) 01:00:18.16ID:ykUscsnm0
タスクバーをアクティブにしてMbuttonを押すと何かする
のをやろうとしたんですがMbuttonが効かないんです
スクロールは割り当てできます
おま環ですかね?
2018/02/17(土) 20:13:15.35ID:9Ob7L7Vv0
>>779
run, explorer "notepad.exe"
とかやってみたけど、マイドキュメントフォルダーが開くだけだったよ
782名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 20:20:17.03ID:9Ob7L7Vv0
>>779
>>781
run, explorer "C:\Windows\System32\notepad.exe"
パス付けたら動いた
どうもありがとう!!
2018/02/17(土) 20:27:03.30ID:Wm0LX3zO0
>>781
ちゃんとパス指定しないとアカン
パス指定は絶対パスでも相対パスでも可能

ただし起動したいexeと同一フォルダにahkファイル置くならパス指定不要
784名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)
垢版 |
2018/02/17(土) 20:41:59.94ID:9Ob7L7Vv0
>782
いろいろ試したけど、
ターゲットアプリに引数を渡すことは出来ないみたいだね
例)
explorer "C:\Program Files\internet explorer\iexplore.exe" http://ntt.setup

explorer.exe の仕様なんだろうか
2018/02/17(土) 21:15:34.04ID:GM2z7ZiA0
https://github.com/Lexikos/AutoHotkey-Release/blob/master/installer/source/Lib/ShellRun.ahk

これ使えばできた
786名無しさん@お腹いっぱい。 (ワッチョイ ff01-MriG)
垢版 |
2018/02/18(日) 00:24:02.28ID:OinWbaSp0
いろいろありがとう!
2018/02/18(日) 13:06:36.91ID: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
2018/02/18(日) 22:24:30.08ID: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文字目にマッチすれば
2018/02/18(日) 22:35:18.66ID: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
}
2018/02/18(日) 22:38:00.78ID:3FpAdC2Y0
InStr_3(Haystack, Needle, CaseSensitive="") {
 SavedTMM := A_TitleMatchMode
 SetTitleMatchMode, 3
 FoundPos := InStr(Haystack, Needle, %CaseSensitive%)
 SetTitleMatchMode, %SavedTMM%
return FoundPos
}
2018/02/18(日) 22:43:08.17ID:ZvCWwtWf0
>>788
>>1http://pastebin.com/を使ったらどう?
2018/02/18(日) 22:57:11.81ID:3FpAdC2Y0
>>791さん
次から使わせていただきます。
2018/02/19(月) 03:06:32.79ID:Y9HUB6jX0
それ _1 _2 _3 全部同じやw
InStr に SetTitleMatchMode を設定しても何の効果も無いよ
2018/02/19(月) 04:14:54.89ID:BdhMP5UP0
>>793さん
ご指摘ありがとうございます。

InStr()関数はIfInString文同様部分一致検索のみで意味ないことしてました。m(_ _)m
2018/02/19(月) 04:35:55.96ID:BdhMP5UP0
前方一致検索…RegExMatch(var, "^検索文字列")
後方一致検索…RegExMatch(var, "検索文字列$")
完全一致検索…RegExMatch(var, "^検索文字列$")
部分一致検索…InStr(var, "検索文字列")
部分一致検索…IfInString, var, 検索文字列
2018/02/19(月) 05:00:29.90ID:PJPmNhpU0
>>795
うざい
2018/02/19(月) 05:11:58.24ID:BdhMP5UP0
スレ汚しすみません。しばらくロムります。
2018/02/19(月) 11:21:09.62ID:IXuHbD6q0
WinExist_n()でn部分を引数にせえよって指摘されたのなら次にも生かしたらいいと思うの
…って書こうとしたら_nで分けること自体に意味がないのかこれw
2018/02/19(月) 11:40:12.03ID:BxLXEv6G0
添削お願いします の一文も無く、いきなり貼られても困るよね
2018/02/20(火) 00:26:22.82ID:9Z14yE7+0
ただ質問しただけだと教えてもらえないけど自信満々に間違ったことを書くと煽りとして正解が返ってくるという
2ちゃんあるあるを利用したのかもしれない
2018/02/23(金) 07:33:03.76ID:9Fk1AXu40
うむ、専門板では必須の基本テクだよな
2018/02/23(金) 07:33:14.45ID:Y0VJAwMh0
今更ながらこれを実装した
ペーストできない欄にID、パスワード等を書き込むのに便利
こんなの10年前にやるべきだったな…

^+v:: send,%clipboard%
2018/02/23(金) 07:50:14.04ID:ZjJ8bLPd0
>>802
コピペでパスワード入力するってことは、パソコン内にパスワードのテキストを置いているんでしょ。
Send,LoginID{Tab}PassWord{Enter}
で良いんじゃないの?
2018/02/24(土) 00:25:26.38ID: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
2018/02/24(土) 15:06:36.08ID:b4HvGc+S0
これで駄目なら無理なのかな?

Command1:
clipboard =
Send ^c
ClipWait
clipboard = 【%clipboard%】
Send ^v
clipboard =
Return
2018/02/24(土) 15:17:50.05ID:HoejbmkP0
>>804
最後の Send と clipboard = の間に、
Sleep,100
を入れて実験してみて。
2018/02/24(土) 15:45:22.10ID:J1gZxMO+0
>>804
メニュー表示した段階でファイル名編集状態が外れてるんじゃないの?
2018/02/24(土) 22:17:24.31ID:HiBHIVZG0
だな
フォーカス外れた段階でファイル名のEditBoxがなくなるから別窓やメニュー表示は無理
LiNameみたいなリネームソフトでいったんエディタに飛ばして変換するのが無難かと
2018/02/24(土) 22:47:10.87ID:b4HvGc+S0
ありがとうございます。なるほど理解しました
結果的にExplorer上ではメニュー出さずに直で行うようにしました

F14::
clipboard =
Send ^c
ClipWait
Send 【%clipboard%】
clipboard =
Return

あとはキーをちょっと工夫してみます。
トグルして括弧の種類を変えていければいいんだけど...
2018/02/28(水) 04:34:44.24ID:WVOCCenh0
エラー処理入れておいたほうがいいぞ

clipboard= ; クリップボードの内容をクリア
send, ^c
clipwait,1000 ; クリップボードの内容がからの間は待つ
if ErrorLevel <> 0 ; タイムアウト時のエラー処理もちゃんとする
{

return
}
msgbox, clipboard changed: [%clipboard%]
return
2018/02/28(水) 10:49:33.46ID:fyn3Q3mHr
正規表現スレからコピペ
RegExMatch("こんにちは。", "(.)+", $)
MsgBox, %$1% ;「こ」じゃなくて「。」が入るんだね
RegExMatch(str, "^(.)+", $)
でも同じ結果だた
2バイト文字だからこうかなと思たら
RegExMatch(str, "^(..)+", $)
$1に「は。」が入る
もうわけわかんねー
2018/02/28(水) 14:03:38.13ID:smTsGnw20
なにがわからないのかわからない
(.) 1文字キャプチャ
+ 繰り返し
→$1が都度上書きされて最終的に「。」
2018/02/28(水) 17:19:59.24ID:Wd8kHTTzM
わけわからんのは大抵仕様を読んでないからだ
2018/02/28(水) 17:40:10.57ID:fyn3Q3mHr
>>812
トン
>$1が都度上書きされて最終的に「。」
勉強になりました
815名無しさん@お腹いっぱい。 (ヒッナー a787-R89I)
垢版 |
2018/03/03(土) 21:32:14.87ID:8R4aDJlk00303
質問です

入力履歴、若しくはhotstring recognizerのリセットってできますか?
ホットストリング使ってるんですが、動作して欲しく無い場合があり、その場合途中でリセットしたいんです。

(物理)カーソルキーとかを挟むとリセットできるんですが、
AHKから(例えば無変換+で発生させたカーソルキー)だとリセットされないんですよね……
816名無しさん@お腹いっぱい。 (ワッチョイ a787-R89I)
垢版 |
2018/03/04(日) 00:32:52.54ID:Hu/zstz50
できないっぽいですね。

とりあえず、
問題のキー入力から最速で!"#$みたいな、絶対に使われない文字列をsendで出力して
ソレをホットストリングの確定文字無しで認識させて、その時Zオプションを使う
でイイですかね?
2018/03/04(日) 05:03:51.36ID:cZsx79sA0
#ifか新機能のHotstringで止めればいいのでは?
https://autohotkey.com/docs/commands/Hotstring.htm
818名無しさん@お腹いっぱい。 (ワッチョイ a787-R89I)
垢版 |
2018/03/04(日) 20:14:50.24ID:Hu/zstz50
リンクありがとうございます
コマンドのHotstringやZTオプションとか、色々増えてるんですね。
いつも日本語のwikiの方を見てました。

#IFを使って、
IMEオンオフでホットストリングの挙動を分けていたんですが、
IMEオンの時も、
IMEオフキーを押す操作(変換中 文字をかなからローマ字小・大にする)があるので、反応してしまい困ってました。

しかし、よく考えたら、
その操作の後は(AHK側の変数では)IMEオフになっているので打鍵に反応してしまいますね。
結局そのキーを2つに分けるしかないみたいです。

お騒がせしました。
819名無しさん@お腹いっぱい。 (ワッチョイ 6767-wl/W)
垢版 |
2018/03/05(月) 10:10:24.59ID: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などを挟んでみましたが解決しませんでした。
どうすればいいのでしょうか。。。
2018/03/05(月) 11:18:03.82ID:IOshgH160
三回目だけ残しても動かないなら
マクロ対策されてるかもしれないから
sleepをすごい多めにとってみるとか
2018/03/05(月) 11:21:07.70ID:IOshgH160
× 三回目だけ残しても動かないなら
○ 三回目だけ残して動くなら
2018/03/05(月) 18:03:55.74ID:EWicYF830
>>819
ミスかどうか判断できないので
sleepやdelayなどを挟んで解決しなかったものを書いてほしい
2018/03/06(火) 10:20:22.05ID:zUUbNPBB0
loop,10{
Click, RIGHT, , 1690, 372
}
闇雲に連打してみる
2018/03/08(木) 08:50:41.34ID:BnoQlrXA0
Mouse without Bordersのコンパネなのですが
WinMoveやWinMaximaize等が効きません。
Winsetも効きません。
これらを効くようにすることは出来ませんか?
2018/03/08(木) 08:51:05.88ID:BnoQlrXA0
ちなみにWinActivateは効きます。
2018/03/08(木) 19:24:12.88ID:BnoQlrXA0
>>824ですが、一般論としてウインドウをWinMoveやWinSetが効かなくすることとかウインドウ側で
出来るのですか
2018/03/08(木) 20:21:04.86ID:Yf0JqExZ0
Mouse without Bordersとやらは知らんけど一般論で言うなら管理者権限のせいで弾かれるとか
その場合はahkスクリプトも管理者権限で実行する必要ある
あくまでも一般論
2018/03/08(木) 21:04:46.18ID:KOKOXPVs0
こういうマクロを作りたいと思っています
@指定キーを押すと画像認識マクロが有効になる
A有効となっている間、画面上にお目当ての画像が出てきた場合にInput
B指定キーをもう一度押すとマクロ自体をsuspend

マクロが有効となっている間、常時画像認識マクロが目を光らせるようにするには
どんなコマンドを使えばいいのでしょうか?

今のところ自分でできてるのは
suspendをトグルさせること(@とB)と
1回キー押したときに1回だけ画像認識を正確に行わせることまでです。。
2018/03/08(木) 21:21:08.26ID:KkF548Je0
画像認識って何の事だ?imagesearchか?
2018/03/08(木) 21:29:31.69ID:KOKOXPVs0
あ、すいませんimagesearchのことです
2018/03/08(木) 21:44:52.70ID:bMjXMYrA0
SetTimerでImageSearch繰り返せば良いんじゃね
あとは指定キーでSetTimerをON/OFF

あと質問するなら自分が書いたスクリプト張った方がいい
2018/03/09(金) 07:31:16.30ID:tuBlM4VC0
>>827
もちろん管理者権限でやってみましたよ。でもダメでした
2018/03/09(金) 08:03:10.58ID:0+2toMkh0
>>824
参考になるかどうか分からないけど、俺のウィンドウの移動やサイズ変更のスクリプトだと、
移動は、ハンドラを使ったWinMove と コントロールを使ったControlMove
の2通りを使っていて、サイズ変更も同じような感じ。
たしか、MDIウィンドウに対応するためだった。
2018/03/09(金) 08:11:40.12ID:tuBlM4VC0
>>833
ハンドラを使うということはDllを使うとかってことですか?
本来のWinMoveはハンドラは扱えないと思ったけど
2018/03/09(金) 08:45:40.20ID:0+2toMkh0
>>834
マウス位置のウィンドウを移動するのに
MouseGetPos,,,mh,ct,3
WinMove,ahk_id ,%mh%,,x,y
こんな感じの書き方をしてた。
2018/03/09(金) 08:46:35.41ID:0+2toMkh0
コントロールだと、
ControlMove,,x,y,,,ahk_id %ct%
2018/03/09(金) 08:52:03.57ID:tuBlM4VC0
そういうことか。ありがとう
2018/03/09(金) 14:09:34.75ID:Etdy2Nz+0
>>832
だったら先に言えよな
偉そうに「もちろんやった」とか後出しで言われても知ったこっちゃねえし
839名無しさん@お腹いっぱい。 (ワッチョイ 3f71-WxCv)
垢版 |
2018/03/09(金) 17:45:02.34ID: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
2018/03/09(金) 17:50:14.55ID:c8UvBeAJ0
>>839
1回押すごとにComboFが今いくつで、どこのifに入って、どこでreturnしているのかをちゃんと追っていけばわかる
2018/03/09(金) 17:53:58.10ID:OlYgn7zv0
>>839
ComboF = 0
が4回目になってるからだろう
3回で繰り返したいならSend, 3の後に入れれば良い
2018/03/09(金) 21:08:38.36ID:LKcOP/MX0
>>840
>>841

ありがとう。
うまく動きました!
2018/03/10(土) 16:31:28.14ID:G9FIqbQm0
あるソフトで右Altに機能を割り当てているのでマウスボタンで呼び出そうと

xbutton1::send,{Ralt}
return

と書いても動きませんでした
AutoHotkeyの履歴ではRaltが送られているのですがソフト側が認識しないみたいです
試しにメモ帳などでも試したらキーボードでAltを打つとメニュー欄にフォーカスが移動しますが
AutoHotkeyからAltを送っても何も反応しません

修飾キーを単独で押した事にするには何か別な書き方があるのですか?
2018/03/11(日) 01:18:05.15ID:RPCHFg2O0
最近気づいたけど
Send,!^{Del}
って機能しない?
2018/03/11(日) 01:30:47.46ID:C1GH2eZG0
>>844
Send自体は機能してるので入力検出ソフトなどではCtrl Alt Delを検出してる
ただしOSは受け取らないっぽい
2018/03/11(日) 01:37:30.01ID:RPCHFg2O0
>>845
ありがとうございます。
できないことが、はっきりわかると
もう試行錯誤しなくてすむので。
2018/03/14(水) 13:33:38.67ID:HnQGWYiV0Pi
お尋ねします
trayメッセージ?の表示存在の有無や内容テキストを得る方法はあるんでしょうか
使っているbluetooth機器が自動電源オフになり、その都度trayに出てくるバルーンを数回クリックして再接続するのが手間なので、これを自動化できたらいいなと思っております
2018/03/15(木) 09:31:06.48ID:xPyBwzTO0
トリガーを3キー同時押し
一応動いてるんですが書き方はこんな感じでいいんでしょうか?

;a+CapsLock+SpaceでShift+a
a::
#if GetKeyState("sc03A", "Space")
Send, +a
return
2018/03/15(木) 09:36:02.65ID:xPyBwzTO0
すみませんつづき

押しっぱなしになってaキー単独で使えないっす
2018/03/15(木) 17:21:57.74ID:QbWkJm2V0
a:: だとaのキーの置き換えだから、そら単独では使えなくなるわ
a & space::
if [CapsLockの押し下げ状態] なら[処理]

ではどうです。Capsの押し下げは取得が面倒だったような気もするけど
2018/03/15(木) 17:49:42.32ID:VH/6Gl1J0
普通のキーをモディファイアキーとして使うのは、いろいろと不便があるよ。
2018/03/15(木) 18:33:48.29ID:xPyBwzTO0
>>850
あっ そうか
そりゃそうっすよね

しかし、2キーをトリガーで3つ目をifってみたけど駄目ですな〜
う〜ん

ちょっと分岐してごにょごにょしてみます
2018/03/15(木) 19:04:06.20ID: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

ありがとうございました!
2018/03/15(木) 19:08:59.45ID:xPyBwzTO0
と、思ったら駄目だった
CapsLock+aが使えなくなった

分岐の必要が無かった
~a & sc03A::
GetKeyState, state, Space, P
If state = D
Send, +a
return

しかし、CapsLock+aに行くには一度キーを離さないと駄目だぬ
2018/03/15(木) 19:25:35.53ID: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をコマンドキーにしたかったので
まぁいいか
2018/03/16(金) 12:26:04.83ID:UouS7uLn0
Msgboxですが、はい、いいえ、キャンセルと3つのボタンをつけられますが、
このはい、いいえ、キャンセルという名前を変えることは出来ませんか。
これらを表示してからあとからの変更でも構いません
2018/03/16(金) 12:53:58.76ID:08l5uqXC0
ControlSetText
ただし普通にMsgBoxの次の行に書いてもダメだからなんらかの別スレッドで
2018/03/16(金) 13:12:55.46ID:jjTV3maS0
試してないけどメニューと同じで別スクリプトでやらないとダメなんじゃないかしら
無理にmsgbox使うよりGUIでカスタムダイアログ作るほうが良さげ
2018/03/16(金) 13:17:19.26ID:UouS7uLn0
こんなのさあ、デフォルトで出来るようにしておいて欲しいよねw
2018/03/16(金) 13:40:44.65ID:jjTV3maS0
いや
winAPIのMessageBox関数を呼び出してるだけだし
AHKに限らず どの言語でもMsgBoxつったらこういう仕様なんだけど
2018/03/16(金) 18:01:07.16ID:dZXZHaN10
共通ダイアログは共通のUIであることこそが価値なのであって、勝手に変えられたら意味がない
862名無しさん@お腹いっぱい。 (ワッチョイ ad87-lboF)
垢版 |
2018/03/17(土) 21:56:35.01ID:J13vqzPo0
windows 10です
コマンドプロンプトにcontrolsendでファイル名やコマンドを送ると
2文字目が大文字になって(元の文字列の大文字にした文字の次の文字が大文字になります)
しまいます。どうしたらなおせますか?
2018/03/18(日) 03:08:50.12ID:f91JJX+I0
単純なコードがまったく効かず小一時間トライアンドエラー
おかしいと思いはじめ調べたところオートリーロードのコードが効かなくなっていた Orz

原因を調べようとエディタを変えてみたが変わらずリロードできない
別のahkファイルをオートリーロードすると効く
で、問題のファイルに戻りトライアンドエラー
ファイル名変更も駄目
ファイル作り直しても駄目
簡単なコードだけ残して試しても駄目
バックアップしておいた物を丸ごと上書きしても駄目

何故このファイルのみオートリーロードのコードが効かなくなってしまったか原因がわからない
ファイル名以外のとこを別のファイルへ移植して動くので
コード自体に問題は無いはず
ファイル名自体も間違っていない
Auto execute Section内は特に何も変更していない
タスクトレイのアイコンは反応ある
キーは送信されている
PCの再起動はした
セキュリティソフトで除外もした

#IfWinActive, ahk_class TextEditorWindowW166 ;サクラエディタ
~^s::
ScriptName :=Remap
If WinActive, %ScriptName%
{
Reload
}
Return
#IfWinActive

お手上げです
2018/03/18(日) 03:43:59.43ID:f91JJX+I0
再インストールしたら直りました。
何だよもぅ
はじめにトライすればよかった
時間を無駄にしたわ Orz

何が原因だったんだろう…
2018/03/18(日) 22:35:08.80ID:J+BCt/Kw0
c言語を大学の講義で習った程度のアラサー業界未経験でプログラマになりたいけど
autohotkeyでpc作業の効率化・自動化、正規表現を用いたファイル操作等を行うスクリプトは趣味でやったことありますはアピールになるかな?
2018/03/18(日) 22:37:10.61ID:aKvw3zvt0
趣味で→業務の効率化を行いました
と言い換えておけ。
大抵の人にはAHKなにそれって言われるだろうけど業務に役に立つものとわかれば多少のプラスにはなるんじゃないか
2018/03/18(日) 23:02:23.62ID:HRiJzGoo0
AHKが業務に役立つって一体なんだ?
せいぜいクリックしたりのルーチンワークをやらせるくらいだろ
そんなもの特技にもアピールにもなら無いと思うよ
まだExcel使いこなせます、の方が100倍通る
2018/03/18(日) 23:10:49.20ID:NAu7k0j60
未経験者歓迎の会社ならやる気がある人だとポジティブに見てもらえるかも程度かなあ
スキルとしては役に立つとは見なされないだろうけど

しかし今はアラサーからでも始められるんだねえ
うちなんかの頃はプログラマー35才定年説とか冗談でいいながら
結局30才の時に辞めちゃったけど
2018/03/19(月) 06:05:47.26ID:2K9mbLou0
>>867
業務にめっちゃ役立つだろ。 どんだけ効率化できることか
ただ世間では知らない人の方が圧倒的に多いから
何それって言われるだけ
2018/03/19(月) 09:08:30.30ID:1gBKOOv90
マー枠でないオフィスワークならPC作業のかなりの割合がルーチンワークなので
あの人に頼むと仕事速いって評価は得られる
履歴書段階ではよくわからん余計な事が書いてあるみたいな顔されるけどね

プログラマーの仕事は職場環境の改善や効率化ではないのでアピールとしては微妙かな
SEなら顧客先への提案にAHKでの効率化もねじ込めるかも知れないが
2018/03/19(月) 19:18:33.71ID:IzZLQY4r0
おしえてください。
.ahkにドラッグアンドドロップされたファイルを違うアプリにわたす場合、
どうやって変数を書いたらいいのでしょうか?(ドラッグアンドドロップされるファイル)

.ahkにドラッグアンドドロップされたmp3ファイルをmp3directcut.exeに渡したい(D&D)です。
2018/03/19(月) 21:21:51.70ID:+9jTrdWi0
>>871
スクリプトのコマンドライン引数
http://ahkwiki.net/Scripts

でも配列が分かるなら、というか分かるようになってでもa_argsを使うほうがいい
https://www.autohotkey.com/docs/Variables.htm#Args
2018/03/19(月) 21:24:00.32ID:U+xoQwSe0
まあいまなら、RPAツールで効率化って言えばいいんじゃね。
2018/03/20(火) 06:47:06.72ID:WP8liIaB0
>>871

#NoTrayIcon
Run, mp3directcut.exe %1%
875名無しさん@お腹いっぱい。 (ワッチョイ cdaa-JEBE)
垢版 |
2018/03/20(火) 15:11:55.67ID:+orTD+Tx0
このソフトって画像認識は余り重要視されない感じですか?
OpenCVベースのライブラリを作成中なのですが。
2018/03/20(火) 15:15:31.27ID:/qe8h6Jm0
>>875
ImageSearch
2018/03/21(水) 01:38:35.04ID:w/ym+8zsM
autohotkeyってプログラミング言語なの?
2018/03/21(水) 02:26:02.22ID:t6ZVDJkP0
>>877
AHKはスクリプトであり簡易的なプログラム
本格的なプログラミング言語に比べ、用途を限定することで、覚えやすいように簡単な構造になっている
スクリプトの中でもAHKは特に簡単な方なんじゃないかな多分
2018/03/21(水) 05:59:25.78ID:vW2s5IUZM
プログラミングの足掛かりにはなるけど
用途も限られ、誰でも覚えられ、用意されたコマンドも少ない
でも高度な事しようと思ったらwin apiの知識が必要だったり
他からライブラリ持ってきたり
リファレンスが英語しかなかったり
汎用性はあまりないよ
2018/03/21(水) 09:01:31.10ID:ra+qV9Ux0
>>878
AHKの言語はかなり特殊で癖が強すぎて出来は良くないよ
perlの方が圧倒的に言語としての出来はいい
2018/03/21(水) 11:15:53.77ID:vX0jpMkC0
いきなり使えるという意味では楽なほうだと思うけど
スプリクト言語として簡単な方だとは正直言い難い
増改築繰り返してて色んな言語の方言ぶち込まれてるから纏まりないしね
2018/03/21(水) 13:11:58.41ID:ltXmxIsFM
まぁ おもちゃ だね
2018/03/21(水) 14:35:23.46ID:7OKFzbdy0
>>880
出来がいいとか悪いとかそんな話は誰もしてないから
2018/03/21(水) 17:56:15.87ID:RBaLq5Ja0
>>877
プログラミング言語は以下の総称、AHKはスクリプト言語に属している

スクリプト言語 - プログラミング言語のうち、プログラムの記述や実行を比較的簡易に行うことができる言語の総称
           JavaScript、Perl、Python、PHP、Rubyなど

コンパイラ言語 - 人間が書いたプログラムをコンピュータが理解できる形式に変換するプログラム言語
           C言語やC++、Javaなど、上記と比較してパフォーマンスに優れている
2018/03/21(水) 18:36:08.33ID:zFBQqTlw0
>>884
スクリプト言語とインタープリタの違いは?
2018/03/21(水) 18:57:46.63ID:IUvp1TqV0
そろそろスレチ
2018/03/21(水) 19:06:50.77ID:vX0jpMkC0
アセンブラが抜けてるぞ
コンパイルせんけどあれもれっきとしたプログラミング言語ですよ
2018/03/21(水) 19:12:21.63ID:MLMIaNkj0
>>886に同感
2018/03/21(水) 20:42:05.97ID:TU8fmjCY0
日本語のwikiは4年前から更新が止まってるけど
日本のユーザーほとんどいないのかしら
2018/03/22(木) 04:39:01.11ID:VvTwrxCl0
「Insert」「Scroll Lock」って何で設置されてるんです? キーボードの“いらないキー”の使い方
https://headlines.yahoo.co.jp/hl?a=20180317-00000007-it_nlab-sci

本来の用途を知ってもやっぱりahkで覆すのが一番だな
2018/03/22(木) 09:00:22.19ID:U0cAdNVx0
Insertは固定テーブル書換でよくお世話になったし今もたまに使う
BreakもVBAの暴走止めるのに使うしScrollLockだけは要らんけど
あの辺をahkで覆すことってないなあ
そもそもホームポジションから遠いから便利キーとして活用しづらいというのもあるが
2018/03/22(木) 12:01:10.33ID:Ufwil7jA0
この前INSを知らんうちに押しててその性質を失念しててパニックになったw
2018/03/22(木) 12:37:22.06ID:e+UZ/a+c0
昔使ってたワープロ専用機がパソコンで言えば挿入キーが効いた状態が標準だったので、パソコンに移行した初期はよく使ってたな。今でもたまに長い名称の修正の時に使うことがある。
無変換キー使わないから他に置き換えるって記事も出てくるけど、個人的にはしょっちゅう使ってるんだよなぁ。ショートカットの関係とかもあるし、キーの置き換え考えるのってけっこう難しい。
2018/03/22(木) 13:16:44.76ID:DUtGpx6E0
Insert::return
^Insert::Send, {Insert}
2018/03/23(金) 10:21:17.86ID:b+Z0za8i0
例えば、
Aキーを押した後、Xを押したらある処理Xをする
Aキーを押した後、Yを押したらある処理Yをする
Aキーを押した後、Zを押したらある処理Zをする
みたいなことをしたいのですが、簡単なスクリプトの書き方ってありますか?
2018/03/23(金) 10:24:25.97ID:XAz/zURm0
>>895
キーによって最適の処理があるとおもうから、具体的に何のキーか書いた方が良いよ
2018/03/23(金) 14:14:04.10ID:GjwCbWet0
a & x::
処理
Return
ではいかんの?aキー殺したくないなら~a & x::で。
2018/03/23(金) 14:48:02.81ID:b+Z0za8i0
>>897
そぅいう書法があるのですか。これは初めて知りました。ちょっと調べてきますね
2018/03/23(金) 16:07:40.41ID:b+Z0za8i0
>>897
やってみました。 なるほど。これでもよさそうです。 ありがとうございました
2018/03/24(土) 19:08:51.99ID:QBdmJd9U0
スマホのWindows10 MobileにAuto Hot Keyって導入できる
んでしょうか?
無変換+Jに左矢印を割り当てるくらいできればいいのですが。
2018/03/27(火) 13:28:24.89ID:hp/Jmp+F0
何いってんだコイツ
2018/03/27(火) 23:21:47.06ID:gIH3YYjz0
おまいらファイル長くなりすぎた時どうしてるの?
2018/03/27(火) 23:48:02.88ID:2xWHg+240
機能ごとにプラグイン化してる
2018/03/28(水) 11:34:17.40ID:ojeN139t0
文字列で、最初の10行を取り出す、とかはないのでしょうか
2018/03/28(水) 13:54:22.18ID:aUGjB4dVM
wikiみろ
2018/03/28(水) 14:43:43.95ID:ojeN139t0
見つからないので、
StringGetPosで`nを見つけてみたいなことをしています。 それしか方法ないのかな
2018/03/28(水) 15:13:27.91ID:VqAJ66ND0
Loop,Parseってのがあるじゃろ…
2018/03/28(水) 19:42:08.35ID:wFJSmFtY0
やるとしたらLoop, ParseかRegExReplace()あたりでやるかなあ
2018/03/28(水) 20:08:23.29ID:VpMR9Ykb0
>>904
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
2018/03/29(木) 08:46:20.34ID:Kt+xqO1A0
私は、
StringGetPos, n, text, `n, L10
StringLeft, text,text, n
としました。
Loop, ParseかRegExReplaceってのは気づきませんでした
いくつか方法ありますね。 gnuとかやってたのでもうちょっと関数ほしいかな
2018/04/02(月) 09:12:36.71ID:6CLUXBlN0
RegExMatchで変数同士の比較の際に、変数内に特殊記号が入ってる場合のエスケープってどうすればいいんですか?
例えば↓だと記号が入っている行では0が帰ってきてしまうので、これを正しくマッチさせたいです

str =
(
abcdefg
abcd*e\fg
hijklmn
hijk*"l\mn
)

Loop,parse,str, `n
{
a := RegExMatch(str, A_LoopField)
MsgBox % a
}
2018/04/02(月) 09:32:38.76ID:Bc45Krob0
\Q
2018/04/02(月) 09:56:17.05ID:6CLUXBlN0
>>912
できましたありがとうございます
914名無しさん@お腹いっぱい。 (ワッチョイ 2b96-bCzG)
垢版 |
2018/04/02(月) 23:41:48.53ID:/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中で自身の変数を使うにはどうしたらいいのでしょうか
2018/04/03(火) 01:17:27.13ID:nsnifR/q0
this
2018/04/05(木) 06:40:22.99ID:cEzeFAIV0
UWSCからAutoHotKeyに鞍替えしようと思っているのですが
UWSCのchkimgXのような高機能な画像認識機能はこちらにはありますか?
2018/04/05(木) 11:22:45.68ID:HI1fVzZM0
指定した画像と一致するかどうかという機能(完全一致〜ゆるく一致までざっくり設定可)と、
ピクセルの色を調べる機能はあるぞ
2018/04/06(金) 03:36:34.69ID:/B0boEGH0
DLL呼び出しはどうやるのかな?
必要なら私が作成したchkimgXのようなのを公開しますが。
2018/04/06(金) 10:13:31.58ID:/B0boEGH0
DLL呼び出しして画面と画像でテンプレートマッチングしてクリックまではできました。
配列とかが難しいですね><
2018/04/06(金) 19:19:42.82ID:OFzZtZ5C0
chkimg(完全一致検索)
chkimgX(テンプレートマッチング)
それぞれ互換性を持った関数をDLLとして提供しています。
ahkでUWSCとほぼ同じ画像認識操作が可能です。

https://www.axfc.net/u/3901288
2018/04/07(土) 11:43:46.03ID:fZhBhj010
1.1.28.02 リリース
また細かいバグフィックスだろうけど
現時点でチェンジログは出ていない
2018/04/07(土) 15:15:24.78ID:R1ORWks/0
https://github.com/Lexikos/AutoHotkey_L/releases
チェンジログはGitHubのが早い
2018/04/07(土) 15:40:04.20ID:fZhBhj010
>>922
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].

最後のやつ、なんかおかしいと思ってたんだよ
やっぱバグだったのか
2018/04/09(月) 09:25:51.24ID:c9jGED410
質問なのですが、画面の特定の座標だけでスクリプトを動作せたいので次の様に書いたのですが
ifの条件が無視されて画面のどこでも動作してしまいます
どのように書けば良いのでしょうか?

Xbutton1 ::
CoordMode,Mouse,Screen
MouseGetPos,xpos,ypos
if (100<xpos<200 && 100<ypos<200 )
{
send,a
}
return
2018/04/09(月) 09:30:42.59ID:G8+Atlb/0
a<b<c
って書き方を認めていない言語も多かったような
2018/04/09(月) 09:41:06.34ID:c9jGED410
>>925
その通りでした
if (100<xpos && xpos<200 && 100<ypos && ypos<200 )
としたら動きました、ありがとうございます
2018/04/12(木) 14:21:27.54ID:LYFBDP2J0
使い道がありそうでなさそうだな

上海問屋、6つのボタンに任意キーを割り当てできるUSB有線リモコン - ITmedia PC USER
http://www.itmedia.co.jp/pcuser/articles/1804/11/news093.html
http://image.itmedia.co.jp/pcuser/articles/1804/11/yk30028_2018-0411-1201-7.jpg
2018/04/12(木) 14:46:13.63ID:kOEYD5Ut0
これならゲームのコントローラーで事足りそう
2018/04/12(木) 14:47:22.87ID:W4scmFmJ0
どんやのパチモンじゃ購入初日にボタンが壊れそう
2018/04/12(木) 16:11:05.18ID:T0dluYzz0
AHKなどソフトウェアマクロが弾かれるゲームでどうしてもハードウェアマクロ使いたい人向けかな
ま、要らんけど
2018/04/12(木) 19:25:32.52ID:vJcRmT+E0
(ほしい…)
2018/04/13(金) 09:45:10.86ID:NtTFGXLa0
POS用のプログラマブルキーボードが鉄板やろ
933名無しさん@お腹いっぱい。 (ワッチョイ ff2e-XjMo)
垢版 |
2018/04/13(金) 17:18:58.63ID:paZWK/3z0
https://ux.getuploader.com/autohotkeyl/download/130

Autohotkeyでゲームパッドを弄り倒す叩き台作ってみたよ
サンプルはトーチライト2 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/13(金) 19:00:24.87ID:1ryaKKuDa
なんかすごいの来たぞ
2018/04/13(金) 20:25:23.22ID:j0qzzlLl0
win7からwin10に移行して1か月経ったが、ホイールリダイレクトがwin標準になったのを最近知った
なので、win7時代から使っていたWheelAccel.ahkが不要になったよ
(むしろ、スタートメニューなど一部の窓でスクロール出来なくて困っていたし、加速機能使わなかったから不便無い)
2018/04/13(金) 21:19:40.20ID:0+nIaT1E0
バイナリデータn書き換えについて質問します
例えばbinary.datと言うファイルがあります
このファイルの中身は”FF FF FF FF”とします
これを先頭が”FF”だった場合に”00 FF FF FF”と書き換えたいのです。
どこかに良いサンプルコードありませんでしょうか?
2018/04/13(金) 21:42:32.33ID:7h17ETYp0
更新フラグでFileOpenしてRawWriteでできるでしょ
2018/04/13(金) 22:12:16.80ID:0+nIaT1E0
書き換え方法がわかりません
どうすれば良いですか?

FileGetSize, size, binary.dat
FileRead, data, binary.dat
file := FileOpen("binary.dat", "w")
file.RawWrite(data, size)
2018/04/17(火) 11:04:41.37ID:/LpxS4AS0
>>933
Jtkのまがいもの更新しました。
https://ux.getuploader.com/autohotkeyl/download/131
思いつくのは入れて満足したのでしばらくこのままだと思います。
なにか要望あれば考えます 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/17(火) 15:16:07.19ID:TidmHlF5a
>>939
バグ報告いいかな?
無線パットだと起動した直後にLRがキーログに出てくる
実際押されてる模様。初期化の速さに通信が追いついてないっぽい

あと要望はLTトリガーにフルプル対応してほしい。それさえクリアしたらSteamのキーアサインの呪縛から抜けられそう
2018/04/17(火) 16:51:38.37ID:a0NxOH1g0
window10 pro 64bit版で.NETアプリを自動操作させようとしているのですが、
コントロール名の取得方法が分からず、座標で操作しています。
しかし、画面サイズが異なると座標がずれてしまうため、コントロール名で操作したいです。
コントロール名を取得する良い方法はありませんか。
Au3Info_x64を使ったりもしているのですが、テキストボックスやボタンの名前の取得もできません。
よろしくお願いします。
2018/04/17(火) 17:00:04.82ID:s4qV74PJa
mousrgetposで取れない?Dll叩いてもだめ?そうでないなら画像認識で無理やりかな
2018/04/18(水) 13:30:00.16ID:v+G5gwRf0
>>939
jtkモドキ微更新。何度もすみません
バグ取ってフルプル分岐作りました。
フルプルとソフトプルの分岐設定も書いているので参考に
https://ux.getuploader.com/autohotkeyl/download/132 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/18(水) 15:45:10.39ID:v+G5gwRf0
>>943
十字キー関数にミスが有りました。再アップしたので>>1のAutohotkey専用うpろだ からどうぞ。目玉でまくってるし
2018/04/18(水) 16:38:37.35ID:BxRxemHs0
>>942
ありがとうございます
mousegetpos試してみました
そこで取得したテキストボックスらしきClassNNにsendしてみたけど入力されないので、
ClassNNがあってるかどうかも分からない状態です
dllはまだよく分かっておらず、試せていません
もう少し試行してみます
2018/04/20(金) 01:59:31.80ID:CBU7UbTU0
gui上のあるボタンを押したらcaps入り切り、というのが上手くいきません
capslockのキーコードをsendすれば?と思いましたが必ずロック入にだけなってしまいオフにできません
2018/04/20(金) 08:47:40.18ID:dNl99PS50
>>946
SetCapsLockState
2018/04/20(金) 10:47:37.95ID:CBU7UbTU0
>>947
946です、出来ました感謝m(_ _)m
2018/04/21(土) 18:06:22.61ID:C1+iWiz90
Jtkモドキにマウスカーソルの形状を判断して1か0を返す関数を追加しました
画面上のボタンにマウスカーソルが乗っているかどうかを1か0で返す関数も作りました
今回は主に画像で分岐する処理を追加したものになります

https://ux.getuploader.com/autohotkeyl/download/137 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2018/04/21(土) 18:42:03.16ID:OB+FBU580
しつこく継続するつもりなら自分の日記でやってくれ
2018/04/21(土) 18:50:31.53ID:KPF3rMpt0
GitHubに上げてくれると助かる
2018/04/21(土) 20:02:17.73ID:9NdPyy9Da
今回のはガチ有能だから許してやるよ
これjtk超えたわ
2018/04/21(土) 20:21:57.16ID:C1+iWiz90
そろそろウザイいわれる頃だと思いました
今の所目立つ不具合もないので開発はこれで終わりです。お騒がせしました
2018/04/21(土) 20:25:29.17ID:rnogQ4Zw0
思ってても自重できないとかガイジかよ
2018/04/21(土) 20:25:41.02ID:NokkieTn0
お疲れ様でした
2018/04/21(土) 20:26:26.63ID:A/2ANSA+0
そんな〜
進捗知らせるリンクとかないの?
2018/04/21(土) 22:20:34.98ID:PYmE/PA4a
GitHubはいい選択肢だと思う
割とすごく便利に使ってるからこれで開発終了も勿体無い
これからなんか機能付け足すとかあるかも知れんからお願いします
2018/04/21(土) 22:33:06.01ID:fKXilc1u0
うん、ブログかなんか作って、改良したらリンクだけでも貼っておいてくれると助かる。
文字通りのウェブログみたいなのでかまわないから。
2018/04/21(土) 22:34:11.35ID:fKXilc1u0
あぁ、ギットハブでもいいね。
2018/04/22(日) 05:25:59.04ID:RQZNijO/0
ギフハフにかんしされてる
2018/04/22(日) 09:58:25.53ID:KrMwycZF0
お疲れ
たまにうpろだを覗いたらアップされてるくらいでも嬉しいから
よかったら続けてくれ
2018/04/22(日) 19:27:30.11ID:PW3IH2j00
以下のようなサンプルスクリプトを書き、Excel上で
動いたのですが、他のウィンドウに切り替えても
動いたままです。アクティブ時以外は停止させる
ことはできないのでしょうか。

#IfWinActive ahk_class XLMAIN
^!down::
Interval :=2
Loop, 20
{
Send {enter}
Sleep, 1000*Interval
}
#IfWinActive
2018/04/22(日) 19:30:44.48ID:RQZNijO/0
whileループ使えばよろし
2018/04/22(日) 22:10:37.71ID:+NuTjY0aM
#IfWinActiveはトリガー発動時の条件でしかない
アクティブ外れたからって実行中のスレッドを強制的に止めるような怖い機能はついてない

止めたいなら自分でloopの中でアクティブ切り替わったかどうか見てアボート処理入れないと
つうかhotkeyの中でsleep使うとキー連打したときにめんどくさくなるから
settimer使った方が安全だと思うけど
2018/04/22(日) 22:12:00.47ID:Na2a3cix0
俺なら、SetTimer使って
if(WinActive("ahk_class XLMAIN")){
で実行させるかなぁ
2018/04/22(日) 22:44:07.12ID:10Ec/CBsa
loop内からif式でブレイクなんてのもある。まぁ好きなの使えばいいよ
2018/04/23(月) 08:25:10.44ID:O5Q2FlPe0
みなさま、回答ありがとうございます
参考にさせてもらいます
2018/04/23(月) 17:57:46.27ID:AE7Q4/Eb0
要望があったのでJTKモドキの専用のブログ作りました。今後更新はこちらですることにします。
http://gamepadtokeybordframework.blogspot.jp/2018/04/gamepadtokeybord.html
2018/04/23(月) 18:01:29.23ID:pzh5FeO50
ありがとうございます
2018/04/23(月) 18:07:00.37ID:e3Qosisv0
>>968
2018/04/23(月) 18:25:32.83ID:kj66dibia
おお、続けてくれるか!ありがとう!
XboxコントローラーでLRトリガー同時押しできるってだけでも相当助かってるので頑張って
2018/04/23(月) 18:43:56.76ID:bXPE8uhS0
トリガー同時押しなんてJTKでもずっと前から出来てるのに何言ってんだこいつ
やたら過度に称賛してる連中自演臭い
2018/04/23(月) 20:57:13.94ID:Gj6VP1R00
まぁ、ここよりもブログに応援コメントしてあげた方が良いだろうね。
2018/04/23(月) 21:18:00.96ID:zWCv4IqX0
分かってない質問者来たときに上から偉そうなのがワラワラ涌く以外勢いつかないスレなんだから
この程度の自作自慢ぐらいいちいち締め出すこともないだろうに
噛みつきたいだけのキチガイの言うことなんかほっとけよ
2018/04/23(月) 21:34:02.76ID:x5JIhAAO0
と、噛みつきたいだけのキチガイが吠えてます
2018/04/24(火) 00:51:31.04ID:K1jVCB+q0
A_OSVersionってWin8までしかサポートしてない?
Windows10であることを取得したい場合なんか方法ある?
2018/04/24(火) 00:57:28.67ID:HNWPsUWl0
MsgBox, %A_OSVersion%

で10.0.16299と表示されたけど
2018/04/24(火) 01:01:20.02ID:K1jVCB+q0
最新版インストーラから入れたら直った、ZIPだと本体が入ってないのな
スレ汚しすまん
2018/04/24(火) 21:47:10.94ID:w2d0xl7M0
zip版はAutoHotkeyA32.exe(ANSI 32bit)、AutoHotkeyU32.exe(UNICODE 32bit)、
AutoHotkeyU64.exe(UNICODE 64bit)が入ってるので自分の環境に合うやつを
AutoHotkey.exeにリネームなりコピーなりして使う
2018/04/25(水) 02:45:11.77ID:C2JdtamLM
ポータブルマンセー厨だがahkは毎回インストーラ使って入れてるな
.ahkの関連付けされてないと不便だし
2018/04/25(水) 05:12:42.53ID: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
2018/04/25(水) 05:35:11.89ID:pC9fkv9h0
>>981
普通にコンビネーションキーじゃダメなのか?
2018/04/25(水) 06:20:19.60ID:TT/mbE+J0
>>982
嫌です
2018/04/25(水) 06:27:05.95ID:RVBw9LmG0
>>981
そもそもIfとElseの使い方も滅茶苦茶
もう少し基本のサンプルコード良く見て基本中の基本を自力で理解した方が良い
そのスクリプト実行すると「a」を一回押しただけで「aa」が入力されるしな
2018/04/25(水) 08:08:05.11ID:TT/mbE+J0
>>984
指摘されて気付いたけど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
2018/04/25(水) 08:17:14.96ID:FDOLZigg0
まぁ、好みの問題だと思う。
俺は、
if(GetKeyState("sc03A","P")){
} else {
}
で書く方が好き。
2018/04/25(水) 08:22:27.28ID:cS31dOM80
動作仕様の説明なしでコードだけ貼られても意図した動作
(capsやスペース押下でどうしたいのか) そのものが他人にはわからんのだが
2018/04/25(水) 08:27:29.40ID:RVBw9LmG0
>>987
ほんとだよな
他人から見たらSpaceとaを押して「 A」(Aの前にSpaceが入る)になるのも本当に意図した通りなのか疑問だし
2018/04/25(水) 08:29:03.76ID:FDOLZigg0
>>985
結局、Spaceキーはどうでも良かったわけね
2018/04/25(水) 08:45:52.16ID:TT/mbE+J0
>>986
ありがとうございます
参考にします

985はひとまずって言ってるでしょ

>>987
>>988
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
2018/04/25(水) 08:57:54.27ID:Uuym80WnD
続きはblogでやるからみんなみてね
2018/04/25(水) 09:05:46.23ID:2q8Y67NRa
過疎になるわけだ
2018/04/25(水) 09:29:19.28ID:ehxQscQV0
>>985

> Ifで条件に一致したときに実行させて一致しない時にElseで分岐でいいのかな?
OK

> この場合だとわざわざIf state = U で押上状態を取得しなくていいの?
押上を待ちたかったり、押上た時になにかしたいのでなければいらない

> あと、ifは1行ならカッコで閉じなくていい?閉じるべき?
> 単一コマンドはElseの直後に絶対書くべき?
究極的には趣味の問題だけど、初心者のうちはifやelseの後は必ず{}にしといたほうが無難

それとスマートさを求めるなら、If分岐を整理するのもそうだけど
>>988が言ってるCapsLockやSpaceが入力されてるのをどうにかするのが先だと思う
どんなソフトで試してるのか知らないけど、余計なキー入力は誤動作の元だから
KeyWaitを使って横取りするか、コンビネーションキーを使うのが早い
コンビネーションキーが嫌なら、あえてその理由を解消する方向でスクリプトを考えてみるのが楽な場合もある

ただ、今の時点で期待通りに動いてるなら
下手にいじらないのもひとつの手
初心者の自覚があるならなおさら
2018/04/25(水) 10:03:07.10ID:RVBw9LmG0
>>990
Spaceとaを押したときにAの前にスペースが送られてるのも意図的にやってるのであれば

a::
GetKeyState, state, Space, P
If state = D
Send, +{A}
Else Send, a
Return

↑この6行と

~Space & a::Send, +a

の一行で動作は同じだろう
なぜコンビネーションキーではダメなのか知らんが
スマートに記述するならこっちの方がスマート
2018/04/25(水) 10:31:32.03ID:TT/mbE+J0
>>993
ありがとうございます
元々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がチラつくこともないです...

ただ、これが意図した動作だとしても書き方がおかしいようなら
もう少し考えます
2018/04/25(水) 10:43:10.93ID: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
2018/04/25(水) 10:47:25.65ID:RVBw9LmG0
>>983は何だったんだ
2018/04/25(水) 10:49:12.47ID:TT/mbE+J0
>>995はちょっと訂正
~sc03A & W::Send, ^!+{W}
~sc03A & S::Send, ^!+{S}
~sc03A & A::Send, ^!+{A}
~sc03A & D::Send, ^!+{D}
2018/04/25(水) 10:56:10.09ID:YVL3wDrE0
それで良いなら嫌ですとか言うなよ
2018/04/25(水) 10:59:43.24ID:TT/mbE+J0
CapsLockが送信されてるのは言われるまで送信されてるのがおかしいとは思っていなかったですが
とりあえず、状態を取得してもその後Ifでon,off出来なかったのでこんな事になってます
CapsLockがトリガーなら大丈夫なのですが、~LShift & sc03Aをトリガーにすると何故か動作しないので
CapsLockを送って処理してる次第です。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 222日 23時間 7分 3秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。