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

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。 転載ダメ©2ch.net (ワッチョイ 997d-+Qhn)
垢版 |
2017/02/15(水) 18:04:32.01ID:kshCKhXn0
!extend:checked:vvvvv:1000:512と次スレを立てる際は1行目に記入してください

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

■前スレ
AutoHotkey スレッド part23
http://potato.2ch.net/test/read.cgi/software/1470936221/

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

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

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

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

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

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

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2017/02/15(水) 18:10:01.04ID:kshCKhXn0
■過去スレ
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/
2017/02/15(水) 18:12:28.64ID:kshCKhXn0
以下FAQ等

■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHK1.1の場合)

Q2:初めて使うけどどれを使えばいいの?
A2:AHK1.1のユニコード版を推奨。
  旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
  64ビットOSでAHK1.1 32ビット版の使用は制約が多いので、64ビット版を強く推奨。

■ リマップ・ホットキー割り当て

Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。
2017/02/15(水) 18:13:24.86ID:kshCKhXn0
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
  これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
   ^1::Send, {Esc}

Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
 例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
   sc07B & I::Send, {Blind}{Up}
   sc07B & K::Send, {Blind}{Down}
   sc07B & J::Send, {Blind}{Left}
   sc07B & L::Send, {Blind}{Right}

Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

  #UseHookで全部にキーボードフックを適応する方法でも可。

Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。

Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
   × Joy1::Esc
   ○ Joy1::Send, {Esc}

Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
2017/02/15(水) 18:13:52.08ID:kshCKhXn0
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

※テンプレここまで
2017/02/15(水) 19:54:36.77ID:eLd/9sJir
MsgBox, 64,, % ">>1乙", 1
2017/02/16(木) 01:25:51.17ID:kR5g/uiD0
質問です。

ウィンドウのリサイズのホットキーを作成してみました。
;ウィンドウリサイズ
#!Numpadadd::
winsize()
return

winsize(){
WinMove,ahk_class Chrome_WidgetWin_1,,1300, 100,1200,1500
}

これでwinキーaltキーを押しながらテンキーの+を押せばウインドウがでかくなります。
ただ、これはGoogleクロームのウィンドウだけです。
これをその都度のアクティブウインドウすべてを対象にしたいのですが、
ahk_class Chrome_WidgetWin_1 ここを空欄にすると全く動いてくれなくなります。
対象をすべてに広げるのはどうすればよいでしょうか?
よろしくお願いします。
2017/02/16(木) 01:54:37.17ID:Hw1FRYME0
>>12
wikiの「ウィンドウ指定の方法」のページをよく読め
2017/02/16(木) 02:01:06.97ID:kh3cI+d4r
WinMove, A,, x,y,w,h
アクティブウインドウすべてって意味が分からないが同じプロセスの複数のウインドウって意味ならahk_groupかWinGetでlist作ってLoopかな
2017/02/16(木) 02:04:49.72ID:kR5g/uiD0
>>13
読んでみます

>>14
パットウィンドウを開いたときに小さい場合、簡単に大きくするのが目的なので
現在アクティブなウィンドウのみに作用できればそれでOKなんですが、
今は指定したタイトルのウィンドウ(アクティブでない場合も作用してしまう)にしか作用してくれないです。
2017/02/16(木) 02:09:19.74ID:kR5g/uiD0
>>13
>>14

;ウィンドウリサイズ
#!Numpadadd::
winsize()
return

winsize(){
WinMove,A,,1300, 100,1200,1500
}

簡単にできました。ありがとうございました。

出来てみると、「直前のサイズに戻す」もやりたくなってきました。
2017/02/16(木) 13:11:49.55ID:jjXXp67P0
パソコン2台モニター4枚使っています
で、パソコンAのマウス、キーボードでパソコンBも操作していて、Mouse wituout Borders(MWB)を使っています

パソコンAでコピーしたテキストはこのMWBを使えばパソコンBでペーストできるのですが、
パソコンAでテキストをコピーすると、パソコンBである処理をさせるというのを自動でしたいのです

パソコンAのAHKスクリプトで、パソコンBのスクリプトを作用させることって出来ますか
2017/02/16(木) 13:15:31.96ID:jjXXp67P0
例えば、SendMessageを使うと、同じパソコン内の別のスクリプトにメッセージを送ることは出来ますが
他のパソコンのスクリプトにメッセージを送る方法があるとか?
2017/02/16(木) 14:35:48.97ID:1T8DysXM0
LAN間メッセージならWinSock
ググったらAHKsock.ahkてのが出てきたからそれ使えばできんじゃね
UACやファイアウォールは適宜設定で
2017/02/16(木) 19:41:02.31ID:rLJDfIZX0
>>17-18
PC-B の方で OnClipboardChange を定義してみては?
https://sites.google.com/site/autohotkeyjp/reference/misc/Clipboard
2017/02/16(木) 23:12:05.79ID:ye2J2HHb0
>>16
ウィンドウサイズの変更なら、このあたりが参考になると思う
http://autohotkey.s365.xrea.com/window_show.html
ポップアップメニューにするなら
http://blog.blueblack.net/item_407
キーボード操作にしたいのなら、CoordMode,Mouse,Screen〜の4行はいらないんじゃないかな
ついでに、
http://ahkwiki.net/Menu#.E3.82.BF.E3.82.B9.E3.82.AF.E3.83.88.E3.83.AC.E3.82.A4.E9.96.A2.E4.BF.82
>メニューアイテム名に &a のように & に続いて英数字を〜
を組み込めば、キーボードだけで柔軟にサイズ・位置変更ができると思う
2017/02/17(金) 00:29:57.50ID:waXhf69C0
>>21
ありがとうございます。自分は最近大きなモニターを買ったり前から持っていたモニターと併せて3枚にしてみたりしていて
新しく開くウインドウがあまりに小さく遠くに開いてしまうことが多かったので
簡単にメインの大きなモニターの中央にそれなりに大きくするコマンドを作成したかったのですが、
いざやってみると全部同じ位置に集まってしまうのでwトグルでもとに戻したりしたいなと思い、
ifとかいろいろ組み合わせて、一つのウインドウを拡大→元通り→拡大 を同じ操作でトグルさせること自体はできたのですが、
途中で別のウィンドウを触ってしまうとメッチャクチャになってしまうwことが判明しました。
基本的なフローが頭にできていないからダメなんですけど、

隅っこにウィンドウが開いてしまった→操作A大きくして中央に移動→別のウィンドウをクリック(それなりになにか操作)
→さっきの大きくしていたウィンドウをクリック→操作A元の場所に戻す

などできるようにするには多分ウィンドウ特定する固有の値を取得してそれぞれの状態を
触れたウィンドウ全部についてどんどん蓄積していかなくてはならないのかなーなどと考えています。
道のりは長そうです。
2017/02/17(金) 00:33:08.13ID:waXhf69C0
お恥ずかしい限りですが、作ったスクリプトはコレです。
マウスの中ボタンプラス左クリックでトグル操作するようにしました。
これだと一つのウィンドウだけいじってる間は問題ありませんが、
途中でほかのところを触ったとたんにぐちゃぐちゃになります。


;ウィンドウリサイズ
MButton & LButton::
if tog = 1
Gosub,Label1
else
Gosub,Label0
return

Label0:
WinGetPos, X, Y, Width, Height,A
WinMove,A,,1300, 100,1200,1500

tog = 1
; MsgBox %tog%
return

Label1:
WinMove,A,,%X%, %Y%,%Width%,%Height%

tog = 0
; MsgBox %tog%
return
2017/02/17(金) 08:02:49.16ID:UhCxCwGJ0
>>20
出来ました。こんな方法があったんですね。 これでいきます
2017/02/17(金) 12:40:18.45ID:IGN6zQZQ0
windows,Shift,mのコマンドをShift長押しで出力するものを作りたいのですが、3キー同時押しのコマンドがどうしても出来ません。
そのようなことはできるのでしょうか?
2017/02/17(金) 13:09:16.89ID:jgyqu4id0
>>25
+#m

質問するならまず自分の書いたスクリプトを張った方がいいぞ
2017/02/17(金) 15:04:04.80ID:KGsRqZeY0
なにこのメールこわ
2017/02/17(金) 15:54:12.08ID:IGN6zQZQ0
26>>
$+::
KeyWait,+, T0.3
if ErrorLevel
send,{Shift}
else
send,+#{m}
keywait, Shift
return
です。
ほかの人が作ったものを自分で改変したものです。もともとは
$m::
KeyWait,m, T0.3
if ErrorLevel
send,#{m}
else
send,{m}
keywait, m
return
です。
2017/02/17(金) 16:47:23.91ID:1vTfdLX7H
そもそも Shift+Win+m の組み合わせはahk関係無く使用できないのでは?
キー入力検出ソフトでも Shift+Win+m を同時押ししても検出できないし
ちなみに Shift+Win+n や Ctrl+Win+m などは使える
OSが認識できないものはahkでも当然無理だし送ることも受けることも出来ない
2017/02/17(金) 18:03:26.95ID:KpKwj6iW0
つNキーロールオーバー
>>28
長押ししてタイムアウトしたら、 ErrorLevel は 1。つまり Send コマンドが逆だと思うけど
あと、うちだと + や Shift だとだめで、RShift や LShift でやればいけたよ
2017/02/17(金) 18:28:20.86ID:IGN6zQZQ0
>>30これでよいのですか?
$LShift::
KeyWait,LShift, T0.3
if ErrorLevel
send,{LShift}#{m}
else
send,{LShift}
keywait, LShift
return
しかし、これだと、win+mと同じ動作をしてしまいます。
私はwin+mで最小化したウィンドウをShift長押しで開きたくて、そのコマンドがwin+Shift+mなのですが、3キー同時出力ができず、
なぜかwin+mの動作と一緒になってしまい、ウィンドウが最小化してしまいます。
2017/02/17(金) 18:33:22.19ID:KpKwj6iW0
>>31
Send の引数の指定は >>26 でいいんじゃないの
2017/02/17(金) 18:51:47.17ID:IGN6zQZQ0
>>32できました!!ありがとうございます。
$RShift::
KeyWait,Shift, T0.3
if ErrorLevel
send,+#m
else
send,{RShift}
keywait, RShift
return
2017/02/17(金) 19:31:05.99ID:KpKwj6iW0
あぁ、これ Windows のショートカットキーか。上でキー入力ソフトで検出出来なかったっていうのは、そのせいかもしれんね
2017/02/18(土) 07:29:39.06ID:OYYffKZK0
OnClipboardChangeについてです
Wikiにある例で、

#Persistent
return
OnClipboardChange:
ToolTip Clipboard data type: %A_EventInfo%
Sleep 1000
ToolTip ; Turn off the tip.
return

と書いていたとします
で、このスクリプトを最初から起動するときはいいのですが、
リロードするときは、リロードした瞬間にこのルーチンが起動して
ツールチップが表示されてしまいます。コピーはしていないのに。
リロードした瞬間にOnClipboardChange:に入らないようにするには
どうしたらいいですか

ちなみに今は変数を使ってスクリプト先頭に flag = 1 として

OnClipboardChange:
if flag = 1 return
ToolTip Clipboard data type: %A_EventInfo%
Sleep 1000
ToolTip ; Turn off the tip.
return

とかやって誤魔化しています
また、#Persistentはあってもなくても同じです
2017/02/18(土) 07:47:06.41ID:OYYffKZK0
訂正します。 最初から起動するときもやはりOnClipboardChangeに入っていました
Wikiにも
このラベルは、スクリプトが開始された直後にも実行される。
と書いています
しかし、

flag = 1
Sleep, 1000
flag = 0
return
OnClipboardChange:
if( flag > 0 )
return
ToolTip Clipboard data type: %A_EventInfo%
Sleep 1000
ToolTip ; Turn off the tip.
return

とすると、回避できます。これしか方法はないのかな
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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