2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

AutoHotkey スレッド part21

1 :名無しさん@お腹いっぱい。:2015/07/26(日) 20:34:57.30 ID:3Hxp3NyD0.net
■配布元
http://ahkscript.org/download/
2014年1月からAHKLのLが取れて正式にAHKの主流扱いになりました。
新規利用者には日本語の扱いで不具合の無いユニコード版の利用を推奨。
「Autohotkey」でググると旧版(2009年09月25日 Ver104805)の公式ページ
http://www.autohotkey.com/ がTopに来るので注意。

■前スレ
AutoHotkey スレッド part20
http://anago.2ch.net/test/read.cgi/software/1422427426/

■日本語解説等
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/ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


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

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

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

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

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

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


3 :名無しさん@お腹いっぱい。:2015/07/26(日) 20:38:55.75 ID:3Hxp3NyD0.net
■過去スレ
@http://pc7.2ch.net/test/read.cgi/software/1098531338/ Attp://pc7.2ch.net/test/read.cgi/software/1129836713/
Bttp://pc11.2ch.net/test/read.cgi/software/1157043396/ Cttp://pc11.2ch.net/test/read.cgi/software/1184556627/
Dttp://pc11.2ch.net/test/read.cgi/software/1201502896/ Ettp://pc11.2ch.net/test/read.cgi/software/1219130051/
Fttp://pc12.2ch.net/test/read.cgi/software/1230694774/ Gttp://pc12.2ch.net/test/read.cgi/software/1243005818/
Http://pc12.2ch.net/test/read.cgi/software/1253888736/ Ittp://pc12.2ch.net/test/read.cgi/software/1265518996/
Jttp://hibari.2ch.net/test/read.cgi/software/1280482227/ Kttp://hibari.2ch.net/test/read.cgi/software/1296446228/
Lttp://anago.2ch.net/test/read.cgi/software/1317156599/ Mhttp://anago.2ch.net/test/read.cgi/software/1333372506/
Nhttp://anago.2ch.net/test/read.cgi/software/1349735581/ Ohttp://anago.2ch.net/test/read.cgi/software/1367725658/
Phttp://anago.2ch.net/test/read.cgi/software/1383384464/ Qhttp://anago.2ch.net/test/read.cgi/software/1398655195/
Rhttp://anago.2ch.net/test/read.cgi/software/1411360229/ Shttp://anago.2ch.net/test/read.cgi/software/1422427426/

以下FAQ等

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

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

4 :名無しさん@お腹いっぱい。:2015/07/26(日) 20:40:40.55 ID:3Hxp3NyD0.net
■ リマップ・ホットキー割り当て

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を再起動する。

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}

5 :名無しさん@お腹いっぱい。:2015/07/26(日) 20:45:57.07 ID:TPDevIuG0.net
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のジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。

Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。

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

7 :名無しさん@お腹いっぱい。:2015/07/26(日) 20:49:09.47 ID:TPDevIuG0.net
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。

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

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

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

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

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

8 :名無しさん@お腹いっぱい。:2015/07/26(日) 21:00:19.79 ID:TPDevIuG0.net
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」に変更。

9 :名無しさん@お腹いっぱい。:2015/07/26(日) 21:05:18.20 ID:ZZbYoBXG0.net
■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/

10 :名無しさん@お腹いっぱい。:2015/07/26(日) 21:13:12.90 ID:ZZbYoBXG0.net
■派生版
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

11 :名無しさん@お腹いっぱい。:2015/07/26(日) 21:20:25.62 ID:ZZbYoBXG0.net
■質問する場合のアドバイス

「○○という処理をするにはどういうコードを書いたらできますか?」 では返答は無いでしょう。

「○○という処理をすることを目的に、このようなスクリプトを組みましたがうまく動きません
どこを修正すればいいですか?」 という質問なら返答が付きやすい。

もっと言えば、「動かない」だけではなく、「××といった想定外の動作になります」ならベター

スクリプトをロクに書かずに答を教えてくれ、では単なるクレクレとみなされます。
なぜそれが嫌がられるかと言えば、自分で学ぼうとも調べようともせずにまたクレクレするだろうと思われるからです。

12 :名無しさん@お腹いっぱい。:2015/07/27(月) 01:37:14.42 ID:S5otcsZd0.net
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

<わからない11大理由>
1.読まない …現行スレ、テンプレ、取説などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。
10.開き直る …自分の思うようにならないと開き直る。
11.2ちゃんねるをお客様相談室だと思っている。

13 :名無しさん@お腹いっぱい。:2015/07/27(月) 01:37:55.77 ID:S5otcsZd0.net
★教えて君五大要素★

1 読まない             (文盲)
2 調べない             (能なし)
3 試さない              (発想力欠如のアホ)
4 理解力が足りない        (馬鹿)
5 人を利用することしか頭にない (死ね)



           YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね
         /                  \
【探した?】                        NO → なら、ねぇよ
         \
            NO → 死ね

14 :名無しさん@お腹いっぱい。:2015/07/30(木) 11:35:03.48 ID:M8B+XcpF0.net
windows10でwindow spy使ったら
応答不能になって終了しても画面に残っちゃう

15 :名無しさん@お腹いっぱい。:2015/07/30(木) 18:52:43.04 ID:YiGVsR6Y0.net
Win10はウィンドウの左右と下の枠線7px分を透過して見えなくしてるだけだな
WinMoveで画面端に動かすと上だけぴったりで後は隙間が空く

16 :名無しさん@お腹いっぱい。:2015/07/31(金) 13:01:58.84 ID:F6kc0r2b0.net
>>14
Win10にアップデートしてないから試したわけじゃないけど
代わりにAccInfoViewerを使ってみては?
Controlgettextが省かれているので必要なら改造して追加すればいい。
基本的な使い方はダウンロードするページのコメントに書いてある。
http://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip

それとAccInfoViewerの右上にある「Show Acc Structure」をクリックすると
取得したInfoの詳細(ボタンやメニュー等)を選択することが出来る。
選択してみるとメニューやボタン等が重複してることが多けど。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


17 :名無しさん@お腹いっぱい。:2015/07/31(金) 13:51:46.28 ID:SCSL0lts0.net
ux.getuploader.com
はRock54のNGワードのようです

18 :名無しさん@お腹いっぱい。:2015/07/31(金) 14:44:47.50 ID:AnTnCFEn0.net
http://ux.Getuploader.com/

19 :名無しさん@お腹いっぱい。:2015/07/31(金) 18:23:23.62 ID:063vTjGG0.net
loopで次々ファイル情報を変数に入れて表示ってできませんか?
フォルダの中のファイルをリストアップしたいんです

20 :名無しさん@お腹いっぱい。:2015/07/31(金) 18:35:39.16 ID:dngwMttJ0.net
できるよ

21 :名無しさん@お腹いっぱい。:2015/07/31(金) 18:55:52.29 ID:063vTjGG0.net
Loop,%A_scriptdir%\*.*,,1
{
Filelist = %Filelist% %A_LoopFileFullPath%%A_LoopFileTimeModified% `n
}

あ、できたわ。自己解決しました

22 :名無しさん@お腹いっぱい。:2015/07/31(金) 20:27:08.57 ID:sAPF/B6Z0.net
Run, cmd /c POWERCFG /GLOBALPOWERFLAG off /OPTION RESUMEPASSWORD ;(スタンバイ復帰時にパスワード入力を求めない)をした上で
Run, cmd /c SCHTASKS /CREATE /RU %A_ComputerName%\%A_UserName% /RP %pwd% /TN "%taskname%" /TR "%batfile%" /SC ONCE /SD %date% /ST 00:00:00 >%A_Temp%\stdout.txt
みたいにして新規タスクを作ったとき、ahkから「タスクを実行するためにスリープを解除する」設定を有効にする方法ってないです?

SCHTASKS /CREATEや/CHANGEのコマンドラインスイッチでそれらしきものは無いようだし
Run, properties %A_WinDir%\Tasks\%taskname%.job
でもタスクのプロパティは開かないし、レジストリをタスク名で検索してもヒットしないし、どうしたものやら…。

23 :名無しさん@お腹いっぱい。:2015/07/31(金) 20:27:37.90 ID:sAPF/B6Z0.net
ちなみに過去ログのGetCommandLine()関数で「タスクのプロパティ」ウィンドウのコマンドラインを調べても
C:\WINDOWS\Explorer.EXE と出るだけでした。

;######################################################################################################
; Function: GetCommandLine
; Description:
; pidを指定してコマンドラインを取得する関数
; 出展:AutoHotkey スレッド part8( http://pc12.2ch.net/test/read.cgi/software/1243005818/291 )
; Syntax: GetCommandLine([pid = 0, WinTitle = "A"])
;######################################################################################################

GetCommandLine(pid=0, WinTitle="A") {
ptr := (NumGet(DllCall("kernel32.dll\GetProcAddress"
, "UInt",DllCall("kernel32.dll\GetModuleHandle", "Str","Kernel32")
, "Str","GetCommandLineA", "UInt")+1))
hp := DllCall("kernel32.dll\OpenProcess", "UInt",0x001F0FFF, "UInt",0, "UInt",pid, "UInt")
VarSetCapacity(res, 1024)
DllCall("kernel32.dll\ReadProcessMemory", "UInt",hp ,"UInt",ptr, "UIntP",addr, "UInt",4, "UInt",0)
DllCall("kernel32.dll\ReadProcessMemory", "UInt",hp ,"UInt",addr, "Str",res, "UInt",1024, "UInt",0)
DllCall("psapi\CloseProcess", "UInt",hp)
return, res
}

24 :名無しさん@お腹いっぱい。:2015/08/01(土) 14:12:13.05 ID:myyyIzKF0.net
誰か助けてくれ……。
例えば、ファイルを右クリックしてDを押すっていう一連の作業は、
割り当てたいkey::Send,{RButton}Send,L
じゃダメなの?
割り当てたいkey::Send,{RButton & Send,Lにしても無理だし……。
何がいけないんだろう……。

25 :名無しさん@お腹いっぱい。:2015/08/01(土) 14:29:46.99 ID:3ysW3zO/0.net
まず解説サイトよく読みなさいよ

Send,{RButton}してもフォーカスが当たってるファイルをクリックするんじゃなくて、いまカーソルが在るとこを右クリックするだけ。代わりにキーボード右下にあるコンテキストメニューキー{AppsKey}を送ればいい
あと1キーごとにSend,入れなくていい。BAKAと押したければSend,BAKAでいい
つまり、Send,{AppsKey}L

26 :名無しさん@お腹いっぱい。:2015/08/01(土) 14:50:16.94 ID:myyyIzKF0.net
>>25
ごめん。説明が悪かった。
ファイルじゃなくて、とある特定の場所で、
右クリックしたのちにLを押したいんだわ。
だから、Send,{AppsKey}Lってやっても無理だわ……。

27 :名無しさん@お腹いっぱい。:2015/08/01(土) 14:52:09.81 ID:myyyIzKF0.net
>>25
ありがとう。
解決したわ。

28 :名無しさん@お腹いっぱい。:2015/08/01(土) 14:55:23.95 ID:HkIEirnZ0.net
>>24
ヘルプやリファレンスをよく見よう

key::Send,{RButton}Send,L
ではダメ

key::
Send,{RButton}
Send,L
return

もしくは

key::Send,{RButton}L

29 :名無しさん@お腹いっぱい。:2015/08/01(土) 15:19:23.00 ID:myyyIzKF0.net
>>28
ありがとう。
key::
Send,{RButton}
Send,L
return
こういう方法を見たことあったから、Send,が必要だと思ったんだよ。
この方法だと改行しないとダメみたいだな。

30 :名無しさん@お腹いっぱい。:2015/08/01(土) 15:38:10.75 ID:myyyIzKF0.net
十字キーの上下だけ、あるアプリで動作しないんだけど?
左右はちゃんと割り当てられた通りに入力できる。上下だけ機能しない……。
そのほかのアプリでは上下左右機能する。
理由は何が考えられると思います?
ちなみに、無変換+jkliにそれぞれ割り当ててます。

31 :名無しさん@お腹いっぱい。:2015/08/01(土) 16:08:56.05 ID:kE7wEdk30.net
最近暑いからそのせいじゃないかな

32 :名無しさん@お腹いっぱい。:2015/08/01(土) 16:17:32.86 ID:HkIEirnZ0.net
あるアプリって何?それが分からないとどうしようもないけど。
可能性としてはアプリ側でハード入力だけ受け付けるようにしている可能性あり。
作っている途中で仕様変更して、他のキーはソフト入力を受け付けるとかある。

33 :名無しさん@お腹いっぱい。:2015/08/01(土) 16:31:23.98 ID:WqWbJZkt0.net
上みたいな仕様勘違いやTypo等のケアレスミスの可能性

34 :名無しさん@お腹いっぱい。:2015/08/01(土) 17:02:38.08 ID:myyyIzKF0.net
>>32
MicrosoftのOneNote2013ですね。
Auto Hot Keyで設定した十字キーの上下だけ機能しない……。
でも、KeySwapっていうレジストリ?をいじるソフトだと機能します。
なんでだろう。

35 :名無しさん@お腹いっぱい。:2015/08/02(日) 03:49:33.76 ID:jgpMVIyI0.net
>>34
sendmode play
もしくは
sendplay,{up}

>KeySwapっていうレジストリ?をいじるソフトだと機能します。

レジストリはシステム設定変更だから動くのは当然

36 :名無しさん@お腹いっぱい。:2015/08/02(日) 06:20:25.70 ID:K0ehGXOn0.net
>>35
vk1Dsc07B & I::SendInput,{Blind}{Up}
vk1Dsc07B & K::SendInput,{Blind}{Down}

sendplay,{up} 試してダメだったから、上記も試したけど、
ダメでした……。

37 :名無しさん@お腹いっぱい。:2015/08/02(日) 07:46:48.05 ID:jgpMVIyI0.net
>>36
OneNote2013で動作確認してからレスしたんだけど
>>1 の最新版Autohotkeyを使ってる?
Autohotkeyでググったら旧版がTopにくるけど誤って旧版を使ってない?
他のAutohotkeyスクリプトを全て終了した状態で試した?
それでも反応しないなら使っている環境が悪としか言い様がない。

ちなみに俺の環境は↓だけど何れも動作した。
Win7 64bit Pro で AutohotkeyU32、U64
Win7 32bit Starter 32bit で AutohotkeyU32

Sendplay,{up}
Sendplay,{down}

vk1Dsc07B & I::Sendplay,{Blind}{Up}
vk1Dsc07B & K::Sendplay,{Blind}{Down}
のどちらでも反応する

SendInputは反応しない。

38 :名無しさん@お腹いっぱい。:2015/08/02(日) 08:02:24.59 ID:K0ehGXOn0.net
>>35
vk1Dsc07B & I::sendplay,{Blind}{Up}
vk1Dsc07B & K::sendplay,{Blind}{Down}

こういうふうにもして、ユーザー制御アカウントもOFFってみたましたが、
やっぱりダメでした。

何か間違っているのでしょうか?

39 :名無しさん@お腹いっぱい。:2015/08/02(日) 08:08:08.09 ID:K0ehGXOn0.net
>>37
環境はWindows8.1の64bit版です。
バージョンは1.1.22.03です。
ずっと対策練ってるけど、なかなかできないです……。

40 :名無しさん@お腹いっぱい。:2015/08/02(日) 13:31:53.45 ID:bnRNKiwz0.net
>>14
Windows10をクリーンインストールしてAutoHotKeyも新規インストール
今のところすべて問題なく動作しております

41 :名無しさん@お腹いっぱい。:2015/08/02(日) 16:29:13.29 ID:K0ehGXOn0.net
OneNoteの上下キーがAuto Hot Keyで機能しない問題は、
ググると出てくるわ……。
Windows8以降の問題みたい。7だと動くみたい。
Windows7に戻すか、それともWindows10にするか、
どっちがいいだろうか??

42 :名無しさん@お腹いっぱい。:2015/08/04(火) 05:16:31.65 ID:vzvO042E0.net
win8.1のときsettimerで常駐監視させてたら
ときどきCPUがタスクのホストプロセスとやらに15%ぐらい使用されたままになることがあったんだけど
win10だと今のとこならない
.netのプロセスが一瞬跳ね上がったのを一度だけみたけれど

43 :名無しさん@お腹いっぱい。:2015/08/04(火) 12:35:23.44 ID:2LqZAPqi0.net
今までUSBキーボードにPS/2キーボード端子への変換アダプタを挟んでPCのPS/2端子に接続していたんだけど
それだと正常にpower,sleepキーが使えていたけど、
USB端子にそのまま接続するようにしたら上記のホットキーが働かなくなってしまった
何か助言ある人いたらお願いします

44 :名無しさん@お腹いっぱい。:2015/08/04(火) 18:04:14.04 ID:LjUF0Btp0.net
>>43
#Persistent
#InstallKeybdHook

フック+常駐させてキーログを見て指定が正しいか自分で確認

45 :名無しさん@お腹いっぱい。:2015/08/04(火) 18:55:10.44 ID:2LqZAPqi0.net
>>44
ありがとう!見た結果どうもpower,sleep,wakeのホットキーがUSB接続だとそもそも効いてないと分かった。
しかも別の新品のキーボードを挿しても同じだからキーボードの故障でもないっぽい、
そこで一つ前の問題に戻って質問ですが
そもそもUSB接続にしたいと思った理由が最近PCを操作してると突然キーボードが英語キーボードに認識されてしまう現象が頻発してるからなんです
(全角キーが「`」になっちゃう奴)
地域と言語→キーボード→テキストサービスと入力言語→入力言語の切り替え、のホットキーを無効にしてみたがやっぱり起こる
こういう現象ってAHKユーザーの皆さんのお宅では起こったりしますか?
AHKをガシガシ使ってるからなのか、それ以外の理由なのか知りたいので何か助言あるエスパーさんいたらお願いします

46 :名無しさん@お腹いっぱい。:2015/08/04(火) 19:01:23.15 ID:bGwgNVIv0.net
Linuxerになってからというもの、あれだけ頼り切ってたAutoHotkeyとEverythingが無くても別に困らない日々が続いておる

47 :名無しさん@お腹いっぱい。:2015/08/04(火) 19:09:01.36 ID:LjUF0Btp0.net
>>45
解決したいなら問題のスクリプトと環境を書かなければ分からない

英語配列になるのはAHK無関係
https://support.microsoft.com/ja-jp/kb/416037

48 :名無しさん@お腹いっぱい。:2015/08/04(火) 19:22:26.11 ID:YvqEVU7K0.net
>>45
PS/2接続で英語版になったりするならデバイスマネージャーから
キーボードのドライバを更新を選択して日本語(日本語109など)を指定すれば
勝手に変わらないようになるはず。XPを使っていた時はこれで対処してた。
Vista以降で有効なのか解らない。

USB接続に変えてスリープボタン等が効かないのなら、マザーボードのBios設定に
それらの項目があったような気がする。

電源オプションに「スリープボタンを押したとき」の設定があるけど今回は関係ないと思う。
(設定以前にスリープボタンが認識されていないということなので)

49 :名無しさん@お腹いっぱい。:2015/08/04(火) 20:53:20.29 ID:2LqZAPqi0.net
>>46 なんで?暇あったら具体的に教えて
>>47 なるほど
>>48 網羅的にありがとう、3つの段落すべて非常に参考になりました
 今パソの電源落とせないので2つ目の効果はすぐには検証できないけど明日やってみる

50 :名無しさん@お腹いっぱい。:2015/08/04(火) 23:33:08.59 ID:bGwgNVIv0.net
>>49
コマンド使えば困らない程度に同等のことが出来る
→無い環境に慣れる
→→使い方すら忘れる
→→→比較対象が消失することで現状を不便に思わなくなる

まぁあった方がいいんだろうけど。使い方忘れた道具より今使ってる道具だよねって話かな
あと俺が元々キーボード使いだからLinuxのソフト群と相性が良くAHKの補助があまりいらないという話もある

51 :名無しさん@お腹いっぱい。:2015/08/04(火) 23:40:52.46 ID:oE35GsDs0.net
そんな誰のためにもならんはなしされても正直その、困る。

52 :名無しさん@お腹いっぱい。:2015/08/04(火) 23:52:07.93 ID:WpJVsnFL0.net
ahkは常駐させてgui操作やファイル整理やweb巡回の自動化に使ってて
肝心のホットキーは外付けテンキーにちょこっと割り当ててみただけであんまり使えてない
ファイル整理なんかはバッチファイルとかでやるものらしいけどパッと見何書いてるか分からなかった
ahkだとなんかわかりやすくてこっち使ってる

53 :名無しさん@お腹いっぱい。:2015/08/05(水) 00:13:18.71 ID:hhv7THdd0.net
>>51
×誰のためにもならん
○たいていの人のためにならん
白いカラスが存在しないことを証明しろ的な意味で

54 :名無しさん@お腹いっぱい。:2015/08/05(水) 04:41:01.56 ID:o5HmsZkX0.net
>>52
>ahkは常駐させてgui操作やファイル整理やweb巡回の自動化に使ってて
もし、ホットキー設定と別スレッドで使ってるならAutoItっての使うのも良いかも。
まぁ、AHK使い慣れてるみたいだから、こいういのも有るってことで。。。

55 :名無しさん@お腹いっぱい。:2015/08/05(水) 04:42:42.85 ID:o5HmsZkX0.net
>>54
こいういのも → こういうのも

56 :名無しさん@お腹いっぱい。:2015/08/05(水) 06:53:11.34 ID:fWzpjOKi0.net
ネットで拾ったマウスカーソル下の非アクティブなウインドウもスクロールできるようにするWheelScroll.ahkってスクリプト
Windows10のスタートメニューやアプリでスクロールできなくてしょんぼりしながらはずしたけど
10はデフォルトでマウスカーソル下のウインドウのスクロールに対応してたんやね

57 :名無しさん@お腹いっぱい。:2015/08/05(水) 08:37:34.82 ID:7v/7k9WM0.net
FILCOのMajestouch MINILAって、スペースの両端に
Fnキーあるから、買わないほうがいいよね?
Auto Hot Keyで設定どうしてもできなくない?

58 :名無しさん@お腹いっぱい。:2015/08/05(水) 09:16:38.61 ID:nqH3d7r30.net
>>57
ttp://yoshiko.hatenablog.jp/entry/2014/05/06/Majestouch_MINILA_Air_%E8%8C%B6%E8%BB%B8%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F%E6%84%9F%E6%83%B3%EF%BC%86%E8%A8%AD%E5%AE%9A
無理みたいね

59 :名無しさん@お腹いっぱい。:2015/08/05(水) 09:51:25.01 ID:7v/7k9WM0.net
>>58
ああ〜……。
クソ高いHappy Hacking Keyboardを買うことになるのかオレは。

60 :名無しさん@お腹いっぱい。:2015/08/05(水) 19:19:28.72 ID:bi6CPWl80.net
>>57
前スレにも同じ質問が

1 → 1
Fn+1 → F1
Fn → 信号なし

フックなしで出ている信号に対してホットキー登録すればいい
※テストしてないので買うなら自己責任

参考
https://gist.github.com/8765405

61 :名無しさん@お腹いっぱい。:2015/08/07(金) 09:56:52.90 ID:ry5Cqi630.net
ニコニコ実況SDKというものについてなんですが
これはautohotkeyからでも使えるものなんでしょうか?

ホームページからダウンロードしたvcredist_x86とjknicom_releaseをインストールしたあと
VBScriptによるサンプルというものに
  'JKNiCOMを実体化
  Set JKNiCOM = WScript.CreateObject("jkNiCOM.JKNiCOM")
とあったので試しにautohotkeyで
  JKNiCOM := ComObjCreate("jkNiCOM.JKNiCOM")
とやってみても 0x80040154 - クラスが登録されていません とエラーがでてきます

根本的に使い方を間違ってるのでしょうか?
ニコニコ実況のコメント数をみて盛り上がっていれば通知してテレビを表示するということがしたいです
環境はwin10 64bitです

62 :名無しさん@お腹いっぱい。:2015/08/07(金) 12:39:12.21 ID:ry5Cqi630.net
普段使ってる64bit版autohotkeyではだめで
32bitのunicode版autohotkeyでなら使えました
exeに変換するときもBaseFile(bin)のところを64bitだと0x80040154 - クラスが登録されていませんと出ますが
32bitにすると動いてくれました

63 :名無しさん@お腹いっぱい。:2015/08/07(金) 16:44:08.15 ID:040ZZWGA0.net
loop命令で便利な機能作ってみたい
みんなどんなことに使ってる?

64 :名無しさん@お腹いっぱい。:2015/08/07(金) 17:46:25.15 ID:uW9FUtk70.net
>>62
32bit用DLLを64bitソフトで動かすことはできない(OSは例外)
AHKをインストーラで導入した場合は32/64bit両方インストールされているので
スクリプトで使い分けするように書けばいい

65 :名無しさん@お腹いっぱい。:2015/08/07(金) 21:09:16.96 ID:Sz6aWKHa0.net
>>59
Happy Hacking Keyboard 買う前に、ちょっと実際触ってキーピッチチェックした
方が良いぞ。個人的に持ってて使ってるけど、他のキーボードと併用してると
くっ狭いなとおもうときがある。

66 :名無しさん@お腹いっぱい。:2015/08/08(土) 10:52:06.90 ID:ISMb2HQ70.net
>>63
リスト作って突き合わせてフォルダ監視とかインストールされてるのは確定してるけどどこに実行ファイルがあるかわかんない時とか

67 :名無しさん@お腹いっぱい。:2015/08/10(月) 00:29:21.91 ID:awndHrrB0.net
普段ディスプレイに隙間なくウインドウを設置してるんだけど
win10にするとなんか画面端にセットしてたソフトのウインドウが再起動させると微妙にずれるから
普段使うソフトを全部指定した位置・サイズにセットするもの作った
ついでに作業ごとにウインドウの位置切り替えるようにしたった

68 :名無しさん@お腹いっぱい。:2015/08/10(月) 01:53:10.09 ID:sYzf9Mx60.net
俺もウインドウの位置大きさ常に固定しておきたい人だから自作して使い続けてるわw

69 :名無しさん@お腹いっぱい。:2015/08/10(月) 09:20:09.38 ID:LNLE13d70.net
上下左右半分って不便なんだよ。
上3下3の整理が捗る

70 :名無しさん@お腹いっぱい。:2015/08/10(月) 13:09:26.77 ID:Hy3ClwTj0.net
win10のpc再起動させたら
winactivateしてもタスクバーに最小化したウインドウが出てこなくなった・・・・・

71 :名無しさん@お腹いっぱい。:2015/08/10(月) 13:38:14.95 ID:1jvW/jNb0.net
detecthiddenwindows,on
winrestore,wintitle
で出てくるようになった
何が原因なのかさっぱり

72 :名無しさん@お腹いっぱい。:2015/08/10(月) 15:40:30.60 ID:3ij+fdTp0.net
とりあえず
detecthiddenwindows,on
はwikiでしらべときーや

73 :名無しさん@お腹いっぱい。:2015/08/14(金) 17:23:49.09 ID:Dvpxj0pY0.net
ジョイスティックのボタンに応じて、「Send, ×××」で文字の出力をしたスクリプトを組みました。
windows8.1までは何ごともなく動いていたのが、DG-D09IW(windows10機)上で実行しても何も出力してくれません。
どこを見た方がいいですか。

もちろん、ジョイスティックのボタンがwin10上のプロパティで正しく反応していることを確認しています。

※これまでに試してみたこと
・最新版に移行(Autohotkey1.1)
・その最新版で再コンパイルする
・DG-D09IW 上でコンパイル
・実行ファイルを管理者モードで実行
・   〃   互換モードで実行

74 :名無しさん@お腹いっぱい。:2015/08/14(金) 18:42:36.72 ID:R4EUU6JC0.net
>>73
問題のスクリプトを最小限にしてここに書く
AHKのログを見る、ここに書く。スクリプトは実行されているか、キー信号は送信されているか

75 :73:2015/08/14(金) 20:54:17.68 ID:Dvpxj0pY0.net
>>74
ありがとうございます。ボタン1を一度押してから「離した後に」文字が出力されます。

===スクリプト
Joy1::onKeyDown()
onKeyDown(){
SetTimer, WaitForButtonUp_1, 10
return
}
WaitForButtonUp_1:
if GetKeyState("Joy1")
return
SetTimer, WaitForButtonUp_1, off
send, hogehoge
return

76 :73:2015/08/14(金) 20:56:01.52 ID:Dvpxj0pY0.net
===ログ(windows7機)
001: Return (20.37)
001: onKeyDown()
003: SetTimer,WaitForButtonUp_1,10
004: Return
001: Return (0.01)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.01)
007: if GetKeyState("Joy1")
008: Return (0.02)
007: if GetKeyState("Joy1")
008: Return (0.01)
007: if GetKeyState("Joy1")
009: SetTimer,WaitForButtonUp_1,off
010: Send,hogehoge (0.25)
011: Return (1.92)

Press [F5] to refresh.

===ログ(windows10機)
001: Return (876.34)

Press [F5] to refresh.
===

ボタンを押してもonKeyDown()に飛んでくれません。

77 :名無しさん@お腹いっぱい。:2015/08/14(金) 21:09:28.33 ID:/ysh04Z70.net
接続しているコントローラーが優先デバイスになってないとか?
↓を試してみては

2joy1::msgbox,2_1
3joy1::msgbox,3_1
4joy1::msgbox,4_1
5joy1::msgbox,5_1
2joy5::msgbox,2_5
3joy5::msgbox,3_5
4joy5::msgbox,4_5
5joy5::msgbox,5_5

78 :73:2015/08/14(金) 22:00:23.96 ID:Dvpxj0pY0.net
>>77
ありがとうございます。ビンゴでした。
どういうわけか、2番目のジョイスティックとして認識していたようでした。
優先デバイスに指定したら、ちゃんと1番目のジョイスティックとして認識して、
要求通りの動作をするようになりました。

79 :名無しさん@お腹いっぱい。:2015/08/18(火) 02:13:20.13 ID:faf0+ECI0.net
1つのソフトを保存場所を変えて3つ同時に起動させてます
この3つ起動させたソフトを別々に操作したいのですが
WinActivate , title ahk_class ○○○ ahk_exe ○○○
とやっても3つとも同じなので区別して操作が出来ません

exeファイルの場所によって区別したりする方法はないでしょうか

80 :名無しさん@お腹いっぱい。:2015/08/18(火) 02:43:36.28 ID:Gk29n+ex0.net
>>79
WinGet http://ahkwiki.net/WinGet
List で対象全部探してから ID や ProcessPath

81 :名無しさん@お腹いっぱい。:2015/08/18(火) 05:27:00.73 ID:HLq89bww0.net
>>79
実行ファイル名を変えても動く場合があるので変更してみては?
例えば abc.exe なら abc1.exe abc2.exe abc3.exe にする

82 :名無しさん@お腹いっぱい。:2015/08/18(火) 10:33:47.04 ID:IZcp4ksq0.net
ahk_exeにフルパスを指定する

83 :名無しさん@お腹いっぱい。:2015/08/18(火) 11:00:44.63 ID:Q2V/EF320.net
WingetでListを使いloopでリストを分解してPIDなりタイトルなりを探す。

84 :名無しさん@お腹いっぱい。:2015/08/18(火) 11:09:07.60 ID:Q2V/EF320.net
もしくは起動時にAHKを介してrunコマンドで起動させ、PIDを記録しておくのが一番手っ取り早くかつわかりやすいと思うな

85 :名無しさん@お腹いっぱい。:2015/08/18(火) 15:49:57.69 ID:faf0+ECI0.net
WinActivate , ahk_exe C:\○○○.exe
とフルパスをつけることで区別するようにしました
ありがとうございました

86 :名無しさん@お腹いっぱい。:2015/08/18(火) 16:50:27.11 ID:38BX3gJf0.net
使ってる多ボタンマウス(MMO TE)がWin10に対応せず(8時代からソフトで設定しても出来ない項目は多かったが)全く使い物にならないのでAHKでどうにか出来ないかと調べ始めました。
取りあえずMouseGesture2.ahkを入れてやってみましたがその後MouseGestureL.ahkの方が多機能みたいなので変えました。
ジェスチャーをせずマウスクリックだけで設定を実行する事は出来ないでしょうか?
ジェスチャー認識処理の間隔は20以下にしても20に戻ってしまいますね。
カーソル移動量、通常ストロークは0にしています。
MouseGesture2.ahkのReadmeに書いていたので12ボタンまではX1B〜トリガ操作の追加で登録はしました。
Win10だから出来ないのか、マウスクリックだけでは無理なのかどちらでしょうか?
Windows10 Pro 64

87 :名無しさん@お腹いっぱい。:2015/08/18(火) 17:01:39.32 ID:Y/Ko/Nw60.net
>>85
そんなことできるんだ
知らなかったなー

88 :名無しさん@お腹いっぱい。:2015/08/18(火) 17:04:41.84 ID:38BX3gJf0.net
別でMouseGestureL.ahkを使わない方法を試そうと
MButton::F5
XButton1::BS
などもしてみましたが無反応。
これも何か他に認識させる設定とかあったでしょうか?
どうかよろしくお願いします。

89 :名無しさん@お腹いっぱい。:2015/08/18(火) 17:40:00.72 ID:38BX3gJf0.net
あれっ!?
MButton::F5
XButton1::BS
XButton2::!Right
としてたのですが、なぜか左クリックでF5動作になってしまったので1行目を消した所F5では無くなりましたがBS動作になり、それも消しましたが今度は!Right動作になってしまったのでそれも消しました。
どうしてこんな事になったか何かおわかりになりますか?
MouseGestureL.ahkは動かしたままですが、そっちは左クリックには何も設定しておらず「中央ボタン押し下げ」に「;キー操作を発生させる Send{F5}」とはしていましたが無反応です。
何ですかね…

90 :名無しさん@お腹いっぱい。:2015/08/18(火) 18:29:14.80 ID:Gk29n+ex0.net
>>89
原因を探したいなら他の要因は徹底的に排除してからテスト。

AHKのバージョンは?
マウスの設定は?
フックは? http://ahkwiki.net/-UseHook

フックなしの場合はマウスのソフト設定に対してAHK割り当て
フックありは実際のキーに対してAHK割り当て

マウス設定>XButton1>F1 の場合
AHKフックなし>F1::???
AHKフックあり>XButton1::???

91 :86:2015/08/18(火) 19:31:42.18 ID:38BX3gJf0.net
>>90
レスありがとうございます。
バージョンは最新の1.1.22.03
Hookは未記入のOn
MButtonは第3ボタン(ホイール)なので左(第1)ボタンに影響する事って普通は無いですよね?
XButton1も2も左ボタンには関係無いと思うのですが、他のが何か影響与えてるんでしょうかね…
これらを書いた時以外はおかしな動作をしないので問題無いかと思ったのですが、一度全部他を無しで試してみた所変な動作も望んだ動作も無く無反応でした。
他に色々書いてるどれかが悪さをしていたようです。
こんな事を起こしそうな設定とか何か思い付く物ありますでしょうか?

92 :86:2015/08/18(火) 19:34:21.94 ID:38BX3gJf0.net
あ、あとマウスの設定は専用ソフトが使えない(起動や設定は出来るが反映はされない)ので起動はしていません。
ですので特に何も無い素の状態?かと思います。

93 :名無しさん@お腹いっぱい。:2015/08/20(木) 06:31:30.87 ID:A5z4ei1W0.net
>>89
例えばこんな感じになってるんじゃない?

Lbutton::
;(中略)
; Return無しだと↓のF5が発動する。
MButton::F5 ; これを削除すると↓のBSが発動する。
XButton1::BS
XButton2::!Right

94 :名無しさん@お腹いっぱい。:2015/08/20(木) 06:41:54.59 ID:A5z4ei1W0.net
>>89
もうちょっと分かりやすく書くと
下記スクリプトはA〜Eのどれを押しても
メッセージボックス(hoge)が表示される。

a::
b::
c::
d::
e::msgbox, hoge

95 :名無しさん@お腹いっぱい。:2015/08/20(木) 12:06:35.58 ID:EPuGWAPM0.net
>>93-94
レスありがとうございます。
ああ、そうなってます。
ドラッグで文をコピーする物(~LBotton:: (略) Return } })が直前にあります。
Wikiも見直したんですが終わらせる時にReturnって入れますよね?
;を付けるとそこはコメントアウトされるから終了にならないですよね?
でもこの状況になった理由はそれみたいですので理由がわかって良かったです。

96 :名無しさん@お腹いっぱい。:2015/08/21(金) 20:08:10.14 ID:JPGBlagg0.net
http://ux.getuploader.com/autohotkeyl/download/78/%E5%B7%A6%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E9%95%B7%E6%8A%BC%E3%81%97%E9%96%A2%E6%95%B0.ahk

左クリック押しっぱなしで思い思いのラベルの動作をさせるものを作ってみた
keywaitじゃ違和感のあるドラッグにも対応。
MGLに使う場合
#If MGLoff()
とかでくくってな。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


97 :名無しさん@お腹いっぱい。:2015/08/22(土) 11:31:57.80 ID:MIdcIMT10.net
>>96
こうするのか。なるほどなー
Whileやる間を1秒とかどうやって計測すればいいんだろう

98 :名無しさん@お腹いっぱい。:2015/08/22(土) 11:42:43.00 ID:MIdcIMT10.net
自己解決
while前に現在時刻入れて現在時刻+3秒みたいな計算しておいて式に入れておけばいいんだな

99 :名無しさん@お腹いっぱい。:2015/08/22(土) 15:21:06.55 ID:MIdcIMT10.net
具体的にはCountじゃなくて関数の最初のwhile以前に

waittime := A_TickCount+ミリ単位で数字

Count条件のところを

If (A_TickCount > waittime)

にしてやれば指定した時間待ってくれる

100 :名無しさん@お腹いっぱい。:2015/08/22(土) 21:24:12.17 ID:IEzJt/SK0.net
http://ux.getuploader.com/autohotkeyl/download/79/%E5%B7%A6%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E9%95%B7%E6%8A%BC%E3%81%97%E9%96%A2%E6%95%B0.ahk

なるほどと思ったのでちょっと直してみた。元のはパスワード設定していなかったので削除できず放置 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


101 :名無しさん@お腹いっぱい。:2015/08/24(月) 05:34:45.49 ID:aWJLnuLf0.net
変数内の文字列に全角の英数字があれば半角に置換するにはどうすればいいでしょか

102 :名無しさん@お腹いっぱい。:2015/08/24(月) 08:49:17.76 ID:XzCBRntl0.net
RegExReplace

103 :名無しさん@お腹いっぱい。:2015/08/24(月) 12:30:03.53 ID:BBDOPljJ0.net
ググったらいいものがあった

;全角英数字を半角英数字に変換
WideToNarrow( str )
{
buf =

Loop , Parse , str
{
If( RegExMatch( A_LoopField , "[!-〜]" ) )
{
code := Asc( A_LoopField ) - 65248
buf := buf . Chr( code )

}Else
{
buf := buf . A_LoopField
}
}

Return buf
}

104 :名無しさん@お腹いっぱい。:2015/08/24(月) 13:30:20.08 ID:JbvfckjL0.net
WheelLeft チルト左
WheelRight チルト右

チルトつきマウスって使ったことないけどahkに割り当てられるなら欲しくなってきたな
これって誤爆したりせず正確に入力できるんだろうか

105 :名無しさん@お腹いっぱい。:2015/08/24(月) 13:31:59.43 ID:TDGzbkU50.net
ワイルドカードを使用したフォルダの削除が以下のスクリプトでは出来ませんでした。
お力添えをお願いします。
FileRemoveDir, c:\jpg\*, 1 ;jpgフォルダ内のフォルダを削除

106 :名無しさん@お腹いっぱい。:2015/08/24(月) 13:48:00.27 ID:snF1k1Ry0.net
>>104
問題なく動くものとそうでないものがある
マウス側でF13やF14を当てれるゲーミングマウスであるならソレにリマップしてからなら使える。
タブ移動、モニタ切り替えとかにとても便利

>>105
msgbox % ErrorLevel
でそもそも成功してるかどうか見てみる

107 :名無しさん@お腹いっぱい。:2015/08/24(月) 13:56:21.20 ID:fWpSRoYm0.net
Loop , C:\jpg\* , 2 , 0
{
FileRemoveDir , %A_LoopFileLongPath%
}

108 :名無しさん@お腹いっぱい。:2015/08/24(月) 14:13:17.46 ID:TDGzbkU50.net
>>106
有難うございます。
ErrorLevelは1でした。しかし変化はなかったです。

>>107
無事出来ました!有難うございました。

109 :名無しさん@お腹いっぱい。:2015/08/24(月) 18:15:24.97 ID:pdTUfM210.net
左クリック長押し関数。調子に乗って選択部分の文字列オートコピー機能をつけてみた。
MGLにも対応したのでプラグインフォルダにポンと入れればそのまま使えます。
多分これで最後。

http://goo.gl/hnmSYZ

110 :名無しさん@お腹いっぱい。:2015/08/24(月) 19:46:55.67 ID:saPJBpY50.net
>>103
関連で自分用に作ったやつ
つべとかでよくあるタイトルコピると濁点が別文字に分かれてるのを直すもの

DakutenNaoshi(STR) {
While (ICHI := RegExMatch(str, "[カ-トハ-ホ]【※1】")) {
MOJI := SubStr(STR, ICHI, 2)
STR := RegExReplace(STR, MOJI, Chr(Asc(MOJI) + 1))
}
While (ICHI := RegExMatch(STR, "[ハ-ホ]【※2】")) {
MOJI := SubStr(STR, ICHI, 2)
STR := RegExReplace(STR, MOJI, Chr(Asc(MOJI) + 2))
}
Return, STR
}

【※1】の位置はU+3099の濁点、【※2】にはU+309Aの半濁点

111 :名無しさん@お腹いっぱい。:2015/08/25(火) 13:30:29.37 ID:zVK9XD+N0.net
>>109
あー、まじ便利だコレ
俺の糞マウスホイールクリックしにくかったからマジ助かる

112 :名無しさん@お腹いっぱい。:2015/08/25(火) 19:23:39.17 ID:HVWI17xf0.net
今まで、1台のパソコンでAutoHotkeyを使っていましたが、パソコンをもう1台買って
2台で作業をするようになりました。マウスとキーボードは1台づつでするために
mouse without bordersというソフトを導入してこれで作業しています
ところが、いままで1台でAutoHotKeyで、マウスを動かしたりダブルクリックさせたりと
いうのをしていたのですが、2台にすると、たまーにですが、パソコンAにしか
AutoHotKeyはインストールもしていないのに、マウスの移動が、パソコンBのモニターの方へ
移って、パソコンBのモニター上で動いてしまう、ということが起こります
特に操作を誤ってマウスをパソコンBの方に動かした、とかはしていません
どういう条件でこのようなことが起こるのか、再現条件を調べているのですがよくわかりません
似たような経験をされた方はいませんか。
ちなみに、AutohotKeyでさせてるのは、ある場所を右クリックすると、パソコンAのモニタ上の
5か所を自動でクリックしながら回る、みたいなものです

113 :名無しさん@お腹いっぱい。:2015/08/25(火) 21:20:48.14 ID:E0WBYw330.net
どこかのテンプレか何か?

114 :112:2015/08/26(水) 12:23:10.04 ID:4nXUt1/O0.net
>>112ですが、マルチモニターでやってる方はいても複数パソコンでやってる方は
いらっしゃらないのかな

115 :名無しさん@お腹いっぱい。:2015/08/26(水) 12:29:38.05 ID:ZcWGXrDu0.net
複数PCは別にマウス別にキーボードだから正直答えようがない
そのmouse without bordersというソフトとの問題ならソレを導入してない人にとっては解決策の提示のしようがない

116 :名無しさん@お腹いっぱい。:2015/08/26(水) 12:54:30.78 ID:4nXUt1/O0.net
mouse without bordersを使うと便利ですよ
以前はどこドアを使っていました。1セットのマウス、キーボードで複数のパソコンを操作できます
ソフトの種類は違っても使っている方は多いと思っていたのですが。是非お勧めです
mouse without bordersの問題なのかな。なら仕方がないですね

117 :名無しさん@お腹いっぱい。:2015/08/26(水) 13:00:07.68 ID:4nXUt1/O0.net
問題になってるAutoHotKeyのスクリプトを使うときは、とりあえず
mouse without bordersをオフにすることで対応することにしました

118 :名無しさん@お腹いっぱい。:2015/08/26(水) 14:27:33.65 ID:X6N1SlBd0.net
mouse without borders使ってたけど
マウスとキーボードのデバイスが微妙に連動しないのが面倒くさいのと
MS特有のお行儀の悪さが気になって使うのやめた

グローバルホットキーで Ctrl+Alt+任意キー を設定できるが
Ctrl+Alt+Shift+任意キー や Ctrl+Alt+Win+任意キー なんかも全部乗っ取られる
AHKのホットキーは勿論Photoshopは普通のアプリのショートカットも全部持ってかれる

119 :名無しさん@お腹いっぱい。:2015/08/26(水) 14:54:38.29 ID:4nXUt1/O0.net
ありがとうございます。どうもAutoHotKeyとの相性は悪そうですね
どこドア2はXPのときに使っててWin7になって対応してなかったのかな、で使えなくて
やめました。でもXPのときもどこドアですが複数パソコンでやってたのですが
あまりこういう問題は起きてなかったと思います。なんか残念

120 :名無しさん@お腹いっぱい。:2015/08/26(水) 22:02:14.32 ID:PxOK28lS0.net
わからん。ドラッグスクロールのahkみてもさっぱりわからん。MGLに組み込みたいのに

121 :名無しさん@お腹いっぱい。:2015/08/26(水) 22:06:14.42 ID:KnOhpy/70.net
MGLの話はスレチになるかもだが
ドラッグスクロールはMGLにデフォで入ってる

122 :名無しさん@お腹いっぱい。:2015/08/26(水) 22:35:31.87 ID:PxOK28lS0.net
まじか。まじだ。
これか
if (MG_While()) {
MG_DragScroll2(1, 0, 30, 30)
}
それを>>109の長押しクリックで切り替えてスクロールさせたいと思ったけどちゃんと読んでくれない。
何がいけないんだろう

Mdoit:
if (MG_While()) {
MG_DragScroll2(1, 0, 30, 30)
}
return

ではいかんのか

123 :名無しさん@お腹いっぱい。:2015/08/26(水) 22:37:45.84 ID:PxOK28lS0.net
ああ、そうか、MG_WhileてMG通してないからダメか。こっちから調べていかないとダメか

124 :名無しさん@お腹いっぱい。:2015/08/26(水) 22:58:18.37 ID:PxOK28lS0.net
あーそうかMG_DragScroll2を分解しなきゃいけないのか

125 :名無しさん@お腹いっぱい。:2015/08/26(水) 23:49:03.07 ID:/aMJcH2P0.net
Lbuttonの設定するととても怪しい挙動になるのがMGLの欠点

126 :名無しさん@お腹いっぱい。:2015/08/27(木) 01:31:33.67 ID:TGBhd8a90.net
都合により既存の.ahkを全体にわたって編集しようとしたら遠大すぎてやる気が……

127 :名無しさん@お腹いっぱい。:2015/08/27(木) 02:11:47.99 ID:5BeDDZgS0.net
そうならないよう機能毎にプラグイン化しとくべき

128 :名無しさん@お腹いっぱい。:2015/08/27(木) 15:17:02.45 ID:6R7nKD+m0.net
Windows8.1で右クリックでコンパイルしようとすると、Error opening the destination fileが出て出来ない。
フォルダーのアクセス権の問題と考えて、コマンドプロンプトからattrib -Rしたが変化なし。
しょうがないからユーザーフォルダ直下に管理者権限でインスコしなおしたけど、症状変わらず。

本家掲示板にも同じ症状の人がいたんだけど、同じことをしても治らない。
http://www.autohotkey.com/board/topic/28599-error-error-opening-the-destination-file/

結局、Ahk2Exe.exeから直接コンパイル出来たんだけど、右クリックが使えないと不便。
何かご存じの方いらっしゃいますか?

129 :名無しさん@お腹いっぱい。:2015/08/27(木) 15:49:22.05 ID:A1kVA00s0.net
>>128
>>8 管理者権限は?

130 :名無しさん@お腹いっぱい。:2015/08/27(木) 15:56:03.66 ID:6R7nKD+m0.net
>>129
コマンドプロンプトも管理者権限で実行しましたがダメでしたね
再インスコのときは注意して管理者権限で実行しましたが、やはりダメでしたね。
attribで表示させるとどのファイルにもRが表示されないのがこれまた不思議なんですよね。
うちのPCだけの問題なのか、他のPCにも同じ現象があるのか知りたいですね。
ちなみに適当なフォルダに新しいフォルダを作成すると、読み取り専用で作成されてしまうことも発見しました。
これは正常な現象なんでしょうか?

131 :名無しさん@お腹いっぱい。:2015/08/27(木) 18:41:30.79 ID:TGBhd8a90.net
ところでMS Edge周りでなんか問題とかあった?
いや、使う気はないんだけど

132 :名無しさん@お腹いっぱい。:2015/08/27(木) 18:41:41.52 ID:QrGpaeh50.net
セキュリティー系のアプリが邪魔してるとか?

133 :名無しさん@お腹いっぱい。:2015/08/27(木) 18:58:41.77 ID:6R7nKD+m0.net
>>131
ググりました。ブラウザなんですね。使用していませんね。
>>132
avira antivirus proを使用してますが、すべての機能を無効にしても症状は変わりません。

134 :名無しさん@お腹いっぱい。:2015/08/27(木) 20:02:23.90 ID:HDPjNIFE0.net
口調が変な奴はおよそそいつ自身に問題がある

135 :名無しさん@お腹いっぱい。:2015/08/28(金) 02:05:27.60 ID:kfCF/ZI40.net
コマンドを発動させるために使ったホットキー自体を無効化する設定ってないですかね?
Poserというソフトでショートカット変更をしたいので
こういうスクリプトを書きました

!Rbutton::
Send,{space down}{Ctrl down}{Lbutton down}
Loop
{
sleep, 15
GetKeyState, state, Rbutton , p
if state = u
break
}
Send, {space up}{Ctrl up}{Lbutton up}
return

やりたいことはAlt+Rbuttonを押した時に
space + Ctrl +Lbuttonを押してPoserにあるショートカットを使いたいのですが、
このかき方だとPoserにある別のAlt+Lbuttonで動くショートカットがかなりの確率で
誤爆してしまうので、Altを完全に無効にしたいのです

136 :名無しさん@お腹いっぱい。:2015/08/29(土) 01:35:19.24 ID:27J7ydmj0.net
>>135
KeyWaitでAlt離してからSend

137 :名無しさん@お腹いっぱい。:2015/08/29(土) 23:40:15.51 ID:9L1dhnYA0.net
>>120です
だいぶドラッグスクロールできそうな雰囲気になってきた。
んだけどMozillaエンジンやChromeのスクロールメッセージがわからんくてpostmessageで送れない

誰か知らない?

138 :名無しさん@お腹いっぱい。:2015/08/30(日) 13:15:33.91 ID:XxCQb5ii0.net
>>48
この勝手に英語キーボード問題って実は根深いんだよね
ユーザーができることってPS2かUSBかぐらいしかないんだよね
それでもシステムが常に英語キーボードを使いたがる場合
それを防ぐ手段は無いと思う
レジストリに韓国語キーボード設定が紛れていたりとか
他にも原因はいろいろあるが
キーボードを変えるのは本末転倒だけど
キーボードを分解して物理的に中の配線をつなぎ替えるって手段も通じそうにないし
ってなるとソフト的にキーを入れ替えて
システムからは英語キーボードで認識させておいて
日本語キーボードのように使えるようにマッピングを入れ替えるみたいな
スマートでない手段しか解決はない

139 :名無しさん@お腹いっぱい。:2015/08/30(日) 17:35:57.25 ID:C8RQoIT90.net
           (ヽ∧__∧
           、ヽ`∀´> <呼ばれて無いのにチョチョチョチョーン
            )   )つ
            >⌒)ノ
            ゝノ/
   パカチョン    ノ~ノ
  /|     ///
  | |    ///
  | |ミ ///.
  |/ ̄    /
   " ̄ ̄ ̄ ̄

140 :名無しさん@お腹いっぱい。:2015/08/30(日) 17:35:58.77 ID:+8DTYiHZ0.net
>>137
スクロール関連ではTrackWheelがいろんな方法を取り入れてる、難解だけど参考になるよ
https://sites.google.com/site/agkh6mze/trackwheel

なおスクリプトは64bit版ahkでは動かない模様

141 :名無しさん@お腹いっぱい。:2015/08/30(日) 21:22:45.27 ID:jAU9uCOQ0.net
>>136
キーを離してしまうと厳しいですね Alt押しで別の動作もさせるので
Alt+Mbutton、Alt+Lbutton、Alt+Rbuttonと合わせて3パターンで切り替えるのでAltはずっと押していたいんです
どうもでした

142 :名無しさん@お腹いっぱい。:2015/09/01(火) 19:21:17.34 ID:ATL7zO2X0.net
文字列を入れた配列を結合したいのですが
autohotkeyにjoinのようなものはないのでしょうか?
自分でforで回して文字列を作るのでしょうか?

143 :名無しさん@お腹いっぱい。:2015/09/01(火) 21:16:44.69 ID:oOn6cjJn0.net
俺も拍子抜けしたんだけどね、文字列の後に文字列入れたら文字列になるんだよ

hoge = %hoge% %hage%

144 :名無しさん@お腹いっぱい。:2015/09/01(火) 22:35:54.73 ID:ATL7zO2X0.net
出来ました
ありがとうございます

145 :名無しさん@お腹いっぱい。:2015/09/02(水) 11:34:03.68 ID:27CQDY4v0.net
Everythingで検索した結果のファイルパスを変数に入れたいのですが
以下の関数でやると記号のハートマークが含まれてたりするとその部分が?になってしまいます
RetunのところにStrGetでCP932に変換してみたら一文字目だけ変数に入るだけでした
どこかおかしいところがあるんでしょうか?

es_StdoutToVar( search_word )
{
objShell := ComObjCreate("WScript.Shell")

;コマンドライン版Everything,es.exeのインストール場所
objExec := objShell.Exec( "インストール場所\es.exe" " " search_word )

While , !objExec.StdOut.AtEndOfStream
{
strStdOut := objExec.StdOut.ReadAll()
}

Return strStdOut
;Return StrGet(&strStdOut,"CP932")
}

146 :名無しさん@お腹いっぱい。:2015/09/02(水) 20:04:32.30 ID:wcJk7beK0.net
あぷろだのコンテキストメニューがモロにそれなんで試してみたら?

147 :名無しさん@お腹いっぱい。:2015/09/04(金) 02:41:16.97 ID:DGVcxvcT0.net
文字列の選択範囲が存在するか否かを調べる方法はありませんか?
^cをSendしてClipWaitしてErrorLevelを調べる、
とやってみたのですが、
使っているエディタは範囲選択していない場合にCTRL+Cを押すと
カーソルのある行全体をコピーするので、正しく検出できませんでした

148 :名無しさん@お腹いっぱい。:2015/09/04(金) 03:14:02.68 ID:VDkFX/7X0.net
末尾が改行コードかどうかで判別するとか

149 :名無しさん@お腹いっぱい。:2015/09/04(金) 04:21:08.46 ID:DGVcxvcT0.net
なるほど
それなら出来そうですね
ありがとうございます

150 :名無しさん@お腹いっぱい。:2015/09/04(金) 05:00:30.42 ID:0fv3FZza0.net
ウィンドウIDを取得して
そのID名+x、そのID名+yという変数にウィンドウ座標を代入したとして、
その変数から取得した座標を取り出すにはどうしたらいいですかね?

こんなかんじにやってもうまくいかなかったんですが、こういう感じのことがしたいです。

Winget,test,ID,A
WingetPos,%test%_x,%test%_y
msgbox, %%test%_x%, %%test%_y%

151 :名無しさん@お腹いっぱい。:2015/09/04(金) 05:40:44.53 ID:Mfg9efKS0.net
>>150
Winget , test , ID , A
WingetPos , %test%_x , %test%_y , , , ahk_id %test%
MsgBox , % %test%_x "," %test%_y

こうすると見れたよ
http://ahkwiki.net/Expression#.E5.A4.89.E6.95.B0

152 :名無しさん@お腹いっぱい。:2015/09/04(金) 06:50:50.14 ID:0fv3FZza0.net
>>151
できました ありがとうございました

153 :名無しさん@お腹いっぱい。:2015/09/04(金) 23:10:57.00 ID:7YsI0USd0.net
Gui, Add, Edit にて複数のテキスト入力欄を作った際に、
エンターキーで次のテキスト入力欄に移動したいのですがどのようにすればいいでしょうか。
また、移動後最初に入力欄に表示されているテキストを選択状態にしたいのですができますでしょうか。


Gui, Add, Edit , Number Limit4 , 1234
Gui, Add, Edit , Number Limit3

上記1234のテキストを選択状態(反転状態)にしたいのです。
1234のままでよければエンターで次のテキスト入力欄に、変更が必要ならそのままテンキーを押して変更を行えるようにしたいのです。

宜しくお願いします。

154 :名無しさん@お腹いっぱい。:2015/09/04(金) 23:34:35.40 ID:mkbLU6h20.net
>>153
OnMessage()かエンターホットキー+#If
反転状態=全選択 フォーカスあわせてctl+a

155 :名無しさん@お腹いっぱい。:2015/09/04(金) 23:36:03.54 ID:o3G+4tqy0.net
EnterにTabをSendさせるとか

156 :名無しさん@お腹いっぱい。:2015/09/04(金) 23:42:55.92 ID:eYYZnR930.net
ルー語みたいだな

157 :名無しさん@お腹いっぱい。:2015/09/05(土) 01:44:18.45 ID:UXTJ6C/Y0.net
一度Shift押すともう一度Shift押すまで押しっぱなしになるってShift::Send,{Shift Down or UP}でできますか?
トグル状態にする書き方が分かりません

158 :名無しさん@お腹いっぱい。:2015/09/05(土) 03:19:52.89 ID:76NUCaeT0.net
2点教えて下さい。

IfInString, clipboard, C:
run, explore %Clipboard%
else IfInString, clipboard, D:
run, explore %Clipboard%

@こちらが動作しないのですが、理由が分かりません。
Aまた、簡素な記述法を教えて頂ければ幸いです。

159 :名無しさん@お腹いっぱい。:2015/09/05(土) 05:43:01.20 ID:WX1fwC0+0.net
>>157
フラグ管理すればいい
shift::
send, % !shiftflag ? "{shift down}" : "{shift up}"
shiftflag := !shiftflag
return

>>158
俺の環境ではそのままで動いたよ
OSとAutohotkeyのVerは何?

160 :157:2015/09/05(土) 07:49:16.43 ID:UXTJ6C/Y0.net
>>159
ありがとうございます!
しかしShift押しっぱなしだとその間Shift+なショートカットキーが押せないことに気づきました。あきらめます

161 :名無しさん@お腹いっぱい。:2015/09/05(土) 10:27:37.59 ID:76NUCaeT0.net
>>159
windows10 build 10525
ahk 112203 x64です。

162 :名無しさん@お腹いっぱい。:2015/09/05(土) 10:31:42.19 ID:76NUCaeT0.net
あ、失礼しました。
次の行に
;の文があったのですが、それを削除したら動作しました。
なぜかは、、若ってませんw

163 :名無しさん@お腹いっぱい。:2015/09/05(土) 10:42:30.07 ID:p/CJbrsT0.net
>>158
Aこう書くこともできるよ

If( RegExMatch( Clipboard , "C:|D:" ) )
{
Run , explore %Clipboard%
}
Return

164 :名無しさん@お腹いっぱい。:2015/09/05(土) 13:01:45.41 ID:76NUCaeT0.net
できました。なるほど、正規表現で表現すれば良いのですね。
ありがとうございました。

165 :名無しさん@お腹いっぱい。:2015/09/05(土) 20:48:50.98 ID:1jU9sHQY0.net
間違って過疎スレの方に書いてしまったので再度質問です

Arr := {}
Arr := [{Key: Value}
, {Key: Value}
, {Key: Value}

, {Key: Value}]

のように一度に代入する内容が多いとエラーが出るのですが、Object.Push等を使い分割して入れていくしかありませんか?

166 :名無しさん@お腹いっぱい。:2015/09/05(土) 21:13:51.76 ID:2aSk8rw40.net
>>165
こうしたら動くけど、やりたいことと違うんかな?

Arr := {}
Arr := {"Key1": "Value1"
, "Key2": "Value2"
, "Key3": "Value3"
, "Key4": "Value4"}

MsgBox, % Arr["Key1"]

167 :名無しさん@お腹いっぱい。:2015/09/05(土) 21:25:49.13 ID:1jU9sHQY0.net
>>166
どうもです
内容は実際は異なるものでそれ自体は問題なく代入できてますが
その量が多いとエラーが出るので、仕方なく.Push等で分割して入れてるのです

Arr := {}

Arr.Push := ({Key: Value}
, {Key: Value}
, {Key: Value}

, {Key: Value})

Arr.Push := ({Key: Value}
, {Key: Value}
, {Key: Value}

, {Key: Value})



これらを分割せずに代入したいのです
あと.Pushだと


Arr[Key].Push := ({Key: Value}
, {Key: Value}
, {Key: Value}

, {Key: Value})

のようにキーを指定して追加することができないのがちょっと不便なのです

168 :名無しさん@お腹いっぱい。:2015/09/06(日) 00:24:12.56 ID:Nw/T60NE0.net
いまモニターを3台つないでるんですが、プライマリ以外のデスクトップ上にマウスカーソルがあるときにF1を押した場合にAHKを動かしたいんですがうまくいきません
二枚目と三枚目のデスクトップ上の固有のClassが#32769
でProcessNameはcsrss.exeみたいですが二枚目と三枚目のデスクトップ上にマウスカーソルがある判定がつくれません
何かいい方法はないでしょうか?

169 :名無しさん@お腹いっぱい。:2015/09/06(日) 00:40:42.32 ID:Nw/T60NE0.net
>>168ですがなんとかなりました 失礼しました
二枚目三枚目のデスクトッをクリックした時にWindowSpyでもClass名が取得できないので
その時に

WinGetClass, AC, A
if !AC

の判定を使ってスクリプトを動かすようにしたらうまくいきました

170 :名無しさん@お腹いっぱい。:2015/09/06(日) 00:40:59.01 ID:T4UZ6BTe0.net
単純にモニタの最大をsysgetで持ってきて、そこからプライマリ分を引いたら2枚目、二枚目分を引いたら3枚めになる。
例えば横一列に並べてる1920ワイド3枚なら最大は5760だし、それはsysgetで持ってくるなりできたと思う。

1921からが2枚目となり、3841からが三枚目となる。
あとはMousegetposで場所を判定してやればいい。

171 :名無しさん@お腹いっぱい。:2015/09/06(日) 00:59:39.93 ID:Nw/T60NE0.net
>>170
Windows7のWin+shift+左右矢印キーで動くウィンドウ移動ショートカットに使うので一枚目二枚目三枚目判定はsysgetで作ってますが
それだと二枚目三枚目のデスクトップ上にマウスカーソルがある判定がつくれなかったのです

172 :名無しさん@お腹いっぱい。:2015/09/06(日) 09:06:26.68 ID:p3to+8FO0.net

Mousegetposで位置取れなかったん?

173 :名無しさん@お腹いっぱい。:2015/09/06(日) 09:07:22.25 ID:rl/qzrB40.net
ファイルの種類(例えばmp4が動画か音楽か)の判定をスマートにする方法はありますか?
今のところ真空波動研を使って力業でやってますが少し時間が掛かってしまいます

174 :名無しさん@お腹いっぱい。:2015/09/06(日) 11:34:13.87 ID:p3to+8FO0.net
SinkuSuperLite.exe /s よりもスマートな方法ってことかな
dllcallで直接sinku.dllと叩くとか?

175 :名無しさん@お腹いっぱい。:2015/09/06(日) 15:15:03.29 ID:rl/qzrB40.net
>>174
そういう方法(というかVer?)があったのですか。ありがとうございました

176 :名無しさん@お腹いっぱい。:2015/09/06(日) 16:13:54.63 ID:rl/qzrB40.net
ループを使わずにディレクトリ内にファイルがあるか調べる方法はありますか?

177 :名無しさん@お腹いっぱい。:2015/09/06(日) 16:21:39.32 ID:T4UZ6BTe0.net
If(FileExist("data.txt"))

ピンポイントならこれ

178 :名無しさん@お腹いっぱい。:2015/09/06(日) 16:37:38.03 ID:rl/qzrB40.net
>>177
説明が悪かったですね。ディレクトリ内が空っぽであるかをスマートに調べる方法があれば知りたいのです
関数作れば事足りることではありますが

179 :名無しさん@お腹いっぱい。:2015/09/06(日) 16:39:58.19 ID:T4UZ6BTe0.net
そういう意味ではloopが最もスマートかつ管理しやすいかと。

180 :名無しさん@お腹いっぱい。:2015/09/06(日) 16:42:36.39 ID:rl/qzrB40.net
>>179
分かりました。ありがとうございました

181 :名無しさん@お腹いっぱい。:2015/09/06(日) 21:16:42.64 ID:Nw/T60NE0.net
>>172
位置はとれますけどウィンドウハンドルやclassNN情報が拾えませんでした


Autohotkey_Lでinspect_toolbar_ids.ahkって動かないのでしょうか?
このスクリプトの

Progress,%tmp%,%num%/%cnt%

の部分で
Error: Max window number is 10.
というエラーがでていて動かないのですがどういうエラーなのかよくわかりません

182 :名無しさん@お腹いっぱい。:2015/09/06(日) 23:58:03.69 ID:/ARUILMV0.net
#include Lib\IME.ahk

#If !IME_GET() ; IME がOFFの時だけ有効

;変換キーでIMEオン(IE10で不具合)
;sc079 :: Send,{Blind}{vkF2sc070}

IE10以上だとこれが正常に動作しないんだよな

183 :名無しさん@お腹いっぱい。:2015/09/07(月) 00:17:19.68 ID:oseNuDgH0.net
MouseGetPos,,,Winid,Ctr
ControlClick,%Ctr%,ahk_id %Winid%,,L
return

おかしーな、なんでコレで動かないんだろう
ただアクティブじゃないウィンドウの上で左クリックしたいだけなのに

184 :名無しさん@お腹いっぱい。:2015/09/07(月) 14:18:15.90 ID:icUjHksq0.net
win7からwin10にしたらime.ahkのIME_SetConvModeが動作しなくなったのだけど
何か仕様が変わったのかな?

185 :名無しさん@お腹いっぱい。:2015/09/07(月) 18:37:01.59 ID:0prwMOwD0.net
Win10使ってないからわからんけどついにIMMからTSFに切り替わったってことなのかな
OS側がIMM互換残してくれてないとIME.AHKではどうしようもないと思う

186 :名無しさん@お腹いっぱい。:2015/09/07(月) 20:59:42.12 ID:icUjHksq0.net
>>185
将来的にはTSFオンリーになるという話は聞いていたような気がするけど
ついにその時が来たってことなのかなぁ

187 :名無しさん@お腹いっぱい。:2015/09/08(火) 18:25:22.21 ID:DiTxEGzB0.net
スクリプトでテキストデータを貼り付ける時は
クリップボードにテキストを入れてsend ^vで貼り付け
とやってるんですがクリップボードの履歴を利用できるソフトにその内容が入ってしまいます

クリップボードを介さないで^vのようにパッとテキストを貼り付ける方法ってあるんでしょうか?

188 :名無しさん@お腹いっぱい。:2015/09/08(火) 20:45:46.24 ID:pZfe2zr60.net
ドロップダウンメニューが表示されている時に特定の動作をさせたいんですけど
ドロップダウンメニューの判定ってどうとればいいですかね?

189 :名無しさん@お腹いっぱい。:2015/09/08(火) 20:56:21.82 ID:8bMO9ZgT0.net
>>14
亀レスだけどWin10にしても問題なく動いたよ
もし、古いWindow Spyを使ってるなら更新してみては

190 :名無しさん@お腹いっぱい。:2015/09/08(火) 21:15:37.03 ID:8bMO9ZgT0.net
>>187
クリップボードを使う前にクリップボード監視ソフトを停止(終了)、終わったら再開(起動)

>>188
ドロップダウンリストのクラスを取得してWinWaitかWinExist()で判定。
ほとんどは #32769 だけどソフトによって違う場合あり。

F9::
mousegetpos, , , hwnd
wingetclass, WClass, ahk_id %hwnd%
clipboard := WClass
msgbox, %WClass%
return

191 :名無しさん@お腹いっぱい。:2015/09/08(火) 22:26:42.47 ID:pZfe2zr60.net
>>190
なるほどどうも

さっきまで自分で試してたんですけど

MouseGetPos,,,hwnd,,3
Wingettitle,title,ahk_id %hwnd%

これでタイトルを取得出来ない場合はドロップダウンメニューという判定でもうまくいきました

192 :名無しさん@お腹いっぱい。:2015/09/09(水) 01:58:13.37 ID:sfIbO/Lh0.net
AHKでMedia Player Classcのフルスクリーン時の最前面化を解除したいんですがどうにもなりません。
誰かここでそういうことをしてる人はいませんか?

Winset, Alwaysontop, , A

で最前面解除しても、プレイヤーがアクティブ状態になるとすぐに最前面化されてしまいます。
何かいい方法はないでしょうか?

193 :名無しさん@お腹いっぱい。:2015/09/09(水) 02:20:18.82 ID:sfIbO/Lh0.net
>>192ですがこのタイマーでなんとかいけましたがなるべくPCに負荷をかけたくないのでタイマー以外の方法があったら教えて下さい。


SetTimer,MPC_FullScreen,350
MPC_FullScreen:
ifwinexist ahk_group MPC
{
WinGet, MPC_windows, ID, ahk_group MPC
WinGet, ExStyle, ExStyle, ahk_id %MPC_windows%
if (ExStyle & 0x8)
{
Winset, AlwaysOnTop, off, ahk_id %MPC_windows%
return
}
else
{
return
}
}
return

194 :名無しさん@お腹いっぱい。:2015/09/09(水) 02:26:42.78 ID:qqzz6oSe0.net
>>192
俺の環境じゃ最前面化されないな。
MPCの「表示」→「手前に表示」(または動画部分を右クリック → 表示 → 手前に表示)にチェックが付いてるだけじゃ?

195 :名無しさん@お腹いっぱい。:2015/09/09(水) 02:48:05.08 ID:sfIbO/Lh0.net
>>194
いい忘れました Media Player Classic BEとHCを使ってるんですが、BEのほうだけフルスクリーン表示の時に
手前表示を切っても最前面かされてしまうのです。いろいろ調べたんですが解決策がみつかりませんでした。

196 :名無しさん@お腹いっぱい。:2015/09/09(水) 02:55:06.35 ID:qqzz6oSe0.net
それはソフト側のバグなんじゃ

197 :名無しさん@お腹いっぱい。:2015/09/09(水) 06:03:44.25 ID:sfIbO/Lh0.net
>>196
ソフトの仕様らしいです

198 :名無しさん@お腹いっぱい。:2015/09/09(水) 10:31:37.09 ID:k1YibYKM0.net
>>193
タイマーを使わないならこれ
ttps://sites.google.com/site/agkh6mze/howto/winevent

199 :名無しさん@お腹いっぱい。:2015/09/09(水) 13:41:54.81 ID:eoTr4N+F0.net
ControlsendってBlindつかえないのん?

200 :名無しさん@お腹いっぱい。:2015/09/10(木) 05:14:35.69 ID:Ogg7g5iG0.net
>>198
例にあるウィンドウがアクティブになったら何かをさせる、のスクリプトを使って、MPCプレイヤー以外のウィンドウがアクティブになった時に
MPCプレイヤーが最前面なら最前面化をその解除する、というスクリプトを作りましたがそれで動きました。ありがとうございます。

ただEVENT_SYSTEM_〜のイベント識別番号に最前面判定がないのですがそんなもんですかね?もしかしてそれもあったりしますか?

201 :名無しさん@お腹いっぱい。:2015/09/10(木) 14:35:46.46 ID:EJyV3hmS0.net
DELLCALLいみわかんね

202 :名無しさん@お腹いっぱい。:2015/09/10(木) 16:38:15.18 ID:Lu4JniIi0.net
デルのサポセンか何かか

203 :名無しさん@お腹いっぱい。:2015/09/10(木) 20:34:29.26 ID:T57FNj1S0.net
タッチパッドT650の三本指スワイプに別のアクションを割り当てたいのですが
三本指スワイプのコードが分かりません

204 :名無しさん@お腹いっぱい。:2015/09/10(木) 21:52:24.11 ID:En8CayDb0.net
ここはお前らのつぶやき場じゃねえ
いみわかんねとか分かりませんとか言われてもそうですかとしか

205 :名無しさん@お腹いっぱい。:2015/09/11(金) 02:44:50.22 ID:KgQY+xdZ0.net
そうですね

206 :名無しさん@お腹いっぱい。:2015/09/11(金) 17:29:40.35 ID:oJhYNlfM0.net
タスクバーにあるウィンドウだけピックアップしてリストにするのどうすればいいの
wingetリストじゃ今ないウィンドウも拾っちゃう

207 :名無しさん@お腹いっぱい。:2015/09/11(金) 17:55:31.33 ID:BoB/uXR80.net
ExStyleに0x00000080を持つかどうかで分岐させるとか

208 :名無しさん@お腹いっぱい。:2015/09/13(日) 04:16:53.85 ID:tppm85mx0.net
Internet Explorerの保護モードとは?

Internet Explorerの保護モードを有効にしておくと、悪意のあるプログラムやスクリプトなどがシステムの重要な情報を窃取したり、
システムを変更したりするのを可能な限り防ぐことができる。その設定方法や現在の状態の確認方法などを解説する。

これが代表的だけど,ストアアプリに関してもキーボード・マウスフック系ツールは全滅だな

209 :名無しさん@お腹いっぱい。:2015/09/13(日) 05:18:38.41 ID:tppm85mx0.net
IME_GET(WinTitle="")
;-----------------------------------------------------------
; IMEの状態の取得
; 対象: AHK v1.0.34以降
; WinTitle : 対象Window (省略時:アクティブウィンドウ)
; 戻り値 1:ON 0:OFF
;-----------------------------------------------------------
{
ifEqual WinTitle,, SetEnv,WinTitle,A
WinGet,hWnd,ID,%WinTitle%
DefaultIMEWnd := DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hWnd, Uint)

;Message : WM_IME_CONTROL wParam:IMC_GETOPENSTATUS
DetectSave := A_DetectHiddenWindows
DetectHiddenWindows,ON
SendMessage 0x283, 0x005,0,,ahk_id %DefaultIMEWnd%
DetectHiddenWindows,%DetectSave%
Return ErrorLevel
}
これが機能しないんだよな

210 :名無しさん@お腹いっぱい。:2015/09/13(日) 10:12:25.20 ID:JTOkkRYB0.net
この辺が参考になるかも
http://d.hatena.ne.jp/applet_at_h/20101001/1285906107
http://d.hatena.ne.jp/applet_at_h/20100612/1276335340
http://d.hatena.ne.jp/applet_at_h/20111114/1321272744

211 :名無しさん@お腹いっぱい。:2015/09/13(日) 12:55:50.14 ID:tppm85mx0.net
意図通り動作するマシンとしないマシンがあって混乱中
ほぼ同じ環境なのに

212 :名無しさん@お腹いっぱい。:2015/09/13(日) 15:54:22.92 ID:0IksCrEg0.net
あるスクリプトから既に常駐状態の別のスクリプト内にある
aaa:
というラベルを実行するにはどうすればいいでしょうか

213 :名無しさん@お腹いっぱい。:2015/09/13(日) 18:51:04.35 ID:ZFeoAT7n0.net
あるスクリプトからPostMessage
別スクリプトでOnMessage()→GoTo, aaa

214 :名無しさん@お腹いっぱい。:2015/09/13(日) 20:01:20.58 ID:0IksCrEg0.net
>>213
ありがとうございます
下のようにやることでできるようになりました

送られる側
MsgNumber := 2457 ;数値はてきとう
OnMessage( MsgNumber , "FunctionName" )

FunctionName( wParam , lParam , msg , hwnd )
{
MsgBox , ウインドウメッセージが送られました`n`nwParam:%wParam%`nlParam:%lParam%`nmsg:%msg%`nhwnd:%hwnd%
If( wParam = 1 )
{
MsgBox , 1を実行
}
}

送る側
DetectHiddenWindows, On
Msg := 2457 ;メッセージ番号
wParam := 1 ;メッセージの第1引数
PostMessage , Msg , wParam , , , 送られる側のスクリプトのパス ahk_class AutoHotkey

215 :名無しさん@お腹いっぱい。:2015/09/13(日) 20:53:44.44 ID:lBJNhxx/0.net
>>214
横からだけど使わせてもらうサンクス。

216 :名無しさん@お腹いっぱい。:2015/09/14(月) 01:31:47.47 ID:OiVrGh/t0.net
OnMessageってのはautoexecutionとかで1回起動させてしまえば
timerイベントで常に実行させておく、みたいなことをする必要無いですかね?

217 :名無しさん@お腹いっぱい。:2015/09/14(月) 01:49:16.10 ID:mUgBafdp0.net
ないよん
定期監視じゃなくイベントが発生したタイミングで起動するためのものだし

218 :名無しさん@お腹いっぱい。:2015/09/14(月) 02:42:19.29 ID:OiVrGh/t0.net
>>217
どうもです

219 :名無しさん@お腹いっぱい。:2015/09/14(月) 22:58:53.08 ID:u4kScnm60.net
If (○○)
Return

みたいなのって一行で書けないものかな?

220 :名無しさん@お腹いっぱい。:2015/09/14(月) 23:38:37.10 ID:mUgBafdp0.net
IfEqual

221 :名無しさん@お腹いっぱい。:2015/09/14(月) 23:46:07.93 ID:efpHlwrD0.net
三項演算子

でも視認性メンテナンス性を考えたらちゃんと綺麗にパターンにそってスクリプトは書いとくほうがいいぞ
後で何してんだこれとか自分で書いてるものを読み解くのに時間食われたらそれこそ時間の無駄だし

222 :名無しさん@お腹いっぱい。:2015/09/15(火) 01:02:26.04 ID:hsiwELNn0.net
三項演算子は基本変数への代入系しかできないじゃね
return frag ? true : false などの関数の戻り値指定は有効だが
frag が有効なときだけreturnする、は無理かと

1行でルーチン抜けたいならこっち
IfEqual frag,1, return

http://ahkwiki.net/IfEqual
>IfEqualのようなコマンド名の形式の場合、更にカンマで区切って条件に一致した場合に実行するコマンドを記述できる。

223 :名無しさん@お腹いっぱい。:2015/09/15(火) 03:20:04.42 ID:/YUs9+C50.net
>>220-222
どうもです。IfEqualというコマンドがあったのかーと思ったらv2では排除されてたようです…
三項演算子みたいな省略的な書き方が他にもあるのかと気になってたのでVerまでは考慮しておりませんでした。すんません

224 :名無しさん@お腹いっぱい。:2015/09/15(火) 03:51:15.34 ID:A4RzQ5uM0.net
行を減らしさえすれば美しいという幻想はいつまで続くのか

225 :名無しさん@お腹いっぱい。:2015/09/15(火) 06:17:48.39 ID:/YUs9+C50.net
単に使い分けたいだけなんだがなぁ
視認性優先して改行入れて行数増やすこともあるよ

226 :名無しさん@お腹いっぱい。:2015/09/15(火) 07:12:09.96 ID:UsCwcKFK0.net
v2なら if true, MsgBox ってな感じでいけるみたいやで
ドキュメント見ただけだけど

227 :名無しさん@お腹いっぱい。:2015/09/15(火) 07:24:15.25 ID:/YUs9+C50.net
>>226
ほんとだ。ありがとう

228 :名無しさん@お腹いっぱい。:2015/09/15(火) 10:02:28.32 ID:hsiwELNn0.net
v2て、そんな特殊なもの使うのにver指定もなしで普通に質問されてもさあ
特にif回りはバグ元になるから旧コマンド一掃するよって謳ってるverなのに

229 :名無しさん@お腹いっぱい。:2015/09/15(火) 14:37:46.05 ID:mWkYRkN50.net
マウスを動かした方向とは別の出力をさせるみたいなことってできますかね?

たとえば、

AAAAAAAAAAAAAAAAAA

という文字列があったとして、この文字列の中央で左クリックしながら右にマウスを動かして文字を選択した場合に、
中央から右側にマウスカーソルは動くけれど、ドラッグ選択される文字は中央から左側になる、みたいな感じのことがしたいです

230 :名無しさん@お腹いっぱい。:2015/09/15(火) 15:46:53.97 ID:3CHmYEvD0.net
できるよ。現座標Xに対して+かーでmousegetposで調べればいい。

231 :名無しさん@お腹いっぱい。:2015/09/15(火) 15:48:21.63 ID:3CHmYEvD0.net
あ、でも多分カーソルの反対にドラッグとか言うのは無理かも。
shiftとLeft送ることになると思う。

232 :名無しさん@お腹いっぱい。:2015/09/15(火) 16:31:57.16 ID:/YUs9+C50.net
>>228
三項演算子のような他言語でも用いられる事がある書き方で解決できるのか疑問に思ってたので
AHK特有のコマンド(または仕様)にまで及ぶ内容だとは想定できませんでした。すんません

233 :名無しさん@お腹いっぱい。:2015/09/15(火) 16:42:38.32 ID:3CHmYEvD0.net
思いついたのは

mousegetpos,X,Y
while getkeystate("Lbutton","P"){
mousegetpos,X2,Y2
idouX = X-X2
If (idouX > 20)
send,+{left}
}

みたいな感じ。動かしても居ないから結果は知らんけど。
要するに押してる間中pos監視してうごいた分でsendを送る

234 :名無しさん@お腹いっぱい。:2015/09/15(火) 19:46:05.35 ID:5o1yy9Si0.net
自分にぴったりなサイトがあった

日本語で書いた変数名を英語にしてくれるサイト
https://codic.jp/

素人かつ英語苦手だとまず変数名や関数名をどうするかで悩むんだよね
まぁahkは日本語で変数名かけるけども

235 :名無しさん@お腹いっぱい。:2015/09/15(火) 19:52:35.84 ID:Eux4ANEd0.net
>>234
真っ白だと思ったらgoogle-analytics.comをブロックしてるせいだった

236 :名無しさん@お腹いっぱい。:2015/09/15(火) 20:01:13.60 ID:tUDP7N170.net
解析ブロックしたら表示されないってひどい作りだなw

237 :名無しさん@お腹いっぱい。:2015/09/15(火) 20:09:23.81 ID:Eux4ANEd0.net
まあ、サービス改善にもなるかもしれないし別にいいけどw

238 :名無しさん@お腹いっぱい。:2015/09/15(火) 22:47:08.77 ID:zhVi9RCM0.net
USBキーボードとPS/2キーボードで挙動が異なる現象に遭遇
F1 & H::send,{Blind}{Left}
でShiftも押した場合に
USBキーボードだとShift+←と同じ挙動
PS/2キーボードだと1文字だけShift+←,その後はShift+Hと同じ挙動です.
この現象は既知なのでしょうか?
VerはWin8.1が1.1.22.04でWin7 32bitが.1.22.06です.2台のPCで同じ現象が見られています.

239 :名無しさん@お腹いっぱい。:2015/09/16(水) 00:52:28.10 ID:tU5xmvOn0.net
>>233
文字選択のほうがわかりやすいかとおもってそちらを例えに出しましたが
例えがまずかったですね +{Left}だとまずいです すいません

前にここでPoserの質問をしていたのは自分ですが
今回やりたいことは、Poserのビューポート上で、左クリック+ドラッグ操作をする時にマウスの動きをいじりたかったのです
具体的にはマウスを左クリックしながら右にドラッグすると上方向にドラッグしたことになり、
左にドラッグすると下にドラッグしたことになることにしたかったのです
Poserのビューポート操作を自分がよく使う3Dアプリと同じように操作できるように設定したいのですがうまくいきません
その3Dアプリだと左右ドラッグ操作で発動するショートカットがあるのですがPoserではこれが上下ドラッグになっているのです

240 :名無しさん@お腹いっぱい。:2015/09/16(水) 01:23:31.20 ID:TmYsYnFU0.net
強制的にそういう操作するならやっぱりwhileだな。mousemoveの合わせ技だ。
要するに指定方向に差分だけ進むようにすればいいんだけど、その分While監視だと処理は重くなる

241 :名無しさん@お腹いっぱい。:2015/09/16(水) 05:13:15.83 ID:H3wp36km0.net
UserAgentを変更してURLからHTMLを取得して変数に格納する方法を教えて下さい。
使ってるのは AutoHotkeyU32 (v1.1.22.06) です。
二つのモジュールを使って試みたもののやり方が悪いのか成功せず。

#Include %A_ScriptDir%/httpQuery.ahk
; http://www.autohotkey.com/board/topic/30624-function-httpquery-get-and-post-requests-update-036/
#Include %A_ScriptDir%/UrlDownloadToVar.ahk
; http://www.autohotkey.com/board/topic/98495-super-urldownloadtovar-can-set-timeout-charset-urlcodepage-proxy-cookie-referer-useragent-enableredirects/

URL = http://www.ugtop.com/spill.shtml
UserAgent = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)

# httpQuery
html := ""
httpAgent := UserAgent
httpQuery(html, URL)
file := FileOpen("output-A.html", "w")
file.Write(html) ; 空になる
file.Close()

# UrlDownloadToVar
html := UrlDownloadToVar(URL, "20932", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
httpAgent := UserAgent
httpQuery(html, URL)
file := FileOpen("output-B.html", "w")
file.Write(html) ; 文字化けする
file.Close()

242 :名無しさん@お腹いっぱい。:2015/09/16(水) 05:15:54.43 ID:H3wp36km0.net
すいません。二番目のソースに一番目のソースが混ざりました

# UrlDownloadToVar
html := UrlDownloadToVar(URL, "20932", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
file := FileOpen("output-B.html", "w")
file.Write(html) ; 文字化けする
file.Close()

243 :名無しさん@お腹いっぱい。:2015/09/16(水) 12:34:50.08 ID:5kMnRgYx0.net
>>241-242
"20932" → "euc-jp"
これで文字化けは直ると思ったが、不完全だった。(何でだろ?)

ちなみに、このスレのURLで実験したが、問題なかった。
文字化けする
UrlDownloadToVar("http://anago.2ch.net/test/read.cgi/software/1437910497/l50", "")
文字化けしない
UrlDownloadToVar("http://anago.2ch.net/test/read.cgi/software/1437910497/l50", "shift_jis")

回答にならなくてスマン

244 :名無しさん@お腹いっぱい。:2015/09/16(水) 17:55:15.94 ID:H3wp36km0.net
>>243
今しがた、同じ条件で試してみたんですが、今度は文字化けなく成功しました。
初めに"euc-jp"と指定したときは確かに文字化けしたような気がするんですが……。
(そういえばその後にバージョン情報を調べるついでにAHKを最新版にしたので、
もしかしたらそのことが関わっているのかもしれません)
一応エディタをアンドゥしまくって失敗時のソースを復元し、再度実行してみても成功しました。
ともかく、解決できてよかったです。ありがとうございました。

245 :名無しさん@お腹いっぱい。:2015/09/16(水) 18:31:53.58 ID:5kMnRgYx0.net
>>244
今気付いて>>243を再確認してみた。
html := UrlDownloadToVar(URL, "euc-jp", "", "", "", "", "", UserAgent) ; 20932 == euc-jp
MsgBox, % html
ファイルに出力しないで直接MsgBoxで見たら文字化けは無かった。

246 :名無しさん@お腹いっぱい。:2015/09/17(木) 00:08:29.44 ID:0GNCebUh0.net
>>245
こちらで再試行したときはファイル出力も成功しました。
一応、バージョン情報も確認してみてください。

いつの間にか2chのdatが取得できなくなってたので、
早速UrlDownloadToVarを利用したスクレイパーを書いてみました。
http://pastebin.com/8hhEtvFx

>m ^と$が各行の行頭・行末にマッチするようになる。
作る途中で気付いたんですが、これ m) 働いてなくないっすか
RegExMatch("
(
aaa
bbb
ccc
)", "m)^(bbb)", $)
MsgBox % $1 ; 空文字

247 :名無しさん@お腹いっぱい。:2015/09/17(木) 00:13:06.45 ID:0GNCebUh0.net
あとこれも初めて知った。トラップが多い!

/* 複数行コメントの終わりが単独だと
*/
ToolTip, 実行される
Sleep, 2000

/* 複数行コメントの終わりが単独でないと */
ToolTip, 実行されない
Sleep, 2000

248 :名無しさん@お腹いっぱい。:2015/09/17(木) 01:13:17.18 ID:WqwVZrqD0.net
>>240
そうですか ちょっとためしてみます どうもです

>>247
これが原因だったんだ たまにスクリプトが動かないことがあったけど ためになった

249 :名無しさん@お腹いっぱい。:2015/09/17(木) 03:54:06.32 ID:3HuGyT6d0.net
初心者向けのページ教えて

250 :名無しさん@お腹いっぱい。:2015/09/17(木) 08:01:13.31 ID:qHToz6EC0.net
>>1

251 :名無しさん@お腹いっぱい。:2015/09/17(木) 08:08:55.12 ID:kM3ONwaq0.net
>>246
mオプションでのデフォルトの「行末」は\r\n
ヒアドキュメントの改行コードは\nなのでマッチしてない

RegExMatch("aaa`r`nbbb`r`nccc", "m)^(bbb)", $)

or

RegExMatch("
(
aaa
bbb
ccc
)", "m`n)^(bbb)", $)

252 :名無しさん@お腹いっぱい。:2015/09/17(木) 08:10:11.30 ID:kM3ONwaq0.net
×「行末」 ○「改行」

253 :名無しさん@お腹いっぱい。:2015/09/17(木) 10:41:54.18 ID:ji2+y1tj0.net
ウィンドウの右上の閉じるボタンの位置情報取得ってどうすればできます?

254 :名無しさん@お腹いっぱい。:2015/09/17(木) 11:09:40.82 ID:wVWznDfL0.net
SysGetで
SM_CXSIZE (30)
SM_CYSIZE(31)
SM_CYFRAME(33)
SM_CXFRAME(32)
あたりの値を求め、ウィンドウサイズ左端から逆算して割り出す
尚、最大最小?等のアイコンがあるかどうかはWinGet, Styleで調べられる

255 :名無しさん@お腹いっぱい。:2015/09/17(木) 11:10:43.33 ID:wVWznDfL0.net
×左端から
○右上端から

寝ぼけたすまん

256 :名無しさん@お腹いっぱい。:2015/09/17(木) 11:37:01.52 ID:+U+k5cUm0.net
width-30,10あたりを適当に押してるけどw

257 :名無しさん@お腹いっぱい。:2015/09/17(木) 12:22:08.24 ID:A/7kw9Bt0.net
>>253
その情報を取得して何がしたいか分からないけど、
例えば、「閉じる」ボタンを押したらウインドウを閉じるんじゃなく最小化したいとかなら、
以下の関数使えばマウスポインタの位置が「閉じる」ボタンの上か調べられる

>【 名 称 】 Autohotkey マウス関数群 (コピペ/組込用)(MUS.ahk)
>【製作言語】 AutoHotkey Scripts (http://www.autohotkey.com/)
>【 更新日 】 2012.11.11
>【 製作者 】 eamat.
>【 URL 】 http://www6.atwiki.jp/eamat/
の、MUS_GetTitleBarPos()関数で「20」が返って来るかどうか。

↑何か質問の答になってないようなので、別な答を。

力技だけど、閉じるボタンの画像を用意して「ImageSearch」で位置を取得する。

258 :名無しさん@お腹いっぱい。:2015/09/17(木) 16:27:55.00 ID:4LAmt04I0.net
Firefoxのキーボードショートカット
https://support.mozilla.org/ja/kb/keyboard-shortcuts-perform-firefox-tasks-quickly

Firefoxというブラウザのキーボードショートカット
「次のタブグループ」:Ctrl+`
をAutohotkeyからFirefoxへ入力させたいんですが
Send , ^`
とやっても無反応で
Send , ^+@
とやるとどうも「前のタブグループ」:Ctrl+Shift+`
が発動します
意図したとおり、「次のタブグループ」、「前のタブグループ」のキーを入力させるにはどうすればいいでしょうか

259 :名無しさん@お腹いっぱい。:2015/09/17(木) 16:57:47.86 ID:F1JlH5P90.net
>>258
手動で試してみたが次のタブグループは日本語キーボードだと反応しない?
> 補足: Customizable Shortcuts 拡張機能を用いて、キーボードショートカットをカスタマイズすることができます。
変えたらできるかも未確認

×次のタブグループ Ctrl + `   一部のキーボードレイアウトでのみ使用可
○前のタブグループ Ctrl + Shift + `  一部のキーボードレイアウトでのみ使用可

前のタブグループ
×Send ^`
○Send ^`` ; エスケープ
○Send ^+@ ; 上と同じ意味

260 :名無しさん@お腹いっぱい。:2015/09/17(木) 17:03:19.64 ID:F1JlH5P90.net
補足
A → Shift + a
` → Shift + @

同じ意味になる
Ctrl + ` → Ctrl + Shift + @
Ctrl + Shift + ` → Ctrl + Shift + @

261 :名無しさん@お腹いっぱい。:2015/09/17(木) 17:23:23.84 ID:0GNCebUh0.net
>>251
なるほど、そういうことでしたか。ありがとうございます。

262 :名無しさん@お腹いっぱい。:2015/09/18(金) 16:38:39.51 ID:MADHZaul0.net
>>254
やってみたけどうまくいかない。実測では50くらいあるのにフレームとサイズ合わせても50に届かない。なんでだろう

263 :名無しさん@お腹いっぱい。:2015/09/18(金) 18:00:02.89 ID:9G09CoR10.net
環境書いてないからわからんが
エアロ(非クラシック)だと閉じるボタンだけ他より横に長い
あと解像度の高いモニタでDPI 100%超の設定で使ってると取得値が変わるのかも

うちは最小ボタン横にツールチップ表示させてるが
厳密なサイズ割り出しまでは必要ないので適当なオフセット値入れてごまかしてる

264 :名無しさん@お腹いっぱい。:2015/09/18(金) 18:14:57.18 ID:z07x5dup0.net
エアロは取得できないのか。知らんかった

265 :名無しさん@お腹いっぱい。:2015/09/18(金) 18:23:03.13 ID:9G09CoR10.net
いや取得できないわけじゃないけど最大&最小と閉じるボタンとでボタンのサイズ違うでしょ
エアロがどうかっていうよりXP以降の仕様かな、詳しくはわかんない

ちなみにエアロかどうかは
DllCall("dwmapi\DwmIsCompositionEnabled","IntP",_ISENABLED)
で取得できる

266 :名無しさん@お腹いっぱい。:2015/09/19(土) 02:09:26.93 ID:AqLWnhbc0.net
戻り値を見る限り成功してるっぽいんですが、キャプチャが空なのは何故でしょうか?
ret := RegExMatch("test", ".+", "$")
msgbox,
(
ret: %ret%
$: %$%
)

267 :名無しさん@お腹いっぱい。:2015/09/19(土) 02:22:22.86 ID:y9C3jt2l0.net
"$" → $

268 :名無しさん@お腹いっぱい。:2015/09/19(土) 02:38:47.25 ID:AqLWnhbc0.net
おお……ありがとうございます

269 :名無しさん@お腹いっぱい。:2015/09/19(土) 02:40:53.93 ID:zNQEN6xY0.net
>>266
たぶん勘違いしてるのだと思うけど
>RegExMatch(Target, Pattern [, OutputVar = "", StartingPos = 1])
これはOutputVar引数に何も書かなかった場合に「""」(つまり空)と指定したことになりますよって意味ね
ダブルクォーテーションで括って下さいって意味ではない

270 :名無しさん@お腹いっぱい。:2015/09/19(土) 02:46:55.06 ID:AqLWnhbc0.net
>>269
まさにその通りの勘違いです
ご解説ありがとうございます

271 :名無しさん@お腹いっぱい。:2015/09/20(日) 08:15:12.82 ID:ZeFnM2lq0.net
Guiのウィンドウ番号からウィンドウタイトルを取得する方法はありますか?

272 :名無しさん@お腹いっぱい。:2015/09/20(日) 09:10:41.16 ID:Q0X8RffF0.net
任意のキー入力、任意のマウスボタンやマウスの動きを待機することって出来ますか?

たとえば、スクリーンセーバーから復帰する時は、キーポードやマウスの任意の動きで反応しますよね?

それと同様に、
いかなる操作にも反応できる状態で待機して、検出した瞬間に次の処理へ進むようにしたいのです。

273 :名無しさん@お腹いっぱい。:2015/09/20(日) 09:35:44.10 ID:8fr300CT0.net
任意っつーとユーザーが決めた特定のキーや操作(optional) って思ってしまうけど
スクリーンセーバー解除はどんな操作でもOK (any)って意味だよね

OnMessageでフックかければ大抵の挙動は拾えるんじゃない?

274 :名無しさん@お腹いっぱい。:2015/09/20(日) 18:47:43.66 ID:cLEyLRXR0.net
>>271
作成するときにウィンドウハンドル保存すれば?

Gui, 2:New, HwndVar2, BBB
Gui, Add, Text,, BBB
Gui, Show
Gui, New, HwndVar1, AAA
Gui, Add, Text,, AAA
Gui, Show
WinGetTitle, Title1, ahk_id %Var1%
WinGetTitle, Title2, ahk_id %Var2%
MsgBox % Var1 "`n" Var2 "`n`n" Title1 "`n" Title2
Return

275 :名無しさん@お腹いっぱい。:2015/09/20(日) 19:17:11.44 ID:ZeFnM2lq0.net
>>274
ああ無理っぽいですかまぁでもそれで事足りますセンキューベリマッチ

276 :名無しさん@お腹いっぱい。:2015/09/20(日) 22:07:18.39 ID:EytMjWIu0.net
words := [3,1,8]
Sort,words
res =
for i, word in words
{
res := res i word "`r`n"
}
MsgBox % res

こうしても、ソートされていません
文字列をソートしたかったのですが出来なかったので
数字にしてみたのですが、やはりされていませんでした
どこが間違ってるのでしょうか?

277 :名無しさん@お腹いっぱい。:2015/09/20(日) 22:28:55.68 ID:AtBTsPzi0.net
>>276
Sortコマンドはオプションを省略すると区切り文字が改行になる
と表の中に紛れて分かりにくいけどwikiに書いてある

words := "bbb`nccc`naaa"
Sort, words
MsgBox, % words

カンマ区切り時文字列をソートするならこんな感じ
words := "bbb,ccc,aaa"
Sort, words, D`,
MsgBox, % words

278 :名無しさん@お腹いっぱい。:2015/09/21(月) 05:30:20.29 ID:FQ68Fwod0.net
他の言語からの類推から
配列にしてからソートするのだと思いこんでいたのですが
そもそも配列にする必要もなかったのですね
ありがとうございました

279 :名無しさん@お腹いっぱい。:2015/09/21(月) 08:57:43.49 ID:gz/D8cNZ0.net
逆にAHKってSortコマンドで配列内のソート出来るの?

280 :名無しさん@お腹いっぱい。:2015/09/21(月) 09:05:50.26 ID:FX6AvoOw0.net
ていうかahkって配列あったのかw
今まで一度も必要としたことがない

281 :名無しさん@お腹いっぱい。:2015/09/21(月) 12:57:01.93 ID:I8YrMLMK0.net
IME_GET()がまともにIMEのモードを取得できてないとずっと悩んでいたけど
単にIME.ahkのバージョンが古いだけだったわ

282 :名無しさん@お腹いっぱい。:2015/09/21(月) 18:51:14.14 ID:xY99p/h30.net
>>281
>単にIME.ahkのバージョンが古いだけだったわ
なぬっ!?っと思ってすぐさま確認したら「IME20121110.zip」のままじゃねーかよ。
でも、WheelScroll.ahkの新しいヤツ、「WheelScroll20150711.zip」がゲットできたから良かった。
さmくす。

283 :名無しさん@お腹いっぱい。:2015/09/22(火) 20:15:53.44 ID:IXkpDD1f0.net
>>273
ちょっと忙しくてまだ検証できてない。
しばらく先になるけど必ず調べるから。

情報ありがとう!

284 :名無しさん@お腹いっぱい。:2015/09/23(水) 22:17:09.28 ID:JYxXadw30.net
AutoHotkey v1.1.22.06をモバイルキーボードで使っているのですが
本体の小ささからファンクションキーが存在しないため、

*1::keyWait, 1, T0.25
 if ErrorLevel
  send,{Blind}{F1}
 else
  send,{Blind}1
 keyWait, 1
 return

こんな感じで長押しするとファンクションキーを呼び出せるようにしてみました
しかし高速で数字キーを1,2,3と入力した場合3,2,1と出力されてしまいます
調べたところkeyWaitはマルチスレッド処理がなされず
割り込んだ順で処理されるのが理由だとわかりましたが、何か他に方法はないものでしょうか?
テンプレにあるAutoHotkey_Hでexampleを元にマルチスレッドを試してみましたが
こちらでも同じ結果になりました(自分の理解が足りないせいかもしれませんが)

285 :名無しさん@お腹いっぱい。:2015/09/24(木) 02:03:16.94 ID:ylp5wp8j0.net
>>284
SetTimer使えばいけそうな気がしたけど
やってみたら同じキーを連打したときうまくいかなかった

http://pastebin.ca/raw/3172289

286 :名無しさん@お腹いっぱい。:2015/09/24(木) 04:35:19.63 ID:Rx/njl7o0.net
キーを押しっぱなしにすると少しの遅延のあと連打されるじゃないですか
あの遅延を短くするにはどうすればいいんですか?

287 :名無しさん@お腹いっぱい。:2015/09/24(木) 04:44:04.09 ID:Rx/njl7o0.net
ああこれAHKで書かなくてもWindowsで設定できるんですね
失礼しました

288 :名無しさん@お腹いっぱい。:2015/09/24(木) 08:51:02.84 ID:npkfS45d0.net
>>284
先頭にCriticalを追加でどう?

289 :名無しさん@お腹いっぱい。:2015/09/24(木) 13:31:29.29 ID:5yaO6Szn0.net
対象のファイル・フォルダが移動中でないか調べる方法はある?(移動はAHKのコマンド経由だとは限らない)

290 :名無しさん@お腹いっぱい。:2015/09/24(木) 14:30:15.85 ID:5yaO6Szn0.net
↑が無理でしたら、FileMove等の移動・コピーが完了するまで待たせる方法はありますか?v2

291 :名無しさん@お腹いっぱい。:2015/09/24(木) 14:41:45.63 ID:VW4hw6oq0.net
移動やコピーのコマンドって移動が終わるまで次の行には行かないんじゃない
Fastcopyみたいなソフト使ってコピーするならRunwaitで終わるまで待つとか

292 :名無しさん@お腹いっぱい。:2015/09/24(木) 15:06:56.03 ID:Q+MPQBZ30.net
フォルダのファイルをloopでリストアップして変数に入れて突き合わせとか。
Dropbox完了まで待つってのがアッブローダーにあるからそれみて参考にすれば?

293 :名無しさん@お腹いっぱい。:2015/09/24(木) 16:26:55.60 ID:5yaO6Szn0.net
>>291-292
参考にしますセンキューベリマッチ

>移動やコピーのコマンドって移動が終わるまで次の行には行かないんじゃない
についてですがこれは本当ですか?
何故か一度に大量のファイルをリネームすると失敗してるファイルがあります

例えば"D:\image\"というフォルダに900kb程度のpngファイルを複数入れたとします
ファイルは連番で先頭には"黒"が付いてたとして、"黒"を"白"にしてまた"黒"に戻すスクリプトを書きました
(フォルダの中身 黒001.png, 黒002.png…)

Loop, 1000
{
Var := A_Index
LoopFiles, D:\image\黒*.png ; 黒を白に変える
FileMove, % A_LoopFileFullPath, % StrReplace(A_LoopFileFullPath, "黒", "白")
LoopFiles, D:\image\白*.png ; 白を黒に戻す
FileMove, % A_LoopFileFullPath, % StrReplace(A_LoopFileFullPath, "白", "黒")
LoopFiles, D:\image\*.png ; 白が残ってたらエラー
{
If InStr(A_LoopFileFullPath, "白")
{
MsgBox, % "Index" Var " Error"
Break 2
}
}
}
MsgBox, End

フォルダ内のファイルが少ないと何回やってもエラーが出ないのですが、200枚くらいだと頻繁にエラーが出ます

294 :名無しさん@お腹いっぱい。:2015/09/24(木) 16:30:18.04 ID:88R9gtA70.net
次に行かないってことはないと思う。大量に処理するとおそらく処理漏れがある。
だから正確性ならLoopで付きあわせってことになると思う。

295 :名無しさん@お腹いっぱい。:2015/09/24(木) 19:13:11.45 ID:5yaO6Szn0.net
>>292
DropBoxさっき入れたので何となくの解釈ですが最後にSleep長めに入れて対策してますね。結局はそれしかないんでしょうか

>>294
リネーム自体はFileMoveの戻り値を利用して失敗したらループさせる方法で解決できるんですが
移動後に他のコマンドを実行したい場合でも確実に移動・コピーの完了を待たせる手段はないものでしょうか?

296 :名無しさん@お腹いっぱい。:2015/09/24(木) 20:09:35.39 ID:6lvDUJJX0.net
http://ux.getuploader.com/autohotkeyl/download/82/LongclickFunction_in_MGL.ahk

左長押しクリックに機能追加。長押しで分岐以外にも選択文字のオートコピー、ドラッグスクロールとダブルクリック置き換えをつけてみたよ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


297 :名無しさん@お腹いっぱい。:2015/09/24(木) 21:19:30.68 ID:xGWYHInQ0.net
>>295
動作確認してないのでいい加減なこと言うようだけど、
コピー(移動)前に元ファイルのファイル容量を覚えといて
コピー先で該当ファイルがそのファイル容量になったかを監視するとか?

298 :名無しさん@お腹いっぱい。:2015/09/24(木) 21:23:22.95 ID:6lvDUJJX0.net
容量もだけど更新日時や作成日時も見ておくほうがより正確。バイト数だけだと偶然一致があり得るんだよね

299 :名無しさん@お腹いっぱい。:2015/09/24(木) 22:04:43.33 ID:crjp70zC0.net
>285,288
Criticalコマンドで解決したかに見えたのですが
入力順を保持するためのバッファ処理が
キー長押し時にもキーリピート分で走ってしまうため、長押しして離すと
短押しキーが溜まったバッファ分だけ出力されてしまいますね…
命令の記述位置を変えたりコマンド一覧を眺めたりと色々と試していますが
思いのほか簡単にはいかない感じです

何にしてもお二人ともレスありがとうございます
上手く書けたら報告に来ますw

300 :名無しさん@お腹いっぱい。:2015/09/24(木) 22:42:45.95 ID:5yaO6Szn0.net
>>297-299
センキューベリマッチ

301 :名無しさん@お腹いっぱい。:2015/09/24(木) 23:29:11.19 ID:UKQc37JF0.net
>>299
うちではうまく行ってるけどどうじゃろか

*1::
*2::
*3::
 tim .= tim ? "" : A_TickCount
return

*1 up::
*2 up::
*3 up::
 key := (A_TickCount-tim>250 ? "F" : "") . SubStr(A_ThisHotkey,2,1)
 send,{Blind}{%key%}
 tim := ""
return

302 :名無しさん@お腹いっぱい。:2015/09/25(金) 09:11:26.74 ID:6ghJoy8F0.net
>>296
グッジョブ

303 :301:2015/09/25(金) 10:42:39.09 ID:ly3ZkqvY0.net
ファンクションはキーUP待たないで発射したいのか、ちょい修正

*1::
*2::
*3::
  tim .= tim ? "" : A_TickCount
  if (A_TickCount-tim>250 && !flg){
    key := "F" . SubStr(A_ThisHotkey,2,1)
    send,{Blind}{%key%}
    flg := 1
  }
return

*1 up::
*2 up::
*3 up::
  if (!flg) {
    key := SubStr(A_ThisHotkey,2,1)
    send,{Blind}{%key%}
  }
  tim := ""
  flg := ""
return

304 :名無しさん@お腹いっぱい。:2015/09/25(金) 17:42:07.83 ID:rFOJjuhL0.net
文字列をeuc-jpに変換するにはどうすればいいでしょうか?
普通はStrPutを使うようですが
http://ahkwiki.net/CodePage
ここを見るとeuc-jpを指定しても無効とあり、実際に出来ません

305 :名無しさん@お腹いっぱい。:2015/09/25(金) 18:46:10.95 ID:s6SkcoIu0.net
そこのページからリンク貼られてる

日本語EUCに関する制限事項
http://ahkwiki.net/Trouble#.E6.97.A5.E6.9C.AC.E8.AA.9EEUC.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E5.88.B6.E9.99.90.E4.BA.8B.E9.A0.85

の方法でもダメなん?

306 :名無しさん@お腹いっぱい。:2015/09/25(金) 20:08:40.09 ID:rFOJjuhL0.net
ありがとうございます。リンク先があったんですね
euc-jpにする前にsjisにする必要があるので
変換しようと思ったのですが、うまくできません

str := "あいうえお"
str := StrPut(str,"CP932")
MsgBox % str

のようにやっても、14とか出ます
どうしたらUTF8をSJISに出来るのでしょう?

307 :名無しさん@お腹いっぱい。:2015/09/25(金) 20:28:49.20 ID:142k8d7b0.net
特定のサイトでOn/Offの連射をしたいのですが、連射はできるのですが、Onの状態で非アクティブまたはブラウザを閉じた場合ONのまま制御ができなくなります。
非アクティブ・ブラウザを閉じた場合Offにしたいのですが、下記では出来ませんでした。宜しくお願いします。
#IfWinActive, ;サイト名
q::
Toggle:=!Toggle
if(Toggle){
SetTimer, z, 500
}else{
SetTimer, z, off
}
IfWinNotActive, ;サイト名
SetTimer, z, off
return
#IfWinActive

308 :名無しさん@お腹いっぱい。:2015/09/25(金) 20:40:40.11 ID:xYWWmgj10.net
SetTimer, z, 500
で使ってるz:ラベルの最初の方に

IfWinNotActive, ;サイト名
{
SetTimer, z, off
Return
}

を入れとけばいいんじゃない

309 :名無しさん@お腹いっぱい。:2015/09/25(金) 21:14:42.13 ID:rFOJjuhL0.net
StrPutの返り値は文字列じゃなくてバイト数のようです
ですが説明を読んでも、今ひとつ分かりません
StrPut autohotkey sjis
で検索しても17件しか出てきません
ごく単純に、文字列のエンコーディングを変換するには
どうすればいいのでしょうか?

310 :名無しさん@お腹いっぱい。:2015/09/25(金) 21:31:03.19 ID:xYWWmgj10.net
>>307
もしくはAuto-executeセクションにアクティブになったウインドウを監視するものをいれるとか

http://pastebin.ca/raw/3173564

311 :名無しさん@お腹いっぱい。:2015/09/25(金) 21:58:05.04 ID:KV4jiEIL0.net
>>303
ワーオ、最高!イエース!グレート!
望み通りの動作ですし、keyWaitで試行するより
入力のレスポンスがかなり良くなってます

応用すれば他のキーでも自由に設定できそうですね
これを元にして更に色々チャレンジしてみます
本当に助かりました。ありがとうございます

312 :名無しさん@お腹いっぱい。:2015/09/25(金) 22:15:33.21 ID:rFOJjuhL0.net
エンコーディング変換という、
ごく当たり前の処理の情報が何故こんなに少ないのでしょうか?

313 :名無しさん@お腹いっぱい。:2015/09/25(金) 23:23:39.30 ID:T68s/oJQ0.net
>>1スレ立て乙

314 :名無しさん@お腹いっぱい。:2015/09/25(金) 23:43:31.50 ID:TnffJdgb0.net
>>307
頭に中で考えただけなんで、動くか分かんないけど。

#IfWinActive, ;サイト名
q::
Toggle:=!Toggle
if(Toggle){
SetTimer, z, 500
}else{
SetTimer, z, off
}
return

#IfWinNotActive, ;サイト名
q::
Toggle:=false
SetTimer, z, off
return

315 :名無しさん@お腹いっぱい。:2015/09/26(土) 00:30:30.54 ID:djAj203U0.net
非アクティブ化で切りたい仕様のようだから
zの中で非アクティブチェックするのがいいと思うよ

316 :名無しさん@お腹いっぱい。:2015/09/26(土) 01:30:54.81 ID:iUEIDkcX0.net
>>314だす
酔っぱらった頭で考えただけあって滅茶苦茶なコードですた・・・ハジカシイorz

もうちょっと飲も

317 :名無しさん@お腹いっぱい。:2015/09/26(土) 01:51:27.08 ID:xmb8Y91P0.net
酔っぱらいはバグ人間。人間に非ず

318 :名無しさん@お腹いっぱい。:2015/09/26(土) 01:51:59.22 ID:pjw6RnBc0.net
>>309
StrPutってこのExampleにあるStrPutVar使えばいいんじゃないの
http://ahkwiki.net/StrPutGet

319 :名無しさん@お腹いっぱい。:2015/09/26(土) 02:09:22.78 ID:JeI01QvY0.net
返信遅くなりました
>>308
>>310
丁寧にありがとうございます。無事思い通りの動作ができました
上記でどうにかする事ばかり考えてました・・・

>>314
私は酔っ払っていませんでしたが、助力を頂く前にそのコードを試してました・・・

320 :名無しさん@お腹いっぱい。:2015/09/26(土) 03:22:33.25 ID:djAj203U0.net
文字列の中でオブジェクトも展開できたらいいのに

321 :名無しさん@お腹いっぱい。:2015/09/26(土) 09:03:26.15 ID:LL2F5NZg0.net
>>318
ありがとうございます
StrPutVarは第二引数に変換後の文字列を入れるようなので、

StrPutVar(string, ByRef var, encoding)
{
; Ensure capacity.
VarSetCapacity( var, StrPut(string, encoding)
; StrPut returns char count, but VarSetCapacity needs bytes.
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
; Copy or convert the string.
return StrPut(string, &var, encoding)
}

str := "あいうえお"
out := ""
StrPutVar(str,&out,"CP932")
MsgBox % out

とやってみましたが、何故か何も表示されません
変換元エンコーディングを指定する場所がないのが気になりますが。
コードはUTF-8で記述しています

322 :名無しさん@お腹いっぱい。:2015/09/26(土) 09:38:13.56 ID:LL2F5NZg0.net
http://www.autohotkey.com/board/topic/67628-ahk-l-how-to-simulate-transform-unicode/
このページの
StrPutVar(string, ByRef var, encoding)
{
VarSetCapacity( var, StrPut(string, encoding)
* ((encoding="utf-16"||encoding="cp1200") ? 2 : 1) )
return StrPut(string, &var, encoding)[color=red],VarSetCapacity(var,-1)[/color]
}
を使ったら、何かに変換されました
何故エンコーディング変換にcolorなどが出てくるのか、よく分かりませんが。
表示させても文字化けしてるので、
正しく変換されているのかはまだ分かりません

323 :名無しさん@お腹いっぱい。:2015/09/26(土) 11:05:39.96 ID:rhXvYJM20.net
nkf32.dll辺りと連携した方がいいと思う>文字コード変換
過去ログにahkから呼び出すためのスクリプトがあったはず

324 :名無しさん@お腹いっぱい。:2015/09/29(火) 03:04:48.46 ID:q4T3gI780.net
クリップボードにファイルがあるときにその総数が知りたいんですが
どうにも上手く取れないので助言をください

DllCall("OpenClipboard", Ptr, 0)
hDrop := DllCall("GetClipboardData", Int, 0xF) ; CF_HDROP
cnt := DllCall("DragQueryFileW", Ptr, hDrop, Int, -1, WStr, 0, Int, 0)
tooltip hDrop:%hDrop%`ncnt:%cnt%

325 :名無しさん@お腹いっぱい。:2015/09/29(火) 03:36:36.43 ID:Rdhq11FG0.net
エクスプローラなどででコピーしたものなら
Loop,Parse,Clipboard,`r,`n
{
MsgBox,%A_LoopField%
}
こういうので数えられるけど、そういう話ではないのかな

326 :名無しさん@お腹いっぱい。:2015/09/29(火) 04:50:48.76 ID:q4T3gI780.net
いや、そういう話です。そんなに簡単に書けたとは……
昔、ファイルをコピーするとクリップボードに改行区切りのパスが入ると聞いて
メモ帳でCtrl+Vしても駄目だったので環境依存の仕様か何かだと思っていたんですが、
AHKのClipboardが動的に取り計らってくれるという意味だったんですね
今知れて良かったです。ありがとうございました

327 :名無しさん@お腹いっぱい。:2015/10/01(木) 09:12:35.25 ID:dHOVCF+u0.net
WinGet, hwnd, ID, ahk_exe firefox.exe
Acc := Acc_ObjectFromWindow(hwnd)
Acc := Acc_Child(Acc, 4) ; Acc Info Viewerで取得したアドレスバーのパス
Acc := Acc_Child(Acc, 20)
Acc := Acc_Child(Acc, 4)
Acc := Acc_Child(Acc, 2)
MsgBox % Acc.accName

このようにしてACCでFirefoxからURLを取得しようとしたのですが子の取得で失敗するので正解を教えて下さい
本来は再帰的に目的のオブジェクトを探したり変更したりしたいのですが

328 :名無しさん@お腹いっぱい。:2015/10/01(木) 17:22:21.33 ID:Ukp2Mk/E0.net
教えて下さい。
AHK v1.1.22.02 Unicode 64bit / Win7 64bit Home

マウス左クリックを何かのキーに置き換えます。


F9::LButton
又は
F9::Send,{LButton}

ところが、タスクトレイの自身のAHKアイコンの右クリックメニューの中では動作しません。
しかし、同時実行中の自分以外のAHKアイコンに対しては動きます。

何故このような挙動になるのでしょうか?

329 :名無しさん@お腹いっぱい。:2015/10/01(木) 17:46:44.28 ID:ORi0pFmB0.net
仕様
自メニュー表示中は他のスレッド処理止まってる
他者(他の多重起動中の他のahkスクリプト)は別タスクで動いてるので関与可能

330 :名無しさん@お腹いっぱい。:2015/10/01(木) 17:47:57.52 ID:9/SxiS2N0.net
文字化けをどうにか修正出来ませんでしょうか?。
よろしくお願いします。

FileAppend,
(
ダメ文字「〜〜〜」
)
, .\ダメ文字.txt, CP932

331 :名無しさん@お腹いっぱい。:2015/10/01(木) 17:56:12.55 ID:9/SxiS2N0.net
すみません、エスケープ文字なしでの修正法です。
ダメ文字「〜`〜`〜`」

332 :名無しさん@お腹いっぱい。:2015/10/01(木) 19:33:38.34 ID:Ukp2Mk/E0.net
>>329
自分の環境の問題じゃないと知って安心したよ。ありがとう!

333 :名無しさん@お腹いっぱい。:2015/10/02(金) 01:17:10.85 ID:JUesQH/70.net
>>330
旧版(Autohotkeyで検索するとTopにくる)を使ってるなら
>>1 のリンク先から最新版をDLしてみては?

どうしても旧版じゃないといけないならダメ文字対策版があったはず。
もしくはダメ文字対策の関数が過去ログにあるはず。

334 :名無しさん@お腹いっぱい。:2015/10/02(金) 01:25:54.88 ID:JUesQH/70.net
>>333 は関係なかったので無視して。

335 :名無しさん@お腹いっぱい。:2015/10/02(金) 03:04:43.07 ID:JUesQH/70.net
>>330
スクリプトを強制的にShift-jisで読み込むようにする。
http://pc12.2ch.net/test/read.cgi/software/1265518996/503
互換性
https://sites.google.com/site/agkh6mze/translation/autohotkey_l/compatibility


もしくは駄目文字関数(以前、ここで拾った関数)を通す。
エスケープ文字なしって条件なら意味ないけど

hoge = ダメ文字「〜〜〜」
FileAppend, % RegEscape(hoge), .\ダメ文字.txt, CP932
return

RegEscape(pattern) {
Return RegExReplace(RegExReplace(pattern, "\s", "\s")
, "(?P<pre>(?:^|[^\x80-\x9F\xE0-\xFC])[\x80-\x9F\xE0-\xFC])"
. "(?P<esc>[\[\]\{\}\|\^\\])"
, "${pre}\${esc}")
}

336 :名無しさん@お腹いっぱい。:2015/10/02(金) 13:05:39.25 ID:Y7lmOL750.net
>>335
ありがとうございます。
試行錯誤してみます。

337 :名無しさん@お腹いっぱい。:2015/10/03(土) 01:15:25.13 ID:4vFDVsLh0.net
AHK v1.1.22.07 Unicode 32bit / Win7 32bit Home
アドバイスお願いします。

LAlt::display("Down")
LAlt Up::display("")
display(str) {
tooltip,%str%
}

[LAlt]を押すと、Down表示以外に{LAlt Up}イベントが出力されます。
それを回避したいです。

338 :名無しさん@お腹いっぱい。:2015/10/03(土) 04:43:36.82 ID:hVgXFCGi0.net
>>337
何を言いたいのかよく分からんけど、LAlt Upを無効にしたいなら
LAlt Up::return

339 :名無しさん@お腹いっぱい。:2015/10/03(土) 10:06:20.40 ID:4vFDVsLh0.net
>>338
アドバイスありがとうございます。

KeyHisotryが

A4 038 h  d  1.83  LAlt
A4 038 i  u  0.00  LAlt
A4 038 h  u  0.48  LAlt

となるので、2行めの i u 0.00 LAlt を出ないようにしたいです。



当初、

flag==1のとき LAltを1回押すごとにDown/Upのトグル動作
flag==0のとき、通常動作

を意図してスクリプトを作ったのですが、flag==1のときにLAltを押しても
Down/Upがトグルしなかったので調べたところ、
LAltを送る記述をしなくても、KeyHistory に LAlt Upが出ていました。

340 :名無しさん@お腹いっぱい。:2015/10/03(土) 10:58:49.22 ID:hVgXFCGi0.net
>>339
key historyは入力を記録しているだけなのでScriptに影響しない。
スクリプトの記述ミス、またはフラグ管理を失敗していると思われる。

f9:: ; f9でフラグ変更
!f9::
if flag = 2
send, {alt up}
flag := !flag
tooltip, %flag%
return

LAlt:: ; ※AutohotkeyのKey Historyでは動作しない。
if !flag {
send,{alt}
} else if (flag = 1) {
send,{alt down}
flag = 2
tooltip, %flag%
} else if (flag = 2) {
send,{alt up}
flag = 1
tooltip, %flag%
}
return

341 :名無しさん@お腹いっぱい。:2015/10/03(土) 20:02:27.44 ID:4vFDVsLh0.net
>>339
スクリプトまでありがとうございます。
Key Historyは入力記録だけで出力判定には使えないのですね。
勘違いしていたので助かりました。

>>339を実行し、[LAlt]を押しっぱなしで KeyMillというツールで
キーイベントを見たところ、LAlt Downが1〜4回(回数は毎回違う)、LAlt Up 1回を
繰り返す状態になっていました。

環境依存の可能性が高そうなので、そちらから調査してみます。
アドバイスありがとうございます。

342 :名無しさん@お腹いっぱい。:2015/10/03(土) 20:04:22.86 ID:4vFDVsLh0.net
>>341中の ">>339"は、">>340"の間違いです。失礼しました。

343 :名無しさん@お腹いっぱい。:2015/10/03(土) 21:49:15.86 ID:3qI8Ooii0.net
すいません。
最近使い始めてあまりわかってないのですが、スクリーンロックがかかった状態だとこのソフトは効かないものですか?

344 :名無しさん@お腹いっぱい。:2015/10/05(月) 05:04:08.47 ID:SOr6oONc0.net
KeyMillというツールで表示されるVK_OEM_3とはAHKではどのキーに相当するんですか?
IMEをJPからENに変えた状態で半角全角を押すとこれが押された状態になるんですが

345 :名無しさん@お腹いっぱい。:2015/10/05(月) 07:57:12.97 ID:J07/GDAU0.net
この表によると VK_OEM_3は@ (0xC0) のようだが
http://homepage3.nifty.com/ic/help/rmfunc/vkey.htm

Keymill Ver.1.4落としてきてIME ONで全半押したがVK_OEM_ENLWとVK_OEM_AUTOしか出ない
@押すとVK_OEM_3(0xC0 0x1A)が出る
何らかの理由でVK_CONVERT(0x1C 0x079)をC0と読み違えるバグでも発生してるんじゃない?
数値表記を16進数にして確認してみ
win8.1 x64 JPキーボード

346 :名無しさん@お腹いっぱい。:2015/10/06(火) 09:24:39.81 ID:5sMIM/XR0.net
常駐スクリプトを多重起動しようとしたときに
#SingleInstance forceでもignoreでもなくて
起動中のスクリプトを終了だけして終わりってできないですか?

347 :名無しさん@お腹いっぱい。:2015/10/06(火) 10:28:50.48 ID:DiXvuaHq0.net
#SingleInstance off で多重起動許可
Autoexecuteセクション内で自力で多重起動チェックして自分以外にも起動してたら
既存スクリプトをKILLして自分もExitApp

多重起動チェックはDetectHiddenWindows,ONにして
A_ScriptHwndと同titleのahkスクリプトを
WinGet IDLastかListで探してやればいい
http://ahkwiki.net/WinGet

348 :名無しさん@お腹いっぱい。:2015/10/06(火) 12:51:41.03 ID:5sMIM/XR0.net
>>347
ありがとう
がんばって書いてみます

349 :名無しさん@お腹いっぱい。:2015/10/07(水) 05:53:11.49 ID:Z18ZPhqc0.net
>>348
>>214の方法も考慮してみては?

350 :名無しさん@お腹いっぱい。:2015/10/07(水) 09:07:42.39 ID:j68mUFxR0.net
>>349
横だが軽く試した感じ 同一スクリプト内でやるのは結構面倒そうだわ
OnMessage()→SendMessageの順だと自身が受け取ってしまう
SendMessage→OnMessage()の順でも先に起動してるスクリプトには届かないっぽい

351 :名無しさん@お腹いっぱい。:2015/10/07(水) 23:15:12.19 ID:UC2M851Z0.net
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}

これ時々下のウィンドウがアクティブになってないと動かないんですが一発で動かすにはどうしたらいいんでしょう

352 :名無しさん@お腹いっぱい。:2015/10/08(木) 06:23:31.59 ID:lCrLMnbM0.net
こんな感じでアクティブウィンドウに対応するメモファイルを開くスクリプト書いたら結構便利だ

vk1Dsc07B & MButton:: muhen_help()
vk1Dsc07B & F1:: muhen_help()

muhen_help(docname=0)
{
  docfolder=%A_ScriptDir%
  docext=.xmind
  doctemplate=_template_
  
  if docname
  {
    fn=%docfolder%\%docname%%docext%
    if !FileExist(fn)
      FileCopy,%docfolder%\%doctemplate%%docext%,%fn%
    run,%fn%
    return
  }

353 :名無しさん@お腹いっぱい。:2015/10/08(木) 06:24:09.10 ID:lCrLMnbM0.net
  ; プログラミング言語、タイトルだけで引っ掛けるもの  
  IfWinActive,AutoHotKey
    return muhen_help("AutoHotKey")    
  IfWinActive,Ruby
    return muhen_help("Ruby")    
  IfWinActive,Python
    return muhen_help("Python")    
  IfWinActive,TiddlyWiki
    return muhen_help("TiddlyWiki")
  IfWinActive,Dialy
    return muhen_help("TiddlyWiki")
    
  ; その他のアプリケーション
  IfWinActive,ahk_class CabinetWClass
    return muhen_help("Explorer")
  IfWinActive,Mozilla Firefox ahk_class MozillaWindowClass
    return muhen_help("Firefox")
  IfWinActive,Civ IV: Beyond The Sword ahk_class GFC_StdWindowClass

    return muhen_help("Civilization4")

  ; 対応するIfWinActiveがなかったらテンプレートをクリップボードにコピーして
  ; このスクリプトを開いて編集させる

  WinGetActiveTitle,title
  WinGetClass, class, A
  clipboard=`tIfWinActive,%title% ahk_class %class%`n`t`treturn muhen_help("%title%")
  run,edit %A_LineFile%
  run,%docfolder%
  return
}

354 :名無しさん@お腹いっぱい。:2015/10/08(木) 09:35:43.76 ID:GRWYlLlC0.net
hhh.exe的なものなら過去に作ったっけ
カーソル付近の単語を対応ヘルプで検索して開く奴

355 :名無しさん@お腹いっぱい。:2015/10/08(木) 09:40:41.55 ID:3yhzZ3UY0.net
Hit a Hint for Windowsなるものを見つけたのでAutoHotkeyに頼る部分がだいぶ減った

356 :名無しさん@お腹いっぱい。:2015/10/08(木) 18:24:35.47 ID:NhOt8eVQ0.net
>>351
情報少なすぎ
環境と実際に動作する問題が起こる最小限のスクリプトも書かないとわからない

357 :名無しさん@お腹いっぱい。:2015/10/08(木) 18:36:47.53 ID:GRWYlLlC0.net
コピペのクレクレ質問は相手せずスルーでよし

358 :名無しさん@お腹いっぱい。:2015/10/10(土) 12:44:56.94 ID:/vs6Y5+e0.net
>>346
もう解決したと思うけど…
AutoItには「AutoItWinSetTitle()」というファンクションが有るので、
AHKにも有るのかと捜してみたがそれらしいコマンドは無いみたい
そこで、適当なタイトルを付けた隠しウインドウを作る方法でやてみた
最初の実行で常駐し、多重起動させて終了するはず(ver 1.1.22.07 32bit)

ちなみに、GUI作成慣れていないので、このコードで不具合有ったらゴメン

#SingleInstance off
#NoTrayIcon
DetectHiddenWindows, On
title := "タイトル - 常駐スクリプト"
class := " ahk_class AutoHotkeyGUI"

if WinExist(title . class) {
WinClose, %title%%class%
ExitApp
} else {
Gui, Show, Hide, %title%
SetTimer, jochu, 100
return
}

GuiClose:
GUI, Destroy
ExitApp
Return

jochu:
ToolTip, %A_Now%, 0, 0
Return

359 :名無しさん@お腹いっぱい。:2015/10/11(日) 01:51:32.72 ID:il2hnji40.net
OnMessageでやる場合
多重起動側は自身が多重起動であることを即確認できるからフラグ立てられる
フラグ立てたら終了

終了メッセージをどっちで受け取っても終了処理することに変りないから
終了処理内でフラグ見て処理は振り分けられる

そんなに複雑にはならない気がする

360 :名無しさん@お腹いっぱい。:2015/10/11(日) 01:52:50.90 ID:il2hnji40.net
フラグ立てたらメッセージ送信して終了だった

361 :名無しさん@お腹いっぱい。:2015/10/11(日) 01:55:58.30 ID:il2hnji40.net
あれ?メッセージって1回の送出で複数のプロセスで同時に受け取れるんだっけか?
しばらくプログラミングとか遠ざかってて忘れちまったw
なんか変な事言ってるかもゴメンw

362 :名無しさん@お腹いっぱい。:2015/10/11(日) 02:51:40.07 ID:iDpfFPT60.net
OnMessage推しの人はできれば動くサンプル貼ってほしい
自分は>350でできなかったんで可能なのか検証したい

363 :名無しさん@お腹いっぱい。:2015/10/11(日) 14:27:11.64 ID:tEgT6jAh0.net
OnmassageはAuto-executeに書くこと。以上

364 :名無しさん@お腹いっぱい。:2015/10/11(日) 17:05:06.98 ID:iDpfFPT60.net
OnMessageの使い方は把握してる
ただ同一スクリプト内って条件下で先に起動した別プロセスで動いてる多重起動先に
メッセージを届ける方法がわからない
>214では送りと受けは別スクリプトの前提だし
>349や>359-361は実際には試してなさそう、でもできると確信して話してる
なにか抜け道があるなら教えてほしい

OnMessageの位置ずらして下のスクリプト実行してみて欲しい
うちではどうやっても多重起動先にメッセージを届けられなかった
win8.1 AHK_L 1.1.22.06

#SingleInstance OFF
DetectHiddenWindows, On
;OnMessage( 1234 , "FunctionName" )
SendMessage,1234,1,,,%A_ScriptFullPath% ahk_class AutoHotkey
OnMessage( 1234 , "FunctionName" )
return

FunctionName( wParam , lParam , msg , hwnd )
{
SetFormat IntegerFast, H
hwnd := hwnd
if (msg==1234) {
MsgBox, 送り先hwnd=%hwnd%`nMyhwnd=%A_ScriptHwnd%
}
}

ESC:: ExitApp

365 :名無しさん@お腹いっぱい。:2015/10/11(日) 22:04:34.04 ID:ZqM2Qzr00.net
Guiのコントロールの幅を取得する方法はありますか?

コントロールを縦に幾つか並べたら次の列に移動…を繰り返してGuiを作ってるのですが
次の列に移動する際に、列内にある一番長いコントロールの幅を取得して次の列のx座標を導き出したいのです

コントロール1 コントロール4 コントロール7
コントロール2 コントロール5 …
コントロール3 コントロール6

366 :名無しさん@お腹いっぱい。:2015/10/11(日) 22:25:57.74 ID:ZqM2Qzr00.net
おっとGuiControlGetのPosでできたのか
「コントロールの座標と高さを取得する」って説明だったから勘違いした
>>365はスルーしてください

367 :名無しさん@お腹いっぱい。:2015/10/12(月) 01:58:25.53 ID:M/8NPbHR0.net
>>364
ウィンドウ指定が間違っている
条件に合うのが複数ある場合該当する初めの物にだけ送られる


#SingleInstance OFF
OnMessage(0x5555, "MsgMonitor")

DetectHiddenWindows, On
WinGet, N, List, ahk_class AutoHotkey
Loop %N%
PostMessage, 0x5555, A_ScriptHwnd, % N%A_Index%,, % "ahk_id " N%A_Index%
return

MsgMonitor(wParam, lParam, msg)
{
SetFormat, IntegerFast, h
MsgBox, Message %msg% `nWPARAM [送り元]: %wParam%`nLPARAM [送り先]: %lParam%
}

ESC::ExitApp

368 :名無しさん@お腹いっぱい。:2015/10/12(月) 08:00:23.00 ID:stSIvn090.net
>>367
レスd
なるほど先に対象取得して送り先IDを直接指定して送る必要があるんですね
SendMessageの返り値で多重起動の有無をチェックしようと横着してて気が付きませんでした

WinGetでList取る時 %A_ScriptFullPath% で対象絞れば無差別爆撃も避けられますね
ただこれだとPostする前に多重起動先があるかどうか判別が付くので
>346の案件は特別な終了前処理がないときは
if (N%A_Index% <> A_ScriptHwnd)
Winclose,% "ahk_id " N%A_Index%
で済む話なのかも

なんにせよすっきりしました、ありがとうございます

369 :名無しさん@お腹いっぱい。:2015/10/12(月) 18:33:07.20 ID:ECM/Xd5t0.net
AHKでUSB接続か何かのLED制御してIMEのON/OFFやその他の通知をしたいんだけど
ハード込みで何かお勧めなものってない?
例えばXBOX360コントローラやキーボード、マウスについてるLED制御できると0円で済むんだけど

http://www.4gamer.net/games/023/G002336/20111020081/TN/023.jpg

370 :名無しさん@お腹いっぱい。:2015/10/12(月) 18:56:46.92 ID:MZkgqCG90.net
少なくともAHKにはそういう機能はないし
そういう機能のあるソフトを探しているならスレチだし

371 :名無しさん@お腹いっぱい。:2015/10/12(月) 18:57:04.00 ID:gExsCg/s0.net
ahkから使えるかはわからんけどこんなんは?
http://gaming.logicool.co.jp/ja-jp/developers

372 :名無しさん@お腹いっぱい。:2015/10/12(月) 20:02:33.80 ID:M/8NPbHR0.net
>>369
キーボードLEDコントロール関数(CapsLock/NumLock/scrolllock)
http://www.autohotkey.com/board/topic/9587-keyboard-led-control-capslocknumlockscrolllock-lights/?p=672824
※サンプルの引数が間違っているので注意


F1::KeyboardLED(1, "on", 2)
F2::KeyboardLED(1, "off", 2)

ESC::ExitApp

373 :名無しさん@お腹いっぱい。:2015/10/13(火) 00:02:54.03 ID:anGJ1GPR0.net
ロジのk270のホットキー右4つはキーストローク割り当てして
AHKで使えるように出来たんだけど
左の4つは割り当てできないしAHKも拾ってくれません
何か良い方法ありませんか?

374 :名無しさん@お腹いっぱい。:2015/10/13(火) 00:15:31.98 ID:wlHQs/Lr0.net
>>373
割り当て変更や拾うことができないなら無理
ログもスクリプトも書かれていないからそれが本当かどうか知らない

375 :名無しさん@お腹いっぱい。:2015/10/13(火) 13:59:43.45 ID:dZeGdBQN0.net
アクティブなウィンドウがないとき、一番手前にあるウィンドウを最大化したいんだけど、一番手前のウィンドウってどうやって取得するの?

376 :名無しさん@お腹いっぱい。:2015/10/13(火) 15:53:54.24 ID:yGa4AJhq0.net
デスクトップとスタートボタン除外してwingetしたら取れるかも

377 :名無しさん@お腹いっぱい。:2015/10/14(水) 03:33:07.03 ID:8F+pZ2iI0.net
GuiってGui, DestroyじゃなくてWinCloseで終了してもリソース解放される?

378 :名無しさん@お腹いっぱい。:2015/10/14(水) 03:36:37.50 ID:XLqm5nI70.net
やってみたらいいじゃん

379 :名無しさん@お腹いっぱい。:2015/10/14(水) 04:00:06.55 ID:8F+pZ2iI0.net
>>378
質問の仕方が悪かったけどどっちで終了しても違いはない?要はウィンドウ番号の都合で分けてるということかな?
Gui, HideとWinHideもそうだけど、Guiの場合はGui系のコマンドをなるべく使った方がいいのか少し気になって

380 :名無しさん@お腹いっぱい。:2015/10/14(水) 04:42:31.11 ID:XLqm5nI70.net
>>379
終了、開放、閉じる はすべて別の動作

終了(プロセス終了) ← Process, Close
開放(開放して終了しない) ← Gui Destroy
閉じる(アプリによって違う) ← WinClose

381 :名無しさん@お腹いっぱい。:2015/10/14(水) 04:57:07.00 ID:8F+pZ2iI0.net
>>380
OK

382 :名無しさん@お腹いっぱい。:2015/10/14(水) 09:00:17.41 ID:qrqP+GcH0.net
ゲーム内の特定の画面で特定のボタンを押したときに
画面を解析してゲームのイベント終了時間を算出して
コマンドラインで外部ソフトに値を渡す という物が作りたいです

・AHKが現在どういう状態にあるのか常時表示する手段(MouseGestureL.ahkの吹き出しみたいなのが理想)
・マウスクリックを検出する手段
を教えてください

もしくは、画像と座標を書き換えるだけでいろんなゲームに対応できるひな形を作ってください

383 :名無しさん@お腹いっぱい。:2015/10/14(水) 09:32:57.36 ID:SnipqP3i0.net
・ToolTip
・~LButton

こんな基本中の基本を調べもしないテンプレも読まないで聞いてくるアホに
ゲーム操作みたいな厄介なスクリプトが組めるとは到底思えんが
このスレはクレクレ禁止なので最後の一行は無効
自力でがんばれや

384 :名無しさん@お腹いっぱい。:2015/10/14(水) 09:59:46.62 ID:qrqP+GcH0.net
>>383
悪態をつきながらもちゃんと教えてくれてありがとうございます
調べようにも何をキーワードにしたらいいかわからなかったので助かりました

385 :名無しさん@お腹いっぱい。:2015/10/14(水) 22:11:49.33 ID:Epf/wqC/0.net
explorer.exeをProcessコマンドで閉じると自動でexplorer.exeが再起動されますが、この仕様をオフにする方法を教えて下さい。

Process,Close,explorer.exe
→ 終了だけしてほしい。 再起動は不要。

コマンドプロンプトでtaskkillするみたく、プロセス終了だけしてほしいのです。
taskkill /f /im explorer.exe

386 :名無しさん@お腹いっぱい。:2015/10/14(水) 22:20:47.04 ID:uKniWlc70.net
それAHK関係ないんじゃ

387 :名無しさん@お腹いっぱい。:2015/10/14(水) 23:22:49.26 ID:Epf/wqC/0.net
???

AHKでは・・・
Process,Close,notepad.exe → 終了だけ。
Process,Close,explorer.exe → 終了後、勝手に再起動される。

コマンドプロンプトではどちらも終了だけ。
taskkill /f /im notepad.exe
taskkill /f /im explorer.exe

ということはAHKに原因があるように見えます。

それとも、Windowsはサードパーティアプリからexplorer.exeを終了されると自動的に復活起動する仕様なの?

388 :名無しさん@お腹いっぱい。:2015/10/14(水) 23:36:51.43 ID:XLqm5nI70.net
>>387
仕様
Run = コマンドプロンプト = コマンドライン

389 :名無しさん@お腹いっぱい。:2015/10/15(木) 00:53:11.60 ID:hm6rlI060.net
てか終了出来てるんならスクリプトの中にbat読む処理挟んでやりゃいいじゃんか

390 :名無しさん@お腹いっぱい。:2015/10/15(木) 00:53:23.64 ID:CBMzSms10.net
そもそもexplorer.exeってファイラーとシェルどっちのこと言ってるのかね

391 :名無しさん@お腹いっぱい。:2015/10/15(木) 02:22:15.78 ID:RSN1D9rC0.net
タスクバーを描画してるexplorerです。
ある理由でタスクバーを消滅させておきたいのです。

〜〜〜〜
コレでやるしかないのは分かりました。
Run, taskkill /f /im explorer.exe, , Hide


ただ、Process,Close,explorer.exe で自動再起動がかかるのは何故かな、と気になったもので....

392 :名無しさん@お腹いっぱい。:2015/10/15(木) 08:38:15.54 ID:CBMzSms10.net
シェルのほうは放っとくとなんかのタイミングで勝手に再起動されるで
殺して放置じゃなくてシェル置き換えしたほうがいい
タスクバーを表示させない代替シェルがあるかどうかは知らんが
http://okini.bookmarks.jp/wp5/?p=1407

393 :名無しさん@お腹いっぱい。:2015/10/15(木) 09:50:51.29 ID:OqiXekhc0.net
自動で再起動されるのは昔からの仕様
シェルが落ちたら一般ユーザーはPCの再起動すらできなくなるからな

394 :名無しさん@お腹いっぱい。:2015/10/15(木) 10:16:47.05 ID:CBMzSms10.net
タスクバーを表示したくない理由がわからんから何ともいえんが
タスクバーを自動的に隠す設定 じゃあかんのかね

業務で特定の操作専用パネルとして使うなら
アプリ側で全画面表示にさせる
7〜8インチのちっこいサブモニタつけてタスクバーはそっちに移動させる等

シェル落として対応ってのはシステム不安定になるしかなりの悪手

395 :名無しさん@お腹いっぱい。:2015/10/15(木) 14:53:00.01 ID:CAA/ZQ/Q0.net
ダブルコーテーションのエスケープはどうかくのでしょうか?
"\""
と書いてもエラーになります

396 :名無しさん@お腹いっぱい。:2015/10/15(木) 15:08:55.20 ID:CBMzSms10.net
""

a := """"
msgbox,%a%

397 :名無しさん@お腹いっぱい。:2015/10/15(木) 15:15:46.98 ID:CAA/ZQ/Q0.net
ありがとうございます

398 :名無しさん@お腹いっぱい。:2015/10/16(金) 00:01:26.63 ID:ED2Tckj70.net
ちなみにahkのデフォルトのエスケープ文字は\じゃなくて`(shift+@)だよ
ダブルクォートに関しては関係ないけど
でも正規表現では\使うというね

399 :名無しさん@お腹いっぱい。:2015/10/16(金) 00:56:32.45 ID:bknkoHO70.net
パスの区切り\をそのまま使いたかったってところかな

400 :名無しさん@お腹いっぱい。:2015/10/16(金) 00:56:59.15 ID:Ho1AvTvR0.net
他のエスケープに倣って「`"」としなかったのはなぜだろう
今の仕様は見辛くてかなわん
仕方なくChr(0x22)を主に使ってる

401 :名無しさん@お腹いっぱい。:2015/10/16(金) 05:30:36.50 ID:oSBPJ2ZG0.net
Guiが最前面(+AlwaysOnTop)になってるか調べる方法はある?

402 :名無しさん@お腹いっぱい。:2015/10/16(金) 06:47:08.34 ID:rU5x7sGD0.net
WinGet ExStyleでWS_EX_TOPMOSTを確認すればわかる

GetTopmost(WinTitle="A") {
WinGet,WinExStyle,ExStyle , %Window%
return WinExStyle & 0x00000008 ;WS_EX_TOPMOST
}

403 :名無しさん@お腹いっぱい。:2015/10/16(金) 07:57:36.38 ID:oSBPJ2ZG0.net
>>402
トン

404 :名無しさん@お腹いっぱい。:2015/10/16(金) 11:50:55.62 ID:AQv1b4UO0.net
>>392-394

アドバイスありがとう。
いろいろトライしてみる。

405 :名無しさん@お腹いっぱい。:2015/10/16(金) 12:32:57.76 ID:rU5x7sGD0.net
>>402
すまん関数2行目はパラメータ参照できてないね↓に差し替えで確認して
WinGet,WinExStyle,ExStyle , %WinTitle%

406 :名無しさん@お腹いっぱい。:2015/10/16(金) 13:21:18.57 ID:E0QZ/F/90.net
いつの間にかインストーラー版で32bitも選択できるようになってる
この前試した時はOSが64bitの時は決め打ちで64bitバージョンを入れてきたのに

407 :名無しさん@お腹いっぱい。:2015/10/16(金) 18:30:25.55 ID:oSBPJ2ZG0.net
>>405
トン

408 :名無しさん@お腹いっぱい。:2015/10/16(金) 20:30:54.67 ID:oSBPJ2ZG0.net
実行中の関数の呼び出し元が関数内からだった場合、その関数名を取得する方法はないかな?
引数でA_ThisFuncを渡したら済む話ではあるけどできれば省略したくて

↓みたいに組み込み変数はデフォルト値にできないんだね

Func(FuncName=A_ThisFunc)
{
}

409 :名無しさん@お腹いっぱい。:2015/10/17(土) 02:51:10.24 ID:WeS/KtN/0.net
Windows10で、こちらの環境のせいかlogicoolのSetpointでチルト対応のLogicoolマウスを検出できず、
チルトホイールの、F13,F14割り当ての道がふさがれてしまいました。

代替として、WheelLeft WheelRight でチルトホイールの長押し検出をしたいのですが、
以下のコードを作ってみた結果、発動はするけど長押しの検出はできませんでした。

WheelLeft::
loop,100
{
GetKeyState, state, WheelLeft,
GetKeyState, stateP, WheelLeft,P
GetKeyState, stateT, WheelLeft,T
result=%result% %state%%stateP%%stateT%
sleep,10
}
msgbox,%result%
return

Pをつけないと常にUが返答され、Pをつけると常にDが帰ってきます。
実際の操作を判定するには、どのように書けばよいでしょうか。

もしくは上記のコードで、100回のループ中で結果がばらける=判定できている方いらっしゃいますか。

410 :名無しさん@お腹いっぱい。:2015/10/17(土) 07:26:09.23 ID:ypfCpe+y0.net
>>391
タスクバーを消したいならShell_TrayWndを手がかりにググれば?

411 :名無しさん@お腹いっぱい。:2015/10/17(土) 23:20:56.38 ID:llzPBbJ10.net
>>409
■Logicoolマウスの問題
*Setpoint+ドライバ削除後、Setpoint最新版を使う
*管理者権限を使う
*互換性モードを使う

■ホイール上下左右の問題
AHK付属のキー履歴を見れば分かるが
Wheel***系は押し下げだけ(Upしない)をキーリピート(連打)しているので
GetKeyState、KeyWaitでの判定は意味が無い
キーリピートの回数やその時間で判定する必要がある

412 :名無しさん@お腹いっぱい。:2015/10/18(日) 21:14:53.73 ID:AMpTStWq0.net
現在のデフォルトのウィンドウ番号って取得できない?

413 :名無しさん@お腹いっぱい。:2015/10/18(日) 23:56:00.88 ID:AMpTStWq0.net
↑正確には実行中のスレッドでした(無理っぽいのかな)

てか同一スレッドで異なるウィンドウ番号のGuiが関数やラベルを通して複数起動する可能性があったら
それらの生成時にはデフォルト設定はせずに「Gui, 2:」のように1つずつ番号を当てるのが一般的なんだろうか?

414 :名無しさん@お腹いっぱい。:2015/10/19(月) 01:31:20.98 ID:FSaZz6ju0.net
IEで表示したウェブページの保存を1キーで行いたいのに
CTRL+S
ALT+S
CTRL+W
がうまく動作しない

Win7 だからか

415 :名無しさん@お腹いっぱい。:2015/10/19(月) 11:17:45.85 ID:xvq8jrZL0.net
MS謹製アプリはOSバージョンでショートカットキーが違うことはたまにある
まあでもwin8とかvistaとか他のOSでの動作実績ないんだったら
単に書き方が悪いだけだと思うよ

416 :名無しさん@お腹いっぱい。:2015/10/20(火) 09:51:42.98 ID:F7whZ6T60.net
へー、run,のあとコマンドラインのコマンド入れても動くのか。
なら
Shutdown, 1
より
run,shutdown -s -t 0
のほうがしっかり処理終わらせてシャットダウンできるな

417 :名無しさん@お腹いっぱい。:2015/10/20(火) 12:53:48.49 ID:85QvDqET0.net
>>416
どんな新発見かとおもたら・・・

418 :名無しさん@お腹いっぱい。:2015/10/20(火) 13:12:31.13 ID:F7whZ6T60.net
新発見っていうか、外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってたから、俺としてはコマンドラインてシャットダウン呼べるのは感動した

単純にrunでcmdが使えるって知らなかったんど

419 :名無しさん@お腹いっぱい。:2015/10/20(火) 14:18:29.22 ID:PSPgOZED0.net
コントロールにスクロールバーが存在するかどうかで別の動作をさせたいのですが
スクロールバーの有無はどのように判定すればいいでしょうか

420 :名無しさん@お腹いっぱい。:2015/10/20(火) 15:15:21.86 ID:ky3Gyr1c0.net
Winget ControlListで全コントロール列挙して
ScrollBarという文字が含まれるコントロール名を探す
ただしソフトによってはコントロール名が取れないものもあるので万能ではない
その場合は個別対応が必要

ここのGetScrollBarHwnd()とか
http://www6.atwiki.jp/eamat/pages/32.html
ここのTW_FindScrollBar()とか (※こちらは旧仕様のため64bit版ahkでは動かない模様)
https://sites.google.com/site/agkh6mze/trackwheel

421 :名無しさん@お腹いっぱい。:2015/10/20(火) 17:06:12.11 ID:3kcy3KXH0.net
>外付けHDがAhkコマンドで起動したまま本体だけシャッドダウンするとかいうワケわかんないことになってた

これの意味がまったくわからない
だれか翻訳して

422 :名無しさん@お腹いっぱい。:2015/10/20(火) 17:11:35.56 ID:F7whZ6T60.net
ごめん。本来なら外部HDも一緒に電源落ちてくれるんだ。でもAHKからシャットダウンをすると外部HDがつながったまま本体がシャットダウンされたと認識されないんだ。
その結果再起動した時そのハードディスクが認識されないとか変なことになるんだ。
コマンドプロンプトからシャットダウンしたらこの問題は回避出来る。
AHKからのシャットダウンはなんだか挙動がおかしいんだ。

423 :名無しさん@お腹いっぱい。:2015/10/20(火) 17:55:57.10 ID:85QvDqET0.net
よく分からん…というか、同じ様な環境にないので実証してない(できない)のでスマンが、
電源切るなら、「Shutdown, 1」じゃなく、
;(シャットダウン + 実行後電源を切る = 1 + 8 = 9):
Shutdown, 9
でどうなんだろう?(場合によっては「強制的=4」も追加するとか)

424 :名無しさん@お腹いっぱい。:2015/10/20(火) 18:15:50.58 ID:3kcy3KXH0.net
うちもAHKでリブートとか停止の指示をやってるので参考までに

強制再起動,shutdown -r -t 15 -f
強制シャットダウン,shutdown -s -t 15 -f
再起動,shutdown -r -t 15
シャットダウン,shutdown -s -t 15
シャットダウン中止,shutdown -a

この5項目を使って、メニュー表示にしてる。
カンマより右をbatに書き出して、runで実行するだけ。
batに書き出す理由は、コンソール画面が出て、わかりやすくなるため。

さいごの「シャットダウン中止」は、15秒以内に呼び出せば取り消せるようにしてる。

遠隔地に設置したPCに指示を与える場合、強制(fつき)にしないと、
AHKスクリプトが終わったのにOSの他の要素で再起動を阻害されて、
実機を見に行かないとどうしようもなくなるという、最悪の状態になる。

こうなった場合、コマンドラインから直接、コンピュータ名指定で再起動を指示することで
切り抜けられることもあるが、基本的にAHKが使える状態なら fつき で実行するようにしてる。

425 :名無しさん@お腹いっぱい。:2015/10/22(木) 03:50:53.89 ID:X0FJzFF20.net
超絶簡単なメニュー選択方法を思いついた
ahoka_launcher(key=0)
{
  if !key
  {
    msgbox,,Ahoka Launcher,
(
[Q] Quit
[W] C:\Windows
[E] Expleorer
[C] Calc
)
    return
  }
  send,{Enter}
  if key=q
    return
  if key=w
    run,c:\windows
  if key=e
    run,explorer.exe
  if key=c
    run,calc
}

^!L:: ahoka_launcher()

#IfWinActive,Ahoka Launcher ahk_exe AutoHotkey.exe
q:: ahoka_launcher("q")
w:: ahoka_launcher("w")
e:: ahoka_launcher("e")
c:: ahoka_launcher("c")

426 :名無しさん@お腹いっぱい。:2015/10/22(木) 09:06:23.49 ID:N8YHprkn0.net
見栄え的にも操作的にもコーディング的にもあまり楽ではなさそうだが

起動部分まとめたらメンテは多少楽になるか
#IfWinActive,Ahoka Launcher ahk_exe AutoHotkey.exe
q::
w::
e::
c::
ahoka_launcher(A_ThisHotkey)
return

427 :名無しさん@お腹いっぱい。:2015/10/23(金) 00:09:58.39 ID:O1iHphiL0.net
PS/2キーボードにUSB変換器をつなげて使ってる人いますか?
俺の環境だと、Shift+修飾キー+なんかのキーのように3キーを押下するときにリピートが効かない。修飾キーがリリースされてShift+なんかのキーが発動してしまう。
センチュリーのPS2W-USBでこの症状を確認して、今日CoregaのCG-USBKMSV2を買ってきたが、同じような感じでした。
ときどき修飾キー+任意のキーの2キーによるHotkeyさえ取りこぼすのでセンチュリーより悪い点もあります。
古いキーボードをUSB端子しかないPCでAHKを使う際に大きな問題になると思いますが、皆さんの環境ではいかがですか?

428 :名無しさん@お腹いっぱい。:2015/10/23(金) 04:11:34.85 ID:kB6oEzWC0.net
俺も似たような変換器を各社何個も買って、結局どれ一つとして、まともに動かなかったから
USBキーボードに乗り換えたよ。

ひどいのだと、普通のキーリピート自体がおかしい。

キーを押しっぱなしにした場合、ふつうだとこうなるはずだけど
・    ・・・・・・・・

安いのだと、こうなる
・ ・  ・・・・・・・・

なぜか知らんがup/downが2回繰り返される。

429 :名無しさん@お腹いっぱい。:2015/10/24(土) 12:11:58.43 ID:7jcVs8kq0.net
LV_GetNext等の関数ではウィンドウ番号の個別指定は不可能ですか?
LV_GetNext("1:" 0, "F")みたいにしても効果がないんだが

430 :名無しさん@お腹いっぱい。:2015/10/24(土) 12:20:50.07 ID:hBkf+BQk0.net
>>429
Gui,ListView

431 :名無しさん@お腹いっぱい。:2015/10/24(土) 12:40:10.57 ID:7jcVs8kq0.net
>>430
えっと、これは同じウィンドウ番号のGuiでリストビューが複数ある場合の指定ということですかね
ウィンドウ番号そのものの指定はGui, DefaultでできるのですがGuiControlのようにコマンド(関数)別での個別指定は無理っぽい感じですかね
トン

432 :名無しさん@お腹いっぱい。:2015/10/24(土) 21:46:31.26 ID:u4Zt3OEo0.net
hoge -a > aaa.txt
hage -b > bbb.txt
batファイルにこのように記述して起動すると連続して一気に処理してくれますが、
batをrunさせる方法ではなく、ahkから直接、しかも一気に処理させる方法ありますか?

やはり、一つずつ起動させるしかないですか?
run, %ComSpec% /c hoge -a > aaa.txt
run, %ComSpec% /c hage -b > bbb.txt

スレ違い質問かもしれませんが、お願いします。

433 :名無しさん@お腹いっぱい。:2015/10/24(土) 21:51:32.83 ID:r2r4w1Fn0.net
Autohotkeyでbatファイルを作成して、その後に実行させる

434 :名無しさん@お腹いっぱい。:2015/10/24(土) 23:49:33.01 ID:/X7ajDWR0.net
&

435 :432:2015/10/25(日) 00:56:55.73 ID:TsHcd+Aa0.net
>>433,434
レスサンクスです。
run, %ComSpec% /c hoge -a > aaa.txt & hage -b > bbb.txt
で行けました。

436 :名無しさん@お腹いっぱい。:2015/10/25(日) 02:40:40.49 ID:kFnvS5jN0.net
コピーした文字列を句点で分割して、各行を変数に代入してリストアップしたいんですけど
どういう処理をすればいいんでしょうか?
何となく下記のような感じでいけないかと思ったんですが
ループ中のiを1つずつ増やしていく方法がわからず挫折してしまいました。
Loop {
StringGetPos,POS,Clipboard,。,L%i%
StringMid,str%i%,Clipboard,POS,,L%i%
} Until POS = 1
Gui, Add, ListBox,,%str1%|%str2%|...|%stri%

437 :名無しさん@お腹いっぱい。:2015/10/25(日) 03:48:03.86 ID:eWto7l690.net
>>436
Loop, Parse

438 :名無しさん@お腹いっぱい。:2015/10/25(日) 12:42:03.69 ID:TW2CaBWA0.net
StringSplit

439 :名無しさん@お腹いっぱい。:2015/10/25(日) 12:48:15.80 ID:TW2CaBWA0.net
分割自体はLoop, ParseかStringSplitでいいと思うが
根本的なところで引っかかってるようなので補足

>ループ中のiを1つずつ増やしていく方法
i = i + 1 で単純にカウントアップする行を入れる
なおループのカウントだけならA_Index参照すればそもそもi変数自体不要

440 :名無しさん@お腹いっぱい。:2015/10/25(日) 13:20:18.45 ID:O+5eHiWl0.net
Loop,purgeで句読点で区切ってしまえばいい

441 :名無しさん@お腹いっぱい。:2015/10/25(日) 14:43:17.13 ID:gbJQJB+00.net
マウスのサイドボタンにジェスチャ機能を取り付けたいです

上下左右への単純なジェスチャはできたんですが
ボタンを押しながらマウスを時計回り、または反時計回りにくるくる回したことを認識させるにはどうすればいいでしょうか
http://pastebin.com/raw.php?i=gDmvQ752

442 :名無しさん@お腹いっぱい。:2015/10/25(日) 15:12:08.47 ID:O+5eHiWl0.net
MGLでいいんじゃねーのん?

443 :名無しさん@お腹いっぱい。:2015/10/25(日) 16:12:13.65 ID:kFnvS5jN0.net
>>437-440
Loop,Parseコマンドがドンピシャでした! 本当にありがとうございました。
リストボックス表示させるのはよくわからなかったのでチェックボックスを沢山作らせて何とかできました。

444 :名無しさん@お腹いっぱい。:2015/10/26(月) 02:32:20.49 ID:zHYr0+XK0.net
導入する為の判りやすい解説サイトないでしょうか?

445 :名無しさん@お腹いっぱい。:2015/10/26(月) 04:48:58.42 ID:umkpFuAC0.net
ahkwikiが分かりづらいと言うなら残念ながらない

446 :sage:2015/10/26(月) 12:48:07.04 ID:Jd6A5Anl0.net
ahkwiki って止まってるんすか?
この前、"あっ" 間違ってる発見、とか思ってカキコもうとしたんだけど。
目ンテナンスのためロックとかで、ダメだったんだけど。

447 :名無しさん@お腹いっぱい。:2015/10/26(月) 14:27:30.54 ID:3HPI9QM40.net
日本語でおk

448 :名無しさん@お腹いっぱい。:2015/10/28(水) 19:09:02.15 ID:kS2r4w390.net
環境 Windows 7 64bit >ユニコード 64版をインスコ
AutoHotKeyの導入しようと試しているのですが、

AutoHotKeyの導入方法
http://so-zou.jp/software/tool/system/auto-hot-key/introduction/

↑ このページを参考にして
MouseGestureL.ahk
http://hp.vector.co.jp/authors/VA018351/mglahk.html

↑ このマウスジェスチャー導入したいのですが、

Script file not found:
C:\Users\eiji\Documents\AutoHotkeyU64.ahk

と表示されて AutoHotkeyU64.exeが実行できません、

よろしくお願いします m(_ _)m

449 :名無しさん@お腹いっぱい。:2015/10/28(水) 19:37:17.66 ID:sDP6IxPu0.net
>>448
MGLだけ導入したいなら、MouseGestureL のヘルプを読む。
あと、専門スレがある。
MouseGestureL.ahkを流行らせるスレpart2 [転載禁止]©2ch.net
http://anago.2ch.net/test/read.cgi/software/1430873236/

450 :名無しさん@お腹いっぱい。:2015/10/29(木) 16:23:23.51 ID:c1DAqggd0.net
RAlt::
if var1 = 0
var1 := 1
else
var1 := 0
Return
;;右Altキーを押したあとUで4を入力
$u::
if var1 = 1
send, {Numpad4}
else
send, u
Return
これで行けるかと思ったのですが、
親指シフトの『やまぶきR』というソフトを使ってると
再帰的に呼び出されエラーになります。
何か別の書き方ありますか?ヒントお願いします

451 :名無しさん@お腹いっぱい。:2015/10/29(木) 17:52:03.19 ID:stGonDOV0.net
>>450
試しにやまぶきR Ver. 1.11.1を起動して
スクリプトを実行してみたが問題ない

環境 ←OS AHK やまぶきRの設定
「どの部分が」再帰的に呼び出され ←スクリプトのログ
「どんな」エラー ←エラーメッセージ

が書かれていないのでこれ以上答えられない

452 :名無しさん@お腹いっぱい。:2015/10/29(木) 22:05:37.12 ID:c1DAqggd0.net
>>451
検証ありがとうございます。こちらでもう一度確認したところ、
>>450 のコードだとひらがなの『うの段』たとえば『く_ku』が
『kち』になってしまいます。Numpad1〜6の時は再帰的なエラー
だったのですが検証不足でした。・・・それともうちの環境のセイ?
 
send, uの部分がだめなのかと思い、
~u::
if var1 = 1
send, {Numpad4}
Return
とすると4と出て欲しいときにu4と出てしまう。当然ですが。

453 :名無しさん@お腹いっぱい。:2015/10/30(金) 10:33:47.09 ID:XgAkGZUx0.net
「フォーカスのあるウインドウのキャレットの位置(というかキーボードの入力が送られる場所)が
メニューバー(ファイル、編集、…みたいなやつ)であったらそれをやめさせる」
処理ってどうすればできるかな?
やめさせるのはaltを一回送ればいいと思うけど、
「いま現在メニューバーが選択された状態」を検出する方法ってあるんでしょうか

454 :名無しさん@お腹いっぱい。:2015/10/30(金) 11:55:53.40 ID:9SsFNvwe0.net
.ahkファイルをautohotkeyに関連付けしていない状態で
auttohotkeyから.ahkファイルを実行させるにはどう記述すればいいんでしょう?
そもそも開き方がわからんとです。
run,c:\autohotkey_l.exe -c:\hoge.ahkなどとしても普通に無理でした……

455 :名無しさん@お腹いっぱい。:2015/10/30(金) 13:29:15.41 ID:LGPNipgr0.net
Run,%A_AhkPath%, "c:\hoge.ahk",UseErrorLevel
で普通に行けるはずだけど

456 :名無しさん@お腹いっぱい。:2015/10/31(土) 19:26:00.95 ID:G6rBw3hl0.net
試行錯誤して
Run,%A_AhkPath% c:\hoge.ahk,,UseErrorLevel
で動きました! ありがとうございました!

457 :名無しさん@お腹いっぱい。:2015/10/31(土) 21:14:37.33 ID:uLNlOITA0.net
試行錯誤も何も(>>455の間違いだらけのレスは別として)・・・
wiki見ればすぐに解決できただろうし、無理に「UseErrorLevel」なんて使うことも無かろうにね(´ω`)

458 :名無しさん@お腹いっぱい。:2015/10/31(土) 22:19:04.92 ID:G6rBw3hl0.net
すいません。runコマンドのページは見たんですけど
.ahkファイルを開くためには
AutoHotkey.exe -hoge.ahkでもAutoHotkey.exe /hoge.ahkでもなく
AutoHotkey.exe hoge.ahkって書かなきゃいけないってどこか書いてありました?

459 :名無しさん@お腹いっぱい。:2015/10/31(土) 22:26:10.17 ID:TOvhN2lI0.net
ファイル名やコマンドライン文字列、あるはURLを指定する。
ここだね。コマンドラインの書き方は前提知識なので。

460 :名無しさん@お腹いっぱい。:2015/10/31(土) 22:26:51.06 ID:ztH9/Opv0.net
autohotkeyの使い方というよりはコマンドプロンプトの使い方かな
exe ファイルパスでそのソフトで実行とか、ブラウザ urlでそのページ開くとか、ファイラ フォルダパスでそのフォルダ開くとか

461 :名無しさん@お腹いっぱい。:2015/10/31(土) 22:45:25.12 ID:8Y+n2zjO0.net
発想が逆
-や/を付ける必要があるならそう書いてあるはずで
書いてないってことは付けないってことなんだよ

462 :名無しさん@お腹いっぱい。:2015/11/01(日) 13:06:39.26 ID:4LhHwZLY0.net
#cを1回押し、2回押し、3回押しにそれぞれ別の動作を割り当てたいんですがどうすればいいですか?
単独キー2回押しのスクリプトを改変して作ってみようと思いましたが自分の知識では無理でした・・。
修飾キーがついている場合はどう書けばいいんでしょうか?

463 :名無しさん@お腹いっぱい。:2015/11/01(日) 13:40:13.68 ID:+pXDz0RX0.net
A_ThisHotkeyから修飾キーを取り外してからKeyWaitとかで判断するといいんじゃない
試しに書いてみたらやたら長くなっちゃったけど
http://pastebin.com/raw.php?i=PCPx4zqc

464 :名無しさん@お腹いっぱい。:2015/11/01(日) 13:46:20.79 ID:RxGT96zV0.net
SetTimerでサブルーチンに飛ぶ直前に処理していた行番号を記憶しておく方法がないか質問。

下のスクリプトは途中でエラー条件が満たされたらメッセージが出る感じのものなんだけど、
わざわざ変数CheckPointを定義しなくてもサブルーチンに飛ぶときに飛ぶ前の行番号を
記録することはできないかな?

SetTimer, 監視用ルーチン, 1000
Loop {
CheckPoint := 1
〜〜〜処理1〜〜〜
CheckPoint := 2
〜〜〜処理2〜〜〜
CheckPoint := 3
〜〜〜処理3〜〜〜
}
監視用ルーチン:
If( エラー条件() = 1 ){
Msgbox,% "エラー。CheckPoint:" CheckPoint
}
return

465 :名無しさん@お腹いっぱい。:2015/11/01(日) 14:09:19.81 ID:bAGjtzRH0.net
簡単。キーを打つことでカウント変数に++していって、SETTIMERを走らせる。
サブルーチン側で何回入力したかで分岐させてやればいい。

#IF getkeystate("Lwin","P")
C::
count++
Settimer,renda,-1000
return

renda:
If(count==1)
1回めの処理
else If(count==2)
二回目の処理
else
三回目
return

こんなんでいいと思う。
最も連打系は分岐のために時間を待たなきゃいけないから1打目の反応が鈍くなるんだけど

466 :名無しさん@お腹いっぱい。:2015/11/01(日) 17:28:09.40 ID:4LhHwZLY0.net
>>463
ありがとうございます!
まさにやりたかったことです。解説までつけていただいてありがとうございました。
助かりました。勉強になります。

467 :名無しさん@お腹いっぱい。:2015/11/02(月) 18:32:28.15 ID:+rL4hChO0.net
autohotkeyをタブレットで絵描きするときに使いたいと思って、autohotkeyとこれ
http://konartist3d.deviantart.com/art/ArtDock-283342420
をダウンロードしてインストールし、Artdock.ahkから起動してツールタブは出るんですが、マウスカーソルを持っていくとタブが消えてしまいます。
WINDOWS10 64bitだったので対応してないのか思い、WIN7 Ultimateにもインストールしたのですが同じ症状で使えないのですが、何か設定などし忘れてますでしょうか?
英語と日本語で色々ググってたのですが分からず、すみませんが教示頂ければ助かります。

468 :名無しさん@お腹いっぱい。:2015/11/02(月) 19:18:39.88 ID:0myH0QY30.net
スプリクト作者に聞くのが一番の近道と思う
ここでは主に自作スクリプトの添削や質問が中心で
ahkで作られた配布スクリプトのサポートはしていないので

469 :名無しさん@お腹いっぱい。:2015/11/03(火) 12:46:45.85 ID:yCEIYI4V0.net
ファイルの保存ダイアログなどのダイアログ操作機能とか,意外にも実装されてないよな

470 :名無しさん@お腹いっぱい。:2015/11/03(火) 13:21:38.57 ID:0hov7/nX0.net
ahkに?
FileSelectFile
FileSelectFolder
つカット毛

471 :名無しさん@お腹いっぱい。:2015/11/03(火) 13:43:04.37 ID:hLZe0AKe0.net
便乗だけど、guiでボタンとか選択肢を複数個出して、

http://www.hlt.jp/wt/pc/19th/f006d.gif

たとえばこういう問い合わせを作りたい場合、GUIでチマチマ作るしかない?

AHKを使い始めたのは、Lなし無印の7年ほど前で、
こういうダイアログ用に自分で関数作って使ってる。
けど、配列の概念がなかった時代なので、自分で作っておきながら、使いにくい。
いまのバージョンだと、引数を当てるだけで、サクっと作れたりする?

472 :名無しさん@お腹いっぱい。:2015/11/03(火) 13:54:31.77 ID:GKviTOoT0.net
Guiで作れるけどそこまでやるならVB使えVB

473 :名無しさん@お腹いっぱい。:2015/11/03(火) 18:26:41.49 ID:Q/xCbLNQ0.net
LclickてAHKだと反応しないことがあって不便なんだけど、postmassageのほうが有効範囲広いのかな?

474 :名無しさん@お腹いっぱい。:2015/11/04(水) 10:34:30.20 ID:Am8N3eG50.net
Send,{RButton down} して、右ボタンがdown状態になっている時、これをキャンセルすることは出来ますか?

RButton up を送ると結果的に 右ボタンクリックが発生してしまいます。
そうではなくて、クリックを発生させずに右ボタンの状態を押してない状態に戻したいです。

自分で調べた範囲では無理っぽいのですが、もし可能なら教えて下さい。

475 :名無しさん@お腹いっぱい。:2015/11/04(水) 12:36:29.63 ID:zvo19fM80.net
Rbutton up::return

こんだけ。

476 :名無しさん@お腹いっぱい。:2015/11/04(水) 13:34:38.34 ID:IS5ef/wi0.net
exitのとこ見てみ

477 :名無しさん@お腹いっぱい。:2015/11/04(水) 14:37:58.31 ID:IS5ef/wi0.net
知恵を貸してください
ノンアクティブウィンドウに対しての処理をしたいんですけど、Controlsendは正規表現は無理ですかね

#If Winexist("ニコニコ動画:GINZA - Mozilla Firefox") ;ニコニコ動画に対しての処理
!space::ControlSend, GeckoFPSandboxChildWindow1, {Space}

Control名が結構変わってしまうのでこれをこういうカタチで処理したい。

!space::ControlSend, ^GeckoFPSandboxChildWindow\d+$, {Space}

478 :名無しさん@お腹いっぱい。:2015/11/04(水) 14:56:18.35 ID:IS5ef/wi0.net
あ、いやどうにかなった。失礼。

#If Winexist("ニコニコ動画:GINZA - Mozilla Firefox") ;ニコニコ動画に対しての処理
!space::
Winget,CtrlHWND,ControlList,ニコニコ動画:GINZA - Mozilla Firefox
Loop, Parse, CtrlHWND, `n,`r
{
If RegExMatch(A_LoopField,"^GeckoFPSandboxChildWindow\d+$")
PlayerCtrl := A_LoopField
}
ControlSend, %PlayerCtrl%, {Space}
return

479 :名無しさん@お腹いっぱい。:2015/11/04(水) 15:43:24.77 ID:Am8N3eG50.net
>>475
それだとGetKeyState("RButton")が1のまま、つまりRButtonは論理的に押されたままです。

ある条件の時に、RButtonの状態を自動的にupに戻したい。でも結果的にクリックとなってしまうのは困る。
ということです。

480 :名無しさん@お腹いっぱい。:2015/11/04(水) 16:35:32.95 ID:ABlKf9Ea0.net
クリックの判定がupにかかってるから無理だよ

Rbutton (down)時に押下保留にしておいて
Rbutton upでキャンセルするならreturn
クリックさせるなら Send,{RButton} か MouseClick,RIGHT だな
ただしドラッグが効かなくなる両刃の剣

481 :名無しさん@お腹いっぱい。:2015/11/04(水) 17:13:19.95 ID:8ZQkMSIi0.net
専用うぷロダの一番上にあるやつに
一旦クリックを保留しておいてドラッグだと判断したら押した時の位置に戻ってからドラッグさせるってのがあったような

482 :名無しさん@お腹いっぱい。:2015/11/04(水) 17:15:04.56 ID:cnyAeC7s0.net
すごいなそれw
考えた人は変態だ

483 :名無しさん@お腹いっぱい。:2015/11/04(水) 17:30:49.91 ID:zvo19fM80.net
あれは機能多いし便利に使わせてもらってる

484 :名無しさん@お腹いっぱい。:2015/11/04(水) 17:42:21.76 ID:zvo19fM80.net
ただアレに文句言うとLbutton乗っ取って処理してる分時々クリックが効かないソフトとかが出てくる。
だから暫定的にこんなものを作った

#If MGLoff()
&& not MouseIsOver("ahk_class #32768") ;除外設定
&& not MouseIsOverExe("PCastHD2.exe")
&& not MouseIsOver("ahk_class AutoHotkeyGUI")

MouseIsOverExe(ExeFile){
DetectHiddenWindows,on
MouseGetPos,,, Win
WinGet, Exename,ProcessName,ahk_id %Win%
return Exename == ExeFile
}

特定PROCESS上のみで作用する(除外する)
notで成否判定逆転させればどっちも使える

485 :名無しさん@お腹いっぱい。:2015/11/04(水) 17:48:37.28 ID:XJ9nGuqL0.net
「ATOKで変換中かどうか」を判定する方法はありますか?

486 :名無しさん@お腹いっぱい。:2015/11/04(水) 18:14:22.90 ID:ABlKf9Ea0.net
IME_GetConverting()の改造でいけんじゃね?
http://www6.atwiki.jp/eamat/pages/18.html

487 :名無しさん@お腹いっぱい。:2015/11/04(水) 18:29:44.09 ID:dMTeRru70.net
>>474
押し下げたものを無かったことにするのは無理
フックを使わずにRButtonをホットキーに登録して
物理的、論理的(ソフトの信号)の両方を横取りして好きなように処理をしたらいい

>>484
謎の関数を書かれても困るんだけど
詳細ぐらい書いたら?

488 :名無しさん@お腹いっぱい。:2015/11/04(水) 18:54:16.44 ID:XJ9nGuqL0.net
>>486
#IfWinExist,ahk_class MSCTFIME Composition
で出来ました
ありがとうございました

489 :名無しさん@お腹いっぱい。:2015/11/04(水) 19:47:24.01 ID:4qKjOEea0.net
>>487
話の流れからしてアップローダの奴のだろ

関数の内容自体はわかるし、何やってるかもよくわかる
この手のマウス下のコントロールとかウィンドウはあるけど、「プロセス」ってのは珍しい
exe指定ならわざわざウィンドウやコントロール探す手間がないからいいかもしれない

490 :名無しさん@お腹いっぱい。:2015/11/04(水) 20:14:11.10 ID:Am8N3eG50.net
>>480
>>484
>>487

そもそもWindows自体が左右クリックの検出ロジックが違うんですね。
副作用対策も大変なので諦めることにします。

ありがとうございましたm(_ _)m

491 :名無しさん@お腹いっぱい。:2015/11/04(水) 21:23:33.92 ID:ABlKf9Ea0.net
いや左クリックも基本up時判定だよ
ドラッグやメニュー操作みたいにdown状態から操作するものもあるから
down-upでワンセットつったほうがいいか

492 :名無しさん@お腹いっぱい。:2015/11/04(水) 22:37:10.02 ID:UY/A9Slf0.net
マウスクリックは長押し以外でdown判定されると使いづらくなりそうだ

493 :名無しさん@お腹いっぱい。:2015/11/04(水) 23:52:57.95 ID:7chYpFRh0.net
てか何がしたいのだろう?目的分からなきゃ
代替案も出せないしな

494 :名無しさん@お腹いっぱい。:2015/11/05(木) 09:14:14.34 ID:HyTyenXG0.net
スクリプト貼ってくれればそもそもRbuttonの処理介さなくても良い処理にできそうなもんだが。

495 :名無しさん@お腹いっぱい。:2015/11/05(木) 09:58:38.98 ID:PgJ2mqNv0.net
つか単にR押下後のaltキャンセルでは右クリメニューが一瞬出るのが気に食わない
って程度の理由じゃね?
発端の>474もダメ元で可能かどうかを聞いてるのであって
できると確信してやり方教えろ言ってたわけじゃなさそうだし

496 :名無しさん@お腹いっぱい。:2015/11/05(木) 10:22:03.11 ID:M42knP/r0.net
超絶無理矢理な方法でContextMenuを見つけた瞬間escを送って消す、なんて力技を提示してみる。

GroupAdd, ContextMenu,ahk_class #32768
GroupAdd, ContextMenu,ahk_class MozillaDropShadowWindowClass

ContextMenuClose:
DetectHiddenWindows,on
keywait,Rbutton
WinWait,ahk_group ContextMenu
If winexist("ahk_group ContextMenu")
Winclose,ahk_group ContextMenu
return

497 :名無しさん@お腹いっぱい。:2015/11/05(木) 10:39:03.98 ID:Q7ESMVmw0.net
すみません質問です
/*
Clipboard =
(
「SYMPHONY IN RIFFS」
(JAZZ AT LINCOLN CENTER
ORCHESTRA、WYNTON MARSALIS)
(8分25秒)
<BLUE ENGINE RECORDS BE0001>

「CUBANA BOP」(DIZZY GILLESPIE、
HIS ORCHESTRA)
(3分05秒)
<RCA/VITOR BVCJ 7311-12>
)
*/
var := RegExReplace(Clipboard, "`r`n", "`n", "")
var := RegExReplace(var, "m`ns)^「(.+?)」.*?((.+?)).*?<(.+?)>"
, RegExReplace("$2", "`n)`n", "", "") "`t"
. "$1`t"
. "<" RegExReplace("$3", "/", "/", "") ">`n", "" )
MsgBox,,, %var%,
return
; JAZZ AT LINCOLN CENTER
; ORCHESTRA、WYNTON MARSALIS SYMPHONY IN RIFFS <BLUE ENGINE RECORDS BE0001>

498 :名無しさん@お腹いっぱい。:2015/11/05(木) 10:39:42.14 ID:Q7ESMVmw0.net
; なぜか$2の改行が消えてくれないので

var := RegExReplace(Clipboard, "`r`n", "`n", "")
var := RegExReplace(var, "`n)`n`n", "`t", "")
StringSplit, ar0, var, %a_tab%, %a_space%
Loop, %ar00% {
var := RegExReplace(ar0%A_Index%, "`n", "", "")
var := RegExReplace(var, "’", "'", "")
var := RegExReplace(var, "(?:、|&|`&)\s*", " and ")
RegExMatch(var, "im)^「(.+?)」.*?((.+?)).+?<(.+?)>", $)
var .= $2 "`t" $1 "`t<" $3 ">`n"
MsgBox,,, %var%,
;RunWait, lame Newfile%A_Index%.wav --preset 192 --ta "%$2%" --tt "%$1%" --tc "<%$3%>", %A_WorkingDir%
}
return
; みたいにしているのですが、なぜ前者は$2の改行が消えないのでしょう?

499 :名無しさん@お腹いっぱい。:2015/11/05(木) 11:23:43.56 ID:HJOvHZVp0.net
>>495
>R押下後のキャンセルで右クリメニューが一瞬出るのが嫌

まさにその通りです。

>>491-494
いろいろ情報ありがとう。

>>496
未知のコマンドとか調べるのに時間が掛かるので後で試させて頂きます。ありがとう。

500 :名無しさん@お腹いっぱい。:2015/11/05(木) 11:52:02.52 ID:PgJ2mqNv0.net
>>497
面倒なんでパターン解析とか検証しないで適当に答えるが
$2は上位の ((.+?)) あたり引っ張ってきたいってことか?

入れ子は末端から判定されていくので
RegExReplace("$2", "`n)`n", "", "")
では$2は文字通り"$2"として処理されてる

あと質問するならコードだけじゃなく説明ややりたいことちゃんと書いて
JAZZ ATなんたらが望む結論なんだろうけどそれならそうコメント入れれ
コードから読み取れってのは不親切つか甘え

501 :名無しさん@お腹いっぱい。:2015/11/05(木) 15:03:18.55 ID:8+ZAP0Q20.net
>>478
出来ないって言おうとしたらこんな方法あったのか。すげーな変態か

502 :名無しさん@お腹いっぱい。:2015/11/05(木) 15:32:03.76 ID:5Pzz/kk+0.net
キーをハンドリングした場合、
判定の結果何もしなかったとしても、アプリケーションにはイベントが渡らないと思いますが
渡す方法ありますか?
#IfWinExistなどで外で判定をするしかないのでしょうか?

503 :名無しさん@お腹いっぱい。:2015/11/05(木) 15:47:14.74 ID:aAvc1vDl0.net
>>502
ホットキーに登録したキーのイベントを乗っ取りたくないなら
~で通すか自前でSendすればいい

504 :名無しさん@お腹いっぱい。:2015/11/05(木) 17:59:48.23 ID:5Pzz/kk+0.net
~ってはじめて知りました
また自前でsendするという発想はありませんでした
ありがとうございます

505 :名無しさん@お腹いっぱい。:2015/11/05(木) 21:58:20.74 ID:Q7ESMVmw0.net
レス遅れました。ID変わったかもしれません>>497です
>>500 ありがとうございます。説明不足ですみませんでした。
> $2は上位の ((.+?)) あたり引っ張ってきたいってことか?
そうです。
やりたいことは「文字列1」全角( 文字列2 改行 文字列3 全角)文字列 改行 文字列4 改行 改行 の法則性がある文字列を
クリップボードにコピー(具体的には http://www4.nhk.or.jp/jazz/5/ のサイトからコピー)してそれぞれ置換しつつ、
1〜4の文字列を取り出したいだけなのですが

入れ子の$2を"$2"としたのは、RegExReplace関数内での$変数はRegExMatchと違って"〜"で囲わなければ使えないと誤解してました。
入れ子のRegExReplaceの第1引数に$変数を使うには"〜"で囲わないと空の文字列が帰ってくるし、"〜"で囲うと変換できないし
つまりRegExReplaceの入れ子で、入れ子の外側の$変数は使えないという結論であってますか?

"$3"の全角/は半角/に正常に変換できている(と勘違いしてしまった)ので、なぜ"$2"は変換に失敗するのかなと思った次第です。
お騒がせしました。

506 :名無しさん@お腹いっぱい。:2015/11/05(木) 22:10:08.87 ID:zDgeVp260.net
RegExReplaceは$nを変数として作成してるわけじゃないので たぶん

507 :名無しさん@お腹いっぱい。:2015/11/06(金) 01:25:49.79 ID:he4vkYdS0.net
regexreplace(regexreplace(clipboard, "[\r\n]"), "「(.+?)」((.+?)).+?<(.+?)>", "$2`t$1`t<$3>`n")

508 :名無しさん@お腹いっぱい。:2015/11/06(金) 03:08:05.31 ID:2EfBc8ko0.net
艦これの入力支援ください
ちっちゃいチェックボックスにカーソル合わせてカチカチやるの大変です
チェックボックス付近で左クリックしたらチェックボックスを押すようカーソル位置を補正するようなのおねがいしますm(__)m

509 :名無しさん@お腹いっぱい。:2015/11/06(金) 09:34:52.17 ID:598Fhz410.net
スレチ
つくってスレにでも池

510 :名無しさん@お腹いっぱい。:2015/11/07(土) 00:16:57.97 ID:bKUBtGr00.net
タブで最前面(表示されている)になってるウィンドウを指定する、なんてのはできませんかね。

511 :名無しさん@お腹いっぱい。:2015/11/07(土) 00:51:05.93 ID:CBuUUJ6p0.net
説明不足すぎてなんとも

512 :名無しさん@お腹いっぱい。:2015/11/08(日) 02:30:39.20 ID:loQvB1cR0.net
moji := "a,S,A,s"
Sort, moji, F StringSort D,
MsgBox,,, %moji%, ; A,a,s,S ; これをa,A,s,Sのようにアルファベット順かつ小文字が先にソートしたいのですが
StringSort(a1, a2) { ; 流行らせるページの例より
return a1 > a2 ? 1 : a1 < a2 ? -1 : 0
}
moji := "a,S,A,s"
Sort, moji, D`, C ; A,S,a,s
MsgBox,,, %moji%,
moji := RegExReplace(moji, "(?P<up>[A-Z,]+)(?P<low>[a-z,]+)", "$L{up}$U{low}", "")
MsgBox,,, %moji%, ;これではダメだしなんかうまい方法ないでしょうか
return

513 :名無しさん@お腹いっぱい。:2015/11/08(日) 09:08:43.44 ID:mnZ19LQL0.net
ASCIIコード順で
A〜Zは 0x41〜0x5A
a〜zは 0x61〜0x7A

なので大文字小文字区別なしでアルファベット昇順ソートした後
ループで1文字ずつAsc()チェック

Asc(a1)&0x20 == Asc(a2)&0x20 (同一アルファベットチェック) かつ
Asc(a1)<0x60 (1文字目大文字) かつ
Asc(a2)>0x60 (2文字目小文字)
のとき入替えていけばいい

514 :名無しさん@お腹いっぱい。:2015/11/08(日) 16:09:39.72 ID:GSUbphE40.net
;=== test.ahk ===

LButton::
Send,{LButton down}
KeyWait,LButton
Send,{LButton up}
Return

このスクリプトを動かしてAHKのウインドウのタイトルバー等をクリックすると、LButtonが押しっぱなしになってします。

どうやら {LButton down} を Send した直後にスクリプトが一時停止して、ESC か Enter を押すと再開されるみたいです。

どうしてこういう動作になるのでしょうか?

ver 1.1.22.02 ( 64bit Unicode ) / win7

515 :名無しさん@お腹いっぱい。:2015/11/08(日) 16:14:49.13 ID:Y5RrWgWz0.net
>>7

516 :名無しさん@お腹いっぱい。:2015/11/08(日) 17:24:29.13 ID:zBgd0BNB0.net
すみません、つい最近ahkを使い始めた超初心者ですがどうかご教授ください
ahk wikiのサンプルページの「1つのキーに3種類以上の動作割り当て」についてお伺いしたいのですが

vk1Dsc07B:: ;無変換
KeyWait,vk1Dsc07B,T0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
;ここに任意のコマンド 長押し
KeyWait,vk1Dsc07B ;←
Return
}
KeyWait,vk1Dsc07B,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
;ここに任意のコマンド 1度押し
KeyWait,vk1Dsc07B ;←
Return
}
;ここに任意のコマンド 2度押し
KeyWait,vk1Dsc07B ;←
Return

この「←」を付けた「KeyWait,vk1Dsc07B」は何のために記述してあるのでしょうか?
「無変換を押して離されるのを待つ」という意味なのは分かりますが、それぞれ「任意のコマンド」の後の
この位置に記述している意味が理解できません
初歩的な質問で申し訳ありませんが解説して頂けないでしょうか

517 :名無しさん@お腹いっぱい。:2015/11/08(日) 18:02:27.30 ID:Y5RrWgWz0.net
やってみればわかる

長押しの部分になければ押しっぱなしの間、長押し部分のコマンドが繰り返される
2度押しの部分になければ2回目押したままにすると長押しのコマンドが動いてしまう
1度押しの部分になければ、ホットキーと同じキーをsendしたときおかしくなる

518 :名無しさん@お腹いっぱい。:2015/11/08(日) 18:14:24.44 ID:zBgd0BNB0.net
>>517
なるほど分かりました
丁寧にありがとうございました

519 :名無しさん@お腹いっぱい。:2015/11/08(日) 18:59:23.09 ID:7BVgqMXM0.net
>>513
> Asc(a1)&0x20 == Asc(a2)&0x20 (同一アルファベットチェック) かつ
ここ間違ってないですか?勘違いならすみません
a1 = a2

ASCII化は時間かかるので正規表現で判定した方が処理速度早い

>>514
AHKのタスクトレイメニューやタイトルバー選択中は
強制的に最上位のスレッドとして処理されているので下位のスレッドは全部止まる

; 確認用
Loop
tooltip % A_TickCount


>>516
キーリピートを止める為

520 :名無しさん@お腹いっぱい。:2015/11/08(日) 19:43:20.63 ID:GSUbphE40.net
>>515さんのレスだけでは意味が分からなかったんですが、
>>519さんの説明を合わせてやっと分かりました。
ありがとうございました。

【初心者用メモ・・・】
AHKのウインドウのタイトルバーをクリック押下している間は、割り込み処理扱いになり、その間は元スレッドは中断されたまま。

Send,{LButton}ならdownとupが一括処理されるから、割り込みは一瞬ですぐ戻ってくる。
しかしSend,{LButton down}だとAHKのタイトルバーを選択した状態で割り込まれたままになり、デッドロックしてしまう。

521 :名無しさん@お腹いっぱい。:2015/11/08(日) 21:06:57.03 ID:mnZ19LQL0.net
>>519
申し訳ないチェックするビット間違えてました
× 0x20
○ 0x40

ASCII化つーか単に数値として判断したいだけなんだけど計測結果とかあります?
処理としては正規表現のほうが時間かかりそうな気はするけど
if (RegExMatch(a1,"i)" a2) && RegExMatch(a1,"[A-Z]") && RegExMatch(a2,"[a-z]"))
のほうが分かりやすいっちゃ分かりやすいかな

522 :名無しさん@お腹いっぱい。:2015/11/08(日) 21:54:09.15 ID:PEwgn65O0.net
Shift+方向キーで特定の動作が発生するという条件で
上記の動作の後、Shiftを離した際zキーを出力するようにしたいのですが

$Shift::
Send, {Shift down}
Send, {Shift up}
Send, z
return
とやった場合Shift+方向キーの動作はできるのですが、最後のzキーが出力されません
単体でShiftを押した場合はzキーが出力されますが、方向キーに限らず他のキーを途中で押すとやはり出力
されません

Shift up::Send,z
と、した場合Shift+方向キーの動作が発生しなくなります
ご教授お願いします

523 :512:2015/11/08(日) 22:46:14.27 ID:FpDxhVsK0.net
>>513,519,521
せっかくお答えいただいたのに理解できなくてすみません
もうすこち勉強してみます

524 :519:2015/11/09(月) 00:50:14.77 ID:gjmKuIWl0.net
>>521
すみません処理速度の件は間違えだったようです。
Ascを多用しなければASCIIの方が早かった。

比較用
http://pastebin.com/zQGmq4RH

525 :名無しさん@お腹いっぱい。:2015/11/09(月) 15:11:27.21 ID:MX+Un5nc0.net
LButtondownの件はスレッドに割り込みかけれないようにクリティカルをおいておくとスムーズ

526 :名無しさん@お腹いっぱい。:2015/11/09(月) 19:09:30.89 ID:gjmKuIWl0.net
>>522
http://ahkwiki.net/Hotkeys
http://ahkwiki.net/KeyList
http://ahkwiki.net/KeyWait

>>525
>>514の話ならCriticalは無意味

527 :名無しさん@お腹いっぱい。:2015/11/09(月) 22:06:40.86 ID:7AQJ6iEc0.net
>>526
ありがとうございました
できるようになりました

528 :名無しさん@お腹いっぱい。:2015/11/10(火) 07:31:43.16 ID:vSrGeN6/0.net
#IfWinExist
のような条件文の有効範囲を終わらせるにはどうしたらいいのでしょうか?

529 :名無しさん@お腹いっぱい。:2015/11/10(火) 07:54:37.12 ID:aGyO+ZX30.net
#IfWinExist とだけ書いた行までが有効範囲

530 :名無しさん@お腹いっぱい。:2015/11/10(火) 11:18:33.76 ID:cAwuKPXY0.net
どちらかと言うと次の#IF系が書かれた行のひとつ前まで

531 :名無しさん@お腹いっぱい。:2015/11/10(火) 11:43:08.14 ID:vSrGeN6/0.net
ありがとうございます
挙動的に、#if系の文はコードの末尾に書かなくてはいけない、ということなのか?
と思ったのですが、本当にそうなのですね。
なんともおかしな仕様ですね・・。

532 :名無しさん@お腹いっぱい。:2015/11/10(火) 11:46:17.20 ID:cAwuKPXY0.net
ちょっと違う。終わる、というよりも#IFのみの場合はすべての条件に当てはまる、という解釈のほうが正しい。

533 :名無しさん@お腹いっぱい。:2015/11/10(火) 12:39:11.72 ID:8dN7mOMv0.net
自分は適用範囲の終了には単に「#IF」しか書いてないな。
例えば↓な感じに・・・やっぱ、ちゃんと#IfWinExistな風に書いた方が良いのかな?

#If 条件A
a::処理A
#If 条件B
a::処理B
#If

534 :名無しさん@お腹いっぱい。:2015/11/10(火) 13:52:37.19 ID:PemWT9dE0.net
明示的に#EndIf があったほうが分かりやすいなとは思うな

535 :名無しさん@お腹いっぱい。:2015/11/10(火) 14:53:18.60 ID:VAVbo0pZ0.net
#IFの関係がチョット分からんとこあって
たとえばマウス下が何々の場合、ってmousegetposで判定挟んでその関数の倫理判定を#ifで見るって方法、これ一回クリックしないと動かなかったりするよな

一体どのタイミングで判断してるんだろう

536 :名無しさん@お腹いっぱい。:2015/11/10(火) 15:24:20.01 ID:DG8wyOOo0.net
>>535
エスパースレじゃないんだから問題のスクリプトぐらい書け

537 :名無しさん@お腹いっぱい。:2015/11/10(火) 15:37:34.63 ID:VAVbo0pZ0.net
いや大した関数じゃないよ。
それこそwikiの#IFにあるコレな。

#If MouseIsOver("ahk_class Shell_TrayWnd")
WheelUp::Send {Volume_Up}
WheelDown::Send {Volume_Down}

MouseIsOver(WinTitle) {
MouseGetPos,,, Win
Return WinExist(WinTitle . " ahk_id " . Win)
}

帰ってくるのがtrue(1)ならってものだけど、タスクバー以外に書き換えると反応がいまいち怪しくなる

538 :名無しさん@お腹いっぱい。:2015/11/10(火) 15:59:32.14 ID:DG8wyOOo0.net
>>537
> タスクバー以外に書き換えると反応がいまいち怪しくなる
タスクバー以外とは?具体的に書かないと再現できない
スクロールの入力が速すぎるとかじゃないのか?

539 :名無しさん@お腹いっぱい。:2015/11/10(火) 16:13:14.64 ID:VAVbo0pZ0.net
ERRORLEVEL調べても0が帰ってくるってことは成功してるってことだから、もしかしたらおま環かもしれない。
他のPCでやってみる

540 :名無しさん@お腹いっぱい。:2015/11/10(火) 17:51:02.06 ID:ztr5AGlD0.net
「特定のウィンドウがアクティブになったら自動的にキー入力を送る」というスクリプトを組みたいのですが
例えばメモ帳がアクティブになったら自動的に「ファイル-開く」のダイアログを開きたい場合

#IfWinActive ahk_class Notepad
Send, ^o
#IfWinActive

では上手く行きませんでした
o::Send, ^o
などの様なキーのリマップはできますが、「自動的にキー入力」と言う動作をさせるには
どうしたら良いのでしょうか?
初歩的な質問で申し訳ないですがお願い致します

541 :名無しさん@お腹いっぱい。:2015/11/10(火) 18:04:53.39 ID:DG8wyOOo0.net
>>540
監視をしたいならSetTimerで定期的にIfWinActiveを実行する
#Ifは「ホットキー」が有効になる条件を指定できる

542 :名無しさん@お腹いっぱい。:2015/11/10(火) 18:16:24.58 ID:kUICWByQ0.net
そういうのはこれが最適
https://sites.google.com/site/agkh6mze/howto/winevent

543 :名無しさん@お腹いっぱい。:2015/11/11(水) 00:04:06.82 ID:wD4GixYe0.net
イベント検知すごくいいよね…

544 :名無しさん@お腹いっぱい。:2015/11/11(水) 20:38:39.55 ID:F1JSawuY0.net
windows updateがダウンロード済み・未適用の状態でautohotkeyの動作が妙になった
適用したら直ったけど、
未適用なのにどこかを変えられるのかな

545 :名無しさん@お腹いっぱい。:2015/11/11(水) 20:47:50.47 ID:F1JSawuY0.net
ちなみにおかしくなったのは、
janeで書き込みウインドウがアクティブだったらホットキーを実行する、という処理。
updateの準備が出来たことで、
アクティブなウインドウの検知が一部不調になったということかもしれない

546 :名無しさん@お腹いっぱい。:2015/11/11(水) 20:49:07.36 ID:jhw8UGUo0.net
clickImage("ファイル名",left)
みたいな記述で画面全体から画像を探し出しその中心を左クリックするという上位関数を作ろうとしてますが、
諸先輩方が既に多数の失敗と工夫をされてきた中イチから作るのもどうかと思い
「俺のこれをベースにしな」と見せていただける方がいらっしゃらないでしょうかと思います次第です

547 :名無しさん@お腹いっぱい。:2015/11/11(水) 21:29:28.35 ID:D3CI1bSh0.net
どう言い繕おうがクレクレはクレクレ

548 :名無しさん@お腹いっぱい。:2015/11/11(水) 22:29:01.84 ID:rrN1sXJ/0.net
車輪の再発明楽しいやろがい

549 :名無しさん@お腹いっぱい。:2015/11/11(水) 23:18:51.41 ID:70qIbviU0.net
関数化するまでもなく素直に作って2行で済むコードだが
どうやったら失敗と工夫できるのかむしろ教えてみてほしい

550 :名無しさん@お腹いっぱい。:2015/11/12(木) 15:34:11.57 ID:ee1BN3120.net
clickimageleft(imagefile)
{
imagesearch,x,y,0,0,A_ScreenWidth,A_ScreenHeight,%imagefile%
if ErrorLevel=0
{
mouseclick,left,%x%+3,%y%+3
traytip,%imagefile% is,X:%x% Y:%y%
}
else
traytip,%imagefile% is,not found
}

これでどうよ
画像の真ん中を算出する方法は分からん

551 :名無しさん@お腹いっぱい。:2015/11/12(木) 17:03:55.65 ID:tFrA257K0.net
>>546
どうせググッて出てくる艦これのやつ既に見てんだろ?
実質画像の大きさ取得だけだろうけどこれもググったら即出てくるだろ
欲しいもののはそれで揃うぞ
つか自分で検出画像用意するなら取得するまでもないと思うけどな

552 :名無しさん@お腹いっぱい。:2015/11/12(木) 17:12:05.98 ID:3F7hMJof0.net
AHKを使い始めて約2週間、出来ることが多すぎて何をしたいのか分からなくなった

553 :名無しさん@お腹いっぱい。:2015/11/12(木) 17:39:05.84 ID:M60KXE7n0.net
>>552
現在常駐させている幾つかのツールをahk一本の常駐で代替させるとか、
日頃の作業を自動化させるとか、何かしら目的をハッキリ決めればいい。

例)スタートアップでタスクトレイに並ぶアイコンを常に同じ順序で配置させたい
→スタートアップで一つ一つのツールの起動を程良く遅延させるスクリプトを書く

まあ、日頃PC使ってると「あ、こういうの自動化すれば楽になるな」って気付くから、その時に作ればいいと思う。
…でも、スクリプト作成に夢中になって本来の目的見失わないようにw

554 :名無しさん@お腹いっぱい。:2015/11/13(金) 09:38:08.76 ID:AY/3S8b/0.net
メモリ定期的掃除
マウスカーソル放置で隠す
スクロールをアクティブウィンド以外にも使う
クリック長押しでMクリック
ワンショットモデファイヤ
バツボタンクリックでも最小化
検索ソフトにむりやり関連付け
くるくるホイール
タスクバーで音量変更
デスクトップのファイル自動フォルダ分け

もう戻れん

555 :名無しさん@お腹いっぱい。:2015/11/13(金) 09:46:37.27 ID:95i6dO660.net
> バツボタンクリックでも最小化
×ボタンクリックってどうやって判定するん?
もしかして最小化・最大化ボタンクリックも判定できます?

556 :名無しさん@お腹いっぱい。:2015/11/13(金) 10:55:09.70 ID:QDV0Hfz10.net
MButton::
NumpadClear::
 MouseGetPos, x, y, wID, clsNN
 x += (x<0) ? 0xFFFF : 0 ;マルチディスプレイ対策
 y += (y<0) ? 0xFFFF : 0 ;マルチディスプレイ対策
 SendMessage,0x84,0,% x|y<<16,,ahk_id %wID% ;WM_NCHITTEST
 If( clsNN = "MSTaskListWClass1" ) ;タスクバーとタイトルバーを見分ける
  Send,{Blind}{MButton down}
 Else If( ErrorLevel=2 || ErrorLevel=12 ) ;HTCAPTION(タイトルバー) or HTTOP(上部境界)
  WinSet,Bottom,,ahk_id %wID%
 Else If( ErrorLevel=8 ) ;HTMINBUTTON(最小化ボタン)
  Gosub,AlwaysOnTopToggle
 Else If( ErrorLevel=20 ){ ;HTCLOSE(閉じるボタン)
  WinGet,taskbar_wID,ID,ahk_class Shell_TrayWnd
  WinGet,active_pName,ProcessName,A
  WinGet,wID,List,,,存在しないタイトル
  Loop,%wID% {
   StringTrimRight, this_wID, wID%a_index%, 0
   WinGet,this_pName,ProcessName,ahk_id %this_wID%
   If( (this_pName=active_PName) & (this_wID!=taskbar_wID) & (a_index!=wID) )
    WinClose,ahk_id %this_wID%
  }
 }
 Return

557 :名無しさん@お腹いっぱい。:2015/11/13(金) 10:58:33.08 ID:QDV0Hfz10.net
最後抜けてた・・・

 }Else
  Send,{Blind}{MButton down}
 KeyWait,%A_ThisHotkey%
 Send,{Blind}{MButton up}
 Return

558 :名無しさん@お腹いっぱい。:2015/11/13(金) 11:01:32.76 ID:AY/3S8b/0.net
>>555
Aeroはシステム的に判定はできない。測って手打ち。

559 :名無しさん@お腹いっぱい。:2015/11/13(金) 17:42:50.28 ID:EqPxOHTd0.net
>>555
マウス関数群 (MUS.ahk)

>>556-557が、いわゆる"車輪の再発明"ってヤツなんだろうな

560 :名無しさん@お腹いっぱい。:2015/11/13(金) 19:18:03.64 ID:6jEoJJ1n0.net
再発明つーより改変じゃね
前半部分コメント一緒だし

561 :名無しさん@お腹いっぱい。:2015/11/13(金) 19:55:37.45 ID:EqPxOHTd0.net
>>560
改変?ん〜〜、もし改変だとしても中ボタン押す度に処理走るのって個人的に好きくない
MUS.ahkのままなら「#IF 〜」使えるから、こっちの方が好き

562 :555:2015/11/13(金) 20:13:21.70 ID:95i6dO660.net
皆さんレスありがとうございました
とりあえず>>559氏のレスにあるMUS.ahkを使ってみる事にします

563 :556-557:2015/11/13(金) 21:13:14.58 ID:QDV0Hfz10.net
>>561
確かにMUS.ahkを見て自分のスクリプトに組み込んだんだけど、

>改変だとしても中ボタン押す度に処理走るのって個人的に好きくない
>MUS.ahkのままなら「#IF 〜」使えるから、こっちの方が好き

これはどういう意味?

#IFで記述するにしても、クリックのたびに判定処理が発生することには変わりないよね?

関数MUS_GetTitleBarPosの中で
SendMessage,0x84,0,% sX|sY<<16,,ahk_id %hWnd% ;WM_NCHITTEST
このErrorLevel判定をして、

呼び出し元ルーチンでまた関数戻り値でif分岐するのだと、かえって処理ステップが増えないかね?

564 :名無しさん@お腹いっぱい。:2015/11/13(金) 21:31:22.18 ID:6jEoJJ1n0.net
好き嫌いは好みの問題だしケチ付けることでもないかと
タスクバー判定とか新しい要素も入ってるし
まあ人に見せるサンプルとしてはホットキー直より関数化してるもののほうが
切り出しやすいってのは確かにあるが

565 :名無しさん@お腹いっぱい。:2015/11/13(金) 21:40:02.19 ID:EqPxOHTd0.net
>>563
#IF (MUS_GetTitleBarPos(hwnd) = 20) ;20:ウインドウ[X]ボタン上
MButton::MsgBox, aaa

↑とりあえずこの2行だけ書いてやってみれば、俺が言ったことが分かると思う

566 :名無しさん@お腹いっぱい。:2015/11/13(金) 22:13:09.31 ID:Xzp0UC+a0.net
めんどくさい人っぽいからお前の主張が全部正しいでいいよ

567 :名無しさん@お腹いっぱい。:2015/11/14(土) 00:04:49.87 ID:VOxTf20d0.net
>>565-564
ありがとう。非常によく分かった・ω・

>>566
orz

568 :名無しさん@お腹いっぱい。:2015/11/14(土) 01:49:17.03 ID:QQoNNe+X0.net
>>565
実はソレ、Aeroだと際の際までは判定してくれないので誤作動を起こす

cornerfunk(){
DetectHiddenWindows,on
CoordMode,Mouse,screen ;絶対座標取得
MouseGetPos, x, y, win
Wingetpos,Win_X,Win_Y,width,Height,ahk_id %win%
Winrightegge := Win_X + width ;ウィンドの右端
;幅調節。残念ながらボタンの太さは取得不能。なので実測で測るしかない
return (y < Win_Y + 26) and (y > Win_Y) and (Winrightegge - 50 < x) and (Winrightegge > x)
}

結果としてこういう形になる

569 :名無しさん@お腹いっぱい。:2015/11/14(土) 12:25:45.66 ID:vAdcucS10.net
>>568
これ、WM_NCHITTESTの返りが不正確って結構おおごとだと思うんだけど
ググってもよそで問題にされてるフシがないんだよね
AHK経由でだけ起こる現象なんだろうか

XY座標指定時にGET_X_LPARAM GET_Y_LPARAM通してないせいかなとも思ったけど
これ通すのは単にマルチディスプレイ上での負の座標対策だけっぽいし

570 :名無しさん@お腹いっぱい。:2015/11/14(土) 21:21:39.96 ID:VOxTf20d0.net
GoogleEarthの拡大縮小で、テンキーの+と−が使えるのだけど、

#InstallKeybdHook
#UseHook

NumpadAdd::NumpadAdd  ←コレだと動くけど

NumpadAdd::Send,{NumpadAdd}  ←コレだと動かないのは何故でしょうか?

571 :名無しさん@お腹いっぱい。:2015/11/14(土) 21:34:48.18 ID:QQoNNe+X0.net
送り方に問題がある。
NumpadAdd::Send,{NumpadAdd down}
Numpad up::Send,{NumpadAdd up}

なら動くと思われる

572 :名無しさん@お腹いっぱい。:2015/11/14(土) 21:36:20.55 ID:QQoNNe+X0.net
書き間違えた、
Numpaddadd upね

573 :名無しさん@お腹いっぱい。:2015/11/15(日) 01:04:34.10 ID:BnPH66HP0.net
ありがとう。動きました。しかし何故だろう。

574 :名無しさん@お腹いっぱい。:2015/11/15(日) 01:55:02.60 ID:ghDvhSUw0.net
キーリピートで判定してるからだよ
sendは1度タイプした扱いにはなるけど押しっぱなしになるわけじゃない
aとaaaaaaaaaの差

575 :名無しさん@お腹いっぱい。:2015/11/15(日) 16:34:16.39 ID:BnPH66HP0.net
$NumpadAdd::Send,{NumpadAdd}

でもホットキー自体にリピートが発生するんだよね?
GoogleEarthの検索ボックスにはちゃんと ++++++++ と入るし。

引き続き調べてみる。

576 :名無しさん@お腹いっぱい。:2015/11/15(日) 16:47:46.59 ID:1MDwCJRy0.net
>>575
bktestみたいなキーボード入力検知ソフトを使うと違いが分かりやすいよ
NumpadAdd::NumpadAdd
だと押してる間はキーアップせずにキーダウンをリピートしてる

NumpadAdd::Send,{NumpadAdd}
だと押しっぱなしでキーダウンとキーアップを交互にリピートしてる

577 :名無しさん@お腹いっぱい。:2015/11/15(日) 17:10:12.71 ID:CzXotjKd0.net
>>575
キーリピート有無のではなく送られている信号の違い
AHKのスクリプトログとキーログ見れば分かる

■押し下げ維持 5回キーリピートで発生するキーイベント
押し=Down 上げ=Up
Send → DUDUDUDUDU
通常とリマップ → DDDDDU


■GoogleEarthで試してないが対策はいろいろある

$NumpadAdd::Send,{NumpadAdd down}
$NumpadAdd up::Send,{NumpadAdd up}

SetKeyDelay, -1, 100 ; ※Auto-executeセクション
$NumpadAdd::Send,{NumpadAdd down}

$NumpadAdd::
Send,{NumpadAdd down}
KeyWait, NumpadAdd
Send,{NumpadAdd up}
return

578 :名無しさん@お腹いっぱい。:2015/11/15(日) 17:31:39.05 ID:CzXotjKd0.net
>>577
訂正 消し忘れ

SetKeyDelay, -1, 100 ; ※Auto-executeセクション
$NumpadAdd::Send,{NumpadAdd}

579 :名無しさん@お腹いっぱい。:2015/11/15(日) 23:53:09.78 ID:BnPH66HP0.net
>>576-578
ありがとう!あとから自分の環境で検証してみる。

580 :512:2015/11/16(月) 11:00:18.29 ID:uZYGomWy0.net
>>513,519,521,524
>>524のリンク見てやっと分かった!これで合ってますか
そもそもStringSort関数のa1,a2に勝手にループで代入されて行く仕組みがよく分からない……。
とりあえず結果オーライという事でありがとうございました。
var := "a,S,A,s"
Sort, var, F StringSort D, ;A,a,s,S
Sort, var, F StringSort_a2Z D,
MsgBox,,, %var%, ;a,A,s,S
StringSort(a1, a2) {
;MsgBox,,, test`n%a1%`,%a2%, ;S,a -> A,S -> s,S -> s,a -> A,s -> A,a
return a1 > a2 ? 1 : a1 < a2 ? -1 : 0
}
StringSort_a2Z(a1, a2) {
;if ((Asc(a1)&0x40 == Asc(a2)&0x40) && Asc(a1)>0x60 && Asc(a2)<0x60)
if ((a1 = a2) && Asc(a1)>0x60 && Asc(a2)<0x60)
return 0
else
return 1
}

581 :名無しさん@お腹いっぱい。:2015/11/16(月) 19:13:10.43 ID:Yh78S2ak0.net
>>580
Sortは文字列を1文字ずつA文字とB文字「比較」して末尾まで繰り返し並び替える
文字列分割ループの「比較機能」付だと思えば分かりやすいかな?
Sortの関数オプションを使うと「比較機能」の部分を指定できる

A = 第1引数
B = 第2引数
AB位置の差 = 第3引数

582 :名無しさん@お腹いっぱい。:2015/11/17(火) 18:15:37.49 ID:/aRA2C0p0.net
~WheelUp::
MouseGetPos, , , PosID1
IfWinNotActive , ahk_id %PosID1%
{
WinActivate, ahk_id %PosID1%
Return
}
Return

~WheelDown::
MouseGetPos, , , PosID1
IfWinNotActive , ahk_id %PosID1%
{
WinActivate, ahk_id %PosID1%
Return
}
Return

マウスホイールを上下に廻したとき、カーソル位置のウィンドウが非アクティブだったらアクティブ化する
というスクリプトを作り、「 ~ 」を付けてホイール機能も元通り使えるようにしたつもりなのですが
IEでは不安定になりときどきホイールスクロールが出来なくなってしまいます
JaneStyleやメモ帳など他のソフトでは正常に動いてるし、IEも起動した直後は問題なく使えてるのですが
IE起動→デスクトップをクリック(IEが非アクティブになる)→IEのウィンドウ上でホイール動かす
などとするとIEがアクティブにはなるのですが、その後ホイールでスクロールができなくなってしまいます。
ちなみにその後IEの画面を改めてクリックするとスクロール可能になります。
どうやら「WinActivateコマンドによるアクティブ化」と「画面クリックによるアクティブ化」の違いが影響してる
みたいですが何とかこれを回避する方法はないでしょうか?

583 :名無しさん@お腹いっぱい。:2015/11/17(火) 18:26:03.39 ID:o7uByFf50.net
MouseClickコマンド送ってアクティブ化したらいいんでね?

584 :名無しさん@お腹いっぱい。:2015/11/17(火) 18:31:11.94 ID:/aRA2C0p0.net
>>583
MouseClickコマンドだと意図しないリンクを踏んでしまうので
クリックせずにアクティブ化して、スクロールも正常に使えるようにしたいのですが

585 :名無しさん@お腹いっぱい。:2015/11/17(火) 21:25:24.43 ID:ey6yjG/o0.net
試しにやってみたけどうちでは普通にスクロール出来た

586 :名無しさん@お腹いっぱい。:2015/11/17(火) 22:07:19.94 ID:IkXXz35G0.net
IEのバージョンがわからんからうちの9での場合だけど
IEは表示部にフォーカスがないときはホイールやキーボード効かないから1回クリックしてやらなきゃだめで、
どうやらwinactivateで引っ張ってくると表示部ではないどこかに勝手にフォーカスされる模様

shift+tabを送ってやれば表示部に移るみたいだけど、毎回ページの先頭に飛んでしまうな

587 :名無しさん@お腹いっぱい。:2015/11/17(火) 22:09:30.03 ID:/aRA2C0p0.net
>>585
>IE起動→デスクトップをクリック(IEが非アクティブになる)→IEのウィンドウ上でホイール動かす
といった操作をしても正常にスクロールできるときと出来なくなるときがあります
症状の発生が不安定なので私のスクリプトの書き方に何か問題があるのかとも思ったのですが
どうにもならないバグなのでしょうか
ちなみに環境はWindows7 64bit、IE11、AHK Ver1.1です

588 :名無しさん@お腹いっぱい。:2015/11/17(火) 22:09:30.60 ID:o7uByFf50.net
ほんならControlFocusかControlClickでいいんでね

589 :名無しさん@お腹いっぱい。:2015/11/17(火) 22:20:25.81 ID:IkXXz35G0.net
ControlFocusでいけた
このコマンド知らなかったw thx

590 :名無しさん@お腹いっぱい。:2015/11/17(火) 23:31:14.34 ID:/aRA2C0p0.net
>>588-589
申し訳ありません、wikiなども見たのですがControlFocusをどのように使えばいいのか
分からないのですがご教授願えませんか?

591 :582:2015/11/18(水) 03:46:49.78 ID:fy4/ptgK0.net
>>582ですが、どうやら自己解決したかもしれません
#WinActivateForce
を追加することで、WinActivateコマンドでIEをアクティブ化したときにスクロールが
出来なくなる症状も無くなったみたいです
ただ今までも正常に動いてたときもあったのでもうしばらく様子見が必要ですが
とりあえずこれまでのところ問題なく機能しています
お騒がせしてすみませんでした

592 :名無しさん@お腹いっぱい。:2015/11/18(水) 13:47:24.35 ID:QIfDbWGX0.net
左クリック長押しのヤツ、なんかまだ使えそうな気がするんだけどな

長押ししてドラッグスクロールだけじゃなくてそのままマウスジェスチャとかなんかできないかな

593 :名無しさん@お腹いっぱい。:2015/11/18(水) 17:27:52.43 ID:SCovIktr0.net
>>592
何のことか一部の人にしか分からないからアンカやURLぐらい貼ったら?

594 :名無しさん@お腹いっぱい。:2015/11/21(土) 08:24:58.42 ID:YfYXqyDG0.net
ゲームを操作したいと思ってるのですが、
マウスキーをリマップしてもスクリプト自体は動くのですが元のキーが無効になりません
(「LButton::」にしても「~LButton::」になっちゃってる感じです)

すみませんご存知の方いましたら、完全にマウスキーを乗っ取れる方法を教えてください

そのゲーム以外のウィンドウだと無効になっています
64bitのUnicode、最新版のAHKを使っていて、スクリプトは管理者権限で動かしています
usefookやinstallkeyboardhookなどは試しましたが駄目でした
ちなみにゲームはSAってFPSです

595 :名無しさん@お腹いっぱい。:2015/11/21(土) 09:04:43.79 ID:nM0hieGA0.net
フックでダメならBlockinput

596 :名無しさん@お腹いっぱい。:2015/11/21(土) 09:41:54.07 ID:8TROjLo70.net
ゲーム系アプリは大抵が直接ハードキー見てるからフック駄目なんじゃね
それにマクロやスクリプト対策してるものも多いので基本まともに動かないと思っといたほうがいい

597 :名無しさん@お腹いっぱい。:2015/11/21(土) 10:05:53.02 ID:YfYXqyDG0.net
>>595
Blockinput記述しても結局、最初に動くときにLButtonは送られてしまうみたいです
常にBlockinputだと何も出来ないですし(動いたのは「on」だけでした)

>>596
無理ですか・・・
いい忘れましたがキーボードイベントは無効に出来るんですが
xbutton含めマウスだけ無効にできないので、マウス関連は別の書き方があるのかと

598 :名無しさん@お腹いっぱい。:2015/11/21(土) 10:26:23.93 ID:hocQtEF60.net
>>594
確認して無いが他の方法
マウスの付属ツールなどでより上流からF13に変えて
AHKをF13に割り当てる

599 :名無しさん@お腹いっぱい。:2015/11/21(土) 16:38:02.75 ID:GLx696vY0.net
ゲームじゃないけど似たような症状で、ホットキーなどを記述したAHKスクリプトを常駐させた後に
CLaunchというランチャーソフトを起動すると、#UseHookを書いて常駐させていても
「任意のキー::」が「~任意のキー::」の様な動作なってしまう
CLaunchを起動した後にReloadしたり、先にCLaunchを起動してからAHKスクリプトを常駐させれば
正常に動くけど、なぜこうなるのかは謎・・・

600 :名無しさん@お腹いっぱい。:2015/11/21(土) 16:48:23.68 ID:8TROjLo70.net
CLaunchてMouseGestureL.の人?
元はぬるCさんの改造とはいえAHKには精通してるはずだから
作者さんに質問投げてみたら?

601 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:00:46.55 ID:GLx696vY0.net
>>600
MouseGestureL. は使用していません
自分で書いた簡単なホットキーのスクリプトを常駐させています
今はCLaunchを起動したらその後にAHKスクリプトを常駐させるように
設定しているので特に困ってはいないんですけどね
もしかしたら>>594もSAを起動した後にスクリプトをリロードしたら
正常に動くかも?と思いまして

602 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:03:02.18 ID:GLx696vY0.net
>>600
おっと失礼、質問を読み違えてました
作者さんはMouseGestureLと同じ人みたいですね

603 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:09:28.28 ID:nM0hieGA0.net
作者がどうとかは流石に知らんが
スクリプトの書き方にもよるんだけど根本的な解決方法はLクリックにはない

だから#Ifで区切る。
#If not(プロセス名の式、正規表現、クラスなどの除外)
$Lbutton::

ここでたとえばClaunchのclassがClaunchclass、というクラス名であるのなら

#IF not Winexist("Ahk_class Claunchclass")
$Lbutton::させたい式

とかけば、Claunchが存在しないならLbuttonのスクリプトが動き、Claunchが存在するなら従来通りのスクリプトを通さないLbuttonの動きになる。

#IFの式に関しては喩え話だから条件は工夫すること。
汎用性が高いのはマウスオーバー関数を使って除外タイトルを指定するやり方。

sendモードの違いとかでも動く動かないは変わる。

604 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:18:04.74 ID:8TROjLo70.net
わかりにくくてすまん
MouseGestureLについて質問してみたら、ではなく
作者さんはMouseGestureを改造できるくらいにはAHKに精通してる人だし
CLanunchとAHK併用時の挙動について質問しても話通じるだろうから
直接聞いてみたら?といいたかった

AHKなにそれな作者よりは明確な答え返してくれそうだし
場合によっちゃあっち側でなんか対策してくれるかもしれないし

605 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:24:40.00 ID:GLx696vY0.net
>>604
こちらこそわかりにくくてすみません
とりあえず自分の場合は「そういう症状があった」というだけで対処法も判明してるので
そこまで困ってはいないということです

606 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:28:49.55 ID:/nUw6DJI0.net
>>599
後からフックしたほうが優先されるから

607 :名無しさん@お腹いっぱい。:2015/11/21(土) 17:35:02.58 ID:YfYXqyDG0.net
>>598
ゲーミングマウスなんでキー設定は出来るんですが、キーを一回sendするだけなんで置き換えとは行かず
色々考えてもらったのに申し訳ない

608 :名無しさん@お腹いっぱい。:2015/11/24(火) 00:56:19.56 ID:Ai4GI3E00.net
秀丸エディタに対して
WinSet,AlwaysOnTop
が効かない原因は何が考えられるでしょうか?

他のアプリは全て反応します。
秀丸エディタだけ反応しません。

AHKを管理者権限にしてもダメです。

609 :名無しさん@お腹いっぱい。:2015/11/24(火) 02:19:03.64 ID:2ua292lF0.net
うちの秀丸はTopmostで問題なく効いてる
win8.1 x64 AHK_L 1.1.22.06 / 秀丸32bit版 ver8.56 β8

ウィンドウの指定方法間違ってるとかじゃないの

610 :名無しさん@お腹いっぱい。:2015/11/24(火) 02:36:56.54 ID:Ai4GI3E00.net
あれ??? さっきは秀丸だけ反応しなかったのに今は反応したょ。。。。

#F1::WinSet,AlwaysOnTop,TOGGLE,A

ウィンドウ指定もAのままだし。
原因不明だけどありがとう。>609

611 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:16:54.63 ID:jkphlE+O0.net
今は無変換キーや変換キーを使って
Everything検索やGoogle検索してるのを
CLaunchなどのランチャーをつかってやるにはどうやったらできますか?
具体的には文字列を選択してその後ランチャーをたちあげて登録したアイコン(ahk?)
をクリックするといろいろなソフトで検索されるようにしたい
いろいろ試行錯誤してるけどどうもうまくいかない

612 :名無しさん@お腹いっぱい。:2015/11/24(火) 23:19:13.80 ID:tDk/NSFL0.net
試行錯誤したものを貼れば誰かがアドバイスしてくれるかも
丸投げっぽく見えるのはNG

613 :名無しさん@お腹いっぱい。:2015/11/25(水) 00:02:08.42 ID:wRgvxYKu0.net
>>611
無変換キーや変換キーを使って出来ていることを
何でわざわざ別のソフト噛ましてやりたいのか理解出来ないんだが
キー1つ押すだけなのと、ランチャー立ち上げてアイコンクリックという手間を考えたら
圧倒的に前者の方が効率良いように見えるんだが

614 :名無しさん@お腹いっぱい。:2015/11/25(水) 00:12:08.14 ID:uQGtXlrh0.net
マウスだけでやりたいんだろ

615 :名無しさん@お腹いっぱい。:2015/11/25(水) 00:17:15.26 ID:wRgvxYKu0.net
>>614
それならマウスのジェスチャーとかに変換キーや無変換キーを割り当てればいいのでは?
何にしてもランチャーソフトを噛ます理由にならないんだが

616 :名無しさん@お腹いっぱい。:2015/11/25(水) 00:21:27.30 ID:LhITFmz60.net
>>613
今はすごい便利で満足なんだけど
あとEvernote検索とかAmazone検索とか他にもいろいろ増やしたいんだ
増やした場合にショートカットキーやマウスボタンに登録するのは簡単なんだけど
1ボタンでやるにしろ、複数キーの組み合わせでやるにしろあまり使わないやつはそのうち忘れそうで
CLaunch立ち上げて各検索ボタンが並んでたらふと便利かなと
AutoHotkeyじゃなくてArttipsとかでやれって話かもしれんが・・・

617 :名無しさん@お腹いっぱい。:2015/11/25(水) 00:41:14.09 ID:prA3L8ps0.net
アクティブウインドウを監視させとくのはどう

http://pastebin.com/raw.php?i=qwXTuaxj

618 :名無しさん@お腹いっぱい。:2015/11/25(水) 01:00:07.06 ID:LhITFmz60.net
要はショートカットキーのショートカットファイルが出来ればいいんだろうけどそんなことはなんか
出来そうにないから、いまはバッチファイル関連をあたってる。

あとは選択しただけでコピーしてそれを渡そうとしたがどうもうまくいかない
>>617
見てみるね、ありがとう

619 :名無しさん@お腹いっぱい。:2015/11/25(水) 01:03:56.26 ID:NkqaGppn0.net
>>615
なんでいちいち噛みつかないと気がすまないの?

620 :名無しさん@お腹いっぱい。:2015/11/25(水) 01:08:23.81 ID:LhITFmz60.net
>>617
うほっ
Everythingに出力出来た、他のはまだ試してないけど出来そう
すげえええ
どうやってるのかもうちょっと確認してみる
あなた天才かよ

621 :名無しさん@お腹いっぱい。:2015/11/25(水) 01:14:57.48 ID:AjPnN7dT0.net
staticで、1個前の情報を保管して、次回呼ばれた時にifで比較って部分、
俺もしょっちゅう使ってるけどみんな同じなのか。ちょっと安心したw

622 :名無しさん@お腹いっぱい。:2015/11/25(水) 01:23:30.49 ID:LhITFmz60.net
>>617
まだ理解出来てない箇所は多いけど(初心者)
まさにやりたいことはすべて出来てる
最近で一番うれしい、本当にありがとう

623 :名無しさん@お腹いっぱい。:2015/11/25(水) 02:05:00.84 ID:u2GsOl8N0.net
わからん。ギブアップ。

If文で日付の比較をして正否判定させたいんですけど式上で日付の比較ってどうやればいいんでしょう?
Priorday += 7,D ;以前チェックした時点より7日経過。
If(Priorday =< A_now)
msgbox,OK

では無理ぽい?

624 :名無しさん@お腹いっぱい。:2015/11/25(水) 02:06:36.75 ID:byDMOqUE0.net
Array := Object()
Array.InsertAt(1,100,101,102)
Array.InsertAt(2,200,201,202)
Array.InsertAt(3,300,301,302)
text.=Array2[2+1]
msgbox, % text

配列arrayのkey2のvalue2である201を表示させたいのですが
上記の例だと何故か300と表示されてしまいます
ttp://ahkwiki.net/Object_Objects を読むと
「任意の Value2 以降の引数はそれぞれ、Index+1, Index+2 ... Index+N-1 に格納される。」とあったのですが
何がいけないんでしょう?

625 :名無しさん@お腹いっぱい。:2015/11/25(水) 02:52:53.44 ID:prA3L8ps0.net
>>623
<=じゃない?

626 :名無しさん@お腹いっぱい。:2015/11/25(水) 05:24:23.58 ID:kk8Nk2Gr0.net
>>624
こういうこと?

Array := Object()
Array.InsertAt(1, [100, 101, 102])
Array.InsertAt(2, [200, 201, 202])
Array.InsertAt(3, [300, 301, 302])
text := Array[2, 2]
msgbox, % text

単にキー名を指定して代入させたいだけなら

Array := Object()
Array[1] := [100, 101, 102]
Array[2] := [200, 201, 202]
Array[3] := [300, 301, 302]
text := Array[2, 2]
msgbox, % text

627 :名無しさん@お腹いっぱい。:2015/11/25(水) 06:07:10.57 ID:gUb05cZG0.net
>>624
ゼロから数えるのがプログラムの基本

628 :名無しさん@お腹いっぱい。:2015/11/25(水) 10:29:24.43 ID:byDMOqUE0.net
>>626
値を[]で囲んで指定するキーはカンマで区切らないとだめだったんですね。
おっしゃる通りにした所ちゃんと表示されました。ありがとうございます。

629 :名無しさん@お腹いっぱい。:2015/11/25(水) 13:56:57.93 ID:9J1Vpxne0.net
>>623
%%で囲って変数の中参照したら動いた。

630 :名無しさん@お腹いっぱい。:2015/11/26(木) 04:01:56.13 ID:C3ROe9Qm0.net
↓キーヒストリにLButtonの痕跡が残らないのは何故でしょうか?動作はしてるのですが。。。

#InstallKeybdHook
#UseHook
NumpadLeft::
Send,{LButton down}
KeyWait,NumpadLeft
Send,{LButton up}
Return

631 :名無しさん@お腹いっぱい。:2015/11/26(木) 04:11:40.76 ID:/rCMk+V50.net
>>630
#InstallMouseHook

> key history
Keybd hook: yes
Mouse hook: no ←

632 :名無しさん@お腹いっぱい。:2015/11/26(木) 10:22:15.94 ID:AS9qCb8z0.net
AutoGUI - GUI Designer and Script Editor
https://www.autohotkey.com/boards/viewtopic.php?f=6&t=10157

これしゅごい…

633 :名無しさん@お腹いっぱい。:2015/11/26(木) 13:02:28.85 ID:FK4ECWgd0.net
ホットストリング使ってFormatTimeで英語の曜日(sunとかmon)っていうのを入力したいのですが
どうやればできるのでしょうか?現在日本語ではできているのですが英語にしたいと思いまして。
おしえてください

634 :名無しさん@お腹いっぱい。:2015/11/26(木) 13:28:30.13 ID:5V6JTIAR0.net
L0x0409

635 :名無しさん@お腹いっぱい。:2015/11/26(木) 13:56:49.54 ID:FK4ECWgd0.net
>>634
ありがとうございました。成功しました。
タイムスタンプのところでT1とLnとを両方使いたかったのですが、
単純にスペースで間隔あけることで両方とも動くのですね。
FormatTime, OutputVar, L0x0409 T1,ddd

636 :名無しさん@お腹いっぱい。:2015/11/26(木) 14:09:42.63 ID:DbTWId0y0.net
>>611
AHKで検索ランチャーGUI作っちゃうほうが簡単じゃね?ボタン並べるだけだし

637 :名無しさん@お腹いっぱい。:2015/11/26(木) 15:42:53.85 ID:C3ROe9Qm0.net
>>631
ありがとう〜 (*´ω`*)

638 :名無しさん@お腹いっぱい。:2015/11/26(木) 16:58:06.00 ID:JGdoNjTQ0.net
>>636
自分も思ったけどそれは多分したくないんだろう
個人的にはGUIよりアイコン付きメニューで作ってみたい

639 :名無しさん@お腹いっぱい。:2015/11/26(木) 17:18:41.07 ID:N5/XXKNT0.net
最初の質問者と同じような用途で、AHKのmenuコマンドで、
自前でメニューを作って使ってるけど、まれに不具合が出る。

メニューを表示する直前のタイミングで、他のtrayTipや、タスクトレイのバルーンが出て
他へフォーカスが移ると、メニューは表示されるが、欄外を押してキャンセルする動作ができなくなる。

いったんこうなると、メニュー表示が出続けて、項目のどれかを必ず選択しないといけない。
そうしないと消えてくれず、処理も続行できない。どれも押したくない場合は困ってしまう。

AHKとは関係のない、ほかのフリーソフトでも似たような挙動を経験したので
Windows自体の仕様か放置バグかもしれないけど、防ぐ方法って、なにかある?

640 :名無しさん@お腹いっぱい。:2015/11/26(木) 17:38:01.48 ID:QpZhTyFe0.net
とりあえずメニュー項目にキャンセル入れとけばよろしいのでは

641 :名無しさん@お腹いっぱい。:2015/11/26(木) 19:35:31.81 ID:Occotz5E0.net
autohotkey以外のコンテキストメニューならこれで消せるけど防ぐ方法は知らない

winactivate, ahk_class #32768
send, {alt}

642 :名無しさん@お腹いっぱい。:2015/11/26(木) 21:45:13.34 ID:XsZgqL3u0.net
今あるキーに割り当てている選択した文字でgoogle検索(こちらは上手く作動している)を
文字を選択後Ctr2回押しで検索にしたいのですが、どうしてもうまくいきません

Ctrl::
KeyWait, Ctrl
if (A_PriorHotkey == A_ThisHotkey) && (500 > A_TimeSincePriorHotkey)
send, ^c
Sleep 100
Run,http://www.google.co.jp/search?num=10&as_q=%clipboard%
return


もしかするとすごく恥ずかしい質問なのかもしれませんが・・・お願いします

643 :名無しさん@お腹いっぱい。:2015/11/26(木) 22:15:21.04 ID:bRQHQUt70.net
コンテキストメニューのファイルは別.ahkファイルにしてrunで呼び出すものと思いねえ。

644 :名無しさん@お腹いっぱい。:2015/11/26(木) 22:30:31.12 ID:QpZhTyFe0.net
>>642
if
{
}

645 :名無しさん@お腹いっぱい。:2015/11/26(木) 22:51:32.57 ID:XsZgqL3u0.net
>>644
ありがとう!
いけました〜

646 :名無しさん@お腹いっぱい。:2015/11/27(金) 00:20:15.35 ID:RAJevorr0.net
全角カナを半角カナに変換してくれるスクリプトってありませんか?
ぐぐったらクリップボード関係のスクリプトが引っかかったんですが
なんかちょっと用途が違う気がして……

647 :642:2015/11/27(金) 00:58:37.89 ID:lQ8gymIb0.net
644のでイケたと思ってたけど実はCtlr1回押しでも検索しちゃってた
だから誤爆しまくる・・・
うーん全然わかんね

648 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:06:03.68 ID:hG57rMqt0.net
>>647
ctrl up::
if (A_PriorHotkey == A_ThisHotkey) && (500 > A_TimeSincePriorHotkey)
send, ^c

ファンクションキーはctrl下げるだけじゃ不便が多い

649 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:07:17.66 ID:hG57rMqt0.net
Ctrl up::
if (A_PriorHotkey == A_ThisHotkey) && (500 > A_TimeSincePriorHotkey)
{
send, ^c
Sleep 100
Run,http://www.google.co.jp/search?num=10&as_q=%clipboard%
}
return

書き間違えた。こうだな

650 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:19:52.06 ID:lQ8gymIb0.net
>>649
検索行為はうまく動作したけど今度はCtrl+Cでコピペが出来なくなり
またファイルを複数選択するときにもCtlrが使えません・・・
難しいなあ

651 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:24:46.96 ID:BdREuqkG0.net
>>650
~Ctrl up::

652 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:30:07.90 ID:lQ8gymIb0.net
>>651
あーーーそういうことかあ

動作しましたーありがとう、ここはなんてやさしいスレなんだ
みんなありがとう!

653 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:35:00.37 ID:GtlMqb/z0.net
>>650
サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes
ここの「1.1 1つのキーに3種類以上の動作割り当て」を参考にすれば?(と言うよりそのまま答えだわなw)
汎用的に使えるように関数化しとくのも良いと思う。

654 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:36:09.22 ID:BdREuqkG0.net
>>652
自分も初心者なので分からないことばかりだけど
たまには人の役に立てて良かった

655 :名無しさん@お腹いっぱい。:2015/11/27(金) 01:59:04.84 ID:QbKHgrgq0.net
検索クエリとして渡す場合、文字列をURLエンコードしないとちゃんとした検索結果が出ない事があるから注意な

656 :名無しさん@お腹いっぱい。:2015/11/28(土) 01:59:35.59 ID:CpBNAMPE0.net
久しぶりにAHKいじっててWindowを閉じるスクリプト書きたいだけなのに
Send,!{F4}って書いてもWindow閉じない。
なんか仕様変わったんだっけ?

657 :名無しさん@お腹いっぱい。:2015/11/28(土) 02:07:08.29 ID:qyk6bIOy0.net
>>656
普通にSend,!{F4}で終了できるよ

658 :名無しさん@お腹いっぱい。:2015/11/29(日) 07:05:31.63 ID:OMAIHwT00.net
WinCloseかWinKill使ってええんやで

659 :名無しさん@お腹いっぱい。:2015/11/29(日) 18:13:47.12 ID:DSNSRTMA0.net
F5::
KeyWait, F5, T 0.3
If(ErrorLevel)
{
PostMessage, 0x112, 0xF120,,, ahk_id %MinID%
KeyWait,F5
Return
}
MouseGetPos, , , MinID
PostMessage, 0x112, 0xF020,,, ahk_id %MinID%
KeyWait,F5
Return

F5を押したらマウスの下のウィンドウを最小化して、F5を0.3秒以上押すと最小化したウィンドウを元に戻す
というスクリプトを作ったのですが、IEやエクスプローラーなどでは正常に機能しているのですが
一部のアプリケーションで上手く機能しません
具体的にはJaneStyle(2ch用ブラウザ)だけ最小化は出来るけど元のサイズに戻すことが出来ません
WinRestoreでダメだったのでPostMessage, 0x112, 0xF120 にしてみたのですがこれでもダメでした
何か他に対策方法は無いでしょうか?

660 :名無しさん@お腹いっぱい。:2015/11/29(日) 18:35:49.14 ID:ldLvuJP60.net
俺は詳しい原因わからないけど
JaneStyleの最小化復元はID指定だとなぜか上手くいかない
title使うとちゃんとできる

661 :名無しさん@お腹いっぱい。:2015/11/29(日) 19:38:41.45 ID:DSNSRTMA0.net
>>660
レスありがとうございます
確かにTitleを使ったらJaneも復元できますね
最小化はIDでもできるのに不思議・・・

662 :名無しさん@お腹いっぱい。:2015/11/29(日) 21:58:54.93 ID:Ox4+tFCj0.net
知りたい事
ahk_class AutoHotkeyGUI上の、背景透過かつ半透明色が含まれるpng画像を、背景透過のまま、半透明色を半透明のまま、不透明色を不透明のまま表示し、高速に画像を差し替える方法はありますでしょうか。
半透明色が使えないと、どうしてもキャラクターの外周部縁取り線がギザギザしてしまうので何とかしたい。

ダメな例
Gui, +LastFound
Gui, Color, 0000ff ;GUIの背景色を青100%にする
;WinSet, Trans, 0 ;<--後から追加したコントロールも全て透明になってしまうのでNG
WinSet, TransColor, 0000ff 255 ;GUIの青100%の部分だけを不透明度0%にする
Gui, Add, Picture, x0 y0, %A_ScriptDir%\VkXeojE.png ; ( http://i.imgur.com/VkXeojE.png )赤100%不透明度100%〜不透明度10%で背景透過のテスト画像
Gui, Show
Return
GuiClose:
ExitApp
test画像は上が赤100%で不透明度100%、右側の数字は不透明度で背景は不透明度0%です。
画像を単体でブラウザなどに表示すると、ブラウザの背景色が白ならば赤からピンクのグラデーションになるところが、
この例ですと半透明色部分だけが、WinSet, TransColorで透明にしたはずのGUI背景色(青)と混色して赤→紫→青になってしまいます。

試作
よくググりもせず勢いでデスクトップマスコット作ったら先人の方々がとっくにもっと高機能の作ってらして凹んだ…orz
とりあえずタイトルバーに乗っかるだけの簡易タイマー付きデスクトップマスコットです(画像は昔描いたやつの使いまわし(skin2の画像は作者様不明の拾い物を加工。勝手に使ってスミマセン))。
ahk専用うpろだの有益な情報を流してしまうのは申し訳ないのでこちらにupしました。
http://fast-uploader.com/file/7004357099551/
DLパス=AutoHotkey
お手数ですがDLして検証していただけたら幸いです。
マスコットをクリックで簡易タイマー、右クリックでメニュー表示、トレイアイコンは無しです。
どういうわけか動作中はデスクトップやエクスプローラ上で右ドラッグが出来なくなります。

663 :名無しさん@お腹いっぱい。:2015/11/29(日) 23:29:58.85 ID:ecadPq9J0.net
ahklのユニコード版で文字列のバイト長を得るにはどうしたらいいんでしょうか
半角○文字・全角○文字の制限がある場所に入力する文字列が制限内かどうか知りたいだけなんです

664 :名無しさん@お腹いっぱい。:2015/11/29(日) 23:36:54.08 ID:ecadPq9J0.net
すいません、過去ログに関数作ってくれた方がいたんですね
大変申し訳ありませんでした

665 :名無しさん@お腹いっぱい。:2015/11/30(月) 16:16:18.71 ID:nASTIlfG0.net
>>662
とりあえず思ったこと
ウィンドウが最小化できなくなって困った
skin2にしたら右クリの当たりが小さくなって終わらせるのに手こずった

666 :名無しさん@お腹いっぱい。:2015/11/30(月) 22:31:22.62 ID:Xuq+4IHh0.net
>>665
レスありがとうございます
透明部分ではGuiContextMenu発生しないんですよね…
~Rbutton::で右クリック通してMouseGetPosで座標判定するしかないのかな

667 :名無しさん@お腹いっぱい。:2015/11/30(月) 22:32:33.80 ID:Xuq+4IHh0.net
あれ?今度は書き込めた(規制かかってたような?)

ahkってタイトルバー消して透過png表示できるんだスゲー
→Gui、Add, Pictureでgifアニメは1フレーム目しか表示できないな?
→Loopで画像差し替えでいけるかも?
→ならGuiごとWinMoveで動かしてダイナミックに動かせるかも?←イマココ

gifアニメはキャンバスサイズ内でしか動かせないが、これならアニメ手法のfollow(カメラが被写体と一緒に被写体の進行方向に平行移動)
を実現できるかな?と思ったんですがカクカクで・・・
実用性なしと言われればその通りなんですが。
http://fast-uploader.com/file/7004444717496/
DLパス=AutoHotkey

668 :名無しさん@お腹いっぱい。:2015/12/01(火) 01:36:30.29 ID:1hVz3NkO0.net
>>667
規制じゃなくてpotato鯖がしばらく不安定になってるね
potato.2ch.netの別のスレでも弾かれたり二重投稿になったり色々起きてる

669 :名無しさん@お腹いっぱい。:2015/12/02(水) 19:24:23.56 ID:xnnEa0MP0.net
すみません、他の言語で言う
str2=str1+" ";
ということをやりたい時AHKではどう表現すればいいんでしょうか?
普通に半角スペースを付けても無視されてしまうし…

670 :名無しさん@お腹いっぱい。:2015/12/02(水) 19:27:46.96 ID:7IHLFjQJ0.net
AutoTrim

671 :名無しさん@お腹いっぱい。:2015/12/02(水) 19:32:53.14 ID:kAkxFWOP0.net
>>671
特殊文字
A_Space 単独の半角スペースを表すのに使う。AutoTrimも参照。
A_Tab 単独のTab文字を表すのに使う。AutoTrimも参照。

672 :名無しさん@お腹いっぱい。:2015/12/02(水) 19:41:19.25 ID:Xu/MDVyb0.net
= を :=
に変えると他言語と同じ感覚になる

673 :名無しさん@お腹いっぱい。:2015/12/02(水) 20:17:33.96 ID:LJxBs+UM0.net
ホットキーラベルを実行するたびに変数が沢山作られて
いちいち変数をクリアしないと誤動作してしまうんですけど
何かスマートに変数の中身をクリアする方法ってありますか?

やってることが文字列分割処理+αなので変数が何個作られるかわからず
自分でVar1= Var2= と列挙しようにも全ての変数をカバーできるか自身がありません

今は仕方ないので一回ホットキーを実行するたびにスクリプトを再起動させています
素人なりに変数を使う処理を全て関数内で完結させればよいのでは?などと考えましたが
簡単な処理まで全て関数化するのもスマートでないような気がしました
何かよい方法はありませんか?

674 :名無しさん@お腹いっぱい。:2015/12/02(水) 20:27:17.72 ID:rDayRjLz0.net
>>673
文字列分割時に変数が無数に作られて困ってるってこと?
配列に纏めるのはどうだろう?

675 :名無しさん@お腹いっぱい。:2015/12/02(水) 20:32:46.78 ID:RPChhQqq0.net
>>673
関数にすれば?
指定しない限り、関数終了後に破棄される

676 :名無しさん@お腹いっぱい。:2015/12/02(水) 20:33:54.19 ID:RPChhQqq0.net
失礼、書いてあるねw

677 :名無しさん@お腹いっぱい。:2015/12/02(水) 21:34:18.87 ID:j0+5KAWq0.net
While (Var%A_Index% != "") {
Var%A_Index% =
}

スマート()

678 :名無しさん@お腹いっぱい。:2015/12/02(水) 21:40:14.29 ID:P7BXVrRU0.net
把握できないほど変数使うなら関数化するべきじゃね
誤動作してしまうのは変数の使い方に問題があるようにも感じる

・使う直前に初期化する
・global変数は sub1_var1 等プレフィクス付ける
(他ルーチンで使う変数と被らないようにする)

StringSplit使ってるならLoop, Parseで随時処理できるものは置き換える
また、StringSplitの個数は末尾0変数に入るのでLoopで初期化可能
Loop,var0
var%A_index% := ""

679 :名無しさん@お腹いっぱい。:2015/12/02(水) 22:23:39.72 ID:LJxBs+UM0.net
A_indexを便利な変数として使うのは思いつきませんでした……
ちょっとだけ変数を使いたい時にとっても便利ですね

まだ覚えたてなので変数の使い方がおかしいのはご指摘の通りです
変数名の規則なども踏まえて関数に切り替えていこうと思います
アドバイスありがとうございました

680 :名無しさん@お腹いっぱい。:2015/12/03(木) 09:49:07.88 ID:89kcozzs0.net
タイトルバーの文字列がabcで始まるアプリケーションに対してctrlキーを無効にしたいんですが
これだと無効になりません

SetTitleMatchMode, 1
#IfWinExist ,abc
Ctrl::
Return

どこが間違ってるんでしょうか

681 :名無しさん@お腹いっぱい。:2015/12/03(木) 11:05:18.21 ID:mHLSgMvn0.net
Ctrlを無効にすることとCtrl+CやCtrl+Vを無効にすることはそれぞれ別だけど、そういうことではなく?

682 :名無しさん@お腹いっぱい。:2015/12/03(木) 12:09:41.66 ID:iqkyeOtx0.net
その4行だけで試してるの?既存スクリプトに追加でやってるなら
SetTitleMatchModeの前にreturnのある行ない?
Autoexecuteセクションに書かないと有効にならんよ

質問とは直接関係ないけど#IfWinExistだと
abc窓が存在する時すべての窓上でctrl無効になるよ
abc上でだけ効かせたいなら#IfWinActive

それとabcというのは例えで本当はabcじゃないんだと思うが
仮にWinTitleの指定が間違ってる場合abcからは判断できないので
アプリ名とかは変に隠さず本チャンのタイトル名で書いたほうが解決早い

683 :680:2015/12/03(木) 12:47:20.21 ID:89kcozzs0.net
ctrl単独使用を無効にしたいです
この4行だけで試しています
ctrl以外の他のキーは無効に出来るのでウィンドウの指定は間違ってないと思います
このアプリケーションはウィンドウが非アクティブ時でもctrlキーには反応するので(だから無効にしたい)、そこが問題なんでしょうか

684 :名無しさん@お腹いっぱい。:2015/12/03(木) 13:29:32.80 ID:KsqV50Cc0.net
だからソフト名出せっての

685 :名無しさん@お腹いっぱい。:2015/12/03(木) 13:31:59.92 ID:O7sk50AW0.net
LCtrl::Return
RCtrl::Return

にしてみたらどうかな?
左右指定しないとうまく動かないケースある

686 :680:2015/12/03(木) 21:47:39.65 ID:89kcozzs0.net
試しに
LCtrl::Return
の一行だけで実行してみたところ、全ソフトでctrlが無効になりCtrl+CやCtrl+Vもできなくなりましたが
該当ソフトではctrlが有効でした
グローバルフックっていうやつなんですね
助言助かりました、ありがとうございました

687 :名無しさん@お腹いっぱい。:2015/12/04(金) 00:58:55.61 ID:ROPd7KNZ0.net
んーあとはSendMode変えてみるとかだなー

688 :名無しさん@お腹いっぱい。:2015/12/04(金) 02:11:57.14 ID:ROPd7KNZ0.net
あ、無効化したいのにSendModeなんて関係ないかw

689 :名無しさん@お腹いっぱい。:2015/12/04(金) 13:32:31.32 ID:GT5/T+7m0.net
サーバの動作状況を自分の耳へ通知する目的で、soundbeepコマンドを使ってます。
OSがxpのころから使い、サウンドカードがなくても本体から鳴るので、放置PCの状況確認で便利でした。

このたびOSをwindows10(Pro 64bit)にしたら、soundbeepコマンドでビープを鳴らすと、
10回に1回ほどの頻度で、鳴りっぱなしになって困りました。(HDMI接続のテレビのスピーカから鳴り続ける)

鳴りっぱなしの状態で、再び音を鳴らす状況が到来すると、鳴りやむ。

夜中にうるさくて何事かと思って目を覚ましたことが数回、涙をのんでsoundbeep関連のコードを無効にしました。
同じ症状の人いる?って、こんなマイナーなコマンド、使ってる人自体が少ないよなぁ。

AHKは最新版AutoHotkey112209.zip 2015-11-11 16:34 422K

にさしかえましたが、改善せず。
以下のコードを実行して、win10環境で3秒間隔で単音で鳴らせ続けてる人いたらレスお願いします。
うちの環境だと、1分以内に症状が発症します。

#Persistent
settimer,run_beep,3000
return

run_beep:
soundbeep,500,100
return

690 :名無しさん@お腹いっぱい。:2015/12/04(金) 13:49:32.54 ID:GT5/T+7m0.net
>>691補足
まだ確定ではないけど、HDMIで接続して、映像と音声とを一緒に転送した場合に限って、
症状が出る気がする。オンボードのサウンドから出力した場合は、今のところ症状が出ない。

691 :名無しさん@お腹いっぱい。:2015/12/04(金) 16:07:55.18 ID:aUn4wdnd0.net
モニタだけを切るコマンドって無いですかね?切ると言っても放置状態でモニタスリープするので十分なのですけど、本体はスリープさせたくないんです。

692 :名無しさん@お腹いっぱい。:2015/12/04(金) 16:13:53.15 ID:GqcgXtHU0.net
powercfgコマンドでそんなのがあったような

693 :名無しさん@お腹いっぱい。:2015/12/04(金) 16:24:59.58 ID:j/dkaqjh0.net
>>689
こちらでは特に異常なし
win7 x64 AHK1.1.22.09 オンボードサウンド > スピーカー (Beepスピーカーなし)

APIを直接叩いて問題が起こるならAHKの問題ではないのでは?
MBのBIOSやサウンドカードのドライバ更新してみるかSoundPlayで代用

#Persistent
settimer,run_beep,3000
return

run_beep:
DllCall("Beep", UInt, 500, UInt, 100)
; soundbeep,500,100
return

>>691
例に書いてある
http://ahkwiki.net/PostMessage

SendMessage, 0x112, 0xF170, 2,, Program Manager

694 :名無しさん@お腹いっぱい。:2015/12/04(金) 18:32:57.25 ID:Kf9g8LeK0.net
タスクトレイのAHKのアイコンをダブルクリックするとログウィンドウみたいなものが開きますが
これをダブルクリックしたときEdit This Scriptを実行するように変更することは可能でしょうか?

Menu, Tray, Default, Edit This Script

ではダメみたいで、根本的に記述方法が間違っているみたいですがどうしたらいいのでしょうか?

695 :名無しさん@お腹いっぱい。:2015/12/04(金) 18:58:26.38 ID:cFiGexJB0.net
新しく「Edit」とかを追加してそれをデフォルトにすればできる

696 :名無しさん@お腹いっぱい。:2015/12/04(金) 19:18:29.81 ID:Kf9g8LeK0.net
>>695
無事やりたいことができました
ありがとうございます!

697 :名無しさん@お腹いっぱい。:2015/12/04(金) 22:45:10.82 ID:GT5/T+7m0.net
>>693
ありがとうございます。dllcallで差し替えたところ、症状が止まりました!
っと同時に、再びbeepに戻しても症状が出なくなりました・・・。あれ。

再現性が悪く、気まぐれで発症するようです。
しばらくdllcall式のままで様子見します。

698 :名無しさん@お腹いっぱい。:2015/12/05(土) 01:13:02.77 ID:e4v3eIdT0.net
思いつくがまま作っていった関数を整理してます
関数の返り値についてなんですが
処理が成功した、またはなにかしらエラーがあったということを返り値で表す場合は
成功を1,失敗を0にするのが一般的でしょうか?

あと、失敗したら中断させたい場合は
If(Not 関数(引数)){
return
}
こういう書き方でいいんでしょうか?

699 :名無しさん@お腹いっぱい。:2015/12/05(土) 02:56:51.03 ID:X21Yz5l00.net
整数の中で、プラスの絵数値は無数にあり、マイナスの数値も無数にある。
1つしかないものは唯一「0」なので、成功は0とするプログラムが多いみたい

プラス側の返答をしたら、成功だけどなんらかの情報をコール元に伝えたいとき、
マイナス側の返答をしたら、失敗になった原因コードを、という例が多い

ただ自分も、想定通りの結果なら1、それ以外なら0、という返答をさせる関数を
いくつも作ってしまったので、統一できていない。

統一するなら、たぶん上の法則を使うのが良いと思う。

700 :名無しさん@お腹いっぱい。:2015/12/05(土) 02:57:40.98 ID:X21Yz5l00.net
絵数値→数値

701 :名無しさん@お腹いっぱい。:2015/12/05(土) 09:06:27.07 ID:wtLNRIzm0.net
うちは成功時1、エラー0を基本でやってる
直接ifに突っ込んで if(関数()) とかする時に分かりやすいから

ただ完全に統一はしていない
DllCallラッピング関数の場合、boolean型だとTrue=-1なので0以外なら成功みたいになるし
呼び元でカウントアップ/ダウンしてる場合はエラーは-1の方が都合がいい時もあるし
返してほしい値が2択ではない時もある、関数名がIsError系の時は失敗が1、等

個人的に重要なのははっきり明示してあることだと思ってるので
コメントの関数説明にはパラメータと戻り値の説明は必ず入れてる

702 :名無しさん@お腹いっぱい。:2015/12/05(土) 12:18:09.16 ID:aCszAquM0.net
1つ質問です。モニタの光度設定を変えたいんですけどAHKで出来ますか?
夕暮れの時間が来たらまぶしすぎるのを暗くしたいんです
時間設定はわかったんですけど光度の変更がわからなくて困ってます

703 :名無しさん@お腹いっぱい。:2015/12/05(土) 13:54:17.01 ID:adO/aXt90.net
>>702
DimMonitorってのがあるから参考にしてみては

704 :名無しさん@お腹いっぱい。:2015/12/06(日) 20:07:39.17 ID:C+hgSVsJ0.net
皆さん、スクリプトのバージョン管理ってどうやってますか?
自分のコードが汚すぎて後々改造しようとした時に1から解読してる状態で鬱になりそう
なんかバージョン管理システムとか導入してますか?

705 :名無しさん@お腹いっぱい。:2015/12/06(日) 20:19:30.15 ID:dWj1hdAu0.net
特にしてないけど、数年経ってからスクリプトの修正が必要になったときのためにコメントを結構書いてる。
修正した部分はその部分に修正理由を書いているし、修正前のも残している(コメントアウト)。
不必要になった部分も場合によっては削除するのではなくコメントアウトしてその理由を書いていたりする。
後から見ると邪魔だと感じる時もあるけど、これらが結構役に立つ。
それでも根幹部分の方が影響している場合は解読が必要になるけど。

706 :名無しさん@お腹いっぱい。:2015/12/06(日) 20:24:40.52 ID:dWj1hdAu0.net
あと、なんでこういう動作(アルゴリズム)にしたのかとか
「コンテキストメニューが表示される位置の取得」といった細かいことまで
書いてることがあるけど後から見るときに分かりやすい。
ここまでする必要はないと思うけどね。

707 :名無しさん@お腹いっぱい。:2015/12/06(日) 21:25:28.79 ID:sWxa+3PZ0.net
コメントは大事
後で見て何やってるか分かんなくなりそうな箇所には念入りに説明入れる
更新内容はスクリプト先頭と実際の修正・追加行に日付とともに入れる
バックアップも当然取るけどdiffツールで比較確認作業は結構めんどい
後で苦労したくなかったらコメントの手間は惜しんじゃいかん

708 :名無しさん@お腹いっぱい。:2015/12/06(日) 21:59:30.14 ID:GNcLFBqM0.net
;よく分からないが動くからおk

709 :名無しさん@お腹いっぱい。:2015/12/06(日) 22:05:28.37 ID:BcbUNxyk0.net
あるある

710 :名無しさん@お腹いっぱい。:2015/12/06(日) 22:15:05.34 ID:c3lS5I4k0.net
10 試行錯誤の末やっと現在の記述に至る
20 そのことをすっかり忘れて後日「あれ?ここもっと簡単に書けるんじゃね?」
30 見事に不具合発生、ようやく当初の理由を思い出す
40 復元
50 goto 20

711 :名無しさん@お腹いっぱい。:2015/12/06(日) 23:00:07.98 ID:CcRpKoIa0.net
>>710
これもよくあるなぁ

あと簡潔に書き直したら他の記述で不具合が発生して、そこも書き直したらまた他の記述で不具合…とか
まぁ汚いまま放置よりは結果的にはいいけど

712 :名無しさん@お腹いっぱい。:2015/12/06(日) 23:21:41.81 ID:CcRpKoIa0.net
デバッグが中々終わらなくて試行錯誤した挙句、実は前から思ったように動作してなかったことに初めて気づいて、全然関係ないと思ってた箇所に問題があったことも何度か

713 :名無しさん@お腹いっぱい。:2015/12/07(月) 00:30:19.96 ID:N10HdXR40.net
コードよりコメントのほうが多くなる勢いで備忘録書いておきたい不安要素のあるスクリプトだと
なにかあったら結局ゼロから書き直したほうが速かったりするのも歴史が証明する事実
「不安要素」というのはその時使った/考えたコードやロジック自体のあやふやさももちろんだが
使用状況(たとえば頻度とか)的な意味も含めての要素

超私的なスクリプトをgitみたいなのに投げて管理するのもまた楽しいものだけどね

714 :名無しさん@お腹いっぱい。:2015/12/07(月) 00:48:17.97 ID:F2EMxnvt0.net
WinGetClass, AcClass, A
if (AcClass = "Progman" or AcClass = "Shell_TrayWnd" or AcClass = "Button")

これと同じことをWinGetClassを使わずにIfWinActiveの一行で記述することは可能でしょうか?
or を使って複数を指定する方法がよく分かりません
あてずっぽうで

IfWinActive, ("ahk_class Progman" or "ahk_class Shell_TrayWnd" or "ahk_class Button")

と書いてもダメでした
初歩的な質問で申し訳ないですがご教授ください

715 :名無しさん@お腹いっぱい。:2015/12/07(月) 00:50:21.60 ID:6KpGd2Yy0.net
コメントはもちろんだけど、メンテナンス性あげるなら関数化とラベル化を徹底することかなと思う

716 :名無しさん@お腹いっぱい。:2015/12/07(月) 01:13:09.70 ID:UVYut7XH0.net
>>714
#If, WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button")
こういう事?

717 :名無しさん@お腹いっぱい。:2015/12/07(月) 01:27:15.13 ID:F2EMxnvt0.net
>>716
すみません端折ってたので全て書きますね

F18:: ;F18=多ボタンマウスのサイドボタン
WinGetClass, AcClass, A
if (AcClass = "Progman" or AcClass = "Shell_TrayWnd" or AcClass = "Button")
{
Return
}
Send, ^n
Return

F18(多ボタンマウスのサイドボタン)を押したときデスクトップとタスクバーとスタートボタン以外が
アクティブの場合にCtrl+Nを入力するようにしています。

#If, WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button")

だと他のウィンドウがアクティブでも機能せず、#を消したらエラーが出てしまいました

718 :名無しさん@お腹いっぱい。:2015/12/07(月) 01:42:04.78 ID:H76WV4Wm0.net
SetTitleMatchMode ,RegEx
IfWinActive, ahk_class Program|Shell_TrayWnd|Button

もしくは

If (WinActive("ahk_class Program") or WinActive("ahk_class Shell_TrayWnd") or WinActive("ahk_class Button"))

719 :名無しさん@お腹いっぱい。:2015/12/07(月) 01:49:42.28 ID:F2EMxnvt0.net
>>718
レスありがとうございます
残念ながらそれだとデスクトップがアクティブでもCtrl+Nが送信されてしまいました
うーん、難しい・・・

720 :名無しさん@お腹いっぱい。:2015/12/07(月) 02:01:14.82 ID:H76WV4Wm0.net
>716からコピペしたらtypoしてたわ
×Program
○Progman

721 :名無しさん@お腹いっぱい。:2015/12/07(月) 02:07:47.81 ID:F2EMxnvt0.net
>>720
ああスミマセン、私も見落としてました
仰るとおりにしたら無事できました
勉強になりました、本当にありがとうございます

722 :名無しさん@お腹いっぱい。:2015/12/07(月) 04:54:37.56 ID:L5cVMmx60.net
いいコーディングを気にし始めたらこれ読むといいかもよ。初版はWebで読める。
Cプログラミング診断室
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
C言語知らんとわからん部分もあると思うけど、コーディングの考え方なんて基本は共通だから役に立つはず。

723 :名無しさん@お腹いっぱい。:2015/12/07(月) 12:28:42.24 ID:Et6pEWLp0.net
どなたか助けてください

XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
Return

マウスのサイドボタンを押しながらホイール上下で音量調節して、音量値をToolTipで表示するスクリプトですが
(便宜上Downのみ記載)ここまではいいのですが、このままだとずっとToolTip表示が残ってしまうので
サイドボタンを離したときにToolTipが消えるようにしたいのですが、どうにも上手く行きません

XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
KeyWait, XButton1
ToolTip,
Return

これだとサイドを離したときにToolTipは消えますが、サイドを押しっぱなしでホイール廻し続けても
連続して音量操作が出来なくなってしまいます
何か良い方法は無いでしょうか?

724 :名無しさん@お腹いっぱい。:2015/12/07(月) 12:57:42.31 ID:LRBO3R+Q0.net
SetTimerはどう?

XButton1 & WheelDown::
Send,{Volume_Down 1}
SoundGet, GetVol, MASTER, VOLUME
Vol:=Round(GetVol)
ToolTip, 音量:%Vol%
SetTimer, CloseTip, -1000 ;一秒後に一度だけラベルを実行
return

CloseTip:
ToolTip
return

なおSleepでも出来なくはないが、
Sleepは指定時間中同スレッドの再実行を受け付けないのでお勧めしない

725 :名無しさん@お腹いっぱい。:2015/12/07(月) 13:13:07.40 ID:H76WV4Wm0.net
~XButton1 up:: ToolTip,

726 :名無しさん@お腹いっぱい。:2015/12/07(月) 13:25:40.15 ID:Et6pEWLp0.net
>>724
なるほど、「サイドを離したら消える」とは違いますが、これはこれで良い感じですね
ありがとうございます

>>725
それも試しましたがそれだと音量調整してサイドボタンを離したときにはToolTip消えず、
もう一度サイドボタンだけ押した時にToolTipが消えるので意図した動作になりませんでした

727 :名無しさん@お腹いっぱい。:2015/12/07(月) 13:36:48.97 ID:vki0V7sB0.net
XB1離したときに消えるにこだわるならタイマーでgetkeystateすればいい

728 :名無しさん@お腹いっぱい。:2015/12/07(月) 14:09:30.72 ID:H76WV4Wm0.net
>>726
XButton1 upだとその動作だけど~付けたら2度押し時以外でも消えたよ
win8.1x64 AHK_L 1.1.22.06

729 :名無しさん@お腹いっぱい。:2015/12/08(火) 02:50:21.48 ID:gV9WkKR10.net
GUIのエディットボックスに表示するテキストのうち一部の色だけを変えたいんですがどうすればいいんでしょう?
GUI,Colorでテキストの色を変える所まではできたんですが、一部だけ色を変えるにはどういう処理を行えばいいかわかりません・・

730 :名無しさん@お腹いっぱい。:2015/12/08(火) 14:26:25.83 ID:6tCcbcfq0.net
win7 64で、ahkからsoftalkをrunして数値(変数の中身)を喋らせてるんだけどsoftalkが不規則にエラーを吐いて不正終了することが非常に多いのがちょっと不便。
原因と対策が分かる人なんて通りがからないかなぁ…

731 :名無しさん@お腹いっぱい。:2015/12/08(火) 16:10:05.56 ID:uMc8NsSB0.net
>>729
テキストを分割して個別に指定
Gui,Color 背景色
Gui,Font 文字色

>>730
エスパースレではないので最低限スクリプトを書こう、話はそれから

732 :名無しさん@お腹いっぱい。:2015/12/08(火) 17:13:57.28 ID:f7u0qI6W0.net
動いたり動かなかったりするならsoftalkが悪い

733 :名無しさん@お腹いっぱい。:2015/12/08(火) 17:26:51.48 ID:4c8Nbow/0.net
>>730と同じことをxpとwin7-32bitで何年も前にやってたけど、同じだったな。
引数に、しゃべらせたい文字列を入れてrunするだけの簡単なコード。

softalk.exeの消費メモリ量が、しゃべらせるたびにちょっとずつ増えていき(1回の実行で4MB増えた記憶が)、
たしか800MBを超えたあたりでプログラムが不正終了した。

引数に文字列を送ってしゃべらせる使い方は、マニュアルに掲載されてる方法なので正規の方法だし、
こんなことはだれもやってないし、わかってる人はapiやdllを叩いて起動してるだろうから、
調べても事例がないから困ったな、というところで使うのをやめた。まさかの同じことをやってる人登場でワロタ

softalk.exeをしゃべらせたあとにprocess,closeで終了させると、そのたびクリーンになるからメモリリークはなくなるが、
しゃべらせるたびに最前面で起動してきてフォーカスを奪われて目障りなので、これは不採用で終わった。

そもそも、しゃべらせるたびに4MBを無駄食いするから、PCの使用に影響が出るし、
softalkが、なんらかの問題を抱えていたのだと思う。

734 :名無しさん@お腹いっぱい。:2015/12/08(火) 17:28:33.18 ID:mVXJXXOx0.net
wのほう使えばいいじゃん

735 :名無しさん@お腹いっぱい。:2015/12/08(火) 17:44:13.99 ID:4c8Nbow/0.net
過去に作ったコードを調べたら、苦労の跡があった。

;改行や`rが含まれていると、softalkがアプリエラーで死ぬので、ここで削除する。
stringreplace,str,str,>,,ALL
stringreplace,str,str,|,,ALL
stringreplace,str,str,`r,,ALL
stringreplace,str,str,`n,,ALL
このあと、しゃべらせたい日本語を入れた変数「str」を引数にして、runさせる流れ。
4MBのメモリリークと闘いながらであれば、使うことができる。

dll呼び出し法は、このスレで話題になったことがあった。
しかし、漢字まじりの日本語を直接投げても、解釈できないデメリットがあった。
ひらがなonlyの原稿しかしゃべらせることができない。これでは実用的に使えず、これも断念。

以下の断片コードでネット検索すると、たぶん出てくると思う

;DLLよびだし法 AHKスレにて。ひらがなしか解釈できない
; phrase: 喋る内容(音声記号列という名の文字列)
; speed:速さ(遅50〜300速)
; sync:喋り終わるまで待つかどうか(真偽値)
dll_file=AquesTalk2Da.dll
hModule := DllCall("LoadLibrary", "Str", dll_file, "Unit")
hMe := DllCall(dll_file . "\AquesTalk2Da_Create", "Unit") ; 合成エンジン作成


softalkを調べたら新しいバージョンが出ているので、いまならメモリリークは改善されてるかもしれない。
http://www35.atwiki.jp/softalk/pages/15.html

736 :名無しさん@お腹いっぱい。:2015/12/08(火) 18:18:46.53 ID:6tCcbcfq0.net
>>733
ありがとうございます。同じですね。
そもそもsoftalkに発声終了後自動的にプロセスを閉じるというオプションがあったらいいんですが、要望出してみようかしら
しかし、おかげで適当に関係ない機会に(しゃべってないであろうタイミングで)softalk.exeをcloseさせるという案を思いつきました。色々やってみます。
ありがとうございます。

この問題さえ起こらなければsoftalkはahkとの相性がいいと思います
ループの進捗具合を喋らせたりすると、時間の無駄なく、部屋の掃除や洗い物ができたりして便利

737 :名無しさん@お腹いっぱい。:2015/12/08(火) 20:01:05.69 ID:YwlzoF2L0.net
>>736
メモリが原因だとするなら、超軽量なシンプル設計で非常駐型のメモリ開放ツールeMemを使ってみては?
ttp://www.vector.co.jp/soft/winnt/hardware/se385150.html

softalkをRunする度にeMemもRunするようにしておけば瞬時にメモリを開放してくれる
常駐のAHKスクリプトを使っている場合もAutoHotkey.exeのメモリ使用量がどんどん増えるので
自分もあらゆる操作の度にeMemをRunさせるようにしてます
動作OS:Windows XP/2000/NTとなってるけどWin7-64bitでも問題なく使えます

738 :名無しさん@お腹いっぱい。:2015/12/08(火) 20:03:10.83 ID:7HiR8DY/0.net
適当に用意した音声ファイルをSoundPlayでおk

739 :名無しさん@お腹いっぱい。:2015/12/08(火) 20:52:38.02 ID:4c8Nbow/0.net
最新版20140913版をダウンロードして、数年ぶりに使ってみた。
http://www.vector.co.jp/soft/winnt/art/se412443.html

こちらのPCはWin10-64bitで、結果としては、改善してないっぽい。tasklistで確認すると、

SofTalk.exe 6904 Console 1 51,776 K
↓1回しゃべらせた
SofTalk.exe 6904 Console 1 52,740 K

やっぱり。1MB増えてる。
1つ発見があり、2012頃までのは、runのときにhideオプションを付けると、しゃべってくれなかった。
いまの版は、hideでもしゃべってくれる。裏で適当なタイミング、100回に1回とかでkillすれば、
メモリを際限なく使う事態は避けられる。hideで起動すれば、UIのフォーカスを奪われることもない。

>>738
しゃべらせたい目的を持ってる人は、録音済み定型句だけでは
達成できないことを、やろうとしてるんじゃないかと

俺の場合は、緊急地震速報が発令される3秒ほど前に、P2P地震速報で、
揺れを感じた人の一番多い地域名と、報告者の人数を、素早くしゃべらせる目的だった。

揺れを感じた人の画面表示をAHKで定期的に抜き取って、整形して、しゃべらせてた。
画面を見なくても、どこで地震が起きたか、わかった。
初回からいきなり報告者の人数が多い=でかい地震なので、地域名とセットで目安に。

目的は達成できたけど、softalkがどれくらいメモリを食いつぶしてるかを
定期的に確認する必要があった。強制終了ダイアログが出ているときは、
それを閉じないと、以降しゃべってくれないのが困りごとだった。

強制終了ダイアログを自動で閉じるコードは、さすがに作らなかったw・・・はずだが、
エラー時の挙動が何種類もあって対応できず、あきらめたんだった。

740 :名無しさん@お腹いっぱい。:2015/12/08(火) 20:56:38.04 ID:2V5WQIpD0.net
>>739
しゃべらせた後に>>737のを実行したらどう?

741 :名無しさん@お腹いっぱい。:2015/12/08(火) 20:58:16.13 ID:mVXJXXOx0.net
だからしゃべらせて終わらせたいならwを使えっての
AHK側の問題どこにもないスレ汚ししつこい

742 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:00:02.17 ID:mVXJXXOx0.net
softalkが延々メモリ増えていくなんて挙動もしねえよ
するならおま環

743 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:00:29.23 ID:4c8Nbow/0.net
>>737
これすごいね。劇的に改善した。

SofTalk.exe 6904 Console 1 52,740 K
↓eMem実行
SofTalk.exe 6904 Console 1 488 K
↓1回発声
SofTalk.exe 6904 Console 1 14,592 K
↓eMem実行
SofTalk.exe 6904 Console 1 488 K

これは、javaでいうところのガベコレを、手動で実行させるような動作なのかな。
これを毎回実行すると、たしかに何も困ることがなくなるね。定期killも不要だ。

settimerで1時間ごとに実行することにします。いいツールを教えてくれてありがとう。

744 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:08:40.32 ID:6tCcbcfq0.net
>>737
ありがとうございます、
便利そうなのでいま早速使ってみてます
他にもこういうAHKと組み合わせるお勧めソフトがあったら知りたいですねえ
スレのテンプレに入れていきたいです

>>739
検証ありがとうございます
そうなんですよね
softalkはその場でどんな文字列(漢字かな交じり英語交じり数値混じり)でも読み上げてくれるので
むしろ変動する情報を読み上げさせるのに使ってます
数値も例えば740を「ななよんぜろ」じゃなくて「ななひゃくよんじゅう」と読んでくれるのでパソコン見てなくても色々分かるので良いです
単に固定の効果音として使うだけでも、効果音ファイルを先に用意しなくていいだけでも便利。
どうせならMMLで音楽鳴らせれば…と思うことも

強制終了ダイアログが出ているときは、それを閉じないと、以降しゃべってくれないのが不便なのも同じでした
ただ僕が使い始めた時点でAHKもsoftalkも739さんのより新しかったせいか強制終了ダイアログを自動で閉じるコードは作れてましたが
ダイアログが出たり消えたりする関係でフォーカスを制御下においてなきゃいけない処理にそれらに割り込まれてしまい
そこから動作が崩れてしまう現象が時々起こっていたのでsoftalkの方を諦めるという結果になってましたね

745 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:15:22.88 ID:zMjXC85r0.net
この自演は何が目的なの?

746 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:25:26.88 ID:R5flJKrF0.net
>スレのテンプレに入れていきたいです
知らんがな

747 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:43:57.17 ID:Z8WK/ioy0.net
ほんとに>>734で済む話で笑った
地震速報のくだりとか嘘です♪のコピペに通ずるものがあってほほえま

748 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:59:57.16 ID:2cO/+tuV0.net
eMemの有用性はsoftalkに限った話じゃないんだな
>常駐のAHKスクリプトを使っている場合もAutoHotkey.exeのメモリ使用量がどんどん増えるので

メモリ開放するとAutoHotkey.exeのメモリ使用量200KB程度になる
長時間PCを使ってると差がでかい

749 :名無しさん@お腹いっぱい。:2015/12/08(火) 21:59:53.86 ID:cJLcnHUK0.net
便利ツールの紹介は別に構わんが

>常駐のAHKスクリプトを使っている場合もAutoHotkey.exeのメモリ使用量がどんどん増えるので
これはスプリクトを見直すべき
他所のexeの干渉できないメモリリークなら外部ツールに頼るのも手だが
自分が書いたコードでその解決法はどうかと思う
メモリ使用量がどんどん増えるようスプリクトは放置するべきじゃない

750 :名無しさん@お腹いっぱい。:2015/12/08(火) 22:10:24.93 ID:xqYFnFMP0.net
メモリ開放ならなんかサンプルスクリプトあったろ

751 :名無しさん@お腹いっぱい。:2015/12/08(火) 23:08:51.10 ID:cJLcnHUK0.net
これか、試してみたがいいな 1コマンドでこういうことできるのは面白い
http://sites.google.com/site/ahktips/howto/getfeelofit#TOC--3

752 :名無しさん@お腹いっぱい。:2015/12/08(火) 23:10:57.67 ID:ucw+1LdV0.net
AqKanji2Koeも「ヌ」になる制限付きなのか
どっかにAqKanji2Koe.dllが同梱されてるソフト落ちてないかな…

753 :名無しさん@お腹いっぱい。:2015/12/08(火) 23:56:48.77 ID:h2bhxtOq0.net
複数のウインドウ(同じソフトの)を画面に均等に並べるというahkのスクリプトを使っているのですが、
2つのウインドウの場合、画面の上下、横長のを上にひとつ下にひとつといった風に配置してくれます。
これを左右、左半分にひとつ、右半分にひとつというふうに、スクリプトをいじって変化できませんか?
教えて下さい。
スクリプトはこちらです。http://textuploader.com/5uqjv
よろしくお願いします。

754 :名無しさん@お腹いっぱい。:2015/12/09(水) 00:35:51.66 ID:rpCi2Onq0.net
3年前のログのと同じ子なんだろうか・・・

755 :名無しさん@お腹いっぱい。:2015/12/09(水) 00:49:29.45 ID:zhy4pVd00.net
できる
w、h、x、y それぞれの変数の値を希望のサイズと位置になるように弄ってやればいい

なおこのスレはクレクレ禁止だから具体的な答えは聞くな
考え方のヒントと答え合わせなら聞きに来ておk
じゃあな、がんばれよ

756 :名無しさん@お腹いっぱい。:2015/12/09(水) 01:02:15.57 ID:L5v6rpCx0.net
たぶん同じ子です。僕の脳みそじゃわかりっこないです。どうしたらいいのかほんとにわかりません。
たすけてください

757 :名無しさん@お腹いっぱい。:2015/12/09(水) 01:23:23.28 ID:FoczIvyt0.net
3年の間に少し調べれば自分で何とか出来るだろ…

758 :名無しさん@お腹いっぱい。:2015/12/09(水) 01:23:53.02 ID:L5v6rpCx0.net
できました。左右二分割できました。ありがとうございました。
備忘録。以下のように変更しました。
w := (mRight - mLeft) / 2
h := (id > 2) ? (mBottom - mTop) / 2 : mBottom - mTop
x := (Mod(a_index, 2) == 1) ? mLeft : mLeft + w
y := (a_index <= 2) ? mTop : mTop + h

また次、助けてください。\(^o^)/

759 :名無しさん@お腹いっぱい。:2015/12/09(水) 02:51:03.04 ID:pXjTI0K/0.net
関数内にいくつか条件をかいておいてその条件に合致した場合そのままreturnさせたいんですがどうにも動きません。
こんな感じに、例えばF1キーを押して、特定のウィンドウタイトルをもったウィンドウがあった場合に(実際に使う場合はもっと複雑な条件を作りますが)
そのまま終了させたいんですがreturnをすり抜けてsend,{F1}まで実行されてしまいます 記述が間違っているんでしょうか?

Function()
{
ifwinexist,AAA
return
}

F1::
Function()
send,{F1}
return

760 :名無しさん@お腹いっぱい。:2015/12/09(水) 03:40:29.28 ID:xiu/lHa30.net
その記述だと、そうなるわな。

俺ならこうする

Function()
{
なんたらかんたら処理
return
}

F1::
ifwinexist,AAA
 {
 Function()
 }
else
 {
 send,{F1}
 }
return

761 :名無しさん@お腹いっぱい。:2015/12/09(水) 03:44:56.92 ID:IxTWXF+s0.net
>>759
関数はGosubのような物(サブルーチン)
関数内でreturnはサブルーチンから元スレッドに戻る+返り値を設定できる
スレッド、サブルーチンを止めたいならExit

762 :名無しさん@お腹いっぱい。:2015/12/09(水) 03:49:04.97 ID:xiu/lHa30.net
>>759の実装を無理にでもやりたければ、exitをつかえば可能。

ただ、そうすると、F1を押したのに、send,{F1}が実行されないパターンが出てくる。
そのシーンがどのような条件で出るかを、functionの内容を見ないと判断できないという、
非常に見通しの悪いコードとなるため、おすすめできない。

数日後に自分が見直しても、訳が分からないコードになる。

763 :名無しさん@お腹いっぱい。:2015/12/09(水) 03:52:05.44 ID:WsTqYkaV0.net
returnの仕様をよく読んで
http://ahkwiki.net/Return
関数でのreturnは、値を返すために使うのであって、スレッドを終了するためにあるのではないよ
だからあなたの例では、
Functionを呼び出し、AAAが存在したら(returnの引数を指定してないので)「無」を返し、
呼び出し元に復帰する
ということになる

764 :名無しさん@お腹いっぱい。:2015/12/09(水) 04:08:22.42 ID:pXjTI0K/0.net
どうもです 関数内のreturnは値を返すだけなんですね
exitも試してみましたが関数が実行されたところで処理が終わってしまうことがありました

同じアプリ内にいくつかフローティングウィンドウが存在していてそれぞれのウィンドウに個別の名前があるんですが、
WinGetTitleでタイトルを取得して、特定のウィンドウタイトルの場合には処理を止める、という條件を作り
何回も使いまわそうとしたんですが駄目みたいですね

765 :名無しさん@お腹いっぱい。:2015/12/09(水) 04:20:30.74 ID:xiu/lHa30.net
えっ関数を呼んで、呼んだ先でそのまま終了させたいんじゃないの?

>exitも試してみましたが関数が実行されたところで処理が終わってしまうことがありました

これそのものじゃんw

いったいどんな動作を想定してるのか、わけがわからないから、
どっかにコードをさらすしかないね

まあ、ダメみたいですねってあきらめてるような気力じゃアレだろうけど

766 :名無しさん@お腹いっぱい。:2015/12/09(水) 05:27:25.28 ID:pXjTI0K/0.net
>>765
exitで問題なかったです 自分が書いているスクリプトの別の処理で問題が発生していてちょっと勘違いしていました

767 :名無しさん@お腹いっぱい。:2015/12/09(水) 09:31:46.48 ID:3EEToTqK0.net
F1::
if !winexist("AAA")
 send,{F1}
return

768 :名無しさん@お腹いっぱい。:2015/12/09(水) 09:55:01.94 ID:zhy4pVd00.net
>関数内のreturnは値を返すだけ
こういう言い方されると根本的なこと分かってなさそうで不安になるな

returnてのは今いる所を抜けて呼び出し元に復帰するコマンド
戻り値の有無はあるがホットキーサブルーチン関数間でReturnの機能が変わるわけじゃない
関数内で使えば関数を抜けて上位に戻るし
ホットキー内で使うと戻る上位が存在しないからExitと同様の動作になるだけ


関数内での一足飛びExitはあまりお薦めしない
やるなら関数内で丸ごと完結させる
Function()
{
 ifwinexist,AAA ; Abort
   return

 ;正常時の処理
 send,{F1}
}

もしくは戻り値で返して上位で判断させる
Function()
{
 ifwinexist,AAA
   return 0
 return 1
}
F1::
 if (Function())
   Send,{F1}
 rerutn

769 :名無しさん@お腹いっぱい。:2015/12/09(水) 11:17:27.62 ID:w2eh4Hyh0.net
768の後者が理想だけどAHKだと1行に命令詰め込めないからソースが冗長で分かり難くなるのが嫌なんだよなぁ

Function() の関数名を ifHogehogeExit() とか exit_ifhogehoge() みたいにexitという文言を入れて
exitコマンドの一種みたいに見えるようにして
呼び出し部分を見ただけでこれ呼んだらexitする可能性があるって連想できるようにするのはどうだ

770 :752:2015/12/09(水) 13:39:44.18 ID:3KvCTtD60.net
http://pastebin.com/cTcjxMcE
書いてから言うのもなんだけどSofTalkで良いな。うん

771 :名無しさん@お腹いっぱい。:2015/12/09(水) 19:25:05.49 ID:w2eh4Hyh0.net
softalk使いの人たちでthunderbirdの新着メール通知をうまく捉えて差出人とか件名を読み上げさせてる人っている?

772 :名無しさん@お腹いっぱい。:2015/12/09(水) 21:06:45.54 ID:3KvCTtD60.net
http://pastebin.com/gPc0DmA2
折角作ったんで簡易GUIを付けてみた
非同期読み上げ処理の参考になるかも?

AHKからAquesTalkのAPIを叩く利点は速度だけかな
独自辞書機能は無理そうだし

773 :名無しさん@お腹いっぱい。:2015/12/12(土) 19:17:10.41 ID:IDIpVmHE0.net
#Persistent の使い方がいまいちわかっていないのですが、

#Persistent
OnClipboardChange:
If Clipboard contains XXX
{
soundbeep
}
Return

これでクリップボードの内容を監視したいのですがこれはahkスクリプトのどこに書いたらいいでしょうか?
auto-executeセクションでしょうか?

それと#persistenの有効範囲がわからないのですが、 #Persistent の下に2つラベルが書いてあった場合2つとも#Persistent扱いになるんでしょうか?

774 :名無しさん@お腹いっぱい。:2015/12/12(土) 20:02:24.75 ID:H5sDxpe00.net
>>773
「その」スクリプト全体の設定
ひとつのA.ahkにいろいろ書いてもひとつのスクリプトとして起動する
同時にB.ahkを起動させても別のスクリプトなので影響しない

775 :名無しさん@お腹いっぱい。:2015/12/12(土) 20:04:28.45 ID:A5BCtuog0.net
>>773
1個書けば、スクリプト全体に効能が出る。

そのクリップボードを監視する用途なら、なにも関係ないところに書くとよい。
autoexecセクションに書かなくても、onなんたら系の処理は、状態変化時に勝手に呼び出される。

autoexecセクションに書くと、クリップボードに変化があってもなくても、
起動時に必ずクリップボード関連の処理がされてしまう。それでもよければいいけど。

776 :名無しさん@お腹いっぱい。:2015/12/12(土) 20:21:37.39 ID:dZAzDUCW0.net
>>775
OnClipboardChangeはどこに書こうが起動時には必ず1回実行される

777 :名無しさん@お腹いっぱい。:2015/12/12(土) 21:16:29.04 ID:IDIpVmHE0.net
>>774
>>774
>>775
>>776
#persistentなくても動きました どこか適当なところに書いておきます どうもでした

778 :名無しさん@お腹いっぱい。:2015/12/12(土) 21:25:46.60 ID:hBhR0/Mz0.net
>>777
#Persistent ホットキーを含まないスクリプトを常駐状態にする。

同じスクリプト内にホットキーの記述があるなら#Persistentはつける必要無いよ
>>773だけのスクリプトを常駐させるためには#Persistentが必要

779 :名無しさん@お腹いっぱい。:2015/12/12(土) 21:53:01.19 ID:IDIpVmHE0.net
>>778
なるほど persistentの使い方わかりました どうもでした

780 :名無しさん@お腹いっぱい。:2015/12/14(月) 03:08:40.33 ID:nFhcNQi50.net
もの凄くFAQかもしれませんが、質問させてください。ド初心者です。
1024x768のフルスクリーンゲーム(DirectX 8.1世代)・・・まあ三国志\なんですが、
これ、画面のスクロールがマウスを画面端に持っていった時限定の仕様で、キーボードでスクロールできません。
そのため、カーソルキーを押すとマウスを端まで持っていき、離すと元の位置に戻すスクリプトを書いたのですが、
件のゲームでは動作しません。他のウィンドウアプリ上では期待通りの動作をします。
DirectX/フルスクリーンと言う環境で何か特種な手法が必要なのであれば、是非ご教授頂きたく思います。
コードは以下の感じ。
----
up::
{
MouseGetPos, x, y, hwnd, ctrl, 2
if % global orgY = 65535
global orgY = y
MouseMove, x, global minY

}
exit

up Up::
{
MouseGetPos, x, y, hwnd, ctrl, 2
MouseMove, x, global orgY
global orgY = 65535

}
exit
----
「上」以外は割愛しますが処理は同じものです。また・・・やむを得ず空値に65535を使用していますが、
いわゆる「NULL」やブールがありますと、もうちょっと見られるコードになりそうです。こちらについてもお教え頂けますと幸いです。

781 :名無しさん@お腹いっぱい。:2015/12/14(月) 04:22:26.67 ID:4BNyng1I0.net
sendモードを変えてみたり
キーダウンからキーアップまでの時間を100msくらいにしたり
(Setkeydelay で変更または Sleepを入れる)
ゲームがアクティブになったときにスクリプトを1回だけリロードさせるようにしたりしてみては?
ゲームによってはアクティブになる度にキーフックを再実行する仕様のものがある。
スクリプトをリロードさせる理由は後からキーフックしたほうが優先されるから。

782 :名無しさん@お腹いっぱい。:2015/12/14(月) 05:24:35.59 ID:nFhcNQi50.net
貴重なご教示、ありがとうございます。
申し遅れましたが、くだんのゲームはwin7/64bit上で互換モードをXP-SP2で動作しており、
AHKスクリプトもexeにコンパイルして互換モードをXP-SP2にしないと、何から何まで反応しません。
これは恐らく、古いゲームで使おうとすると高確率で発生する問題なのでしょうね。

お教え頂いた部分を各所チェックし、何とか動作するように、試してみます。
ド素人で暗中模索の中、道筋が見えた気持ちです。

783 :名無しさん@そうだ選挙に行こう:2015/12/14(月) 13:26:45.85 ID:E5OTPNps0.net
down::
WinGetPos,,, W,H, A
MouseGetPos, MX,MY
MouseMove, MX,H-20
KeyWait,down
MouseMove, MX,MY
Return

784 :名無しさん@お腹いっぱい。:2015/12/16(水) 12:27:36.29 ID:3IBpb/0l0.net
TrackWheelをWindows10で使っているのでsが、
スタートメニューで表示される画面のスクロールができません。
ウィンドウクラスを取得しようとしてもやり方がわかりません。
どうすれば使えるようになるのか?
ウィンドウクラスがわかる方がいましたら教えてください。
よろしくおねがいします。

785 :名無しさん@お腹いっぱい。:2015/12/16(水) 12:34:50.63 ID:9ElyxVzz0.net
>>784
ttps://sites.google.com/site/autohotkeyjp/reference/Window#spy

786 :名無しさん@お腹いっぱい。:2015/12/16(水) 18:12:38.10 ID:3IBpb/0l0.net
>>785
ありがとうございます。
Windows.UI.Core.CoreWindow
を取得できたのですが、TrackWheelで設定しても動きませんでした…

787 :名無しさん@お腹いっぱい。:2015/12/16(水) 21:05:29.48 ID:sj6oZhSX0.net
TrackWheelでスタートメニューやストアアプリをコントロールできないんじゃないの?

788 :名無しさん@お腹いっぱい。:2015/12/24(木) 02:48:24.05 ID:WD+nKZrO0.net
Win7 から Win10 にアップデートしたら不具合発生。

#InstallKeybdHook
#UseHook
NumpadLeft::Send,{LButton}
NumpadRight::Send,{RButton}

これがライブサムネイルの上で効きません。
(タスクバーの起動中アプリにマウスオーバーした時にポップアップするやつ)

いろいろ試行錯誤したり、キーヒストリを見たのですが、
異なる症状が何種類か発生して原因がサッパリ分かりません。

・全く無反応
・ライブサムネイルが消えるだけ(NumpadLeftやNumpadRightが送られている?)
・Sendしたイベントがライブサムネイルを突き抜けて、裏側のウィンドウに送られてしまう。

みなさんの環境では発生しますか?
対策はありますでしょうか?

AHK v1.1.22.09 / Win10 Home 64bit

789 :名無しさん@お腹いっぱい。:2015/12/24(木) 11:43:02.98 ID:he+R2SR80.net
AHKは何bit版?

790 :名無しさん@お腹いっぱい。:2015/12/24(木) 13:28:08.82 ID:WD+nKZrO0.net
64bit Unicode版です。

791 :名無しさん@お腹いっぱい。:2015/12/26(土) 19:11:47.17 ID:OwMYHtHR0.net
http://peace.2ch.net/test/read.cgi/hard/1420545959/163
↑ここに書かれている、「 AutoHotkey でスクロール時は中クリックを送らないように」
って簡単に書くことできますか?
できればソース教えてください。

792 :名無しさん@お腹いっぱい。:2015/12/26(土) 19:25:10.61 ID:GmJLr0Gr0.net
>>791
スクロールが一定時間内に連続したらフラグ立てて
#Ifで判定すればいい
後は自分で書こう

793 :名無しさん@お腹いっぱい。:2015/12/26(土) 20:23:52.23 ID:pzNno/iH0.net
スレ元みたが勝手ドライバ作った人はもちろん
ほかのスレ住人も結構テクニカルな話しててスキル高いな
あそこから飛んできてクレクレするようなアホは去ね

794 :名無しさん@お腹いっぱい。:2015/12/26(土) 21:53:39.20 ID:gXeP9zqF0.net
そろそろマルチタッチも対応していって欲しい
中の人の態度は頑なな印象を受けるけど

795 :791:2015/12/26(土) 22:40:44.41 ID:OwMYHtHR0.net
KeyWait,WheelUp
MButton::return
return

KeyWait,WheelDown
MButton::return
return

でダメでした。わからない。。。難しい

796 :名無しさん@お腹いっぱい。:2015/12/27(日) 18:30:33.90 ID:LBOx4LyJ0.net
>>791
なぜ、スクロール時に中クリックを送らないようにするのか理解できない。

797 :名無しさん@お腹いっぱい。:2015/12/27(日) 21:28:20.56 ID:5DiAbcLh0.net
ThinkPadの乳首キーボードは中ボタン+トラックポイントでスクロールさせる機能があり
ドライバの設定で中ボタンをスクロールトリガとどちらにするかを選択できる
上のリンク先では専用ドライバ無しで使うツール公開してるので
ついでにスクロールの機能を殺さず非スクロール時は中クリックとして動作させたいってことじゃね

TrackWheel.ahkがそれやってるけど32ビット版でしか動かないんだよな

798 :名無しさん@お腹いっぱい。:2015/12/27(日) 21:29:29.84 ID:5DiAbcLh0.net
×スクロールトリガとどちらにするか
○スクロールトリガと中クリックどちらにするか

799 :名無しさん@お腹いっぱい。:2015/12/28(月) 07:38:39.26 ID:oD0loXFU0.net
TrackWheelなんかはその代わりに中ドラッグを捨ててる
中ボタンを押して一定時間以内に離すと中クリック、そうでなければスクロールって処理じゃなかったっけ
それか中押したままカーソル動いたらスクロールだったか

800 :名無しさん@お腹いっぱい。:2015/12/28(月) 07:39:22.30 ID:oD0loXFU0.net
TrackWheelはソースあるんだからそれ見ればいいんでねーの

801 :名無しさん@お腹いっぱい。:2015/12/28(月) 14:17:28.51 ID:+kyM687s0.net
>>800
>>799
1)ThinkPad USB トラックポイントキーボード
2)ThinkPad トラックポイントキーボー ド
の順番で発売されて、TrackWheelは、1)用に開発された。
>>791は、2)のキーボードでハードでセンタークリックの扱いが違う。

802 :名無しさん@お腹いっぱい。:2015/12/28(月) 14:38:48.93 ID:Vjj1Oxkv0.net
TrackWheelは自前でMクリックフックしてスクロール制御してるけど
スクロール動作を監視してどうこうしてるわけではないので
ソース見ても参考にはならないと思う

803 :名無しさん@お腹いっぱい。:2015/12/28(月) 15:14:23.63 ID:ffRwDtCU0.net
Key::
の中で他のキーを無効にすることできるの?

804 :名無しさん@お腹いっぱい。:2015/12/28(月) 23:35:35.90 ID:IWmdqPAc0.net
d::
flag := 1
Sleep , 5000
flag := 0
Return

#If flag = 1
s::Return
#If

こんなかんじ?

805 :名無しさん@お腹いっぱい。:2015/12/29(火) 08:23:19.01 ID:WEC/2kjz0.net
>>804
ありがとうございます。
試してみます

806 :名無しさん@お腹いっぱい。:2015/12/29(火) 13:26:51.51 ID:8e17npE90.net
OSをwin10にしたら、win7で問題なく動いていた既存の自作スクリプトが、突然終了します。
終了した場合、タスクトレイにマウスカーソルをあてると、該当のスクリプトのアイコンが消えます。
アイコンは見えてるのに実際は動いていなくて、地味に困ります。

アプリケーションエラーのダイアログは出ません。

1本道のコードではなく、時刻やフラグなど条件に応じて複数の仕事をsettimerで呼ぶ構成です。
時刻が来たらURLdownloadや、バッチファイルを生成してrunするなど。

不定期に突然死ぬので、どこでエラーになってるのか、特定できません。

なにかうまい特定方法があればよいのですが、
丹念にprintfデバッグをするしかないですか?

807 :名無しさん@お腹いっぱい。:2015/12/29(火) 14:10:46.84 ID:xUOx0gug0.net
お尋ねします。
ControlGetでComboBoxの状態を取得した際に、選択されたComboBoxのテキストでは無く、
選択されたComboBoxの0,1,2等の番号で取得する事は出来ますでしょうか?。
よろしくお願いします。

808 :名無しさん@お腹いっぱい。:2015/12/29(火) 14:30:17.91 ID:wBiW99cI0.net
>>806
win7のバージョン home? professional? 32bit? 64bit?
win10のバージョン 同上
AHKのバージョンもろもろ
なんで情報伏せるのか

809 :名無しさん@お腹いっぱい。:2015/12/29(火) 16:32:02.83 ID:kpEO4FJQ0.net
ahk(ver.1.1)の過去バージョン欲しいんですけど、
↓ではver.1.1.22.07より前が見つからないのですが
もっと過去のバージョンはどこで入手できるんでしょうか?

AutoHotkey 1.1.* - previously known as AutoHotkey_L.
https://autohotkey.com/download/1.1/

810 :名無しさん@お腹いっぱい。:2015/12/29(火) 19:18:37.94 ID:0vioO+hI0.net
Radial menu 4.23を使用しているのですが
クリックしてもメニューが消えずに数度押すことが出来るボタン設定は出来ないでしょうか?
何度も押せるキー送出するボタンを作りたいのです
ワンクリックキー送出はできたのですが
メニューを残したまま数度押せるようにはどうやったらいいのか分かりません
どなたか出来るようなら教えてください

811 :名無しさん@お腹いっぱい。:2015/12/29(火) 19:39:40.17 ID:0vioO+hI0.net
Radial menu バージョンは4.43でした

812 :名無しさん@お腹いっぱい。:2015/12/29(火) 20:34:54.41 ID:jTTZ0D3v0.net
>>803
押すたびにトグルしたいなら
hotkey, s, off

d::hotkey, s, toggle
s::return

押してる間無効にするなら
hotkey, s, off

d::
hotkey, s, on
keywait, d
hotkey, s, off
return
s::return

複数のキーを一気に無効トグル
keys:="qwertyuiop"
loop, parse, keys
hotkey, %A_LoopField%, key_off, off
return

d::
loop, parse, keys
hotkey, %A_LoopField%, toggle
return
return

key_off:
return

813 :名無しさん@お腹いっぱい。:2015/12/30(水) 01:00:39.82 ID:1XfjQdHX0.net
HTMLの指定したタグに囲われた文字列を抜き出したいです
<div class="hoge">...<div class="foo">.....</div>....</div>
上のようにタグが入れ子になってる場合でもちゃんと対応するタグの終わりまで取得するには
<div>と</div>の数を数えながら探していくしかないでしょうか?

814 :名無しさん@お腹いっぱい。:2015/12/30(水) 14:15:39.44 ID:586mug+r0.net
日本語URLをエンコードする方法はありますか?

815 :名無しさん@お腹いっぱい。:2015/12/30(水) 16:59:12.54 ID:6zWyPyRK0.net
>>813
DOMを使うとか
hs := "<div class=hoge>aaa<div class=foo>bbb</div>ccc</div>"
html := ComObjCreate("htmlfile")
html.write(hs)
div := html.getElementsByTagName("div")
Loop % div.length
{
d := div[A_Index - 1]
c_name := d.getAttributeNode("class").nodeValue
text :=
Loop % d.childNodes.length
{
c := d.childNodes[A_Index - 1]
If (c.nodeType == 3)
text .= c.nodeValue
}
MsgBox % "class:" . c_name . ", text: " . text
}
Return

816 :名無しさん@お腹いっぱい。:2015/12/30(水) 17:29:36.57 ID:6zWyPyRK0.net
>>814
ScriptControlを使うのが一番簡単

obj := ComObjCreate("ScriptControl")
obj.Language := "JScript"
// encodeURIかencodeURIComponent どちらを使うかは用途に応じて
obj.AddCode("function enc(s){return encodeURI(s);};")
MsgBox % obj.Run("enc", "http://日本語えんこーど.jp")
Return

x64版でScriptControlを使うには
http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol.html
これを入れないとダメ

817 :名無しさん@お腹いっぱい。:2015/12/30(水) 18:09:31.37 ID:qxHYbHC80.net
>>814
過去にも何度も出てるしググルだけですぐ出るぞ
url エンコード ahk

https://autohotkey.com/board/topic/75390-ahk-l-unicode-uri-encode-url-encode-function/

818 :815:2015/12/30(水) 20:05:05.03 ID:6zWyPyRK0.net
>>815だが、テキストの順番が見た目通りにはならないので、ルートから再起的に辿って行く形にしてみた

hs := "<div class=hoge>aaa<div class=foo>bbb<div class=bar>ccc</div>ddd</div>eee</div>"
html := ComObjCreate("htmlfile")
html.write(hs)
div := html.getElementsByTagName("div")
Loop % div.length
{
node := div[A_Index - 1]
If (node.getAttributeNode("class").nodeValue == "hoge")
{
GetText(node, text)
Break
}
}
MsgBox % text
Return
}
GetText(n, ByRef ret)
{
If (n.nodeType == 3) ; text node
ret .= n.nodeValue
Loop % n.childNodes.length
GetText(n.childNodes[A_Index - 1], ret)
}
これで一応見た目通りの順番でテキストだけ拾えるはず

819 :名無しさん@お腹いっぱい。:2015/12/30(水) 21:30:32.39 ID:1XfjQdHX0.net
>>815
>>818
ありがとうございます

820 :名無しさん@お腹いっぱい。:2015/12/30(水) 21:57:36.12 ID:ABBFeQ3v0.net
丸投げ質問にこれだけの親切回答
殺し最後の大出血サービスだ

821 :名無しさん@お腹いっぱい。:2015/12/30(水) 21:59:55.04 ID:ABBFeQ3v0.net
>>820
ノー!ノォーーッ!!間違い
殺し ← 間違い
今年 ← 正解

822 :名無しさん@お腹いっぱい。:2015/12/30(水) 22:25:32.88 ID:vDru1nzB0.net
>>816-817
センキューベリマッチ

823 :名無しさん@お腹いっぱい。:2015/12/30(水) 23:28:45.45 ID:l2aT5BCz0.net
殺したあとに出血してる件について

824 :名無しさん@お腹いっぱい。:2015/12/30(水) 23:47:08.75 ID:xeCpQtJl0.net
クレクレを甘やかす奴は氏ねって意味かと思って読んでたわ

825 :名無しさん@お腹いっぱい。:2015/12/31(木) 00:08:18.29 ID:+qocgk4L0.net
別に質問自体は丸投げじゃなくね?
htmlのはそっち方面疎いから横で見てるオレは勉強になったわ

826 :名無しさん@お腹いっぱい。:2015/12/31(木) 03:37:44.81 ID:AkNWJHpi0.net
ありがとうございますしか言ってねえじゃねえか
これは答えてもらったコードを論理的に理解してない

とりあえず、DOM操作するとよく、DOMはCOMオブジェクトで弄くれるという旨を言えばよかっただけではないか
DOMに関してはスレ違いの話だし

DOM操作ができるCOMオブジェクトが色々ある中、
とても軽いhtmlfileオブジェクトを例示したいのはよく分かる
まあ上の回答者様らは、htmlfileが
一般的なブラウザで使えるはずのメソッドやプロパティをあまりサポートしていない上に
ググっても見つからないぐらい資料が少ないからドヤりたかったのかもしれない

827 :名無しさん@お腹いっぱい。:2015/12/31(木) 04:51:20.61 ID:+qocgk4L0.net
どれとは言わないけどもろクレクレっぽいレスはスルーされてんだし
質問側が放置とか逆切れするケースでもないから
そんなピリピリしなくていいんじゃね

828 :名無しさん@お腹いっぱい。:2015/12/31(木) 05:35:07.63 ID:JFrrNYoF0.net
実は下のdiv.outerHTMLの部分が得たかっただけなんて言えない・・・
でもおかげさまでDOMという便利なものの使い方がなんとなくわかったので感謝しとりやす

html := ComObjCreate("htmlfile")
html.write(DownloadToString(URL))
divs:=html.getElementsByTagName("div") ;divタグを集める
Loop % divs.length
{
div := divs[A_Index - 1]
If(div.getAttributeNode("class").nodeValue == "content") ;クラス名を調べる
{
MsgBox % div.outerHTML
as:=div.getElementsByTagName("a") ;aタグを集める
Loop % as.length
{
MsgBox , % as[A_Index - 1].outerHTML
}
}
}

829 :名無しさん@お腹いっぱい。:2015/12/31(木) 14:06:41.31 ID:fTc/t7W10.net
妙な挙動で困っております

AHK(v2最新)
Firefox Portable(v39.03)

Firefox(フルスクリーン)がアクティブになった直後にAHKで作ったGuiをアクティブにすると
再びFirefoxがアクティブになることがあります(他のアプリのウィンドウをアクティブにした時では発生しません)
SetTimerやウィンドウメッセージ等の監視を無効にしても同じでした

Guiはこんな感じでも再現しました(実際は複雑ですが)

Gui, Add, Text
Gui, Show

できればフルスクリーンで使いたいのですが、この現象を抑える良い方法はありますか?

830 :名無しさん@お腹いっぱい。:2015/12/31(木) 14:30:39.50 ID:hPmy8xMS0.net
>>829
最前面にすれば?

Gui, Add, Text
Gui, +AlwaysOnTop
Gui, Show

831 :名無しさん@お腹いっぱい。:2015/12/31(木) 14:48:38.47 ID:OKNkAuEU0.net
>>830
Guiは常駐させることがあるので最前面だと解除する為のフラグが至るところで必要になるので
もう少しスマートな方法があればいいのですが、根本的にこの現象は防げないと割り切るしかないでしょうか?

832 :名無しさん@お腹いっぱい。:2015/12/31(木) 14:50:13.78 ID:OKNkAuEU0.net
ID変わりましたが>>829です

833 :名無しさん@お腹いっぱい。:2015/12/31(木) 15:14:36.79 ID:hPmy8xMS0.net
>>831
どんな挙動にしたいのかよく分からないが
最初の一定時間だけ最前面にすれば?

あとはこれ
https://sites.google.com/site/agkh6mze/howto/winevent

アプリの仕様を変えたいなら改造するしかない

834 :名無しさん@お腹いっぱい。:2015/12/31(木) 15:47:03.46 ID:OKNkAuEU0.net
>>833
Guiのアクティブ時にウィンドウメッセージで最前面&カウントを開始して
SetTimerで1.25秒後に解除するようにしたら安定しました

センキューベリマッチ

835 :829:2016/01/01(金) 19:25:42.32 ID:G/uftquS0.net
余談ですが>>829の現象の原因を探ってみましたが、#WinActivateForceで防げることに気づきました
代わりにGuiを閉じた後、直後のウィンドウではなくその一つ前のウィンドウがアクティブになる現象が発生する模様

836 :名無しさん@お腹いっぱい。:2016/01/01(金) 22:49:52.74 ID:G/uftquS0.net
スレッドの割り込み&破棄についての質問です

下記を実行中に再度Enterを押したら
スレッドを破棄して最初からスレッドを起動し直したいのですがどうすればいいのでしょうか?
Thread, Interrupt, 0やCritical,offなど色々試してみましたがよく分かりません

Enter::
Loop, 10
{
Sleep, 200
ToolTip, % A_index
}
Tooltip
Return

837 :名無しさん@お腹いっぱい。:2016/01/02(土) 06:08:28.54 ID:EdXLbnJI0.net
>>836
やり方いろいろだけど分離してタイマーで呼び出す方法がいいかも
Enter::
keywait, enter
running:=false
settimer, sub, -1
return

sub:
running:=true
Loop, 10
{
Sleep, 200
if(!running)
break
ToolTip, % A_index
}
running:=false
Tooltip
Return

838 :名無しさん@お腹いっぱい。:2016/01/02(土) 08:36:03.17 ID:syLvxKnf0.net
>>837
専用のコマンドはなくてフラグを立てて対応するしかないんですね

実際はGui(リストビュー)のサブルーチンから起動されるスレッドなのですが
高速に項目の選択を繰り返すとたまに選択とは異なる項目の情報が取得されて困っておりました

センキューベリマッチ

839 :名無しさん@お腹いっぱい。:2016/01/02(土) 09:02:58.95 ID:OKtEEnUz0.net
サンプルコートを提供してくれる人へ
感謝!
この人ってずっとがばってくれているよね?
感謝

840 :名無しさん@お腹いっぱい。:2016/01/07(木) 17:59:58.02 ID:UEXmKOpO0.net
win10でwindowupdate後の再起動を先延ばしにしたまま忘れて作業中に再起動したもんだからこんなん書いた
objSysInfo:=ComObjCreate("Microsoft.Update.SystemInfo")
If(objSysInfo.RebootRequired)
{
無操作状態時に起動中のソフトの状態をチェック後再起動()
}

841 :名無しさん@お腹いっぱい。:2016/01/07(木) 21:42:16.98 ID:5j5c2NdQ0.net
エクスプローラーにCtrl-CやCtrl-VをSendしても反応しない原因は、どんなことが考えられるでしょうか?

F1::
SoundBeep
Send,^c ・・・反応しない
Sleep,1000
Send,{End} ・・・反応する
Sleep,1000
Send,^v ・・・反応しない
Return

ファイル名編集中やアドレスバー編集中は3つのSendに反応しますが、
ファイル選択状態では{END}にしか反応しません。

他のアプリでは正常に反応します。
(例えば秀丸ファイラーでファイル選択状態とか。)

エクスプローラーのファイルペインに原因がありそうですが、対処法ありますでしょうか?


Win10 Home 64bit
AHK 64bit Unicode v1.1.22.09

842 :名無しさん@お腹いっぱい。:2016/01/09(土) 20:02:30.86 ID:ikPm8Lmg0.net
>>841
win10 win7ともに試してみたが
ちゃんと動作してるけどな
そもそも不具合出るような内容かよ!

843 :名無しさん@お腹いっぱい。:2016/01/10(日) 01:48:09.51 ID:n3RXJBJS0.net
>>842
ほとんど反応しないけど、たまに反応するんです。
成功率5%くらいだけど原因不明。

ちなみに>>788も自分ですが、やはり5%くらいの確率で成功する。

Win7からWin10にアップグレードしたら妙な不具合続出。
総合的にはWin7より良くなったけど。

844 :名無しさん@お腹いっぱい。:2016/01/10(日) 04:02:27.93 ID:bkzCYgEy0.net
109キーボードのテンキーで
SHIFTキー押下時(NUMLOCK時)のPAGEUP/PAGEDOWNの動作を無効化したいんだけど
これってAHKでも無理なのかな?

+$Numpad9::Return

って書いてもPAGEUP動作になってしまう
キーリマップツールでPAGEUPキーをESCなんかに変えてもPAGEUPが入力される
誤爆するのでなんとか消したいんだけど…

845 :名無しさん@お腹いっぱい。:2016/01/10(日) 04:03:27.31 ID:bkzCYgEy0.net
あ、間違い

誤)SHIFTキー押下時(NUMLOCK時)のPAGEUP/PAGEDOWNの動作を
正)SHIFTキー押下時(非NUMLOCK時)のPAGEUP/PAGEDOWNの動作を

846 :名無しさん@お腹いっぱい。:2016/01/10(日) 04:16:45.03 ID:bkzCYgEy0.net
連投すいません
スキャンコードで判明しました
大変失礼しました><

847 :名無しさん@お腹いっぱい。:2016/01/10(日) 09:50:54.19 ID:5BBzUZm30.net
NumpadPgUp
NumpadPgDn

まあスキャンコードでもいいけど

848 :名無しさん@お腹いっぱい。:2016/01/10(日) 13:16:51.88 ID:9HCE9KP40.net
GuiControlでコントロールの文字列の変更を短い間隔で行うと点滅する現象は防ぐことはできないのでしょうか?

Gui, Add, Text
Gui, Show

Loop, 10000
GuiControl, , Static1, あ

Gui, Destroy

849 :名無しさん@お腹いっぱい。:2016/01/10(日) 14:06:55.61 ID:5BBzUZm30.net
現在と書換予定後の文字列内容を比較して変更があった時だけ書き換えるようにする
時計表示などでコンマ秒を書き換えたいとかならあきらメロン

850 :名無しさん@お腹いっぱい。:2016/01/10(日) 14:13:40.55 ID:9HCE9KP40.net
>>849
わかりました。自分の用途(ファイル群の巡回)では諦めるしかなさそうです

センキューベリマッチ

851 :名無しさん@お腹いっぱい。:2016/01/11(月) 00:47:33.29 ID:WMOI9ZDe0.net
A_ThisHotkeyに入る値が意味不明なんですが、誰か解説して下さい・・・・・・・・

#IfWinActive,ahk_exe notepad.exe
~NumpadEnter::   ←このラベルが格納されしまう!!
SoundBeep
Return
#If

NumpadEnter::
TrayTip,,%A_ThisHotkey%
Return

上記のコードでメモ帳以外のウィンドウでNumpadEnterを押すと、
A_ThisHotkeyの内容が
NumpadEnterではなく、
~NumpadEnterになってしまいます

なぜ2行目のラベルが格納されてしまうのでしょうか???

852 :名無しさん@お腹いっぱい。:2016/01/11(月) 01:27:10.03 ID:z/TOirBP0.net
〜〜〜〜〜〜〜^^^^~~~~^^^~


//.\//.;:]p@[\^^-0===~|

853 :名無しさん@お腹いっぱい。:2016/01/11(月) 01:29:18.03 ID:z/TOirBP0.net
~

854 :名無しさん@お腹いっぱい。:2016/01/11(月) 16:14:59.87 ID:UsLtol/W0.net
>>852-853
???

notepad.exeがアクティブの時に ~NumpadEnter となるのは当然ですが、
#If条件以外の時にそうなるのが意味不明なのです。

855 :名無しさん@お腹いっぱい。:2016/01/11(月) 16:53:04.29 ID:6x6iyoSK0.net
条件に合わんだけでそりゃ~NumpadEnterは普通に実行されてるし

856 :名無しさん@お腹いっぱい。:2016/01/11(月) 21:57:27.61 ID:gSN3Jyym0.net
Windows10にしてみたらAHKがまったく効かないソフトが出てきて何かと思ったけど、管理者権限で起動してなかっただけだった

857 :名無しさん@お腹いっぱい。:2016/01/12(火) 09:49:02.49 ID:RvLTgbm60.net
>>855
#Ifの中って条件非成立の場合もホットキーラベルは処理されるんだ。。。。。。。知らんかった。

それだと #If と If の違いが無い気もしますね。。。。(;´д`)

858 :名無しさん@お腹いっぱい。:2016/01/12(火) 15:45:15.99 ID:qolcvhpj0.net
Webページのデータを読み取れるか質問です。

通販サイトの価格を定期的に読み取っておき、
指定した範囲の金額になったら知らせたいのですが
そういったことは可能でしょうか?

859 :名無しさん@お腹いっぱい。:2016/01/12(火) 16:37:56.03 ID:NedgFWBG0.net
該当ページのソース記述がどうなってるのかわからんと何ともいえんが
URLDownloadToFileで該当ファイル落としてきて
RegExとかで狙った金額のある箇所を特定&抽出できれば可能じゃね
金額部分が画像ファイルで値取れないとかだと厳しいが

comとかつかったらもっとスマートにできるかも

860 :名無しさん@お腹いっぱい。:2016/01/12(火) 17:24:07.22 ID:7DMnEDHA0.net
>>858
ComObjCreate("WinHttp.WinHttpRequest.5.1")

861 :858:2016/01/12(火) 19:02:29.12 ID:qolcvhpj0.net
回答ありがとうございます。
なにぶん未知の領域なのでこれから勉強ですが、
うまくできたら報告したいと思います。

862 :858:2016/01/13(水) 03:43:20.34 ID:oIMZ5mxW0.net
お陰様で無事にソーステキストを取得できました。
ttp://blechmusik.hatenablog.jp/entry/20101224/1293123876
ここのサイトのコードをほぼ丸写しでしたが、これでできることの幅が広がります。
ありがとうございました。

863 :名無しさん@お腹いっぱい。:2016/01/14(木) 00:28:18.48 ID:HGrpMuR70.net
>>858のような処理の際に、HTMLタグを綺麗に除去する方法はありますでしょうか?
正規表現だけではどうしても限界がありそうなので
なにか方法がないかと探しているのですが…

864 :名無しさん@お腹いっぱい。:2016/01/14(木) 01:31:00.84 ID:T6raRa5l0.net
綺麗に除去ってどういうこと?
普通に出来そうに思えるけど
今どうやって除去してどういう問題があるのか書かないと

865 :名無しさん@お腹いっぱい。:2016/01/14(木) 03:12:25.24 ID:HGrpMuR70.net
>>864
現在は、まだAHKで除去の段階にもいけていません…
HTMLタグ削除用によく見かける正規表現をテストしてみたのですが

<("[^"]*"|'[^']*'|[^'">])*>

RegExReplaceにこの正規表現を使うとエラーとなってしまい
テキストエディタで試してみてもJavaScriptの残骸や
改行を含むタグが残ってしまうので、綺麗に削除は出来ませんでした

866 :名無しさん@お腹いっぱい。:2016/01/14(木) 03:32:45.67 ID:9MRxzvmI0.net
エラーになるのは"をエスケープしてないからだけど
正規表現自体がわからないのはスレ違い
http://ahkwiki.net/RegEx

867 :名無しさん@お腹いっぱい。:2016/01/14(木) 03:35:53.38 ID:xSFAk4Bh0.net
その手のコードはちょくちょく書くけど(Rubyでだけど)

s=
(
<html>
<body>
hello
</body>
</html>
)

if RegExMatch(s, "<body>(.*)</body>", $)
{
body:=$1
msgbox,[%body%]
}

こういうテストコードを積み重ねて地道にやっていくしかない

HTMLのパースを真面目にやるのではなく
InStrとか普通の文字列処理関数を使って事前に不要なゴミ行を削除して
関係ありそうな行だけを抽出してから処理するとやりやすかったりする

そもそもの話として、タグを一括削除する必要はなく
RegExMatchでタグを含む特定パターンからデータを抽出したほうが良いと思う

868 :名無しさん@お腹いっぱい。:2016/01/14(木) 07:25:17.07 ID:xG1XgYA70.net
むしろタグ除去してしまうと該当箇所の特定が難しくならないか
やみくもに全テキスト抽出にこだわるより>867のいうように
必要部分にピンポイントでMatchかけたほうがいいと思う

869 :名無しさん@お腹いっぱい。:2016/01/14(木) 11:01:12.65 ID:JPvGa/xD0.net
正規表現が無理なら一行ずつIf文連発でもなんでもすればいいのでは

870 :名無しさん@お腹いっぱい。:2016/01/14(木) 11:40:20.36 ID:Bz9U5kHA0.net
グーグルキャッシュのテキストページ取得すりゃいいじゃん(鼻ほじ

871 :名無しさん@お腹いっぱい。:2016/01/14(木) 16:03:22.18 ID:HGrpMuR70.net
"のエスケープは""なんですね、勉強不足でした…
汎用性のある処理をと考えてしまったのですが
最初にタグを一括除去に拘らず、そのページに合わせて必要な部分を抽出する
という考え方の方が良さそうですね、ありがとうございました

872 :名無しさん@お腹いっぱい。:2016/01/15(金) 00:09:35.73 ID:FEPC6K1p0
Microsoft、JavaScriptエンジン「ChakraCore」をGitHubで公開 - ITmedia ニュース -
http://www.itmedia.co.jp/news/articles/1601/14/news062.html

米Microsoftは1月13日(現地時間)、予告通りJavaScriptエンジン
「ChakraCore」をGitHubで公開した。ライセンスはMIT License。

 ChakraCoreは、同社のWebブラウザ「Microsoft Edge」で採用する
Chakraのオープンソース版。ChakraとChakraCoreの主な違いは、
ChakraCoreはEdgeやUniversal Windows Platformのプライベート
バインディングを含まないことと、COMベースのChakraのAPIではなく、
標準化できる新しいAPIをサポートすること。

 JavaScriptの仮想マシン(VM)として作動し、さまざまなアプリケーションに内蔵可能という。

873 :名無しさん@お腹いっぱい。:2016/01/15(金) 00:30:47.60 ID:kTiE4/eQ0.net
何回やっても画像認識しない

874 :名無しさん@お腹いっぱい。:2016/01/16(土) 20:03:17.75 ID:370zvloy0.net
フルパスがフォルダかファイルか判断して
それぞれで別の動作させたいだけなんですけど
選択肢としてどういう方法がありますか?

875 :名無しさん@お腹いっぱい。:2016/01/16(土) 20:07:36.76 ID:P+8bCcO30.net
>>874
https://sites.google.com/site/autohotkeyjp/reference/commands/FileExist

876 :名無しさん@お腹いっぱい。:2016/01/16(土) 22:26:38.90 ID:370zvloy0.net
ありがとうございます、助かりました

877 :名無しさん@お腹いっぱい。:2016/01/20(水) 14:18:56.01 ID:Vy2EyGJW0.net
test

878 :名無しさん@お腹いっぱい。:2016/01/21(木) 02:03:37.69 ID:IRmPZgiw0.net
>>7
インライン化
~~~~~~~~~~~~

てなんですか?おっしゃるようにIE11ではIME_AHK で
IME_ON(WinExist("A"), False) とやっても動いてくれませんね。(chrome ならうごきます)

879 :名無しさん@お腹いっぱい。:2016/01/21(木) 11:57:24.40 ID:GeUu2I7K0.net
インライン入力とは入力中の文字をカーソル位置に直接挿入表示する機能
IME.ahkではIME窓の有無で文字の入力・変換状態を見るIME_GetConverting()関数でのみ
インライン時に情報が取れないが、ON/OFFの状態取得や制御では基本問題はない
IE11やMETOROアプリでは他にも動かない報告があるがインラインとは別の問題と思う
(IME.ahkが使ってるimm32は古いAPIなので最近のOSではサポートしなくなってきてるのが原因の模様)


それと解決の足しにはならないかも知れないが
>IME_ON(WinExist("A"), False)
関数名やパラメータ数見るに旧verのime.ahkを改造した派生版を使っているのかな
最新verでは64bitやUNICODE対応などしてるので一度ソースを確認してみることをおすすめ
http://www6.atwiki.jp/eamat/pages/17.html

880 :名無しさん@お腹いっぱい。:2016/01/22(金) 04:25:31.30 ID:NR9XtF0x0.net
お知恵を拝借させて頂きたく質問させて頂きます。
当方、現行の高級言語プログラミングはおろかMATLAB、Scilabを扱うのも不得意な程の門外漢ですが
ご教授頂けるとありがたいです。
wとdを同時押しした時に:が入力されるようにと.ahkファイルに
以下の命令文を記入したのですが、下の命令だとwとdを押しっぱなしにしてもwやdが連続して入力出来ませんでした。
wとdを同時に長押しした場合は::::::::::::…と連続入力が有効になっているのですが・・
以下の命令を如何様に変えればwとdの連続入力との両立が可能になるのでしょうか。
お手数ですがご返信頂けるとありがたいです。
「.ahkに記載した命令」
w & d::Send,:
d & w::Send,:
$w::Send,w
$d::Send,d

・蛇足
wやdを押すとどうやら同時押しで:の出力命令が来ないか待機状態になっているようで
wやdを押しっぱなしにした時のdddddddddddddddd・・・といった連続入力が拒まれてる様に感じました

881 :名無しさん@お腹いっぱい。:2016/01/22(金) 07:53:07.02 ID:pizC+ooE0.net
>>879
リンク先の新版で解決しました。

;旧版IME_ON(WinExist("A"), False) はIE11では駄目で
;リンク先、IME_SET(setsts,WinTitle="A"){...}を入れたうえで、IME_SET(0)で直接モード、余裕でした

882 :名無しさん@お腹いっぱい。:2016/01/22(金) 08:02:25.37 ID:9ucgqHg40.net
>>880
蛇足に書いている通り、同時押しを待つモデファイキーとして待っているので両立しようとすると無理。

~w::

883 :名無しさん@お腹いっぱい。:2016/01/22(金) 08:07:26.73 ID:9ucgqHg40.net
途中で書き込まれた

~w::
keywait,w,T1
flag=1
以下略

みたいに1秒長押しした場合にflagを立てて send,w をloopさせて連打させたりはできるけど
他に w を使ったショートカットキーにも同様の処理を割りこませる必要が出てくるので
一般的な文字入力を必要とするアプリケーションソフトではやめたほうがいいと思う。

>>4を参考にひらがな(かたかな)キーにF13を割り当ててそれをモデファイキーとして利用したほうが現実的。

884 :名無しさん@お腹いっぱい。:2016/01/22(金) 18:09:39.92 ID:w5FiNfPB0.net
質問させてください
ある動作を「何時何分に動かす」っていう記述あります?

885 :名無しさん@お腹いっぱい。:2016/01/22(金) 19:08:01.82 ID:54WbWovf0.net
SetTmerで一秒ごとに現在時刻確認して指定時刻になったら ある動作 を実行させてやればおk

886 :名無しさん@お腹いっぱい。:2016/01/23(土) 16:13:16.05 ID:itRRLNJw0.net
>>885
変な方法教えるなよ。そういう用途ならWindowsのタスクスケジューラに
決まった時間にある動作.ahk みたいなの登録するのが普通。

887 :名無しさん@お腹いっぱい。:2016/01/23(土) 16:56:54.97 ID:RR91zbbS0.net
「何時何分に動かす」の部分をAHKでやりたいのかと思ったんだが違うの?

888 :名無しさん@お腹いっぱい。:2016/01/23(土) 17:24:36.46 ID:L0xsvXha0.net
「ある動作」がahkで記述してるってだけの話だろ
「何時何分に動かす」の部分はahkでやろうとタスクスケジューラでやろうと結果は同じじゃん
その上でどちらがスマートな方法かと言ったら断然スケジューラ

889 :名無しさん@お腹いっぱい。:2016/01/23(土) 17:32:16.06 ID:uiYEBCKU0.net
記述あるかと聞いてるんだからまずAHKで書けるかどうかを答えるべき
けどその方法では問題があるというなら別の解決法を添えればいい
普通だのスマートなんて価値観の押し付けは不要

890 :名無しさん@お腹いっぱい。:2016/01/23(土) 17:43:29.90 ID:L0xsvXha0.net
>>889
どう見てもお前の屁理屈のほうが押しつけがましい

891 :名無しさん@お腹いっぱい。:2016/01/23(土) 20:53:55.78 ID:vMem4HaY0.net
883です
なんかすみません
両方とも助かりましたありがとうございました

892 :名無しさん@お腹いっぱい。:2016/01/23(土) 20:54:27.95 ID:mpcUbpeV0.net
なんだなんだw今度はタスクスケジューラくんかよww
そんなこと誰も聞いてねえだろwやめてくれw

通常のアプリケーションの実装でタスクスケジューラ前提のほうが珍しいわw
スマートだと言えるのは細かい制御する必要ない場合だけだろ
活用してんのは構わないけどそれを常識として語るなよ
まずスレタイ100回読み直せ

893 :名無しさん@お腹いっぱい。:2016/01/23(土) 20:57:26.87 ID:JRTkHas30.net
いちいち終わった話を蒸し返してファビョるガイジ

894 :名無しさん@お腹いっぱい。:2016/01/23(土) 21:08:30.16 ID:mpcUbpeV0.net
>>891
大丈夫全然謝る必要ない
日時を取得する変数が用意されてるから、SetTimer以外でもLoopでもできるしどうにでもなる
どういう実装するかは何を優先するかによるんで
とりあえずサンプル見ながら組んでみたらいいよ

あとリファレンスに目を通すのは基本なので
大した量もないので眺めるだけでいいから一通り目を通したほうがいいよ
色々アイデア浮かぶこともあるし

895 :名無しさん@お腹いっぱい。:2016/01/23(土) 21:35:58.46 ID:htKJK86V0.net
XP時代に時刻実行スクリプト組んでたな懐かしい
当時はメモリ節約のためにタスク(スケジューラ)はサービスごとKILLしてたっけ
あとAHK内でやるのはポータブルでも動かせるという利点もあった

888は屁理屈じゃなくまっとうな意見だと思う

896 :名無しさん@お腹いっぱい。:2016/01/24(日) 16:26:31.52 ID:E6/fC1wu0.net
お世話になります。

文字列変数中にある全角英数字(と若干の記号類)をすべて半角にしたいのですが、
StringReplaceをズラズラ並べるよりもスマートな方法はないでしょうか。

どういう目的でそのコードを書きたいかというと、Windows Media Playerで
音楽CDの曲名情報を取得すると全角英数字で書かれていることが多いので、
MP3ファイルに吸い出す前に半角英数字に書き換えたいのです。
#l::
  Send ^a^c
  Sleep 200
  s := Clipboard

  ; ↓ここを何とかしたい
  StringReplace s, s, 0, 0, All
  StringReplace s, s, 1, 1, All
    :
  StringReplace s, s, }, }, All

  ; 一部の文字は逆に全角にする
  StringReplace s, s, ", ”, All
    :
  StringReplace s, s, ~, 〜, All

  Clipboard := s
  return

宜しくお願いします。

897 :名無しさん@お腹いっぱい。:2016/01/24(日) 16:48:52.65 ID:w149VZ2+0.net
検索文字と置換文字の配列をそれぞれ作って、ループ内で取り出して置換する

898 :名無しさん@お腹いっぱい。:2016/01/24(日) 16:54:07.15 ID:lsQU9n1K0.net
文字コードで足し算引き算

899 :名無しさん@お腹いっぱい。:2016/01/24(日) 16:55:41.81 ID:N/7IsEzU0.net
>>896
過去ログに大量の例がある

AutoHotkey スレッド part18
http://anago.2ch.net/test/read.cgi/software/1398655195/

900 :名無しさん@お腹いっぱい。:2016/01/24(日) 16:58:53.68 ID:E6/fC1wu0.net
>>897 ありがとうございます。やってみます。

言われてみれば、AHKなら置換前後の文字をループで供給して、
各文字ごとにStringReplaceができるんですよね。
そういう関数のないVBで実装するときのこととか、対応表が循環になっている
(たとえば tr/abc/bca/)場合にも正しく動くコードの書き方とかが念頭にあって、
この単純な方法をすっかり忘れていました。

ありがとうございました。

901 :名無しさん@お腹いっぱい。:2016/01/24(日) 17:00:10.78 ID:lsQU9n1K0.net
つかこのスレ内にあるじゃん

902 :名無しさん@お腹いっぱい。:2016/01/24(日) 17:02:57.18 ID:E6/fC1wu0.net
>>898 それは考えましたが、「ファイル名に使えない文字は逆に全角にし、
個人的趣味で個別判断したい文字はそのまま残す」をどう実装しようかと
考えあぐねていました。

>>899 >>901 失礼しました<(_ _;)>

903 :名無しさん@お腹いっぱい。:2016/01/24(日) 18:38:05.78 ID:iXvoY6Eo0.net
自分は全角から半角へは文字コードの足し算か引き算するやつ使って
ファイル名に使えない半角文字は全角に変えるものはまた別の関数として使ってる

904 :名無しさん@お腹いっぱい。:2016/01/24(日) 19:04:43.56 ID:FursUQfA0.net
タイトルにアスタリスクやダッシュを入れるアーティストは頭おかしいと思います

905 :名無しさん@お腹いっぱい。:2016/01/24(日) 20:39:33.75 ID:E6/fC1wu0.net
>>904
アスタリスクはまだ見たことがないけど、「?」とか「"」とかは普通にあるよ。

906 :名無しさん@お腹いっぱい。:2016/01/24(日) 21:20:14.89 ID:U3+d6ej30.net
それよかハートとかやめてくれ
ファイル名にUNICODEは使いたくないんや

907 :名無しさん@お腹いっぱい。:2016/01/25(月) 07:27:11.66 ID:wRNL+t4E0.net
うpろだのClipboardHistory.ahk(16/01/23)を使わせてもらってるのですが
履歴に2重に登録される時がある。
おま環かもしれないけど一応ご報告。

908 :名無しさん@お腹いっぱい。:2016/01/25(月) 22:52:30.16 ID:1BsX6h3F0.net
>>907
FIFOモード時以外は重複登録しないように修正しました
ただクリップボードの変な使い方をするアプリと相性が悪いので直ってないかもしれません
あと定型文テンプレートの形式などもちょっと変更してます

http://ux.getuploader.com/autohotkeyl/download/88/ClipboardHistory.ahk 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


909 :名無しさん@お腹いっぱい。:2016/01/26(火) 00:05:17.91 ID:dSuTW03G0.net
スレチかもしれません

Windows10にしたりWindows7に戻したりしているうちに
ビープ音(Beep)が鳴らなくなってしまったんですが
どこに問題があるのでしょうか?

910 :名無しさん@お腹いっぱい。:2016/01/26(火) 09:52:07.72 ID:6jBbM5ka0.net
>>908
頂きました。
問題ないようです。

前バージョンでもClipChanged()のSleep,50で大丈夫だったので
様子を見ていました。

ありがとうございました。

911 :名無しさん@お腹いっぱい。:2016/01/26(火) 10:14:35.32 ID:TtZSMCWk0.net
もう新関数使ってんのかー

912 :名無しさん@お腹いっぱい。:2016/01/26(火) 18:59:12.44 ID:nJYcGfOp0.net
進んでるなぁ

913 :名無しさん@お腹いっぱい。:2016/01/28(木) 00:22:53.52 ID:IbXPK9wi0.net
画像の大きさを取得して、縦長横長それぞれの場合の処理をさせたいのですが
AHKでJPG画像の大きさを調べる方法ってありますか?

914 :名無しさん@お腹いっぱい。:2016/01/28(木) 00:59:26.15 ID:IbXPK9wi0.net
すいません自己解決しました。
GDI+の機能を使って縦横を取得できるみたいです。
失礼しました。

915 :名無しさん@お腹いっぱい。:2016/01/28(木) 15:41:31.08 ID:VNtB2bWu0.net
InputBoxで何か1文字を押した瞬間、Enterで確定することなく制御を返す方法を教えて下さい

916 :名無しさん@お腹いっぱい。:2016/01/28(木) 21:25:47.11 ID:sfTIy2l50.net
InputBoxじゃあ難しいと思う
自分でエディット付きのguiを作ればGオプションで文字を入力する度に実行するラベルを設定できるよ
ttp://ahkwiki.net/Gui,Add,Edit

917 :名無しさん@お腹いっぱい。:2016/01/30(土) 17:15:46.29 ID:Cg8NniH20.net
お尋ねします。
Windows 10 64ビットに、AHK Ansi 32ビット Ver1.1.16.5の組み合わせなのですが、
以下のスクリプートを実行した際に、表示されたウインドウ下に数ドットのズレが生じます。
モニターの範囲全てを、AHKで作成したウインドウで覆い尽くすにはどうしたらよろしいでしょうか?。
よろしくお願いしします。

Gui, Color, FFFFFF
Gui, Show, w%A_ScreenWidth% h%A_ScreenHeight%, Window

918 :名無しさん@お腹いっぱい。:2016/01/30(土) 17:28:14.85 ID:mzUer4wq0.net
>>917
ちんこ隠すのにグーで隠すよりパーで隠す方が良いでしょ?

919 :名無しさん@お腹いっぱい。:2016/01/30(土) 17:30:22.31 ID:mzUer4wq0.net
あ何言ってんだオレ
>>918は撤回
スレ汚しごめん

920 :名無しさん@お腹いっぱい。:2016/01/30(土) 18:13:37.17 ID:Cg8NniH20.net
916です。
すみません、何とか修正できました。

921 :名無しさん@お腹いっぱい。:2016/02/01(月) 01:45:42.02 ID:0LHeXQek0.net
GUIのウインドウの出現位置がうまく変更できません。
一番左上に表示させたいのですが
Gui,Add,Button,1
Gui, Show,w0 y0 h281 w323,タイトル名
と書いても水平座標の指定がうまくいかず、画面の中央上部に表示されてしまいます。
どこがいけないんでしょう?

922 :名無しさん@お腹いっぱい。:2016/02/01(月) 01:51:36.23 ID:XQSyaXSF0.net
w0

923 :名無しさん@お腹いっぱい。:2016/02/01(月) 02:17:31.63 ID:rMuDCPig0.net
>>921
相対座標 絶対座標
を調べよう

924 :名無しさん@お腹いっぱい。:2016/02/01(月) 09:58:34.74 ID:0LHeXQek0.net
すいません、できたらもう少しヒントお願いします
CoordMode, Menu とか追加してもダメでした

925 :名無しさん@お腹いっぱい。:2016/02/01(月) 10:11:45.86 ID:u61OUv0O0.net
Gui, Show,w0 y0 h281 w323,タイトル名

Gui, Show,x0 y0 h281 w323,タイトル名

じゃなくて?

926 :名無しさん@お腹いっぱい。:2016/02/01(月) 10:55:02.94 ID:xb/bkuRj0.net
>>924
それだけだと初期設定の相対座標のままだから意味無い

927 :名無しさん@お腹いっぱい。:2016/02/01(月) 18:08:15.14 ID:0LHeXQek0.net
>>922-925
あっxとwを間違えてたとは……
目と頭が悪くてすいません。
皆様ありがとうございました。

928 :名無しさん@お腹いっぱい。:2016/02/06(土) 18:46:51.84 ID:gHQi2V4M0.net
すみません質問です
DllCallを試しているんですが、パフォーマンス改善の部分でwikiに訳されていない以下のような記述があって

ttps://autohotkey.com/docs/commands/DllCall.htm#load
[v1.0.90+]:
If DllCall's first parameter is a literal string such as "MulDiv"
and the DLL containing the function is ordinarily loaded before the script starts,
the string is automatically resolved to a function address.
This built-in optimization is more effective than the example shown above.

これに該当しそうな更新履歴がv1.0.90ではなくv1.0.48.04.のとこに

Revision 31 - September 26, 2009
Optimization:
If DllCall's first parameter is a literal string which identifies a function already present in memory,
it is replaced with the actual address of the function.

とあるんですが、これは要するに
DllCallの第1引数にDLLとそこに含まれる関数っぽい文字列があったらスクリプト起動時に自動でロードするよ
前みたいに手動でロードしなくてもパフォーマンスいいよってことなんでしょうか?

929 :名無しさん@お腹いっぱい。:2016/02/07(日) 14:24:53.95 ID:yl/DmUMO0.net
スクリプト開始前に標準でロードされる kernel32 や user32 とかに含まれる関数についての記述じゃない?

930 :名無しさん@お腹いっぱい。:2016/02/08(月) 01:58:02.63 ID:PlMBdE7f0.net
指定したURLに接続する為に、バックグラウンドで処理できるコマンドってありますか?。
RunコマンドにHideをつけても、既定のブラウザが起動してしまいます(当然ですが)。
よろしくお願いします。

931 :名無しさん@お腹いっぱい。:2016/02/08(月) 08:34:49.94 ID:+XgCSbhF0.net
>858-862は?

932 :名無しさん@お腹いっぱい。:2016/02/08(月) 09:48:49.65 ID:iHqSQtrr0.net
データ読みたいだけならurldownloadコマンドでローカルに落としたhtmlファイルを使うのもあり

933 :名無しさん@お腹いっぱい。:2016/02/08(月) 14:26:08.15 ID:PlMBdE7f0.net
>>931-932
ありがとうございます、試行錯誤してみます。

934 :名無しさん@お腹いっぱい。:2016/02/08(月) 16:12:38.46 ID:Qal8acFS0.net
>>933
何したいのかわかないけど、このスレ上の方で出てきた
UrlDownloadToVar()
を使うとか、
ie := ComObjCreate("InternetExplorer.Application")
してIEを使とかで何かはできると思う

935 :名無しさん@お腹いっぱい。:2016/02/08(月) 17:37:58.23 ID:f9683+hK0.net
以下のページのスクリプトとの組み合わせで、やりたい事が出来ました。
https://autohotkey.com/board/topic/9529-urldownloadtovar/
どうもありがとうございました。

936 :名無しさん@お腹いっぱい。:2016/02/09(火) 20:59:15.43 ID:cUzoOyiz0.net
>>929
そこの辺はPerformanceの最初の1〜2行あたりに書いてあるので違うみたいです

"MulDiv"みたいな文字列をDllCallの第1引数に書けみたいにあるんですけど
実際にDllCall("MulDiv",〜)みたいなサンプルがなくてちょっと判断つかないんです

937 :名無しさん@お腹いっぱい。:2016/02/11(木) 11:18:41.52 ID:nGhsXvH/0.net
1つの条件に当てはまる複数のウインドウ(やプロセス)の全部に同じ処理をしたいのですが
そういう処理のコードの定型というかひな形ってどこかにないでしょうか
URLを出さないで「こういうワードでぐぐると出るんじゃない」で良いです

938 :名無しさん@お腹いっぱい。:2016/02/11(木) 12:16:22.17 ID:x7MngUCr0.net
>>937
GroupAdd ifWinActive ahk_group
とか、かな

939 :名無しさん@お腹いっぱい。:2016/02/14(日) 08:43:30.59 ID:I76FbWwN0.net
スクリーンキーでautohotkey使いたいんだけど、スクリーンキーをハードキー
互換にすると動作するけど標準の、キーが大きい奴にするとダメみたい。
互換キー打ちづらいんで標準ので使いたいんだけど無理なの?

940 :名無しさん@お腹いっぱい。:2016/02/14(日) 23:46:40.69 ID:A98Q66fu0.net
OSの言語設定が日本語だとKindle for PCというアプリで
Ctrl+Cによる選択テキストのコピーが出来なくなるというしょうもない制限が加えられてるんだけど
AutoHotKeyでなんとか選択テキストを取得する方法があったら教えて下さい。

範囲選択-検索-エディットボックス全選択-コピー

という手順で一応はできるもののマウス操作が必須になるのでかなり面倒なので
直接テキストを取得したいです。

941 :名無しさん@お腹いっぱい。:2016/02/15(月) 00:27:28.20 ID:IFXE4lNi0.net
なんと投げやりな質問の連投だ

942 :名無しさん@お腹いっぱい。:2016/02/15(月) 11:34:02.86 ID:OfdliztE0.net
>範囲選択-検索-エディットボックス全選択-コピー

Kindle使っとらんがこの動作をそのままエミュればできるんじゃろ?
メニューにアクセラレータついてるならキーボードショートカット投げればいいし
ないならMouseClickで頑張ればいけるいける(無責任)

943 :名無しさん@お腹いっぱい。:2016/02/18(木) 00:26:40.08 ID:kLB4w16r0.net
あげ

944 :名無しさん@お腹いっぱい。:2016/02/19(金) 15:56:02.02 ID:72zKpX180.net
Windows10でモダンアプリを全画面表示させるにはどうすればいい?
最大化ならWinMaximizeで出来るけど、全画面表示はわからなかった
最小化の左側にある斜めの両端矢印押してなる状態にしたいです(戻すのも判れば是非

945 :名無しさん@お腹いっぱい。:2016/02/20(土) 09:11:54.59 ID:O1A3N3uo0.net
joyボタン押したらsend,rで押下sleep100のあとsend,eでjoy離すまで両方押下し続け
joy離したらrとe解除ってのがうまくいかないんだが解決方法がわからない
joy離したあともrとeが押された状態になってしまう

946 :名無しさん@お腹いっぱい。:2016/02/20(土) 09:17:45.54 ID:Q8HPZ8rz0.net
添削してほしいならソース貼らないと

947 :名無しさん@お腹いっぱい。:2016/02/20(土) 11:01:15.37 ID:O1A3N3uo0.net
>>946
ごめんなさい いろいろやってるうちに事故解決した

948 :名無しさん@お腹いっぱい。:2016/02/20(土) 19:54:27.11 ID:2p5n/pNH0.net
>>947 何でハマっていて、何をやったら解決したの?
わかる範囲でいいからきちんと報告するのが、
質問を取り下げる際のマナーかと。

949 :名無しさん@お腹いっぱい。:2016/02/23(火) 21:23:05.45 ID:Xp9y/2LK0.net
InStr(String, Needle [, CaseSensitive=false, StartingPos=1, Occurrence=1])
これのNeedleのとこって変数を%で囲ったやつってつかえないんですか?

950 :名無しさん@お腹いっぱい。:2016/02/23(火) 21:30:20.32 ID:+Po+jle40.net
関数は式の一種
つまり変数は展開される
%で囲うと二重展開になる

951 :名無しさん@お腹いっぱい。:2016/02/23(火) 21:49:59.79 ID:utaToXHm0.net
使えるよ

952 :名無しさん@お腹いっぱい。:2016/02/23(火) 22:42:59.53 ID:Xp9y/2LK0.net
>>950
%で囲わなきゃつかえるんですか?試しにやってみたらだめでした。

953 :名無しさん@お腹いっぱい。:2016/02/23(火) 22:52:30.21 ID:utaToXHm0.net
使えると言っとろーが

a := "b"
b := "2"
msgbox, % Instr("12345",%a%)

954 :名無しさん@お腹いっぱい。:2016/02/24(水) 00:28:32.30 ID:/XAaOF2n0.net
>>953
ありがとうございます。もうひとつ質問なんですけどNeedleのとこに存在しない変数をいれると1が返ってくるのはなんでですか?

955 :名無しさん@お腹いっぱい。:2016/02/24(水) 16:03:07.71 ID:wI3EFvuP0.net
Cのstrstrあたりのnullだった場合常に先頭アドレスを返す仕様に合わせたとかじゃない?

956 :名無しさん@お腹いっぱい。:2016/02/24(水) 17:51:02.18 ID:4O1lOWZS0.net
ControlClick, TrayClockWClass1, ahk_class Shell_TrayWnd, , LEFT, 1, NA, ,

タスクトレイの蕎麦の時計を表示させるホットキーを作りたくてControlClickを上のように使ってみたんですが
上手くいきません(クリックはされるが時計が表示されない)

DetectHiddenWindows, On
DetectHiddenText, On
SetControlDelay, -1
などの設定も加えてみたけどダメでした

ClickやMouseClickを使うとちゃんと時計が表示されますが
マウスカーソルも一緒に動いてしまうのでできればControlClickを使いたいです

どこが悪いんでしょうか?
バージョン1.1.23.01
OSはVistaです

957 :名無しさん@お腹いっぱい。:2016/02/24(水) 23:34:16.66 ID:mEzqiII20.net
すみませんお尋ねします。
以下の場合ですと、abcdがあった場合の処理になりますが
If Hensuu in a,b,c,d
これを逆の意味にしたい場合はどうすればよろしいでしょうか?。
inの後に!付けてみたりしましたけど、出来ませんでした。
よろしくお願いします。

958 :名無しさん@お腹いっぱい。:2016/02/24(水) 23:48:23.57 ID:j9b25chj0.net
inは完全一致
not contains

959 :名無しさん@お腹いっぱい。:2016/02/24(水) 23:49:10.64 ID:NZu0JMtd0.net
逆の意味の意味が分からない

960 :名無しさん@お腹いっぱい。:2016/02/24(水) 23:56:20.24 ID:TQHwr7NV0.net
逆の意味の意味が分からないの意味が分からない

961 :名無しさん@お腹いっぱい。:2016/02/25(木) 00:07:26.14 ID:aWMHhlsY0.net
>>958
これでやっとやりたい事が出来ました!本当に有難うございます。

962 :名無しさん@お腹いっぱい。:2016/02/26(金) 23:37:19.06 ID:c3dUApig0.net
AHKでIEにユーザースタイルシートを適用させる方法ってありますか?
ページごとに毎回カスタムしたcssを適用させて表示させたいんですけど
COM?か何かで簡単にできないでしょうか。

963 :名無しさん@お腹いっぱい。:2016/02/27(土) 06:32:55.36 ID:s4FqRL8E0.net
お世話になります。
あるホットキーを押したあと、modifier keys(Windowsだと何て言うんだろう)を
いったん離さないと同じホットキーが再度実行されません。

具体的には、
!#@::RunWait "C:\Users\taro\bin\臨時.ahk"
という記述を含むスクリプトを常駐させています。

で、Alt+WinL+@ を押すとこの臨時スクリプトが実行されるのはいいのですが、
AltとWinを押しっぱなしのまま @ だけを離し、再度 @ を押しても反応しません。
AltとWinも離してから再度 Alt+Win+@ を押すと実行されます。

これはAHKなりWindowsなりの仕様でしょうか、それとも何か対策があるのでしょうか?

#ところで、そろそろ次スレの時期ですね。
#このテンプレで私が建てるのは荷が重いので、どなたかお願いします。

964 :名無しさん@お腹いっぱい。:2016/02/27(土) 06:34:04.60 ID:s4FqRL8E0.net
> で、Alt+WinL+@ を押すと
Alt+WinL+@ ですね。失礼しました。

965 :名無しさん@お腹いっぱい。:2016/02/27(土) 07:47:35.49 ID:q2kyzV5F0.net
winやaltなどのモデファイアキーはキーリピートしない
押しっぱなしで反応させたいなら
#if getkeystate() でwinlとaltが押されてる時だけ@::が効くようにする


次スレはすでに立っている
AutoHotkey スレッド part22 [無断転載禁止]©2ch.net
http://potato.2ch.net/test/read.cgi/software/1452881399/

966 :名無しさん@お腹いっぱい。:2016/02/27(土) 08:36:50.59 ID://5bYKsR0.net
!#@::ToolTip, %A_MSec%
Alt+Win押しっぱなしでも動くよ
前の臨時スクリプトが終わってないとか?

本スレになりそこねたpart17のことも忘れないでやってください
http://potato.2ch.net/test/read.cgi/software/1383489925/

967 :名無しさん@お腹いっぱい。:2016/02/27(土) 11:18:49.95 ID:q2u7+W5a0.net
リンクを自動クリックしたいんだけど文字列をクリックする方法を教えてくれませんか
せめてヒントを

968 :962-963:2016/02/27(土) 11:43:50.58 ID:s4FqRL8E0.net
>>966
> Alt+Win押しっぱなしでも動くよ
> 前の臨時スクリプトが終わってないとか?
うーむ。
投稿してから気づいたんですけど、他のホットキーも、
終わる前にAltを離すと効いてくれないことがあるんです。
もしかしたら、そのホットキーでAltとかCtrlとかの
キー操作をしているからかもしれませんね。
あとは前のほうで変な記述をしてしまっているとか。

>>965 次スレ(とpaqrt17も)、ありましたか。早速ブックマークしますた。

969 :名無しさん@お腹いっぱい。:2016/02/27(土) 11:47:17.61 ID:s4FqRL8E0.net
>>967 一応MouseMoveとかコマンドはあるけど、ウェブブラウザの話でしょ?
どこかにフォーカスしてからTabの繰り返しで当該リンクに移動して、
Send {Space}あたりでリンクをたどるのが無難そう。
AHKスレで言うのもなんだけど、マウス操作ならUWSCのほうが重度が高いと思う。

970 :名無しさん@お腹いっぱい。:2016/02/27(土) 19:39:00.38 ID:NpPpvizx0.net
VBAでIE制御するようなとこ見たら、なんかAHKでもできそうな気がした
まぁ、UWSCならIE制御機能があるから、そっち使えってのは同意

971 :名無しさん@お腹いっぱい。:2016/02/29(月) 12:28:08.70 ID:Zb0MnwRD0.net
Windows7でFirefoxを使っているのですが、メニューバーや右上の最大最小ボタン、終了ボタン、ステータスバー等すべて
なくして、周りの細い枠だけにしたいのですが、AHKで出来ますか。
また、Escキーを押すと、もとに戻す、みたいなことをしたいのです

972 :名無しさん@お腹いっぱい。:2016/02/29(月) 17:20:39.05 ID:jXgG2oK20.net
>>967
クリックじゃないとダメ?
ソースコードからリンクのURL読みとってRunで起動するとかはどうよ

973 :名無しさん@お腹いっぱい。:2016/02/29(月) 17:36:14.98 ID:/ACyuXg30.net
>>971
ウィンドウスタイルを変更すれば出来そうだね
WinSet, Style, -0xC40000, ウィンドウクラス
例えばこれはウィンドウ枠を非表示にする
詳しくはWikiで検索

974 :名無しさん@お腹いっぱい。:2016/03/01(火) 04:24:00.86 ID:ne5377Jg0.net
テキストから2chのレス番号+日付+IDの行全体を抽出して"名無し"に書き換えることは可能でしょうか
正規表現を使って特徴的な文字列を抽出しその部分だけを置換することはできたのですが行全体を置換する処理がわかりません
hogehoge := RegExReplace( hogehoge, "20\d\d/\d\d/\d\d\(.\)\s\d\d\:\d\d\:\d\d\.\d\d\sID\:", "名無し")

975 :名無しさん@お腹いっぱい。:2016/03/01(火) 07:09:01.30 ID:HF5AuRBD0.net
Wikiとかで RegExReplaceの構文を見ると解決すると思うよ

976 :名無しさん@お腹いっぱい。:2016/03/01(火) 08:10:47.24 ID:JlOZDt3R0.net
^.*$あたりの文字表現組み合わせればできる
行またがないなら難しくないから自分で調べてやってみ

この後ズバリの構文書いてくれる人が出てくるかも知れんけど
専ブラだとスキンで事前書き換えされてる場合もあるからマッチするかはわからんよ、と言っておく

977 :名無しさん@お腹いっぱい。:2016/03/01(火) 23:39:54.84 ID:4IW6kk2b0.net
>>974
^→行頭、$→行末、\n or \r→改行
この辺を最初と最後につければいいよ

978 :名無しさん@お腹いっぱい。:2016/03/02(水) 13:18:12.43 ID:G8mqzm2J0.net
たったいまインストールしました
AutoHotkey.exeたたくと英文ヘルプが開くだけ
これ正常?

979 :名無しさん@お腹いっぱい。:2016/03/02(水) 13:29:53.94 ID:ICfYF5in0.net
>>978
マニュアルも読めないなら使わない方がいい

980 :名無しさん@お腹いっぱい。:2016/03/02(水) 13:40:58.13 ID:G8mqzm2J0.net
なるほど 捨てるわ

981 :名無しさん@お腹いっぱい。:2016/03/02(水) 15:23:08.11 ID:TmGfNyxx0.net
exeたたくとドラえもんの絵が出てきて、声で質疑応答するだけでコード吐いてくれて、
なんでも叶えてくれるバージョンが出るまで待った方がいい

982 :名無しさん@お腹いっぱい。:2016/03/02(水) 18:03:23.79 ID:YyxPTPzz0.net
このスレの消化ペース的に、次スレは980が建てるくらいでも丁度いいくらいだな

983 :名無しさん@お腹いっぱい。:2016/03/02(水) 23:55:54.47 ID:FXsaWFES0.net
>>978
>AutoHotkey.exeたたくと
まさか頭叩いたんじゃないだろうな?
そりゃ怒ってへそ曲げるわ、尻叩けよ尻

984 :名無しさん@お腹いっぱい。:2016/03/03(木) 04:54:56.74 ID:pm9hwHKc0.net
つまらなすぎ、お前も使うのやめろ

985 :名無しさん@お腹いっぱい。:2016/03/03(木) 13:22:30.34 ID:ufDldIoC0.net
ほんとテンプレ誘導するだけでいいのになんで無意味に煽るんだろうね

986 :名無しさん@お腹いっぱい。:2016/03/03(木) 13:56:27.94 ID:Q76jowT40.net
まあ捨てるわって書き込まれた後だとどんなアドバイスも無駄ではあるが
頭の悪い叩きレスが続くとウンザリするな

987 :名無しさん@お腹いっぱい。:2016/03/03(木) 14:40:52.18 ID:oYDRVaNE0.net
この流れの、すべての原因は 「なるほど 捨てるわ」 だろ

988 :名無しさん@お腹いっぱい。:2016/03/03(木) 14:59:44.95 ID:uhvT3GF70.net
行儀の悪い一見客を叩くなとは言わんがドラえもんとか頭だ尻だと
読んでる方が恥ずかしくなる脱力煽りはやめて欲しいわ

989 :名無しさん@お腹いっぱい。:2016/03/03(木) 15:17:45.82 ID:WPsDe2Es0.net
A_OSVersion で、WIN_10が判定できないのですが、みなさんはどうやってますか?
WinMoveの座標や幅がWindows10では特殊なので判定したいと思うのですが。

990 :名無しさん@お腹いっぱい。:2016/03/03(木) 15:30:42.96 ID:oYDRVaNE0.net
>>989
うちでは普通に判定できてるから、ahkのバージョンを上げてみたら?
ちなみに10から表記にbuild番号が含まれるので、アップデートでころころ変わるはず。
ifinstringで判定した方がよいと思う

A_OSVersion=10.0.10240

991 :名無しさん@お腹いっぱい。:2016/03/03(木) 15:48:32.96 ID:WPsDe2Es0.net
ありがとうございます。バージョンを上げてみます。

992 :名無しさん@お腹いっぱい。:2016/03/04(金) 12:20:45.28 ID:nqr/1isu0.net
うめ

993 :名無しさん@お腹いっぱい。:2016/03/04(金) 12:23:01.83 ID:nqr/1isu0.net


994 :名無しさん@お腹いっぱい。:2016/03/04(金) 12:23:36.17 ID:nqr/1isu0.net


995 :名無しさん@お腹いっぱい。:2016/03/04(金) 12:38:39.04 ID:fL2QFAjG0.net


996 :名無しさん@お腹いっぱい。:2016/03/04(金) 13:59:20.74 ID:rBpRmPEZ0.net


997 :名無しさん@お腹いっぱい。:2016/03/04(金) 15:18:52.81 ID:AOhxcPLu0.net


998 :名無しさん@お腹いっぱい。:2016/03/04(金) 15:42:20.36 ID:gTzFd/Gr0.net
コンパイルしたexeを、Autohotkey.exeのように使う事は流石に無理ですよね?

999 :名無しさん@お腹いっぱい。:2016/03/04(金) 15:45:12.70 ID:7dQXD5Ga0.net
次スレ建ってから1か月半経過してようやくスレ消化か
さすがに早漏乙としか言いようがないな
http://potato.2ch.net/test/read.cgi/software/1452881399/

1000 :名無しさん@お腹いっぱい。:2016/03/04(金) 19:10:33.70 ID:QoXurBCJ0.net


1001 :名無しさん@お腹いっぱい。:2016/03/04(金) 19:13:43.06 ID:QoXurBCJ0.net
UMR

1002 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

1003 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1003
343 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★