X



AutoHotkey スレッド part25 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。 転載ダメ©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)
0002名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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)
0003名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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/
0004名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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を再起動する。
0005名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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のジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
0006名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
0007名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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
0009名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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} にする。
0010名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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」に変更。
0011名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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/
0012名無しさん@お腹いっぱい。 (ワッチョイ c977-fKjf)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

※テンプレここまで
0013>>1より業務連絡。 (ワッチョイ c977-fKjf)2017/09/14(木) 12:21:12.97ID:uijNj4qb0
テンプレの一部(このスレの>>9-10)は前スレではまとめて1つのレスだったのですが、
スレを埋め立てているのではと判定されてしまったため、
今回は分割して貼り込んであります。
0017名無しさん@お腹いっぱい。 (ワッチョイ 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つで実現できる方法がありましたら教えてください
002417 (ワッチョイ 5b09-8btW)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ファイルへ分けると正常に動きます
002517 (ワッチョイ 5b09-8btW)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
002617 (ワッチョイ 5b09-8btW)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
0028名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)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

何かヒントをください。よろしくお願いします。
003017 (ワッチョイ 5b09-8btW)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)
0031名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)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

長押しという選択肢もあろうかとは思いますが、コードの内容上長押しにはしたくないので何とかワンクリックで確実に動作しないでしょうか?
0033名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)2017/09/16(土) 09:07:41.02ID:aHU7hLXq0
>>32
あぁなるほど状況は理解した
1回押しで動くコードがあるからそれがダブルの1回目で邪魔してるのね
ということはElse以降の方をダブルクリックにしたほうがいいのかな
もうちょい頑張ってみます
ありがとうございました
0035名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)2017/09/16(土) 09:53:44.44ID:aHU7hLXq0
あぁ逆にしても駄目ですな
条件分岐する前に1回押されてしまう
1回押しを定義しつつダブルクリックを否定
から〜の Else
で、ダブルクリックを設定しつつシングルクリックを拒否
理屈だとこういうことか

できんのかなコレ...
004035 (ワッチョイ 1387-+ACF)2017/09/16(土) 19:46:44.50ID:aHU7hLXq0
一応、ElseじゃなくReturn で繋いで双方のコードを引き込まなくなった(タイミングは調整中)

しかし、ボスが来た自体に問題が出てることが発覚
どうやらプログラムによって発動までにラグがあったり、何度か押さないと反応が無い
あれ? 単独スクリプトでもっとしっかり動いてたはずなんだけどなぁ
特にFirefoxの反応が悪すぎる。それに対して動画プレイヤーは素直に反応する
音楽プレイヤーはちょっと遅れ気味で反応
SetKeyDelay,を10から-1にしても変わらず...
クラスを1個づつに分けて試したけど反応悪い
直接のショトカは問題ないので何か悪さしてるのかな
0041名無しさん@お腹いっぱい。 (ワッチョイ 59a0-p+ov)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度押ししたいなら素直に別キー使った方が良いんだろうね
0042名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)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キーでテキパキ反応してたんだけど

もうちょい頑張ってみます
0043名無しさん@お腹いっぱい。 (ワッチョイ 1387-+ACF)2017/09/17(日) 04:52:29.36ID:oCfXbTFr0
◯::
DetectHiddenWindows,On
ControlSend,,^w,ahk_class MozillaWindowClass
Return

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

うん。心が折れた
^F13でいこう。そしてボスキーは他のコードと分けようかな...
ってか面倒くさいから普通にボスキーアプリ拾ってこいって話だよな
0046名無しさん@お腹いっぱい。 (ワッチョイ 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なりで自由に使えるなら、わざわざ自作するのも馬鹿らしいので…。
005146 (ワッチョイ c977-fKjf)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() って、いろんな言語で汎用的に使いそうな関数ですから、
著作権フリーの自前のものを手元に持っておいたほうが、
あとあと融通がききそうですし。
0052名無しさん@お腹いっぱい。 (ワッチョイ b3e0-o7xi)2017/09/18(月) 19:35:44.46ID:MAIQQZAv0
マウスのホイールで加速
ってAHK単体で実現できますか?

Webブラウザで超縦長ページを高速スクロールさせたいとき、ホイールを高速で回すと10数ページぐらい移動とか・・・
0056名無しさん@お腹いっぱい。 (ワッチョイ 59c5-p+ov)2017/09/19(火) 03:22:47.92ID:IXDgiRwq0
自分は加速ではなく
サイドボタン1&ホイール上下でHome/End
サイドボタン2&ホイール上下でPageUP/PageDown
を割り当ててる
とりあえず一番上か一番下に飛びたいことが多いのでHome/End割り当てるのが効率良いです
006657 (ワッチョイ 39d9-SGtB)2017/09/20(水) 05:36:41.50ID:1u+zkbMh0
色々調べたけど殆ど分からない
user32.dllを読み込んで何かのイベントを貰えれば良いのだけど、それについての情報が殆ど無いですよね
やり方もわからないし…

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

その先さっぱり
パラメータの説明はMSにあるけど、無能過ぎてちんぷんかんぷん
Spy++で調べるとデスクトップはFolder viewというFormだということはわかったけど…
0069名無しさん@お腹いっぱい。 (ワッチョイ 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ページ目までつづくけど、
結局は潰しきれないので、好きなやつをどうぞ
007117 (ワッチョイ 4609-dBFo)2017/09/21(木) 14:16:57.34ID:h2uQQOf90
>>34>>38
解析有難うございます
修正版にてようやくエラーが再現しましたが、応答なしになるのは変わらずでした
Win2000+IME2000ではIMEの状態が常にOFFになりました
残念ですが2つ起動することにします
0081名無しさん@お腹いっぱい。 (ワッチョイW a36c-bW+6)2017/09/24(日) 01:23:40.12ID:ovq+ASMp0
キーを押している間
クリックして
マウスムーブ
クリックして
マウスムーブ を繰り返したいんですが
マウスムーブの値が一定じゃない場合
数珠繋ぎにif文を増やして行けばいいのでしょうか?
キーを離したら停止は出来るんですが
If文の数珠繋ぎにするやり方を教えてください
0086名無しさん@お腹いっぱい。 (ワッチョイ 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
とかかいて呼び出してやればいい。

#テストしてないので誤字とかあったらごめんね
0092名無しさん@お腹いっぱい。 (ワッチョイ 1eec-tSko)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%
0096名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)2017/09/28(木) 11:06:02.36ID:sWQkFnkH0
キーリピートできない多ボタンマウスに
キーリピートできるようにはできないんでしょうか?

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

たぶん、キーリピートが関係している?気がするんですが。
0100名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)2017/09/28(木) 17:18:30.28ID:sWQkFnkH0
たぶんマウスの問題なんだと思います。
いろいろ実験したんですけど、そのマウスだけAuto Hot Keyが認識しませんでした。
KeyHistoryを教えてくれた方、ありがとうございました。
これを知らなかったら、認識しないのに無駄にコードを書いて悩んでたと思います。感謝です。
0101名無しさん@お腹いっぱい。 (ワッチョイ 3d4e-MY2y)2017/09/28(木) 17:26:18.24ID:a7Erhn8f0
>>100
普通多ボタンマウスならボタンのカスタマイズやキーアサイン機能あるだろ
俺の場合ならRazerNagaにF13〜F24など割り当ててAHK側でキーリピートさせたりも出来る
どこのマウス使ってんだよ
0102名無しさん@お腹いっぱい。 (ワッチョイ 2d87-asy+)2017/09/28(木) 17:38:54.39ID:tPmB9WEX0
ひょっとしてマウスソフト設定がキーボードのキーになってるのでは?
さっきは書いてなかったが#InstallKeybdHook書けばそちらもログにでる
サイドボタンのマウス設定が「Z」ならAHKは「Z」と認識する

#InstallKeybdHook ; キーボードログON
#InstallMouseHook ; マウスログON
KeyHistory
0103名無しさん@お腹いっぱい。 (ワッチョイ 3d4e-MY2y)2017/09/28(木) 17:45:34.30ID:a7Erhn8f0
だから具体的なこと一切書かないから悪いんだよ
>>96の「別のボタン」とは何ボタンなのか、多ボタンマウスの特殊ボタンならばそこに何を割り当ててたのか
「今のやつ」とはどのマウスのことなのか
0104名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)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なら動くんですが、エレコムマウスでは動かないです……。
0106名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)2017/09/28(木) 19:27:11.97ID:sWQkFnkH0
Auto Hot Keyとこのマウスの相性が悪いのかもしれません。
もしくはエレコムのマウスアシスタントとの相性か。
エレコムの有線ゲーミングマウス(ドライバはゲーミング用)だと@もAも動いたんですけどね。
0111名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)2017/09/29(金) 08:53:16.46ID:r/lUdNoa0
>>102
>>109
アシスタントで割り当てたキーが検出されませんね。

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

もはや何が原因か分かりません。
0115名無しさん@お腹いっぱい。 (ニククエ b50f-0rIO)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()
0122名無しさん@お腹いっぱい。 (ワッチョイWW e5cf-+o3y)2017/09/30(土) 11:15:24.15ID:1lMD47790
あるウィンドウにあるメニューバー、文字メニューでリスト内テキストと付随したチェックマーク有無を取得する方法はありますか?
例えばあるソフトで「☑」夜間モード、みたくなっていて
そのチェックありなしでキーボード操作が大幅に変わってしまうようなものに対応したホットキー(意図しない暴発を避けるため、片方のモード時にはスルーする、など)を設定したく調べでいるのです。
0123名無しさん@お腹いっぱい。 (ワッチョイ 1b9c-+G6K)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のメニューのハンドル取得方法を知っている人求む。
0124名無しさん@お腹いっぱい。 (ワッチョイWW e5cf-+o3y)2017/09/30(土) 13:15:40.77ID:1lMD47790
>>123
ありがとうございます!使用したいソフトに数値あてはめてテストしたら問題なく動きました。
最近ahkを触り出したので、ご紹介いただいたDllCallなど、まだ触ったことのないコマンドでした。さっそくwikiを見つつ理解しようとしてますが頭がパニックになってます!アリモノの関数から値を引き出している?うーむ
またじっくり勉強していこうと思います、ありがとうございましたm(_ _)m
0125名無しさん@お腹いっぱい。 (ワッチョイ 4d4c-qEDe)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

こんな感じで、リピート機能がないサイドバタンにリピートさせてます。
こんなコードでいいのか分かりませんが。
0128名無しさん@お腹いっぱい。 (ワッチョイ 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")
0131名無しさん@お腹いっぱい。 (ワッチョイ 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
}
0132名無しさん@お腹いっぱい。 (ワッチョイ 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
}
0134名無しさん@お腹いっぱい。 (ワッチョイ cb35-Txnz)2017/10/01(日) 10:15:37.57ID:J6v0aHef0
SendMode, Playにすると動かないマシンがあるんだけどどういうことなんだろう
Win8やWin10のマシンではちゃんと機能するのにWin7のマシンではPlayにすると全く動作しなくなる
0135名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)2017/10/01(日) 10:16:23.02ID:gRVszgej0
単純にSendだけでもキーを切り替えた瞬間にすり抜けが発生してしまいます
0136名無しさん@お腹いっぱい。 (ワッチョイ 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}
0141名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)2017/10/01(日) 20:28:29.75ID:gRVszgej0
Ctrlキーを使ったカーソル移動で、
Ctrlキーと通常キーの両方を押しっぱなしにしただけでも
時々すり抜けが起きますね、、、困ったな(''_'')
0145名無しさん@お腹いっぱい。 (ワッチョイ 450e-IQJU)2017/10/03(火) 17:29:15.20ID:Z94A9/610
Win7ですが、プロセスの優先度を変更するのに、MSDOSでは
wmic process where name=
を使って変更できますが、AHKでも出来ますか
アプリを起動するごとに複数のアプリの優先度を組み合わせによって変更したいのです
アプリの起動はAHKで行うので、AHKで優先度も変更できれば楽です
MSDOSのバッチファイルを作っていちいちそれを起動するというのは避けたいのですが
0147名無しさん@お腹いっぱい。 (ワッチョイ 450e-IQJU)2017/10/03(火) 17:59:47.31ID:Z94A9/610
ありがとうございました
やってみたのですが、firefox.exeなのですが複数のプロセスがありますが1つだけしか変わりません
DOSではすべてが変わるのですが、全部を変える方法はありますか
WinGetのListで取ろうとしてもPIDは取れないし、同じイメージ名が複数ある場合は1つだけしか変えられないのでしょうか
0149名無しさん@お腹いっぱい。 (ワッチョイ 450e-IQJU)2017/10/03(火) 18:18:34.78ID:Z94A9/610
Firefoxはウインドウは1つだけ(タブは複数)起動しているんです
で、WinGet Listで取得すると、IDが1つだけしか取れません
でも、firefox.exeの同名のプロセスが3つ存在しています
0150名無しさん@お腹いっぱい。 (ワッチョイ 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削除した
0152名無しさん@お腹いっぱい。 (ワッチョイ 450e-IQJU)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つのプロセスも
低のプロセスから派生したものだから低になるのでしょうね


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

SendMode Event
#UseHook
#InstallKeybdHook
#HotkeyModifierTimeout 100
SetKeyDelay,0
0157名無しさん@お腹いっぱい。 (ワッチョイ 1587-bz6c)2017/10/03(火) 23:05:38.81ID:aFw/sdPM0
>>156
自分が使ってるのはリアフォかHHKBPro2だから同時押し6つのヤツ
恐らくCtrl+I,J,K,Lの2つのキーのSendだから3つ目が来た時に
単独押しの判定になるのかな?
少し改善したのはHotkeyModifierTimeoutを追加したのが効いてると思う。
0158名無しさん@お腹いっぱい。 (ワッチョイ 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を押すとスルーするかな
0159名無しさん@お腹いっぱい。 (ワッチョイ 2363-Uzor)2017/10/04(水) 00:35:32.62ID:QCRp6QYx0
コマンドラインのツールのフロントエンドを作ろうとしたんですけど
Runwaitするとタイマーも割り込めないんですね…
Runの後にループでスリープしながら見張るのが無難でしょうか?
0164名無しさん@お腹いっぱい。 (ワッチョイ b663-dk4A)2017/10/05(木) 01:09:31.71ID:L8qoU5mE0
あれはキーダウンでラベルが呼び出されてから
keywaitでキーアップを待っているわけよ
0.3秒以内にキーアップがこなければ長押し
0.3秒以内にキーアップが来てそこから0.2秒以内にまたキーダウンが来たら2度押し
そうでなければ1度押し
0167名無しさん@お腹いっぱい。 (ワッチョイ 910e-wbjw)2017/10/05(木) 17:46:10.09ID:lN6wv7uW0
あるアプリにEditのコントロールがたくさんあります。50個くらい
これらのテキストをControlGetTextで取っているのですが
ひとつひとつクリックして選択してからGetしているので時間がとてもかかるのです
なので、このコントロールのメモリアドレスを取得することはできませんか
そうするとメモリから直接すべてのテキストを取得することができそうな気がするのですが
ControlGetTextでテキストを取得しているということは当然メモリにアクセスしているので
AHKはアドレスをゲットしているはずですね
一度すべてのEditコントロールのメモリアドレスをゲットしておけば以降はメモリアクセス
だけでゲットできるか考えているのですが
0171名無しさん@お腹いっぱい。 (ワッチョイ 414c-tu7H)2017/10/05(木) 19:01:28.37ID:pHsu3ccW0
説明を聞いたら分かりました。ありがとうございます!
「KeyWait,vk1Dsc07B,D T0.2」は0.2秒経過してもdownされてなかったらそのまま通すんですね。
そこが分かってなかったです。
0176名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)2017/10/06(金) 22:23:31.17ID:qJK6Bjjm0
>>172
Ctrl+通常キーの長押しは、ほぼこれでOKのようです。
同時押し時のすり抜けはまだ解決してませんが
今のところはキーの切り替え時に同時押しにならないようにすれば、
なんとかイケてます(^^♪
0177名無しさん@お腹いっぱい。 (ワッチョイ 0d87-BYga)2017/10/08(日) 06:34:31.46ID:QHNb58xD0
HHKBで単独のDelキーがほしいのでバッククォートに割り当てたんだけど
バッククォート自体の入力をCtrl+バッククォートでSendしたけどうまく出来ません。
対処方法を教えてください
0205名無しさん@お腹いっぱい。 (ワッチョイ 1a87-l8I1)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
0206名無しさん@お腹いっぱい。 (ワッチョイ 1a87-l8I1)2017/10/09(月) 11:57:38.06ID:HTLieya10
つづき

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

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

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

動作せず
@スクリプトの自動リロード
A現在日時をスタンプする
Bその他
0212名無しさん@お腹いっぱい。 (ワッチョイ 0567-XSap)2017/10/10(火) 02:32:14.41ID:EmIG0yKf0
controlsend,について質問があります
たとえば以下の記述でwindows標準のメモ帳なら動きます

ControlSend, , test, ahk_class Notepad

ただこの記述では動かないアプリが結構ありますが、そのアプリでも成功したりしなかったりの条件があります
testをControlSendするアプリケーションのウィンドウが前面にあり、アクティブ状態なら成功しますがウィンドウが最小化状態だと失敗します
なのでwinactivateで失敗するアプリのウィンドウをアクティブ化してからcontrolsendしていますが
失敗するアプリでもwinactivateなし、最小化状態でcontrolsendすることってできないもんでしょうか
0213名無しさん@お腹いっぱい。 (ワッチョイWW 75c6-cL45)2017/10/10(火) 08:00:37.48ID:fQ70ranb0
その質問過去に何度も見てるけど解決したところは見たことない気がする
ただその質問する人ってほぼもれなくctrl空欄にしてるんだよね
まずは送りたいctrl特定してやってみて、できればハンドル指定で
バックグラウンド時にはcontrolフォーカス取れなくなるようなアプリなら効果あるかもしれないし
そこきちんと指定してやると結構精度上がるよ
0214名無しさん@お腹いっぱい。 (ワッチョイ 9577-wbjw)2017/10/11(水) 11:38:11.27ID:eCPj5mWL0
Process, Priorityで、AutoHotkey自身をAboveNormalに変更しようとしたのですが、
出来ないようです
でも、タスクマネージャーで手動では変更できます。 なぜでしょうか?
出来ないのですか? 自分で自分は変更できないのかな
0216名無しさん@お腹いっぱい。 (ワッチョイ 765c-CJQv)2017/10/11(水) 17:53:01.10ID:FW7ud3JO0
SetBatchLines, -1にして、数千行のバッチ処理をしている方って居ます?
最近AHKをアップデートしたんですけど、SetBatchLines, -1にしても昔の様に失敗しなくなったみたいなんです
もしかして修正でもされたのかな
0218214 (ワッチョイ 9577-wbjw)2017/10/11(水) 21:21:43.67ID:eCPj5mWL0
>>217
失礼しました。私のとんだ勘違いでした。 私のスクリプトは
Process, priority, ahk_exe AutoHotkey.exe, AboveNormal
としていました
ahk_exeを外したら出来ました
0220名無しさん@お腹いっぱい。 (ワッチョイ 0157-C/uf)2017/10/12(木) 12:40:14.52ID:fl4Aa2dU0
すみません
エクスプローラで選択しているファイルをあらかじめ指定したプログラムで起動したいのですが、
選択しているファイルのパスを取得するにはどうすればよいでしょうか?
0222名無しさん@お腹いっぱい。 (ワッチョイ 7b9c-C1Wt)2017/10/12(木) 14:30:20.01ID:WOPpKOf60
目的から考えると、Windowsの機能としてある右クリックメニューの「プログラムから開く」とか「送る」で出来るようにしておいて、
それをAutoHotkeyでキーを送って自動化すれば良いような。
0223名無しさん@お腹いっぱい。 (イルクン MM63-/woM)2017/10/12(木) 15:31:51.36ID:gbYEcDhtM
昔ここでcomだかアクティブXだかでエクスプローラからファイル情取得するコードで盛り上がってた記憶あるけど
OSバージョンアップのたびにエクスプローラも様変わりしてるから今でも使えるかはわからんね

そもそも質問者の環境書いてないし
汎用で使いたいならクリップボードからパス拾うのが無難かと
0224名無しさん@お腹いっぱい。 (ワッチョイ 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になってしまいます。
どなたかお助けを
0225220 (ワッチョイ 0157-C/uf)2017/10/12(木) 18:30:17.45ID:fl4Aa2dU0
220です
クリップボード経由で思惑通りの動作できました
ありがとうございます
0226名無しさん@お腹いっぱい。 (ワッチョイ 59c6-B6a6)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
0229名無しさん@お腹いっぱい。 (ワッチョイ 59c6-B6a6)2017/10/12(木) 23:43:42.76ID:hFLP6ZS00
その機能とやらは MButton:: +LButton でできる機能とは違うのかえ?
OSバージョンによって挙動違うかもしらんから正しく再現できてるかもわからんが
win8ではおなじ挙動になってるようだが
0230227 (ワッチョイ eb03-/6Uq)2017/10/13(金) 01:10:48.45ID:3xeDM7QO0
>>228
一部効かないのもあるけど、割と昔からあるっぽいWindows標準の操作みたい。
俺も最近知りました。

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

最初に試したのが、Live5chでスクロールバーをShift+ドラッグして、Shiftは押したまま維持、
Shiftを離すと、スクロール前の位置に自動的に戻ったから、Windowsにこんな機能があったのかと
思って他のソフトで試すと出来なかったからさっきの書き込みをした。
0232227 (ワッチョイ eb03-/6Uq)2017/10/13(金) 08:59:11.07ID:3xeDM7QO0
>>231
いきなりその場所に移動する機能のことですね。
Shift+ドラッグでShift離したら元の位置に戻るというのは見たこと無いですね。
0233名無しさん@お腹いっぱい。 (ワッチョイ 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と同じであり、これで取得できない情報はこのコマンドでも取得できません。」と記載されていたのでこれが原因なのかなと思いました。
長文失礼しました。
0235名無しさん@お腹いっぱい。 (ワッチョイ f17d-z1uI)2017/10/13(金) 14:39:55.15ID:Kmc31x970
233です。
>>226
なるほどーーーーーーーーーーーーーーー
完全に私が勘違いしてました。質問自体が正しくありませんでした。

下記画像の「大文字と小文字を区別する」の文字列を取得するにはどうしたらよいですか?
https://imgur.com/a/DVFmh
0239名無しさん@お腹いっぱい。 (ワッチョイ 59c6-B6a6)2017/10/13(金) 22:33:16.76ID:trCb60PR0
解答してた身として言わせてもらうがエスパー要求度高すぎやでw

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

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

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


>>241,245
Keyhacスレ作ってそちらでヤレ
0251名無しさん@お腹いっぱい。 (ワッチョイ 8bec-PRAU)2017/10/18(水) 01:07:39.70ID:BXsLEC/o0
UpDownのRangeですが、小数点以下の数値は出来ませんか。
以下の様にしても、5から10までの5段階になってしまいます。
Gui, res:Add, UpDown, Range5.0-10.0
よろしくおねがいすます。
0254名無しさん@お腹いっぱい。 (ワッチョイ 8b5c-PRAU)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,^,\,@,[,],:,/,*

上記処理をする時にカンマとセミコロンを含めたいのですが、上手くいきません。
よろしくおねがいします。
0256名無しさん@お腹いっぱい。 (ワッチョイ 4ae0-h3yZ)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では一切機能させなくてもいいのですが、どうしたらいいでしょうか。。
0261名無しさん@そうだ選挙に行こう! Go to vote! (選挙行ったか?WW 55cf-FO98)2017/10/22(日) 19:36:09.31ID:Dcuxbaqr0VOTE
>>260
あれれ、ウィキ見直したら確かに混在してる…表組みのほうはスペースなしで例示されてて、コード用例ではスペース入ってますね
でも自分の場合、今まで不要なShift押下げが発生してた(どうやらShiftとUpとが発生していた?)のがスペースなくすことによってスッキリ根絶されたので、ううむ謎です
0263名無しさん@お腹いっぱい。 (ワッチョイ c5c6-bcII)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
0264名無しさん@お腹いっぱい。 (ワッチョイ a567-bcII)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 の結果が返ってきます。
考えられる要因を教えてくださるエスパーの方、いらっしゃいましたら。。。(;´Д`)
0272名無しさん@お腹いっぱい。 (ワッチョイ 4ae0-h3yZ)2017/10/25(水) 17:03:51.19ID:ypp7UERA0
>>263
ご返信賜り誠にありがとうございます。
なんだと言われてしまいそうですが、setpointにスムーズスクロールがあり
それをoffにすることで、何十ノッチも発生することはなくなりましたが、挙動がおかしかったため
setpointをアンインストールし、無事解決しました。
一部機能を使ってましたが、autohotkeyでまかなえますし!

firefox quantumのタブスイッチのため、autohotkeyを導入しましたが
ztopをやめて、一本化出来ました。
ありがとうございました。
0273名無しさん@お腹いっぱい。 (オッペケ Sr9d-jjEd)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に削らないとマッチしませんでした
0274名無しさん@お腹いっぱい。 (オッペケ Sr9d-jjEd)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です
0275名無しさん@お腹いっぱい。 (ワッチョイ a90e-ZNPd)2017/10/27(金) 20:04:09.15ID:EJJiT1eZ0
AHKのエディタですが
Notepad++
サクラエディタ
秀丸エディタ
EmEditor
sublime
などがあるようですが、これらの中で、ラベルやホットキーへジャンプ出来るものは
どれですか
SciTEではラベル名を選択してF12を押すとラベルの個所へジャンプしてくれるし
ホットキーのリストも表示してくれるのですが、同じ機能を持っているエディタは
どれでしょうか
ちなみに、秀丸ではなさそうでした
0277名無しさん@お腹いっぱい。 (ワッチョイ d1c6-nu9H)2017/10/28(土) 01:37:13.87ID:3WINCwSX0
AHKはメジャー言語ではないので大抵のエディタではデフォルト対応はしていないと思う
AHK用のプラグインなりカスタマイズなりが必要になるのでは

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

他のエディタも大抵はctags使えるみたいだし ctags形式のタグファイル吐き出せるスクリプトさえ書けば
お好みのエディタでダイレクトタグジャンブできるようになると思われ
0279名無しさん@お腹いっぱい。 (ワッチョイ 6b67-Akqv)2017/10/28(土) 02:09:08.35ID:kOR4GWlf0
DPIが高すぎるとMouseGestureLのジェスチャーツールチップが小さくて見えない & RR、LL、UU、DDのピクセル数判定が緩くなっちゃうのだけど、これってなんとかなんない??
0280名無しさん@お腹いっぱい。 (ワッチョイ 1177-ZNPd)2017/10/28(土) 06:26:09.85ID:Ctf6COgz0
>>276-278
秀丸エディターで、AutoHotkey_L.hilight、AutoHotkey_L.txt は入れています

タグジャンプですが、tagsファイルの作成でする方法と、Exuberant Ctagsを使ってプログラム実行でする方法を
やってみましたが、AHKには対応していませんでした。 ラベルは認識されません
ちなみに使い方が違うのかと思って、cppファイルで試してみましたがこちらは関数等はちゃんと認識されていました
ということで、ahk用には何か別の専用スクリプトとか用意しないとダメなようです
0281275 (ワッチョイ 1177-ZNPd)2017/10/28(土) 06:33:37.89ID:Ctf6COgz0
秀丸エディターではダイレクトジャンプを選ぶとgrepで探すというのがあるので
当分はこれでしますか
0283279 (ワッチョイ 6b67-Akqv)2017/10/28(土) 13:24:55.08ID:kOR4GWlf0
よく考えたらマルチディスプレイで高DPIと通常DPIのディスプレイが混在しているとジェスチャーの判定もおかしくなるしもうだめだ/(^o^)\
100px移動でジェスチャー判定していたとしたら、200%スケールしているディスプレイでは200px移動に変えないと実態としてずれる。
アドバンスナビのほうもソースコード見てみたけど辛うじて描画領域確保しているのがわかるだけでフォントが小さく表示される原因がわからん・・・
0284275 (ワッチョイ 1177-ZNPd)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で協調文字の種類を決めているのはわかるのですが、タグの生成にも関わっているとか
いろいろとめんどくさいそうですが、タグ生成用のためのファイルは出来そうです
あとは、スレチなので、秀丸さんの方で聞いてきますか
0285名無しさん@お腹いっぱい。 (ワッチョイ d1c6-nu9H)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)
0286275 (ワッチョイ 1135-ZNPd)2017/10/28(土) 20:25:45.14ID:g6R5313m0
>>285
わざわざありがとう。DLして参考にさせてもらいました
hilightファイルの構造がどうなってるのかググっても良くわからなかったので試行錯誤してやるしかないです
でも目的はtagsファイルを作ることなので、tagsファイルは中を見ると構成が簡単そうなので、直接外部アプリ(DosやGnu)で
tagsファイルを作成することを考えてもいいかなとも思ったのですが、助かりました
0287名無しさん@お腹いっぱい。 (ワッチョイ d1c6-nu9H)2017/10/28(土) 21:30:38.60ID:3WINCwSX0
ごめん.hilightの中に構造説明のコメント付けてたんだけど長くなるので削っちゃった
秀丸エディタマクロヘルプのloadhilight文の項に強調定義フラグの意味が載ってるので
興味当たったら調べてみて下さい
0288275 (ワッチョイ d1ad-ZNPd)2017/10/29(日) 06:33:32.61ID:QNF+jVue0
>>287
マクロヘルプのloadhilight見てきました。ありがとう。こんなところに書かれても見つからんわw
でも良くわかりました。 あとはColorSetだな
0289275 (ワッチョイ d1ad-ZNPd)2017/10/29(日) 06:41:23.64ID:QNF+jVue0
>>287
ColorSet、こちらもわかりました。 マクロヘルプのconfigcolorにありました
頂いたahk20171028.hilightのColorSetのコメントの意味はこれだったのですね
これでもうほぼ理解できました。ありがとうございました
0290名無しさん@お腹いっぱい。 (ニククエ 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
}
0291名無しさん@お腹いっぱい。 (ニククエ 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

この様に書いたらエクセル、ワード、パワーポイントまではうまくいったんですが、メモ帳だけうまくいきません。どうかご教授を。
0294名無しさん@お腹いっぱい。 (ニククエ 497d-xXVv)2017/10/29(日) 16:17:30.91ID:KzWRlc+C0NIKU
>>293
ありがとうございます。スッキリしました。
0295名無しさん@お腹いっぱい。 (ニククエ 536a-Akqv)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にあることは確認しています。
どうか御教授お願いします。
0296名無しさん@お腹いっぱい。 (ワッチョイ 894c-tN/E)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させているのですが、もっとうまくできないかと。
0298名無しさん@お腹いっぱい。 (ワッチョイ 6b67-vjyX)2017/10/30(月) 10:16:54.38ID:vMir4n9d0
>>296
どれもブラウザ依存だからAHK側からは基本ムリ
ブラウザ側で設定したり、ショートカットキーやコマンドラインオプションをAHK側から利用するしかない

ブラウザ側でできないなら、(1)は検索する前にエディタを最前面固定するといくらかマシに見える
(2)(3)は諦メロン
0301名無しさん@お腹いっぱい。 (ワッチョイ 536a-Akqv)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などを考えるとわかりません。
サーチが不足しているかも知れませんが、どうかお助け願います。
0303名無しさん@お腹いっぱい。 (ワッチョイ 1367-xXVv)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
0305名無しさん@お腹いっぱい。 (ワッチョイ 1367-xXVv)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
0306名無しさん@お腹いっぱい。 (ワッチョイ d1c6-nu9H)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
0307275 (ワッチョイ d172-ZNPd)2017/10/31(火) 16:35:05.33ID:zqELyNoa0
SysListView32ですが、値をとってくるのはGetContorolを使えば出来るのですが
リストの任意の場所の値をセットすることって出来ますか
今はその場所へmousemoveでカーソルを移動してクリックさせて
Sendで値を入れるみたいなことをリストのひとつひとつにしているのですが、時間がとてもかかります
0310名無しさん@お腹いっぱい。 (ワッチョイ 690f-Zqv1)2017/11/01(水) 13:04:59.67ID:oLVxkSWa0
新しいPCでahkファイルへのD&Dで引数が正常に取れないと思ったら8.3形式のファイル名が無効になってた
Win10ではシステムドライブ以外のフォーマットは8.3形式のファイル名の無効がデフォになったのかな?
0311名無しさん@お腹いっぱい。 (ワッチョイ 536a-Akqv)2017/11/01(水) 22:15:18.71ID:0XbH3Oow0
>>302
解決しました。指摘通り単に一回目がSend {w down}...etcで動作しました。
動作チェックがテキストエディタ上のみで、またその挙動が物理キーを押し続けた場合と違ってwがリピートされなかったため、
仕様を誤認していました。混乱させてしまい申しわけありませんでした。
アドバイスくださった方々、ありがとうございました。
0312275 (ワッチョイ 819b-8/j8)2017/11/02(木) 11:23:34.64ID:F6tfVhm+0
AHKで、任意のウインドウのWinTitleを変えることって出来ますか
0314名無しさん@お腹いっぱい。 (ワッチョイW 9987-IwaZ)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以外ほとんどやった事がないです。
0317名無しさん@お腹いっぱい。 (ワッチョイW 9987-IwaZ)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
)
```
0318名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)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
0321名無しさん@お腹いっぱい。 (ワッチョイ 416c-B8tQ)2017/11/03(金) 16:58:12.94ID:oAKaFRrm0
>>318
少し試してみた感じだと、Tooltipの内容をタイトルとして取得できるのは同一のプロセス内だけっぽい?
AWIは別スクリプトだから取れてないのかと

あとExcludeTitleにはahk_??は使えなかったような
0324名無しさん@お腹いっぱい。 (ワッチョイ 2e4c-eyvs)2017/11/03(金) 17:45:24.63ID:AEQ8+teS0
>>318
WindowSpyがTooltipの内容をタイトルとして拾えないのは昔から仕様扱いだったと思う。
ahkとWindowSpyの両方から全く同じコードでGetWindowText()を呼び出しても、
ahkからしか取得できないので、OSの仕様じゃねーの?という扱いだったような。
ahkのcppソースのコメントにWM_GETTEXT()とGetWindowText()のどちらを使うかってのが説明してあって、
WindowSpy改造すればタイトルとして取得できるけど、問題のほうが多そうということで仕様扱い。

まあ、tooltipにはタイトルなんてない、で誰も困らないような。
0325名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)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になっちゃうから
0327名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)2017/11/03(金) 18:25:55.44ID:l+MEYLy90
>>326
WinGetで取る前にtooltip非表示にして取ってから
再度表示にする、ということですね
非表示にすると取らなくなるのかな
でも可能性はありますね
でもなあ、ExcludeTitleが使えたら解決するんですけどねえ

ahk_XXのときは使えないとか、なんでやねんw
今日は疲れました
0328名無しさん@お腹いっぱい。 (ワッチョイ 4585-8/j8)2017/11/03(金) 18:37:53.97ID:l+MEYLy90
>>324
>まあ、tooltipにはタイトルなんてない、で誰も困らないような。

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

ほんとこれこそちょっとしたTIPSになりましたw
0330名無しさん@お腹いっぱい。 (ワッチョイ 6e67-PBuy)2017/11/05(日) 14:42:30.14ID:lmZ+8dDx0
>>325
俺も似たようなことやってるけど
「アクティブウィンドウ:t1」みたいに表示させてたおかげで無自覚回避できてたようだな

というか真面目な話、バグとして報告していい案件なんじゃないの
0331名無しさん@お腹いっぱい。 (ワッチョイ 2ef3-vvLB)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)。
となっており、「一番最初(前面)」というのは必ずしも「アクティブ」とは限らないと思うんだが…

間違っていたらスマン
0332名無しさん@お腹いっぱい。 (ワッチョイ 2e4c-eyvs)2017/11/06(月) 08:39:10.84ID:+3FFCnlR0
1.app1というアプリが起動してあり、さらに
2.tooltipにapp1と表示させてた状況で
3.WinGetでタイトルがapp1のappを釣ろうとしたら、tooltipの中身のほうにひっかかった
という話でしょ。
0341名無しさん@お腹いっぱい。 (ワッチョイW c96c-u3Qf)2017/11/08(水) 21:20:19.90ID:Aynw/XIa0
aaa()
{
実行文字列
}
で読み込んだ関数が

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

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

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

あまり恥ずかしい内容なので中身を詳しく書けませんが
原因として考えられることがあれば教えてください
0344名無しさん@お腹いっぱい。 (スフッ Sd9f-/Tad)2017/11/10(金) 00:56:44.09ID:far4pfand
1つの処理だと問題ないんですが
a::
の中と

b::
の中に
同じ処理を入れようとすると
Duplicateエラーが出るのは同じ関数を使っているから?
対応策はありますか?
0350名無しさん@お腹いっぱい。 (ワッチョイ 7f87-cd7v)2017/11/10(金) 18:23:39.05ID:a1txFjAv0
>>349
ホットキーが無視されてしまいます。v1.1.26.0.1でも同様です。キーをフックする優先順位がAHKよりも高いような印象です。
皆様はいかがでしょうか?
最近、海外のソフトでは案外ひんぱんに経験します。AHKを管理者権限でインスコすればいいのかな?
0355名無しさん@お腹いっぱい。 (ワッチョイ 7f87-cd7v)2017/11/10(金) 19:04:38.60ID:a1txFjAv0
>>352
私はいわゆるSpaceFNをやっていまして、それがSpace押下でSpaceが入力されて困っていました。
何故外国のマイナーなソフトだとこういう現象が起きるのか不思議ですね。定番のソフトでは経験したことありませんでした。
0356名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)2017/11/10(金) 22:15:32.90ID:Oslygo4n0
windows APIのABM_SETSTATE messageを使って「タスクバーを自動的に隠す」をオンにしたいのですが、 APPBARDATA構造体のlParamメンバーには何を入れればいいのでしょうか?また、hWndメンバーに入れるのはタスクバーのハンドルということでいいのでしょうか?
0358名無しさん@お腹いっぱい。 (ブーイモ MM0f-mI+x)2017/11/11(土) 07:52:33.31ID:IBbBqaBiM
>>357
よろしければ出典を
0359名無しさん@お腹いっぱい。 (ポキッー fff3-zaIK)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
}
0361名無しさん@お腹いっぱい。 (ポキッー ff67-XY/E)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 ポップアップメニューの情報を得る

昔はテンプレにあったんだがいつの間にか消えてたんだな
0362名無しさん@お腹いっぱい。 (ワッチョイ 5fab-9JVD)2017/11/12(日) 12:55:49.04ID:8syapqkm0
ジョイスティックの傾き検出して逆にキーボード操作に置き換えるスクリプトが出来たけど需要ある?
G13使用とかでジョイスティックの傾きで歩き、走りを検出できるようにしたもの
Fallout4用に作ったけどジョイスティックが使えないゲームとか、他にも応用が効くはず
あるならうpします
0368名無しさん@お腹いっぱい。 (アウアウオーT Sa7f-0rpk)2017/11/12(日) 21:23:05.65ID:PxES/4Ifa
この設定ってAHKで実現できますかね..?
https://qiita.com/hakomo/items/a19eb4b08bc2b3aa1533
緑文字の「Ctrlキーと(SandSの)Shiftキーを押しながら」のところが実現できるのか...
0369名無しさん@お腹いっぱい。 (ワッチョイ 5fab-QNbI)2017/11/12(日) 21:24:18.65ID:0k5Ffqyx0
JTKで出来るのになんでこんなもの作ったのかというと
JTKの特殊入力のアナログレベルによって切り替えるってところに不満があったから
多分、座標のXYの傾きだけで長方形判定してる。斜め入力時のときに誤操作が起きるって理由から
コッチは半径を求めてそれを目安にすることにした
それと内部的にキーおしっぱループの処理がわかってないのが怖い、連打してるかもしれないから
なので作った
0370名無しさん@お腹いっぱい。 (ワッチョイ 5f87-p++X)2017/11/12(日) 21:28:02.68ID:PRQr2sD50
>>361
ありがとうございます。もう少し調べてみます。
0377名無しさん@お腹いっぱい。 (アウアウカー Sad3-6BAZ)2017/11/13(月) 00:16:44.83ID:jtVf8kaUa
三角関数とか半径計算とか思いつかなかったしめんどくさいことを代わりにやってくれただけでも俺としては助かったか
これだけあれば無理にバージョンアップしなくてもええで
軸情報さえ与えればいいからな
GPDwin用に使わせてもらうわ
0378名無しさん@お腹いっぱい。 (ワッチョイ 5f67-0ibl)2017/11/13(月) 01:55:06.59ID:9Yyb7OWG0
Menuで出すホップアップメニューがたまに外クリックしても消えなかったりするんだけど対策とかある?
0382名無しさん@お腹いっぱい。 (ワッチョイ 5f6c-0Bkx)2017/11/13(月) 11:33:02.31ID:MpwXGRWu0
使ってたフリーソフトがたびたび落ちるから、似たようなの自作して安定してたけど
元がmigemo対応してたんで、こっちにも組み込んでみたら落ちるようになったつらい
0386名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)2017/11/13(月) 17:54:41.25ID:fTwFmDsma
なぜそうしたいのかなんて書く必要ねーからだろアホ
0387名無しさん@お腹いっぱい。 (アウアウエーT Sa7f-yEAn)2017/11/13(月) 17:56:04.52ID:fTwFmDsma
質問に答えねーでケチつけるだけのゴミがでてくることこそあるある
0392383 (アウアウエーT Sa7f-yEAn)2017/11/13(月) 20:15:26.75ID:fTwFmDsma
>>389
すいませんその方法も使えないんです。
>>391
そうですソフトウエアホットキーを使いたいということです。
ですが#usehookや$がないと無限ループがおこるとかリスクがあるみたいなのでもう少し調べてなかったらあきらめます。
ありがとうございました。
0399名無しさん@お腹いっぱい。 (アウアウエーT Sa0a-KWQn)2017/11/18(土) 01:29:01.86ID:/66QZllda
だいぶ説明不足でしたすいません。
3つの数字は常に変動してて、ホットキー押したときにそのとき一番大きい値のを選択するってことがしたいです。
ifを沢山書けばできるけど一行でやる方法ないかなあと調べたのですが分からず。
一つ増えまして4つで比較ができればいいのですが。
0400名無しさん@お腹いっぱい。 (ワッチョイ e187-8CrJ)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で書いといたほうが視認性はいいんじゃないかな
0403名無しさん@お腹いっぱい。 (ワッチョイ 4156-ijJr)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
0407395 (アウアウエーT Sa0a-KWQn)2017/11/18(土) 17:29:00.55ID:9x5Xxm/fa
>>400
>>403
>>405
おー、すごい
できるようになりましたありがとうございました。
ahkを一年以上使ってるけどwiki読んだり検索して似たようなことやってる人のスクリプトを見てもわからなくてちょっと改変して移植もできない場合が多すぎて自分のポンコツぶりが悲しいw
0409名無しさん@お腹いっぱい。 (ワッチョイ 41c6-RjUU)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%
0411名無しさん@お腹いっぱい。 (ワッチョイ 4156-ijJr)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

こちらの入力待ちになるまでの処理は色々なやり方があると思う
0413406 (HappyBirthday!WW 9209-xFaz)2017/11/20(月) 09:16:01.49ID:r9poHEzN0HAPPY
いろんなご意見ありがとうございます!

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

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

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

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

高速でControlSendを使うと
キーボードからの入力がたまにロックされて使えなくなってしまうことがあったので
COMオブジェクトで直接読み書きできるならそれにこしたことないですね
0414名無しさん@お腹いっぱい。 (ワッチョイ f987-ijJr)2017/11/22(水) 03:26:57.07ID:DaaBsnMY0
キーの長押しすり抜け病って修正されてるのかな?
未だなら早よ!
これがちゃんとできないとカーソル移動とか怖くてAHKは使えないんだよ
致命的な不具合だ!
0416名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)2017/11/23(木) 11:33:48.10ID:IP8Uaqwm0
>>415
こんなポンコツよく使ってると感心する 信じられないw
もちろんこれがゆえにkeyhacに移行したわ!
0419名無しさん@お腹いっぱい。 (ワッチョイ df8e-067h)2017/11/23(木) 14:25:49.30ID:ekf0KvoP0
>>416
>>246
0421名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)2017/11/23(木) 21:58:00.87ID:IP8Uaqwm0
本当にAHKは使いもんにならんのよ!
キーログを見るツールとかを立ち上げてAHKの動作を確認したんだが
スクリプトがまともに動かんのよ、ダメだろこれは!
ちゃんとフックできてないんよ、笑うわw
0426名無しさん@お腹いっぱい。 (アウアウエーT Sa1f-9XXY)2017/11/24(金) 00:28:07.79ID:VrzeCVMba
             /ヽ       /ヽ
            / ヽ      / ヽ
  ______ /U ヽ___/  ヽ
  | ____ /   U    :::::::::::U:\
  | | ハサミ が  // ___   \  ::::::::::::::|
  | | 使エネーヨ |  |   |     U :::::::::::::|
  | | ヽ(`Д´)ノ.|U |   |      ::::::U::::|
  | |  >>421  | ├―-┤ U.....:::::::::::::::::::/
  | |____ ヽ     .....:::::::::::::::::::::::<
  └___/ ̄ ̄      :::::::::::::::::::::::::|
  |\    |           :::::::::::::::::::::::|
  \ \   \___      ::::::
0427名無しさん@お腹いっぱい。 (ワッチョイWW 07c6-ZBcO)2017/11/24(金) 00:40:22.15ID:2kxbHRR30
いうても困らない範囲内でしか使ってないからなあ
そもキーリピート発生するキーをホットキー長押ししようとは思わんし
ahkは名前こそAutoHotkeyだがキーカスタマイズだけが目的なソフトじゃないしな

ウィンドウ制御とかいらんならahkである必要性は薄い
ソフトによって得手不得手あるんだし自分の目的に合ったもん使えばいいよ
0428名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)2017/11/24(金) 05:53:07.19ID:nG64IX5N0
GUIについての挙動についてです
GUI,Add, GUI,Showなどで作ったウインドウ上でスペースキーを押したときの挙動
ってどこかに書いてあるでしょうか
このときに別の挙動をするように、
#IfWinActive
でこのGUIがアクティブになったときに
Space:Msgbox TEST
としても反応しないのです
で、このGUIウインドウ上でアクティブなボタンが実行されます
GUIがアクティブのときにSpaceキーで別の挙動をするようにする方法を
教えてください
0429名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)2017/11/24(金) 05:59:36.57ID:FhfG+MVc0
AHKでは長押しカーソル移動がまともにできませんよ
ソースコードをテキストエディタで開いてカーソル移動したら
意図しない文字が入力されてしまうなんて怖くて使えませんな
0430428 (ワッチョイ 0777-+V5r)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
0437名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)2017/11/24(金) 12:58:05.32ID:RTDitcQE0
ネットワーク上にあるファイルをFileCreateShortcutでショートカット作りたいんですが、
処理が異常に遅いんですけど、10秒くらいかかるんですけど、何か対処法
知っていたらご教授お願いします。
0439名無しさん@お腹いっぱい。 (ワッチョイ a77d-DWFp)2017/11/24(金) 13:33:56.53ID:RTDitcQE0
>>437です。
自己解決したので報告します。
FileCreateShortcut, "%filePath%", %shortcutName%
といった具合に%filePath%にはダブルクオーテーションを付ける。
以上です。
0441名無しさん@お腹いっぱい。 (ワッチョイ 7ff3-Iy5Q)2017/11/24(金) 14:55:45.26ID:uBW3Ah/90
>>431
自分は>>249じゃないが>>136試してみたら確かに"すり抜け"っつうのは発生した
例えばメモ帳でctrl押しながらhを押しっぱなしにして十数秒〜数十秒そのままにしてると
文字の「h」が入力されたり「置換」ダイアログが現われたりした
win7 32bit home ahk 1.1.26.01

自分はこんな操作しないから困らないな
0443名無しさん@お腹いっぱい。 (アウアウカー Sadb-d0L7)2017/11/24(金) 15:59:58.59ID:hNkbZ/Nua
>>442
俺が引っかかった事例としては関数呼び出しのときにエラー吐いたり、文字化け起こしたり、ファイルの保存形式によってはそのまま貼るとエラー吐いたりして二度手間になったり、コンパイルする時エラー吐いたりした
0444名無しさん@お腹いっぱい。 (ワッチョイ 6785-+V5r)2017/11/24(金) 16:50:37.32ID:MGSGyO6j0
GUIのボタンです
Gui,Add,Buttonで作ったボタンの色を変えることは出来ますか
Gui, Color, Red, Blue
とかやってみたのですが、ウインドウの背景は変わってもボタンの色が
変わりません
ボタンはひとつづつ個別に色を変えたいです
オプションのBackgroundもやってみたのですが、良くわかりません
Cnもボタンのテキストの色が変わりません
0446名無しさん@お腹いっぱい。 (ワッチョイ 07c6-5mWG)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
}
0447名無しさん@お腹いっぱい。 (ワッチョイ 5f56-sSls)2017/11/25(土) 01:07:14.55ID:g6gRHPWN0
憶測だけど GetFileName が UTF16 じゃなくて CP932 で返すんでしょ。だから U32 を使ってそのまま使おうとすると文字化けする
DllCall した後に、StrGet(buf, "cp932") すればいいんでない
0450名無しさん@お腹いっぱい。 (ワッチョイ 5f67-cO/U)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
0452名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)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
}
みたいな技って使えませんか。これではダメだと思いますが。スクリプト生成まではやってくれないのでしょうか
0455名無しさん@お腹いっぱい。 (ワッチョイWW 27ec-ZBcO)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
0456名無しさん@お腹いっぱい。 (ワッチョイ 0777-+V5r)2017/11/25(土) 12:39:03.92ID:lMhgyyaw0
>>455
なるほど、A_thisLabelを使うというのは思いつきませんでした
ちょっとやってみましたが、これは使えそうです
それと、temp.ahkを出力するやり方ですが、これもインクルードファイルを自動生成させて
それを読み込ませるという方法が出来そうですね
ahkがインクルードファイルを読み込むタイミングを確認する必要がありそうですが
ちょっと期待できそうですw
インクルードファイルがなければ自動生成させてreloadで再実行し、ファイルが出来てれば
自動生成処理は飛ばすとか
0464名無しさん@お腹いっぱい。 (ワッチョイ 7fe0-DWFp)2017/11/26(日) 08:14:54.78ID:Dha5Tkpk0
ホットキーを押したら特定の変数をリストビューに追加する事って出来ますか?
リストビュー初期化時にLV_Addで追加する事は出来たのですが、リストが作られた後に追加する方法が分かりません。
0465464 (ワッチョイ 7fe0-DWFp)2017/11/26(日) 08:25:47.32ID:Dha5Tkpk0
自己解決しました。
LV_Addで変数を%で囲ったらダメでした。外したらいけました><
0466名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)2017/11/26(日) 20:16:06.88ID:dJtA2dZF0
現在のCoordModeを参照する方法ってありますか?
関数内でのみScreenにしたいのですが。
0468名無しさん@お腹いっぱい。 (ワッチョイ 0767-DWFp)2017/11/26(日) 20:57:46.19ID:dJtA2dZF0
A_CoordModeToolTipみたいな感じなんですね
A_CoordModeだけで試してて「出ないじゃん」とか思ってました
ありがとうございます
0469名無しさん@お腹いっぱい。 (ワッチョイ 5ff4-DWFp)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きちんと動いたのが謎ですが・・
0470469 (ワッチョイ 5ff4-DWFp)2017/11/27(月) 19:56:01.38ID:EWIA3ZBQ0
すいません、
Win10 + Visual Studio community 2017 も
管理者権限だとAHKは動かなくて
管理者権限でないとAHKが動きました。
これは何なんだろう
0471名無しさん@お腹いっぱい。 (ワッチョイ 4787-sSls)2017/11/28(火) 01:35:37.31ID:mrDQFh/p0
確実にAHKがダメだから
この際、keyhacに乗り換えるのが賢明、時間が勿体無い
0473469 (ワッチョイ 5ff4-DWFp)2017/11/28(火) 03:26:21.76ID:xNQcaR7I0
KeyHacも試してみましたが、こちらもやはり
Visual Studioを管理者権限で実行するとキーリマップが効かないみたいですね・・
0477名無しさん@お腹いっぱい。 (ワッチョイ 0735-+V5r)2017/11/28(火) 14:03:02.90ID:marODPdK0
ウインドウのハンドルを取って来て、そのウインドウ上に絵を描くことって出来ますか?
Dll等を使っても構いません

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

AHK以外でも、もしそういうことが出来る方法をご存じなら教えてください
0478469 (ワッチョイ 5ff4-DWFp)2017/11/28(火) 16:51:01.37ID:xNQcaR7I0
>>474
ありがとう!解決しました!
おっしゃる通りAHKを管理者権限で実行したらVisualStudioでもきちんと動きました
0480名無しさん@お腹いっぱい。 (ワッチョイ 5f67-cO/U)2017/11/28(火) 19:00:19.64ID:mbteePMb0
>>477
WinGetでハンドルが取れる
WinGetPosでウィンドウのサイズと位置が取れる
Guiでウィンドウにかぶさるようなウィンドウを作ったり画像を表示できる
WinSetでウィンドウの表示領域や透明度をいじれる

こんなとこ?
0481477 (ワッチョイ 0735-+V5r)2017/11/28(火) 19:47:20.21ID:marODPdK0
>>480
とってもいいヒントを頂きました。ウインドウに直接描画するのではなく、別のウインドウを作って
それにお絵かきして上に載せるということですね。で、WinSetで表示領域を加工するとか
ちなみに、AHKのGUIで、ツールチップのようにタイトルとか枠とかのないほんとにプレーンなウインドウって
作れますか
0482名無しさん@お腹いっぱい。 (ワッチョイ c756-QHFH)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するとかの必要があればそれも考慮する必要あるかな
0489名無しさん@お腹いっぱい。 (ワッチョイ 5e7f-H0p+)2017/11/30(木) 17:17:53.07ID:JYsA73zK0
1.MouseGetPosでマウス下のコントロールを取得できる
2.SetTimerで常にマウス下のコントロールを監視
3.取得したコントロールにControlFocus(必要に応じてWinActivateも追加)でフォーカスを移す
でどうだろう。スマートではないが。
0492名無しさん@お腹いっぱい。 (ワッチョイWW 2a2e-DNVt)2017/11/30(木) 23:52:51.72ID:z9WhXSkf0
>>488
割りとかんたん。
タイマーでモニターしてマウスオーバーでウィンドクラスを取り続けて変数によけとく
変数内のウィンドクラスとマウスオーバーで取ったクラスが違ったらそのウィンドクラスをアクティベートする


以前作ったけどウィンドの順序が切り替わりまくってボツにした
0494名無しさん@お腹いっぱい。 (ワッチョイ 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になったり
するんで、もっといい方法ないですか?
ご教授お願いします。
0497名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)2017/12/02(土) 10:28:46.57ID:kgC/DzRO0
>>494です。
>>495
どうも、ファイルを選択してフォルダを開くメソッドが無いみたいなんですが、
どうでしょうか?
>>496
shellexecutehookを利用してキャプチャするにチェックをしても、別のプロセスで
フォルダーウィンドウを開くのチェックを外しても
Run, explorer `/select`,"%path%"
とすると、新規ウィンドウで開いてしまうみたいです。

あと報告です。
Clipboard := string
の後に
Sleep, 100
を入れたらNullになる症状が今のところ出ていません。
0498名無しさん@お腹いっぱい。 (ワッチョイ 59d1-Dirq)2017/12/02(土) 10:39:02.57ID:/oo7d0lg0
>>491
少し脱線するけど俺は「App=Device」というコマンドラインで再生デバイスを変更できるフリーソフトを使用してる
AHKとこれを組み合わせてポップアップを表示したりすればお望みのことが出来るんじゃないかな
環境によっては管理者権限で実行する必要がある
0499名無しさん@お腹いっぱい。 (ワッチョイ 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"
と記述したらできました!ありがとうございました!
0500名無しさん@お腹いっぱい。 (イルクン MM92-QUIW)2017/12/02(土) 12:08:48.75ID:TChgRzeMM
解決したみたいだから蛇足だけど起動中のエクスプローラ(qttab)と
ahkrun、ファイル名runで管理者権限の有無が統一されてなかったとか?
ファイル名runでだけ別プロセスにならない理由がよく分からんね
0501名無しさん@お腹いっぱい。 (ワッチョイ 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となっていた
のでこれが原因ではないでしょうか?
0502名無しさん@お腹いっぱい。 (ワッチョイ 6dec-Vvu7)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")
とか素人なりにやってみましたが、全くダメでした。
宜しくお願いします。
0511名無しさん@お腹いっぱい。 (ワッチョイ 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

どなたか解決策をご存知の方、ご教授お願いします。
0519名無しさん@お腹いっぱい。 (ワッチョイ 5987-L6cJ)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
0523名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)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?
0524名無しさん@お腹いっぱい。 (ワッチョイ 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
でエラーが出るんですよね〜。
理由がいまいち分かりません。
0525名無しさん@お腹いっぱい。 (ワッチョイ a68e-HgL3)2017/12/04(月) 09:57:59.55ID:ytS1hYKF0
Chromeで何十ページも開いて、特定の文字(リンクになってる)をクリックする作業をしてるんですが、自動化したいです
特定の文字をクリックする方法があれば教えてください。
文字の場所はばらばらなので、場所指定のクリックは出来ません。
0526名無しさん@お腹いっぱい。 (ワッチョイ 697d-9wPJ)2017/12/04(月) 16:44:32.30ID:x7eWud6V0
>>524です。
結局、その箇所だけjsで対応することにしました。
原因は今も分からずです。
お騒がせしてすいませんでした。
0527名無しさん@お腹いっぱい。 (ワッチョイ 5e7f-H0p+)2017/12/05(火) 15:13:33.43ID:8CvOUnVS0
>>525
1、最初に開くページをURLDownloadToFileでローカルにファイルとして落としていく
2、落としたファイルの中をLoop(file)、Loop,Readでループさせ、RegExMatch()で検索する
3、目的の文字列があったらRunでそのURLを開く
0529名無しさん@お腹いっぱい。 (ワッチョイWW 6dcf-Ovp+)2017/12/06(水) 10:06:45.47ID:WwbqM6o60
お知恵拝借したく…
getkeystateによってあるキーの押し下げ有無はとれますが そうでなく、「いま押し下げられてるキーを一覧で得る」ような方法はありますか?

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

よくわからんな
0538名無しさん@お腹いっぱい。 (ワッチョイWW 9f87-GgkZ)2017/12/08(金) 08:15:37.96ID:Uq10ElWI0
Photoshopでマウスホイールのみで拡大縮小しようとして

Alt Down
Scroll Up
Alt Up

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

これがすり抜け?
0539名無しさん@お腹いっぱい。 (アウアウカー Saeb-AsFQ)2017/12/08(金) 08:40:53.67ID:D3cQmZala
それそもそもの書き方がまずいんでは

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

Alt押し下げた状態でホイール操作を待つっていうスクリプト書かないと
0545名無しさん@お腹いっぱい。 (ワッチョイ bfa2-F7Qh)2017/12/08(金) 10:47:31.06ID:lDhAMoXF0
「ホイール離すを繰り返す」→そんなことはしてませんよ
なぜなら「ホイール離す」なんで動作は存在しないので

そもそも質問者が何をやろうとしてるのか分かって無さそうだけど
まあ>>538も端折らずに自分が書いたコードそのまま貼った方がいいと思うけど
0549名無しさん@お腹いっぱい。 (ワッチョイ 57c6-F7Qh)2017/12/08(金) 11:47:56.54ID:3CDYarjh0
AHKのすり抜け問題とは関係ないが
Photoshop CS6 環境設定 - 一般
Photoshop CC 環境設定 - ツール
にそれぞれ 「スクロールホイールでズーム」って項目あるよ
チェック入れとけばAlt押さなくてもホイールだけでズームできる
0551名無しさん@お腹いっぱい。 (トンモー MMbb-GgkZ)2017/12/08(金) 12:06:49.15ID:zf1T1yH1M
すみません、538です。
出先なので、コードはうろ覚えなのですが、
実際はシフトとアルトを押しながらホイールを回す動作をしたいです。

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

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

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

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

WheelUp::Send, +!{WheelUp}

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

>>539が言ってた「ホイール離す」は所詮そのレベルの勘違いだろうな
何を待つのかは未だによく分からんけど
0554名無しさん@お腹いっぱい。 (トンモー MMbb-GgkZ)2017/12/08(金) 13:08:08.94ID:2S31fZSzM
>>552-553
失礼しました。

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

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

Sleepを入れて色々時間を調整すると、入れない時よりも失敗の頻度は改善されました。が、完全には対策できていません。
0558名無しさん@お腹いっぱい。 (ワッチョイ 9f2e-tS3A)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キーが連打されることになる
0574名無しさん@お腹いっぱい。 (ワッチョイ b740-gcK6)2017/12/08(金) 22:32:51.68ID:fgs+Qvb60
amemiyaうっせ
0578名無しさん@お腹いっぱい。 (ワッチョイ 9f2e-tS3A)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じゃないにしてもホイール回してるか回してないかの取得スクリプトならあった
これでホイール離してる状態も取得できるな
0579名無しさん@お腹いっぱい。 (トンモー MMbb-GgkZ)2017/12/09(土) 23:24:41.40ID:8nqZo3FbM
>>558
質問者です。

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

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

アルゴリズムやコマンドの勉強にもなりました。これで長くAutohotkeyを愛用していけそうです。
重ねてお礼申し上げます。
0580名無しさん@お腹いっぱい。 (ワッチョイ 5745-LVSJ)2017/12/10(日) 15:50:48.28ID:Pqr6ID550
あるファイルがあったとして、そのファイルが書き換えられたとき、それをトリガーにある処理をしたいのです
どうしたらいいでしょうか
タイマーで1秒おきとかにファイルのプロパティーを見ながら日付の変更確認とか、そんなことをしないと
いけないのですか?
0585名無しさん@お腹いっぱい。 (ワッチョイ 5745-LVSJ)2017/12/11(月) 21:58:26.99ID:jRSbSjCy0
v = aaatttaaa aは文字、tは数字
となっているとします。文字の長さ、数字の桁数は別に3ということではなく任意です
この変数vから、数字のtttだけをとってくるにはどうしたらいいでしょうか
RegExMatch()とかを使うのですか。 かなりややこしくなりそうですが
0587名無しさん@お腹いっぱい。 (ワッチョイ 5745-LVSJ)2017/12/11(月) 22:23:28.76ID:jRSbSjCy0
すいません。これで出来ました
NewStr := RegExReplace( ttl, "[^0-9]+", "")

これでいいのかな。 一応、確認したところ出来ていそうです
数字の0-9ってなにか\を使った記法ってあったような
0589名無しさん@お腹いっぱい。 (ワッチョイ 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では、そもそもブラウザ上に展開したコントロールを
直接操作することはできないのでしょうか?
0592名無しさん@お腹いっぱい。 (ワッチョイ d2d9-w+5f)2017/12/14(木) 21:57:18.36ID:GqJFhkoy0
>>590 >>591
ショートカットキーを使って、既存のブラウザのコントロールにアクセスしたいというのが
もともとの願望でした。
(会社の基幹システムの提携作業をマクロ化したいという動機)

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

ずっとVBAで業務支援ソフトなんかを同僚のために作ってきたのですが、
HotKeyの制御はC#やVBなんかでもできるのでしょうか?
初心者ですが、VisualAtudioは最近ちょろっと触ってるので、
HotKeyを使ったブラウザ制御なんかを学べる環境を教えていただけると幸いです。
0593名無しさん@お腹いっぱい。 (ワッチョイ c2e0-iA8U)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ならソースが公開されているから、業務で使用も可能だろ
0594名無しさん@お腹いっぱい。 (ワッチョイ 126c-mLIQ)2017/12/15(金) 20:50:32.58ID:OrMVJhUA0
>>589
テンプレにあるACC.ahkでDoDefaultActionでいいんじゃないかな
それでできないならUI AutomationのSetFocus()でフォーカス合わせるぐらいしか思いつかないけど
UI AutomationのほうもAutoHotKeyである程度使いやすいようにされたものがどっかにあったはず
0595名無しさん@お腹いっぱい。 (ワッチョイ 16e6-WcAR)2017/12/16(土) 16:06:02.33ID:AUvdSLPQ0
>>593 >>594
ありがとうございます。
レスが遅くなって申し訳ありません。

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

定期的にリロードするよう書き込んだ方が良いのか、それとも
他に何か原因があるのでしょうか?
0597名無しさん@お腹いっぱい。 (ワッチョイ 1e9c-E651)2017/12/17(日) 07:31:34.32ID:DTDP6E0d0
>>596
まず、余分なものをどんどん省いていって、それが再現する必要最低限のスクリプトにしてみましょう。
その結果、原因が分かって自分で解決できる場合もあるし、その最低限のスクリプトをここに書き込めば
誰かにヒントをもらえる確率が上がると思います。
0601名無しさん@お腹いっぱい。 (ワッチョイ d22e-OGCE)2017/12/17(日) 11:06:05.21ID:pdjYZcFx0
一体どういう状況でソレが使いたいのかが分かれば精査しようもある
ただ言えるのは、短く書こうとして誤動作おきてるなんてことはよくある

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

くらいは書かないとダメかも
0602名無しさん@お腹いっぱい。 (ワッチョイ d22e-OGCE)2017/12/17(日) 11:12:23.44ID:pdjYZcFx0
もうちょっというなら、キーヒストリーはちゃんと確認しよう
早すぎて抜けてるとかなら調節しないといけないわけだし、そもそもキーが送られてないとかになると、マウスとの相性まで疑ったほうが良い。
WheelLeft、Rightはうちも反応して無くて、しょうがないからF13,F14をレジストリレベルで割り当ててF13に設定してたりする
0604名無しさん@お腹いっぱい。 (ワッチョイ df87-mLIQ)2017/12/17(日) 11:34:53.14ID:fzbLbuEn0
LogicoolのSetpointのような他のカスタマイズ系ツールが入ってて競合していたり
仮想PC上で動かしていたりするんじゃない?
もしそうなら思考錯誤すればなんとかなったりするけど
Autohotkeyとの併用だと根本的解決は厳しいのでどこかで妥協が必要
0606名無しさん@お腹いっぱい。 (ワッチョイ ffc6-iA8U)2017/12/17(日) 12:12:17.21ID:eySZ52HR0
その手の質問するときはちゃんと環境書いたほうがいいよ
反応しなくなるのは件のホットキーだけ?
それとも他のホットキーも全滅になるん?

リダイレクトホイール系のスクリプト入れてるけど
ブラウザとかでページの読み込みが重いとスクロール処理に遅延が生じてしまって
それ以降他のアプリ上でホイール回しても一切スクロールしなくなることはあった
ただ処理はロストしてるわけじゃなく溜まっててるだけで
数分〜10分後に え今更?ってタイミングでスクロールされるけど
(win8 x64 & ahkL U64 v1.1.24 & m570)
0607名無しさん@お腹いっぱい。 (ワッチョイ a787-1hA/)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) マウスはエレコム です
0610名無しさん@お腹いっぱい。 (ワッチョイ a787-1hA/)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
を付けてうまくいくのか様子を見てみます
0613名無しさん@お腹いっぱい。 (ワッチョイ a787-OyZG)2017/12/18(月) 00:49:44.45ID:fHENqFFZ0
そもそもお前らにとってマウスは仇なの?
そこまでキーボードでやりだい心境ってどうなの?
0617名無しさん@お腹いっぱい。 (ワッチョイ ffc6-iA8U)2017/12/18(月) 11:07:38.53ID:dHJj4PmW0
>>614
>551の時は代替キーがモデファイヤ含んでたからそういう処理が必要だったけどそうでないなら助長じゃね
WheelLeft/Rightは倒してる間中リピート発生するみたいだし本来なら
WheelRight::a
だけでいいはず

書き方じゃなく環境的な問題な予感
0619名無しさん@お腹いっぱい。 (ワッチョイ c2e0-BKhF)2017/12/19(火) 11:49:43.42ID:Van3T9iO0
WheelScroll.ahkとかWheelaccel.ahkだと、WINDOWS10の modern UI でスクロールできないです。
MGLを使った回避はあったのですが、単体利用での回避方法を誘導していただけないでしょうか。
よろしくお願いいたします。
0622名無しさん@お腹いっぱい。 (ワッチョイ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
0623名無しさん@お腹いっぱい。 (ワッチョイ 16f3-c9BR)2017/12/19(火) 22:50:38.94ID:spQDjKkw0
>>622
%USERPROFILE%を直接展開する方法は分からないが、
A_UserNameでログインしているユーザー名を
または、A_Desktopでデスクトップフォルダのフルパスを
取得することは出来るから置換すればいいような…
0624名無しさん@お腹いっぱい。 (ワッチョイWW a787-XSIK)2017/12/19(火) 23:25:51.46ID:TaxqTr0o0
>>623
ありがとうございます。
StringReplace, OutIcon, OutIcon,% "%USERPROFILE%" , %USERPROFILE%, All
この一行で解決しました。
0625名無しさん@お腹いっぱい。 (ワッチョイ c2e0-j1NZ)2017/12/20(水) 08:57:02.76ID:CxHWmxkW0
>>621
お世話になってます。
WheelScroll.ahkの作者さんがいらっしゃったのですね。
スクリプトの修正ありがとうございました。

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

横スクロールのコメントがございました。
Shiftホイールで横スクロール部分を有効にしました。
0626名無しさん@お腹いっぱい。 (ワッチョイ c2e0-j1NZ)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にて、列の固定(ウインドウ枠の固定)をしていると横スクロールできません。
環境依存などあれば書き込みます。
よろしくお願いいたします。
0627名無しさん@お腹いっぱい。 (ワッチョイ a3c6-7LW1)2017/12/21(木) 00:44:34.93ID:tyYKgEs60
>>625-626
ご使用&報告ありがとうございます
当方先月やっとwin10に移行したばかりであまり動作確認が取れておりませんでご不便をおかけします
色々酷いので手直ししたいんですがWheelaccelやMGLのほうがいい感じに改良されてるようですし
こっちはもう自分用で汚くてもいいかな〜みたいな感じで放置してました
こんなでも使ってくださってる方がいるのは嬉しいです、ありがとうございます

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

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

の5を変数でできないです?
0629名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)2017/12/21(木) 01:33:36.72ID:SquZXOD10
evalがあったのか〜
0631名無しさん@お腹いっぱい。 (ワッチョイ f315-aRp6)2017/12/21(木) 02:05:04.78ID:SquZXOD10
>>630
%か〜さんんきゅ〜
0632名無しさん@お腹いっぱい。 (ワッチョイ bfe0-615/)2017/12/21(木) 09:26:50.18ID:Iywphmus0
>>627
ご説明賜り感謝致します。
コメントアウトの方法は理解しており間違っていませんでした。。
これから出張なので、来週改めて確認していきたいと思います。
その他含め、ありがとうございました!
私はm510でチルト出来るのですが、shift横スクロールの方がスクロール量をコントロールできるので便利です。
0640名無しさん@お腹いっぱい。 (ワッチョイ 7fd9-buzn)2017/12/22(金) 15:39:38.72ID:O+PHC10P0
ポインタの使い方がよく分かりません

i := 4
p := &i

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

のように書いても両方共iとは関係のない値が出てしまいます
どうすればpからiの中身にアクセスできるのでしょうか?
0642名無しさん@お腹いっぱい。 (ワッチョイ a304-bqMz)2017/12/23(土) 08:30:47.00ID:jbJlOP0C0
あるアプリでツリービューをクリックするとサーバーと通信してその結果を
隣のリストボックスに表示する、というのがあります
今はAHKでmousemoveでカーソル移動してツリービュー上でクリックして
隣のリストボックスの情報をControlGet等でとっています
これをもっとスマートにしたいのですが、
ツリービューをクリックしてネットに情報を送るところを直接httpで送ることは
できませんか。具体的にどういうメッセージを送ってるのかを知ることは出来ないのでしょうか
URLDownloadToFileというのは見つけたのですがここまでのことはAHKでは出来ませんか
0643名無しさん@お腹いっぱい。 (ワッチョイ f3ec-7LW1)2017/12/23(土) 12:21:47.75ID:2pB5qSyN0
アプリの名前伏せられても通信プロトコルすら分からないわけだが
質問内容から想像つく範囲で答えるならdllcallからwinsockAPI叩けばおそらく可能ではある
ただSendMessageみたいに1発投げればいいってもんじゃないし
相手サーバーとのネゴシエート必要だし通信プログラムの知識は必要になると思うが
0646名無しさん@お腹いっぱい。 (中止 cff3-quDi)2017/12/25(月) 16:05:01.58ID:dcbUg3oN0XMAS
>>644
v.1.1.27.00にしたらremap用スクリプトがエラーで起動しなくなった
sc073::+vkE2sc073という記述が一箇所あってそこでエラー発生したてので、
sc073::+sc073としたらスクリプトが正常に動いた
今バージョンからvk**付けるとエラーになってしまうのか?
0652名無しさん@お腹いっぱい。 (ワッチョイ ffec-RBuR)2017/12/27(水) 16:25:05.40ID:Aacf2UtF0
#IfWinActive,無題 ahk_exe notepad.exe
としてもメモ帳を認識しない。
無題をやめて - にすると大丈夫。
何か問題ある?

スクリプトはUTF-8。
環境は、Windows10で、v.1.1.27.00です。
0654名無しさん@お腹いっぱい。 (ワッチョイ b387-IIdD)2017/12/30(土) 03:58:59.09ID:gls+cAd20
マウスの中ボタン+右クリックにホットキーを当てると
中ボタン単体では動作しなくなってしまうので

Mbutton::send,{Mbutton}
return

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

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

と書いてみたのですがうまくドラッグアンドドロップ出来ません
どのように書けば良いのでしょうか?
0655名無しさん@お腹いっぱい。 (ワッチョイ 46e9-RYVm)2017/12/30(土) 04:20:23.50ID:b6YqK2p70
>>654
中ボタン+右クリックにホットキーを当てた時点で
中ボタン単体の判定は中ボタンを離した時に行われる様になるので
通常の方法ではドラッグは出来なくなる
別の対処策としては2度押しでドラッグにするとか、別のボタンにドラッグ割り当てるとか幾つかやりようはあるけど
どうしても普通にドラッグしたいなら中ボタン+右クリックを諦めた方が良い
0657名無しさん@お腹いっぱい。 (ワッチョイ 069c-Kkzi)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
こんな感じでどうだろ
0660名無しさん@お腹いっぱい。 (ワッチョイ b387-IIdD)2017/12/30(土) 21:59:48.99ID:gls+cAd20
>>659
>>657でも出来るのですが  ~MButton & RButton:: でも出来ますね
~ の意味を調べたら イベントを乗っ取らず、そのままシステムに通す って書いてあったのですが
元のキーの機能を殺さずに的なことなんでしょうか?
0664名無しさん@お腹いっぱい。 (ワッチョイ 6768-XPej)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.

しかし互換性持たせてくれればいいのになぁ
0667名無しさん@お腹いっぱい。 (ワッチョイ 9bf0-+W2v)2018/01/05(金) 23:03:42.41ID:l4zNz2Hg0
あー、先にここ見とくべきだった。更新したら動かなくて何だろうかと
せっかくなので、これからverup予定の方に、自分が修正したキー一覧を以下に
変換…vk1Csc079
無変換…vk1Dsc07B
:(コロン)…vkBAsc028
:(コロン)…vkBAsc03A
;(セミコロン)…vkBBsc027
;(セミコロン)…vkBBsc03B
,(コンマ)…vkBCsc033
\(バックスラッシュ)…vkE2sc073
CapsLock…vkF0sc03A
ひらがな/カタカナ…vkF2sc070
全角/半角…vkF3sc029
全角/半角…vkF4sc029
grepツールで済ませてそんなに時間はかからなかったけど、久しぶりに面倒な更新作業だった
0668sage (ワッチョイ 9f13-fYpg)2018/01/06(土) 01:51:53.58ID:gHX87yO10
vkxxscxxxが使えなくなって
vkxxまたはscxxxのどちらかで指定と理解してるんだけどいいんかな?

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

sc05eは使えなくなったが、こいつだけvkff::をアテた。
とりあえず他とバッティングしてない。
0669名無しさん@お腹いっぱい。 (ワッチョイ 4b4f-/L1Q)2018/01/06(土) 22:19:48.65ID:L9VE7V/R0
こんばんはー、ホットストリングって機能に初めて手を出してみたんですけど、
ちょっと???な部分があるのでお伺いしたいです。
「[[」って打ったら「『」、「[[[」って打ったら「【」になるようにするにはどう書けばいいんでしょう?
Z0オプションでバッファが残るっていうならそれ指定するだけでいいのかなーと思ったら思うように動かず。
フラグを変数に格納するなり、複数行書かないとダメでしょうか?
0671名無しさん@お腹いっぱい。 (ワッチョイ 4b4f-/L1Q)2018/01/07(日) 00:56:44.38ID:JkICX0vw0
ああいえ、読んだんですがイマイチ仕様を把握できず、
シンプルな構文で書けるのか書けないのか書けないのか、単にそれだけを慣れている人に聞きたかったんです。
必要ないでしょうけど一応晒すと、
:*Z0:[[::『
:*:[[[::【
で[を3回押したら【になりそうだなーと思ったのですがならないなーってことでして。
0674名無しさん@お腹いっぱい。 (ワッチョイ 0fe0-1NUl)2018/01/07(日) 12:54:08.50ID:vRDST1RB0
本当にちゃんと読んだか?
「置換後のテキストに2バイト文字を使うことはできないので、スクリプト実行型でクリップボードを経由して貼り付けるなどの方法を取る必要がある」
0676名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)2018/01/07(日) 16:59:29.06ID:TEnpSFgY0
>>671
『が入力される時に[[がBSで消されたことになるので、続けて[を打っても:*:[[[::が実行されない。
0677名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)2018/01/07(日) 17:03:26.18ID:TEnpSFgY0
ホットストリングでやっても出来なくはないけど、ややこしいし色々問題あるからおすすめしない
0678名無しさん@お腹いっぱい。 (ワッチョイ 4b4f-/L1Q)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
0679名無しさん@お腹いっぱい。 (ワッチョイWW 2b87-8bQF)2018/01/07(日) 18:35:00.89ID:TEnpSFgY0
>>678
?オプション付けないとa〜z打った直後に動いてくれないから付けた方が良い
ちなみに、他にキー入力をいじるソフト(やまぶきRとか)使ってるとちゃんと動かない事がある
0680名無しさん@お腹いっぱい。 (ワッチョイ 4b67-Ogju)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ですね)が一通り終わった後、マウスポインタをもとの位置に戻ってこさせるということは可能でしょうか?
0683名無しさん@お腹いっぱい。 (ワッチョイ 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の記述の仕方がまずいのかわかりませんが置き換え文字が二重に入力されないようにするにはどうしたらいいんでしょうか?
0688名無しさん@お腹いっぱい。 (ワッチョイ ea67-zHNy)2018/01/13(土) 23:00:31.98ID:u3DR4K2j0
>>684
>>685
>>686
ありがとうございます
参考になりました
0689名無しさん@お腹いっぱい。 (ワッチョイ b587-g+Oy)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年以上悩んでおります。
どうかよろしくお願いします。
0692名無しさん@お腹いっぱい。 (ワッチョイ 1e63-Un5q)2018/01/15(月) 11:47:41.46ID:r2mlDsgK0
sc と vk だが,フォーラム読む限りはvkのほうがいいみたいだぞ.scは”still supported”とか書いてあるが,いつ消されるかわからんしな. 
0693名無しさん@お腹いっぱい。 (ワッチョイ 66f3-VsDo)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***のみでも問題無く動いてるので行けるとこまでこのままいくわ(´・ω・`)
0694名無しさん@お腹いっぱい。 (ワッチョイ 2a87-yLWr)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::

バージョン戻したけど時間がある時にもう一度書き直してみようと思う
何か分かる人いたらヒントください。
0696名無しさん@お腹いっぱい。 (ワッチョイ 2a87-yLWr)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
0697名無しさん@お腹いっぱい。 (ワッチョイ 2a87-yLWr)2018/01/16(火) 14:45:00.33ID:NLQSNNGB0
あっ これも駄目ですね
~Shift & sc03A::Send, {CapsLock}
CapsLockのみでも反応してしまう

問題無し
~Shift & vkF0sc03A::Send, {CapsLock}
でも、~Shift & vkF0sc03Aはオートオフのコードが反応しない
0702名無しさん@お腹いっぱい。 (ワッチョイ 5d72-53ns)2018/01/17(水) 14:23:18.25ID:Pgssw/8N0
ControlSendですが、これで入力しようとすると、ターゲットのウィンドウがアクティブになって表に出てきてしまいます
裏で入力させることって出来ませんか
最前面では別のウインドウで作業していて、その間に、他の隠れているウインドウにControlSendで値を入れたい
のですが
0705名無しさん@お腹いっぱい。 (ワッチョイ 8b1f-WQmd)2018/01/19(金) 09:27:55.09ID:3Oem/ury0
10キー付きキーボードの10キー部分と、と10キーパッドで、それぞれ別の割当をすることって出来るのでしょうか? ハードウェア別の設定が出来れば10キーパッドを有効活用できるかなと思ったのですが…。
0710名無しさん@お腹いっぱい。 (ワッチョイWW fd05-4b13)2018/01/22(月) 02:02:18.12ID:TAC5etfN0
main.ahkと更新.ahkで2つ起動したいと思うのですが
長時間起動してるといつの間にかフリーズしているので
更新.ahkで両方のahkをリロードしたいのですが
どのようなスクリプトを書けば良いのですか
よろしくお願いします
0713名無しさん@お腹いっぱい。 (ワッチョイ 7538-wNYY)2018/01/23(火) 12:24:46.18ID:0+zHhbeo0
Autohotkeyで即時関数みたいなことできます?
MouseGestureLでジェスチャ毎に再利用しない変数を保持しっぱなしなのもなんだし
最後に一々解放するのもスマートでないというかめんどいというか
代替案でもいいのでお願いします
0718名無しさん@お腹いっぱい。 (ワッチョイW 563e-5Mtj)2018/01/26(金) 11:51:05.61ID:A8q+WlDN0
LWin::[
ってやってるだけなんだけど
いつのバージョンからかキーボードの他のキーやマウスのサイドボタンまでおかしな挙動をするようになった
割り当て自体は成功してるんだけど副作用がすごい
仕様変更ですかそれともおま環ですか?
0721名無しさん@お腹いっぱい。 (ワッチョイ ba67-Ints)2018/01/26(金) 19:32:30.01ID:tlFNmfdt0
>>716
できない
v2でも実装する予定なし(去年の時点で)
https://autohotkey.com/boards/viewtopic.php?p=150578#p150578
関数名やラベル名を消費しないでサブルーチン作る方法は今のところないんじゃないかな

変数の一斉解放だけなら、変数をオブジェクトにまとめておいて最後に空にするとかあるけど
代案とするには弱すぎる
0723名無しさん@お腹いっぱい。 (ニククエ 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}
0726名無しさん@お腹いっぱい。 (ワッチョイ b709-wbgk)2018/02/01(木) 02:21:21.73ID:pVoUMo//0
>>725
FnキーはOSやソフトウェアを介さないハードウェアキーなので無理
「三と書いてあるキー」と言うのは恐らくAppsKeyのことなんだろうけど、それなら
AppsKey & ○:: でそれぞれの機能を割り当てれば疑似的にFnキーの様に使うことは可能
一つずつ割り当て行う必要あるから少し面倒だけどね

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

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

これらを一通り割り当てればAppsKeyをFnの替わりに使える
例まで出してやってんだしこれで分からないなら質問する以前に基礎知識不足
wikiをよく読んでから出直して
0732名無しさん@お腹いっぱい。 (アタマイタイー 7f91-6ivF)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
0733名無しさん@お腹いっぱい。 (アタマイタイー 9f87-QBQH)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
0735名無しさん@お腹いっぱい。 (アタマイタイー 9fc6-j4Dg)2018/02/02(金) 11:23:50.20ID:UlhnALdl00202
vk**sc***は>648

それはそれとしてもLock系キーの動作は日本語OSではもともと不定でBIOS(UEFI)によって挙動バラバラだったし
たまたま動いてたのがバージョン変わったことで動かなくなったとしても別に不思議じゃないと思うが
0736名無しさん@お腹いっぱい。 (ワッチョイ e26b-nHV3)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のキー入力をフック出来ていないような感じがします
このような(妙なキー入力)をフックする方法をご教授頂きたいのです

良い知恵や,サンプルコードなど,ありませんでしょうか?
0741名無しさん@お腹いっぱい。 (ワッチョイW e26b-pyDO)2018/02/11(日) 18:32:04.46ID:DQMytbvG0
>>739-740
本来は、それが正しいんだと思う。
>>736 のキー入力は、特殊な環境で発生するみたいで…。
何とかフックして、正しい状態に変換したいというのが、やりたいことなんです。
autohotkeyの他、keymillを使っても確認したが、やはり、仮想キーコードとスキャンコードは、>>736 と同じでした。
手詰まりなのかなぁ。
0743名無しさん@お腹いっぱい。 (ワッチョイ e26b-nHV3)2018/02/11(日) 20:36:51.05ID:wLAjQo6+0
>>742
現時点ではサンプルコードで動作確認している程度なので,必要かどうかは疑問
----- -----
#InstallKeybdHook

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

scriptとしては,上記しか記載していないです
#UseHookの記載があったとしても,効果ないですよね?
$は関係なさそうだし…
0747名無しさん@お腹いっぱい。 (ワッチョイ e26b-nHV3)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も試した
----- -----
もダメ
ヤレヤレ…
0750名無しさん@お腹いっぱい。 (ワッチョイ 8287-Yv2I)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を指定できるようにしました。
0758名無しさん@お腹いっぱい。 (ワッチョイ 9f87-e6AK)2018/02/15(木) 00:52:21.11ID:MGxE8Lu40
v1.1.24.01 → 1.1.28.00
レスポンスが悪くなった?

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

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

もう一度バージョン上げてみたみたはいいけど、やっぱ駄目かも
0760昨日の成果物 (ワッチョイ 7f91-qi38)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
}
0761つづき (ワッチョイ 7f91-qi38)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
}
0763名無しさん@お腹いっぱい。 (ワッチョイ 3787-qi38)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))
}
0766名無しさん@お腹いっぱい。 (ワッチョイ 3787-qi38)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
}
0768名無しさん@お腹いっぱい。 (ワッチョイ 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
}
}
0770名無しさん@お腹いっぱい。 (ワッチョイ 9fe8-3Gvo)2018/02/16(金) 12:01:54.87ID:kFXWbhgF0
>>768
画像を見た感じ、境界の部分が明示的透過というより背景と混ざっているように見える
多分アンチエリアスとかのせい
よって、*Nオプションである程度認識する色に幅を持たせるか
抽出画像の方を明確に色の濃い部分だけを残して真っ白にして透過指定する
とかを試してみてはどうだろう?
0771名無しさん@お腹いっぱい。 (アウアウカー Sa6b-oNSK)2018/02/16(金) 16:13:41.17ID:m7uJKjCZa
>>769 >>770
ありがとうございます
誤差検索*90をオプションに追記しましたところ、
ハイライトされたもののうち2つには反応しましたが
その二つを取り除いてみるとerror2でした

>>770
たしかにwindowsプリセットの画像ビューワで見たとき滲んだように見えますね
しかしペイントで抽出した際は滲んでいるようには見えず、この枠の太さ(ほかに表現方法がわかりません笑)が1ドットになるようにしたのですがこれが限界ではないということでしょうか(;´Д`)
0777名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)2018/02/17(土) 00:32:17.20ID:a1W66dge0
流れ読まずに質問スマソ
管理者権限のアプリも操作するためにAHK自身を管理者で実行すると、
今度はRUNで何か走らせる際にそれらも全部管理者権限になってしまう。
対策としては、
・タスクスケジューラを噛ませる
・Win+R 窓を開いてそこでコマンドを実行する
ほかにもっと簡単な方法はないでしょうか?
0782名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)2018/02/17(土) 20:20:17.03ID:9Ob7L7Vv0
>>779
>>781
run, explorer "C:\Windows\System32\notepad.exe"
パス付けたら動いた
どうもありがとう!!
0784名無しさん@お腹いっぱい。 (ワッチョイ 1701-MriG)2018/02/17(土) 20:41:59.94ID:9Ob7L7Vv0
>782
いろいろ試したけど、
ターゲットアプリに引数を渡すことは出来ないみたいだね
例)
explorer "C:\Program Files\internet explorer\iexplore.exe" http://ntt.setup

explorer.exe の仕様なんだろうか
0786名無しさん@お腹いっぱい。 (ワッチョイ ff01-MriG)2018/02/18(日) 00:24:02.28ID:OinWbaSp0
いろいろありがとう!
0787名無しさん@お腹いっぱい。 (ワッチョイ 9f87-e6AK)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
0788InStr版も作ってみた (ワッチョイ 3791-qi38)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文字目にマッチすれば
0789コード (ワッチョイ 3791-qi38)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
}
0794788 (ワッチョイ 3791-qi38)2018/02/19(月) 04:14:54.89ID:BdhMP5UP0
>>793さん
ご指摘ありがとうございます。

InStr()関数はIfInString文同様部分一致検索のみで意味ないことしてました。m(_ _)m
0795名無しさん@お腹いっぱい。 (ワッチョイ 3791-qi38)2018/02/19(月) 04:35:55.96ID:BdhMP5UP0
前方一致検索…RegExMatch(var, "^検索文字列")
後方一致検索…RegExMatch(var, "検索文字列$")
完全一致検索…RegExMatch(var, "^検索文字列$")
部分一致検索…InStr(var, "検索文字列")
部分一致検索…IfInString, var, 検索文字列
0804名無しさん@お腹いっぱい。 (ワッチョイ d087-FYDH)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
0808名無しさん@お腹いっぱい。 (ワッチョイ 8ac6-RzsP)2018/02/24(土) 22:17:24.31ID:HiBHIVZG0
だな
フォーカス外れた段階でファイル名のEditBoxがなくなるから別窓やメニュー表示は無理
LiNameみたいなリネームソフトでいったんエディタに飛ばして変換するのが無難かと
0809804 (ワッチョイ d087-FYDH)2018/02/24(土) 22:47:10.87ID:b4HvGc+S0
ありがとうございます。なるほど理解しました
結果的にExplorer上ではメニュー出さずに直で行うようにしました

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

あとはキーをちょっと工夫してみます。
トグルして括弧の種類を変えていければいいんだけど...
0810名無しさん@お腹いっぱい。 (ワッチョイ 9163-MTlB)2018/02/28(水) 04:34:44.24ID:WVOCCenh0
エラー処理入れておいたほうがいいぞ

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

return
}
msgbox, clipboard changed: [%clipboard%]
return
0811名無しさん@お腹いっぱい。 (オッペケ Sr5f-z5Dr)2018/02/28(水) 10:49:33.46ID:fyn3Q3mHr
正規表現スレからコピペ
RegExMatch("こんにちは。", "(.)+", $)
MsgBox, %$1% ;「こ」じゃなくて「。」が入るんだね
RegExMatch(str, "^(.)+", $)
でも同じ結果だた
2バイト文字だからこうかなと思たら
RegExMatch(str, "^(..)+", $)
$1に「は。」が入る
もうわけわかんねー
0815名無しさん@お腹いっぱい。 (ヒッナー a787-R89I)2018/03/03(土) 21:32:14.87ID:8R4aDJlk00303
質問です

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

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

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

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

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

お騒がせしました。
0819名無しさん@お腹いっぱい。 (ワッチョイ 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などを挟んでみましたが解決しませんでした。
どうすればいいのでしょうか。。。
0826824 (ワッチョイ bb45-hn8E)2018/03/08(木) 19:24:12.88ID:BnoQlrXA0
>>824ですが、一般論としてウインドウをWinMoveやWinSetが効かなくすることとかウインドウ側で
出来るのですか
0828名無しさん@お腹いっぱい。 (ワッチョイWW fb67-sqAj)2018/03/08(木) 21:04:46.18ID:KOKOXPVs0
こういうマクロを作りたいと思っています
@指定キーを押すと画像認識マクロが有効になる
A有効となっている間、画面上にお目当ての画像が出てきた場合にInput
B指定キーをもう一度押すとマクロ自体をsuspend

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

今のところ自分でできてるのは
suspendをトグルさせること(@とB)と
1回キー押したときに1回だけ画像認識を正確に行わせることまでです。。
0833名無しさん@お腹いっぱい。 (ワッチョイ 8a70-ufBK)2018/03/09(金) 08:03:10.58ID:0+2toMkh0
>>824
参考になるかどうか分からないけど、俺のウィンドウの移動やサイズ変更のスクリプトだと、
移動は、ハンドラを使ったWinMove と コントロールを使ったControlMove
の2通りを使っていて、サイズ変更も同じような感じ。
たしか、MDIウィンドウに対応するためだった。
0839名無しさん@お腹いっぱい。 (ワッチョイ 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
0843名無しさん@お腹いっぱい。 (ワッチョイ 2387-Wwmn)2018/03/10(土) 16:31:28.14ID:G9FIqbQm0
あるソフトで右Altに機能を割り当てているのでマウスボタンで呼び出そうと

xbutton1::send,{Ralt}
return

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

修飾キーを単独で押した事にするには何か別な書き方があるのですか?
0847名無しさん@お腹いっぱい。 (オーパイWW 0bcf-EGiS)2018/03/14(水) 13:33:38.67ID:HnQGWYiV0Pi
お尋ねします
trayメッセージ?の表示存在の有無や内容テキストを得る方法はあるんでしょうか
使っているbluetooth機器が自動電源オフになり、その都度trayに出てくるバルーンを数回クリックして再接続するのが手間なので、これを自動化できたらいいなと思っております
0850名無しさん@お腹いっぱい。 (ワッチョイ 477f-G7IE)2018/03/15(木) 17:21:57.74ID:QbWkJm2V0
a:: だとaのキーの置き換えだから、そら単独では使えなくなるわ
a & space::
if [CapsLockの押し下げ状態] なら[処理]

ではどうです。Capsの押し下げは取得が面倒だったような気もするけど
0853名無しさん@お腹いっぱい。 (ワッチョイ d787-5De2)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

ありがとうございました!
0854名無しさん@お腹いっぱい。 (ワッチョイ d787-5De2)2018/03/15(木) 19:08:59.45ID:xPyBwzTO0
と、思ったら駄目だった
CapsLock+aが使えなくなった

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

しかし、CapsLock+aに行くには一度キーを離さないと駄目だぬ
0855名無しさん@お腹いっぱい。 (ワッチョイ d787-5De2)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をコマンドキーにしたかったので
まぁいいか
0856名無しさん@お腹いっぱい。 (ワッチョイ 0153-MOYc)2018/03/16(金) 12:26:04.83ID:UouS7uLn0
Msgboxですが、はい、いいえ、キャンセルと3つのボタンをつけられますが、
このはい、いいえ、キャンセルという名前を変えることは出来ませんか。
これらを表示してからあとからの変更でも構いません
0862名無しさん@お腹いっぱい。 (ワッチョイ ad87-lboF)2018/03/17(土) 21:56:35.01ID:J13vqzPo0
windows 10です
コマンドプロンプトにcontrolsendでファイル名やコマンドを送ると
2文字目が大文字になって(元の文字列の大文字にした文字の次の文字が大文字になります)
しまいます。どうしたらなおせますか?
0863名無しさん@お腹いっぱい。 (ワッチョイ d787-5De2)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

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

しかし今はアラサーからでも始められるんだねえ
うちなんかの頃はプログラマー35才定年説とか冗談でいいながら
結局30才の時に辞めちゃったけど
0870名無しさん@お腹いっぱい。 (ワッチョイWW 2bc6-1Vej)2018/03/19(月) 09:08:30.30ID:1gBKOOv90
マー枠でないオフィスワークならPC作業のかなりの割合がルーチンワークなので
あの人に頼むと仕事速いって評価は得られる
履歴書段階ではよくわからん余計な事が書いてあるみたいな顔されるけどね

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

.ahkにドラッグアンドドロップされたmp3ファイルをmp3directcut.exeに渡したい(D&D)です。
0875名無しさん@お腹いっぱい。 (ワッチョイ cdaa-JEBE)2018/03/20(火) 15:11:55.67ID:+orTD+Tx0
このソフトって画像認識は余り重要視されない感じですか?
OpenCVベースのライブラリを作成中なのですが。
0878名無しさん@お腹いっぱい。 (ワッチョイ cfd4-hKdO)2018/03/21(水) 02:26:02.22ID:t6ZVDJkP0
>>877
AHKはスクリプトであり簡易的なプログラム
本格的なプログラミング言語に比べ、用途を限定することで、覚えやすいように簡単な構造になっている
スクリプトの中でもAHKは特に簡単な方なんじゃないかな多分
0879名無しさん@お腹いっぱい。 (オイコラミネオ MM4b-uaUb)2018/03/21(水) 05:59:25.78ID:vW2s5IUZM
プログラミングの足掛かりにはなるけど
用途も限られ、誰でも覚えられ、用意されたコマンドも少ない
でも高度な事しようと思ったらwin apiの知識が必要だったり
他からライブラリ持ってきたり
リファレンスが英語しかなかったり
汎用性はあまりないよ
0881名無しさん@お腹いっぱい。 (ワッチョイ 2bc6-dVgQ)2018/03/21(水) 11:15:53.77ID:vX0jpMkC0
いきなり使えるという意味では楽なほうだと思うけど
スプリクト言語として簡単な方だとは正直言い難い
増改築繰り返してて色んな言語の方言ぶち込まれてるから纏まりないしね
0884名無しさん@お腹いっぱい。 (ワッチョイ 9b87-MOYc)2018/03/21(水) 17:56:15.87ID:RBaLq5Ja0
>>877
プログラミング言語は以下の総称、AHKはスクリプト言語に属している

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

コンパイラ言語 - 人間が書いたプログラムをコンピュータが理解できる形式に変換するプログラム言語
           C言語やC++、Javaなど、上記と比較してパフォーマンスに優れている
0891名無しさん@お腹いっぱい。 (ワッチョイWW 03c6-6Z4N)2018/03/22(木) 09:00:22.19ID:U0cAdNVx0
Insertは固定テーブル書換でよくお世話になったし今もたまに使う
BreakもVBAの暴走止めるのに使うしScrollLockだけは要らんけど
あの辺をahkで覆すことってないなあ
そもそもホームポジションから遠いから便利キーとして活用しづらいというのもあるが
0893名無しさん@お腹いっぱい。 (ワッチョイ 6387-zkh5)2018/03/22(木) 12:37:22.06ID:e+UZ/a+c0
昔使ってたワープロ専用機がパソコンで言えば挿入キーが効いた状態が標準だったので、パソコンに移行した初期はよく使ってたな。今でもたまに長い名称の修正の時に使うことがある。
無変換キー使わないから他に置き換えるって記事も出てくるけど、個人的にはしょっちゅう使ってるんだよなぁ。ショートカットの関係とかもあるし、キーの置き換え考えるのってけっこう難しい。
0895名無しさん@お腹いっぱい。 (ワッチョイ 6345-fzSc)2018/03/23(金) 10:21:17.86ID:b+Z0za8i0
例えば、
Aキーを押した後、Xを押したらある処理Xをする
Aキーを押した後、Yを押したらある処理Yをする
Aキーを押した後、Zを押したらある処理Zをする
みたいなことをしたいのですが、簡単なスクリプトの書き方ってありますか?
0910906 (ワッチョイ 812f-uaFS)2018/03/29(木) 08:46:20.34ID:Kt+xqO1A0
私は、
StringGetPos, n, text, `n, L10
StringLeft, text,text, n
としました。
Loop, ParseかRegExReplaceってのは気づきませんでした
いくつか方法ありますね。 gnuとかやってたのでもうちょっと関数ほしいかな
0911名無しさん@お腹いっぱい。 (ワッチョイ ab8e-kUw7)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
}
0914名無しさん@お腹いっぱい。 (ワッチョイ 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中で自身の変数を使うにはどうしたらいいのでしょうか
0923名無しさん@お腹いっぱい。 (ワッチョイ 6dec-vJpg)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].

最後のやつ、なんかおかしいと思ってたんだよ
やっぱバグだったのか
0924名無しさん@お腹いっぱい。 (ワッチョイ 2587-I7Wx)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
0933名無しさん@お腹いっぱい。 (ワッチョイ 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)
0935名無しさん@お腹いっぱい。 (ワッチョイ cff3-imnj)2018/04/13(金) 20:25:23.22ID:j0qzzlLl0
win7からwin10に移行して1か月経ったが、ホイールリダイレクトがwin標準になったのを最近知った
なので、win7時代から使っていたWheelAccel.ahkが不要になったよ
(むしろ、スタートメニューなど一部の窓でスクロール出来なくて困っていたし、加速機能使わなかったから不便無い)
0936名無しさん@お腹いっぱい。 (ワッチョイ 73ec-sM52)2018/04/13(金) 21:19:40.20ID:0+nIaT1E0
バイナリデータn書き換えについて質問します
例えばbinary.datと言うファイルがあります
このファイルの中身は”FF FF FF FF”とします
これを先頭が”FF”だった場合に”00 FF FF FF”と書き換えたいのです。
どこかに良いサンプルコードありませんでしょうか?
0940名無しさん@お腹いっぱい。 (アウアウカー Sa47-w0Zj)2018/04/17(火) 15:16:07.19ID:TidmHlF5a
>>939
バグ報告いいかな?
無線パットだと起動した直後にLRがキーログに出てくる
実際押されてる模様。初期化の速さに通信が追いついてないっぽい

あと要望はLTトリガーにフルプル対応してほしい。それさえクリアしたらSteamのキーアサインの呪縛から抜けられそう
0941名無しさん@お腹いっぱい。 (ワッチョイWW a3d9-Nl4c)2018/04/17(火) 16:51:38.37ID:a0NxOH1g0
window10 pro 64bit版で.NETアプリを自動操作させようとしているのですが、
コントロール名の取得方法が分からず、座標で操作しています。
しかし、画面サイズが異なると座標がずれてしまうため、コントロール名で操作したいです。
コントロール名を取得する良い方法はありませんか。
Au3Info_x64を使ったりもしているのですが、テキストボックスやボタンの名前の取得もできません。
よろしくお願いします。
0945名無しさん@お腹いっぱい。 (ワッチョイWW a3d9-Nl4c)2018/04/18(水) 16:38:37.35ID:BxRxemHs0
>>942
ありがとうございます
mousegetpos試してみました
そこで取得したテキストボックスらしきClassNNにsendしてみたけど入力されないので、
ClassNNがあってるかどうかも分からない状態です
dllはまだよく分かっておらず、試せていません
もう少し試行してみます
0946名無しさん@お腹いっぱい。 (ワッチョイWW b3cf-VH02)2018/04/20(金) 01:59:31.80ID:CBU7UbTU0
gui上のあるボタンを押したらcaps入り切り、というのが上手くいきません
capslockのキーコードをsendすれば?と思いましたが必ずロック入にだけなってしまいオフにできません
0949名無しさん@お腹いっぱい。 (ワッチョイ 5a2e-wGau)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)
0962名無しさん@お腹いっぱい。 (ワッチョイ 1735-9jjH)2018/04/22(日) 19:27:30.11ID:PW3IH2j00
以下のようなサンプルスクリプトを書き、Excel上で
動いたのですが、他のウィンドウに切り替えても
動いたままです。アクティブ時以外は停止させる
ことはできないのでしょうか。

#IfWinActive ahk_class XLMAIN
^!down::
Interval :=2
Loop, 20
{
Send {enter}
Sleep, 1000*Interval
}
#IfWinActive
0964名無しさん@お腹いっぱい。 (イルクン MM12-ey0r)2018/04/22(日) 22:10:37.71ID:+NuTjY0aM
#IfWinActiveはトリガー発動時の条件でしかない
アクティブ外れたからって実行中のスレッドを強制的に止めるような怖い機能はついてない

止めたいなら自分でloopの中でアクティブ切り替わったかどうか見てアボート処理入れないと
つうかhotkeyの中でsleep使うとキー連打したときにめんどくさくなるから
settimer使った方が安全だと思うけど
0974名無しさん@お腹いっぱい。 (ワッチョイ 236c-9XoG)2018/04/23(月) 21:18:00.96ID:zWCv4IqX0
分かってない質問者来たときに上から偉そうなのがワラワラ涌く以外勢いつかないスレなんだから
この程度の自作自慢ぐらいいちいち締め出すこともないだろうに
噛みつきたいだけのキチガイの言うことなんかほっとけよ
0979名無しさん@お腹いっぱい。 (ワッチョイ 0ee0-gKSs)2018/04/24(火) 21:47:10.94ID:w2d0xl7M0
zip版はAutoHotkeyA32.exe(ANSI 32bit)、AutoHotkeyU32.exe(UNICODE 32bit)、
AutoHotkeyU64.exe(UNICODE 64bit)が入ってるので自分の環境に合うやつを
AutoHotkey.exeにリネームなりコピーなりして使う
0981名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)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
0984名無しさん@お腹いっぱい。 (ワッチョイ f697-9jjH)2018/04/25(水) 06:27:05.95ID:RVBw9LmG0
>>981
そもそもIfとElseの使い方も滅茶苦茶
もう少し基本のサンプルコード良く見て基本中の基本を自力で理解した方が良い
そのスクリプト実行すると「a」を一回押しただけで「aa」が入力されるしな
0985名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)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
0990名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)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
0993名無しさん@お腹いっぱい。 (ワッチョイ 9a67-a93V)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を使って横取りするか、コンビネーションキーを使うのが早い
コンビネーションキーが嫌なら、あえてその理由を解消する方向でスクリプトを考えてみるのが楽な場合もある

ただ、今の時点で期待通りに動いてるなら
下手にいじらないのもひとつの手
初心者の自覚があるならなおさら
0994名無しさん@お腹いっぱい。 (ワッチョイ f697-9jjH)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

の一行で動作は同じだろう
なぜコンビネーションキーではダメなのか知らんが
スマートに記述するならこっちの方がスマート
0995名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)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がチラつくこともないです...

ただ、これが意図した動作だとしても書き方がおかしいようなら
もう少し考えます
0996名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)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
1000名無しさん@お腹いっぱい。 (ワッチョイ 5a87-Xe54)2018/04/25(水) 10:59:43.24ID:TT/mbE+J0
CapsLockが送信されてるのは言われるまで送信されてるのがおかしいとは思っていなかったですが
とりあえず、状態を取得してもその後Ifでon,off出来なかったのでこんな事になってます
CapsLockがトリガーなら大丈夫なのですが、~LShift & sc03Aをトリガーにすると何故か動作しないので
CapsLockを送って処理してる次第です。
10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 222日 23時間 7分 3秒
10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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