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

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

AutoHotkey スレッド part19

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

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

■日本語解説等
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製、クロスプラットフォーム)
http://www.ironahk.net/
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/

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

オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/
 →http://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/index

※新規利用者には最新版を推奨しますが、旧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

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

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

3 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:31:34.38 ID:sCilm04c0.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/

以下FAQ等

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

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

4 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:32:28.26 ID:sCilm04c0.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/lib/sys/hardcust/keyboard/changekey.html )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  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 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:34:51.88 ID:sCilm04c0.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 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:35:22.44 ID:sCilm04c0.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 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:35:52.99 ID:sCilm04c0.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:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり

Q3:GUI作るのめんどくせ〜〜
A3:公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。

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

8 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:45:31.11 ID:sCilm04c0.net
Q5:AHK、AHKLx86、AHKLx64の共存は出来る?
A5:それぞれを違うフォルダ(ディレクトリ)にインストールすれば共存できます。
  但し、インストーラーを使って最後にインストールしたAutohotkey(Normal or x86 or x64)
  に対してahkファイルの関連付けが行われますので、レジストリエディタ(Regedit.exe)や
  FileTypesMan等のツールを使って関連付を変更してください。
  ahkファイルをAHK Normal、ahlファイルをAHKLx86、ah6ファイルをAHKLx64といったように
  別々の拡張子に関連付けが可能です。
  それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
  [HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler]
  の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。

Q6:Windows7(以降)の特定ウィンドウでAHKが効かないんだけど?
A6:XPは管理者(Administrator)としてログインすれば全てのソフトが「管理者権限」で起動して
  いましたが、Win7からは管理者でも基本的に「標準ユーザー」として起動するようになりました。
  これを回避する方法はAutohotkey.exeを右クリックして「管理者として実行」する。
  常に管理者として実行したいならAutohotkey.exeを右クリックしてプロパティを開き、「互換性」
  タブの一番下にある「管理者としてこのプログラムを実行する」にチェックを付けて「適用」。
  ちなみにユーザーアカウント制御(UAC)を無効にするとXPと同様に全てのソフトを常に管理者権限
  で実行できますが、セキュリティを著しく低下させる行為なので非推奨です。

■現時点でのAutohotkey最新バージョン
v1.1.16.04 - September 16, 2014

■AutoHotKey専用のエディター ※必須ではありあせん。
SciTE4AutoHotkey v3.0.06 - August 18, 2014
http://fincs.ahk4.net/scite4ahk/

参考 http://autohotkey.blog.fc2.com/blog-entry-119.html

9 :名無しさん@お腹いっぱい。:2014/09/22(月) 14:34:36.70 ID:30qFDOf20.net
                   //             /
                    .' ′       _ -厶==‐.
                l |         ´ /⌒     ` `
  . 、            | |     / //      \   \\
  \\  _        | |     '   /  | |   |
.    \,⊥∨      l l   .′    l | | | .ム斗ヽ ト     i   '.
      /ニヽ}\      从  | l    什ト、从|∧/リ }ノ | l / N  |  >>1
.    \‐У、 Υ     \ | |   |八l \|  =≠" И/ ハ|  |
      \ ヽ |         |从 八 =彡 ,      / /l.:  l |
.          '.  l          乂 \ト、ゝ         ≦z. イ|イ: : | |
          |  |          | 人    ^      |  | !: :   |
          |  |          人ハ个 .      . イ |  | |: : . '.
          |  '.              / | | |.: : :T__,. 斗/ |.:|.: : : ヘ
          |    .           / -| | |アヽイ卉ヽ ̄|′|\: : : :
         |    ∨    .ィ⌒ <  |.' 八_〃|| _,|  l   >‐ 、: .
.          .     ー ´ | |     / /  \    /|  |/   \:  \
                 | ト、     / / \/汁l<   |  |      \.  \
         ヘ._   -┴! \ / .′   / Ηヽ ` |  | /__       ̄| \
                 〉―‐/  i    / /l小 ヘ  |  | .′    ___ノ: .
                    /  .: :′ |    Y | | W  |  | __    / ヘ、: .  '.
                /   : :| |     || ||   | | ∧ ー―く/   \:
                  / /: : : :| |. |     L| L|   | |乂/.: : : : : : : :\    ヽ

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

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

11 :名無しさん@お腹いっぱい。:2014/09/22(月) 15:31:25.93 ID:TWZQl0Y50.net
★教えて君五大要素★

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



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

■回答できるレベルの人へお願い■

このスレは親切な人が多いと思うけど、もう日記に対する検証&レスは、
たとえ対処法をわかっている人がいても、レスは一切やめにしてくれないか?
こいつがやってることは

 「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
  学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」

ってことだ。しかも、一度だけならまだしも、何度も繰り返している。
これまでに、このスレではこの手の質問者は居なかったと記憶する。

いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。

12 :名無しさん@お腹いっぱい。:2014/09/22(月) 18:18:58.07 ID:p6lOg1se0.net
以下のスクリプトを作成しましたが、質問があります。
例えばテキストエディタ上で以下のスクリプトを実行した時に
行数や文字数が多いテキストがあると、全てのテキスト内容を取得出来ずに切れてしまいます。
全ての内容を取得するにはどうしたらいいでしょうか。
よろしくお願いします。

#c::
Gui, Destroy
WinGetTitle, title, A
WinGetClass, class, A
WinGetText, text, A
GUI, Margin, 0, 0
Gui, +AlwaysOnTop
Gui, Add, edit, xCenter yCenter, %title%`n`nahk_class %class%`n`n%text%
Gui, Show, , Window Class
Send, ^c
return

GuiClose:
reload

13 :名無しさん@お腹いっぱい。:2014/09/22(月) 18:41:40.53 ID:p6lOg1se0.net
>>12に追記
表示されたウィンドウ内のテキストが切れると言う意味です。
よろしくお願いします。

14 :名無しさん@お腹いっぱい。:2014/09/22(月) 20:03:53.86 ID:+lqQnBvw0.net
>>13
取得したテキストが半端で途中で切り捨てられているような場合は、このコマンドを実行する前に VarSetCapacity(OutputVar, XXX) としておくと効果がある
(XXX には欠けたテキストよりも十分に長いものにする)。
一部のアプリケーションはテキスト長を調べる WM_GETTEXTLENGTH メッセージに反応しないため、 このような事前の容量確保をしておく必要が生じる。
http://ahkwiki.net/WinGetText

15 : ◆T98aC7LCC. :2014/09/22(月) 20:06:13.00 ID:+lqQnBvw0.net
テンプレが古いので修正案を出しておきます。

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

>>4
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )

>>7
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 )

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

16 : ◆T98aC7LCC. :2014/09/22(月) 20:08:25.66 ID:+lqQnBvw0.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/

17 : ◆T98aC7LCC. :2014/09/22(月) 20:09:00.95 ID:+lqQnBvw0.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/

18 : ◆T98aC7LCC. :2014/09/22(月) 20:11:25.38 ID:+lqQnBvw0.net
>>8
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」に変更。

■スクリプト作成支援ツール
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

19 :名無しさん@お腹いっぱい。:2014/09/22(月) 20:39:58.86 ID:LhXBlblr0.net
Everything等で独自の関連付けするahkサブルーチンファイル作ってみました。良ければ使ってください
もっとスマートに出来るかも

http://ux.getuploader.com/autohotkeyl/download/46/Association.ahk

20 :名無しさん@お腹いっぱい。:2014/09/22(月) 21:03:09.18 ID:p6lOg1se0.net
>>14
コメント有難うございます。
早速チャレンジしてみます。

21 :名無しさん@お腹いっぱい。:2014/09/22(月) 21:19:06.45 ID:iyM3+SBr0.net
>>19
これは便利そうなのがいきなり来たな

22 :名無しさん@お腹いっぱい。:2014/09/22(月) 21:46:18.53 ID:ZP/8pA2I0.net
系譜こんなにあったのかよ
UとかHとか今知ったわ

23 :名無しさん@お腹いっぱい。:2014/09/22(月) 21:49:09.99 ID:LhXBlblr0.net
あ、サーセン。やらかしてた。
>>19の左クリック処理、ドラッグ選択からだと複数起動うまくいかないのでこう書き換えてください
サブルーチン側の問題じゃないんでここに書いときます。あんま重要でもないし

*Lbutton::
If(A_Priorhotkey = A_thishotkey && A_TickCount < WClick){
WClick :=
gosub,Association
}
click,L,D
keywait,Lbutton
click,L,U
WClick := A_TickCount+300
return

24 :952:2014/09/22(月) 22:25:42.48 ID:KL8RiTSL0.net
クリップボードの文字列の半角を全角に置換してファイル検索ソフトに送る方法で質問していた、前スレの952です。
本当に沢山の皆様からのレスありがとうございました。
つい最近スクリプトの知識が全くないまま作り始めたものだったので、
頂いたレスの半分も理解できませんが、自分が望む動作のスクリプトが形成できました。
返事が遅れて申し訳ないですが、レスを頂いた皆様、本当にありがとうございました。

25 :名無しさん@お腹いっぱい。:2014/09/23(火) 07:27:52.45 ID:R6s1s0Ph0.net
>>23
300だとダブルクリックの猶予ありすぎじゃね?ctrl押しながらだと暴発する
100くらいにして使います。ありがとう

26 :名無しさん@お腹いっぱい。:2014/09/23(火) 17:02:28.59 ID:UMdKa/N90.net
これでだいぶ欲しい機能満たしてきたな
追加機能のネタがなくなってきた

27 :名無しさん@お腹いっぱい。:2014/09/23(火) 17:54:00.28 ID:ujSp2SWr0.net
何でもできるなぁというか、何でも作るなぁというか……

28 :名無しさん@お腹いっぱい。:2014/09/23(火) 18:58:15.73 ID:YExVa2E50.net
最初はこれでもかとAHKの機能追加するけど、
そのうち安定すると全然いじらなくなる

マシンやキーボード・マウスあたりを新調したらまた弄るかもしれんけど

29 :名無しさん@お腹いっぱい。:2014/09/23(火) 19:06:11.57 ID:uEi9XvUs0.net
>>28
HHKBJP買ったらAHKの補助がないと使えないレベルだったんで急遽.ahk書いたわ
それでも使えなかったが。なんだあのクソ配列

30 :名無しさん@お腹いっぱい。:2014/09/23(火) 21:30:22.92 ID:Nat2IEXu0.net
公開されてる関数や実用スクリプトを「これは使えそう!」とか言って導入しても、
動作テストしたっきりで結局実使用しない事多いよな・・・俺だけかw

31 :名無しさん@お腹いっぱい。:2014/09/23(火) 22:29:11.35 ID:QI1cpnFL0.net
>>30
公開されてるまんまは流石にないけど、カスタムしてなら使ってるな

ソースコード読んでるとこんな簡単なやり方で実現できんのかとか、こんなコマンドあったのかとか勉強になる

ホイールの慣性スクロールは無くてはならないモノになってしまった
加速じゃなくてね

32 :名無しさん@お腹いっぱい。:2014/09/24(水) 07:29:22.32 ID:h+15TBzd0.net
>>19
これ、ひょっとするとと思って

#If (MouseIsOver("ahk_class EVERYTHING") or MouseIsOver("ahk_class CabinetWClass")) && !getkeystate("Rbutton","P")

enter::
ControlGetFocus, editclass
If(editclass == "Edit1"){
send,{enter}
}else{
gosub,Association
}
return

*Lbutton::
If(A_Priorhotkey = A_thishotkey && A_TickCount < WClick){
gosub,Association
}
click,L,D
keywait,Lbutton
BlockInput,On
click,L,U
WClick := A_TickCount+150
BlockInput,OFF
return

#If

って書き換えたら普通にエクスプローラ上ですら独自関連付けできた

33 :名無しさん@お腹いっぱい。:2014/09/24(水) 07:53:10.30 ID:h+15TBzd0.net
あ、この条件だとちょっと挙動危ないな
If(editclass == "Edit1")

If RegExMatch(editclass, "^Edit\d+$") or RegExMatch(editclass, "^DirectUIHWND\d+$")
こうした方がいいかも。文章入力を求めるクラスでまで関連付けサブルーチン動いちゃ駄目だし

ControlGetFocus, editclass
Clipboard := editclass
msgbox,%editclass%
で確認できるから状況に合わせて追加していくべきかも

34 :名無しさん@お腹いっぱい。:2014/09/24(水) 09:11:54.64 ID:h+15TBzd0.net
あと、これで気になる点は最後だからついでに書いておくわ
サブルーチン内部の最後の行。ここは
else
{
send,{enter} ;全てに当てはまらなかったので普通にエンターを発行して起動
}

こうしたほうがいいと思う
else
If(fileEx == "") ;フォルダパス
{
 run,explorer.exe "%A_LoopField%"
}
else ;標準関連付けでそのまま起動
{
 run,%A_LoopField%
}

理由は複数行あった場合その回数だけenterを発行しちゃうから
2つのフォルダを選択してこれを行うと二回Enter入って4つフォルダが起動しちゃうってことね

それよりはそれぞれ解体したパスそのものをコマンドラインナシで起動しちゃうのが一番安全と思う

35 :名無しさん@お腹いっぱい。:2014/09/24(水) 11:20:13.81 ID:pF7jz3Dw0.net
どんな乗っ取りしてんのかとソースみたらかなり単純なのな
ていうかの

36 :名無しさん@お腹いっぱい。:2014/09/24(水) 11:21:04.01 ID:pF7jz3Dw0.net
途中で送っちゃった
ていうか乗っ取りですらなかった

37 :名無しさん@お腹いっぱい。:2014/09/24(水) 13:57:09.15 ID:cLI/kd0c0.net
こういった普通に便利なのならいくらでも作って使ってるのあるけど
プログラム的に凄いことまったくしてない物は晒す価値ないみたいな暗黙の遠慮あるから
なかなか出せないし出てこないよな

38 :名無しさん@お腹いっぱい。:2014/09/24(水) 14:04:33.89 ID:wxgmM4po0.net
まだまだ改善の余地はあると思うけど、やってることわかりやすいし、そもそもその単純な発想が賢いと思った
俺だったら変にスパゲッティになる
プログラムはやっぱり発想勝負だな

39 :名無しさん@お腹いっぱい。:2014/09/24(水) 14:33:30.18 ID:K0fLl19g0.net
使わせてくれるならなんでもありがたくもらいたい
技術的に俺があまり詳しくないのもあるけど、そもそも発想が乏しいからクリップボードの有効活用とか出来ないから

他人のコードは本当勉強になるからありがたいわ

40 :名無しさん@お腹いっぱい。:2014/09/24(水) 17:01:54.30 ID:gdIT+qZG0.net
>>37
これ機会損失だよな
何で役に立つかわかんねえのに

41 :名無しさん@お腹いっぱい。:2014/09/24(水) 18:26:06.43 ID:RC24OFDT0.net
ファンクションキーが24個あるキーボードって現行商品であるのん?

42 :名無しさん@お腹いっぱい。:2014/09/24(水) 22:19:27.48 ID:Q0GFm/Tj0.net
PostMessageについてお尋ねします。
以下はhage.ahkにサスペンドを送信しますが
サスペンドを解除するにはどうしたらよいでしょうか。
PostMessage, 0x111, 65305,,, hage.ahk - AutoHotkey ahk_class AutoHotkey

43 :名無しさん@お腹いっぱい。:2014/09/24(水) 22:25:40.75 ID:jMy3nG4c0.net
>>41
xkeysがキーボードに分類されるなら有るってことになるんじゃないの

44 :名無しさん@お腹いっぱい。:2014/09/24(水) 22:25:52.93 ID:h+15TBzd0.net
サスペンド送っちまったら手動復帰しかないんじゃない?
やったことないけどサスペンドしたら多分受付も止まりそうな予感
一回サスペンドをサブルーチン化したときちゃんと機能してくれなかったので勘で答えてみる

45 :名無しさん@お腹いっぱい。:2014/09/24(水) 22:52:39.83 ID:lsLyuOWz0.net
>>42
トグルなのでもう一度送信すればONになる。

>>44
デマ拡散はやめてくれ。

46 :名無しさん@お腹いっぱい。:2014/09/24(水) 23:02:48.16 ID:Q0GFm/Tj0.net
>>45
おお確かに出来ました!有難うございます。
それとサスペンドを送信したスクリプトのサスペンド状態を知るコマンドありますでしょうか?。
よろしくお願いします。

47 :名無しさん@お腹いっぱい。:2014/09/24(水) 23:12:36.36 ID:lsLyuOWz0.net
>>46
http://ahkwiki.net/Suspend

48 :名無しさん@お腹いっぱい。:2014/09/24(水) 23:21:33.72 ID:lsLyuOWz0.net
情報足らなかったので追加

値をOnMessageで受け取る
http://ahkwiki.net/OnMessage

49 :名無しさん@お腹いっぱい。:2014/09/24(水) 23:36:12.78 ID:Q0GFm/Tj0.net
>>48
これは私には難しそうです。
どうも有り難うございました。

50 :名無しさん@お腹いっぱい。:2014/09/25(木) 10:23:11.71 ID:mEy0Rn1N0.net
超初歩的な言を聞くようですが、ググっても出てこなかったので教えて下さい

WindowspyのVisible Window Text
内部の文字列を取り出すにはどうすればいいんでしょう

エクスプローラ上でここを見ると今開いてるアドレスが表示されるんですが、これを使って処理をしたいんです

51 :名無しさん@お腹いっぱい。:2014/09/25(木) 10:36:10.78 ID:mEy0Rn1N0.net
すみません自己解決しました。聞き流してください

52 :名無しさん@お腹いっぱい。:2014/09/25(木) 11:56:30.53 ID:pwdySlks0.net
右から左に受け流す〜♪

53 :名無しさん@お腹いっぱい。:2014/09/25(木) 19:16:17.02 ID:mEy0Rn1N0.net
ぐぬぬ
デスクトップの余白部分ダブルクリックでマイコンピュータを開くってのが地味に難しい

54 :名無しさん@お腹いっぱい。:2014/09/25(木) 22:25:17.27 ID:PVNcodU70.net
Process, Close, %プロセスグループ%
これは出来ませんでしょうか?

55 :名無しさん@お腹いっぱい。:2014/09/26(金) 00:45:11.67 ID:n9BxVIQz0.net
>>54
無くなるまで回せばいい。
Loop + WinGet + If + Break + Process

56 :名無しさん@お腹いっぱい。:2014/09/26(金) 01:44:52.14 ID:9pRGCenR0.net
個人的にだが、「Process, Close, …」はwincloseで終了できないプロセスに限り使う方が良いと思う。
wincloseなら>>54がしたい ahk_group 使えるみたいだからLoopで回す必要もなく、記述もシンプルになる。

57 :名無しさん@お腹いっぱい。:2014/09/26(金) 02:09:53.19 ID:n9BxVIQz0.net
>>56
Processのページにばっちり書いてあるから考慮してあるんじゃない?

58 :名無しさん@お腹いっぱい。:2014/09/26(金) 02:40:50.65 ID:rfMkdeRi0.net
WM_QUITはどうなんだろ
Process, Closeと変わらない?

59 :54:2014/09/26(金) 04:08:07.13 ID:ERPPP7460.net
みなさん大変申し訳ありません、GroupAddの存在を完全に忘れていました。
WinCloseでどうにかなりそうです、お騒がせしました。

60 :名無しさん@お腹いっぱい。:2014/09/26(金) 23:51:58.75 ID:ERPPP7460.net
msgboxのウィンドウクラスはahk_class #32770ですが
これだと他のウィンドウと重複してしまい、処理が上手くいきません。
ウィンドウタイトル以外の方法で、AHKのウィンドウだと明確に指定出来ませんでしょうか?。

61 :名無しさん@お腹いっぱい。:2014/09/27(土) 00:32:42.44 ID:qd2bT6T+0.net
>>60
「ahk_class #32770 ahk_exe AutoHotkey.exe」で指定。
ahk_class #32770 はダイアログのクラス。

62 :名無しさん@お腹いっぱい。:2014/09/27(土) 00:47:59.24 ID:wz9yNweh0.net
>>61
おおお素晴らしい!出来ました。
どうも有難うございました。

63 :名無しさん@お腹いっぱい。:2014/09/27(土) 01:14:53.47 ID:lCEmMHMT0.net
>>61
それだと複数ahk起動してると、どのスクリプトのmsgboxか区別できないからウィンドウタイトルも指定した方が良いんじゃ…
と思ったが、 AutoHotkey.exe をスクリプト名にリネーム(例:hoge.exe)してそれを起動すれば問題ないね。
「ahk_class #32770 ahk_exe hoge.exe」 or 「ahk_class #32770 ahk_exe c:\ahk_script\hoge.exe」

64 :名無しさん@お腹いっぱい。:2014/09/27(土) 01:28:25.12 ID:qd2bT6T+0.net
>>63
複数ある場合はWinGetでプロセスID(起動毎に割り当て、終了するまで固有)を取得してahk_pidで指定。

65 :名無しさん@お腹いっぱい。:2014/09/27(土) 10:07:13.21 ID:MWN87NGW0.net
AHKで他のプログラムを一時停止させる(プロセス優先度を最低にするのと同じ感じで)ことってできますか?

66 :名無しさん@お腹いっぱい。:2014/09/27(土) 10:38:22.29 ID:JCbBJ7Hy0.net
どうだろう……
プロセスを最低には出来るよ、でもサスペンドとかはどうなんだろう?

67 :名無しさん@お腹いっぱい。:2014/09/27(土) 12:30:52.26 ID:MWN87NGW0.net
>>66
不可能ですかね?
プロセス優先度を最低にしてもまだ重い(CPUを多く占領する)プログラムなので
一定時間キーとマウス操作をしていない時以外は停止させたいのですが

68 :名無しさん@お腹いっぱい。:2014/09/27(土) 14:01:51.42 ID:eu8qeP8j0.net
んー・・・regreadって機能使ってみたいけどネタが思い浮かばない
レジストリからしか入手できない値ってなんかあったっけかな

>>67
もうそこまでアレならいっそのこと一回プロセスを終了とかはできへんの?

俺はDropbox+ブラウザはネット専有しすぎて書き込み総量もすごいからブラウザ起動中はDropboxのプロセス終わらせて、ブラウザが終了したのみはからってDropbox起動っていうのやってるけども

69 :名無しさん@お腹いっぱい。:2014/09/27(土) 14:06:42.29 ID:MWN87NGW0.net
>>68
終了はできませんね、終了も再開も手作業しなければならない手間が多いので…
ファイアーウォールソフトなんかでは、通信しようとしてるソフトを一旦気絶させてユーザーの許可を得ようとしますよね?
そんな感じでWindowsには他のプログラムの動作を一時停止させる機能はないのでしょうかね?

70 :名無しさん@お腹いっぱい。:2014/09/27(土) 14:08:49.05 ID:eu8qeP8j0.net
さすがに思いつかんね。他のソフト当たるほうがいいかも

71 :名無しさん@お腹いっぱい。:2014/09/27(土) 15:59:58.52 ID:YcFvAXqt0.net
こんなのを見つけてやってみた。とっても便利で気に入りました
http://www.autohotkey.com/board/topic/5793-multiple-virtual-desktops/

Multiple virtual desktopsっていうやつで、上のほうにある、DesktopSwitch ってやつで
これはめちゃいいのでみなさんも是非やってみてくださいって言いたかったんだが
Alt+数字で切り替えると、ときどき、デスクトップ背景のアイコンが全部消えて見えなくなったり
Alt+0で終了すると、デスクトップ背景のアイコンが全部消えたままになったりするんだけど
AutoHotKeyってデスクトップに並べてるアイコンを消したりって出来るのですか?
このプログラム自身、とっても小さいので見てるのですが、どっかにバグがあるようには
見えないのですが、何が問題なのでしょうか
ちなみに私はWindows7です
また、消えたアイコンを復活させるWindows7のコマンドや操作ってありますか
Windows側の問題なのかな

72 :名無しさん@お腹いっぱい。:2014/09/27(土) 16:42:23.43 ID:BeXFoUnx0.net
>>69
FWはソフトを気絶させるんじゃなくて通信遮断してるだけじゃないの?

手作業で終了再開しなければならない手間、をどうにか自動化する方面のほうが
ahkの本領発揮だと思うが

73 :名無しさん@お腹いっぱい。:2014/09/27(土) 17:02:00.15 ID:lCEmMHMT0.net
>>65
「psr」っていうコマンドラインツールをahkで動かせば可能だと思うので試してみれば?
ahk使わない方法の一つとしては、Process Explorerを使うとか。

以下、別件。
>>63
自己レス。何かあんな小面倒くさいことしないで、やっぱり素直に、
「ahk_class #32770 ahk_exe AutoHotkey.exe」へ「msgboxのタイトル」を追加して、
「msgboxのタイトル ahk_class #32770 ahk_exe AutoHotkey.exe」ってすれば
msgboxの特定も問題ないだろうし、コードもシンプルに書けるような気がする。

でも、起動中の複数ahkスクリプトでmsgboxのタイトルが同じだったりすると破綻しそうだし、
msgboxのタイトルを書き換えたりすると監視するスクリプトの方も修正が必要になる面倒くささはあるけど。

>>64
自分のプロセスIDをどうやって監視用ahkに知らせるんだろう?
自分にはやり方分からないんだけど、OnMessage()とか使うんかな?
あ、クリップボードやファイルに書き出し→読み取りっていう方法もあるか?

>>60>>64のレス根本的に勘違いしてたらゴメン。

74 :名無しさん@お腹いっぱい。:2014/09/27(土) 17:04:49.08 ID:YcFvAXqt0.net
デスクトップからアイコンが消えたあと、デスクトップ上で右クリックして復活させる方法を見つけたので
やってみたけど、デスクトップ上で右クリックも出来なくなりました
でも、下のタスクバー上で右クリックしたら、デスクトップを表示というのがあったのでここを選択したらアイコンが
元通り表示されました。なんか焦ったわ。Atl+0でスクリプト終了させたあとずっとデスクトップのアイコン消えてたから

75 :名無しさん@お腹いっぱい。:2014/09/27(土) 19:00:11.27 ID:qd2bT6T+0.net
>>73 ID:lCEmMHMT0
質問の内容を無視してるのだが・・・。

「ウィンドウタイトル以外で」 AHKのダイアログを指定
「AHKで」 他のプログラムの優先度変更と一時停止


横レスのまったく違う条件の質問ということで以下回答。

通常は他のスクリプトを操作しないように「自分のPID」を指定する。
スクリプトから他のスクリプトをPIDを指定して操作する場合「対象のPID」を指定する。
値の受け渡し方はOnMessage()、外部ファイル書き出し、クリップボード監視。

76 :名無しさん@お腹いっぱい。:2014/09/27(土) 20:30:08.69 ID:qd2bT6T+0.net
>>69
任意のプロセスを一時停止/再開
ttp://www.autohotkey.com/board/topic/30341-process-suspendresume-exampleexe/?p=194443
検索ワード:autohokey Suspend processes

77 :名無しさん@お腹いっぱい。:2014/09/27(土) 21:29:00.66 ID:shs41SRD0.net
>>76
む〜読んだけどよくわからないっす;;
つまりこれはそういう機能がほしいという要望が既にある、という話ですかね?
それとも下の方に「それはこうやればできるよ」とやり方が書いてあるんですかね?

78 :名無しさん@お腹いっぱい。:2014/09/27(土) 21:38:24.57 ID:nZJdp6Er0.net
×読んだけどよくわからない
○読めないし読む努力もしたくない

79 :名無しさん@お腹いっぱい。:2014/09/27(土) 21:38:25.70 ID:JCbBJ7Hy0.net
>>76
試してみたが、これ危険だわ……
おとなしく終了、再起動を自動でやったほうが正確に動く

80 :名無しさん@お腹いっぱい。:2014/09/27(土) 21:56:27.73 ID:shs41SRD0.net
>>75 私は別にAHKだけで完遂できなくてもいいですよ 他のプログラム併用でもなんでもいいです

81 :名無しさん@お腹いっぱい。:2014/09/27(土) 22:06:59.38 ID:23Wk1MnK0.net
なんでもいいんなら>>73でも>>76でもいいだろ
やっぱ>>10-11は必要なんだなw

82 :名無しさん@お腹いっぱい。:2014/09/27(土) 22:19:37.60 ID:Q37fe4nD0.net
>>81
子供が多いスマホアプリスレだと完全に馬の耳に念仏状態だけどなそれ

83 :名無しさん@お腹いっぱい。:2014/09/28(日) 09:11:26.08 ID:moCoGGlM0.net
>>77
ソース読む読む能力無いのになぜ質問しようと思った
難しくて何やってるかわかりませんでした、ならともかく直リンクで辿り着けもしないとか

84 :名無しさん@お腹いっぱい。:2014/09/28(日) 14:16:23.04 ID:xi5JPEeR0.net
>>77
そのページのheresy さんやIce_Tea さんのレスがもっと下にスクロールできることに気づいてないんじゃない?
だからProcess_Resume(〜でエラーが出るとか。
あとunicode版でインストールしてないとか。
とエスパー

85 :名無しさん@お腹いっぱい。:2014/09/28(日) 14:45:33.42 ID:AkkEqmTg0.net
>>76のリンク踏めば自動的にページエンドへ行く。
しかもそこにはコードサンプルが貼られているのにも関わらず、
それを確かめもしなかったから叩かれてんじゃないの?

86 :名無しさん@お腹いっぱい。:2014/09/28(日) 14:55:05.71 ID:xi5JPEeR0.net
>>85
いやいや、それは当然見えるけどそのレスの中にスクロールバーがあってコードにもっと続きがあることに気づいてないんじゃないの?ってこと

87 :名無しさん@お腹いっぱい。:2014/09/28(日) 18:08:00.81 ID:1+kB/N7l0.net
最小化していないウィンドウの数を数えるなんてできます?
たとえばブラウザ、ファイラー、メディアプレイヤーが存在してたら3と数えるとか

88 :名無しさん@お腹いっぱい。:2014/09/28(日) 18:26:37.77 ID:Rv/GylDU0.net
>>87
WinGetでリストと状態を取得、後は自分で考えよう。
ttp://ahkwiki.net/WinGet

89 :名無しさん@お腹いっぱい。:2014/09/28(日) 18:46:36.27 ID:1+kB/N7l0.net
あー、カウントとかリストとかコマンドあるんだ
情報有り難うございます。やってみます

90 :65:2014/09/29(月) 09:49:14.53 ID:GtFTMOJX0.net
>>84 >>86
すげー、ビンゴです
何もincludeもせずに耳慣れない関数が出てくるのでおかしいなと思ってました
最初から見える範囲がちょうどキリの良い空行で切れてるので気付かなかった
無事に狙ったことができました
>>76さんもありがとうございます

91 :名無しさん@お腹いっぱい。:2014/09/29(月) 19:34:10.85 ID:jgD1fp5t0.net
~MButton::
KeyWait, MButton, T0.5
If ErrorLevel
AltTabMenu
KeyWait, MButton

上記のような処理をしたいのですが、エラーで出来ません。
何かいい方法ありますでしょうか、よろしくお願します。

92 :名無しさん@お腹いっぱい。:2014/09/29(月) 19:46:35.45 ID:+htSO+Tj0.net
AltTabはあきらめた方が幸せという結論に至った
MbuttonだったらLogifcool製・Microsoft製マウスについてるユーティリティソフトの方が…

93 :名無しさん@お腹いっぱい。:2014/09/29(月) 20:07:00.62 ID:jgD1fp5t0.net
>>92
残念、諦めます・・。
コメント有難うございました。

94 :名無しさん@お腹いっぱい。:2014/09/29(月) 20:12:21.65 ID:bj/ecbDP0.net
>>93
自前でSendすればいいだけ
Alt + Ctrl + Tag (Vista以降)

95 :名無しさん@お腹いっぱい。:2014/09/29(月) 20:17:02.42 ID:jgD1fp5t0.net
>>94
有難うございます。
あっさり出来ました。

96 :名無しさん@お腹いっぱい。:2014/09/29(月) 20:21:58.67 ID:VgLnZsQB0.net
MGLではこういう感じでタスク切り替えできる

MB_WD_
MG_Abort()
if(!MG_Hold()){
Send,{Lwin Down}{Tab}
wintab:=1
}else{
Send,{Lwin Up}
wintab:=0
}

あとalttabで出てくるタスクメニューのclassはTaskSwitcherWnd

97 :名無しさん@お腹いっぱい。:2014/09/29(月) 20:37:17.56 ID:bj/ecbDP0.net
>>96
それAeroフリップ3D・・・。

98 :名無しさん@お腹いっぱい。:2014/09/29(月) 21:51:33.52 ID:j+LkBhr90.net
>>96
うん、まぁ、これも便利は便利よな

99 :名無しさん@お腹いっぱい。:2014/09/29(月) 21:54:55.68 ID:t+3LdmQR0.net
送るキーくらい自分で置き換えられるだろ

100 :名無しさん@お腹いっぱい。:2014/09/30(火) 02:38:02.91 ID:QrCMvsbv0.net
横から失礼

Autohotkey-Scripts/Affinity.ahk at master ・ dufferzafar/Autohotkey-Scripts ・ GitHub
ttps://github.com/dufferzafar/Autohotkey-Scripts/blob/master/lib/Affinity.ahk

↑にあるアフィニティマスク設定のスクリプト(?)が何の動作もしないんですが
どういう原因が考えられますか?
例)

Affinity_Set(1,notepad.exe)

としてタスクマネージャーで関係を見ても使用コアが変化しません
CPUは4コア8スレッドです
AHK使い始めたばかりの初心者なので基本的なところを勘違いしているかもしれませんがよろしくお願いします

101 :名無しさん@お腹いっぱい。:2014/09/30(火) 02:42:49.46 ID:SeJUcLB30.net
それ以前にMGLはスレチ

102 :名無しさん@お腹いっぱい。:2014/09/30(火) 04:10:39.76 ID:SeJUcLB30.net
>>100
関数の引数()の中は式になるので文字列は””で囲う。 hoge( 123, "文字列", 変数 )
ttp://ahkwiki.net/Function

そもそも第二引数はプロセスID。

Process, Exist, notepad.exe
PID := ErrorLevel
Affinity_Set(1, PID)

; Affinity_Set( CPU=1, PID=0x0 ) ....
; CPU: CPU0=1 CPU1=2 CPU2=4 CPU3=8 ... 数の和を指定
; PID: プロセスID 省略時はスクリプト自身

103 :名無しさん@お腹いっぱい。:2014/09/30(火) 15:25:37.51 ID:12x17Na20.net
7日前の日付をフォルダ名にしたいんですがなんでコレ動いてくれないんでしょう

foldername:=A_now
foldername-=7,D

7日引いたらエラーが出ます。試しに+にしたらエラーが出ません

104 :名無しさん@お腹いっぱい。:2014/09/30(火) 16:13:51.34 ID:V+44fyZJ0.net
foldername += -7,D

105 :名無しさん@お腹いっぱい。:2014/09/30(火) 17:46:50.26 ID:6NIyJkr90.net
へーそんな機能があったのか
-=の場合は EnvSub を参照するといいみたいだぞ >>103

106 :名無しさん@お腹いっぱい。:2014/09/30(火) 17:48:29.38 ID:6NIyJkr90.net
-=の場合は → -=についての詳細は

107 :名無しさん@お腹いっぱい。:2014/09/30(火) 18:18:33.16 ID:QrCMvsbv0.net
>>102
サンクス
無事に使えました。
もう一つよく飲み込めてないけど沢山サンプルに接するうちに理解していけるといいなぁ…という心境です

108 :名無しさん@お腹いっぱい。:2014/10/01(水) 12:11:12.93 ID:x4VaPOtB0.net
>>104
出来ました出来ました
ありがとうございます

109 :名無しさん@お腹いっぱい。:2014/10/01(水) 13:31:27.55 ID:x4VaPOtB0.net
AHKは配列ないっぽい?
loop,Parseで回す他にいい方法ないかしら

110 :名無しさん@お腹いっぱい。:2014/10/01(水) 14:33:01.00 ID:m5XVznIk0.net
アルヨー

でも総当り処理だったら行数あんまり変わんねー気もする

111 :名無しさん@お腹いっぱい。:2014/10/01(水) 14:41:41.20 ID:NC4Qan6e0.net
object

112 :名無しさん@お腹いっぱい。:2014/10/01(水) 17:13:16.66 ID:m5XVznIk0.net
デスクトップにあるファイルの自動振り分け機能作ってるけどもうちょっとメンテナンスしやすくしたいんですがなんかいいアイディアないですかね?
これでも動くんですが、具体的にはftypeで書いてるのにIf連続地帯でフォルダ名二回目書かなきゃいけないのが地味にめんどくさいという

ftype = 画像 アーカイブス 動画 音楽 メモ Flash ;デスクトップにある振り分け先フォルダ名
loop,Parse,ftype,%A_space%
{
IfExist,%A_desktop%\%A_loopField%
{
foldergenre := A_loopField ;振り分け先フォルダを決定

If(foldergenre == "画像") ;フォルダの名前を調べて拡張子を入れるものを決める
Extype = *.jpg *.jpeg *.png *.bmp *.gif
else If(foldergenre == "アーカイブス")
Extype = *.zip *.rar *.exe *.cab *.7z *.iso *.img *.pdf *.lzh *.ipa
else if(foldergenre == "動画")
Extype = *.flv *.mp4 *.wmv *.avi *.3gp *.mkv
else if(foldergenre == "音楽")
Extype = *.mp3
else if(foldergenre == "メモ")
Extype = *.txt *.ahk
else if(foldergenre == "Flash")
Extype = *.swf

loop,Parse,Extype,%A_space%
{
FileMove,%A_desktop%\%A_loopField%,%A_desktop%\%foldergenre%,1  ;振り分ける
}
}
}

113 :名無しさん@お腹いっぱい。:2014/10/01(水) 17:41:50.84 ID:O8eRmxL00.net
>>112
なんで配列にしないでスペース区切りの文字列にしてるのか知らないけども
仮想配列と配列を使えばいいんでないの?

配列周りを勉強しなさいっていう神のお告げだ

114 :名無しさん@お腹いっぱい。:2014/10/01(水) 18:18:18.72 ID:ycG21aDl0.net
やってることは完全に同じだがA_indexで見ても良いんじゃね?
まあ、そんだけ出来るなら配列の概念もすぐわかるさ
まんま配列処理だし

115 :名無しさん@お腹いっぱい。:2014/10/01(水) 18:38:29.60 ID:m5XVznIk0.net
アイディアありがとござます!
連想配列にすると今度は関連付けで長ったらしくなりそうだったので控えてたんですが、今テストしてみたら

AssociativeArray := {Color: "Green"
,Size: "Large"
,Price:"10,000"
,Stock: "True"}

こんなかんじで縦に書いても認識するんですね、知りませんでした
連想配列で行きます

116 :名無しさん@お腹いっぱい。:2014/10/01(水) 18:54:36.31 ID:CvxdwXKW0.net
こうかな あんま動作確認してないから試すときはテストフォルダでやってね

Okataduke(A_Desktop)
Return

Okataduke(dir, force = 0){
Static ftype := {画像: ["jpg", "jpeg", "png", "bmp", "gif"]
, アーカイブス: ["zip", "rar", "exe", "cab", "7z", "iso", "img", "pdf", "lzh", "ipa"]
, 動画: ["flv", "mp4", "wmv", "avi", "3gp", "mkv"]
, 音楽: ["mp3"]
, メモ: ["txt", "ahk"]
, Flash: ["swf"]}
tDir := A_WorkingDir
SetWorkingDir, % dir
For k, v in ftype {
If (!FileExist(k := Chr(0x30A8) Chr(0x30ED) k))
FileCreateDir, % k
Loop % v.MaxIndex()
FileMove, % "*." v[A_Index], % k "\*." v[A_Index], % (force != 0)
}
SetWorkingDir, % tDir
}

117 :名無しさん@お腹いっぱい。:2014/10/01(水) 21:19:38.97 ID:V8yOKcSw0.net
A_TimeIdleが、30秒まで数えると0に戻っちゃうみたいなんですが
この状況でそれ以上数えるにはどうしたらいいですかね?

118 :名無しさん@お腹いっぱい。:2014/10/01(水) 21:44:40.83 ID:nD/Yt8j00.net
>>117
・A_TimeIdle
最後に何らかの入力があってからの経過時間をミリ秒で格納。(NT系専用)
PCが放置されているときにアクションを起こすのに使える。
何らかのプログラムが生成した入力イベントでもリセットされてしまう。
・A_TimeIdlePhysical
A_TimeIdleと同じだが、キーボードHookやマウスHookが使用されていると、プログラムが発生させた入力イベントを無視できる。

119 :名無しさん@お腹いっぱい。:2014/10/02(木) 05:30:52.35 ID:xOGKPvZw0.net
メンテナンス性重視なら、こうすれば追記しやすくなるんじゃないかな
forとloop,Parseの合わせ技。ブロックもいらないかも。

foldertype := {画像 : "*.jpg,*.jpeg,*.png,*.bmp,*.gif"
,アーカイブス : "*.zip,*.rar,*.exe,*.cab,*.7z,*.iso,*.img,*.pdf,*.lzh,*.ipa"
,動画 : "*.flv,*.mp4,*.wmv,*.avi,*.3gp,*.mkv"
,音楽 : "*.ape,*.cue,*.mp3,*.tta,*.tak,*.wav,*.wave,*.flac,*.ogg,*.lrc"
,メモ : "*.txt,*.ahk,*.ini"
,Flash : "*.swf"}

for,fol,Ex in foldertype
{
loop,Parse,Ex,`,
{
FileMove,%A_desktop%\%A_loopField%,%A_desktop%\%fol%,1
}
}

120 :名無しさん@お腹いっぱい。:2014/10/02(木) 05:33:42.78 ID:S8selJ5w0.net
スッキリ

121 :名無しさん@お腹いっぱい。:2014/10/02(木) 07:17:55.53 ID:/YrtlfsG0.net
わかりやすい

122 :名無しさん@お腹いっぱい。:2014/10/02(木) 07:32:46.70 ID:X4Xkb+VT0.net
ここまで整理されたら、この設定部分を .ini ファイルに切り分けるのも簡単だよね

123 :名無しさん@お腹いっぱい。:2014/10/02(木) 07:42:29.51 ID:Mq+0KfSu0.net
この辺り、データベースの正規化と同じで凝り過ぎると
融通が効かなくなったりするから、適度なところで止めとくのが良いよね。
"*."のところは共通だから切り出そう!とか思ってやったら、
後で、"IMG*.JPG"だけを対象にしたくなって面倒なことになったりとか。

本当に凝るなら、ini化の他にもOSのグロブ展開任せにしないで正規表現マッチするとか
関数化するとか色々あるけど、勉強目的以外にはおすすめできぬ。

124 :名無しさん@お腹いっぱい。:2014/10/02(木) 10:11:12.04 ID:WbmSIDtm0.net
デスクトップを一気に整理したいって人には良さそう。
いわゆる二次元配列か
他にも使えそうな予感

125 :名無しさん@お腹いっぱい。:2014/10/02(木) 11:59:10.68 ID:X4Xkb+VT0.net
まあ、この辺をスタートにしてプログラマーへの第一歩を踏み出すのもいいんじゃないかと。
iniに切り分けて、出力フォルダとか移動させるファイルをプログラム上から設定できるようにして
(正規表現もありだね)ってやってくと、AHKでやる意味ないジャンってことになって
C++を使い始めれば、もう立派なプログラマ予備兵だ

このデスクトップの整理プログラムって、xcopyでは無理みたいだけど、mvあたりのコマンドを使って
適当なスクリプトにして、タスクスケジューラに登録すれば、実用的にはそれでおしまいなんだよね。

126 :名無しさん@お腹いっぱい。:2014/10/02(木) 12:50:41.83 ID:MuoVGKhq0.net
Loop, ReadでInsertすりゃそりゃいけるだろうけど、ソースそのままならこっちのほうが視認性はいい気もしなくもない
あとタスクに登録するくらいならsettimerで呼びだしちゃうのも手っ取り早いと思われる

まぁ、exeに固めちゃうならiniにしてしまうだろうけどね

127 :名無しさん@お腹いっぱい。:2014/10/02(木) 13:41:39.26 ID:MuoVGKhq0.net
FileMoveDirってもしかして親子関係のあるフォルダには使えない系?
どうしたもんかな……

128 :名無しさん@お腹いっぱい。:2014/10/02(木) 18:44:36.94 ID:kPZ/9Jq00.net
>>116, >>119とその他を混ぜたがurlを貼れなかった
ux.getuploader.com/autohotkeyl/download/49/okataduke.zip

129 :名無しさん@お腹いっぱい。:2014/10/02(木) 21:17:05.74 ID:YyqleCfA0.net
#Ifで指定したウィンドウがある時にControlClickしているのですが
10回に2回はクリックに失敗します。
確実性を高める事は出来ますでしょうか。
よろしくお願いします。

130 :名無しさん@お腹いっぱい。:2014/10/02(木) 21:36:48.76 ID:mnCm1xAu0.net
>>129
送るのが早すぎて反応してないのでは?
まずは問題のスクリプトを最小限にして貼ってくれ
原因はいろいろ思いつくが書いてくれないと推測しか出来ない。

131 :名無しさん@お腹いっぱい。:2014/10/02(木) 21:50:16.87 ID:YyqleCfA0.net
>>130
すみません、こんな感じです。
失敗する時は、ControlClickしたボタンが選択状態?みたいにはなるのですが
そこから数回ControlClickしないと押せません。

#NoEnv
#InstallKeybdHook
#UseHook

#IfWinExist, HOGEWINDOW
@::ControlClick, Button1, HOGEWINDOW
^@::ControlClick, Button2, HOGEWINDOW
#IfWinExist

132 :名無しさん@お腹いっぱい。:2014/10/02(木) 22:54:53.30 ID:mnCm1xAu0.net
>>131
対象は?#Ifなくても発生する?
別の方法で ControlSend SetKeyDelay や PostMessage
押し下げ押上げを間隔を空けて別に送信。

@::
SetControlDelay, 100 ; 遅くする
ControlClick, Button1, HOGEWINDOW,,,, NA
Return

133 :名無しさん@お腹いっぱい。:2014/10/02(木) 23:42:36.04 ID:YyqleCfA0.net
>>132
出来ました!
SetControlDelayで遅延を多めにしたら出来ました!。
300回位試しましたけど、大丈夫そうです。
助かりました、有難うございます。

134 :名無しさん@お腹いっぱい。:2014/10/03(金) 17:22:49.58 ID:2uHTdM2V0.net
アプリケーションがアクティブな時に、ALTを押すと、左上の”ファイル”等が選択状態になりますけど
この状態になっているか否かの判別は出来ますか?

135 :名無しさん@お腹いっぱい。:2014/10/03(金) 17:54:30.65 ID:X3NmMPcS0.net
スマートじゃなくてもいいなら色で判別できる

136 :名無しさん@お腹いっぱい。:2014/10/03(金) 18:25:11.58 ID:2uHTdM2V0.net
>>135
なるほど、ちょっと調べてみます。
有難うございます。

137 :名無しさん@お腹いっぱい。:2014/10/03(金) 20:46:37.54 ID:4j7ehgBO0.net
ん〜、Fxとかの独自描画系は拾えないなぁ。。。
たぶんメニューのクラスにフォーカスがあったったのも拾わないといけなさそうだ

#Persistent
DllCall("SetWinEventHook"
 , "UInt", 0x00000004 ; EVENT_SYSTEM_MENUSTART
 , "UInt", 0x00000005 ; EVENT_SYSTEM_MENUEND
 , "Ptr", 0 ; self Process Handle
 , "Ptr", RegisterCallback("MenuActivateHandler") ; hWinEventProc
 , "UInt", 0 ; All process
 , "UInt", 0 ; All threads
 , "UInt", 0x0003 ; WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
 , "UInt")
; Autoexecセクションここまで
Exit

MenuActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
 subLabel := (event == 0x00000004 || event == 0x00000006) ? "OnMenuActive" : "OnMenuDeactive"
 If IsLabel( subLabel ) && event
  Gosub, % subLabel
}
OnMenuActive:
 CoordMode, Tooltip, Screen
 Tooltip, MenuActive, 0, 0
 Return
OnMenuDeactive:
 Tooltip
 Return

138 :名無しさん@お腹いっぱい。:2014/10/04(土) 00:17:55.56 ID:e3uRMbRp0.net
>>134
ALT単独で押したらフラグ立てる方式もいけるのでは?
解除条件の処理がめんどくさいけど。

メニューバーの判定で何をしたいのかわからないが
もしメニューバーの項目を選択したいなら WinMenuSelectItem や ショートカットキー。

139 :名無しさん@お腹いっぱい。:2014/10/04(土) 02:00:38.49 ID:2dC1sv8S0.net
>>138
こんなコマンドあったんですね!!。
勉強になりました、有難うございます。

140 :名無しさん@お腹いっぱい。:2014/10/04(土) 14:04:39.42 ID:Zpq3GCeP0.net
今ゾーンクリックで動作するスクリプト作ってるんですが、範囲を表示するguiを作りたいんです
範囲マスクはどうすればいいんでしょう?

clickzone(XL=0,XR=0,YU=0,YD=0){
sysget,titleh,4
CoordMode,Mouse,Screen
MouseGetPos, x, y
Wingetpos,WinX,WinY,width,Height
sysget,Monitors,80
If(Monitors = 2){
SysGet, VirtualWidth, 78
SCWidth := VirtualWidth-A_ScreenWidth
}
If(Width == A_ScreenWidth) or (Width == SCWidth)
fullscreen = 1

;上限下限の設定
Xzone_left := WinX + 8
yzone_up := WinY + titleh + 8
Xzone_right := WinX + width - 8
Yzone_down := WinY + Height - 8
;tooltip,%Xzone_left% %Xzone_right%`n%yzone_up% %Yzone_down%
return (x > Xzone_left+XL)
and (x < Xzone_right-XR)
and (y > yzone_up+YU)
and (y < yzone_down-YD)
;and FullScreen
}

141 :名無しさん@お腹いっぱい。:2014/10/04(土) 14:43:59.59 ID:e3uRMbRp0.net
>>140
過去スレに似たような質問がある。

AutoHotkey スレッド part16 >>37-43
ttp://anago.2ch.net/test/read.cgi/software/1367725658/

Gui, Color, Red
Gui, +LastFound
WinSet, TransColor, Red
Gui, -Caption +Border
Gui, Show, NA h100 w100

または
GDI+で描写する関数「Gdip.ahk」
http://www.autohotkey.com/board/topic/29449-gdi-standard-library-145-by-tic/

142 :名無しさん@お腹いっぱい。:2014/10/07(火) 19:30:09.02 ID:vEXhDUvd0.net
WinSet, AlwaysOnTop, Onを指定ウィンドウに送っているのですが
指定ウィンドウがTOPになったがどうかの判定って出来ますか?。

143 :名無しさん@お腹いっぱい。:2014/10/07(火) 20:14:17.30 ID:jgmsPoTz0.net
できます

144 :名無しさん@お腹いっぱい。:2014/10/07(火) 20:42:45.18 ID:WetMuctH0.net
>>142
最前面表示にしても確実に最前面に切り替わるわけではないので
自前で WinActivate(アクティブ) や WinSet, Top(非アクティブ) を送る必要がある。

■状態取得
*アクティブ
WinActive()

*非アクティブ
WinGet, OutputVar, List で一覧取得
その他いろいろ判定...略

*最前面設定取得
WinSet, Top,, 電卓
WinSet, AlwaysOnTop, Toggle, 電卓
WinGet, ExStyle, ExStyle, 電卓
If (ExStyle & 0x00000008) ; WS_EX_TOPMOST
ToolTip 有効
Else
ToolTip 無効
Return

145 :名無しさん@お腹いっぱい。:2014/10/07(火) 21:46:31.49 ID:2rq3Idq50.net
>>144
出来ましたーーーーーーーーーーーーーーーー!!!!
とても参考になりました。
このコードを元に、これまで作成したスクリプトにも適用してみようと思います。
ご丁寧な回答有難うございました。

146 :名無しさん@お腹いっぱい。:2014/10/10(金) 06:37:57.85 ID:PTzaVqCI0.net
LWin::Return
LWin&LWin::Return
でWinキーは無効にしてWin+◯のショートカットは使えるようにしているのですが、無変換+◯でGetKeyState("LWin")を使って3キーのホットキーを指定し、LWin+無変換+◯を押すと実行されるのですが、LWinを離すとスタートメニューが出てしまいます
これをWinキーは無効化、Win+◯のショートカットは使用可の状態で上記のような無変換モディファイアでもスタートメニューを出さずにWinキーを使うにはどうしたらよいでしょうか

147 :名無しさん@お腹いっぱい。:2014/10/10(金) 12:04:36.85 ID:rmqqh4nO0.net
~LWin up::returnか?知らんけど

148 :名無しさん@お腹いっぱい。:2014/10/10(金) 16:15:34.07 ID:qhVaLG0J0.net
>>146
ものすごく見にくいからスクリプト書いてくれない?

149 :名無しさん@お腹いっぱい。:2014/10/10(金) 16:16:01.80 ID:BSXRmBS+0.net
たしかにw

150 :146:2014/10/10(金) 19:23:58.58 ID:Eo0ZcuXK0.net
お騒がせしました、何とかなりました
別の場所でコメントアウトしたつもりになっていた`Send, %A_ThisHotkey%`が悪さをしてました

全角英字は間違えてF9押して、改行はソース部分しか考えてませんでした
見辛くてすみません

151 :名無しさん@お腹いっぱい。:2014/10/11(土) 22:08:31.70 ID:pLy45Zl50.net
バックグラウンドで動作しているfoobar2000を操作する方法ってありますか?
再生と一時停止だけでいいのですが

152 :名無しさん@お腹いっぱい。:2014/10/11(土) 22:25:49.06 ID:Dd3X7Gxp0.net
コマンドラインオプションでええんでない?

153 :名無しさん@お腹いっぱい。:2014/10/11(土) 22:40:28.54 ID:pLy45Zl50.net
>>152
そんな方法があるとは知りませんでした
ありがとうございます

154 :名無しさん@お腹いっぱい。:2014/10/12(日) 02:08:02.61 ID:ka83iPOV0.net
質問いいでしょうか?
キーバッファにaキーが入っていたらそれをクリアする
(フォーカスのあるウインドウに、aキーが送られないように、捨てる)
というのはどう記述できるでしょうか

155 :名無しさん@お腹いっぱい。:2014/10/12(日) 03:26:53.38 ID:nQwFVAmm0.net
>>154
キーの無効化
ttp://ahkwiki.net/Hotkeys
ウィンドウ指定するなら#If系追加

#If WinActive("***")
a::return
#If

156 :名無しさん@お腹いっぱい。:2014/10/12(日) 08:54:30.23 ID:ka83iPOV0.net
>>155
レスありがとうございます
しかしそれじゃダメでして、消したいキーをホットキーにしてそれを入り口にするのじゃダメなんです。
別のイベントが入り口で実行が開始されたルーチン内で突然行いたいのです。
例えるなら

^b::
traytip,AHK,ctrl+Bが押されました
<キーバッファにAが溜まっていたらそれをクリアする>
return

という風に(上記例の場合はCtrl+Bキーをホットキーに始まったルーチン内で、キーバッファの中のAをクリアする)動作を書きたいんです。
なお、破棄するキーを指定できなくても良くて、キーバッファになんであれキーが溜まっていたら全て破棄する、でもいいのです。

157 :名無しさん@お腹いっぱい。:2014/10/12(日) 09:44:45.84 ID:16/aRQoD0.net
こういうこと?よく分かんないけど。

*b::return
^b::
traytip,AHK,ctrl+Bが押されました
return

158 :名無しさん@お腹いっぱい。:2014/10/12(日) 10:52:44.85 ID:baQ/YGOu0.net
Input

159 :名無しさん@お腹いっぱい。:2014/10/12(日) 12:54:19.42 ID:ka83iPOV0.net
>>157
うーん、それでキーバッファに溜まった{a}キーがクリアされますかね?
^bキーで呼び出されてるけど消したいキーは{a}なんですよ。
>>158
input,akey,{a}
exitapp
と書いてみましたがダメでした。どう書いたらよいですかね…

160 :名無しさん@お腹いっぱい。:2014/10/12(日) 15:04:21.91 ID:PTpeNVHF0.net
OSからアプリにキー送出されるタイミングで捨てるなら
#If〜 系で拾って捨てるから >>155 出いいと思う

アプリ側でバッファ持ってるのならアプリ内部処理に手を入れる必要がありそうだけど。



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

161 :名無しさん@お腹いっぱい。:2014/10/12(日) 18:46:56.90 ID:nQwFVAmm0.net
>>159
条件は正確に書いてほしいな。
バッファやら捨てるとか小難しく書いてるけど要するに
すべてのキーボード入力を無効にできればいいんでしょ?

Reloadで変数がリセットされるので都合が悪いなら
Runで別のスクリプトとして実行

; 任意の場所
Flag := 1
Input, hoge
Return

#If Flag
F1::
Reload
Return
#If

他にはすべてのキーを動的にホットキーに割り当て、API関数でブロック等がある。以下参照
ttp://www.autohotkey.com/board/topic/21238-blocking-just-keyboard-not-mouse/page-2
ttp://www.howtogeek.com/howto/11570/disable-the-keyboard-with-a-keyboard-shortcut-in-windows/

162 :名無しさん@お腹いっぱい。:2014/10/13(月) 03:41:23.46 ID:lKOFMWjw0.net
FileAppendでお尋ねします。
FileAppendで作成したahkファイルに、IniReadからの変数を格納したいのですが
%で囲うと出力されたahkファイルの%が消えてしまいます。
これをどうにか出来ませんでしょうか、よろしくお願いします。
例えばこんな感じです。
FileAppend,
(
hensuu=hoge
msgbox, %hensuu%
), .\hoge.ahk

163 :名無しさん@お腹いっぱい。:2014/10/13(月) 04:09:15.95 ID:+E9tS+xs0.net
>>162
エスケープシーケンス
ttp://ahkwiki.net/Scripts

FileAppend,
(
hensuu=hoge
msgbox, `%hensuu`%
), hoge.ahk
Return

FileAppend, hensuu=hoge`nmsgbox`, `%hensuu`%`n, hoge.ahk

164 :名無しさん@お腹いっぱい。:2014/10/13(月) 04:27:02.69 ID:lKOFMWjw0.net
>>163
素晴らしい見事に出来ました!。
しかも1行でも出来るなんて知りませんでした。
`nが改行って意味ですかね?。
本当に有難うございました!。

165 :名無しさん@お腹いっぱい。:2014/10/14(火) 14:38:26.60 ID:hCZ+fo4f0.net
F1::
send, {joy1}
return
キーボードからゲームパッドの入力を送信したいのですが
上記の方法では無反応でした。
やり方がおかしいのでしょうか?

166 :名無しさん@お腹いっぱい。:2014/10/14(火) 14:43:24.05 ID:i/ormhIR0.net
AHKじゃできねーからPPJoyをつかえと英語フォーラムにあった

167 :名無しさん@お腹いっぱい。:2014/10/14(火) 15:11:12.19 ID:hCZ+fo4f0.net
無理ですか。どうもありがとうございました。

168 :名無しさん@お腹いっぱい。:2014/10/15(水) 12:41:23.73 ID:gbI8jPYi0.net
初心者です
ふと疑問に思ったんですが
ある市販ゲームが好きで自分で遊んでいて、操作をラクにするためにAHKで操作のマクロキーをいくつか作ったとして
それをブログで公開するのは何か問題ありますかね?
例えばメーカーに抗議されるなど。
チートするわけではなくてただ操作がかったるいから数クリックの手順を1キー化するだけのものなわけですが。

169 :名無しさん@お腹いっぱい。:2014/10/15(水) 13:27:58.60 ID:9ofnjSV0i.net
ネトゲなら自動化ソフトはチート扱いされるので問題。
ローカルなら個人の自由じゃね?

170 :名無しさん@お腹いっぱい。:2014/10/15(水) 13:28:29.60 ID:/ifvzPU50.net
問題はないだろう。ネトゲでもなきゃ

171 :名無しさん@お腹いっぱい。:2014/10/15(水) 13:32:58.29 ID:QhVnL5AW0.net
事例があるかどうか調べてみたらいい
なかったら、やめといた方が無難。そんなことお前でなくても考えるやつはいくらでもいる

172 :名無しさん@お腹いっぱい。:2014/10/15(水) 15:29:10.69 ID:gbI8jPYi0.net
なるほど。
ネトゲなら素早く操作できることは有利になってしまうから悪質なチート、ゆえに黒
オフラインゲームでも、リアルタイムゲームだったら有利になる、この場合スコア等のランキング競技が行われていたらチートなので黒

オフラインゲームで、非リアルタイムゲームで、ランキング競技が行われているならグレー
オフラインゲームで、非リアルタイムゲームで、ランキング競技が行われていなければ白

こんなところでしょうか?

173 :名無しさん@お腹いっぱい。:2014/10/15(水) 15:49:36.69 ID:pbCU82lu0.net
>>172
スレ違いもいいとこなんだけどもな
メーカーや運営元によって対応が違うとしかいいようがない
常識レベルで判断して文句を言われたらやめるでいいんじゃないの?
どこぞのちょんげはAHKが動いてると問答無用で起動しなくなったけどな

174 :名無しさん@お腹いっぱい。:2014/10/15(水) 22:34:26.22 ID:Vrs/cwT10.net
オフラインの信長の野望のマクロはAHKで作って2ちゃんで公開したこともある
ネトゲは自分専用、もしくは仲間内だけ

175 :名無しさん@お腹いっぱい。:2014/10/17(金) 13:14:05.97 ID:BrhP2Iy90.net
グループを作成するまでも無い場合に
Ifwinexistで複数のウィンドウタイトルを登録したいのですが
上手くいきません。
IfWinExist, ("ahk_class hoge") || ("ahk_class hage")

IfWinExist, ("ahk_class hoge") || IfWinExist("ahk_class hage")

If WinExist, ("ahk_class hoge") || WinExist, ("ahk_class hage")
を試してみましたが、反応無しです。

176 :名無しさん@お腹いっぱい。:2014/10/17(金) 13:25:32.03 ID:Vv/H+0d40.net
If WinExist("ahk_class hoge") || WinExist("ahk_class hage")

177 :名無しさん@お腹いっぱい。:2014/10/17(金) 13:36:11.85 ID:BrhP2Iy90.net
>>176
ありがとうございます!た

178 :名無しさん@お腹いっぱい。:2014/10/17(金) 15:58:28.92 ID:BrhP2Iy90.net
続けて質問すみません。
キーを長押しすると、キーを離した時にも短押しのキーが送信されてしまいます。
どう修正すれば良いですか?お願いします。
@::
KeyWait, @, T1
If Errorlevel
{
SoundPlay, *64
} else {
SoundPlay, *50
}
return

179 :名無しさん@お腹いっぱい。:2014/10/17(金) 16:16:32.51 ID:C/VdnYbz0.net
>>178
サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes

「1.1 1つのキーに3種類以上の動作割り当て」
を参照

180 :名無しさん@お腹いっぱい。:2014/10/17(金) 17:19:58.20 ID:BrhP2Iy90.net
>>179
サンプルを参照しながら作成したコードですが、どうにか正常に動作しているようです。
有難うございます。
@::
KeyWait,@,T1 ;長押し
If (ErrorLevel) {
SoundPlay, *64
KeyWait,@
Return
} else {
KeyWait,@,D T0.01 ;短押し
If (ErrorLevel) {
SoundPlay, *50
KeyWait,@
Return
}}
Return

181 :名無しさん@お腹いっぱい。:2014/10/17(金) 17:55:20.13 ID:Vv/H+0d40.net
>>180
>>178に1行追加するだけでよくない?
@::
KeyWait, @, T1
If Errorlevel
{
SoundPlay, *64
} else {
SoundPlay, *50
}
KeyWait, @
return

182 :名無しさん@お腹いっぱい。:2014/10/17(金) 18:18:43.78 ID:BrhP2Iy90.net
あ、本当ですね。
こんな書き方も出来るんですね。
有難うございます。

183 :名無しさん@お腹いっぱい。:2014/10/17(金) 18:45:59.28 ID:C/VdnYbz0.net
>>182
申し訳ない>>179のは汎用の関数にしとけば後々便利だからと言う意味で紹介したんだが、
もし必要ないなら以下のコードで良いと思う
>>181のは長押しで押し下げキープしてても時間切れ(T1)でスクリプトが走ってしまうよ

#UseHook
@::
KeyWait, %A_ThisHotKey%, T1
if (ErrorLevel) {
KeyWait, %A_ThisHotKey%
MsgBox, 長押し
}else{
MsgBox, 一度押し
}
return
#UseHook off

184 :名無しさん@お腹いっぱい。:2014/10/17(金) 19:03:06.88 ID:Vv/H+0d40.net
>>183
>>180が正常動作って言ってるんだから
>長押しで押し下げキープしてても時間切れ(T1)でスクリプトが走ってしまう
ってのはID:BrhP2Iy90が意図する動作でしょ

185 :名無しさん@お腹いっぱい。:2014/10/17(金) 19:08:02.18 ID:BrhP2Iy90.net
>>183
なるほど!このコードだと長押しキーを離した時に発動する訳ですね。
これらのコードは状況に応じて使い分けたいと思います。
参考になりました有難うございます。

186 :名無しさん@お腹いっぱい。:2014/10/17(金) 19:42:36.27 ID:C/VdnYbz0.net
>>184
それは申し訳ないことした
余計なこと言ってスマン

187 :名無しさん@お腹いっぱい。:2014/10/17(金) 19:43:32.67 ID:4Gc4/Uk80.net
>>183
A_ThisHotKey は割り込みで上書きされるので、
2行目以降で使うなら最初に変数に保存しないと確実とは言えない。
修飾キーも記録されるので意図した動作にならなくなる場合も。

保守性あげるなら変数にして外の出すのが一番いい。

$^@:: ; フックON: Ctrl + @
Key = @
KeyWait, %Key%, T1
if (ErrorLevel) {
KeyWait, %Key%
MsgBox, 長押し
}else{
MsgBox, 一度押し
}
return

188 :名無しさん@お腹いっぱい。:2014/10/18(土) 20:19:28.81 ID:uzEeu7zA0.net
CPUパワーで分岐ってできません?

CPUが100に辿り着くようなら優先度を下げたりクーリングソフトを起動したいんですけど

189 :名無しさん@お腹いっぱい。:2014/10/18(土) 20:41:14.14 ID:KIZ3Rd1H0.net
>>188
× CPUパワー = CPUの処理能力
○ CPU使用率

システムモニタ用関数群
ttp://ahk.xrea.jp/myscripts/index.html

190 :名無しさん@お腹いっぱい。:2014/10/18(土) 23:02:59.60 ID:uzEeu7zA0.net
>>189
試してみましたが7の64bitではうまく動かず……
元々の機能にはないんですね……

191 :名無しさん@お腹いっぱい。:2014/10/19(日) 01:18:28.99 ID:PD9qpF4D0.net
>>190
試したのか?必要な関数は動くから問題なし。

システム全体のCPU使用率 GetCPUState
プロセスごとのCPU使用率 GetProcessCPUState

192 :名無しさん@お腹いっぱい。:2014/10/19(日) 03:01:45.04 ID:avbnS+iq0.net
PixelGetColorで取得した色を10進数形式に直すにはどうしたらいいのでしょうか?

193 :名無しさん@お腹いっぱい。:2014/10/19(日) 03:48:05.11 ID:7Xcr5HvE0.net
検索能力ねえなおい

194 :名無しさん@お腹いっぱい。:2014/10/19(日) 03:58:47.76 ID:kijHBbOp0.net
>>192
ttp://ahkwiki.net/SetFormat

Var = 0xFF
SetFormat, Integer, D
ToolTip % Var += 0

195 :名無しさん@お腹いっぱい。:2014/10/19(日) 06:55:57.10 ID:oQdzw7Vr0.net
AHKを始めた初心者ですがどうしてもわからなくて将来不安なことがあります。例えば

IfWinExist,ほげほげ
ControlClick,Button1,ほげほげ

という文を書くと思い通りに動くんですが、これを

If(WinExist,ほげほげ){
ControlClick,Button1,ほげほげ
}

とすると動作しなくなるんです
これはどこがいけないんでしょう?

196 :名無しさん@お腹いっぱい。:2014/10/19(日) 07:12:21.79 ID:GTDvx+O50.net
If の直後に ( が存在する時点で Ifwinexist じゃなくて If として扱われる
つまり IfWinExist と If は全くの別物
If を使って同じことをやりたいなら Winexist() 関数を使う

If Winexist("hogehoge"){
Controlclick, button1, hogehoge
}

もしくは

If Hwnd := Winexist("hogehoge"){
Controlclick, button1, ahk_id %Hwnd%
}

197 :名無しさん@お腹いっぱい。:2014/10/19(日) 07:14:13.97 ID:oQdzw7Vr0.net
>>196
ああ〜な、なるほど!!…
目からうろこが落ちました
勉強しなおして参ります
ありがとうございました

198 :名無しさん@お腹いっぱい。:2014/10/19(日) 07:46:43.75 ID:YmvSC9Yj0.net
>>187
簡単に書けるように
何行目までは割り込みされないとかなかったっけ?

199 :名無しさん@お腹いっぱい。:2014/10/19(日) 13:12:55.40 ID:YOb+2qAx0.net
あるにはあるけど、割り込み制御は簡単な部類ではないと思う

保守性考えるなら、ローカル変数使えて使いまわしができる関数化がいい

^@::
 If IsLongPress()
  MsgBox, 長押し
 Else
  MsgBox, 普通押し
 Return

IsLongPress(timeout=1) {
 key := RegExReplace(A_ThisHotkey, "\S+\s+&\s+(?=\S+)|^[\$\^\+\*!#~<>]+")
 KeyWait, %key%, T%timeout%
 If (ErrorLevel) {
  KeyWait, %key%
  Return True
 }
}

200 :名無しさん@お腹いっぱい。:2014/10/19(日) 15:41:39.98 ID:XkW7Bx/b0.net
>>199
>RegExReplace(A_ThisHotkey, "\S+\s+&\s+(?=\S+)|^[\$\^\+\*!#~<>]+")
横からですが使わせてもらいました、ありがとう。

201 :名無しさん@お腹いっぱい。:2014/10/19(日) 15:42:50.25 ID:XkW7Bx/b0.net
連投すみませn

質問です。
関数key_double()で「普通押し」「2回押し」「長押し」を判定しそれぞれの処理をするんですが、
「判定用フラグ」と「押したキー」の二つを戻り値にする場合、以下のような書き方(1)しかないですかね?
また、(2)の部分で戻り値であるcount[2]をsendで直接使うこと出来ませんか?
Send, {%count[2]%}やSend, {% count[2]}は駄目でした。

F1::
 count := key_double()
 if (count[1] = 1) { ;普通押しの処理
  key := count[2] ;←←←←←←←←←←←(2)
  Send, {%key%} ;←←←←←←←←←←←(2)
 }else if (count[1] = 2) { ;2回押しの処理
 }else if (count[1] = 0) { ;長押しの処理
 }
return

1レス出かけなかったので分けます。

202 :名無しさん@お腹いっぱい。:2014/10/19(日) 15:43:51.16 ID:XkW7Bx/b0.net
>>201の続きです。

key_double() {
 ThisHotKey := RegExReplace(A_ThisHotkey, "\S+\s+&\s+(?=\S+)|^[\$\^\+\*!#~<>]+")
 KeyWait, %ThisHotKey%, T0.3 ;ここで長押しかどうか判断する。
 If (ErrorLevel) {
  KeyWait, %ThisHotKey%
  Return [0, ThisHotKey] ;←←←←←←←←←←←(1)
 }
 KeyWait, %ThisHotKey%, D T0.2 ;以下で通常の1回押しと判断する
 If (ErrorLevel) {
  KeyWait, %ThisHotKey%
  Return [1, ThisHotKey] ;←←←←←←←←←←←(1)
 }
 KeyWait, %ThisHotKey% ;上記以外のものは連続2回押下と判断する
 Return [2, ThisHotKey] ;←←←←←←←←←←←(1)
}

203 :名無しさん@お腹いっぱい。:2014/10/19(日) 15:50:18.82 ID:XkW7Bx/b0.net
>>201-202
あ、言い忘れましたが、関数の戻り値二つを繋ぎ合わせて一つの文字列として返す方法も考えましたが、
(2)の部分で分離するための余計な処理(コマンド)が入るので却下しました。

204 :名無しさん@お腹いっぱい。:2014/10/19(日) 16:06:42.97 ID:XkW7Bx/b0.net
すみません>>201-203です。
質問取り下げます。
(2)の所は1行になるか2行になるかだけのことなので、やっぱこのまま使って行きます。
お騒がせしてすみませんでした。

205 :名無しさん@お腹いっぱい。:2014/10/19(日) 16:43:17.42 ID:YmvSC9Yj0.net
> ThisHotKey := RegExReplace(A_ThisHotkey, "\S+\s+&\s+(?=\S+)|^[\$\^\+\*!#~<>]+")

これ相当のキー情報って、なぜ標準で変数化してないんだろう

206 :名無しさん@お腹いっぱい。:2014/10/19(日) 18:41:17.41 ID:OQE6gHRO0.net
windows7の入力言語を切り替えるキーシーケンスというのを使用したいのですが、
ahkではうまくバインドが機能しないのでしょうか?

AltとShiftだけを押して切り替えるというものですが、
F1::Send, +!{} やF1::Send, +!
としても伝わらないのですよね。

ahk関係無いですけど、ウインドウズアプデからか、
windows7のUSキーボードへの切り替えが動かなくなった。

207 :名無しさん@お腹いっぱい。:2014/10/19(日) 19:14:08.92 ID:kijHBbOp0.net
>>206
文法ミス、修飾シンボルはキー(修飾以外)なしでは使えない。

○ Send, {Ctrl down}{Alt}{Ctrl up}
× Send, ^{Alt}

○ Send, ^{F1}
○ Send, ^a
○ Send, {Ctrl down}a{Ctrl up}

208 :名無しさん@お腹いっぱい。:2014/10/19(日) 19:25:19.40 ID:k5QMyDEh0.net
MouseGetPosでクリックした瞬間の、アクテイブではないウィンドウの情報を取得できますか?

例えば
AとBというウィンドウがあり、Aがアクテイブ、Bがそのウィンドウに半分ほど隠れている場合
Bをクリックした時にMousegetposすると、Aの情報が取得されてしまいます。
(アクテイブウィンドウの左上からの相対座標で取得されるため)
具体的には以下のように記述しています。

$MButton::
MouseGetPos,x,y,id,,,
WinGetTitle, title, ahk_id %id%
WinGetPos,,,width,height,%title%

MouseGetPosが「アクテイブウィンドウ」ではなく「マウスの下のウィンドウ」を
対象に発動するようなオプションがあればいいんですが。

209 :名無しさん@お腹いっぱい。:2014/10/19(日) 19:45:21.18 ID:crmDs94N0.net
>>208
sleep.500
とかを間に挟んでもだめ?
しばらく時間をかければいいような

210 :名無しさん@お腹いっぱい。:2014/10/19(日) 20:02:37.43 ID:k5QMyDEh0.net
>>209
ありがとうございます。
確かにMouseGetPosの前にsleep入れれば成功率は上がるけど、
それだと普通のクリックに遅延が発生するのであまりやりたくないんですよね。
どこをミドルクリックしたかで分岐して、条件に合わないなら普通にMbuttonをsendするので。

211 :名無しさん@お腹いっぱい。:2014/10/19(日) 20:15:40.21 ID:kijHBbOp0.net
>>208
マウス位置を絶対座標にしてウィンド座標の分、引けばいい。
最大化したウィンドウは枠の幅だけめり込むので処理と計算忘れずに。
枠の幅はOSや個人設定ごとに違うので自動で取得したいならAPI関数 GetSystemMetrics。

Loop {
CoordMode, Mouse, Relative
MouseGetPos, x1, y1, id
CoordMode, Mouse, Screen
MouseGetPos, x2, y2
WinGetPos, x3, y3,,, ahk_id %id%
ToolTip % "相対 Mouse X" x1 " - Y" y1 "`n絶対 Mouse X" x2 " - Y" y2 "`n   Win X" x3 " - Y" y3 "`n`n絶対 Mouse-Win`nMouse X" x2-x3 " - Y" y2-y3
Sleep 100
}

212 :名無しさん@お腹いっぱい。:2014/10/19(日) 20:22:06.18 ID:k5QMyDEh0.net
>>211
なるほど、coodemodeにヒントがありそうだと思いつつ具体的な手法は思いつきませんでした。
ありがとうございました。

213 :名無しさん@お腹いっぱい。:2014/10/19(日) 21:20:49.86 ID:oQdzw7Vr0.net
SHIFT+CTRL+Cで選択中の文字列をクリップボードの現在の内容の末尾に追加
というのをやりたいんですがAHKでできるでしょうか
選択中の文字列を取得するというのがどうやればいいのか…

214 :名無しさん@お腹いっぱい。:2014/10/19(日) 21:29:57.65 ID:H00Nf1jV0.net
手動ではどうやってんだよw
選択して、ctrlとcだろ
余裕でできる

215 :名無しさん@お腹いっぱい。:2014/10/19(日) 21:53:09.62 ID:OQE6gHRO0.net
>>207
ありがとうございました。動きました。
{Ctrl down}{Alt}{Ctrl up}ってのよく見るけど
どう書いていいかわからない。

216 :名無しさん@お腹いっぱい。:2014/10/20(月) 00:35:56.85 ID:3mNrEnm10.net
そのままだよ。コピペでいい。
んで、キーリストのページ見る。

217 :名無しさん@お腹いっぱい。:2014/10/20(月) 08:27:57.70 ID:krjG3pSr0.net
>>210
MouseGetPosの使い方はホイールリダイレクト系のスクリプトが参考になる
マウスポインタの指定の位置を調べるには WM_NCHITTESTとか使うと楽かも

218 :名無しさん@お腹いっぱい。:2014/10/20(月) 11:36:05.69 ID:Xd5dhvzT0.net
MouseGetPos,,,OutputVarWin
ControlSend,,{Ctrl Down}{PgUp}{Ctrl Up}, ahk_id %OutputVarWin%

Chromeに送ってもアクティブなときは動作するが
非アクティブ時には動作しません
どこを直せばいいんですか?

219 :名無しさん@お腹いっぱい。:2014/10/20(月) 12:04:28.46 ID:XidiUF+W0.net
最初に隠れたウィンドウを発見してやるぞってしてますか?

220 :名無しさん@お腹いっぱい。:2014/10/20(月) 16:51:58.39 ID:cbiaeQ310.net
>>218
Chromeの仕様、非アクティブではショートカットは動かない。
スクロールバーコントロールに直接送ればいい。
WheelScroll か WheelAccel 参考にするとよくわかる。

221 :名無しさん@お腹いっぱい。:2014/10/20(月) 21:36:04.59 ID:Xd5dhvzT0.net
遅れてすみません
スクロールバーコントロールに送れば非アクティブ時にも動くんですね
有難うございます<(_ _)>

222 :名無しさん@お腹いっぱい。:2014/10/21(火) 15:44:41.41 ID:2F3R3pA10.net
どなたかPidから実行ファイルのフルパスを取得する方法を知りませんですか?

環境はwin764bitです

223 :名無しさん@お腹いっぱい。:2014/10/21(火) 16:25:30.38 ID:buZjxKjB0.net
http://ahkwiki.net/WinGet

224 :名無しさん@お腹いっぱい。:2014/10/22(水) 17:15:08.46 ID:aOOqliog0.net
お尋ねします。
以下のコードだとキー連打が止まりません。
よろしくお願いします。

Sleep=500

@::
Toggle:=!Toggle
While (Toggle) {
Send, {a}
Sleep %Sleep%
}
return

225 :名無しさん@お腹いっぱい。:2014/10/22(水) 17:24:44.60 ID:sQIL7yCG0.net
>>224
何をしたいのか具体的に書いた方が良いぞ

226 :名無しさん@お腹いっぱい。:2014/10/22(水) 17:26:22.70 ID:aOOqliog0.net
>>224
すみません
一回押すとキー連打。
もう一度押すとキー連打解除したいのです。

227 :名無しさん@お腹いっぱい。:2014/10/22(水) 17:57:35.86 ID:sQIL7yCG0.net
>>226
http://ahkwiki.net/SampleCodes
ここの、「1.2 キーを押す度に機能を切り替え」が参考になるんじゃないだろうか

228 :名無しさん@お腹いっぱい。:2014/10/22(水) 18:13:29.96 ID:xfnY+0wX0.net
prd = 500

@::
Toggle:=!Toggle
if(Toggle){
SetTimer, KeyRpt, %prd%
}else{
SetTimer, KeyRpt, off
}
return

KeyRpt::
Send, a
return

これでいけるかな?

229 :名無しさん@お腹いっぱい。:2014/10/22(水) 18:15:39.32 ID:xfnY+0wX0.net
訂正
KeyRpt:: → KeyRpt:

230 :名無しさん@お腹いっぱい。:2014/10/22(水) 18:36:49.77 ID:aOOqliog0.net
>>227
誘導有難うございます。
為になるサンプルコードが沢山ありますね。

>>228
本当に素晴らしい!動作しました!。
いつも有り難うございます。

231 :名無しさん@お腹いっぱい。:2014/10/22(水) 18:39:56.25 ID:GFPASYaO0.net
流行らせるページにもあったサンプルやろ?

232 :名無しさん@お腹いっぱい。:2014/10/22(水) 19:03:43.68 ID:rzkTofTm0.net
>>230
ここら辺を意識するといい。

*同じスレッドは終わるまで再度呼び出せない
*別のスレッドなら割り込める
*SetTimerは別スレッドを一定間隔で呼び出せる
*無期限Loopすると抜け出し系コマンドをするまでスレッドが終わらない

F1::
ToolTip 同じスレッドは終わるまで再度呼び出せない
Sleep 2000
ToolTip
Return

F2::
ToolTip 別のスレッドなら割り込める
Sleep 2000
ToolTip
Return

233 :名無しさん@お腹いっぱい。:2014/10/22(水) 20:27:19.90 ID:CKawI1ku0.net
>>232
ご助言有難うございます。
今後の参考にさせて頂きます。

234 :名無しさん@お腹いっぱい。:2014/10/23(木) 11:28:20.30 ID:Kg7sunpy0.net
エクスプローラで現在選択中のファイルのファイル名をフルパスで取得するには良い知恵がないでしょうか
例えば、c:\aaa.txt と c:\bbb.txt と c:\ccc.txt を選択状態にしていたとしたら、
"c:\aaa.txt c:\bbb.txt c:\ccc.txt"
という具合の文字列で受け取りたいんですが

235 :名無しさん@お腹いっぱい。:2014/10/23(木) 11:43:05.34 ID:2VLaV8Dk0.net
BlockInput, MouseMove
についてなのですが、A.ahkというファイルでこの命令を使ってスクリプトを作りました
でも万が一、ブロックされたままになってしまったらいやなので、B.ahkという別のファイルで、この中で
BlockInput, MouseMoveOff
を入れて解除しようとしました。
すると、B.ahkでは解除できないことがわかりました。
そういう仕様なのでしょうか。ちょっとびっくりしました
つまり、A.ahkというスクリプト内でブロックしたものは、同じA.ahk内で解除しないと解除出来ないということですか

---
なぜこんなことをしたかというと、A.ankの中でもBlockInput, MouseMoveOffを入れていたのですが
わたしの考え違いで、別ファイルのキーとダブって動かなくなるというハプニングが起こりました
なので念のためってことで別ファイルでも解除できるようにしておこうと思い試しにやってみました

236 :名無しさん@お腹いっぱい。:2014/10/23(木) 11:44:27.26 ID:7/gMXTGO0.net
>>234
send,^c
msgbox,%clipboard%

237 :名無しさん@お腹いっぱい。:2014/10/23(木) 12:20:32.55 ID:Kg7sunpy0.net
>>236
あ、そうか・・・クリップボードにファイル名が入るんだ
お恥ずかしい ありがとうございました助かりました

238 :名無しさん@お腹いっぱい。:2014/10/23(木) 12:29:18.58 ID:uHZUyj420.net
実は文字列取り出すならもう一手間あったほうが安定

send,^{c}
sleep,10
clipboard = %clipboard% ;ここで文字列に変換

239 :名無しさん@お腹いっぱい。:2014/10/23(木) 12:31:59.53 ID:uHZUyj420.net
あと、更にもう一手間かけてやっとファイル単体で取り出しが可能になる事も付け加えとく

loop, Parse, clipboard,`n
{
msgbox % A_LoopField
}

240 :名無しさん@お腹いっぱい。:2014/10/23(木) 14:50:46.58 ID:eJVjRIgq0.net
Send,^cしてもすぐにはクリップボードに入らない事もあるから、いったんクリップボードを空にしてClipwaitで待つといいぞ
Send,^c → Clipboard=%Clipboard%はファイルのパスだけじゃなく、ホームページやWord、Excelで書式無視してテキストだけコピーしたいときにも使える

241 :名無しさん@お腹いっぱい。:2014/10/23(木) 16:11:57.66 ID:Kg7sunpy0.net
>>239
ありがとうございます

242 :名無しさん@お腹いっぱい。:2014/10/23(木) 17:43:06.66 ID:CNljdQjZ0.net
>>235
誤動作を避けるための適切な動作だと思う。
スクリプト間のやり取りはOnMessage()で可能だが下準備がめんどうなので
予期せぬ動作をしたときのために何でもいいので停止用のホットキーを設定するといい。

~ESC::
BlockInput, MouseMoveOff
;ExitApp

243 :名無しさん@お腹いっぱい。:2014/10/23(木) 18:08:41.38 ID:Zun2B3NB0.net
キーバインド変更の仕組みは、普通はOSが一手に担っているけど
そこをAHKがフックという仕組みで乗っ取ってキーバインドを変更して
別のキーを発行したりできている。

BlockInputもこの乗っ取った権限で、全てのキー入力を無効化して
実現しているんで、元締めをどうにかしないと無理。

なので、ある程度の動作原理が分かっていないと使い分けが難しい。

ただ、ボリューム操作のようにOSに依頼を投げるだけのコマンドもあって、
VolumeMute.ahk
みたいな音消しだけのファイルで安全策をとりたいみたいな考え方は、
いたって普通なんだけどね...

244 :名無しさん@お腹いっぱい。:2014/10/23(木) 18:22:45.84 ID:anJi56Hp0.net
>>235
ミスとかでBlockinputがOnのままになっているならCtrl+Alt+Delで強制解除でいいんじゃね?

245 :名無しさん@お腹いっぱい。:2014/10/23(木) 18:31:39.39 ID:CNljdQjZ0.net
>>244
BlockInput, MouseMove は解除されない。

246 :名無しさん@お腹いっぱい。:2014/10/23(木) 18:31:50.58 ID:anJi56Hp0.net
ごめん、Blockinput,On はCtrl+Alt+Delで解除出来るけど、Blockinput,Mousemove は解除出来んかった

247 :名無しさん@お腹いっぱい。:2014/10/24(金) 08:01:35.90 ID:r4DLl0l30.net
BlockInput, MouseMoveなんて知らんかったわ
BlockInput, MouseMoveをかけたままで、スクリプトを終了したらどうなんの?
ブロックしたままになる?

248 :名無しさん@お腹いっぱい。:2014/10/24(金) 10:03:07.52 ID:DQd3lVSY0.net
なぜ読まない

249 :名無しさん@お腹いっぱい。:2014/10/24(金) 10:54:38.70 ID:bTFzyLbX0.net
指定したあるプロセスの負荷の高低がどのくらいであるかを数値化して得る方法ってない?

250 :名無しさん@お腹いっぱい。:2014/10/24(金) 11:46:20.79 ID:m2znpme60.net
CPU使用率でこのスレを検索

251 :名無しさん@お腹いっぱい。:2014/10/24(金) 17:19:03.59 ID:1MK5qTM+0.net
>>241

すでに解決済みの件への返信ですが…。

以前、大きなファイルのパスをを^Cで取得するときに、sleepだと待ち時間の
調整が難しく、他の方法を調べたことが有ります。以下のフォーラムの記事に
あるExplorer_GetPathに、Explorerで選択中のファイルを取り出す処理が出て
いたので、これを参考にしてスクリプトを作りました。

http://www.autohotkey.com/board/topic/60985-get-paths-of-selected-items-in-an-explorer-window/

こういう方法もあるという事で…。

252 :名無しさん@お腹いっぱい。:2014/10/24(金) 21:49:51.04 ID:nMvH5OrN0.net
〜〜

253 :名無しさん@お腹いっぱい。:2014/10/25(土) 11:23:28.10 ID:yqQHY7uN0.net
Firefoxの特定のサイトの中の特定の入力フォームに文字入力のキャレットを移すことってできますか?

254 :名無しさん@お腹いっぱい。:2014/10/25(土) 12:07:01.24 ID:c41pt2iR0.net
はい

255 :名無しさん@お腹いっぱい。:2014/10/25(土) 12:11:14.98 ID:yqQHY7uN0.net
>>254
面白く無いから。お前は死ぬまでネット禁止。

256 :名無しさん@お腹いっぱい。:2014/10/25(土) 13:30:20.23 ID:9ywbXkBt0.net
じゃあお前は死ぬまで質問禁止な

257 :名無しさん@お腹いっぱい。:2014/10/25(土) 13:34:13.94 ID:c41pt2iR0.net
質問に答えただけなんだがなw
AHKでこういうこと出来ますかって質問なら「出来ます」という回答で十分だろ
使ってる人がそれをやろうとして、どこで詰まってるのかを聞きたいなら質問はもっと具体的になるはずなんだし

258 :名無しさん@お腹いっぱい。:2014/10/25(土) 13:59:36.80 ID:GA08HhW+0.net
そういえばできるよな。
スキルの低いと時はムリだと思ってたけど、
今なら特定サイトの特定フォームで半角入力に切り替えというスクリプトが書けそう

259 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:20:46.44 ID:yqQHY7uN0.net
>>257
てめえみたいなのをアスペか意地悪なバカというんだよ
じゃあ「○○という処理をするにはどういうコードを書いたらできますか?」って質問に対しても
「その処理をするのに必要な資料を集め、アルゴリズムを考えて、頭に浮かんだコードを書けばできます」
と答えたっていい
結局のところ意地悪か親切か、空気読めないか空気読めるか、掬い取れないか救い取れるかだけで全てが決まるんだバカ

260 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:38:33.83 ID:PWii7UZj0.net
はいはいそんなに怒ってもそんな態度じゃヒントくれる人居ないよ
ただの喧嘩でスレ消費とか無駄なだけだよ。NGIDに入れられて終わりだよ

261 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:42:35.58 ID:yqQHY7uN0.net
>>260
>>254のレスが最高の無駄だろうが。それに対して>>255の簡潔なレスをしたのにしつこく無駄レスしてきたのは>>256->>257>>260お前だ

262 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:45:15.14 ID:yoETYJOG0.net
>>253
できる

263 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:47:26.61 ID:rqBHY/4o0.net
どうどう。落ち着け
チンピラにチンピラな態度で接しても相乗効果でどっちもウザイだけだ

264 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:49:05.75 ID:Fxrug+U/0.net
これさソフ板のいろんなスレでたびたび見かけて
キレ後の言いぐさも全部同じパターンなんだけど

もしかして長年全部同一人物がやってんのかな?

265 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:52:00.62 ID:bSPjgmd80.net
今回以外にも今までも時々出没してるけど、「〜できますか?」の質問だけで
至れり尽くせりな出来上がりスクリプトな回答期待するやつは完全放置でいいよね

266 :名無しさん@お腹いっぱい。:2014/10/25(土) 14:54:57.45 ID:d4Y8OfvJ0.net
>>259
スレをひと通り読めば分かると思うんだが、
「○○という処理をするにはどういうコードを書いたらできますか?」 ではダメなんだよ

「○○という処理をすることを目的に、このようなスクリプトを組みましたがうまく動きません
どこを修正すればいいですか?」 という聞き方にしてみればいいじゃん
もっと言えば、「動かない」だけではなく、「××といった想定外の動作になります」ならベター

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

267 :名無しさん@お腹いっぱい。:2014/10/25(土) 15:19:14.89 ID:8WDfQDUs0.net
>>10-11より>>266のほうがテンプレ向きじゃないか

268 :名無しさん@お腹いっぱい。:2014/10/25(土) 15:23:23.96 ID:LGXb/cyu0.net
>>11の後半がそれじゃないのか?

269 :名無しさん@お腹いっぱい。:2014/10/25(土) 17:38:10.13 ID:tX7Ab2zA0.net
>>261
おまえさあ、そうやってブチ切れてスレ汚してたら2度とその答え出てこなくなるぞ。聞く立場なんだからもっとわきまえろ

270 :名無しさん@お腹いっぱい。:2014/10/25(土) 18:14:54.50 ID:9ywbXkBt0.net
>じゃあ「○○という処理をするにはどういうコードを書いたらできますか?」って質問に対しても
>「その処理をするのに必要な資料を集め、アルゴリズムを考えて、頭に浮かんだコードを書けばできます」
>と答えたっていい

マジレスすると本気でそう答えるのがこのスレ
努力の見えない奴には親切にしないって不文律があるんだよ

271 :名無しさん@お腹いっぱい。:2014/10/25(土) 18:21:54.29 ID:sMluUZPl0.net
最初から荒らし目的だろ
>>255の反応があり得ないもん

272 :名無しさん@お腹いっぱい。:2014/10/25(土) 18:56:28.65 ID:/TR0jGWn0.net
だから週末に変な態度の書き込みするやつはスルーしろってことでいいじゃん

273 :名無しさん@お腹いっぱい。:2014/10/25(土) 22:25:28.86 ID:Xcc8NEj00.net
2点スクリプトでうまくいかないことがあり質問です

1.
無変換キーにAlt+Spaceを押下状態も含めて割り当てたく
sc07B::!Space
と書きましたがAlt部分が無視されているようで、スペースキーを押したような動作にしかなりませんでした
そこで、 sc07B:: Send, {Blind}{!Space} と書きましたがこれはスペースキーも無視されているようでした
どのように書けば押下状態も含めて割り当てできるのでしょうか・・・

2.
上に似たことなのですが、無変換キーにAlt+Ctrlを押下状態も含めて割り当てたく
sc07B::!Ctrl や sc07B::^Alt と書いてみましたが押されてもいないようでした・・・
修飾キーのみの割り当てというのは出来ないのでしょうか
出来るとしたらどのように書いたら良いのでしょうか

長くてすみません よろしくお願いします

274 :名無しさん@お腹いっぱい。:2014/10/25(土) 22:44:46.54 ID://cgmXuo0.net
Send, {Alt Down}{Space Down}
Send, {Alt Up}{Space Up}

275 :名無しさん@お腹いっぱい。:2014/10/25(土) 23:33:19.95 ID:D1URAdva0.net
>>273
1. キー押し操作早すぎて対象が反応してないのでは?
 SetKeyDelay,, 50
 http://ahkwiki.net/SetKeyDelay

 SendModeを変更する方法も
 http://ahkwiki.net/SendMode

○ sc07B::!Space
○ sc07B::Send, {Blind}!{Space}
× sc07B::Send, {Blind}{!Space}

2. Send

276 :名無しさん@お腹いっぱい。:2014/10/25(土) 23:48:03.93 ID:Xcc8NEj00.net
>>274 >>275
ありがとうございます
sc07B:: Send, {Alt Down}{Space Down}
sc07B up:: Send, {Alt Up}{Space Up}
このように書いてみたのですが1行目だけ有効になっているのかキーを離しても押しっぱなしになってしまいました

sc07B::
Send, {Alt Down}{Space Down}
Send, {Alt Up}{Space Up}
return
これだと押しっぱなしの時に連打されてしまうようです

無変換キーを押している状態→Alt+Spaceが押されている状態
無変換キーを離した状態→Alt+Spaceが離されている状態
としたかったのです わかりにくい説明ですいません
sc07B::!Space や sc07B::Send, {Blind}!{Space} で行けそうなものなんですが・・・
>>275さん書き方訂正ありがとうございます

277 :275:2014/10/26(日) 00:13:58.81 ID:0kPvaJ4V0.net
>>276
sc07B::
Send, {Alt Down}{Space}{Alt Up}
; Send, !{Space}
KeyWait, sc07B
return

278 :名無しさん@お腹いっぱい。:2014/10/26(日) 00:16:17.42 ID:0kPvaJ4V0.net
sc07B::
Send, {Alt Down}{Space Down}
KeyWait, sc07B
Send, {Alt Up}{Space Up}
return

279 :名無しさん@お腹いっぱい。:2014/10/26(日) 00:28:36.98 ID:tiCIXjdb0.net
>>277>>278
うわあああああ
ありがとうございます
>>278のやり方でできました!
KeyWaitで置換元のキーを待つというやり方があったんですね

>>274,275さん 何時間もおつきあいありがとうございました!助かりました!

280 :名無しさん@お腹いっぱい。:2014/10/26(日) 12:08:02.05 ID:J8vD1clW0.net
AHKの質問というか、一行の記述で同じ文字列を任意の回数だけ繰り返して連結させる方法はありますか?

281 :名無しさん@お腹いっぱい。:2014/10/26(日) 13:43:49.26 ID:s0/v9dcu0.net
functionで外に追い出すかRegexReplace使うかじゃね

282 :名無しさん@お腹いっぱい。:2014/10/26(日) 13:45:48.31 ID:TcmbrTPu0.net
任意のキーを Alt にリマップする方法についてどなたかお知恵を拝借し
たく存じます。
環境は Windows 7 Professional (32bit)で AutoHotkey は最新版
(1.1.16.5)です。以下のようにリマップを利用して、ウインドウズキーを
LAltに、アプリケーションキーを RAlt に設定しています。

LWin::LAlt
AppsKey::RAlt

これで問題なく作動するのですが、Alt+Tab の挙動だけが奇妙になりま
す。
たとえばアプリケーションを三つ開いている場合に Alt+Tab を押すと、言
うまでもなく三つのアプリケーションのアイコンが並ぶ画面が現れます。任
意のアイコンを選択して指を離すと該当のアプリケーションがアクティブに
なり、アイコンを列挙した画面は消えます。
ところが上述のリマップで設定した LWin+Tab や Appskey+Tab を実行
すると、アイコンが並ぶ画面が現れ、任意のアイコンを選択して指を離す
と選んだアプリケーションがアクティブになるまではよいのですが、指を離し
たあともアイコンが並んだ画面が消えずに残ってしまいます。Escape を押
すと選択画面が消えます。

Escape キーを押せば選択画面が消えるので実害はないのですが、Alt
+Tab 同じように、指を離した瞬間に選択画面が消えるようにするにはど
うすればよいのでしょうか。試みに以下のようなスクリプトを作ってみました
が、文法エラーのダイアログが出てしまいます。

LWin Up::{LAlt Up}
LWin Down::{Lalt Down}

どなたかお知恵を拝借できればありがたいです。

283 :名無しさん@お腹いっぱい。:2014/10/26(日) 17:37:38.72 ID:J8vD1clW0.net
>>281
functionで作りました。ありがとう

284 :名無しさん@お腹いっぱい。:2014/10/26(日) 18:06:10.81 ID:SbGCaq+G0.net
>>282
LWin::LAlt
LWin & Tab::AltTab
AppsKey::RAlt
AppsKey & Tab::AltTab

自分の環境だとこれでちゃんと動くけどどうかな

285 :名無しさん@お腹いっぱい。:2014/10/26(日) 18:10:55.39 ID:TcmbrTPu0.net
>>282
レスをありがとうございます! おかげさまで無事に動きました。
LWin & Tab と AppsKey & Tab をリマップさせればよかったのですね。
勉強になりました。

286 :名無しさん@お腹いっぱい。:2014/10/26(日) 19:20:35.47 ID:0kPvaJ4V0.net
フックを使っても正常に動作しないのか?
$LWin::LAlt

>>284-285
この例だとLAltの保持が出来ないので本来の動作にならない。
コンビネーションキーで {LWin Down} の機能が奪われているので
LWin::LAlt が別の意味になる。

LWin::LAlt
LWin & Tab::AltTab
   ↓以下と同等
LWin up::Send {LAlt}
LWin & Tab::AltTab


機能殺したくないなら #If で可能。

LWin::LAlt
#If GetKeyState("LWin")
Tab::AltTab
#If

287 :名無しさん@お腹いっぱい。:2014/10/26(日) 20:15:14.65 ID:TcmbrTPu0.net
レスをありがとうございます。
フックを使っても正常に作動せず、アイコンが並んだ画面が残ってしまい
ます。
しかもご指摘のとおり、LAlt の保持ができないので、本来の動作になり
ません。
ご教示下さった #If を使うスクリプトを試してみましたが、やはりアイコンが
並んだ画面が残ります。

288 :名無しさん@お腹いっぱい。:2014/10/26(日) 20:16:07.22 ID:TcmbrTPu0.net
連投すみません。
287 は >>286 へのレスです。

289 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:16:45.73 ID:cLCeK9cZ0.net
関数化というかサブルーチン化に関してなんですが

Keywait,%A_thishotkey%

だと*とか~とか+^などの記号が先頭にあるときっちり動きません
なのでこういう行を挟んでるんですが

loop
{
If KPress contains ^,+,!,*,~,#,<,>
StringTrimLeft, KPress, A_ThisHotkey, 1
else
BREAK
}

これ以外にもうちょっとスマートに出来ませんか?

290 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:17:52.68 ID:cLCeK9cZ0.net
一行忘れてた

KPress := A_ThisHotkey
loop
{
If KPress contains ^,+,!,*,~,#,<,>
StringTrimLeft, KPress, A_ThisHotkey, 1
else
BREAK
}

です

291 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:20:30.47 ID:3Jl2pF8+0.net
十分スマートな気が…
While文にするくらい?

292 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:29:58.20 ID:0kPvaJ4V0.net
>>287
間違ってますね・・・。
できそこない書いてしまったすいません。
以下修正 ※インデント全角

LWin::LAlt
#If GetKeyState("LWin", "P")
*Tab::
Send {Alt Down}{Ctrl}{Tab}
While GetKeyState("LWin", "P") {
 If GetKeyState("Tab", "P") {
  Send {Tab}
  KeyWait Tab
 }
 Sleep 100
}
Send {Alt Up}
Return
#If

293 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:48:43.81 ID:s0/v9dcu0.net
>>289
>199の後半部分アレンジでいけるんじゃね

294 :名無しさん@お腹いっぱい。:2014/10/26(日) 21:57:33.48 ID:TcmbrTPu0.net
>>292
修正版のスクリプトありがとうございます。
おかげさまで希望通りに動作しました!
GetKeyState は使ったことがないので、今後応用できるように wiki で
勉強することにします。

295 :名無しさん@お腹いっぱい。:2014/10/27(月) 01:48:30.70 ID:K3QUeHn30.net
さて話AHKでFirefoxで表示しているウェブサイトの特定の入力フォームにフォーカスを当てるにはどう書いたらいいのん?
まるっきりとっかかりも思いつかないのだがこの機能はぜひとも付けたいの。

296 :名無しさん@お腹いっぱい。:2014/10/27(月) 02:02:44.91 ID:lapFYZe80.net
ゴネりゃなんとかなると思ってるバカうぜえ

297 :名無しさん@お腹いっぱい。:2014/10/27(月) 02:51:22.84 ID:nt+qhS2U0.net
>>295
画像認識などのごり押しを除いてAutoHokey単体では無理。
FirefoxのアドオンやJavaScriptと連携させるしかないので、
それらブラウザ用のスクリプト言語を勉強してください。
以降の質問はそれらの専用スレでどうぞ。

298 :名無しさん@お腹いっぱい。:2014/10/27(月) 08:14:04.81 ID:I+/TBlJ40.net
逆に言えば画像認識などのごり押しつかえばできるな
とっかかりは教えてやったんだからもう来るなよ

299 :名無しさん@お腹いっぱい。:2014/10/27(月) 14:05:59.34 ID:K3QUeHn30.net
>>296 お前はほんっとうに建設的という概念を知らないな〜だから人望ゼロなんだよ!次の人を見習え
>>297 具体的な情報をありがとう!そうかーAHK単体ではできないんだな。アドオンと連動させることにするよ。
>>298 画像認識ってimagesearchのことでいいのかな?具体的にimagesearchって書いてくれたほうが調べやすい
 だけどウェブページって拡大縮小しながら見てるから一定の画像にならなくて難しそうだね
 でもimagesearchのことを知れたからありがとう

300 :名無しさん@お腹いっぱい。:2014/10/27(月) 14:10:18.14 ID:4TruP7RY0.net
>>290
多分左から順番に削るってことだろうけど、Kpressから削らないとあかんよ

301 :名無しさん@お腹いっぱい。:2014/10/27(月) 21:57:23.55 ID:1s+JiUUy0.net
いい回答得たいなら、煽り(と感じたもの)はスルー。

見てるほうも嫌な思いしなくてすむ。

302 :名無しさん@お腹いっぱい。:2014/10/27(月) 23:26:59.84 ID:NbQnyb/Q0.net
つい2,3日前に来た荒らしと手口が全く同じじゃねぇか
工夫しろよ無能

303 :名無しさん@お腹いっぱい。:2014/10/27(月) 23:32:31.27 ID:DE599FNI0.net
同じ手口つか続いてたんだよ、質問内容一緒だし

304 :名無しさん@お腹いっぱい。:2014/10/27(月) 23:42:00.77 ID:Ft4vOG390.net
無能は荒らしにレスくれてやってるマヌケのほう

305 :名無しさん@お腹いっぱい。:2014/10/28(火) 00:03:29.20 ID:nt+qhS2U0.net
以上、同一人物によるID変更荒らしでした。

306 :名無しさん@お腹いっぱい。:2014/10/28(火) 08:50:11.69 ID:VsQ8Cd7V0.net
教えたがりが一番の癌だと証明されたわけだが

307 :名無しさん@お腹いっぱい。:2014/10/28(火) 10:36:09.54 ID:xJAXrSiK0.net
WinSet, Region, W300 H200 0-0, ahk_class Notepad

上記を実行しても領域外の窓枠が表示されたままです(しかし触れません)
正常動作ではないと思うのですが、解決策はありますか?

AutoHotkey 1.1.16.03
Windows7 64bit

308 :名無しさん@お腹いっぱい。:2014/10/28(火) 15:43:22.93 ID:ktlURSId0.net
もしかして接続されているキーボードがPS2接続かUSB接続で挙動違う事ある?

309 :名無しさん@お腹いっぱい。:2014/10/28(火) 16:04:01.95 ID:58pcnGNA0.net
>>306
いたずらに状況を悪化させてるもんな

310 :名無しさん@お腹いっぱい。:2014/10/28(火) 17:53:14.95 ID:15Bc24hj0.net
>>299
画像認識使わなくてもタブキーを指定回数入力でゴリ押しはできなくもない

311 :名無しさん@お腹いっぱい。:2014/10/28(火) 18:17:49.70 ID:zkpOGnkz0.net
>>305
単発荒らしは無視でおk

>>307
それは見える範囲の変更
サイズ変更したいならこれ
WinMove, ahk_class Notepad,,,, 300, 200

>>308
ない
キーボードのドライバーやソフトウェアの影響はある
ハード的には同時押し数の上限の違いはあるけどそれじゃない?

312 :名無しさん@お腹いっぱい。:2014/10/28(火) 19:53:29.15 ID:ktlURSId0.net
>>311
あ〜そっか、キボードドライバーの関係か、なるほどね。
それはあるかも

313 :名無しさん@お腹いっぱい。:2014/10/28(火) 22:17:19.72 ID:u+Z46rcY0.net
>>312
前スレだかの質問で、PAUSEの長押しが出来る人とそうでない人が居たよね。
俺の環境でもPAUSE長押しは利かなかったけど、もしかしてと思ってPS2からUSBに接続してみた。
で、結果はUSBに接続し直したらPAUSEの長押しが動作した。
同じキーボードでもPS2とUSBでは、少なくともPAUSEキーの挙動は変わるみたい。
ま、俺の環境だけかも知らんけど、AHKの挙動が気になったら接続変えてみたら良い。

314 :307:2014/10/29(水) 09:43:15.56 ID:A7Eo6aHW0.net
>>311
その「見える範囲の変更」をやろうとしています
にもかかわらず設定範囲外に、触れない窓枠が見えています
これが変なんじゃないかと思いまして
私の環境問題なのでしょうか

AutoHotkey 1.1.16.03
Windows7 64bit

315 :名無しさん@お腹いっぱい。:2014/10/29(水) 09:48:26.05 ID:Bz20l3tw0.net
coordmodeはどうなってるん?

316 :名無しさん@お腹いっぱい。:2014/10/29(水) 11:49:36.05 ID:UK3ZmM3J0.net
>>314
当方vista 32bitだがaeroが有効になってると出るわ、それ

317 :名無しさん@お腹いっぱい。:2014/10/29(水) 14:45:29.23 ID:JTgdqIgG0.net
>>316
ありがとうございます!
Aeroオフで期待した動作が確認できました

318 :名無しさん@お腹いっぱい。:2014/10/30(木) 02:09:53.64 ID:T41lln6b0.net
>>317
ウィンドウスタイルで枠を消せばAero有効でもできる。

F1::
WinSet, Style, ^0x00CF0000, ahk_class Notepad ; -WS_OVERLAPPEDWINDOW
WinSet, Region, W300 H200 0-0, ahk_class Notepad
Return

F2::
WinSet, Style, ^0x00CF0000, ahk_class Notepad ; +WS_OVERLAPPEDWINDOW
WinSet, Region,, ahk_class Notepad
Return

319 :307:2014/10/30(木) 10:04:31.90 ID:xGgcMauy0.net
>>318
涙が出るほど素晴らしいです!

こうだと言われて説明を見れば、何となくそういう事かと思うけど
自分ひとりではたどりつけない答えです
どうもありがとう!

320 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:07:23.05 ID:Sjuta+wh0.net
SoundPlayについてなのですが
C:\Windows\Media\Windows リングイン.wav
を鳴らそうとしたら、Windowsとリングイン.wavの間にスペースが入っていて、ちゃんと認識してくれません
なので
"C:\Windows\Media\Windows リングイン.wav"
C:\Windows\Media\"Windows リングイン.wav"
などとやってみてもだめです。どうすればいいのでしょうか

一般的には、
SoundPlay, C:\Windows\Media\Windows リングイン.wav
でいいはずなのですが

321 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:28:08.35 ID:mMjDnel50.net
それ別名が割り当てられているだけだから実態のファイル名は違うよ

322 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:28:55.96 ID:WBy5M0ch0.net
>>320
Windows リングイン.wav を別の所にコピーしてみるといい。
Windows Ringin.wav って名前に変わる。これが正式なファイル名。
但し、デスクトップ以外にコピーすること。(デスクトップにフォルダ作ってその中にコピーするならOK)

323 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:37:21.19 ID:Sjuta+wh0.net
なるほど
SoundPlay, C:\Windows\Media\Windows Ringin.wav
でやったら、スペースが入っているにもかかわらず出来ました
ええ? なんで? 偽名前ってどういう仕組みで出来てるのですか?

324 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:43:19.70 ID:WBy5M0ch0.net
仕組みも何もWinodwsの仕様
特定のディレクトリの場合に別名を表示させている、そんだけ

325 :名無しさん@お腹いっぱい。:2014/10/31(金) 08:48:44.86 ID:Sjuta+wh0.net
そんな仕様があったなんて知りませんでした。そういえば他にも、なんで名前が変わってるのってのがありましたねえ
お気に入りフォルダーとかもかな。そういうことか
ありがとうございました

326 :名無しさん@お腹いっぱい。:2014/11/01(土) 13:07:48.73 ID:j4fp3bjoB
どうも出来ないので認識不味いのか何か仕様なのか・・・教えて欲しいのですが
極馬鹿単純な話しで シフト押しながらスペースがどうも出来ないです。

f2::+space

じゃないんでしょうか?
何ともショボイ話しですいません。。

327 :名無しさん@お腹いっぱい。:2014/11/01(土) 13:52:53.98 ID:ppOMnQFf0.net
配列内の全ての情報を外部に出力する場合はiniを使うのがベターなのかな?

328 :名無しさん@お腹いっぱい。:2014/11/01(土) 14:00:25.11 ID:O5eGNMoM0.net
「外部」でどうやって受けるかで変わるからなんとも言えんが

リアルタイムに受け取れるなら
Clipbordに全情報コピーしてSendMessageで通知渡せばオンメモリでいけるかも

329 :名無しさん@お腹いっぱい。:2014/11/01(土) 14:36:02.62 ID:ppOMnQFf0.net
>>328
配列内の全ての情報を一旦外部のファイルに記録して、あるタイミングでそのファイルから配列に読み込ませたいのですが、
Forなどで1つずつ情報を受け渡しする以外にスマートは方法はあるでしょうか?

330 :名無しさん@お腹いっぱい。:2014/11/01(土) 17:00:50.12 ID:hH57I32L0.net
>>327の質問が曖昧だから>>328の答なのに、
またしても>>329の質問が曖昧すぎるから、
誰も答えられない(答えない)んだろうな。

331 :名無しさん@お腹いっぱい。:2014/11/01(土) 18:01:53.23 ID:ppOMnQFf0.net
>>330
まだ曖昧でしたらすみません

>>328さん回答ありがとうございました


以下の記述があったとして

A := Object()
A := {画像: "jpg, gif" 動画: "mp4, avi"}

配列Aの情報をiniなどの外部ファイルに一旦記録

外部ファイルから記録した情報を読み込み、配列Bとして復元

この処理を複雑な多次元配列の場合でもできるだけスマートに行いたいのですが、
今のところ、記録の際はForコマンドなどで一行ずつ書き込み、読み込みの際も一行ずつ配列に代入してるのですが、
配列の情報を一括で扱う方法はあるのでしょうか?

332 :名無しさん@お腹いっぱい。:2014/11/01(土) 18:04:41.26 ID:ppOMnQFf0.net
>A := {画像: "jpg, gif" 動画: "mp4, avi"}
A := {画像: "jpg, gif", 動画: "mp4, avi"} に訂正します

333 :名無しさん@お腹いっぱい。:2014/11/01(土) 18:57:40.83 ID:O5eGNMoM0.net
FileAppend/FileRead使えばファイルアクセスは1回にまとめられる
テンポラリ変数にまとめるために結局ループ処理は必要になるんじゃね

334 :名無しさん@お腹いっぱい。:2014/11/01(土) 19:43:19.70 ID:ppOMnQFf0.net
>>333
ありがとうございます
コピーする感覚でまるごと配列データ扱えれば便利なのですが、外部ファイルを介したやりとりだとループ処理は避けられないんですね

335 :名無しさん@お腹いっぱい。:2014/11/01(土) 20:24:07.35 ID:lhJ71Frn0.net
AHKにはmmap的なものって無いんだっけ

336 :名無しさん@お腹いっぱい。:2014/11/01(土) 21:28:40.96 ID:hH57I32L0.net
>>334
wikiにこんな記述があった。

【IniRead】
IniRead, OutputVar, Filename[, Section, Key , Default]
OutputVar 読み出した値を格納する変数名。
AHKL [L57+] Keyが省略された場合はコメントを除くセクション全てが変数に格納される。
Sectionが省略された場合は、INIファイル内のセクションを改行(`n)区切りで列挙したものが格納される

【IniWrite】
IniWrite, Value, Filename, Section[, Key]
Value 値として書き込む文字列や数値。
AHKL [L57+] Keyを省略した場合は、セクションヘッダ([SectionName]の部分)を除く、セクション全体の値を指定しているものとみなす。

何かのヒントになれば幸い。

337 :名無しさん@お腹いっぱい。:2014/11/01(土) 22:07:00.92 ID:iyS7LeaV0.net
・受け渡し側は何?受け取り側は何?自作AHKスクリプト?
 (端折ってるけど凄く大事)

・「あるタイミング」とは具体的にどういうとき?
 (常駐してるやつに教えるのは手間がかかる)

・何で受け取り側でForループするの?
 (なんだか自分の中で処理手順らしきものがあるが伝わってない)

・そもそも一方のメモリ上のものを他方に渡さなければいけないのはなぜ?
 (手段ではなく根本を解決すれば、ファイル云々の話をしなくてもすむ可能性がある)

338 :名無しさん@お腹いっぱい。:2014/11/01(土) 22:34:48.80 ID:ppOMnQFf0.net
>>336
ありがとうございます

IniReadは、iniファイルの記録の仕方によっては、StrSplitと組み合わせれば、復元のみに限ってはループ処理なしでもできそうですね

>>337
書き方が曖昧ですみません
知りたいこと自体は単純だったのですが、それを端的に書き出すのが上手く出来なくて、余分なことを書いてしまいました

配列内のデータを外部ファイルに書き込む

書き込まれた内容を元に別の配列に同じ形で復元

までの過程を、ループ処理を使わずにできるかが知りたかったです

339 :名無しさん@お腹いっぱい。:2014/11/01(土) 23:23:48.94 ID:hH57I32L0.net
俺なんかループしまくりなんだが…もっと簡潔に書きたい

image.iniファイル
[画像]
1=jpg, gif, png
2=bmp, psd
[動画]
1=mp4, avi

array1 := Object(), array2 := Object()
inipath := "image.ini"
IniRead, Section, %inipath%
Loop, Parse, Section, `n
{
a1 := A_Index
array1[a1] := A_LoopField
IniRead, key_and_value, %inipath%, % array1[a1]
MsgBox, % array1[a1] "`n" key_and_value
Loop,
{
a2 := A_Index
IniRead, value, %inipath%, % array1[a1], %a2%
if (value = "ERROR") {
break
}
Loop, Parse, value, `,, %A_Space%
{
array2[a1, a2, A_Index] := A_LoopField
}
}
}
MsgBox, % array2[1,1,1] "`n" array2[1,1,2] "`n" array2[1,1,3] "`n" array2[1,2,1] "`n" array2[1,2,2] "`n" array2[2,1,1] "`n" array2[2,1,2] ;array1.maxindex() "`n"

340 :名無しさん@お腹いっぱい。:2014/11/02(日) 00:34:17.10 ID:7xyphrKQ0.net
反転表示させた部分のテキストをクリップボードに取り込みたいのですが、
ターゲットアプリに依存しない汎用的な方法ってありますか?
今のところ、こんなコードを書いています

;Ctrl+無変換
^SC07B::
Send ^c
ClipWait
s := Clipboard
; ここでsの内容を色々と加工する
MsgBox [%s%]
Clipboard := s
return

とりあえずFirefoxと秀丸で動けば用は足りるのですが、
コピーがCtrl+Cでないアプリがアクティブな時でも、
OLEを使えばスマートにできたりするんでしょうか?

341 :名無しさん@お腹いっぱい。:2014/11/02(日) 01:10:14.43 ID:RokJN/V40.net
>>340
とりあえず直したほうがいい部分がある。
以下、例文のコピペ

Clipboard = ; Empty the clipboard
Send, ^c
ClipWait, 2
If ErrorLevel <> 0
{
 MsgBox, The attempt to copy text onto the Clipboard failed.
 Return
}
MsgBox, Clipboard = %Clipboard%
Return

342 :名無しさん@お腹いっぱい。:2014/11/02(日) 02:09:25.12 ID:4aNGT3fm0.net
>>338
>>339

用途限定してないみたいなんで、
入れ子構造とかを考えると、
汎用フォーマットのJSONがいいんじゃないかな。

試しては無いけど↓とか
http://www.autohotkey.com/board/topic/61328-lib-json-ahk-l-json-object/

他にも探せばある。

343 :339:2014/11/02(日) 18:54:33.96 ID:7xyphrKQ0.net
>>341 ありがとうございます。

> Clipboard = ; Empty the clipboard
これは敢えて追加しないでおこうと思います。
たまに、「既にクリップボードに積んであるテキストを加工する」ということが必要になるので。

> If ErrorLevel <> 0
そうですね…自分一人で使う分にはなくても困らないので^^; 省きます。
エラー処理するとしたら、MsgBoxだと成功時にも出てきて誤操作の原因になるので、
Beep音を鳴らすことになるでしょうか。

> ClipWait, 2
参考にさせていただきます。

引き続き Send ^c の代案をよろしくお願いします。

344 :名無しさん@お腹いっぱい。:2014/11/02(日) 20:03:59.04 ID:IKKkKZWA0.net
>>343
^cがコピペじゃないのはifで分ければいいだろ

345 :名無しさん@お腹いっぱい。:2014/11/02(日) 20:26:28.39 ID:V/9gOFuR0.net
1)例えば、コピーがCtrl+Cでないアプリとして秀丸、でキーバインドが、[shift]+[ctrl]+[insert]
2)クリップボードへコピーを[ctrl]+[c]に統一する
と仮定

#UseHook
#IfWinActive,ahk_class Hidemaru32Class
^c::
send, +^{Insert}
 ・
 ・
return
#If

…な感じで考え方を逆にするのも良いんで無いかい?

346 :名無しさん@お腹いっぱい。:2014/11/02(日) 21:02:13.01 ID:V/9gOFuR0.net
>>345
>>399の質問ちょっと読み違えてたか…
>>345のレスは忘れてくれ

347 :名無しさん@お腹いっぱい。:2014/11/02(日) 21:10:50.58 ID:+9huWx370.net
If(ハゲ)
send,^c
else If(ホゲ)
send,ほにゃらら

これで解決

348 :名無しさん@お腹いっぱい。:2014/11/02(日) 21:39:22.67 ID:mNZljRXU0.net
>>342
ありがとうございます。試してみます

349 :名無しさん@お腹いっぱい。:2014/11/02(日) 21:44:24.12 ID:o94GW9Wy0.net
>>343
ClipborardクリアしないならClipWaitは使わんほうがいいよ
Sleepで強制待ちとかしないと誤作動するで

350 :名無しさん@お腹いっぱい。:2014/11/02(日) 21:55:34.38 ID:V/9gOFuR0.net
もう解決したのか…まあ良いか、別の方法だし

GroupAdd, win_Group, ahk_class Hidemaru32Class
GroupAdd, win_Group, ahk_class Notepad

#IfWinActive, ahk_class Hidemaru32Class
+^F12::func("秀丸")
#IfWinActive, ahk_class Notepad
+^F12::func("メモ帳")
#IfWinNotActive, ahk_group win_Group
+^F12::func("win_Group 以外のウインドウ")
#If

func(key) {
MsgBox, %key%
}

351 :名無しさん@お腹いっぱい。:2014/11/02(日) 23:17:26.87 ID:RokJN/V40.net
>>343
シュートカット以外に万能に使えるものは無いと思うが。
エクスプローラならCOM、ブラウザならJavaScriptみたいに
対象に合わせて処理変えるしか思いつかない。

>>350
そのなんだ・・・落ち着け。

組み込み関数Func()は関数参照に使用する。
同名の自作関数があるとそちらが優先される。
http://ahkwiki.net/Func_Object

fn := Func("DllCall")
MsgBox % "パラメータ数 " fn.MinParams "〜" fn.MaxParams
Return

352 :339:2014/11/03(月) 20:36:33.42 ID:z6TPLQEz0.net
>>351
> シュートカット以外に万能に使えるものは無いと思うが。
やはりそうですか。

>>349
> ClipborardクリアしないならClipWaitは使わんほうがいいよ
あー、これが今までたまーに動かなかった原因かも。

>>347
やはりそういう愚直な方法が一番ですか。

ちなみに、秀丸は^cでコピーする設定にしてありますので大丈夫です。
(昔はスクロールにしてたんですが、他のアプリで^cを使いまくるので押し間違うんです…)

ありがとうございました。

353 :名無しさん@お腹いっぱい。:2014/11/03(月) 21:28:43.40 ID:YeCevc9Hx
初歩の初歩で申し訳ないのですが
#IfWinActive,
を使って指定するときに、メモ帳みたいに先頭にタイトルがないものは
SetTitleMatchMode, 2を使うか .* - メモ帳 の形でできると見たのですが
.* - を使うやり方が分かりませんでした。
#IfWinActive,.* - メモ帳
では動作しなかったのですが、正しい書き方を教えてもらえないでしょうか

354 :名無しさん@お腹いっぱい。:2014/11/05(水) 06:35:24.93 ID:7XVjqdbF0.net
マウス直下のウィンドウを、タイトルバーにカーソル移動することなく
修飾キー+ドラッグで移動するというスクリプトを組みたいと思っているのですが、
タイトルバーをドラッグした時のような
ウィンドウのドラッグ移動アクションを起こす方法って何かないでしょうか?

マウスカーソルをタイトルバーの位置に移動させて、ドラッグが終わり次第
元の位置に戻す、という原始的な方法くらいしか思いつかないのですが
これだとタイトルバーが無いウィンドウ等では使えませんし・・・

355 :名無しさん@お腹いっぱい。:2014/11/05(水) 08:52:05.50 ID:T33m+TmP0.net
「ahk ウィンドウ ドラッグ 移動」 でググってみ
もらかなさんとこのが参考になると思う

356 :名無しさん@お腹いっぱい。:2014/11/05(水) 16:05:18.15 ID:nTtCxbuv0.net
#LButton::
CoordMode,Mouse
SetWinDelay, 0
If DoubleAlt
{
MouseGetPos,,,KDE_id
PostMessage,0x112,0xf020,,,ahk_id %KDE_id%
DoubleAlt := false
return
}
MouseGetPos,KDE_X1,KDE_Y1,KDE_id
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
return
WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id%
Loop
{
GetKeyState,KDE_Button,LButton,P
If KDE_Button = U
break
MouseGetPos,KDE_X2,KDE_Y2
KDE_X2 -= KDE_X1
KDE_Y2 -= KDE_Y1
KDE_WinX2 := (KDE_WinX1 + KDE_X2)
KDE_WinY2 := (KDE_WinY1 + KDE_Y2)
WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2%
}
return

357 :名無しさん@お腹いっぱい。:2014/11/05(水) 16:14:36.37 ID:nTtCxbuv0.net
2/1

#RButton::
CoordMode,Mouse
SetWinDelay, 0
If DoubleAlt
{
MouseGetPos,,,KDE_id
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
WinRestore,ahk_id %KDE_id%
Else
WinMaximize,ahk_id %KDE_id%
DoubleAlt := false
return
}
MouseGetPos,KDE_X1,KDE_Y1,KDE_id
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
return
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
If (KDE_X1 < KDE_WinX1 + KDE_WinW / 2)
KDE_WinLeft := 1
Else
KDE_WinLeft := -1
If (KDE_Y1 < KDE_WinY1 + KDE_WinH / 2)
KDE_WinUp := 1
Else
KDE_WinUp := -1

358 :名無しさん@お腹いっぱい。:2014/11/05(水) 16:15:06.83 ID:nTtCxbuv0.net
2/2

Loop
{
GetKeyState,KDE_Button,RButton,P
If KDE_Button = U
break
MouseGetPos,KDE_X2,KDE_Y2
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
KDE_X2 -= KDE_X1
KDE_Y2 -= KDE_Y1
WinMove,ahk_id %KDE_id%,, KDE_WinX1 + (KDE_WinLeft+1)/2*KDE_X2
, KDE_WinY1 + (KDE_WinUp+1)/2*KDE_Y2
, KDE_WinW - KDE_WinLeft *KDE_X2
, KDE_WinH - KDE_WinUp *KDE_Y2
KDE_X1 := (KDE_X2 + KDE_X1)
KDE_Y1 := (KDE_Y2 + KDE_Y1)
}
return

359 :352:2014/11/05(水) 17:11:36.05 ID:7XVjqdbF0.net
>>355
もらかな氏のブログでまさに自分がやりたかった形にできました!
ありがとうございました〜

360 :名無しさん@お腹いっぱい。:2014/11/05(水) 19:05:09.72 ID:xcNkSXk40.net
GroupAddを使う時、正規表現検索でグループに追加したウィンドウの場合は、GroupDeactivateでも検索されてしまうのだがバグだろうか?
でも何故か、GroupActivateだと正常に動作する

361 :名無しさん@お腹いっぱい。:2014/11/05(水) 19:37:25.80 ID:H0yCYqW30.net
そのような現象は確認できない

362 :名無しさん@お腹いっぱい。:2014/11/05(水) 19:52:42.79 ID:xcNkSXk40.net
>>361
他に原因があるんだろうか
(書き忘れてましたがv2の最新です。記憶が曖昧ですが、L使ってた時も起きてたような)

SetTitleMatchMode, RegEx
GroupAdd, A, Mozilla\sFirefox$
Loop, 10
{
Sleep, 200
GroupDeactivate("A")
}

のようにウィンドウを切り替えていくと、たまにFirefoxのウィンドウが出ます
他のウィンドウでも同様でした

363 :名無しさん@お腹いっぱい。:2014/11/05(水) 19:53:49.23 ID:xcNkSXk40.net
GroupDeactivate("A")

GroupDeactivate, Aに訂正します

364 :名無しさん@お腹いっぱい。:2014/11/05(水) 20:11:01.76 ID:/DukFbW20.net
>>362
「A」は不特定のアクティブウインドウを操作するときに使う特殊なものの筈だから使わない方が良いと思う。
代わりに適当な分かりやすい文字列にしたらどう?

365 :名無しさん@お腹いっぱい。:2014/11/05(水) 20:29:32.71 ID:xcNkSXk40.net
>>364
あ、すみません
例えとして適当な名前を付けてました(グループ名でも避けた方が良かったでしょうか?)

366 :名無しさん@お腹いっぱい。:2014/11/05(水) 20:31:38.82 ID:SaGOHJvn0.net
AUTOHOTKEYのタスクトレイにマウスかソールを合わせると
処理を実行するコマンドありますか?

367 :名無しさん@お腹いっぱい。:2014/11/05(水) 20:42:29.06 ID:T33m+TmP0.net
コマンドはない

368 :360:2014/11/05(水) 22:02:26.58 ID:xcNkSXk40.net
原因が分かりました
あと>>362の記述にミスがありました。すみません

どうやらGroupDeactivateでのウィンドウの切り替えは、指定されたウィンドウグループ内の個々のウィンドウを、
態々GroupAddで登録する際に検索させた文字列に戻した上で、再検索してふるいにかけてるようです

なので

SetTitleMatchMode, 2
GroupDeactivate, GroupName

だとGroupAddでの検索時に正規表現でしかマッチしなかったウィンドウは検索されませんが

SetTitleMatchMode, RegEx
GroupDeactivate, GroupName

だと検索されます

GroupDeactivateで指定したウィンドウグループのウィンドウ群を正常に扱うには、GroupAddに追加する際に全て正規表現の検索にして、
正規表現の検索でGroupDeactivateを使わないと駄目なようです

369 :名無しさん@お腹いっぱい。:2014/11/05(水) 22:36:48.84 ID:McahHVox0.net
>>366
コマンド以外なら方法はある。

370 :名無しさん@お腹いっぱい。:2014/11/05(水) 23:07:58.44 ID:PId4wqnL0.net
>>368
>GroupAddで登録する際に検索させた文字列に戻した上で、再検索して...
検索方法が変わっただけで検索ワードはそのまま、それだけのこと。


SetTitleMatchMode, RegEx
GroupAdd, AAA, ^TEST$
Gui, Add, Text, w300, TEST
Gui, Show, y400, TEST
Gui, 2:Add, Text,w300, ^TEST$
Gui, 2:Show, y500, ^TEST$

F1::
SetTitleMatchMode, 1 ; 先頭一致
GroupDeactivate, AAA ; タイトル(^TEST$)以外
Return

371 :名無しさん@お腹いっぱい。:2014/11/05(水) 23:22:10.33 ID:xcNkSXk40.net
>>370
ああなるほど。納得しました。ありがとうございます

372 :名無しさん@お腹いっぱい。:2014/11/06(木) 01:05:09.36 ID:5JA0zzIV0.net
スクリプトファイル.ahkの処理を5秒たったらすべて実行中のものはキャンセルするっていうことできますか?

複数のソフトウェアを閉じる(winclose)スクリプトファイルを.ahkにして、それを実行するのですが、
存在してないソフトウェアがなかにあるためか、そのスクリプトファイルを実行すると、すでに起動している
autohotkeyの動作がおかしくなるのです。
ソフトウェアを閉じるahkには たとえば
WinClose, ahk_exe E:\V2C\V2C.exe
というふうにwincloseの記述しかありません。

373 :名無しさん@お腹いっぱい。:2014/11/06(木) 01:40:23.87 ID:9CJa25p40.net
>>372
実行中のもの=AHKのスレッド?
動作がおかしくなるって言われてもよくわからん。

A(常駐)とB(閉じる用)のスクリプトがあって
Bを実行すると対象の終了でAの処理が破綻するってことか?

374 :名無しさん@お腹いっぱい。:2014/11/06(木) 01:43:02.89 ID:5JA0zzIV0.net
>>373
その通りです。Bを実行するとAの動作が変になります。
ぼくが予想するにBの中身の対象.exeがみつからないのでずっとさがしてて
そのためにAがおかしくなってるのかなぁと

375 :名無しさん@お腹いっぱい。:2014/11/06(木) 01:48:40.88 ID:U02Cz4ua0.net
放り投げるんでなく原因を突き止めたほうが…

376 :名無しさん@お腹いっぱい。:2014/11/06(木) 02:03:45.22 ID:58fCXUvT0.net
>ぼくが予想するにBの中身の対象.exeがみつからないのでずっとさがしてて
それで完全に独立しているahkがおかしくなることはないと思うがまぁ一応。

Process, Exist, V2C.exe
if(ErrorLevel){
 WinClose, ahk_exe V2C.exe
 ;↓この書き方できたっけ?
 ;WinClose, ahk_exe E:\V2C\V2C.exe
}

その常駐の方のahkのメインウィンドウをwincloseしちゃう記述とかしてない?
DetectHiddenWindowsをonにしている前提の話だけど。
とりあえずwincloseの対象がちゃんと意図しているものになっているかチェック

377 :名無しさん@お腹いっぱい。:2014/11/06(木) 02:05:26.10 ID:9CJa25p40.net
>>374
Aのループ処理にエラー判定での分岐を書くのが普通だと思うが。
判定書かずに実行中のスレッドを好きなときに中止させるのは終了か再起動しかない。

後はこんな感じ
*スクリプト一緒にしてAの処理中かフラグ(変数0/1)でBを実行するか決める
*スクリプト一緒にしてReloadでスクリプト再起動
*Aも終了、再起動させる

378 :名無しさん@お腹いっぱい。:2014/11/06(木) 02:43:24.17 ID:5JA0zzIV0.net
すいません。もしかしたらPCゲーム側の問題かもしれません。

PCゲームのプレイ時にfirefoxブラウザとか余分なソフトを全部終了するwincloseを
羅列して書いてあったのがBのスクリプトだったのです。
そのBを実行するとゲーム上だけ入力がおかしくなります。sは打てるのにaは打てないとか。
しかしゲームと関係ないテキストエディタ上ではまったく普通に入力できます。

windowsのタスクマネージャーからautohotkey.exeらしきものを停止しても、
ゲーム上での入力の不具合がきえません。ゲームを再起動すると治ります。
ほんとにBスクリプトにはwincloseの行だけを何行も書いてるだけなのですが、
これだけでもゲームにずっと悪影響を及ぼすのですね。Bスクリプトを実行するときは
フォーカスを別のウインドウにしているのですが。
ゲームのコンフィグファイルを削除したりしたのですが改善しません。

このスレはPCゲームに関連する話題は扱わないんですよね。

379 :名無しさん@お腹いっぱい。:2014/11/06(木) 03:39:52.66 ID:0kVlSn/N0.net
配列の↓のVarの部分にカンマを含む変数を入れる方法はないんでしょうか?

Array[Var] := {画像: jpg}


例えば、このような時に["ファイル", "画像"]のような階層を含むものを動的に代入したいのですが

For Key, Value in Array["ファイル", "画像"]

380 :名無しさん@お腹いっぱい。:2014/11/06(木) 05:47:00.72 ID:9CJa25p40.net
>>378
今までも不具合がゲーム起動中だけに発生したならプロテクトが反応したのかもね。
情報不足で推測しか出来ないので原因の切り分けを自分でやってから出直してください。

>>379
配列と連想配列(オブジェクト)が混ざってるというか多次元配列の話?

Var1 = ファイル
Var2 = 新しいフォルダー
Var3 = 画像
Var4 = jpg
F1:: ; 配列 キー連番と値
array := ["ファイル", "画像"]
Loop % array.MaxIndex()
MsgBox % "例1 " array[A_Index]
array := [Var1, Var3]
Loop % array.MaxIndex()
MsgBox % "例2 " array[A_Index]
Return

F2:: ; 連想配列(オブジェクト)キーと値
For Key, Value in array := {ファイル: "新しいフォルダー", 画像: "jpg"}
MsgBox % "例1 "Key "-" Value
For Key in array := Object("ファイル", "新しいフォルダー", "画像", "jpg") ; キーのみの指定
MsgBox % "例2 "Key
For Key, Value in array := {(Var1): Var2, (Var3): Var4}
MsgBox % "例3 " Key "-" Value
For Key, Value in array := Object(Var1, Var2, Var3, Var4)
MsgBox % "例4 "Key "-" Value
Return

381 :名無しさん@お腹いっぱい。:2014/11/06(木) 10:38:32.13 ID:CQh69GNA0.net
wintitleAという非アクティブウインドウにAltを送って操作したいのですが反応無しです
ControlSendの使い方が間違っているでしょうか?
アクティブにしてからSend, {Alt}だと上手くいくのですが

IfWinExist, wintitleA
{
  ControlSend, , {Alt}, wintitleA
}

382 :名無しさん@お腹いっぱい。:2014/11/06(木) 11:02:39.44 ID:1apHAtyO0.net
controlsendは確実性のあるコマンドじゃない、対象ソフトによって利きにムラがある
送信対象のcontrol名を入れないとだめな物もあればClassNN入れてもだめな物もある
controlのハンドル取得して指定する方法が一番成功率は高い

http://ahkwiki.net/Window#Control.E7.B3.BB.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.E3.81.AE_Control_.E5.BC.95.E6.95.B0

383 :名無しさん@お腹いっぱい。:2014/11/06(木) 16:40:44.96 ID:0kVlSn/N0.net
>>380
ありがとうございます
すみません、違ってたので補足します

代入というより読み込みでした

Array := Object()
Array["ファイル", "画像"] := {1: "jpg", 2: "png"}

For Key, Value in Array["ファイル", "画像"]
{
}

この場合、["ファイル", "画像"]のパス?内を巡回することになりますが、
このパスを動的に読み込みたいのです(続きます)

384 :名無しさん@お腹いっぱい。:2014/11/06(木) 16:41:15.41 ID:0kVlSn/N0.net
イメージとしてはこんな感じです


OutputVar := ""
Array := Object()

Array["ファイル", "画像"] := {1: "jpg", 2: "png"}
Array["動物", "哺乳類", "犬"] := {1: "柴犬", 2: "チワワ"}

Var := ["ファイル", "画像"] ; この記述はイメージです
FunctionTest(Var)

Var := ["動物", "哺乳類", "犬"] ; この記述はイメージです
FunctionTest(Var)

FunctionTest(Var)
{
global OutputVar, Array
For Key, Value in Array[Var]
{
OutputVar .= Value
}
}
If (OutputVar = "jpgpng柴犬チワワ")
MsgBox, OK

385 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:01:20.00 ID:DKkEN/1Y0.net
>>384
こんな方法でどうかな?配列は知識不足で申し訳ない。

OutputVar := Var := ""
Array := Object()
Array["ファイル", "画像"] := {1: "jpg", 2: "png"}
Var = ["ファイル", "画像"]

Var := RegExReplace(Var, "\[*`,*\s*""(.+?)""\s*\]*", "$1`n", Count)
Loop, Parse, Var, `n
Var%A_Index% := A_LoopField
If (Count = 2)
Var := Array[Var1, Var2]
If (Count = 3)
Var := Array[Var1, Var2, Var3]
If (Count = 4)
Var := Array[Var1, Var2, Var3, Var4]
For Key, Value in Var
OutputVar .= Value
MsgBox, % OutputVar
Return

386 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:12:21.47 ID:3aAsCInd0.net
配列と配列の関連付けのように見える


・配列 ["ファイル", "画像"] と 配列["jpg", "png"] を紐付け
・配列 "動物", "哺乳類", "犬"] と 配列["柴犬", "チワワ"] を紐付け

であるとすると、

Array[1] := { keywords: ["ファイル", "画像"] , values: ["jpg", "png"] }
Array[2] := { keywords: "動物", "哺乳類", "犬"] , values: ["柴犬", "チワワ"] }

みたいにして、Arrayの添え字は気にせず、入れ子オブジェクトを見れば用は足りそう。

387 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:22:56.01 ID:3aAsCInd0.net
あ、オブジェクトのキーにオブジェクト使えるんだっけか、、、

hoge := {}

hoge[ ["男", "名前"] ] := ["太郎", "次郎", "三郎"]
hoge[ ["11月", "祝日"] ] := ["文化の日", "勤労感謝の日"]

For k, v in hoge
 output .= ArrayJoin(k, ",") . " => " . ArrayJoin(v, ",") . "`n"


MsgBox, % output

ArrayJoin(arr, sept:="")
{
 For k, v in arr
  output .= (A_Index>1 ? sept : "") . v
 Return output
}

388 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:25:53.75 ID:n3wUoL2p0.net
ここで垂れ流されまくってるコードは賢いコードなの?間に合わせのテキトーなコードなの?
ようわからんが醜いからもう少し何とかしてほしい

389 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:30:58.21 ID:how5x+e80.net
このスレでのコードなんて綺麗である必要はないんじゃないの?
それほど長いコードを書いてるわけでもないし、その場で読んでやってることがわかれば十分だと思うわ
書かれてるコードをコピペするんじゃなくて自分で理解するなら必要ないでしょ。

それに、誰かが書いてくれたコードを醜いとかひどい言いぐさじゃない?
書いた人に失礼だよ。
煽りでないのなら謝ってほしい

390 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:31:33.58 ID:VgeOgFat0.net
わからんならすっこんでろよ

391 :名無しさん@お腹いっぱい。:2014/11/07(金) 00:38:51.62 ID:BZAZlTIG0.net
今回とは違うけど
よくわかってない回答者がいいかげんなコードをミスったとかなんとか言いながら
何度も貼り直してる時はさすがに落ち着けとは思う

あと>356-358みたいに説明なしで連貼りされるのも
直前の質問への解なのかなーとか思いつつ検証する気もないのでスルーしたが

392 :名無しさん@お腹いっぱい。:2014/11/07(金) 01:13:23.21 ID:ILHxyEA70.net
行数さえ少なければ美しいと思ってるいつもの子でしょ

393 :名無しさん@お腹いっぱい。:2014/11/07(金) 01:16:14.28 ID:N3LuAzz90.net
ちょっと荒れ気味ですがぶった切ってスマソ

次のような動作はAHKで可能ですか?

Windows7
1)現在のアクティブウインドウがエクスプローラーなら、
2)コマンドバーの 『整理』 をクリック
3)『レイアウト』 をクリック
4)『ナビゲーション ウィンドウ』 をクリック

こういう機能が簡単に実現出来ますでしょうか?
教え下さい。

初心者でも簡単に作れるならこれからAHKを導入しようと思ってます。

394 :名無しさん@お腹いっぱい。:2014/11/07(金) 02:42:45.19 ID:y+RTLXeh0.net
>>393
wikiを見てそれができるかできないかがわかる初心者には簡単に作れるし、wikiを見ない初心者やwikiを見てもわからない初心者には簡単には出来ない

395 :名無しさん@お腹いっぱい。:2014/11/07(金) 03:28:59.61 ID:DKkEN/1Y0.net
>>393
順路立てできてるのでリファレンス読んでから
該当するコマンド探せばすぐに出来る。

2)〜4)
マウスが瞬間的に飛んでいくのはアレなので
キーボード操作だけでやったほうがいいと思う。

Alt+D
Tab×2
Enter
Down×7
Right
Down×3
Enter

396 :名無しさん@お腹いっぱい。:2014/11/07(金) 04:33:34.96 ID:sUnMm4jV0.net
>>385,385
ありがとうございます

このようなやり方があったんですね

Array2 := Array["動物", "哺乳類", "犬"]
For k, v in Array2

どちらにしても、読み込み元の変数にカンマが含まれる場合は駄目なんですね…

Var := "動物"
Var .= ",哺乳類"
Var .= ",犬"
Array2 := Array[Var]
For k, v in Array2

動的に階層?を含める場合は、これらの記述が何処かしら必要なんですね

Array2 := Array[Var1]
Array2 := Array[Var1, Var2]
Array2 := Array[Var1, Var2, Var3]


For文を無駄に入れ子にしなくて済むだけでも十分ではありますが

397 :名無しさん@お腹いっぱい。:2014/11/07(金) 04:51:43.64 ID:sUnMm4jV0.net
正確には["動物", "哺乳類", "犬"]の部分を動的に作る場合でした

398 :名無しさん@お腹いっぱい。:2014/11/07(金) 13:32:22.85 ID:DnW+9QbG0.net
>>395
ありがとう! Tryしてみます!

399 :名無しさん@お腹いっぱい。:2014/11/07(金) 14:19:11.02 ID:3tk56v4W0.net
何かアプリを使用していてそのアプリが複数のカーソルを持っているとき
今、どのカーソルを使用しているか、またカーソルを変えたりすることってできますか
もちろんアプリでカーソルを変えるようなたとえばカーソル位置を変えたりしたら、アプリのデフォルトのカーソルに戻ってしまうのは
構いません

400 :名無しさん@お腹いっぱい。:2014/11/07(金) 14:27:05.53 ID:3tk56v4W0.net
具体的に何をしたいかというと、あるアプリを使っているときにスクリーンショットを撮りたいのですが
そのときに位置を示すためにカーソルを大事な位置に置いたままカーソル付きで取りたいのですが
そのときのカーソルを変えたいのです。何か参考になるコマンドとかあれば教えてください

401 :名無しさん@お腹いっぱい。:2014/11/07(金) 19:33:13.99 ID:DKkEN/1Y0.net
>>400
マウスカーソル変更スクリプト
※表示したいカーソル(.CUR)形式またはアニメーションカーソル(.ANI)形式のファイル必要

検索ワード:autohotkey change mouse cursor
ttp://www.autohotkey.com/board/topic/96407-how-to-change-mouse-cursor/?p=607225

402 :名無しさん@お腹いっぱい。:2014/11/07(金) 20:27:41.98 ID:P0bsZQfi0.net
>>400
質問の答えとは違うけど、その目的ならカーソルを変更するよりも
カーソル位置にGUIで画像を表示するほうが自由度高くていいんじゃないかと思った

403 :名無しさん@お腹いっぱい。:2014/11/07(金) 20:30:28.01 ID:how5x+e80.net
もっと言うならSSを加工すれば・・・
それじゃダメな理由があるのかもしれないけど

404 :名無しさん@お腹いっぱい。:2014/11/07(金) 20:36:22.37 ID:BZAZlTIG0.net
スクリーンショット系アプリで好きな形のマウスカーソル付加できるやつとか
さがせば結構あると思うがけどそれじゃだめなん?

405 :名無しさん@お腹いっぱい。:2014/11/07(金) 21:32:11.60 ID:zXtCL+q60.net
このソフトウェアのスクリプトでいくつかの構文はスクリプトの先頭に置かなければいけないっていうルールあるじゃないですか?
常識すぎて紹介サイトとかにあまり書かれてないみたいですけど。どこか書いているところありませんか?

たとえばGroupAddとかはスクリプトの先頭にないといけないんですよね?
じゃぁ#SingleInstance force ってどこの位置に置けばいいんだろう。

406 :名無しさん@お腹いっぱい。:2014/11/07(金) 21:54:14.86 ID:ms6ehzjV0.net
>>405
デフォルト設定、即実行したいコマンド等はAuto-executeセクションに書く
GroupAddの場合はどこに書いてもいいが一度だけ設定すればいいので上記に書く

15 スクリプトの起動とAuto-executeセクション
ttp://ahkwiki.net/Scripts

407 :名無しさん@お腹いっぱい。:2014/11/07(金) 22:03:56.59 ID:3tk56v4W0.net
>>401
ありがとうございます。そこをヒントにいろいろ探したら、簡単そうな次のサイトをみつけました
http://www.autohotkey.com/board/topic/8394-changing-the-mouse-cursor/
ここにあるスクリプトをもとにいらないコードを捨て去って、必要最低限のコードを作り上げたのが下です

Gui,Destroy
Gui,Add,Text,xm,Put cursor here.
Gui,Show,,%applicationname% About
return
s::
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND 32649
DllCall("SetCursor","UInt",hCurs)
Return
q::
GuiClose:
DllCall("DestroyCursor","Uint",hCurs)
ExitApp, 0

新しいスクリプトファイルを作ってこれをそのままコピペして起動してください
すると小さなダイアログボックスが出てきますので、その上にカーソルを持って行ってください
その状態でsキーを押すと、カーソルが変わります
しかし、ダイアログの外では変わらないのです。これがわかりません。調べているのですがいろいろと奥が深そうです
最初は
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND 32649
DllCall("SetCursor","UInt",hCurs)
だけのスクリプトを作ったのですが、これで変わるだろうと思ったら変わらなくてなぜかダイアログの上でだけしか
変わらないというのに気づくまで結構時間がかかりましたw
どなたかおわかりになる方いますか。Authotkeyのダイアログ上だけでしか変わらないのなら使えません
そんなはずはないと思うのですが
私はこのあと用事があるのでまた明日調べてみます

408 :名無しさん@お腹いっぱい。:2014/11/07(金) 22:08:31.49 ID:3tk56v4W0.net
>>404
そういうアプリがあるのですか。私はまったく知りませんでした
いいのがあるのなら、それでもいいかもしれませんね。以前スクリーンショットアプリはいろいろと調べてみたのですが…
で、今使ってるのはBandicamです。ですが、+カーソルのときはなぜかカーソル表示でとろうとしても取れないんですよね

409 :名無しさん@お腹いっぱい。:2014/11/08(土) 00:39:56.12 ID:svk0GKc90.net
エクセルがらみなんですけどお願いします
ある列に

11111
(空白)
(空白)
22222
(空白)
(空白)
33333
(空白)
(空白)
44444


nnnnn

と2つおきに適当な数字が入った並んだセルがあり
このセルをまとめて選択し、キーを入力すると
11111〜nnnnnの文字をnつの変数に格納し、それをn種のキー入力(x1〜xn)でエクセル以外の場所にペーストできるようにしたいのですが
どのような機能とアプローチで考えたらいいでしょうか?

410 :名無しさん@お腹いっぱい。:2014/11/08(土) 01:07:41.49 ID:+7P/sGcr0.net
>>409
手元にオフィスがないから憶測だけど

1. エクセルの全体や範囲をコピー
2. Clipboardの中身を変数に移す
3. 余計な文字列あるならRegExReplace()で消して
4. Loop, Parseで行ごとにA_Index回数とかで振り分けて処理
5. あらかじめ#If+ホットキーを割り当てておくかHotkeyで動的に割り当て
  またはSetTimer+Inputで入力監視

411 :名無しさん@お腹いっぱい。:2014/11/08(土) 01:34:51.20 ID:svk0GKc90.net
word := RegExReplace(Clipboard, "\r\n", "") で改行なくせるんですね
一行の文字列の変数格納はできるので何とかなりそうです
5はまだ自分の知りうる範疇にないのでまた勉強します

ありがとうございます

412 :名無しさん@お腹いっぱい。:2014/11/08(土) 02:07:24.12 ID:70T/cGdO0.net
COM使えるんで、 "Excel.Application" 使ってもいいかな

413 :名無しさん@お腹いっぱい。:2014/11/08(土) 08:52:36.78 ID:mYPnit2X0.net
>>407
デスクトップ全体のカーソル変更はSetSystemCursor
http://msdn.microsoft.com/ja-jp/library/cc411076.aspx

414 :名無しさん@お腹いっぱい。:2014/11/08(土) 16:41:20.93 ID:7FAMnTbu0.net
>>401
第三者だけど、面白いスクリプトをありがとう

>>407
そこのスクリプトよく見てないんだけど、どうして>>401のスクリプトじゃだめなん?
元カーソル→別カーソルへ変更し、スクショ撮る→元カーソルへ戻す
をしたいんでしょ?

415 :名無しさん@お腹いっぱい。:2014/11/09(日) 09:43:31.38 ID:Mq3dil/I0.net
>>413-414
お返事ありがとう。いろいろとやってみて
LoadCursor, LoadCursorFromFile, SetSystemCursor. SetCursor
Loop, Parse, Cursorsで回す方法、システムカーソルのリストアの仕方などなどいろいろとわかりましたよ
いろんなカーソルに変えて遊んでみました
でも、これはシステムカーソルは変わりますが、アプリで使用しているカーソルは変わらないのですよ
たとえば、エディタのIカーソルを表示させたり隠したり、カーソルを変えたりはできません。やりたいのはそっちなのです
あるいは、なぜかAutohotKeyで作られたダイアログ上でしか作用しないのです。たとえば、
GetCursor, ShowCursor, SetCursorも、AutohotKeyのダイアログ上では作用するのですが、ほかのアプリのカーソルを
ShowさせたりHideさせたりは出来ないんです。そこでつまっています

416 :名無しさん@お腹いっぱい。:2014/11/09(日) 10:28:55.62 ID:fqk1zKXR0.net
そのアプリが自前でsetcursorしてるからじゃね
SetCursorは自前アプリのカーソル変更機能
SetSystemCursorはシステムのカーソル変更

アプリの具体名伏せられてるから具体的なことはわからんが
透明度1%なGUIウィンドウをアプリの上に被せてスクショとるのはどうよ?
アプリの操作できなくなるからホットキーにahk guiのshow/hide割り当てといて
マウス操作が必要なときは都度切り替える

417 :名無しさん@お腹いっぱい。:2014/11/09(日) 10:34:08.65 ID:Mq3dil/I0.net
>>416
>そのアプリが自前でsetcursorしてるからじゃね
>SetCursorは自前アプリのカーソル変更機能

それを乗っ取ることは出来ないのですね。そこを求めていたのですが、出来ないのなら諦めます

418 :名無しさん@お腹いっぱい。:2014/11/09(日) 16:07:44.57 ID:7dfRbQFp0.net
>>415
>たとえば、エディタのIカーソルを表示させたり隠したり、
マウスカーソルの非表示ならAHKで出来る。
前スレ見てみると良いよ。

>カーソルを変えたりはできません。
マウスカーソルを非表示にした上で、本来のマウスカーソルとは別に自前で作ったウインドウにマウスカーソルの画像貼り付けてウインドウを透明にするとか。
やり方は分からんけど…

419 :名無しさん@お腹いっぱい。:2014/11/09(日) 16:15:51.64 ID:7dfRbQFp0.net
>>418
読点無いので読みにくいし、分かり難いので訂正。
>マウスカーソルを非表示にした上で、本来のマウスカーソルとは別に自前で作ったウインドウにマウスカーソルの画像貼り付けてウインドウを透明にするとか。
マウスカーソルを非表示にした上で、自前で作ったウインドウに本来のマウスカーソルとは別の画像貼り付けて、背景となるそのウインドウを透明にするとか。

420 :名無しさん@お腹いっぱい。:2014/11/09(日) 18:31:48.49 ID:Rn5JLWV30.net
>>417
必要な情報が足りないので回答不能

421 :名無しさん@お腹いっぱい。:2014/11/10(月) 19:18:26.87 ID:06iExqO90.net
>>417
ゲーム画面とかのカーソルならリソースいじらないと変更出来ないと思う
どんなソフトで使うのかわからないとなんとも言えないなぁ

422 :名無しさん@お腹いっぱい。:2014/11/11(火) 21:22:08.60 ID:hSLQAVkk0.net
SetTimer, label, 60000
というのを、つまり、60秒毎にlabelをコールっていうのを5時間6時間やってると、だんだん
1、2秒時間がずれていくんですね
つまり、これをセットしたときの時間をベースに、60秒、120秒、180秒って足していくのではなく、毎回コールしたあと
順繰り60秒足しながらコールするから少しづつずれていくのかな
これってどうにもならないんですかねえ?
しょうがないので自分でセットしたときの時間をベースに時間を引き算して毎回タイマーセットするようにしましたけど
実際は60秒おきだから、今の時間をゲットして分秒だけをゲットして引き算して毎回タイマーセットしてますが

423 :名無しさん@お腹いっぱい。:2014/11/11(火) 22:22:15.09 ID:FEe4cVQw0.net
人間には知覚できないsleep,10がうんたらかんたらどうたらこうたら

424 :名無しさん@お腹いっぱい。:2014/11/11(火) 22:54:06.28 ID:7XXkmd960.net
>>422
SetTimerは「前回のスレッド開始」からの指定時間経過後に次を実行するから、ほんのわずかずつズレるかも
というか、1秒単位の精度が必要なら素直に1秒間隔で実行すべきだと思うぞ

425 :名無しさん@お腹いっぱい。:2014/11/11(火) 23:03:59.65 ID:TFIhRQo+0.net
Thumbremap.ahk を動かすにはどのような環境が必要ですか?

環境を変えたためか動かせなくなりました。
現在Win7 64bitです Thumbsenseは動きます
PCはノートでタッチパッドはSynapticsです。
AutoHotkey104805 や ANSI32, Uniconde32など試してみましたがダメでした。

426 :名無しさん@お腹いっぱい。:2014/11/11(火) 23:16:58.00 ID:U/olrAUB0.net
>>422
負荷減らしつつ精度が必要な場合は精度の違うタイマーを交互に使っている。

*タイマー(数秒)55秒ぐらいまでカウント
*タイマー(m秒)OS時刻で判定

427 :名無しさん@お腹いっぱい。:2014/11/11(火) 23:49:13.66 ID:U/olrAUB0.net
>>425
Thumb_Synaptics.ahk の6行目の "CreateFileA" を "CreateFileW" に書き換えて、
各スクリプトファイルを UTF-8 で保存
ttp://aquasoftware.net/blog/?p=517

AHKのインストーラーなら全バージョンセットでインストールされる。
*インストーラーでの関連付けを32bit+Unicodeにする
*直接AutoHotkeyU32.exeに送って動かす
*32bit+UnicodeでEXE化

428 :名無しさん@お腹いっぱい。:2014/11/12(水) 11:12:48.80 ID:lhabGTa20.net
質問です
「Firefoxがアクティブなときで、今、文字入力キャレットが、どこかの文字入力フォームにあるかないか」を判定する方法が知りたいです
Firefoxで、文字フォームにキャレットが点滅している状態では働かないホットキーを設定したいのです
文字キャレットがあるときは文字入力したい時なので無効にしたいわけです

429 :名無しさん@お腹いっぱい。:2014/11/12(水) 11:16:47.37 ID:ka9RpgPC0.net
またおまえか

430 :名無しさん@お腹いっぱい。:2014/11/12(水) 12:08:10.32 ID:CXSXYsbC0.net
自分の目を使って判定すればいい

431 :名無しさん@お腹いっぱい。:2014/11/12(水) 12:13:40.21 ID:WKtT6iPp0.net
>>422
SetTimerはずれる
ある程度精度がほしいときは、スレッド開始時の時間を保存しておいて、現在時刻から引き算して補正してる

「60秒までしか計れないストップウォッチを60秒ごとにOn/Off繰り返して時間を数える」より、
「時計を見て指定時間から何秒たったか引き算で数える」方が感覚的にもずれは少なそうじゃん?

432 :名無しさん@お腹いっぱい。:2014/11/12(水) 14:38:16.09 ID:prHj0SdZ0.net
差分だけで絶対時刻が必要じゃないならnowよりGetTickCount使う方が楽だよ

433 :名無しさん@お腹いっぱい。:2014/11/12(水) 14:57:47.37 ID:Rr0O7pr90.net
Dallはマジイミフ。どっか解説ないのかい……

434 :名無しさん@お腹いっぱい。:2014/11/13(木) 03:47:20.03 ID:b9fkRy1H0.net
^q:: run,notepad %__FILE__%
みたいなことやりたいんですがどうすればいいですか

A_ScriptFullPathが展開するのはトップレベルのスクリプトのようで
インクルードされる側のスクリプトでは使えませんでした

435 :名無しさん@お腹いっぱい。:2014/11/13(木) 03:55:41.04 ID:v8vnZEwu0.net
A_LineFileとかA_LineNumberのこと?

436 :名無しさん@お腹いっぱい。:2014/11/13(木) 20:13:36.01 ID:pzgoDLDS0.net
BlockInputで、マウスムーブをブロックしてるのを、マウスを激しく動かして解除したりってできますか
つまり普通の感覚でマウスを動かすとブロックされていて動かないけど、激しくマウスをゆすると解除される、みたいな
マウスジェスチャーとかを使うと出来るのかもしれないけどそっちは知らないしAutohotkeyだけでは出来ないのかな

437 :名無しさん@お腹いっぱい。:2014/11/13(木) 21:05:08.96 ID:x6Od3Kld0.net
>>436
マウス移動をブロックしているのに移動を検知するのは矛盾している。
移動していないように見せて処理すればいい。
大まかな手順は以下の通り、細かい処理は簡単だから自分で考えてくれ。

1. マウスを非表示
2. 代わりの画像を表示(なくてもいい)
3. マウスクリック等の処理
4. 一定時間内にマウス座標が左右に何回動いたらの判定
5. マウスを表示

前スレ 一定時間後マウスカーソルを非表示と関数
ttp://anago.2ch.net/test/read.cgi/software/1398655195/807

438 :名無しさん@お腹いっぱい。:2014/11/14(金) 20:25:33.60 ID:3jr1H9jv0.net
Autohotkeyで出来るかどうかは置いておいて、原理的に、マウスの動きをインターセプトして
動きは全部把握していて、必要な動きだけをWindowsの制御に渡すような仕組みになってたら出来るよね
AutohotKeyには出来ないんだろうけど

439 :名無しさん@お腹いっぱい。:2014/11/15(土) 00:09:47.49 ID:vYODBVu+0.net
Synaptics 用 ThumbRemap スクリプト、AHK x64 で動かない理由って
ポインタサイズ以外に何があるんでしょうか?
AHK x86 では動くので良いのですが、理由がわからんので…

440 :437:2014/11/15(土) 00:15:41.45 ID:vYODBVu+0.net
ちなみに今つかってる AHK x86 用改変スクリプトはこちら
#If, TouchPad 以下にキー定義すると動く (はず)

TouchInit:
VarSetCapacity(IBuf, A_PtrSize * 4)
VarSetCapacity(OBuf, A_PtrSize * 2)
NumPut(0x01000000 | 10 , &IBuf)
NumPut(0x01000000 | 729, &IBuf + A_PtrSize)
NumPut(0, &IBuf + A_PtrSize * 2)
NumPut(~0 - 1, &IBuf + A_PtrSize * 3)
TouchPad := 0
SetTimer, TouchCheck, 10

TouchCheck:
TouchPad := TouchPad()
Return

TouchPad() {
Global IBuf, Obuf
If GetKeyState("LButton") Return
hSynTP := DllCall("CreateFile", "Str", "\\.\SYNTP", "UInt", 0xC0000000
, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 80, "UInt", 0, "Ptr")
DllCall("DeviceIoControl", "Ptr", hSynTP, "UInt", 0x80006004, "Ptr", &IBuf
, "UInt", A_PtrSize * 4, "Ptr", &OBuf, "UInt", A_PtrSize * 2, "UInt", 0
, "UInt", 0, "Ptr")
DllCall("CloseHandle", "Ptr", hSynTP, "Ptr")
Return, NumGet(&OBuf + A_PtrSize) & 0xFF
}

441 :437:2014/11/15(土) 00:23:17.24 ID:vYODBVu+0.net
上のは別の常駐スクリプトからの呼び出し用です。
#If, TouchPad セクションはメイン常駐スクリプトに定義します

442 :名無しさん@お腹いっぱい。:2014/11/15(土) 00:49:55.76 ID:mxl3sfsH0.net
#If, TouchPad なんてどこにも書いてないが?
元のソースやリンク貼らないと意味不明だぞ。

443 :名無しさん@お腹いっぱい。:2014/11/15(土) 01:00:19.40 ID:r9boWeWu0.net
DllCallのデータ型が合わなくなってるとか?
元管理人氏のコードはけっこうごりごり直値叩きまくってるから修正しようとすると面倒なんだよね

444 :437:2014/11/15(土) 01:21:16.86 ID:vYODBVu+0.net
>>442 >>441
>>443 たぶんそれですね。

445 :名無しさん@お腹いっぱい。:2014/11/15(土) 13:58:31.40 ID:F+/nBsd80.net
PID foo のウインドウに hoge.txtをドロップする書き方を教えろ下さい。

446 :名無しさん@お腹いっぱい。:2014/11/15(土) 14:16:02.74 ID:uZ9j0Cfl0.net
ahk ファイルドロップ関数 でググれ

447 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:27:15.35 ID:JAvkPkdu0.net
指定したウインドウを非アクティブにする方法ってありますか
あるウインドウAをアクティブにして作業したあと、そのウィンドウAを非アクティブにして、それまでアクティブだった
ウインドウをアクティブに戻したいのです
ウインドウAをアクティブにする前にアクティブだったウインドウを覚えておく方法なら出来ますが、作業しているときに
そのウインドウは別の作業で消えていても構わないので
例えばもとのアクティブウインドウが何か別のアプリだったとして、作業中にそのアプリが終了してもいいんです
だと、もとのウインドウを覚えているという方法はとれません
WinGet, id, list
とか使うしかないのかな

448 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:32:12.55 ID:JAvkPkdu0.net
ちなみに
WinSet, Bottom, , ウインドウA
ってやってみたのですが、ウインドウAは背面に消えて動作としてはそれでいいのですが
ウインドウAはアクティブのままで非アクティブにはなりません

449 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:33:02.96 ID:SFNcT2Qx0.net
元々のウィンドウがなくなってたら、デスクトップをアクティブにすればいいんでないの?
というかそれ以外の挙動は多分不自然だ

450 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:36:36.42 ID:e/Gfqn4H0.net
Run

451 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:40:24.80 ID:JAvkPkdu0.net
>>449
要するに、普段の作業をしているときに、別作業としてウインドウAを使った作業が割り込みみたいに入って
作業が終わったら最背面に戻って待機みたいな感じです
ウインドウAの作業をしているときに、例えばバッチ処理の別ウインドウがあったり動画をみてたりとかいくつかあっても構わないのですよ
自然に消えて行ってほしいのです

452 :名無しさん@お腹いっぱい。:2014/11/15(土) 16:51:44.84 ID:kACT1goP0.net
>>451
Alt+Escを使えばいいんじゃね。ただ、ウィンドウが何枚もあると
>それまでアクティブだったウインドウをアクティブに戻したい
ってのは、もうクラス指定した方が確実だと思うけど

453 :名無しさん@お腹いっぱい。:2014/11/15(土) 17:07:33.57 ID:dcibyoer0.net
>>447
ウィンドウ指定の除外条件を使えばいい

WinActivate, , , 『ウィンドウAだけがヒットするwindow条件』

これでウィンドウA以外のウィンドウで一番手前の物がアクティブになる

454 :名無しさん@お腹いっぱい。:2014/11/15(土) 17:08:48.07 ID:JAvkPkdu0.net
>>452
なるほど
send !{Esc}
で出来ましたw

455 :名無しさん@お腹いっぱい。:2014/11/15(土) 17:21:14.81 ID:JAvkPkdu0.net
>>453
これ、やってみましたが、なぜかもとのウインドウにアクティブが戻りません
send !{Esc}
でやることにしました

456 :名無しさん@お腹いっぱい。:2014/11/15(土) 18:25:23.22 ID:dcibyoer0.net
>>455
試してみたらタスクバーだのスタートボタンだのサイドバーだのもヒットしちゃうみたいだね
除外条件連ねるよりはそっちの方が楽だわ

457 :名無しさん@お腹いっぱい。:2014/11/15(土) 20:46:01.57 ID:16QEguSh0.net
今loopファイル処理で特定属性のファイルを洗い出して、一斉に移動させようかと思ってるんですが、loop処理中に得た値をどこかに一時保存していきたいんです

自動増殖する情報を一時的に保存する領域とかなにかないでしょうか?

458 :名無しさん@お腹いっぱい。:2014/11/15(土) 20:55:24.67 ID:F+/nBsd80.net
>>446
ありがとん
見つけたコードコピペして動かなくて悩んだがStrlen()を*2したらでけた
マルチバイトなんて大嫌いだ

459 :名無しさん@お腹いっぱい。:2014/11/15(土) 21:22:33.72 ID:JAvkPkdu0.net
>>456
要するに、Program Managerも排除しないといけないのでしょ
複数の指定方法ってあるようですが、変数で並べる方法は見つけましたが、直接文字列で複数
並べるだけでやったら出来なかったので、そこでやめました

460 :名無しさん@お腹いっぱい。:2014/11/15(土) 21:23:38.69 ID:0ok+Bfy50.net
>>457
i=0
Loop, FilePattern {
i++
hoge%a_index% = %A_LoopFileFullPath%
}
loop, i
filemove, hoge%a_index%, 移動先(ファイル名)

というようにすれば出来る。

461 :名無しさん@お腹いっぱい。:2014/11/15(土) 23:04:35.71 ID:/ZLE8mX20.net
>>459
正規表現を使えば複数のウィンドウを指定できるよ

462 :名無しさん@お腹いっぱい。:2014/11/16(日) 00:12:31.79 ID:uftOeTdb0.net
%a_index%の中にはファイルパスが次々放り込まれるっていう認識でいいんでしょうか?

463 :名無しさん@お腹いっぱい。:2014/11/16(日) 00:17:36.64 ID:uftOeTdb0.net
あ、いや、「hoge%a_index%」が変数名になるわけですか。やってみます

464 :名無しさん@お腹いっぱい。:2014/11/16(日) 00:53:52.47 ID:mqCLihuJ0.net
>>461
できるなら動く見本よろしく

465 :名無しさん@お腹いっぱい。:2014/11/16(日) 00:55:38.73 ID:6SwPPBBk0.net
┐(´ー`)┌

466 :名無しさん@お腹いっぱい。:2014/11/16(日) 01:17:45.81 ID:4VFy6W4s0.net
>>464
SetTitleMatchMode, RegEx
WinActivate, ウィンドウA, , - Internet Explorer$|ahk_class Progman|メモ帳$ ahk_class Notepad

みたいに"|"で区切る。タイトルの部分は正規表現の検索になるので注意

467 :名無しさん@お腹いっぱい。:2014/11/16(日) 01:41:10.67 ID:mqCLihuJ0.net
>>466
ID:JAvkPkdu0 の条件での話しなんだが
ウィンドウA以外の最前面ウィンドウをアクティブにする

そもそも >>453 のやり方はできるのか?

468 :名無しさん@お腹いっぱい。:2014/11/16(日) 01:45:03.70 ID:4VFy6W4s0.net
>>467
すまん間違えた。ウィンドウAの部分は"A"にしておいてくれ

469 :名無しさん@お腹いっぱい。:2014/11/16(日) 01:50:24.26 ID:4VFy6W4s0.net
>>467
勿論できる

470 :名無しさん@お腹いっぱい。:2014/11/16(日) 02:02:00.04 ID:4VFy6W4s0.net
>>467
中途半端になったからもう一度書き直す

SetTitleMatchMode, RegEx
WinActivate, A, , ウィンドウA|Program Manager|...(他にアクティブ時に除外したいウィンドウがあれば"|"で区切る)

471 :名無しさん@お腹いっぱい。:2014/11/16(日) 02:49:03.99 ID:mqCLihuJ0.net
>>470
本当に動作確認したのか?
このやり方だと除外指定していないエクスプローラーや電卓等も除外される
除外指定が足りてないのかと思ったが見当たらない・・・。

>>453 のやり方は一番目の引数”A”がない時点で違う

F1:: ; ※目的の動作をしていない
SetTitleMatchMode RegEx
WinActivate, A,, ^ahk_class (Button|Shell_TrayWnd|Program Manager|WorkerW|Notepad)$ ; メモ帳
Return

F2:: ; クラス確認用
WinGet, Var, List
Loop % Var {
WinGetClass, AAA, % "ahk_id " Var%A_Index%
MsgBox % AAA
}
Return

472 :名無しさん@お腹いっぱい。:2014/11/16(日) 04:21:41.86 ID:4VFy6W4s0.net
>>471
すまん。似たようなのを昔作ったんだが、今見なおしたら"A"の部分は"."だった
ただこれだとクラスでの指定は無理だったようだ
申し訳ない

ウィンドウグループを使うのはどうだろう?

SetTitleMatchMode, RegEx
GroupAdd, Test, ahk_class (Button|Shell_TrayWnd|Program Manager|WorkerW|Notepad)
GroupDeactivate, Test, R

473 :名無しさん@お腹いっぱい。:2014/11/16(日) 04:21:42.82 ID:mqCLihuJ0.net
テストとwiki+原文も読んだ上での結論
*アクティブ指定のWinTitle「A」は残りの引数を省略しないといけない
*ahk_*** のパラメーターはWinTitleでのみ指定可能

>>453>>456
タイトルだけでの判断なので誤動作する

SetTitleMatchMode RegEx
WinActivate,,, (スタート|スタート メニュー|Program Manager|電卓|^$)
Return

>>466-471
文法ミス 動いているが意図しない処理になっている

474 :名無しさん@お腹いっぱい。:2014/11/16(日) 04:38:35.76 ID:4VFy6W4s0.net
>>472余計なこと書いて紛らわしかったので訂正→クラスでの指定は無理だった(もう気づいたようで悪いけど)

475 :名無しさん@お腹いっぱい。:2014/11/16(日) 11:15:29.35 ID:OeQ4NrrO0.net
みんなちゃんと動作確認してから書いてくれ
なんかもうごちゃごちゃ

476 :名無しさん@お腹いっぱい。:2014/11/16(日) 11:20:23.68 ID:9QTcb5iK0.net
みんなじゃないだろ

477 :名無しさん@お腹いっぱい。:2014/11/16(日) 11:28:09.92 ID:6SwPPBBk0.net
無知ならせめて謙虚たれ

478 :名無しさん@お腹いっぱい。:2014/11/16(日) 14:38:20.24 ID:9tPx6Xgk0.net
無責任にできるという奴もあれだが、人に検証結果出させてできねーだろっていう奴もどうかと
見本書け言う前にできない根拠を述べるくらいはするべきじゃね

479 :名無しさん@お腹いっぱい。:2014/11/16(日) 16:20:25.71 ID:nCZlEDI30.net
>>478
検証結果?間違い結果の間違いだろwできてないといってなにが悪いんだか。
そもそも分かる奴が答えればいいだけの話だしな。

480 :名無しさん@お腹いっぱい。:2014/11/16(日) 16:31:04.68 ID:SlYmaaD30.net
こんな奴になにかを教えてあげようなんて人もいないだろうし
いいんじゃねそのまま一人で馬鹿晒し続けて生きていけば

481 :名無しさん@お腹いっぱい。:2014/11/16(日) 17:00:16.00 ID:4VFy6W4s0.net
荒れる原因作ってすまん
ややこしくなったのでまとめる

>>472のコマンド群を使えば目的のことはできるが、WinActivateとかの除外ウィンドウの引数部分に正規表現で複数指定する場合は「ahk_○○」等以外ならできる(もしかしたらやり方あるかもしれんが)
最近似たようなのを作った時は前者のやり方に変えてたので、後者のやり方だとクラス名等の指定ができないことを忘れて無責任なこと書いてしまった

482 :名無しさん@お腹いっぱい。:2014/11/16(日) 17:53:51.05 ID:PUruIPJC0.net
>>478
分からないから出来るという人から聞いたそれだけだと思うな
結論がでたのかなり後だし、指摘禁止なんてルールもないよ

483 :名無しさん@お腹いっぱい。:2014/11/16(日) 19:13:42.33 ID:WMEG1gJ70.net
>464はこの段階でできないという確信が確実にあったでしょ、なのに自分はではそれを説明せず
わざわざ他人にコード書かせてからダメ出ししてる

484 :名無しさん@お腹いっぱい。:2014/11/16(日) 19:33:20.43 ID:OeQ4NrrO0.net
おいおい、おまいらw
すまん、そうだね、くらいで済む話なのに.。みんなそんな深く責めてるわけでもないと思うぞw

485 :名無しさん@お腹いっぱい。:2014/11/17(月) 19:00:07.01 ID:paeLEmH00.net
ループで毎回IniReadやIniWriteで同じパスを開かせてるんだけど、ループが終わるまで開きっぱなしにしてパフォーマンスを上げることってできたっけ?

486 :名無しさん@お腹いっぱい。:2014/11/17(月) 19:07:50.69 ID:vhEAFR880.net
パフォーマンス上げたいならKey省略で一気読みしてからループで解析したらいいんでね

487 :名無しさん@お腹いっぱい。:2014/11/17(月) 19:44:29.30 ID:sIFb9mL10.net
テキスト=HDD・SSD
変数=メモリ・RAMディスク
変数に丸ごと入れとけば単純に考えて10〜50倍ぐらいの違いはあるな

488 :名無しさん@お腹いっぱい。:2014/11/17(月) 20:21:04.25 ID:9oTZN9M60.net
>>485
iniファイル読込み関数群 Section、Key一覧の取得が可能
http://lukewarm.s101.xrea.com/up/file/090.zip

489 :名無しさん@お腹いっぱい。:2014/11/17(月) 20:23:52.57 ID:9oTZN9M60.net
ちなみに、ここに沢山ある
AutoHotokeyを流行らせるアップローダ
http://lukewarm.s101.xrea.com/up/

あ、今のahkでそのまま動くかは検証してないので悪しからず

490 :名無しさん@お腹いっぱい。:2014/11/17(月) 20:57:45.51 ID:paeLEmH00.net
>>486,487
iniファイルへの書き込みは一括ではできないようだね。FileAppendで代用が利く場合は素直にこっちを使う方が良さそうだね。ありがとう

491 :名無しさん@お腹いっぱい。:2014/11/17(月) 21:32:25.13 ID:sIFb9mL10.net
>>488-489
中身見てみたが今のバージョンなら機能的に用意されてる。
そこにある関数は良い物もあるが古すぎて無駄なのもあるからチェックはしようよ・・・。

492 :名無しさん@お腹いっぱい。:2014/11/18(火) 01:54:43.09 ID:0+A+Eql40.net
>>488
それ自分が上げたやつだわ
そこにあるのは全部Lでサポートされたね、いいことだ

・セクション内のキー一覧(value含まず)を取得
・セクションから 指定 Keyの値を検索して返す
・"Key = Value" の行を分割
↑を追加したものを今でも使ってるが、需要があるならupするけど
RegExで適当にやってるだけなんでわざわざ関数化するほどのものでもない
あとやっぱり読込だけでiniWrite系の機能は一切ない

493 :名無しさん@お腹いっぱい。:2014/11/18(火) 03:32:34.92 ID:i8XbeHjR0.net
配列を複製して複製元の配列データ弄ったら、複製先の方も影響を受けるんだが、やり方が間違ってるんだろうか?

Array := Object()
Array["A"] := 1
Array2 := Array
Array["A"] := 2
MsgBox, % Array2["A"] ; 2を表示

494 :名無しさん@お腹いっぱい。:2014/11/18(火) 03:45:04.91 ID:K3WUApuW0.net
ahkのオブジェクトは参照型だから
原因にすぐにピンと来てないあたりよく分かってないだろうからggr

495 :名無しさん@お腹いっぱい。:2014/11/18(火) 04:16:45.47 ID:i8XbeHjR0.net
>>494
出来ました。ありがとうございました

496 :名無しさん@お腹いっぱい。:2014/11/19(水) 10:27:20.57 ID:iHIMTb4R0.net
PixelSearchを下から、もしくは右から検出したいんですが、
やっぱり1pxごとのサーチをLoopで繰り返すしかないんでしょうか?

497 :名無しさん@お腹いっぱい。:2014/11/19(水) 21:31:42.62 ID:D8Rqgkh/0.net
>>496
通常モードならX1X2を反転させるだけで右から検索できるが
9x9以上ならFastモードをLoopさせたほうが早い
範囲が大きいなら高速なFastモードである程度絞ってからやるべきだろうね

1280x1024 通常
測定不能

1280x1024 Fastモード(m秒)
左上 64
左下 20885(Loop)
右上 25206(Loop)

100x100 通常(m秒)
166484

100x100 Fastモード(m秒)
左上 15
左下 1872(Loop)
右上 1880(Loop)

498 :名無しさん@お腹いっぱい。:2014/11/20(木) 03:14:34.05 ID:tC1vujDZ0.net
>>497
細かい時間の検証までありがとうございます!
X1X2位置逆にできたのねorz
今回は1px列サーチしたいだけなので、通常モードでよさそうですが
範囲検索する場合はFast活用しようと思います

499 :名無しさん@お腹いっぱい。:2014/11/20(木) 08:27:11.38 ID:KIaCikWR0.net
複数ウインドウがあって、前後いろいろ隠れている中で、
WinSet, Top,, wintitle
ってやって後ろのウインドウを前面に持って来ようとしても前面に出てきません
WinSetだけではアクティブ化はしないのは知っています
WinActivateをやったら出てきました
Topっていうのは前面に出るという意味ではないのでしたっけ?

たとえば、大きなウインドウ、AとBがあって、これは横に並んでいて重なってはいない
で、ウインドウCはAの下に隠れている。で、今Bがアクティブになっている。この状態で
Bがアクティブなのは変えずに、Aの下に隠れているCを表に出したい、みたいなことをしたいのです

500 :名無しさん@お腹いっぱい。:2014/11/20(木) 11:20:25.51 ID:kApJggY10.net
>>499
Topでは効かないウィンドウもある
その場合は最前面で回避できる

Gui, 3:Add, Text,, CCC
Gui, 3:Show, x554 y450 w100 h100, CCC
Gui, Add, Text,, AAA
Gui, Show, x500 y500 w100 h100, AAA
Gui, 2:Add, Text,, BBB
Gui, 2:Show, x608 y500 w100 h100, BBB
Return

F1:: ; 方法1:Top(非アクティブ)
WinSet, Top,, CCC
Return

F2:: ; 方法2:最前面(非アクティブ)
WinSet, AlwaysOnTop, On, CCC
WinSet, AlwaysOnTop, Off, CCC
Return

501 :名無しさん@お腹いっぱい。:2014/11/20(木) 12:14:19.94 ID:KIaCikWR0.net
>>500
ありがとう。やってみました。そしたら、このスクリプトでは、A、BのうしろにCを置いた状態で
F1でもF2でもCは前面に出ましたね

ところが、Cだけ残して下記のスクリプトで、このJaneStyle(私はJaneを使っています)のうしろにCを隠した状態ですると
F1は利かずに、F2で表に出てきました。なんか不思議ですねw

まあでも、AlwaysOnTopを使うことで前面に出ることには成功したのですが、F2を押して前面に出した状態で
背面に回ったAやB、あるいはJaneStyleウインドウをクリックしても今度はCが背面には戻りません
一旦、Cウインドウをクリックしてアクティブ化してやらないと、背面にまわすことは出来ないのですね。これはどうしてでしょう?

Gui, 3:Add, Text,, CCC
Gui, 3:Show, x554 y450 w100 h100, CCC
Return

F1:: ; 方法1:Top(非アクティブ)
WinSet, Top,, CCC
Return

F2:: ; 方法2:最前面(非アクティブ)
WinSet, AlwaysOnTop, On, CCC
WinSet, AlwaysOnTop, Off, CCC
Return

502 :名無しさん@お腹いっぱい。:2014/11/20(木) 12:25:29.94 ID:KIaCikWR0.net
ああ、今やってみたら、別にJaneStyleのウインドウだけじゃなくて、IEやほかのウインドウでもCウインドウはF1では出なくて
F2だけで出てきますね

503 :名無しさん@お腹いっぱい。:2014/11/20(木) 14:41:43.25 ID:kApJggY10.net
>>501
すでにアクティブなのでアクティブ化イベントが発生しない
非アクティブ→アクティブ化→最前面

504 :名無しさん@お腹いっぱい。:2014/11/20(木) 14:45:23.82 ID:KIaCikWR0.net
>>503
ああなるほど、そういうことですか。確認しましたw

505 :名無しさん@お腹いっぱい。:2014/11/21(金) 18:42:30.90 ID:Pkzoq0NA0.net
Imagesearchで画像認識やろうとあれこれ試しているのですが、どうも上手く行きません。
実際には上手く見つけることもあるし、見つけられないこともあるような感じです。
画像のサイズはどのくらいが良いとかコツのようなものがあるのでしょうか?

506 :名無しさん@お腹いっぱい。:2014/11/21(金) 19:02:25.35 ID:fSIGZY5P0.net
状況わからんがたぶんこれ

>検索対象にできるのは、画面に表示されている部分だけであり、
>他のウィンドウに隠されたり画面からはみ出している部分などは検索できない。

507 :名無しさん@お腹いっぱい。:2014/11/22(土) 04:46:53.18 ID:vdQ9ZbUX0.net
すみません、かなり基礎的な質問かもです
Loop処理の途中、何かのキーを押したらLoopからブレイクする処理ってどう作ればいいんでしょう
Loop
{
MouseMove,100,100
MouseMove,500,500
If GetKeyState("Esc")
break
}
こんな風に押しっぱなしを判定してbreakなら思いつくんですが、押しっぱなしではなくワンタッチで止めたいんです

508 :名無しさん@お腹いっぱい。:2014/11/22(土) 04:58:33.62 ID:Mi3GPVqu0.net
これで試してみて

flag = 0
q::ExitApp, 0
s::flag = 1
t::
flag = 0
Loop
{
MouseMove,300,500
sleep, 2000
MouseMove,500,500
sleep, 2000
If GetKeyState("Esc")
break
if( flag )
break
}
MsgBox Stop
return

509 :名無しさん@お腹いっぱい。:2014/11/22(土) 09:37:56.86 ID:NvL/n8Dq0.net
>>507
Inputを使えば複数キーを監視できるが待機しないとならないので
Loopと待機(監視)をSetTimerで別スレッドにして同時に処理する。

N = 0
Stop = 0
SetTimer, keyloop, 200 ; Loop速度
SetTimer, keypush, -1
Return

keyloop: ; Loop処理
If (Stop) {
 Stop = 0
}Else{
 Tooltip % ++N
 ; Sleep 1000 ; 処理に時間がかった場合のテスト
}
Return

keypush: ; Key監視
Input, Var, V, abcd{Esc}{Space}{F1}{F2} ; 好きなだけ登録
If (ErrorLevel = "NewInput") { ; 別Inputからの割り込み対策
 Goto keypush
}Else{
 Stop = 1
 SetTimer, keyloop, Off
 SetTimer, keypush, Off
}
Return
※全角スペース

510 :名無しさん@お腹いっぱい。:2014/11/22(土) 09:49:58.56 ID:NvL/n8Dq0.net
常駐する必要があるのでホットキーか
#Persistentを上に追加

511 :名無しさん@お腹いっぱい。:2014/11/22(土) 11:51:32.33 ID:vdQ9ZbUX0.net
>>508>>509-510
ご指導ありがとうございます〜
単スレッドでの実現は難しいのですね・・・
>>508はシンプルで手軽に使えますし、>>509は複数のキーをトリガーにできるのがいいですね
場合によって選んで使ってみようと思います

512 :名無しさん@お腹いっぱい。:2014/11/22(土) 12:08:02.66 ID:SAFH0O+y0.net
ESC:: ; %A_ThisHotkey%でOnOff
repeat := ( repeat != 500 ) ? 500 ; 間隔
: "Off"
Settimer, Deokure, %repeat%
return

Deokure:
; ここに動作
return

513 :名無しさん@お腹いっぱい。:2014/11/22(土) 15:35:53.99 ID:vdQ9ZbUX0.net
>>512
ありがとうございます〜 なるほどこの書き方はスッキリしていいかも

514 :名無しさん@お腹いっぱい。:2014/11/22(土) 15:37:28.61 ID:NvL/n8Dq0.net
>>512
すごいシンプル素敵

>>509
すいません、フラグ用Ifいらないようなので修正です

N = 0
F1::
SetTimer, keyloop, 200 ; 間隔
SetTimer, keypush, -1
Return

keyloop: ; Loop処理
Tooltip % ++N
; Sleep 1000 ; 処理に時間がかった場合のテスト
Return

keypush: ; Key監視
Input, Var, V, abcd{Esc}{Space}{F1}{F2} ; 好きなだけ登録
If (ErrorLevel = "NewInput") { ; 別Inputからの割り込み対策
 Goto keypush
}Else{
 SetTimer, keyloop, Off
 SetTimer, keypush, Off
}
Return

515 :名無しさん@お腹いっぱい。:2014/11/23(日) 08:12:07.01 ID:i23SDrVz0.net
ものすごく初歩的な内容かもしれませんが、
ドロップダウンリストの項目に日本語を使いたい場合は
Gui,Add,DropDownList,vName&nbsp;w100,選択して下さい||山田|佐藤|鈴木|斎藤|
という風に書くとNameにはそのまま日本語が入りますよね?
代わりに数字を入れるような方法は無いのでしょうか?

516 :名無しさん@お腹いっぱい。:2014/11/23(日) 08:27:01.90 ID:80E/toQK0.net
英単語で書いてもそのまま英単語が入るし代わりに数字が入ったりはしないと思うが
インデックスでアクセスしたい場合はChoose使う

517 :名無しさん@お腹いっぱい。:2014/11/23(日) 13:56:25.00 ID:i23SDrVz0.net
513です。
自己解決しました。AltSubmitオプションを指定すればよかったんですね。

518 :名無しさん@お腹いっぱい。:2014/11/23(日) 14:47:46.80 ID:7k6IvByb0.net
>>512
これってコメントに、%A_ThisHotkey%でOnOffって書いてありますが
なんでA_ThisHotkeyが関係あるのかわかりません。教えていただけませんか

519 :名無しさん@お腹いっぱい。:2014/11/23(日) 16:23:47.37 ID:jcgF8j7z0.net
コメントに「ESCでON/OFF」って書くとホットキー変更したときにコメントも直さないといけなくなるからじゃね

520 :名無しさん@お腹いっぱい。:2014/11/23(日) 19:11:30.17 ID:ZT43e6qx0.net
>>518
esc::MsgBox, %A_ThisHotkey%
の一行スクリプト実行させれば分かると思う

521 :名無しさん@お腹いっぱい。:2014/11/23(日) 21:06:06.28 ID:7k6IvByb0.net
>>520
A_ThisHotkeyが何なのかは知ってますよ
コメントアウトした後ろにわざわざ%A_ThisHotkey%ってのを持ってくるのはそういう習慣でもあるのかなってね
普通なら単に、このキーでOnOffって書くようなところをわざわざこう書いているっていうのは
何か理由があるのかなって思いました。どこかでダブルクリックを使ってる風でもないしね
別に深い意味はなかったのですね

522 :名無しさん@お腹いっぱい。:2014/11/23(日) 21:08:33.91 ID:H3jWC+cm0.net
コメントアウトされてるってことは単なる落書きか注釈です

523 :名無しさん@お腹いっぱい。:2014/11/24(月) 04:59:39.94 ID:tnKRSgck0.net
三項演算子について素朴な疑問だけど

If !Var
Var := "あ"

↑を三項演算子にした場合、こう書くしかないんだっけ?

Var := !Var ? "あ" : Var

Varが余分にコピーされて負荷が増えそうな気がするんだけど、そもそも三項演算子を使うのは不適切だったりする?

524 :名無しさん@お腹いっぱい。:2014/11/24(月) 06:09:32.42 ID:aFq92GRG0.net
>ExpressionAやExpressionBは空であっても良い。
>その場合、空の文字列として評価される。

525 :名無しさん@お腹いっぱい。:2014/11/24(月) 08:22:57.65 ID:Kdu04vdg0.net
!Var判定の時は代入じゃなくて文字列連結使うことが多いかな
何となく入れ直しよりは無駄がない気がしてる

Var .= !Var ? "あ" : ""

>>524
それだと else Var := "" になるから >523が望んでる省略とは別

526 :名無しさん@お腹いっぱい。:2014/11/24(月) 08:34:15.29 ID:0Kqsmbtm0.net
a = a
とした場合、何もしない、くらいの最適化はしてないのかな。なら
Var := !Var ? "あ" : Var
でもいいけど
文字のコピーは時間がかかるから、これくらいはあってもよさそうだけどねえ

527 :名無しさん@お腹いっぱい。:2014/11/24(月) 10:47:04.31 ID:t5iyVuzG0.net
スマホみたいにShiftキー1回だけ有効にするの作ったけどすでにいいのあったらくれ

528 :名無しさん@お腹いっぱい。:2014/11/24(月) 11:15:33.21 ID:cI2jUqiq0.net
>>523-526
Loop, 1000
Var := Var "ああああああああああ"
MsgBox, % StrLen(Var) "文字"

Time := A_TickCount

Loop, 10000000
(!Var) ? (Var := "あ") ;(A)
;Var := !Var ? "あ" : Var ;(B)

MsgBox, % A_TickCount - Time "`n" Var

(A)と(B)を切り替えて10回平均で比較してみた

(A) 2121,2215,2496,2371,2403,2215,2434,2433,2091,2371
(B) 3775,3651,4149,3557,3962,4461,3588,3900,4243,4088
平均2315msと3937.4msで1.7倍ぐらい違うから差はあるぽい?

529 :名無しさん@お腹いっぱい。:2014/11/24(月) 11:28:49.67 ID:IjB65OH50.net
どう見ても

If !Var
 Var := "あ"

が一番優れてる

530 :名無しさん@お腹いっぱい。:2014/11/24(月) 11:35:11.29 ID:IffyVXBL0.net
口を出すことでもないと思ってたけど、>>529に強く同意

531 :名無しさん@お腹いっぱい。:2014/11/24(月) 13:26:09.17 ID:tnKRSgck0.net
>>523の場合は三項演算子は使わない方が良さげですかね…

>>525
なるほど、それは思いつきませんでした。ありがと

532 :名無しさん@お腹いっぱい。:2014/11/24(月) 14:33:41.00 ID:0Kqsmbtm0.net
>>528
私は下記でループで回してやってみたけど、インタープリターだから多分解釈している時間の方が長くて
何度もやったけど、差がはっきりとわかるほどは違いが出ませんでした
a =
b =
z = 1234567890123456789012345678901234567890
z = %z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%
r:: ; run
t1 = %A_TickCount%
Loop, 1000000
{
  a = z
  a =
}
t2 = %A_TickCount%
Loop, 1000000
{
  z = z
  z = z
}
t3 = %A_TickCount%
Loop, 1000000
{
  b = b
  b = b
}
つづく

533 :名無しさん@お腹いっぱい。:2014/11/24(月) 14:34:16.73 ID:0Kqsmbtm0.net
つづき
t4 = %A_TickCount%
Loop, 1000000
{
  a = z
  If !a
   a := "あ"
}
t5 = %A_TickCount%
Loop, 1000000
{
  a = z
  a := !a ? "あ" : a
}
t6 = %A_TickCount%
t6 := t6 - t5
t5 := t5 - t4
t4 := t4 - t3
t3 := t3 - t2
t2 := t2 - t1
MsgBox %t2% %t3% %t4% %t5% %t6%
return

534 :名無しさん@お腹いっぱい。:2014/11/24(月) 21:04:26.21 ID:IWERXEj00.net
その差が出る処理ってどんだけ重いことさせてんの?という素朴な疑問

535 :名無しさん@お腹いっぱい。:2014/11/24(月) 21:21:41.61 ID:z8WNK1xI0.net
>>532
変数のサイズと試行回数が少なすぎて誤差と区別できてない。


速度比較用 http://pastebin.com/yVFyEqVv
三項演算子の方が処理速度が速くて驚いたが
気にするほどの違いじゃない

[分岐処理] (m秒)
2480 If
2340 三項 (!Var) ? (Var := "あ")

[変数代入]
4446 If
3417 三項 Var := (!Var) ? ("あ") : Var
3588 三項 (!Var) ? (Var := "あ") : (Var := Var)

536 :名無しさん@お腹いっぱい。:2014/11/24(月) 21:35:11.71 ID:0Kqsmbtm0.net
>>534-535
変数のサイズは
z = 1234567890123456789012345678901234567890
z = %z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%
と空との比較なんだけどなあ。これ以上大きな文字列使うことってかなり少ないと思うけどね
実際はこれでは多すぎると思っていて実際に使うサイズとの比較をしないとあまり大きすぎてもどうかと思う
試行回数は、もっと増やしても良かったね

537 :名無しさん@お腹いっぱい。:2014/11/24(月) 21:49:41.93 ID:0Kqsmbtm0.net
インタープリターなので、複数行にわたるIF文よりも三項演算子の方が解釈速度の分、速くなるんじゃないかな

538 :名無しさん@お腹いっぱい。:2014/11/25(火) 00:53:36.05 ID:FKQpU+Yi0.net
>>536
それって数値として認識されてない?

539 :名無しさん@お腹いっぱい。:2014/11/25(火) 02:20:53.49 ID:Hwny87aR0.net
>>526
>文字のコピーは時間がかかる
メモリ内なので超高速

>>536
>z = %z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%
>と空との比較なんだけどなあ
比較されてません

z = 1234567890123456789012345678901234567890
z = %z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%%z%
a = z
MsgBox % a ; 文字列”z”

540 :名無しさん@お腹いっぱい。:2014/11/25(火) 04:17:23.00 ID:3U5AX3j60.net
>>536が悪いんやない
全部ahkのつぎはぎ文法が悪いんや……

って新世界の路地裏でおっちゃんが言ってた

541 :530:2014/11/25(火) 07:15:25.85 ID:kGHABPK/0.net
>>538-540
あーー、いやーー、なんともお恥ずかしい。すいません。ときどきこの失敗するんですよね
a = z じゃなくて
a = %z%
とかに全部変えてやってみました。もう恥ずかしいので結果はみなさん各自確認してください

542 :名無しさん@お腹いっぱい。:2014/11/25(火) 14:37:23.40 ID:VP5heqah0.net
皆さんVBAで以下に相当する処理の書き方はどう書いてますか?
for i = 20 to 31 step 3 ; 20〜31の範囲に3刻みで数値を代入
next
自分は↓しか思いつかないのですがもっと良い書き方あるのでは?と
Loop
{
i := 20 + (A_index-1)*3
if (i >31)
break
}

543 :名無しさん@お腹いっぱい。:2014/11/25(火) 15:09:21.87 ID:hILR8JMO0.net
すみませんつまづきました

DetectHiddenWindows on
winget ,jpid , pid , ahk_exe javaw.exe
msgbox % jpid

これで非表示ソフトのpidまでは抜き出せたんですが、此処から先、javaの同名プロセスはたくさんあるけどその中の一つを指定したいんです
そのプロセスが動いてるかどうかで分岐したいので

544 :名無しさん@お腹いっぱい。:2014/11/25(火) 16:02:45.17 ID:Hwny87aR0.net
>>542
i = 20
While (i < 31) {
MsgBox % i
i += 3
}

545 :名無しさん@お腹いっぱい。:2014/11/25(火) 16:23:43.50 ID:Hwny87aR0.net
>>543
タイトルで判断できるなら簡単だけど無理?

WinGet, jsList, List, ahk_exe javaw.exe
Loop % jsList {
WinGetTitle, jsTitle, % "ahk_id" jsList%A_Index%
MsgBox % jsList%A_Index% "`n" jsTitle
}
Return

546 :名無しさん@お腹いっぱい。:2014/11/25(火) 18:31:49.21 ID:VP5heqah0.net
>>544
ありがとうございます。こちらの方が処理が軽そうですね。
しかし行数多いループだと増加値を見るのにループの最後まで追いかける手間が
気になってしまいますね。

547 :名無しさん@お腹いっぱい。:2014/11/25(火) 18:52:18.52 ID:Hwny87aR0.net
>>546
メンテナンス性を上げるなら設定項目は全部変数にして
一ヶ所にまとめるか関数にするのが一般的
代入の式で縦長になるのが嫌なら横にまとめて書くこともよくある

i := 20, m := 31, p := 3 ; "文字列の場合は囲う"
While (i < m) {
MsgBox % i
i += p
}
Return

548 :名無しさん@お腹いっぱい。:2014/11/25(火) 20:07:03.37 ID:VP5heqah0.net
>>547
おぉ勉強になります。慣れ親しんだ制御文が無くて面食らいましたが
すっきり書けそうです。ありがとうございました。

549 :名無しさん@お腹いっぱい。:2014/11/26(水) 17:42:06.43 ID:uTk1zMue0.net
>>545
返事遅くなりました。これでちゃんと判断できるようになりました。助かりました

550 :名無しさん@お腹いっぱい。:2014/11/29(土) 10:54:02.62 ID:e/jh0yNj0.net
2つのファイル、a.ahkとb.ahkを実行していて、a.ahkの中の変数hensuuAを変化させたとき、そのhensuuAを
b.ahkの中でもhensuuBとして使いたいため、下記のスクリプトで実行していますが、もっと簡単でいい方法ってありますか

a.ahkのスクリプトーーーーー
--
--
F7::
hensuuA = %BetunoHensuu%
  IniWrite, %hensuuA%, hensuu.ini, sec, key
  Send, ^{F7}
return
--
--

b.ahkのスクリプトーーーーー
--
--
#UseHook off
^F7::
IniRead, hensuuB, hensuu.ini, sec, key
return
#UseHook
--
--

ちなみにF7はa.ahkでオーバーライドしているのでいいのですが、b.ahkを使わないときがあるので
そのときに^F7って特にウインドウで使ったりしてませんよね。b.ahkを使わないときは^F7はオーバーライドされないので
何かに使ってたらいやだなあ

551 :名無しさん@お腹いっぱい。:2014/11/29(土) 10:59:08.77 ID:tb1gDVkk0.net
同時起動中ならPostMessageとOnMessageを使えばいけると思う。
一時的にA側の変数だけ格納してA終了後B側が利用するっていう使い方ならiniに書きだすのが無難。
メモリとかに置いておくこともできるはずだけど、それはそれでめんどくさい

552 :名無しさん@お腹いっぱい。:2014/11/29(土) 11:01:26.69 ID:e/jh0yNj0.net
PostMessageとOnMessageですか
これは初めてですね。ちょっと勉強してみますね。ありがとうございました

553 :名無しさん@お腹いっぱい。:2014/11/29(土) 11:03:22.90 ID:e/jh0yNj0.net
>一時的にA側の変数だけ格納してA終了後B側が利用するっていう使い方なら
これは違います。a.ahkとb.ahkは同時に使っていて、b.ahkはスレーブ的な動きになります。書き忘れました。b.ahkは使わないこともあります

554 :名無しさん@お腹いっぱい。:2014/11/29(土) 11:05:09.55 ID:tb1gDVkk0.net
ならPostMessageだね

555 :名無しさん@お腹いっぱい。:2014/11/29(土) 14:06:48.98 ID:NDVlApcz0.net
リムーバブルディスクかどうかの判断ってできます?

556 :名無しさん@お腹いっぱい。:2014/11/29(土) 14:17:55.49 ID:Drrmc8Up0.net
DriveGet

557 :名無しさん@お腹いっぱい。:2014/11/29(土) 17:48:22.59 ID:4TT/Yred0.net
>>554
出来ました。ちなみにスクリプトのメインを書いておきます。ありがとうございました
a.ahk----------
--
--
F7::
DetectHiddenWindows On
PostMessage, 0x5555, %hensuuA%, 123, ,b.ahk ahk_class AutoHotkey
;~ MsgBox, error= %ErrorLevel% ; デバッグ用
DetectHiddenWindows Off
return
--
--
b.ahk----------
--
--
OnMessage(0x5555, "MsgMonitor")
MsgMonitor(wParam, lParam, msg)
{
   if( lParam = 123 ) ; 念のための確認。123は適当
   {
      hensuuB = %wParam%
      MsgBox, hensuuB= %hensuuB%
   }
}
--
--
それと
https://sites.google.com/site/autohotkeyjp/reference/commands/PostMessage
の中のWinAPI Database for VB Programmerのリンク先、
http://www.winapi-database.com/
がちゃんと表示されないみたいですね

558 :名無しさん@お腹いっぱい。:2014/12/01(月) 20:30:04.23 ID:A2L8ByX/0.net
スクレイピングさせようと思って試してるんだけど
裏で取得して欲しいのにComObjCreate+Navigate使うとIE立ち上がってしまうし
UrlDownloadToFileでファイル落とすしかないのかな?

559 :名無しさん@お腹いっぱい。:2014/12/01(月) 21:21:34.62 ID:f47y74aA0.net
>>558
ie.visible = false
だったような…間違ってたらスマン

560 :名無しさん@お腹いっぱい。:2014/12/01(月) 21:34:40.15 ID:A2L8ByX/0.net
>>559
なるほどvisibleですか
うまくいきそうです即レスサンクス!

561 :名無しさん@お腹いっぱい。:2014/12/01(月) 21:55:48.62 ID:nJdxN8wq0.net
ここの人たちってCapsLockやひらがなキーには何の機能割り当ててますか?

562 :名無しさん@お腹いっぱい。:2014/12/01(月) 22:02:06.08 ID:mhwCdFXw0.net
なんか画期的な使いみちがあったらもう書き込んでるっつーの

563 :名無しさん@お腹いっぱい。:2014/12/01(月) 22:08:41.36 ID:/zhRMuMR0.net
CapsLockは単押しでオンオフトグルにしてる

564 :名無しさん@お腹いっぱい。:2014/12/01(月) 22:23:27.16 ID:/c7+L9Hk0.net
昔はひらがなシングルクリックで半角、ダブルクリックで全角ってやってたけど面倒だから無変換で半角とひらがなで全角に変えたわ

565 :名無しさん@お腹いっぱい。:2014/12/01(月) 22:58:52.37 ID:6zJmCemy0.net
俺は変換を全角にしてるな
無変換はカナ変換に使ってる

566 :名無しさん@お腹いっぱい。:2014/12/01(月) 23:13:03.95 ID:qNEO99lX0.net
>>561
その2つって不具合出てうまく使えないっていろんなサイトに書いてない?今は大丈夫なの?

567 :名無しさん@お腹いっぱい。:2014/12/01(月) 23:29:02.34 ID:f47y74aA0.net
>>566
リマップのことじゃなくホットキーのことでしょ?

オレはかなり変則的だと思うけど、「無変換」をエンターにしてるため「変換」をIME ON、「ひらがな」をIME OFFにしてる

568 :559:2014/12/01(月) 23:51:41.46 ID:nJdxN8wq0.net
やっぱりみなさん創意工夫してますね、参考になります
ちなみに自分はあまり使ってませんがCapsLockはBackSpace、ひらがなはランチャー起動用のショートカットです

>>566
環境によるかもしれないですけど自分は>>4の方法で特に不具合無く使えてます
ひらがなにF13(0x0064)、CapsLockにF14(0x0065)です

569 :556:2014/12/02(火) 00:47:18.36 ID:bkI1dIdZ0.net
けっこう進んだんだが透過色GUI(text)のアンチエイリアスってまだバグってるのかな?
WinSet, TransColor, %BGColor%指定すると文字周りが滲んでしまう
TransColorしなければくっきり表示
Gui, Font,Q3(AAオフ)指定してみたんだけど変わらず><
あとオブジェクト空にしてObjReleaseしてもスクリプト再起動するごとに
IEコンポーネントのゴミが溜まっていくのはどうにかならないんだろうか…

環境:Windows7-64bit
AHK:1.1.16.05

570 :名無しさん@お腹いっぱい。:2014/12/02(火) 01:18:24.71 ID:tdYUm11y0.net
IniWriteでキーにデータ書き込んだら容量が多いせいなのか途切れたんだけど、FileAppend使う以外に対策ないのかな?

571 :名無しさん@お腹いっぱい。:2014/12/02(火) 02:22:44.64 ID:zMh4Rtwz0.net
>>569=556
>IEコンポーネントのゴミが溜まっていくのはどうにかならないんだろうか…
スクリプト終了前っていうか、IEコンポーネント使うの止める時 ie.Quit してる?

また、IEコンポーネント使うVBS見てみたんだが、こんなのも以外と重要かも・・・
ie.Navigate の後、IEが立ち上がって使える状態になるまで待つ。

Do While ie.Busy Or ie.ReadyState <> 4
WScript.Sleep 100
Loop

↑はネットで得たVBScript情報なので、細かいことは聞かないで。

>>569,568
どっちにも言えるけど、実際のスクリプトを晒せばレス付きやすいぞ。

572 :名無しさん@お腹いっぱい。:2014/12/02(火) 08:52:03.66 ID:tdYUm11y0.net
>>571
すみません。自分の勘違いだったようです

573 :名無しさん@お腹いっぱい。:2014/12/02(火) 13:08:48.23 ID:Hp1X+Voo0.net
時間指定できるシャットダウンとスリープの選択式Guiを作ってます。デフォルトで15分。
ですがこれだとTimerVに変数が格納されません。何が足りないんでしょう?

;gui作成部分開始--------------------------------------------
WinGetPos,,,, taskbarH, ahk_class Shell_TrayWnd
SysGet, Monitor, MonitorWorkArea
WinW:=240
WinH:=160
Width := (MonitorRight/2)-(WinW/2)
Hight := (MonitorBottom/2)-(WinH/2)

Gui, Add, Text, Center , 指定分後に行う動作を選んでください
Gui, Add, Edit , x80 y30 w80 h20 vTimerV, 15
Gui, Add, Button, x80 y60 w80 h20 gsleepMessage, スリープ
Gui, Add, Button, x80 y90 w80 h20 gshutdownMessage, シャットダウン
Gui, Add, Button, x80 y120 w80 h20 gGuiClose Default, キャンセル

;gui作成部分完了-------------------------------------------

つづく

574 :名無しさん@お腹いっぱい。:2014/12/02(火) 13:09:49.11 ID:Hp1X+Voo0.net
つづき

shutdownMessage:
GUI, Destroy
MsgBox , 0, 確認, シャットダウンを選択しました, 3
WinClose,ahk_class XF64
WinClose,ahk_class TXFinder.UnicodeClass
SetT := TimerV * 6000
SetTimer, Shutdown, %SetT%
return

sleepMessage:
GUI, Destroy
MsgBox , 0, 確認, スリープを選択しました, 3
Flag := 1
WinClose,ahk_class XF64
WinClose,ahk_class TXFinder.UnicodeClass
SetT := TimerV * 6000
SetTimer, Shutdown, %SetT%
return

GuiEscape:
GuiClose:
ExitApp

575 :名無しさん@お腹いっぱい。:2014/12/02(火) 13:54:43.32 ID:OuIozcQY0.net
Gui,Submitしないと変数に入らない

576 :名無しさん@お腹いっぱい。:2014/12/02(火) 13:57:10.10 ID:kMTazH950.net
>>574
Gui,DestroyじゃなくてGui,Submitにしないと
DestroyじゃGUI破棄するだけだぞ
あと、タイマーの数値は負にしといた方がいいと思うぞ

577 :名無しさん@お腹いっぱい。:2014/12/02(火) 14:02:02.84 ID:kMTazH950.net
あ、あとタイマーの数値6000ってのも60000の間違いじゃないかな
タイマーの数値は 1000 * 60 みたいに単位で分けて乗算することをおすすめする

578 :名無しさん@お腹いっぱい。:2014/12/02(火) 15:10:46.37 ID:Hp1X+Voo0.net
できるようになりました!ありがとうございます

579 :名無しさん@お腹いっぱい。:2014/12/03(水) 11:27:28.72 ID:WI5e9h/50.net
初歩的な質問ですみません、修飾キー以外の1キーに複数の修飾キーを入力させるにはどういった記述を行えばいいでしょうか
例としてaキーにCtrl+Altの機能を持たせたい場合に
a::^Altと記入してもAltの部分だけが入力されてしまい ^ の部分が認識されないのですが
wikiに書かれているリマップのページでは置換先に修飾キーとの組み合わせも可能とあったのですが、これは修飾キー記号+修飾キーの場合には別の方法が必要だったりするのでしょうか

580 :名無しさん@お腹いっぱい。:2014/12/03(水) 12:18:46.87 ID:cXJcf+ze0.net
send知らんのか

581 :名無しさん@お腹いっぱい。:2014/12/03(水) 12:50:47.65 ID:dUIwblph0.net
修飾キー同士のみの組み合わせはダメなんじゃね (a:: !^b なら動く)

sendで{alt}{Ctrl}する、もし押しっぱなしになる場合は
SetKeyDelayの値を調整したり、 {alt down} sleep {alt up} と分けてsendして対策する

582 :名無しさん@お腹いっぱい。:2014/12/03(水) 13:11:31.70 ID:vFx3zTeK0.net
a::send,{ctrl down}{alt down}
a up::send,{ctrl up}{alt up}

コレで完成

583 :名無しさん@お腹いっぱい。:2014/12/03(水) 15:16:21.66 ID:/V1lnwJI0.net
みなさん圧縮解凍ツール使うときはやっぱり7z.exeですか?それともexplzh.exe?

584 :名無しさん@お腹いっぱい。:2014/12/03(水) 16:22:41.83 ID:dgLIVvXn0.net
ahkで汎用的な圧縮解凍スクリプト書くんなら、7-ZIP一択だろ。
explzhなどコマンドラインオプションが貧弱すぎて使いものにならんだろ。
まぁ個人的には両方入れてて、その時々で使い分けてるけどね

・・・って誤爆(?) or すれ違いネタにレスしてどうするw

585 :名無しさん@お腹いっぱい。:2014/12/03(水) 16:30:20.48 ID:J8hZco9W0.net
Dropboxと絡めて使う場合、同期が完了したのを確認してからシャットダウンってできるのかな?
いちいちDropboxのアイコンが変わるの待ってからシャットダウンするのもめんどくさいよね

586 :名無しさん@お腹いっぱい。:2014/12/03(水) 16:34:09.34 ID:bgB08NTT0.net
>>582
キーリピートを繰り返しているので正しいとは言えない
環境によっては大量のリピートで a up:: が認識しない
キー保持したいならKeyWait

F1::
Send, {Ctrl down}{Alt down}
ToolTip down ; 確認用
KeyWait, F1
Send, {Ctrl up}{Alt up}
ToolTip up ; 確認用
Return

587 :名無しさん@お腹いっぱい。:2014/12/03(水) 17:22:23.23 ID:3lH1o/Gt0.net
>>585
ネットワーク通信量監視して一定以下の状態が一定時間続いたらシャットダウン
みたいなタイマースクリプト書いて以前は対応してた
今は30分とか適当な時間経過後に落とすシンプルなタイマーでいいやってなってる

588 :名無しさん@お腹いっぱい。:2014/12/03(水) 19:16:57.39 ID:dgLIVvXn0.net
>>585
>いちいちDropboxのアイコンが変わるの待ってからシャットダウンするのもめんどくさいよね
これ、「目視で」という意味なら、ImageSearch使う力技で自動化すれば?

589 :名無しさん@お腹いっぱい。:2014/12/04(木) 12:47:18.04 ID:n+/C6Ka80.net
>>586
>キーリピートを繰り返しているので正しいとは言えない
これってどういうこと?
>a::send,{ctrl down}{alt down}
が何度も呼ばれてるってことなのかな

自分も主にゲーム関係のスクリプトで580の書き方が大量にあるから書き換えたほうがいいのかな
目に見える実害はないっぽいんだけど

590 :名無しさん@お腹いっぱい。:2014/12/04(木) 13:38:29.74 ID:ZBBQzCMh0.net
むしろキーリピートしてくれないと困るゲームもあるからなんともいえねぇ
FPSなんかはキーリピート入ってないと移動すらままならん

591 :名無しさん@お腹いっぱい。:2014/12/04(木) 18:17:38.12 ID:CC+tY9MD0.net
使い分けだね
質問の例みたいな修飾キーの場合はキーリピートしない方がいい
キーリピートが必要な動作ならそもそも{○○ down}{○○ up}とすべきじゃない

592 :584:2014/12/04(木) 18:23:20.56 ID:Fhanl3yW0.net
>>589
無駄な繰り返し(負荷)もあるが意図しない動作になっている
キー保持と入力(リピート)は別物だと考えないといけない

キーによる挙動は 入力時(Down/Up)と保持状態 の3つがある
文字入力の場合Downの時点でキー入力が送られる

以下のスクリプトはキー保持と入力(リピート)を同時にやっていることになる

a::Send,{b down}
a up::Send,{b up}

593 :名無しさん@お腹いっぱい。:2014/12/04(木) 18:45:19.41 ID:fXWz6AlY0.net
動かない場合は最終手段でどうぞ
実際格ゲーリマップしてもKetwaitとかだとなぜかしらんけど動いてくんない事がある

594 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:18:07.36 ID:3h1ziKBj0.net
キーの割り当てについてですが、シフトキーなのですけど、+をつけて表しますね
で、
+a::
ってやるとちゃんと動くのですが、テンキーのゼロで、
+Numpad0::
ってやると動かないのですがそういう仕様なのでしたっけ。ちなみに
^Numpad0::
ってやるとコントロールキーと一緒にちゃんと動きます
最初は、
^!Numpad0::
で作ってたんだけど、めったに使わない組み合わせでやりたいと思って
+!Numpad0::
でやったら動かなくて、シフトキーとのコンビネーションが動かないことに気づきました

595 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:27:49.38 ID:BWTVcNAM0.net
Shift+NumpadはNumLockかかった状態の挙動になるから
NumpadDel 〜NumpadPgDn で指定すればおk

596 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:32:03.82 ID:HQxj/mvZ0.net
ヘタしたらキーボードの同時押し対応ではない可能性もある

Numpad0::
If getkeystate("Lshift","P")
おした時の動作
else
押してない時の動作
return

でも無理なら多分キーボードが対応してないかもなぁ
ログの見方わかってればそっちで確認してもいいかも

597 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:49:37.55 ID:3h1ziKBj0.net
Numpad0-9は、NumLockやその他の関係で、他のキーとはちょっと特殊なのかもしれないんですね
このキーは外した方がいいのかな

598 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:52:58.32 ID:3h1ziKBj0.net
ついでに書いておくと、^ ! の組み合わせを嫌った理由のひとつに、動画でフルスクリーンで見ているときに
コントロールキーを押すと、フルスクリーンが解除されちゃうんですよね。2画面で使ってるんですが
なのでコントロールキーは嫌だなというのもありました

599 :名無しさん@お腹いっぱい。:2014/12/06(土) 09:53:08.98 ID:HQxj/mvZ0.net
まぁ、俺の環境の方では出てない現象なんで、キーボードを疑ったほうがいいかもしれない
USBキーボードとかノートPCキーボードではそもそも押したと内部的にみなされない穴がある場合もあるから

600 :名無しさん@お腹いっぱい。:2014/12/06(土) 10:39:55.98 ID:2wUfTTz60.net
>>594
テンキーの0〜4と6〜9と.にはShiftキーと一緒に押すと別の機能になるよ。
オレのキーボードには印刷してある。

ttp://pc.watch.impress.co.jp/img/pcw/docs/326/049/05b.jpg

601 :名無しさん@お腹いっぱい。:2014/12/06(土) 10:47:28.25 ID:BWTVcNAM0.net
だから+NumpPad0の代わりにNumPadINSを試してみろと
テンキー専用だとNumLock依存嫌って吐き出すキーコード変えてるメーカーもあるから
絶対とは言えんけど

602 :名無しさん@お腹いっぱい。:2014/12/06(土) 10:47:59.09 ID:AZTb5Wvt0.net
>テンキーの0〜4と6〜9と.にはShiftキーと一緒に押すと別の機能になるよ。

20年もの間、Numlockした時限定の機能かと思ってた…

603 :名無しさん@お腹いっぱい。:2014/12/06(土) 10:55:07.92 ID:S0pZlPf80.net
で、Shift+Numpad5はどうしたらいいの?

604 :名無しさん@お腹いっぱい。:2014/12/06(土) 10:58:42.61 ID:S0pZlPf80.net
自己解決
NumpadClearなんてあるのか まったく知らんかった

605 :名無しさん@お腹いっぱい。:2014/12/06(土) 11:00:51.83 ID:l1xHHCqO0.net
NumpadClear

がある

でもNumpaddelとかNumpadIntで書いちゃうとそれこそNumlockの状態によっては暴発しかねんね
If(getkeystate("Numlock","T") == 1)
とかが必要になってくるのかも

606 :名無しさん@お腹いっぱい。:2014/12/06(土) 16:02:34.59 ID:3h1ziKBj0.net
>>600
ああ、この印刷ってシフトキーを一緒に押したときの動作だったんですね
使う必要性も感じていなかったのでまったく知りませんでしたww

>>601
なるほど、やってみましたよ。出来ました。NumPadINSを使ったら、シフトキー+Num0で動きましたねえ
試しに、!NumPadINSもやってみましたが、これはシフトキー+Alt+Num0では動きませんでした
でもこの組み合わせは他の問題が出てきたので、当面はNumPadINSで
シフトキー+Num0でやることにしましたよ。ありがとうございました

607 :名無しさん@お腹いっぱい。:2014/12/06(土) 16:15:10.18 ID:3h1ziKBj0.net
>>605
Numlockははずして使うことは今まで一度もなかったので、個人で使う限りに関しては特にケアしなくてもいいと
思ったのですが、ためしにはずしてやってみたら、今度はシフトキーを押さずにNum0キーを押したときが
NumpadIntになるんですね。そもそもNumlockがそういうものか
今までまったく気にもしていなかったところでしたww

608 :名無しさん@お腹いっぱい。:2014/12/06(土) 17:34:27.31 ID:Mxm3eYP80.net
>>607
あんた、「〜ましたねえ」とか「〜たよ。」とか「〜ww」とか語尾がちょっと失礼じゃないのかな

609 :名無しさん@お腹いっぱい。:2014/12/06(土) 18:01:35.20 ID:8iwIsXoo0.net
いやぁ、2chで礼儀なんか気にしてたら何も出来んよ

610 :名無しさん@お腹いっぱい。:2014/12/06(土) 18:05:52.93 ID:Bj8Kto+B0.net
礼儀というかマナーはあるけど、敬語とかwとかの部分とはちがうな

611 :名無しさん@お腹いっぱい。:2014/12/06(土) 18:28:59.66 ID:BWTVcNAM0.net
多少砕けてても悪気がないのはわかるから特に気にはならんかったな
出来ません変なんですよバグでしょこれ、みたいな先入観付き質問のほうが自分はしんどいわ
まあ意図が通じて何より

612 :名無しさん@お腹いっぱい。:2014/12/06(土) 18:56:11.31 ID:UwuqhRrx0.net
まあ2chだから礼儀のことはあまり言えないけど、答えてくれる人は少なくなるだろうね

613 :名無しさん@お腹いっぱい。:2014/12/06(土) 19:17:10.08 ID:8iwIsXoo0.net
ここは無礼もんにも回答してくれる人が確実に一人いるし、いーんでねーのw

614 :名無しさん@お腹いっぱい。:2014/12/06(土) 21:14:13.32 ID:HQxj/mvZ0.net
ていうか、そんなに語尾とか神経質に気にしないのが普通なんじゃ……
まぁ、お互いのために思っても口に出さないでおくことってあるよね。めんどくさいレスが続くのも嫌だし

615 :名無しさん@お腹いっぱい。:2014/12/09(火) 10:44:50.34 ID:7z2wSdgP0.net
俺みたいに回答もらったら無言で逃亡するのがベストだな

616 :名無しさん@お腹いっぱい。:2014/12/09(火) 14:27:00.33 ID:CVvr8sol0.net
ahkのWIKI、404だけど閉店したんかな?

617 :名無しさん@お腹いっぱい。:2014/12/09(火) 14:45:12.13 ID:ZGXMZkE50.net
ahkwiki.netはわりと頻繁に落ちる

618 :名無しさん@お腹いっぱい。:2014/12/09(火) 15:17:09.90 ID:CVvr8sol0.net
そうなんだ、ありがとう。

619 :名無しさん@お腹いっぱい。:2014/12/09(火) 15:50:06.31 ID:Ssa0U+UP0.net
今落ちてないよ
見れないなら別の原因じゃね

620 :名無しさん@お腹いっぱい。:2014/12/11(木) 20:23:49.56 ID:1GPVvmKg0.net
firefoxのアドオンを軽量化したくて言語ファイルだけ削除するスクリプト組んだんですが、めっちゃ力技なんでメンテしづらいです

;アドオンに含まれる無駄な言語の削除。
Notdel1 = %A_ScriptDir%\extensions\langpack-ja@firefox.mozilla.org\browser\chrome\ja\locale\branding
Notdel2 = %A_ScriptDir%\extensions\langpack-ja@firefox.mozilla.org\browser\chrome\ja\locale\browser
Notdel3 = %A_ScriptDir%\extensions\langpack-ja@firefox.mozilla.org\browser\chrome\ja\locale\browser-region
Notdel4 = %A_ScriptDir%\extensions\langpack-ja@firefox.mozilla.org\browser\chrome\ja\locale\pdfviewer
loop,%A_ScriptDir%\extensions\* ,2,1
{
If A_LoopFileName contains locale ;ロケールフォルダ探し。二重ループで内部のフォルダを消去
{
loop,%A_LoopFileFullPath%\* ,2,0
{
If A_LoopFileName not contains en-US,ja-JP,ja,en ;これ以外の言語は削除する
{
;消してはいけないファイルの洗い出し。
If (A_LoopFileFullPath != Notdel1) and (A_LoopFileFullPath != Notdel2) and (A_LoopFileFullPath != Notdel3) and (A_LoopFileFullPath != Notdel4)
{
;msgbox,%A_LoopFileName%
FileRemoveDir,%A_LoopFileFullPath%,1
}
}
}
}
}

Notdel1〜4って部分をどうにかできませんかね。
%A_ScriptDir%\extensions\langpack-ja@firefox.mozilla.org\browser\chrome\ja\locale
このフォルダの中身だけは消したくないってだけなんですが……

621 :名無しさん@お腹いっぱい。:2014/12/11(木) 20:37:03.40 ID:blv92AYH0.net
if !RegExMatch(A_LoopFileFullPath,

622 :名無しさん@お腹いっぱい。:2014/12/11(木) 20:52:06.58 ID:1GPVvmKg0.net
正規表現は理解できてないバカなので使えないのです
それに%A_ScriptDir%とするとなんだか判定されてないようでなんでもフォルダを拾ってしまいます

623 :名無しさん@お腹いっぱい。:2014/12/11(木) 21:15:29.61 ID:WrdaOdBz0.net
仕事で正規表現使ってても使いこなせてるやつなんてあんまいないから気にすんな

624 :名無しさん@お腹いっぱい。:2014/12/11(木) 21:20:23.46 ID:RCOg1UMB0.net
Notdel1〜が値変わったり増減したりするなら書き換え易いようにiniファイルに追い出いだす
判定分のところもループで回して

Loop, %Nodel_count%
 if (Notdel%A_Index% == currentpath)
  Nodelflg = 1
Nodelflg=0ならファイル削除

625 :名無しさん@お腹いっぱい。:2014/12/13(土) 01:30:52.84 ID:FDT73/P/0.net
みなさんはどんなデバッガをお使いですか?
お勧めがありましたら教えてくださいm(_ _)m

Notepad++のプラグイン DBGpを導入してみたのですが、
デバッガを起動しようとすると、#Include の行で”cannot be opened.”のエラーが出る、
ブレークポイントの赤い丸のボタンの左側のボタンがグレーのままであるなど、上手く動作しません

626 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:44:43.82 ID:h60jM+t50.net
パソコンを止める時に必ずCClenerを使うようにしています。
ところが珠にデスクトップ画面が表示されている状態にも拘らずEnter &amp; Cキーを押しても反応しない時があります?
以下のコードでどっか悪いとこがありますか?
GroupAdd デスクトップ,ahk_class " #32770"
GroupAdd デスクトップ,ahk_class WorkerW
GroupAdd デスクトップ,ahk_class Program Manager
GroupAdd デスクトップ,ahk_class クライアント・マネージャ
GroupAdd デスクトップ,ahk_class
#IfWInActive,ahk_group,−デスクトップ
sc01C &amp; sc02E:: ; ● Enter &amp; C キー
Run D:\Sソフト集\O大掃除\a CCleaner\CCleaner.exe
return
#If

627 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 14:28:19.20 ID:b1/z3+eK0.net
グループ指定

628 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 16:49:47.75 ID:sEcXT/k50.net
sc136 &amp; sc07b:: ; RShift &amp; 無変換 キー
; 今「Myスクリプト」っと,言うファイルを開いている状態で以下のコードを実行すると,どうしても不一致だと表示してしまいます。このコードにどっか問題がありますか?

SetTitleMatchMode,2
WinGetTitle,タイトル名,A
msgbox,%タイトル名%
If(タイトル名=Myスクリプト) {
msgbox,一致
} Else {
msgbox,不一致
} Return

629 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 17:03:57.02 ID:PVMg+Uxy0.net
>>602
おまおれ

630 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 17:24:14.83 ID:gwcg+kSz0.net
>>628
それだとMyスクリプトは変数として認識されてる

631 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 18:49:04.66 ID:HZHCyy2i0.net
>>628
お前>>626はどうしたんだよ
報告も取り下げもせずにしれっと次の質問とかどういう神経だ

632 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 18:59:47.72 ID:GaqHjuLY0.net
いいんだよ別に
それでも答えるやついるんだからw

633 :名無しさん@お腹いっぱい。:2014/12/15(月) 12:23:56.01 ID:/N6JiEzm0.net
ときどき変なやつが湧くよね

634 :名無しさん@お腹いっぱい。:2014/12/15(月) 15:07:23.33 ID:T3wCSwAp0.net
週末は結構な確率な気がするw

635 :名無しさん@お腹いっぱい。:2014/12/15(月) 15:43:47.63 ID:V8lgSvXz0.net
>613や>632みたいな言われ方しちゃうし控えようって思ってはいるんだが
突っ込みどころが多すぎて小一時間解説したくなって困る

636 :名無しさん@お腹いっぱい。:2014/12/16(火) 12:20:58.34 ID:s+hQFrmY0.net
この流れの中質問で申し訳ないのですが
autohotkeyでデバイスの切断(無効?)→再接続のコマンドはありますか?
アプリAが起動する前にデバイスを切断、起動して数秒したら再接続 その後アプリBを再起動
というスプリクトを組みたいのですがコマンドがわかりません 今は手動でやってます

637 :名無しさん@お腹いっぱい。:2014/12/16(火) 12:23:25.29 ID:q2wMe8ef0.net
>>636
おれはこういうWindows関係のものは、MSDOSでバッチファイルを作って
Run, file.bat
でやってるよ

638 :名無しさん@お腹いっぱい。:2014/12/16(火) 12:29:07.84 ID:s+hQFrmY0.net
>>637
なるほど!全く思いつきませんでした
これ組み合わせたらなんでも出来そうな気がします ありがとう

639 :635:2014/12/16(火) 12:38:49.67 ID:Cx+AbqB/0.net
ついでに教えておいてあげよう
GnuWinってのがあってこれを使うとさらに世界が広がるよ。UnixやLinuxやってたやつならよく知ってると思うわ
http://gnuwin32.sourceforge.net/

うちのルーターが切れやがってID変わってしまったわ

640 :名無しさん@お腹いっぱい。:2014/12/19(金) 23:26:18.88 ID:MfLY4qD70.net
XButton2個だけでなく
4個あるゲームマウスの購入を検討しているのですが
ホットキー割り当ては
XButton3
XButton4
ではなくどうやるのでしょうか

641 :名無しさん@お腹いっぱい。:2014/12/19(金) 23:51:32.16 ID:7n97R2lh0.net
そのゲームマウスツールの方でF13とかに割り振っておいて
それをAHKで拾うってこのスレで見たことある

642 :名無しさん@お腹いっぱい。:2014/12/20(土) 00:28:07.16 ID:KFTyNXNh0.net
>>641
なるほど
やはりジョイスティックとかでもなくて
専用ソフトでF13以降にかませて割り当てるんですね

643 :名無しさん@お腹いっぱい。:2014/12/20(土) 09:24:29.65 ID:Kii3spbO0.net
ahkのキーログに残るならそのスキャンコードで指定してやっても動く

644 :名無しさん@お腹いっぱい。:2014/12/20(土) 20:50:05.09 ID:Kii3spbO0.net
windows7でハイブリッドスリープを使いたいんですが
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
でちゃんと出来てるんでしょうか?
これググったんですけどスリープではあるけどハイブリッドスリープかどうかまでは書いてないんですよね

645 :名無しさん@お腹いっぱい。:2014/12/20(土) 21:16:00.78 ID:dn2B3FZ40.net
>>644
スタンバイ=スリープ
ハイブリッドスリープ=ハイバネーション=休止状態 ※スリープでは無い

ttp://msdn.microsoft.com/ja-jp/library/windows/desktop/aa373201.aspx

646 :名無しさん@お腹いっぱい。:2014/12/20(土) 21:24:55.04 ID:uBTzx6RW0.net
間違ってるよ

647 :名無しさん@お腹いっぱい。:2014/12/20(土) 21:33:49.57 ID:Kii3spbO0.net
ハイバネーションのつっこみありがとござます
ググったらそっちで引っかかりました
こうなんですね
DllCall( "PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0)

648 :名無しさん@お腹いっぱい。:2014/12/21(日) 06:58:16.23 ID:1veUjhDZ0.net
>>636
devcon.exeでググれカス

649 :名無しさん@お腹いっぱい。:2014/12/21(日) 18:33:27.30 ID:wCAYgSS30.net
clipboardallの内容をコピーした変数の中身がテキストなのかファイルデータなのか
判別する方法はありますか?
OnClipboardChangeサブルーチンのA_EventInfoでできるかと思ったのですが
ファイルデータでもテキストとして使用できるなら(フルパスとか)1になってしまうっぽいです
よろしくお願いします

650 :名無しさん@お腹いっぱい。:2014/12/21(日) 19:54:59.46 ID:16xsRW+60.net
時々コンテキストメニューGuiが画面外クリックしても固定化して消えないことあるんですけどどう対処すればいいですか?
Guiデストロイ?

651 :名無しさん@お腹いっぱい。:2014/12/21(日) 23:00:30.44 ID:8CnFp9aF0.net
>>649
クリップボード操作オブジェクト
[Class] WinClip - direct clipboard manipulations
ttp://www.autohotkey.com/board/topic/74670-class-winclip-direct-clipboard-manipulations/

; クリップボード上のすべてのデータ形式を取得
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%

#Include %A_ScriptDir%\WinClipAPI.ahk
#Include %A_ScriptDir%\WinClip.ahk
wc := new WinClip
return

F1::
objFormats := WinClip.GetFormats()
list =
for nFmt, params in objFormats
{
; format_number : format_name : data_size : data_size again
; the "buffer" is an object member containing actual format data
list .= "`n" nFmt " : " params.name " : " params.size " : " params.GetCapacity( "buffer " )
}
msgbox % list
return

652 :名無しさん@お腹いっぱい。:2014/12/22(月) 00:10:41.75 ID:t+WBbwkX0.net
>>651
ありがとうございます!

653 :名無しさん@お腹いっぱい。:2014/12/22(月) 20:23:23.56 ID:yHUAkypO0.net
>>650
どういうコンテキストメニューなのか、何をしたいのか書いてないわけだが。

消したいなら対象のウィンドウハンドル取得してWinClose等
対象が変化するならコンテキストメニューの判定が結構めんどくさいことになるかも。

654 :名無しさん@お腹いっぱい。:2014/12/22(月) 21:38:39.21 ID:YhWIV9j60.net
任意のコントロール(スクロールバーが表示されているもの)の
現在のスクロール位置を取得する方法はあるでしょうか?

655 :名無しさん@お腹いっぱい。:2014/12/23(火) 08:04:36.97 ID:d4TL/5n00.net
これは俺も知りたい
コントロールというかウインドウのスクロールバーの位置も

656 :名無しさん@お腹いっぱい。:2014/12/23(火) 15:57:14.71 ID:aYLMGKes0.net
「任意の」ものは無理。ウィンドウズ標準のものなら出来る。
ただし検出したり種類を判別するのはかなり面倒。

また独自描画アプリやクロスプラットフォーム系(Chrome, Firefox, Java製)のものは
標準的なスクロールバーの振る舞いをしないので取得は無理と思われる

検出するための基礎知識は↓
https://sites.google.com/site/agkh6mze/trackwheel/description#TOC--3

スクロールバーの状態を外部から見たり操作したりするのは↓の窓調査.ahkを使う。
状態取得するための関数等も含まれている。
https://sites.google.com/site/agkh6mze/strage
(要UTF-8 BOM付きに変換してから実行)

657 :652:2014/12/24(水) 07:27:53.25 ID:/KIZyHEa0.net
>>656
ありがとうございます
窓調査.ahkにてスクロールバーの位置が取得できました

658 :名無しさん@お腹いっぱい。:2014/12/24(水) 12:25:06.96 ID:1JyIFkAt0.net
Windows7ですが、電源オプションの現在設定されているスリープに移行する時間と休止状態に移行する時間をゲットする方法って
ありますか

659 :名無しさん@お腹いっぱい。:2014/12/24(水) 13:47:40.49 ID:IWZecDnB0.net
Regreadでいけんじゃね?

660 :名無しさん@お腹いっぱい。:2014/12/24(水) 14:15:02.98 ID:1JyIFkAt0.net
なるほど。あとはレジストリの格納場所がわかればいいんですね

661 :名無しさん@お腹いっぱい。:2014/12/24(水) 14:29:11.34 ID:4REmoRcb0.net
http://news.mynavi.jp/column/windows/022/
ほい

powercfg -q 381b4222-f694-41f0-9685-ff5bb260df2e 238c9fa8-0aad-41ed-83f4-97be242c8f20
とCMDでやればスリープ設定のGUIDが分かる

662 :名無しさん@お腹いっぱい。:2014/12/24(水) 21:52:28.26 ID:9sryrejT0.net
win8で特定のアプリの音量だけをミュートにしたり解除したりする方法はありませんか?

663 :名無しさん@お腹いっぱい。:2014/12/24(水) 23:02:46.45 ID:gaft8jkv0.net
>>662
http://ux.getuploader.com/autohotkeyl/download/29/TaskVol12.zip
これをこのまま使うか、これを元に自分でスクリプト書いたら?

664 :名無しさん@お腹いっぱい。:2014/12/25(木) 02:57:23.69 ID:+EKDd99C0.net
フルスクリーンのゲーム実行中に数行のテキスト表示したいんだけど
どうすればいいですか
msgboxだと画面がデスクトップに戻ってしまう

665 :名無しさん@お腹いっぱい。:2014/12/25(木) 04:18:17.84 ID:9ZrpfJ+N0.net
>>662
アプリケーション音量設定関数
ttp://www.autohotkey.com/board/topic/21984-vista-audio-control-functions/?p=608538
引数はこれと同等
ttp://msdn.microsoft.com/ja-jp/library/windows/desktop/dd316531%28v=vs.85%29.aspx

※必要 Vista Audio Control Functions [VA.ahk]
ttp://www.autohotkey.com/board/topic/21984-vista-audio-control-functions/

>>663
これはアプリの状態に合わせてマスターボリュームを変更しているだけで個別に調節しているわけではない

>>664
フルスクリーンでは無理
ゲームをウィンドウモードにして画面サイズ+枠に引き伸ばせば擬似フルスクリーンの完成

666 :名無しさん@お腹いっぱい。:2014/12/25(木) 06:49:41.36 ID:gewPSTja0.net
>>664
ゲームによるだろうけど、ツールチップに表示してみたらいけるかも

667 :名無しさん@お腹いっぱい。:2014/12/25(木) 07:32:22.41 ID:+7plIB4q0.net
>>661
遅くなりましたがわざわざありがとう

668 :名無しさん@お腹いっぱい。:2014/12/25(木) 09:14:04.94 ID:hRpjtVgG0.net
>>664
GUIでAlwaysOnTopとかToolWindow装備でテキスト表示
でいけた気がする

669 :名無しさん@お腹いっぱい。:2014/12/26(金) 06:02:50.31 ID:OHWIjWYO0.net
Win7/vistaで使用予定です。
対象のOSが、WakeOnLANで起動されたかどうかを、OS起動後に判定させる方法はありますか?
ahkの機能じゃなくても、レジストリのココ読め的な情報でも大歓迎です。

WoLパケットを飛ばすahkスクリプトは、いくつかサンプルがあったのですが、
自分自身がWoLで起動したか判定する方法は、見つけられませんでした。

670 :名無しさん@お腹いっぱい。:2014/12/26(金) 08:12:19.54 ID:0Uz7zNc50.net
>>665
SoundSet, +1, , mute, number
で、最後のnumberを変えたら個別にミュートオンオフが出来るのではと思ったのですが、違うのですね
個別のアプリケーション毎のオンオフがこれで出来るのではと思ったのですがこれでは出来ませんでした
ここのnumberはそういう意味ではないのですね

671 :名無しさん@お腹いっぱい。:2014/12/26(金) 10:25:13.21 ID:JY/Mqv1z0.net
>>669
pingの返りを見るのじゃだめ?

672 :名無しさん@お腹いっぱい。:2014/12/26(金) 16:41:56.92 ID:LhKJBzQL0.net
修飾キーのsendで数回に1回入力ミスが発生する
そこで
Send {Shift down}キー{Shift up}
このようにしたらミスがなくなった
Send +キーだと時々こぼれるのはなぜだろう

673 :名無しさん@お腹いっぱい。:2014/12/26(金) 17:17:25.89 ID:wZOvIO+G0.net
それ似たようなのでKeywaitでキーを待ってsend,するとキーを上げるのと同時にahkもキーを返してミス起こすってことがある
sleep,20なんかのディレイを挟むと消えるんだけどね
仕様じゃないかねぇ

674 :名無しさん@お腹いっぱい。:2014/12/26(金) 18:08:26.57 ID:OHWIjWYO0.net
>>671
言葉足らずですいません。WoLで他のPCを起動させてそれを監視するのではなく、
ルータから起動指示を与えられて、スタートアップでahkを実行する自分自身が、
どんな起動方法をしたのかを知りたいのです。

675 :名無しさん@お腹いっぱい。:2014/12/26(金) 18:30:16.32 ID:MiNOkLv10.net
>>674
試してないがイベントビューアのログ(EventLog)で判断できるんじゃない?

676 :名無しさん@お腹いっぱい。:2014/12/27(土) 06:46:53.08 ID:O+SBqs5/0.net
ボリューム操作で関数がある場合はその関数を使って実行、なければAHK標準の機能を使って実行としたいのですがIsFancを使ってもその関数があるファイルをIncludeしていないと関数がないと怒られてしまいます
このような使い方はできないのでしょうか

677 :名無しさん@お腹いっぱい。:2014/12/27(土) 09:47:39.13 ID:hIKiG3PC0.net
動的関数名

678 :名無しさん@お腹いっぱい。:2014/12/27(土) 22:23:19.19 ID:BKAQ437u0.net
>>677
ありがとうございます
とりあえず動くように出来ました

679 :名無しさん@お腹いっぱい。:2014/12/29(月) 00:21:44.08 ID:N5hhzpnw0.net
>>665
難解すぎて全く分からん・・
とりあえず^mでシステム音のミュートのオンオフは出来るようになった
さあ次は何を学ぼうか

680 :名無しさん@お腹いっぱい。:2014/12/29(月) 00:36:27.95 ID:Y/yU7gcJ0.net
教えてもらったらお礼ぐらい書けよ

681 :名無しさん@お腹いっぱい。:2014/12/29(月) 00:48:56.06 ID:y1xNcLDS0.net
>>679
http://ux.getuploader.com/autohotkeyl/index/2/date/desc
の TaskVol 使ってみれば?
確か、アプリごとに設定できたと思う

682 :名無しさん@お腹いっぱい。:2014/12/29(月) 03:05:03.25 ID:N5hhzpnw0.net
先ほど何とかアプリの音量のオンオフが出来るようになりました
>>665さん>>663さん>>681さんありがとうございました

683 :名無しさん@お腹いっぱい。:2014/12/29(月) 07:25:31.84 ID:/QPuf8A+0.net
>>680
こういううるさい奴マジいらねえ

684 :名無しさん@お腹いっぱい。:2014/12/29(月) 08:05:05.10 ID:rlyqHhjW0.net
おまえのほうがいらねえ

685 :名無しさん@お腹いっぱい。:2014/12/29(月) 10:14:05.73 ID:xKyeK4aS0.net
>>683が苦しんで死にますように

686 :名無しさん@お腹いっぱい。:2014/12/29(月) 11:24:57.61 ID:yXsdz1I40.net
>>683
ゴミクズw

687 :名無しさん@お腹いっぱい。:2014/12/29(月) 11:33:45.76 ID:KDNnRFq40.net
>>685
このスレの礼儀正しいやつの正体…

688 :名無しさん@お腹いっぱい。:2014/12/29(月) 11:52:47.10 ID:LtTkTN7g0.net
ヒアドキュメントに配列を展開する場合は下記のような感じになりますが

Array := Object()
Array[1] := "あああ"
Var := "
(
%Array[1]%
)"
MsgBox, % Var ; あああ

Arrayのキー名が文字列の場合はどのように展開するのでしょうか?
%Array["A"]%のようにするとエラーが出ます

689 :名無しさん@お腹いっぱい。:2014/12/29(月) 13:31:46.35 ID:KlQwuixh0.net
>>688
こうやったら出来た

Array := Object()
Array[1] := "あああ`nいいいい`nううううう"
Var := "
(
"Array[1]"
)"
MsgBox, % Var

自分も知らなかったよ

ここ参照
スクリプト仕様 - AutoHotkey Wiki
http://ahkwiki.net/Scripts#.E3.83.92.E3.82.A2.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88

690 :名無しさん@お腹いっぱい。:2014/12/29(月) 13:36:46.73 ID:KlQwuixh0.net
あ、>>689は間違いかも・・・
3行目の Var := " と6行目の )" に有る「"」は不要だった

Array := Object()
Array[1] := "あああ`nいいいい`nううううう"
Var :=
(
Array[1]
)
MsgBox, % Var

691 :名無しさん@お腹いっぱい。:2014/12/29(月) 14:03:44.49 ID:LtTkTN7g0.net
>>690
回答ありがとうございます

そういう展開の仕方もあるんですね。今知りました
あとすみません。キー名が整数の場合は>>688の記述でも上手くいくんですが、Array["A"]のようにキー名を文字列にすると何故かエラーが出ました

あれから色々試しましたが、Array["A"]ではなくArray.Aだと上手くいきました
お騒がせしました

Array := Object()
Array["A"] := "あああ"
Var := "
(
%Array.A%
)"
MsgBox, % Var ; あああ

他にArray[A].Bみたいな展開もできましたが、Array.A.[B]は駄目なんですね
何か方法はあるのかな…今のところ特に問題はないですが

692 :名無しさん@お腹いっぱい。:2014/12/29(月) 14:04:27.26 ID:KlQwuixh0.net
連投申し訳ない・・・これで終わりにする
答になってない面もあったので書き直し

Array[1] 1行だけの場合は、>>690でも良いようだが、
複数行の場合はそれじゃダメみたいなので、
↓ のようにする必要があるみたいだね

Array := Object()
Array[1] := "あああ"
Array[2] := "んんん"
i := 2
; ↓ " . Array[i] . "の所は"Array[i]" だけでも良い?
Var := "
(
"Array[1]"
あいうえお
" . Array[i] . "
らりるれろ
)"
MsgBox, % Var

693 :名無しさん@お腹いっぱい。:2014/12/29(月) 14:21:48.58 ID:LtTkTN7g0.net
>>692
こちらもありがとうございました

694 :名無しさん@お腹いっぱい。:2014/12/29(月) 14:33:27.98 ID:KlQwuixh0.net
すいません、前言撤回・・・今度こそ最後

>>693
例が悪くてすまない
↓ で分かって貰えただろうか

Array := Object()
Array["A"] := "あああ"
Array["B"] := "んんん"
i := "B"
Var := "
(
"Array["A"]"
" . Array[i] . "
)"
MsgBox, % Var

スレ汚し申し訳ない

695 :名無しさん@お腹いっぱい。:2014/12/29(月) 15:08:53.05 ID:LtTkTN7g0.net
>>694
ありがとうございます

MsgBoxだと下記のように表示しましたが、配列を展開しないのは意図的なのでしょうか?

"Array["A"]"
" . Array[i] . "

696 :名無しさん@お腹いっぱい。:2014/12/29(月) 23:01:01.44 ID:0EdBtVzU0.net
>>695
AutoHotkey Unicode 32-bit
ファイルバージョン: 1.1.16.05
ahkファイルエンコード:UTF-8(BOM有り)
こんな動作環境なんだが

697 :名無しさん@お腹いっぱい。:2014/12/29(月) 23:04:37.15 ID:0EdBtVzU0.net
あ、ID変わってる・・・サーバーダウンのせいか?
一応>>696は ID:KlQwuixh0 です

698 :693:2014/12/30(火) 06:52:15.92 ID:KmZzjoWv0.net
>>696
動作確認できました

実はv2を使ってましたが、ヒアドキュメントの挙動にまで違いがあるとは気づきませんでした
同様に>>688>>691は通常のverだと動かないんですね
誤解を招かせてしまい失礼しました

余談ですが、>>691の最後の疑問ですが、"Array.A[B]"と書けば良かったんですね

ありがとうございました

699 :名無しさん@お腹いっぱい。:2015/01/03(土) 16:05:53.96 ID:W+Q+aecx0.net
インストーラ―版同梱のAU3_Spy.exeを
単独で配布してるところをどなたかご存じないですか?

700 :名無しさん@お腹いっぱい。:2015/01/03(土) 18:41:11.13 ID:qpYoCNie0.net
>>699
インストールするのが嫌なら、インストーラ―から7-ZIPなどのアーカイバで抽出すればいいと思うんだが。
それか、仮想空間にインストールしてそこからコピーするとか。

701 :名無しさん@お腹いっぱい。:2015/01/03(土) 18:41:36.60 ID:+aYf/43/0.net
インストーラーから取り出したら?
7zあたりで開けるみたいだが

702 :名無しさん@お腹いっぱい。:2015/01/03(土) 18:42:09.71 ID:+aYf/43/0.net
あw被ったwスマンw

703 :名無しさん@お腹いっぱい。:2015/01/03(土) 19:57:26.61 ID:7BRFlSnw0.net
インスコしないとファイルドロップできなくて不便じゃね?

704 :名無しさん@お腹いっぱい。:2015/01/03(土) 20:51:51.44 ID:W+Q+aecx0.net
>>700>>701
ありがとうございます。7zで中身だけアッサリ取り出せました
今までの手間は一体…

>>703
ドロップや右クリックから使うことは全くないので問題ないです

705 :名無しさん@お腹いっぱい。:2015/01/03(土) 23:07:40.52 ID:qpYoCNie0.net
>>703
以下を「hoge.reg」で保存→実行してレジストリに登録→D&Dが可能になる。
---------------------------------------------------------------------------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\(ファイルタイプ)\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
---------------------------------------------------------------------------

706 :名無しさん@お腹いっぱい。:2015/01/03(土) 23:10:34.14 ID:lGKwsRwI0.net
AU3_Spy.exeをD&D操作することなんてあったっけ?
AHK本体exeがあるフォルダに一緒に入れておけば呼び出せるけど、そういう話でもなく?

707 :名無しさん@お腹いっぱい。:2015/01/03(土) 23:36:56.76 ID:qpYoCNie0.net
>>706
何か勘違いしてないか?
>>703>>705は拡張子が「ahk」のスクリプトファイルへのD&Dの話だぞ。

708 :名無しさん@お腹いっぱい。:2015/01/03(土) 23:40:47.51 ID:lGKwsRwI0.net
ああー……なるほど
そんならX-finderとかの独自関連付けができるファイラーを使って見るというのもいいかもな
俺はスクリプトファイルのとこにbatファイル書いてるけど。

709 :名無しさん@お腹いっぱい。:2015/01/03(土) 23:46:19.40 ID:qpYoCNie0.net
>>705
をっと、よくよく考えたら「AutoHotkey.exe」と「ahkファイル」の関連付けを予め手動でしとかないと意味無かった。
関連付けの後で(ファイルタイプ)の部分を直して実行してね。

710 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:15:45.02 ID:F/5XaEJ20.net
AHKユーザーならXfinderは相性いいからオススメ

711 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:19:32.83 ID:90CKMj980.net
結局レジストリいじるんならインストールすればいいじゃないw

712 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:33:41.81 ID:oae8psLo0.net
独自関連付けはこんなんはいかが?エクスプローラーがアクティブになってないと動かないけどさ
うpろだのを小改造

#IF Winactive("ahk_class CabinetWClass")
Lbutton::
gosub,Association
click,L,D
keywait,Lbutton
click,L,U
return
#IF

713 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:36:43.10 ID:oae8psLo0.net
>>712の続き

Association:
Clipsave := clipboardAll
clipboard =
send,^{c}
sleep,10
clipboard = %clipboard%
Getpath := Clipboard
Clipboard := Clipsave
ClipSave =
SplitPath, Getpath , , , , ,DriveLabel
If !RegExMatch(DriveLabel, "^\w:$"){
return
}

714 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:37:37.32 ID:oae8psLo0.net
>>713の続き

Loop, Parse, Getpath, `n,`r
{
SplitPath, A_LoopField, filenameExt, PathDir,fileEx,filename,DriveLabel
;各種exeをコマンドライン起動。擬似関連付け。ここではahkファイルをahkに送る。
If fileEx in ahk
{
run,A_ahkpath "%A_LoopField%"
}
else ;通常関連付け起動
{
if(A_Index == 1)
send,{enter}
else
run,"%A_LoopField%"
}
}
loopcount := 0
Getpath =
Exit ;呼び出したスレッドを停止
return

ここまで

715 :名無しさん@お腹いっぱい。:2015/01/04(日) 00:42:55.72 ID:oae8psLo0.net
あ、凡ミス
run,"%A_ahkpath%" "%A_LoopField%"

じゃないとだめかもしんない

716 :名無しさん@お腹いっぱい。:2015/01/04(日) 05:34:14.24 ID:I89trDJN0.net
すみません、お尋ねします。
Forumから見つけてきたスキャンコード確認用のスクリプトですが
左右の修飾キーが同じコードになってしまいます。
そこを改善出来ませんでしょうか。
よろしくお願いします。

SetFormat, Integer, Hex
Gui +ToolWindow -SysMenu +AlwaysOnTop
Gui, Font, s14 Bold, Arial
Gui, Add, Text, w100 h33 vSC 0x201 +Border, {SC000}
Gui, Show,, % "// ScanCode //////////"
Loop 9
OnMessage( 255+A_Index, "ScanCode" ) ; 0x100 to 0x108
Return

ScanCode( wParam, lParam ) {
Clipboard := "SC" SubStr((((lParam>>16) &amp; 0xFF)+0xF000),-2)
GuiControl,, SC, %Clipboard%
}

717 :名無しさん@お腹いっぱい。:2015/01/04(日) 19:26:20.88 ID:7ZbwjRel0.net
>>716
コピペ丸投げイクナイ

通常のウィンドウメッセージ(WM_*) コード一覧
http://www.wdic.org/w/TECH/%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8
WM_KEYDOWN (0x0100)
http://chokuto.ifdef.jp/urawaza/message/WM_KEYDOWN.html


マジレスするとマスクする桁をいじればいける。ただしOEM依存なので環境で変わる可能性はある

718 :名無しさん@お腹いっぱい。:2015/01/04(日) 19:45:57.97 ID:PGrUHDJq0.net
スクリプトの修正が目的じゃなくて、
スキャンコード取りたいだけならAHKのキーヒストリでいいじゃん

#InstallKeybdHook
#KeyHistory 10
SetTimer, Refresh
WinWait, ahk_id %A_ScriptHwnd%
WinWaitClose
ExitApp
Refresh:
KeyHistory
Return

719 :名無しさん@お腹いっぱい。:2015/01/04(日) 20:03:18.47 ID:QfDXMa7O0.net
>>716
どこから拾ってきたのか書きべきだと思うが

720 :名無しさん@お腹いっぱい。:2015/01/04(日) 20:06:56.31 ID:I89trDJN0.net
>>717
返信ありがとうございます。
以後気をつけます。
それとありがたいヒントを頂いた結果、0xFFの部分を0xFFFにした所、上手く取得出来るようになりました。
しかしどうしてか、RSHIFTがSC036(Shift)を返してしまい、正常なスキャンコード(SC136)になりません。
これを修正する事は可能でしょうか?。
よろしくお願いします。

>>718
ありがとうございます。
こんな事も出来るんですね。

721 :名無しさん@お腹いっぱい。:2015/01/04(日) 20:08:18.75 ID:I89trDJN0.net
>>720
言葉足らずですみません。
こちらとなっております。
http://www.autohotkey.com/board/topic/21105-crazy-scripting-scriptlet-to-find-scancode-of-a-key/

722 :名無しさん@お腹いっぱい。:2015/01/04(日) 22:39:59.88 ID:7ZbwjRel0.net
>>720
面倒くさいから場当たり的な解決法を先に言うと、x36がきたらx100をORしてやればいい


ていうかせっかくリンク貼ってやったんだから少しは自分で調べてから再質問してよ
テキストの表示枠広げて、Clipboard := lParam で生値を見たら
x36で来てるのか、x136をマスクで取り落としてしまってるのかくらいわかるでしょ

なんでOnMessageと KeyHistoryで違う値が返ってくるのか
AutoHotkey_L Sorce をあたってみたがLowLevelKeybdProc() と KeyboardProc() で取れる値に差があるっぽい
SC_RSHIFTの定義行付近にコメントでメモが書いてある。
https://github.com/Lexikos/AutoHotkey_L/blob/master/source/keyboard_mouse.h

723 :名無しさん@お腹いっぱい。:2015/01/04(日) 22:56:00.62 ID:pJ+O2+au6
wキー押している間はwキーを押し続け
wキー離したら一度だけsキーを押す(または、sキーを0.1秒間 一度押す)


というのは如何したらよろしいのでしょう・・

724 :名無しさん@お腹いっぱい。:2015/01/04(日) 23:28:07.79 ID:pJ+O2+au6
事故解決しました
~*w up::
Send {s down}
Sleep 100
Send {s up}
return

725 :名無しさん@お腹いっぱい。:2015/01/05(月) 02:13:53.87 ID:Kuk8u6VQ0.net
>>722
返信ありがとうございます。
クリップボードがSC036の場合のみSC136を表示させるように、elseで分岐させました。
はたしてこの方法が適切であるかは微妙ですが、表示上は上手くいっているようなので、これで良しとします。
色々とお世話になりました。

726 :名無しさん@お腹いっぱい。:2015/01/05(月) 13:35:03.72 ID:d7XLMQBS0.net
おれはMapVirtualKey使ってるけど
これだと拡張キーのビット拾えないんだな
基本、仮想キーコードで十分だから気づかんかった
左右取れるって書いてあるけどそれはスキャンコードの16-23ビット部分で違いがある場合だけってことか
為になったわ

727 :名無しさん@お腹いっぱい。:2015/01/05(月) 15:27:36.04 ID:0/yam+dG0.net
PdfファイルやGrab and Dragみたいに、掴んでスクロールさせるっていうことは可能ですか?

つかむ、スクロールさせるっていう動作を再現する方法がわからず難儀してます
AHKでは不可能でしょうか

728 :名無しさん@お腹いっぱい。:2015/01/05(月) 15:32:55.09 ID:VrL+FU8AF
いろいろなスクリプトをIncludeして使っているのですが、拾ってきたスクリプトにOnExitがあるとおかしくなります
できればIncludeされる側だけで対応したいのですが、複数OnExitがある場合は消してそのラベルを一つにまとめるしかないですか?

729 :名無しさん@お腹いっぱい。:2015/01/05(月) 15:49:25.43 ID:0/yam+dG0.net
英語圏検索したらそのまま普通にありました……失礼しました

730 :名無しさん@お腹いっぱい。:2015/01/05(月) 22:54:26.83 ID:1czqOp1T0.net
scの方に書き込んでた...

いろいろなスクリプトをIncludeして使っているのですが、OnExitがあるとおかしくなります
できればIncludeされる側だけで対応したいのですが、複数OnExitがある場合は消してそのラベルを一つにまとめるしかないですか?

731 :名無しさん@お腹いっぱい。:2015/01/06(火) 00:34:51.00 ID:NdDLMlF90.net
>>730
メインからGosubで飛ばすとか?
結局のところ少し修正するしかない。

; -----読み込み-----
; OnExit hoge ;←コメントアウト
return

hoge:
〜処理〜
; ExitApp ;←コメントアウト
Return ;←追加

; -----メイン-----
OnExit Main
return

Main:
Gosub hoge
Gosub hoge...
Gosub hoge...
ExitApp

732 :名無しさん@お腹いっぱい。:2015/01/06(火) 12:38:39.26 ID:ta3NXSan0.net
>>731
やっぱり呼出側も編集しなければだめですかね?

オブジェクトやカンマ区切りの文字列でループさせてラベルに飛ばすようなものをメインに仕込んで、それらに追加するようにサブを編集
後はIncludeを記述したり消したりで単体でも取り込んでも簡単に機能を使えるようにできればよかったんですが

もう少しいろいろ試してみます

733 :名無しさん@お腹いっぱい。:2015/01/06(火) 14:06:51.70 ID:rPs+p6z50.net
単体・組込両対応にしたいなら呼び出し側の初期化処理で判断入れたらいいよ

child_main:
  if (A_LineFile == A_ScriptFullPath)
    OnExit, child_OnExit
;  Else
;    OnExit, Main_OnExit
  return

734 :名無しさん@お腹いっぱい。:2015/01/08(木) 05:31:52.77 ID:Zxk+WI0N0.net
数日前から始めたのですが、どうもわかりません。
やりたい事は1つのキーで複数の入力を行う事なんですが。
http://ahkwiki.net/Examples
の「複雑な操作を1キーに割り当て」でSendを使えば出来るらしいとはわかったのですが、例で描かれてるメモ帳の事では全然わからず
Sendの説明ページを見てもそれらしい事は特に書いて無いみたいで、どう書けば良いのかがわかりませんでした。
やりたい作業を書くと、
Numロックキーを押すと「↓ Insert 数字(例えば100) Enter ↓x5」です。
Sendをどう使うのかで良いので、アドバイス下さい。
よろしくお願いします。

735 :名無しさん@お腹いっぱい。:2015/01/08(木) 09:58:21.74 ID:pTlt1KOA0.net
アプリ限定操作じゃないなら前後の #IfWinActive行を無視して真ん中のSend行のみ見たらいいだけ
Sendの使い方はSendの説明ページに全部書いてあるし、何がわからないのかわからない
組み合わせがわからないなら一行ずつ列挙してったら?
Send,{Down}
Send,{Insert}

あとLocks関係のキーは環境依存でうまく動かないこともあるからまずは別のキーで試してみ

736 :名無しさん@お腹いっぱい。:2015/01/08(木) 11:53:43.08 ID:dca/kQip0.net
エクスプローラーの「選択の切り替え」ってコマンドラインないんだろうか……
Windowsショートカットでも存在しないようですし「すべて選択」のあとに選択すればいいだけの話かもしれないけど。

なおアプリのボタンを押すcommandでも反映されない様子。
(Win8.1はタスクトレイなどの一部ボタン反応が変わってるっぽいし。ダブルクリック効かねえ)

737 :名無しさん@お腹いっぱい。:2015/01/08(木) 12:16:02.12 ID:pTlt1KOA0.net
コマンドラインは知らないがショートカットやアクセラレータキーはあるっぽい

win7
http://pasofaq.jp/windows/shortcut/explorershortcut7.htm

win8
http://news.mynavi.jp/articles/2012/10/16/letswindows8/
http://www.relief.jp/itnote/archives/018281.php

738 :名無しさん@お腹いっぱい。:2015/01/08(木) 20:48:43.50 ID:Zxk+WI0N0.net
>>735
レスありがとうございます。
一行ずつとかでも良いんですね。
いや、何かちゃんとした式というか構文みたいな物でやらなければいけないのかとか思いまして。
一行ずつでやれました、どうもありがとうございました。

739 :名無しさん@お腹いっぱい。:2015/01/10(土) 10:01:33.54 ID:DhDbvMKz0.net
質問させて下さい。
始めたばかりの初心者です。
例えば1を12にしようと
1::12
としたらエラーで起動せず、
1::
Send,12
とするとループになりました。
これをループにならずにただの数字として入力させる方法あるでしょうか?

740 :名無しさん@お腹いっぱい。:2015/01/11(日) 00:50:08.73 ID:p/azEgvd0.net
>>739
リマップの場合
1::(1つのキーまたはコマンド)
1::12← 「12」というキーやコマンドは存在しないのでエラー

キーリピートのことを言っているのなら
KeyWaitで離されるまで待機すればいい。

741 :名無しさん@お腹いっぱい。:2015/01/11(日) 00:58:30.27 ID:BTJ5o5Jl0.net
ループ回避は#UseHook

742 :名無しさん@お腹いっぱい。:2015/01/11(日) 01:13:22.06 ID:p/azEgvd0.net
いつもフック使ってるから忘れてた >>741補足ありがと。
>>5
> Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
> A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
>   先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
>
>   #UseHookで全部にキーボードフックを適応する方法でも可。

743 :734:2015/01/11(日) 02:45:29.61 ID:eip4+uKg0.net
>>740-742
おー出来ました
また一つやり方を知る事が出来ました
どうもありがとうございました

744 :名無しさん@お腹いっぱい。:2015/01/11(日) 15:13:01.29 ID:kFvBz8rO0.net
send,hogehoge

という命令があるとして、これを必ず半角で打ち込ませるスマートな方法ってあるでしょうか?

745 :名無しさん@お腹いっぱい。:2015/01/11(日) 15:14:56.01 ID:BRcAjecJ0.net
賢くない奴は賢くないやり方で頑張ればいいんだよ

746 :名無しさん@お腹いっぱい。:2015/01/11(日) 17:50:51.62 ID:tTrYHl3J0.net
>>744
>7

747 :名無しさん@お腹いっぱい。:2015/01/11(日) 18:22:33.96 ID:0C8qKDLz0.net
>>741 便乗ですが、UseHookって.ahkの一番最初に一度書けば以降全部に適用される物ですか?
各自先頭に付ける物?

748 :名無しさん@お腹いっぱい。:2015/01/11(日) 18:24:49.76 ID:ggIgk7gc0.net
http://ahkwiki.net/

749 :名無しさん@お腹いっぱい。:2015/01/11(日) 18:50:45.17 ID:bcPparrt0.net
そこで検索しUseHookのページでoffを付けるまで適用されると書いてありました。
ありがとうございました。

750 :名無しさん@お腹いっぱい。:2015/01/11(日) 20:27:31.19 ID:YUEGNUlo0.net
ちょっと長くて申し訳ないですが質問です
Autohotkeyで左クリック+右クリックのロッカージェスチャーができるようにしたいのですが
苦戦してます。ご教示下さい
右クリック+左クリックなら、RButton & LButton::!{Left} でできますが、
LButton始動で、LButton & RButton::!{Right} としてもうまくいきません
MouseGestureLを使って過去スレの記述を参考にして設定すれば可能ではあったのですが、
ジェスチャーソフトは他(StrokeIt)のを使っていて、MouseGestureLとの同時使用は不可でした
StrokeItで設定できる始動ボタンは1つだけなので、これのみでロッカージェスチャーは実現困難です
それならMGLにしろと言われそうですが、StrokeItの操作感が気に入ってるので、できれば
乗り換えずに済めばと思っています。そこでAutohotkeyでできないだろうかという相談です

MGLの該当部分?と思われる所を探してみたのですが…

if (GetKeyState("LButton", "P")) {
Send, !{Right}
}else if !(MG_Executed>1){
Send,{RButton}
}

これに、#IfWinActivでアプリ指定する等の記述をしても見当違いなのか全くダメでした
よろしくお願いします

751 :名無しさん@お腹いっぱい。:2015/01/11(日) 22:21:50.71 ID:p/azEgvd0.net
>>750
× RButton & LButton::!{Left}
○ RButton & LButton::Send !{Left}

クリックが無効になっているのが原因
コンビネーションキーを使用した場合、一つ目に指定したキーが修飾キーとなり
もともとの機能は「無効化」する、無効にしたくないなら

~LButton & RButton::Send !{Right}
 または
#if GetKeyState("LButton", "P")
RButton::Send !{Right}
#if

後は自分で考えよう

752 :名無しさん@お腹いっぱい。:2015/01/11(日) 23:09:35.67 ID:hZuFk6Ka0.net
>>751
ありがとうございます。想定した動きになりました
最初はコンテクストメニューが出るだけで何でだろうと思っていたのですが、
左→右の代わりに、右ダブルクリックでできそうなスクリプトがあったので、
試したままにしていたら干渉していたようで、それを消したらきちんと動きました
なかなか難しいですね… でも色々できそうなので、便利そうなのを試してみようと思います

753 :名無しさん@お腹いっぱい。:2015/01/11(日) 23:18:03.34 ID:NgFWBOYR0.net
5日に更新されてた1.1.19.01だけど
AU3_Spy.exeは今日の日付になってるけど差し替えとかあったんかな

754 :名無しさん@お腹いっぱい。:2015/01/12(月) 16:19:11.14 ID:ky6xA9ax0.net
>>753
いつの間にかAU3_Spy.exeてGUIとか変わってしまったんだな、どうでもいいけど。
Resource Hackerで見てみたんだが、これahkで作られているんだね。
RCDataっていう所見ればスクリプトが丸見えだから、何処が変わったか比較すれば良いんじゃないかな?
ちなみにv1.1.19.01でコンパイルされてた。

755 :名無しさん@お腹いっぱい。:2015/01/13(火) 10:02:20.97 ID:tboJlyLB0.net
あるフリーソフトがありまして、それは最小化するとタスクトレイに入る(ウインドウがなくなる)プロセスなんですが、
本来はそのタスクトレイのアイコンをダブルクリックするとまたウインドウが出てくれるんですが、
AHKでそのウインドウを呼び出すにはどうしたらいいんでしょうか?
winactivateではウインドウが存在しないから出てきてくれません。

756 :名無しさん@お腹いっぱい。:2015/01/13(火) 10:07:27.21 ID:WnJyCTsQ0.net
DetectHiddenWindows, ON

757 :名無しさん@お腹いっぱい。:2015/01/13(火) 10:50:33.11 ID:ENZKGprk0.net
秀capsに付いてる機能、「IMEからの()入力直後にカーソルを左に移動する」「[]を直接入力した時も」の2つを実現出来ると秀capsを使わなくて済むんですが書き方がよくわからず詰まりました。
)一つでしたらその後にSendで左を指定すれば良いと思うんですが()と2つある時はどの様に書けば出来るでしょうか?
[]も中身は同じだと思うのでもう1つ同じ様に書けば出来ると思うのでどうかお助け下さい。
よろしくお願いします。

758 :名無しさん@お腹いっぱい。:2015/01/13(火) 11:03:04.51 ID:tboJlyLB0.net
>>756
うわー、できました!びよーんとウインドウが出てきてくれました!
ありがとうございます!

759 :名無しさん@お腹いっぱい。:2015/01/13(火) 13:38:33.30 ID:WnJyCTsQ0.net
ID:tboJlyLB0
どうでもいいけどEverythingスレで大暴れしすぎ
素人レベルの質問した直後に他スレでahkマスター気取りはやめたほうがいいで
恥ずかしくてみてらんない

760 :名無しさん@お腹いっぱい。:2015/01/13(火) 13:40:09.82 ID:z+HCF39E0.net
>>759
スレを汚すな。どうでもいい。このスレが荒れてるわけではない

761 :名無しさん@お腹いっぱい。:2015/01/13(火) 15:58:14.52 ID:U0locDVS0.net
他スレを汚すのがAHKスレ住人と扱かわれるのがおぞましいのでどうでもよくはない

762 :名無しさん@お腹いっぱい。:2015/01/13(火) 16:03:03.44 ID:FtblRXMc0.net
気にすんな。そもそも>635以外まともなAHKユーザーなんて居ないからww

763 :名無しさん@お腹いっぱい。:2015/01/13(火) 16:21:07.40 ID:Ig+Cqqb50.net
いろいろ不満がある→AHKならなんとか出来るはず→なんとかなっちゃった、あら便利
 →あれもこれも、なんでもAHKでカスタマイズして俺環境に染めて解決→怖い者無し

こういう精神を持つ人が多いAHKスレ住人だから、
とんでもないバカが飛来してきても、つい調教したくなっちゃう。

764 :名無しさん@お腹いっぱい。:2015/01/13(火) 17:09:54.14 ID:enagM3Hg0.net
なんで煽り合いになってんだよ。わけわかんねぇ

765 :名無しさん@お腹いっぱい。:2015/01/13(火) 18:17:31.81 ID:cMBqZV1MO.net
sc07B::
DetectHiddenWindows,On
ControlSend,,{Click,Right,862,66,2},ahk_class MozillaWindowClass
Return

Firefoxの相対座標862,66を右ダブルクリックする動作を無変換キーに割り当てたいのですが上手くいきません。
目的の動作をさせるにはどのように記述すればいいのでしょうか?

766 :名無しさん@お腹いっぱい。:2015/01/13(火) 22:58:19.12 ID:kcnZBMd50.net
>>765
>上手くいきません。
自分はFirefox持ってないので>>765の動作確認できないけど、
クリック自体してるが違う座標(絶対座標)位置をクリックしてるんなら
座標の扱いを絶対座標か相対座標に切り換える「CoordMode」使えばいい。

また、マウスクリックしてないとかだったら、マウスクリックする方法は他にもある。
1)ControlClick
2)Click
3)MouseClick
4)Send / SendRaw / SendEvent / SendInput / SendPlay

マウスクリックするのにclick系コマンド使わずに「ControlSend」をなぜ使っるのとか、
詳しい情報が少ないので的外れな答だったら申し訳ない。

767 :名無しさん@お腹いっぱい。:2015/01/14(水) 18:49:14.53 ID:quIB4W3DO.net
>>766
レスありがとうございます!説明不足すみません…

Sendを使うと一応目的の動作をするのですが、この動作を非アクティブのウィンドウに送れないかと思いwikiの使用例「1.3 バックグラウンドのソフトの操作」を参考にControlSendを使いました。
しかしControlSendにすると座標へのクリックも移動も行われないという状態です。

教えて頂いたControlClickでも試してみたのですが、こちらも上記と同じで上手くいかず…といった感じでした。

ControlClick,X862 Y66,ahk_class MozillaWindowClass,,Right,2,Pos,NA ;ControlSendと差し換え

768 :名無しさん@お腹いっぱい。:2015/01/14(水) 18:58:14.78 ID:m3TJROsB0.net
>>767
右ダブルクリックが意味分からんからLeftにしたけど
それでちゃんとクリックされるよ?

769 :752:2015/01/14(水) 20:48:32.43 ID:ZAUHkVBA0.net
すみません、どなたか…

770 :名無しさん@お腹いっぱい。:2015/01/14(水) 21:17:29.22 ID:syaczz3S0.net
>>769
あなたが実際にキーボードで入力する時どういう手順で入力してるんですか?
それをそのままコマンドを使って書いていけば良いんですよ。

771 :名無しさん@お腹いっぱい。:2015/01/14(水) 21:40:48.71 ID:QKs3EuT00.net
禿ユーザーは自力でなにか作る能力に欠けるから困る

772 :名無しさん@お腹いっぱい。:2015/01/15(木) 00:44:59.78 ID:Q8OMAnN/0.net
>>757>>769
ホットストリングか
SetTimer, hoge, -1(スレッドを別にするため) + Inputで入力監視 <こちらの方が汎用性がある

773 :名無しさん@お腹いっぱい。:2015/01/15(木) 07:28:30.56 ID:01Ke9I0t0.net
何も考えずに、()とカーソルを左に動かすキーを入力する専用キーを作るのが一番楽でないの?
むしろそのまま秀cap使っておけば・・・

774 :名無しさん@お腹いっぱい。:2015/01/15(木) 09:54:50.33 ID:NBqrd60l0.net
現状で困ってない(秀capsで実現できてる)状態でお助けって言われてもなあ
必要ないのにAhkで代替したい言うならまずは自力でがんばるのが筋じゃね

そもそも本気でやろうとしたら面倒くさいことになりそうだからスルーされてんじゃないの
大人しく秀caps使っとくのが無難

775 :名無しさん@お腹いっぱい。:2015/01/15(木) 18:29:07.71 ID:C0YZh8Ac0.net
こういったスクリプトを別のアプリに貼り付けたいんですが

if A
soundbeep
else
return

send でこういう感じのスクリプトを貼り付けようとしてもAHKがこれをAHK用のコマンドとして処理してしまうのですが
これをAHKに文字列として認識させるにはするにはどうしたらいいでしょうか

776 :名無しさん@お腹いっぱい。:2015/01/15(木) 18:43:52.07 ID:Q8OMAnN/0.net
>>775
文字列の貼り付けはClipboardでやるのが一般的

---------------------
Send, ABC{Enter}DEF

Clipboard := "ABC" `n "DEF"
Send, ^v

Clipboard = ABC`nDEF
Send, ^v

Clipboard =
(
ABC
DEF
)
Send, ^v

777 :名無しさん@お腹いっぱい。:2015/01/15(木) 20:47:00.57 ID:C0YZh8Ac0.net
>>776
ありがとうございます

778 :名無しさん@お腹いっぱい。:2015/01/16(金) 12:20:13.84 ID:/S7pTzia0.net
Win7です。
時刻の調整ですが、今は手動で、タスクトレイのところにある時刻を左クリックして出てくる日付と時刻の設定の変更というところから
入って、出てくるダイアログのインターネット時刻タブから時間の調整をしているのですが、
AHKを使って一発でする方法はありますか
みなさんはどうされているのでしょうか

779 :名無しさん@お腹いっぱい。:2015/01/16(金) 12:44:31.04 ID:w/Xz789B0.net
>>778
AHKで設定したことないけど、キーで追えるからできそうだね
Win+R
timedate.cpl をペースト→Enter
Shift+Alt+Tab…
ってな感じでさ

780 :名無しさん@お腹いっぱい。:2015/01/16(金) 17:48:28.69 ID:/S7pTzia0.net
>>779
timedate.cplっていうのははじめて知りました。ありがとうございました
でもちょっとしんどいかも。まあ出来ますけどね。もっとスマートな方法ないかなあ

781 :名無しさん@お腹いっぱい。:2015/01/16(金) 17:58:03.36 ID:BHwDWXvb0.net
cplは直接runできるよ

782 :名無しさん@お腹いっぱい。:2015/01/16(金) 19:19:55.49 ID:BdVFl+8U0.net
win7 時刻同期 コマンドライン でまずはググれ

783 :名無しさん@お腹いっぱい。:2015/01/16(金) 19:58:32.10 ID:/S7pTzia0.net
>>781
ダイアログを開いてタブを選択してってやらないといけないんでしょ

>>782
w32tm /resync /nowaitで出来ました。ありがとうございました
実際に時刻が修正されるのも確認しました
ただ、管理者権限でやらないと出来ないので毎回管理者確認しないといけないんですよね
ダイアログを出してやる方は特に管理者になれという画面は出ずにできるのですけど
バッチファイルを作ってそのショートカットを作ってその中で管理者権限にしてやってみます

784 :名無しさん@お腹いっぱい。:2015/01/17(土) 02:40:53.85 ID:CIOaVNi60.net
>>778
Win7 Pro x64ユーザーの俺はタスクスケジューラで「SynchronizeTime」のプロパティを修正してるが、今なら
ttp://red-shift.jp/pc_soft.html で入手できる「アナログ時計DX」を常駐させるほうが最も手軽で確実だと思う。

785 :名無しさん@お腹いっぱい。:2015/01/17(土) 03:12:08.94 ID:Zlfzrgij0.net
>>784
他のソフトできるというのは話が違うだろ

786 :752.764:2015/01/18(日) 06:54:21.60 ID:Dh7xkhml0.net
>>770-774
遅くなりましたがレスありがとうございました。
()を置き換えるって考えてたから手詰まりだったんですが、(を()にして左に移動、これだけで同じ動作になりました
少し違う見方したら簡単になるものですね
どうもありがとうございました。

787 :名無しさん@お腹いっぱい。:2015/01/18(日) 09:10:27.52 ID:qpsWx15n0.net
>>786
こんな感じでどうでしょうか
A_PriorHotkeyは直前に入力したキーではなく。直前に入力した、AHK内で::で指定したホットキーです。
A_TimeSincePriorHotkeyは直前に入力したキーではなく、直前に入力したホットキーとの間の時間間隔(msec)です
なので、(をホットキーとして::でスクリプトに書いておくと、下記の例では
(入力と)入力の間の間隔が500ms以下のときに {LEFT}がSendされます
直前に入力したキーがどこかでわかればこんな時間間隔でやるような疑似的なことはしなくてもいいのですけどね

(::
send, (
return

)::
send, )
if( A_PriorHotkey = "(" and A_TimeSincePriorHotkey < 500 )
send, {Left}
return

788 :名無しさん@お腹いっぱい。:2015/01/18(日) 09:44:29.43 ID:FKyciDUD0.net
そこまでしなくてもいいんじゃないの。本人が採用したみたいな形で
::Send,{Blind}(){F10}{Enter}{Left}
多分こんな感じで済むわけだし
Excelとかだと挙動が変わるから、そこでも使えるようにするなら別の工夫が必要だけどさ

789 :名無しさん@お腹いっぱい。:2015/01/18(日) 10:08:33.12 ID:qpsWx15n0.net
それは本人が考えることですよ
ここはいろんなアイデアを出し合ってあげるほうがいいと思います
それに簡単なスクリプトでしょ。難しいことじゃないですよ。多分、本人も知らないから聞いてきたのでしょう

790 :752.764:2015/01/18(日) 10:38:54.77 ID:zveiSzwY0.net
>>787-789
レスありがとうございます。
そうですね、その辺のコマンドとかまだちんぷんかんで、覚えてくには一つの事でも色々なやり方があると知れるのはべんきになります。
お二人、どうもありがとうございました。

791 :752.764:2015/01/18(日) 10:40:06.42 ID:8Stwfmla0.net
べんきじゃないw
勉強、ですw

792 :名無しさん@お腹いっぱい。:2015/01/18(日) 10:45:17.88 ID:wi37rAaR0.net
英数をcapslockにしようと
vkF0sc03A::
Send,+{Capslock}
return
と書いてみてonにはなるんですが、onの時に押してもoffにはなってくれませんでした。
on/offにするにはどう直せば良いでしょうか?

793 :名無しさん@お腹いっぱい。:2015/01/18(日) 10:53:24.31 ID:FKyciDUD0.net
>>789
色んなアイデアと言えば聞こえはいいけど
シンプルにできることをわざわざ複雑にする必要はないでしょ
そういうことを繰り返してるとAHKそのものが重くなったりすることもあるんだし
そのスクリプトじゃないとできないことならともかくさ

>>792
http://ahkwiki.net/Faqs

794 :名無しさん@お腹いっぱい。:2015/01/18(日) 11:21:35.39 ID:wi37rAaR0.net
>>793
半角/全角、CapsLock、かな(カナロック) などのLock系のキーへのキー割り当てが上手く行かない。 の項でしょうか
割り当てとしては出来てるから関係無いのかと思ったのですが、上手くは行ってないのでこれなんですね
仮想キーに割り当てしてそれに割り当てですね
やってみます、ありがとうございました

795 :名無しさん@お腹いっぱい。:2015/01/18(日) 11:29:47.48 ID:Q2jOc/E90.net
>>788
ホットキー1行での割り当てだと実用性に欠けると思うが、日本語入力の配慮も足りてないし

とりあえずまともに使えそうなの考えてみた。
; ----Input版(Inputは複数動作できないので考慮する必要がある)----
SetTimer, inPar, -1
return

inPar:
Input, Var, T1.5 V *,, (),[],(),「」 ; T1.5(1.5秒以内)
If (ErrorLevel == "Match")
Send {Left}
; If (ErrorLevel == "NewInput")
; MsgBox 別Inputからの割り込みがありました
Goto inPar
return

; ----ホットストリング版(時間指定なし)----
:*?:()::
:*?:[]::
Send % RegExReplace(A_ThisHotkey, ":\*\?:(.+)", "$1") "{Left}"
return

796 :名無しさん@お腹いっぱい。:2015/01/18(日) 11:36:42.71 ID:FKyciDUD0.net
>>795
1行で済ませられるなら1行スクリプトがベター
日本語入力の配慮も足りてないってはよく意味分からん
質問者が求めているのは、基本的にIMEONの状態で()を入力して、その間にカーソルを戻すってこと
じゃないのかね… IMEOFFなら、そもそもそんなことする必要性が低いわけだし

797 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:03:25.94 ID:CGvM15HD0.net
>>792
俺はこれでできてる
vkF0::Send, {blind}+{vkF0}

798 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:06:49.54 ID:5jcV6FKu0.net
別途「IME.ahk」を入手し、これでIMEの状態を監視させる。
F11、F12などのキーに、
Send,(){Left}
を割り当てる。
個人的にはこれが一番簡単な方法だな。

サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes
「1つのキーに3種類以上の動作割り当て」
こんなの参考にすれば、数限られたキーを有効に使える。

799 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:29:58.64 ID:0GgaX+IK0.net
前このスレで見つけた
Space::Send, % KeyMap ? "{PgDn}" : A_Thishotkey
ってのやってみようとしたらうまくいかないんですがこれわかる方居ます?

いろいろやってみましたけど、{Space}が押されるんじゃなくてSpaceと入力されたり常に{PgDn}になったり……

800 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:30:07.21 ID:t/pu8FI00.net
教えて君に遅レスでお節介とか、また面倒くさいのが湧いてるなあ
質問者に 理解できないからいらないです(^^) で返された後もgdgd続けるとかもうね

801 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:30:14.24 ID:CGvM15HD0.net
(){Left}の前後に日本語入力オフオンも送ってやればいい

802 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:33:52.93 ID:L4NlJQ620.net
>>796
> 1行で済ませられるなら1行スクリプトがベター

なんで?まさかスマートだからとか言わないよね?

803 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:44:49.37 ID:t/pu8FI00.net
>>799
keymapはただの変数、値は任意のタイミングで自分で設定するんだよ
spaceは"{" "}"で囲め

804 :名無しさん@お腹いっぱい。:2015/01/18(日) 14:48:31.54 ID:5wHrXQWL0.net
>>802
つ788
逆に聞きたいが、788に書いてるのにそれでも聞いてくる理由は何?
シンプルにできることをわざわざ複雑にした方がいいと思う理由も頼む

805 :名無しさん@お腹いっぱい。:2015/01/18(日) 15:35:38.26 ID:xIqsKbov0.net
だからさ、週末は少しクールな判断で話題をすすめていこうぜ
1行マクロでもいいし、タイマーを使ってゴニョゴニョでもいいと思うけど
相手の欠点を指摘するのは必要がないことだと思うんだぜ

806 :名無しさん@お腹いっぱい。:2015/01/18(日) 15:50:31.81 ID:0GgaX+IK0.net
>>803
{}で囲むとこのエラーが、
ttp://www.imgur.com/yueU5Up.png
A_ThishotkeyをSpaceにすると{PgDn}は機能するものの{Space}の入力がされません
仮想キーコードでもできませんでした

807 :名無しさん@お腹いっぱい。:2015/01/18(日) 16:50:54.65 ID:oBrUNae20.net
エラー画像はどうでもいいから直したコード書きなよ
根本的な理解が圧倒的に足りてないからまずはwikiのSendの説明項目を読み込め
あと{}で囲めつったのは左辺hotkeyのspaceじゃねーよA_thishotkeyのほうだ

808 :名無しさん@お腹いっぱい。:2015/01/18(日) 16:56:59.52 ID:L4NlJQ620.net
× {}で囲む
○ "{" "}"で囲む

809 :名無しさん@お腹いっぱい。:2015/01/18(日) 20:06:03.89 ID:y9TcOoqd0.net
三項演算子、変数展開とリテラル表記との違いなど、
理解するのが面倒だったり、勘違いが起きやすい
表記法だよ。

If使ってキッチリ条件分岐とその後の動作を分けて書くといい。

810 :名無しさん@お腹いっぱい。:2015/01/18(日) 20:18:03.14 ID:0GgaX+IK0.net
正解は
Space::Send, % KeyMap ? "{PgDn}" : "{Space}"
でした
みなさん「ここが間違ってる」とは言っても「これが正解」とは言わないんですね

>>807
エラー画像がどうでもいいってことはないでしょう
それと>>799>>803の流れからそのように読み取るのはなかなか難しいと思いますよ?
わかってる方ならそれで通じるんでしょうが
>>808
"{"Space"}"ということですか?ダメでしたよ
>>809
全く同感です。さらに言えばみなさんの表現があいまいなのが分かりにくさに拍車をかけていますね

811 :名無しさん@お腹いっぱい。:2015/01/18(日) 20:21:48.29 ID:e3LD8SDl0.net
さすが週末

812 :名無しさん@お腹いっぱい。:2015/01/18(日) 22:05:54.35 ID:wi37rAaR0.net
>>797
おお、うちでも出来ました。
ほんと助かりました。
感謝感謝。

813 :名無しさん@お腹いっぱい。:2015/01/18(日) 22:45:58.25 ID:GHy2Tlgb0.net
正解は
Space::Send, % KeyMap ? "{PgDn}" : "{"A_Thishotkey"}"
じゃないの?
まあ、"{Space}"でも動くと思うけど

814 :名無しさん@お腹いっぱい。:2015/01/18(日) 23:20:32.30 ID:Q2jOc/E90.net
>>796
括弧の種類が複数ある、一個ずつホットキーに割り当てる気か?

>>812
リマップならこれでも動くみたいですね
vkF0sc03A::+vkF0sc03A

>>810 >>813
文字列連結は「 」か「 . 」
"{" A_Thishotkey "}"
"{" . A_Thishotkey . "}"

815 :名無しさん@お腹いっぱい。:2015/01/18(日) 23:31:41.85 ID:0GgaX+IK0.net
>>813
それも不正解です
>>814
存じませんでした。やはり本物のレスは品がありますね

816 :名無しさん@お腹いっぱい。:2015/01/18(日) 23:37:48.83 ID:0eB+icfH0.net
>>814
は〜
>括弧の種類が複数ある
そんな何種類も必要なのかね… せいぜい3〜5種類程度だと思うがなぁ。例えば
無変換+2で""、無変換+8で()、無変換+「」なら、覚える負担もほとんどない
{}とか[]を日本語の文章で使うことはないし、自分ならこれで十分
そういうのも日本語で必要だと言う特殊な人は特殊なスクリプトを使えばいいだけだろ
ところで、日本語入力の配慮云々がズレてるってのは理解できたのか?
何でスルーしたのかも書いてもらいたいね

817 :名無しさん@お腹いっぱい。:2015/01/18(日) 23:42:11.77 ID:GHy2Tlgb0.net
>>814
文字連結忘れてたわ

それにしても俺も含め煽りたいだけの奴にも答える奴意外と多いな

818 :名無しさん@お腹いっぱい。:2015/01/18(日) 23:54:32.59 ID:0GgaX+IK0.net
煽りなどというのは邪推です
純粋に、不正確なことをいいかげんな気持ちで口にする慎みの無い人を戒め、謙虚に正確なことを伝えようとする方を尊敬しているだけですよ

819 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:00:07.69 ID:aJFCKKP50.net
>>810
>みなさん「ここが間違ってる」とは言っても「これが正解」とは言わないんですね

ここの基本はやり方を教える添削スレだからな
質問者のスキルを伸ばす方向でヒント回答するんだよ
答えだけが欲しい奴は相手にされない、覚えときな

820 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:02:40.66 ID:2It1shQK0.net
教えて君が説教はじめおったわ、一番ウザいタイプやな

821 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:04:03.25 ID:yjr5/qxF0.net
いつもの子だから触るな、覚えとけ

822 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:05:02.12 ID:5kKKnY2t0.net
まあこのスレは基本こんなものよ
時たま頭が変なのが湧くから面白い
勢いもそんなにないスレだからこんなんでも賑わいだよ

823 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:15:49.45 ID:On9sEdFk0.net
>>814のvkF0sc03A::+vkF0sc03Aは
一見それでいいようだけど、なんだったか忘れたけど不都合があって
試行錯誤の末行き着いたのが>>797

824 :名無しさん@お腹いっぱい。:2015/01/19(月) 00:42:23.51 ID:c2RiuwFX0.net
まぁ悪貨良貨を駆逐するの良例ですね。喜ばしくないですが
せいぜい叩いて伸ばして判別つきやすくするとしましょう

825 :名無しさん@お腹いっぱい。:2015/01/19(月) 07:35:53.96 ID:X9pwsfEp0.net
>>816
せいぜい、( [ { 程度が出来れば十分ですね
他はあっても特にそこまでしなくていいです

826 :名無しさん@お腹いっぱい。:2015/01/19(月) 11:00:52.48 ID:2BE7v7tS0.net
三項演算子は数式でできるものしか使えないっぽいからぶっちゃけ役に立たないので忘れたほうが無難
IFなら多数行が使えるしメンテしやすい

あとvkF0sc03Aみたいな仮想キーコードはたしかキーヒストリーに残らないから厄介なやつ。日本語キーボード限定キーとかになるからな。
英語圏メインで使われてるからその辺あんま考慮されてない。
たとえばA_PriorKeyなんかの組み込み変数に使えない。
使う場合はA_ThisHotkey := Priorkey(自分で作った変数)に格納するなんかのひと手間がかかる

827 :名無しさん@お腹いっぱい。:2015/01/19(月) 12:10:57.90 ID:/IvVgTkm0.net
ただの自己中が人のために何かしてやってるという自意識を持った時程
たちの悪いことはない

828 :名無しさん@お腹いっぱい。:2015/01/19(月) 13:10:41.64 ID:xfZXnc650.net
最近突っ込みどころ多すぎて大変だなw

考慮が配慮がイミワカランとか言ってるやついるけどさ
日本語入力切り替えの状態を考慮しろってことだろ?
間違えなし前提なんて無茶なこと言うなよw

>>826
極論言い過ぎ、自分が使い慣れてないだけだろ

>A_ThisHotkey := Priorkey(自分で作った変数)
組み込み変数に代入なんてできんし

829 :名無しさん@お腹いっぱい。:2015/01/19(月) 13:36:44.58 ID:sfuoy42S0.net
質問者そっちのけで助長な俺回答だらだら流して悦に入ってるおかしな回答者を
有り得ないほど低レベルなのに高飛車で回答者に食ってかかってくる別の質問者が擁護してるの図

>813-815の流れは笑いぐさもいいところ
バカ正直に突っ込んでる>814もアレだが
ぱっと見で空白抜けってわからんレベルのアホが「不正解です」って偉そうに指摘とかもうね

830 :名無しさん@お腹いっぱい。:2015/01/19(月) 14:26:28.51 ID:On9sEdFk0.net
三項演算子絡みで一番アレなのは
ifで複数行で書くものが1行にできるからスマート()とか思ってる奴

831 :名無しさん@お腹いっぱい。:2015/01/19(月) 18:53:29.40 ID:38rf/kfW0.net
ifよりも速度的にましなんじゃなかったっけ?>三項演算子
過去に検証した書き込みを見た気がする

832 :名無しさん@お腹いっぱい。:2015/01/19(月) 19:31:31.66 ID:5kKKnY2t0.net
あと三項演算子はC時代に短縮のために多用されてたからその時代の人に馴染み深いんだろうよ
実際三項演算子のほうがスマートな場合もあるし

833 :名無しさん@お腹いっぱい。:2015/01/19(月) 20:23:53.59 ID:JEGmLC8A0.net
>>828
分かってないのはお前だろw
()+Leftでカーソルを戻すってのは、日本語入力時にメリットのある動作であって、直接入力でコードを
書いてるような時に、{ }+Leftなんてたいした意味ないだろ?そのまま{ コード } で順番に入力すれば済む
だから、普通の日本語で使わない括弧に対してまでスクリプトを用意するのは無駄ってことだよ
分かった?

834 :名無しさん@お腹いっぱい。:2015/01/19(月) 20:27:45.70 ID:Gpy5MYw70.net
行数が少ないからなんてレベルで言ってる人は三項演算子なんて
後で自分で見たとき意味が分かりにくくて困るでしょう

835 :名無しさん@お腹いっぱい。:2015/01/19(月) 21:00:18.88 ID:42JVCw5Y0.net
>>833
ばーか

836 :名無しさん@お腹いっぱい。:2015/01/19(月) 21:29:38.32 ID:fmbCsrcF0.net
>>835
どうした?そんなことしか言えなくなったのかね…
反論は具体的にな

837 :名無しさん@お腹いっぱい。:2015/01/19(月) 21:29:43.58 ID:5kKKnY2t0.net
>>833
VSとかEclipseとか最近のIDEだとそういう機能が標準でついてると思うんだが・・・
むしろコーディングの時に使うものじゃないの?

838 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:03:20.17 ID:fmbCsrcF0.net
>>837
それなら「eclipse 括弧補完」とかでググってみれば、その機能がウザいって言ってる人が
たくさんいることがすぐに分かると思うけどね…
初心者向けに搭載した機能なのかもしれないけど、初心者にも不要だと思う
別の方法でチェックした方が効率的だからw
IMEの切り替えが必要な括弧を使う場面じゃないと意味がないでしょ
自分の説明の仕方が悪いのかねぇ

839 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:30:37.75 ID:5kKKnY2t0.net
>>838
俺はよく使ってたけどなぁ
あと元々は「()と入力した時に真ん中にカーソルを持っていきたい」っていう言ってるんだから、それの効率について議論してもしょうがないんじゃないかなw

840 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:39:53.38 ID:hXzcZBfU0.net
なんという駄弁り場

841 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:39:59.14 ID:5kKKnY2t0.net
()と[]両方必要ってことは日本語入力オフの状態で入力することを想定してるんだろうな
そもそも日本語入力オンの状態を想定するなら「」の方が必要だよな
いつの間に日本語入力オンって前提になったんだろう

842 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:41:05.68 ID:UHub55RF0.net
>>839
いや、だからさ
括弧を入力した後でカーソルを真ん中に持ってくるってのは、IMEの切り替えが必要なら面倒だからって
分かるけど、切り替えなしなら入力の手間なんて変わらんから意味ないって言ってるわけで
そもそも、効率良くするためにAHKを使うんだろうに、効率の議論しても意味ないっていう理由が分からないw

843 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:51:41.91 ID:YDtJV8iw0.net
>>841
いつの間にも何もないw 何度も同じこと書くのも気が引けるんだが…
IMEONの時にIMEON時の括弧、IMEOFFの時にIMEOFF時の括弧を補完してカーソルを戻すのは、
入力の流れ以上、ほとんど意味がない。そういうのはスクリプトを使う前に、自分の作業効率を見直すべき
コードを書くときにIMEON時の括弧を使う場面なんかほとんどないから必要ないと言ってるわけで、例えば
IMEON時に全角()ではなく半角()や全角<>よりも半角<>を使うのが好みだとかレポートのルールだとか
って言う状況にあってこそ意味がある使い方

844 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:54:07.04 ID:5kKKnY2t0.net
>>842
本人が「こういう動作をしたい」って言ってるのに「それは効率が悪いからこっちにしろ」ってのはおかしくない?
IMEオンオフ切り替えますなんてことは言ってないし
ちょっと勘違いしてたけど下の2つを実現したいってことみたいだし

日本語入力オンの時に()と入力した時真ん中にカーソル
日本語入力オフの時に[]と入力した時に真ん中にカーソル

845 :名無しさん@お腹いっぱい。:2015/01/19(月) 22:58:31.47 ID:ojMqoLll0.net
仕様の理解ができてないとよく起こる光景

>>843
貴方は効率悪いと思ってるかもしれないけど、全ての人間がそう思ってるとは限らない
あと元々直接入力でっていう仕様があるから

846 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:09:33.07 ID:B6IV5n9v0.net
>>844-845
別におかしくないな〜。効率が良くないのならそれを指摘する方が親切というもの
押し付けるつもりはないから判断は自分ですればいいが、俺からみればその点を考慮せずに
このスクリプトで〜ってやる方がよっぽど押し付けだと思うわw
それでは単なるスクリプトバカになりかねない。それよりもユーサビリティが優先されるべき
AHKをユーサビリティを改善させるためのツールであって、スクリプトのためのツールではない
それはともかく、効率良くするためにAHKを使うんだろうに、効率の議論しても意味ないっていう理由
をそろそろ教えてほしいんだが?

847 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:12:51.55 ID:hXzcZBfU0.net
所詮議論じゃなく駄弁りだから得るものが何もないこの数レス

848 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:13:01.87 ID:6+FN4sG30.net
このスレにはいつもズレた奴がいるな

849 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:14:38.77 ID:5kKKnY2t0.net
>>847
議論するべきところがずれまくってるからな

850 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:16:35.51 ID:+1d6d0TK0.net
もはや何のスレなのかわからない

851 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:17:39.61 ID:+m/YqrbQ0.net
別にAHKは効率良くするためだけのツールじゃないしな

852 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:18:29.64 ID:tSlvuoyh0.net
AHKは何をするためのツールかの議論が始まりそう

853 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:21:25.96 ID:tQQJlAXr0.net
AHoKa-----!!

854 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:21:33.09 ID:9hcGPfBJ0.net
そういう機能のついたマクロがあるエディタがあるんじゃないの

855 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:23:21.46 ID:w5U3gZ9Z0.net
>>849
それなら、どこがどうズレてるのか書いてご覧♪
あと、答えないから繰り返し質問せざるを得なかったのも、それにも答えてない理由は何?
こっちの質問をすっ飛ばして842に答えてるんだから見てないわけないと思うんだが?
都合が悪いから答えないと思われても仕方ないんじゃね?回答だけじゃなくスルーした理由も書いてくれよな

>>851
他に何の目的があるのか書いてもらえる?
俺は詰まる所は効率UPだと思うんだが、効率に関係ない全く別の目的があるのなら、それはそれで知りたいから

856 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:29:57.78 ID:tSlvuoyh0.net
こいつあかんやつや

857 :850:2015/01/19(月) 23:33:09.42 ID:YTjAIeG50.net
IDが変わってるから厄介だが…
>>856
それは俺に言ってるんだよな?
そういうのは質問に答えない奴にこそ向けるべきだと思うんだが、俺に向けてる理由は何だろうな?
納得できる説明できるまでは聞くからなw
突っかかってきた以上は、逃げずに答えろよ

858 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:36:30.46 ID:+1d6d0TK0.net
>>856
少なくとも彼の中では自分が正しいんだろう

859 :850:2015/01/19(月) 23:38:49.29 ID:fBxTomjx0.net
>>858
別に俺は何もそんなことは思ってないんだが、そう判断した根拠は?
俺は自分からケンカを売ることはしないが、売られたケンカは買うタイプなんでねw
あんたにも俺が納得できるまで聞き続けるかもしれんからよろしくな♪
答えられないのなら絡んでくるなよ

860 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:40:41.32 ID:tQQJlAXr0.net
「850」でNGしときゃいいのかな

861 :850:2015/01/19(月) 23:49:18.38 ID:lAidsSg70.net
お好きにどうぞw あんたもたいしたレスしてないみたいだが… まあNGはご自由に
でも、質問に答えない連中はそのままで俺をNGにする理由だけは知りたいがね
しかし、何で答えずに済まそうとするんだろうなぁ
せめて答えられないなら答えられない理由を書いてもらわないと

862 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:53:00.69 ID:25L1aGoW0.net
関わったら負けなタイプだな

863 :850:2015/01/19(月) 23:56:26.25 ID:RZVqhvIU0.net
そういうのは勝ち負けにこだわるタイプの奴が言うセリフだと思うわw
こっちはただ単に質問したことに答えてもらいたいだけ
だから答えられない理由を納得できるように書くならともかく、トンズラこく奴は許せんというだけの話

864 :850:2015/01/19(月) 23:58:03.67 ID:5eKC+mSn0.net
荒らしてごめんなさい
お薬がきれてしまったせいでつい自分をコントロールできませんでした
頭の病気なのでスルーして頂けると幸いです

865 :名無しさん@お腹いっぱい。:2015/01/19(月) 23:59:56.93 ID:xfZXnc650.net
今帰ってきたがまだやってたのか
単発IDでいつまで騒いでんだ?

866 :名無しさん@お腹いっぱい。:2015/01/20(火) 00:04:08.24 ID:nmsAFacd0.net
横だが850からの書き込み見て賛同する人間はまずいないと思うよ
己の書き込み読み返して自主的にあかんことがわからん段階で全然だめだろう
説明されないとわからないと言い張る精神状態なら説明されてもきっとわからないよ


>>841
>757ははじめから「IMEからの〜」って書いてる
これは秀capsの設定にある文言だろうから、当然IME ONでの想定だと思うが

867 :850 ◆dYf3jJ7iBM :2015/01/20(火) 00:10:21.49 ID:kW1Rr1vx0.net
>>864
そろそろお前のような奴が出てくると思ってたよ
検索したらちょっと出てきたが、まあ気にせず聞こう。同じの出してくれ

>>865
単発になることがあるのは仕様だから仕方ないんだわ
俺はあんたの言ってることの方がワケ分からんけどな

>>866
いや、だからさw 何で質問に答えてきた俺の方にだけそれを向けて、答えない奴には何も触れないんだ?
内容云々の前にそこが納得できんから、まずそれを説明してくれよな

868 :名無しさん@お腹いっぱい。:2015/01/20(火) 00:26:36.33 ID:5/UaTQ9T0.net
糞の役にも立たないゴミ共の巣窟、ゴミ溜め
トゥイターにでも行ってこい

869 :名無しさん@お腹いっぱい。:2015/01/20(火) 00:26:56.96 ID:nmsAFacd0.net
850以前のあんたのレスがどれかわからないし、そもそも何を言ってるのかさっぱりなんだよ
850以降のあんたのレスは常軌を逸してるからみんなに突っ込まれてるんだよ

870 :850 ◆dYf3jJ7iBM :2015/01/20(火) 00:30:12.36 ID:wWefq/ig0.net
>>869
ほうほう。それなら、850以降のレスは、それ以前のものが関連しているとは微塵も考えなかったのかい?
そこを想像できるなら、「常軌を逸してる」と決め付けることにはならないと思うんだが?
で、改めてどこがどう「常軌を逸してる」のか書いてくれない?

871 :名無しさん@お腹いっぱい。:2015/01/20(火) 00:41:31.69 ID:o7qogjwK0.net
文中の850では消えるのに名前でNGできない(泣
どうやるんだ?

872 :名無しさん@お腹いっぱい。:2015/01/20(火) 00:47:18.56 ID:o7qogjwK0.net
設定からあぼーん直接コピペ登録でできた

873 :名無しさん@お腹いっぱい。:2015/01/20(火) 05:22:37.45 ID:IbAjNNUP0.net
なんでキチガイは、毎回毎回、IDが変わるの?

874 :名無しさん@お腹いっぱい。:2015/01/20(火) 09:43:08.39 ID:nmsAFacd0.net
ここ数日のgdgdで皆いいかげんうんざりしてる状態で
関わりあいになりたくない、早く消えてほしい
そういう思いからついた一行レスに「俺がした質問に答えろ」という

質問の中身なんかどうでもいいんだよ
いつまでも固執してるその状態が「あかんやつ」なんだから

他人が自分に興味を示してくれるのが当然と考えていて
己が思ってるほど自分に興味のある奴はいないってことを理解できないんだな
典型的な自己肥大

この手合は言ってもムダだからここまで書いてもわからないんだろうね
今後も言い返してくるだろうけど、これ以上は無意味だからレスしない

875 :名無しさん@お腹いっぱい。:2015/01/20(火) 09:48:02.26 ID:wb8NHk/N0.net
構ってほしいだけだらね

876 :名無しさん@お腹いっぱい。:2015/01/20(火) 10:34:37.96 ID:ace6vYkQ0.net
あまり構うと居付くからそろそろスルーして欲しいんだけど

877 :名無しさん@お腹いっぱい。:2015/01/20(火) 11:16:10.42 ID:chWUI6Zn0.net
そいつに名前つけたらいいじゃん。そいつが出てきたら、もうスルー

878 :名無しさん@お腹いっぱい。:2015/01/20(火) 12:46:47.43 ID:7FTicbzg0.net
一昨年あたりから来ていないんだけれど、なにか変わりましたか?
AutoHotkey_Lの本体更新していいものか迷う

879 :850 ◆dYf3jJ7iBM :2015/01/20(火) 12:55:10.37 ID:L8usepTh0.net
>>873
まずいきなりキチガイ呼ばわりすることの正当な理由を書くこと
納得できたら答えてやるから。な?

>>874
それはあんたの考え。「これも賑わい」みたいなこと言ってる奴もいるわけだしw
気に入らないならNGにすればいいだけなのに何でそうしないんだ?
そもそも、「関わりあいになりたくない」と言いながら書き込んでくること自体、盛大な矛盾を
発揮しているとは思わない…んだろうなぁ。。これが自分でおかしいとは思わない…んだろうねぇ
こっちは自分からケンカを売ることはしないが、売られたケンカは買う、と態々書いた後で
絡んできた以上、あんたのそれは子供の屁理屈。もしくは、読解力が極めて乏しいなのかだろう
まあ、これ以上はレスしないってならそれでOK。自分で言ったことは守るようにな

>>875-877
870は三河弁?ごまかしたり逃げたりしないと確約するなら、仕事終わった後にでも相手するが?
できないなら絡んでくるなよ
スルーするならそれで結構。871がスルーと言えるのかどうかは疑問もあるが
872は何と言うかな… いちからか?いちからせつめいしないとだめか?ってやつだよw
それにしても、変わった時間に書き込める奴が結構いるもんだなぁ… とわざとらしく言って
おくか。まあ普段は過疎スレなんだから…まあいいやw

>>878
AutoHotkey_L が派生ではなく本流になったことや、バージョンアップは時折されてるけど
特に問題がないのならそのままでもいいと思う
あと、Window SpyのUIがちょっと変わったかな

880 :名無しさん@お腹いっぱい。:2015/01/20(火) 16:24:05.73 ID:ace6vYkQ0.net
>>878
そうそうver.upで問題が起こるようなもんでもないよ
問題があったら入れなおすだけだし

881 :名無しさん@お腹いっぱい。:2015/01/20(火) 17:44:48.37 ID:U70x1qzr0.net
>>878
細かいバグ修正多数と、~とクリップボード周りの仕様が微修正
あとは64bitやWin8以降の対応が進んでる

882 :名無しさん@お腹いっぱい。:2015/01/20(火) 18:15:38.10 ID:TM8OysX00.net
逆に言えばそう取り立ててアップデートする必要がないという

883 :名無しさん@お腹いっぱい。:2015/01/20(火) 20:10:27.96 ID:HhGbTde70.net
細かいバグ修正多数と言ってるのに

884 :名無しさん@お腹いっぱい。:2015/01/21(水) 18:28:11.67 ID:anAXev/m0.net
以下で連打長押しやっているのですが長押しの後一連打が実行されてしまいます
何が邪魔しているのでしょうか?

a::
 Gosub, KeyCheck
Return
a*:
 if(Key_cnt == 1) {
 }
Return
aL:
Return

KeyCheck:
 ThisHotkeyLabel := ThisHotkey( ThisHotkey )
 KeyWait, %ThisHotkey%, T0.2
 if ( ErrorLevel ) {
  Goto, %ThisHotkeyLabel%L
 } Else {
  SetTimer, key_CheckCnt, 250
  Key_cnt += 1
 }
Return

885 :879:2015/01/21(水) 18:29:10.22 ID:anAXev/m0.net
>>884続き

ThisHotkey( ByRef Hotkey = "", ByRef Combination = "", ByRef Modifier = "" ){
 (略)
}

key_CheckCnt:
 Hotkey, %A_ThisHotkey%, Off
 SetTimer, key_CheckCnt, Off
 Gosub, %ThisHotkeyLabel%*
 Key_cnt = 0
 Hotkey, %A_ThisHotkey%, On
Return

886 :名無しさん@お腹いっぱい。:2015/01/21(水) 21:18:32.15 ID:VAcP0bJq0.net
>>884
自分でスクリプトの実行ログ見れば分かる
虫食いだらけの動かないもの貼られても困るし

887 :名無しさん@お腹いっぱい。:2015/01/21(水) 21:25:53.74 ID:mijbfGpk0.net
>>886
具体的にどこがおかしい?
三点挙げてみて

888 :名無しさん@お腹いっぱい。:2015/01/21(水) 21:32:00.05 ID:x8BjqVZ+0.net
釣り開始

889 :名無しさん@お腹いっぱい。:2015/01/21(水) 21:33:50.59 ID:mijbfGpk0.net
私が申し上げたいのは、能無しの野次馬は黙ってろということです

890 :名無しさん@お腹いっぱい。:2015/01/21(水) 23:01:48.05 ID:KsNqU5R70.net
>>884
 if ( ErrorLevel ) {
  Goto, %ThisHotkeyLabel%L

 if ( ErrorLevel ) {
  KeyWait, %ThisHotkey%
  Goto, %ThisHotkeyLabel%L

891 :名無しさん@お腹いっぱい。:2015/01/22(木) 05:23:43.04 ID:YvGpu9pF0.net
希望通りの動きになりました、ありがとうございます

KeyWaitってことはキーリピートした分が実行されてしまっていたってことかな
拾ってきたものを寄せ集めただけでSetTimerやら別スレッドやらを理解しきれていないので助かりました

892 :名無しさん@お腹いっぱい。:2015/01/22(木) 06:07:41.80 ID:6R8RiYy90.net
>>884-891
ド素人のオラには全く理解できないん、、、貼られたスクリプト動かないし(´・ω・`)

893 :名無しさん@お腹いっぱい。:2015/01/22(木) 06:19:50.99 ID:6R8RiYy90.net
http://ahkwiki.net/SampleCodes
の「サンプルコード集」にある「1つのキーに3種類以上の動作割り当て」っーのは知ってるだが、
>連打長押し
っーのが分からんだ。

イメージすると、「1つのキーに3種類以上の動作割り当て」っーのは、
単打:「・」、二連打:「・・」、長押し:「―」
だとすると、「連打長押し」は、
「・ ―」とか「・・ ―」
ということか?

894 :名無しさん@お腹いっぱい。:2015/01/22(木) 06:29:24.50 ID:yfIhKkqT0.net
>>891
>>886で指摘されてる通り、実行ログを見たらキーリピートが動いてるのがわかったと思うよ

895 :名無しさん@お腹いっぱい。:2015/01/22(木) 07:07:51.63 ID:YvGpu9pF0.net
>>892-893
似たようなもんです、これだと三連打以上も場合分けで出来るだけです

{a}*:連打用ラベル、ifで連打数場合分け
{a}L:長押し用ラベル

ThisHotkey( ByRef key2 = "", ByRef key1 = "", ByRef key0 = "" ){
 key0 =
 if(GetKeyState("LWin") || GetKeyState("RWin"))
  key0 .= "#"
 if(GetKeyState("Alt"))
  key0 .= "!"
 if(GetKeyState("Ctrl"))
  key0 .= "^"
 if(GetKeyState("Shift"))
  key0 .= "+"
 key1 := RegExReplace(A_ThisHotkey, "(?!\S+)\s+&\s+\S+|^[\$\^\+\*!#~<>]+")
 key2 := RegExReplace(A_ThisHotkey, "\S+\s+&\s+(?=\S+)|^[\$\^\+\*!#~<>]+")
 if(key1 == key2)
  ThisHotkeyLabel = %key0%{%key1%}
 else
  ThisHotkeyLabel = %key0%{%key1%}{%key2%}
 Return, %ThisHotkeyLabel%
}

>>894
Viewのkey history and script infoですか?
今後はログも見ながらやってみます

896 :名無しさん@お腹いっぱい。:2015/01/22(木) 08:02:25.86 ID:Hdu7rdDj0.net
>>895
最初に表示される方 Lines most recently executed
余分な処理コメントアウトしてから見れば問題点が分かりやすい
0.20秒で素通りしてるのが分かるはず

000: KeyWait,%ThisHotkey%,T0.2 (0.20) ←その行の待機時間

897 :名無しさん@お腹いっぱい。:2015/01/22(木) 11:31:51.64 ID:+m4+8Pto0.net
今のFirefoxはもはやウィンドウタイトルくらいしかまともに情報を取れないのですが、タブの文字情報や読み込み中状態などを判断する手段はないでしょうか?

898 :名無しさん@お腹いっぱい。:2015/01/22(木) 13:52:41.89 ID:xeio15VZ0.net
ctrl+c以外でClipboardに置くにはどうすればいいんだろう
コンテキストメニューつくってctrl+cだとちゃんと動いてくれない事がある

899 :名無しさん@お腹いっぱい。:2015/01/22(木) 15:13:31.11 ID:ElMoHx7x0.net
>>896
細かいところまでありがとうございます

900 :名無しさん@お腹いっぱい。:2015/01/22(木) 18:23:40.73 ID:L/mJVTW50.net
任意の座標 x,y にあるウィンドウのプロセス名を調べるにはどうすればいいですか?

901 :名無しさん@お腹いっぱい。:2015/01/22(木) 18:49:28.14 ID:8ZyA9bbu0.net
AHKのトレイアイコンの左(シングル)クリック/中クリック時に
任意の動作(そのスクリプトのアイコンごとに別)をさせる事は可能でしょうか

902 :名無しさん@お腹いっぱい。:2015/01/22(木) 20:34:06.68 ID:imGe0/Ka0.net
>>900
マウスカーソル動かしていいなら、MouseMove→MouseGetPos→WinGet
だめなら↓でWinGetAtCoords()→WinGet、あるいはProcessNameも取得できるように改造する
http://www.autohotkey.com/board/topic/98662-get-window-under-a-certain-xy-position/

else if (what = "ProcessName" or what = "PN") {
WinGet, WinProcessName, ProcessName, ahk_id %WinID%
Return WinProcessName
}

903 :名無しさん@お腹いっぱい。:2015/01/22(木) 20:53:07.95 ID:Hdu7rdDj0.net
>>897
タブ切り替えや画像判定のごり押し以外なら
ブラウザ用の言語javascriptなどやアドオンと連携させる

>>898
Sendの入力が速いかフォーカスが外れてたのでは?

>>900
WinGetでウィンドウのリスト取得してから順に
座標/サイズを取得、指定座標と比較

>>901
Menuの機能で足らないならOFFにして自前で判定作成

904 :名無しさん@お腹いっぱい。:2015/01/23(金) 01:53:07.19 ID:o3zCgkCW0.net
Ahk利用者ってプログラミングできる人とできない人のどっちが多いんだろ

905 :名無しさん@お腹いっぱい。:2015/01/23(金) 02:18:33.87 ID:GTu8RKTG0.net
プログラミングできないからAHKを使い始めたが、当時のAHKは配列が無く、
込み入った処理を実装するのが面倒になり、結局Javaを一通り学んだ。

学んだ後も、簡単な処理ならAHKでやりつづけてる。
何も考えずキー撃てば即実装できるのが便利。
いろいろ遠回りになったけど、両方の長所短所を把握できた。

906 :名無しさん@お腹いっぱい。:2015/01/23(金) 07:09:03.01 ID:l8NQHil70.net
特定ソフトだけ処理から除外させて他のソフトでは全部適用させたくてやり方を検索しました
アプリの指定はifwinactiveみたいですが、それだと全部に指定なんですよね?
取りあえずifwinactiveを最後の辺りに入れて色々試してみましたがエラーだったので自分がやったやり方は確実に間違いだとはわかりました
指定以外全てに適用、指定したソフトだけ除外させる方法はifwinactiveで可能なのでしょうか?

907 :名無しさん@お腹いっぱい。:2015/01/23(金) 08:51:53.14 ID:j1qJTLxr0.net
>>906
#IfWinNotActive [, WinTitle, WinText]
詳しくはahkwiki.net

908 :名無しさん@お腹いっぱい。:2015/01/23(金) 09:03:23.09 ID:isUDXD9b0.net
ifwinActiveはアクティブなウインドウだけが対象
特定ソフトだけ処理から除外するなら #If Not か If Not

やりたいことはなるべく具体的に書いたほうが解決しやすいよ
処理の適応条件がホットキーなのかループで一挙に全窓処理したいのか
特定ソフトの除外条件がなんなのか、詳細わからんと答えにくい
文面から色々誤解しているだろうことだけは伝わってくるが

909 :名無しさん@お腹いっぱい。:2015/01/23(金) 13:42:41.80 ID:m5IbD0Kp0.net
MouseGesture_Lを同時起動している自宅の3台のPCでDropboxを使って共有したいのですが、
マウスジェスチャの登録をPC1でしか行わない場合、設定ファイルは保護されるのでしょうか?
PC1で設定を保存したあと、PC2,PC3がシャットダウンするときに古い設定が書き込まれてしまわないか心配です

910 :名無しさん@お腹いっぱい。:2015/01/23(金) 13:44:42.64 ID:8ctnF5H20.net
>>909
専用スレでどうぞ

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
http://anago.2ch.net/test/read.cgi/software/1384313234/

911 :名無しさん@お腹いっぱい。:2015/01/23(金) 13:47:21.35 ID:m5IbD0Kp0.net
>>910
ありがとうございます、専用スレがあったのですね
そちらで再度質問します

912 :名無しさん@お腹いっぱい。:2015/01/23(金) 15:34:21.13 ID:ZhHj4Xbd0.net
>>902-903
遅れてすみません
ありがとうございます

913 :901:2015/01/23(金) 16:09:35.17 ID:l8NQHil70.net
お返事ありがとうございます。
>>907
そこ見て除外とあったんですがsample見ても全然わからずで
>>908
条件で違ってくるんですね
具体的に書くとFirefoxでは除外、それ以外のソフトでは右ダブルクリックでそのソフトを終了

~RButton::
IfWinNotActive,ahk_class MozillaWindowClass
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 500)
{
Sleep 200
Send,!{F4}
}
Return

一応これで望んでる動作が出来ているようです
そしてFirefoxではタブを閉じるにしようと同じように

IfWinActive,ahk_class MozillaWindowClass
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 500)
{
Sleep 200 ; wait for right-click menu, fine tune for your PC
Send,^w
}

別で書いたらエラーが出たので同じ文の中に追加しました
しかし謎の挙動(カーソル位置の画像?(1x1pxl、png)を別タブに表示したりリンクを別ウインドウに表示したり)をしました
キーボードでctrl+wだとちゃんとタブを閉じます
間違い、問題点わかるでしょうか?

914 :名無しさん@お腹いっぱい。:2015/01/23(金) 19:02:26.41 ID:GtRp6SxJ0.net
>>913
>カーソル位置の画像?(1x1pxl、png)を別タブに表示したりリンクを別ウインドウに表示したり
wが送られたことで右クリックメニューの新しいウィンドウで開く(W)が発動してる

915 :名無しさん@お腹いっぱい。:2015/01/23(金) 19:45:01.74 ID:8ctnF5H20.net
>>913
ダブルクリック中にマウス移動すればメニュ項目選択できるので危険
同じホットキーで条件が違う場合は#if系で複数書ける


~RButton::Return ; 判定用

#if WinActive("ahk_class MozillaWindowClass") && (A_PriorHotKey == A_ThisHotKey && A_TimeSincePriorHotkey < 500)
RButton::
Send {Esc}^w
; KeyWait %A_ThisHotkey%
Return
#if

#if !WinActive("ahk_class MozillaWindowClass")
RButton::
ToolTip ok
Return
#if

916 :901:2015/01/23(金) 21:46:55.88 ID:l8NQHil70.net
お返事ありがとうございます。
>>914
…ああ、右クリックの解除(Esc)を書き忘れてたのが原因ですね。
出来ました、どうもありがとうございました。
>>915
む、難しいですね…
>>1のWikiや流行らせるページ、検索してサンプルを置いているページなども読んでるんですがどこもあまり詳しくは書いてないというか…
どこか初心者におすすめの勉強出来るサイトとかないでしょうか?

917 :名無しさん@お腹いっぱい。:2015/01/24(土) 03:14:59.18 ID:xVhiBD8T0.net
>>916
こういうことしたいってこと?
※じゅうぶんに検証していないので穴がある可能性有り。

リマップやホットキー登録の時は「#If 〜 」でウインドウ判別するのが基本。
>>913のような書き方だと右クリする度にウインドウ判定処理が動くよ。(そもそもあれで動く?)

;Firefoxがアクティブではない時→ソフト終了
#IfWinNotActive, ahk_class MozillaWindowClass
~RButton::
if wclick() {
ToolTip, {Esc}!{F4}
Return
}
#if

;Firefoxがアクティブな時→タブ閉じ
#IfWinActive, ahk_class MozillaWindowClass
~RButton::
if wclick() {
ToolTip, {Esc}^w
Return
}
#if

;ダブルクリック判定関数
wclick() {
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 500) {
return 1
}
return 0
}

918 :名無しさん@お腹いっぱい。:2015/01/24(土) 04:30:41.19 ID:xVhiBD8T0.net
>>917訂正(やっぱ変だった)

;Firefoxがアクティブではない時→ソフト終了
#IfWinNotActive, ahk_class MozillaWindowClass
~RButton::
if wclick() {
Sleep, 200 ; wait for right-click menu, fine tune for your PC
Send, {Esc}!{F4}
}
Return
#if

;Firefoxがアクティブな時→タブ閉じ
#IfWinActive, ahk_class MozillaWindowClass
~RButton::
if wclick() {
Sleep, 200 ; wait for right-click menu, fine tune for your PC
Send, {Esc}^w
}
Return
#if

;ダブルクリック判定関数
wclick() {
If (A_PriorHotKey = A_ThisHotKey and A_TimeSincePriorHotkey < 500) {
return 1
}
return 0
}

919 :名無しさん@お腹いっぱい。:2015/01/24(土) 09:05:56.08 ID:OjDX250w0.net
あのさ、常に完璧な解答をしろなどとは言わないがもうちょっと状況読もうよ

コードの読み方もおぼつかない初心者にデバックの必要なコード投げるとか
本人ができましたつってる後にほとんど改良になってないコード投げるとか

視認性が良くなるわけでもなく行数短縮にもなってない関数化は質問者にしてみれば難読化が進んだだけと思う
そこそこ慣れた人間には意味があるかも知れないけど

920 :名無しさん@お腹いっぱい。:2015/01/24(土) 10:02:08.88 ID:xjoV/jxo0.net
本人がわかったって言ったあとでもタメになるコードをくれるのはいいけどね
少なくともデバッグ済みのコードにはしてほしいねw

ちゃんと動かして、そのコードのコピペでね。以前にもたびたびあったんだが

921 :名無しさん@お腹いっぱい。:2015/01/24(土) 14:22:46.07 ID:tM3gWmpB0.net
>>918
次の糧にしてくれれば良いからあえて言うけど一番やばい問題が解決してないぞ
>>915 >ダブルクリック中にマウス移動すればメニュ項目選択できるので危険

分かりにくいがこれが重要
~RButton::Return

922 :名無しさん@お腹いっぱい。:2015/01/25(日) 03:02:38.14 ID:rtf5FlNK0.net
FirefoxのFlash上でのみ、マウスの中クリックで再生を行えるようにしたいのですが
どうすればいいでしょうか?

MButton::
ControlSend,,{Space}, ahk_id %GeckoPluginWindow%
return

としてみたのですがうまく動作しません

923 :名無しさん@お腹いっぱい。:2015/01/25(日) 03:52:40.44 ID:ZLsIfdqw0.net
だろうな

924 :名無しさん@お腹いっぱい。:2015/01/25(日) 13:09:13.62 ID:rtf5FlNK0.net
#If ActiveControl("GeckoPluginWindow")
MButton::Space
#If

ActiveControl(ClassNN) {
MouseGetPos,,,,OutputVarControl
Return (OutputVarControl=ClassNN)
}

他の方のスクリプトを参考にしながら書いてみましたがまだ動きません
何が原因なのでしょうか?

925 :名無しさん@お腹いっぱい。:2015/01/25(日) 13:34:20.19 ID:JnxjGUuS0.net
自分が書いているものがなんなのかわかってないのが原因

926 :名無しさん@お腹いっぱい。:2015/01/25(日) 13:40:34.04 ID:BskNWMfW0.net
RegExMatch(MC, "^GeckoPluginWindow\d+$")

927 :名無しさん@お腹いっぱい。:2015/01/25(日) 13:41:17.41 ID:BskNWMfW0.net
MouseGetPos,,,,MC
return RegExMatch(MC, "^GeckoPluginWindow\d+$")

928 :名無しさん@お腹いっぱい。:2015/01/25(日) 13:44:42.17 ID:rtf5FlNK0.net
うまくいきました!
>>927さんありがとうございます

929 :名無しさん@お腹いっぱい。:2015/01/25(日) 16:32:56.72 ID:TkEwndHy0.net
ランダムな数値を取得するスクリプトです。
直前の数値と同じにならないよう取得するのに以下のような方法に行きついたのですが、
みなさんが書くとしたら、やっぱこんな感じになるんですか?
パラメータで指定できれば楽なのになぁ…

;インデントは全角空白です
Loop, 10 {
 Random, OutputVar, 1, 5
 if (tmp_OutputVar = OutputVar) {
  Loop {
   Random, OutputVar, 1, 5
  } until tmp_OutputVar != OutputVar
 }
 MsgBox, %OutputVar%
 tmp_OutputVar := OutputVar
}

930 :名無しさん@お腹いっぱい。:2015/01/25(日) 18:59:22.49 ID:2PGNDrn/0.net
>>929
重複修正して圧縮

Loop 10 {
 Loop {
  Random, Var, 1, 5
  tmp_Var := Var
 } Until tmp_Var != Var
 ; } Until tmp_Var := (tmp_Var != Var) ? Var : 0
 MsgBox % Var
} return

931 :名無しさん@お腹いっぱい。:2015/01/25(日) 21:17:14.03 ID:TkEwndHy0.net
>>930
ありがとうございます。
それをヒントにかなりスッキリした形になりました。(多分これで良いと思う)

Loop 10 {
 Loop {
  Random, Var, 1, 5
 } Until tmp_Var != Var
 tmp_Var := Var
 MsgBox % Var
}

932 :名無しさん@お腹いっぱい。:2015/01/26(月) 00:16:02.11 ID:Wu//C0Jh0.net
>>931
それであってます
すみません代入の位置ずれてましたw

933 :名無しさん@お腹いっぱい。:2015/01/27(火) 00:48:29.48 ID:+vr9R5sl0.net
単純にやるなら1足したりとか

934 :名無しさん@お腹いっぱい。:2015/01/27(火) 07:05:37.68 ID:7f6kEvmaS
公式から最新版落としたんですが、
Unicode版を選択する画面がなくそのままインストールしてしまいます

よく言われるUnicode版ってどこで選択するんでしょうか
バージョンアップに伴い仕様変更でもしたのでしょうか

935 :名無しさん@お腹いっぱい。:2015/01/27(火) 07:13:46.79 ID:psxo4HMK0.net
公式から最新版落としたんですが、
Unicode版を選択する画面がなくそのままインストールしてしまいます

よく言われるUnicode版ってどこで選択するんでしょうか
バージョンアップに伴いこのあたりの仕様変更でもしたのでしょうか 

936 :850 ◆dYf3jJ7iBM :2015/01/27(火) 08:59:43.10 ID:w7xsJN0R0.net
>>931
今の公式がUnicode版じゃないのかな…
ま、心配ならこっちから落とせばいいよ
http://ahkscript.org/download/

937 :850 ◆dYf3jJ7iBM :2015/01/27(火) 09:00:15.08 ID:w7xsJN0R0.net
あ、レス番間違えた。スマンね

938 :名無しさん@お腹いっぱい。:2015/01/27(火) 10:01:59.51 ID:ZFcO48i70.net
ahkでfirefoxのような独自描画のキャレット位置も取得できないのか?
GoogleIMEは入力モード変更したらキャレットの位置にバルーン出してるけどどうやってるんだろ

939 :名無しさん@お腹いっぱい。:2015/01/27(火) 11:36:11.39 ID:psxo4HMK0.net
>>936
ありがとうございます!

940 :名無しさん@お腹いっぱい。:2015/01/27(火) 11:50:14.86 ID:jyS0ssZW0.net
winactiveで条件つけるときにAHK_Lでexeとclass 両方をANDで指定したいんですが。
自分で適当に書いてみたやつで動いたやつはこれです

#ifwinactive ahk_exe A ahk_class B

#if winactive("ahk_exe A") && winactive("ahk_class B")

#ifwinactive ahk_exe A
#ifwinactive ahk_class B

三番目は二行に分けて書いてます
どれも一応動きましたが、普通はどう書くんでしょうか?

941 :名無しさん@お腹いっぱい。:2015/01/27(火) 12:06:42.89 ID:u6uyNHsO0.net
とりあえず3番目は間違ってる
exeがA じゃないClass Bも有効になってしまうはず
対象exeの名称リネームして試してみ

942 :名無しさん@お腹いっぱい。:2015/01/27(火) 12:47:47.18 ID:psxo4HMK0.net
v1.1.19.02ですが、下記のように配列の要素をメッセージで表示させるスクリプトを
書いても%で囲んだ部分でエラーが出てしまって、
スクリプトをリロードできません

TextArray := Object()
Loop, Read, C:\me.txt
{
TextArray.Insert(A_LoopReadLine)
}
MsgBox %TextArray[2]%



かといってこの%を取ると配列が展開されず
そのままTextArray[2]という文字列が出力されてしまいます
どなたか添削していただければ

943 :名無しさん@お腹いっぱい。:2015/01/27(火) 12:52:26.34 ID:psxo4HMK0.net
あ、

MsgBox % TextArray[2]

でいけました、失礼

944 :名無しさん@お腹いっぱい。:2015/01/27(火) 14:00:08.19 ID:cgEVWtwg0.net
#IF winactive("ahk_exe A") && winactive("ahk_class B")
コレが一番普通。なぜならその他の条件付けもできる。#IFwinactive正直使わなくね?

945 :名無しさん@お腹いっぱい。:2015/01/27(火) 14:22:58.11 ID:wx8PXlou0.net
#IfはLastFoundWindowに記憶されない
あと条件範囲が広くなる分#Ifのほうがパフォーマンス落ちそうなイメージはあるな
まあ体感できるほどの差違はないんだろうけど

けどactive前提で特定のウィンドウの絞り込みならわざわざ#If使うまでもないし、1番目でよくね?

946 :名無しさん@お腹いっぱい。:2015/01/27(火) 17:09:57.54 ID:Gww6ymVm0.net
foo = あ|い|う|え|お
bar = う

Loop, Parse, foo, |
baz := A_LoopField
Until bar = A_LoopField

これを例えば
IfInString, A_LoopField, %bar%
baz := A_LoopField
のように目的のアイテムが見つかった場合だけ変数に格納するようにすると
Loop毎に変数を書き換えるよりも処理速度あがったりする?

947 :名無しさん@お腹いっぱい。:2015/01/27(火) 17:43:38.35 ID:DNOmx5/K0.net
そういう疑問は実測あるのみ

948 :名無しさん@お腹いっぱい。:2015/01/27(火) 17:51:06.61 ID:IztDwbXJ0.net
100万回とか1億回とかループさせて、結果をスレに貼るのが伝統

949 :名無しさん@お腹いっぱい。:2015/01/27(火) 18:03:58.07 ID:gns2TVYS0.net
>>946
代入が遅くなる場合は変数のメモリ容量の確保が必要な場合
文字列検索は文字数に比例して遅くなる

代入にメモリ確保が必要になったとしても文字列検索の方が遅くなる

950 :名無しさん@お腹いっぱい。:2015/01/27(火) 18:17:14.15 ID:Gww6ymVm0.net
なるほど逆に遅くなるのか
貴重な情報ありがとう

951 :名無しさん@お腹いっぱい。:2015/01/27(火) 19:37:38.63 ID:psxo4HMK0.net
すいません、下記のように指定のウィンドウにテキストを投入した後
また元のウィンドウに戻るってことをやってるんですが、
テキスト文字列hoge変数の量が多いとエンターが実行される前に元のウィンドウに戻ってしまいます


WinGetTitle, active_title,A
IfWinExist, タイトル
{
{WinActivate
Send,%hoge%.{Enter}
}
WinActivate ,%active_title%

これってどの位置に何を挿入すると簡単に修正できますか?

952 :名無しさん@お腹いっぱい。:2015/01/27(火) 19:38:52.63 ID:psxo4HMK0.net
あ、「{」が二つかぶっちゃったのは単に今打ち間違えただけなので関係ありません

953 :名無しさん@お腹いっぱい。:2015/01/27(火) 20:51:22.57 ID:gns2TVYS0.net
>>951
*入力したいのが文字列
Clipboard + Send ^v

*入力したいのがキー入力
一時的にウィンドを固定 WinSet(最前面表示)
入力が早い方式に変える SendInput
直接送信 ControlSend

954 :名無しさん@お腹いっぱい。:2015/01/27(火) 20:54:08.67 ID:psxo4HMK0.net
原因わかりました、全角モードの時は書き込むアプリケーションによってはエンターを二度押さないと駄目みたいです
これで一件落着かとおもったけど、何かたまに勝手に文章の一部を漢字に変換したりしてる…(文字化けではない)

955 :名無しさん@お腹いっぱい。:2015/01/27(火) 20:56:33.13 ID:psxo4HMK0.net
>>953
ああ、やっぱクリップボードに一旦コピーさせるのが一番解決早いですよね
定期実行させるから他のアプリケーション触ってる途中で
突然クリップボードの中身変更されるのは嫌だなと思ったんですが

まあ一時間に一回実行ペースだから実害はあまりないでしょうけどね

956 :名無しさん@お腹いっぱい。:2015/01/27(火) 21:00:07.81 ID:psxo4HMK0.net
あ、実行する前にあらかじめクリップボードの中身退避させて後で戻せばいいのか

957 :名無しさん@お腹いっぱい。:2015/01/27(火) 21:41:50.57 ID:jyS0ssZW0.net
>>941
>>944
>>945
どうもでした
自分はファンクションキーの挙動をアプリごとに切り替えていて
更にClassがかぶってるアプリが何個かあるので#Ifwinactive使ってます

それこんなかんじにアプリごとの挙動を個別に指定する時
#ifwinactive でまとめちゃってるんですけどこういうのやらないほうがいいですか?

#Ifwinactive ahk_class A
F1::soundbeep
F2::
IF(A){
soundbeep
}ELSE{
return
}
#ifwinactive

#ifwinactive ahk_class B
F1::SoundBeep, 750, 500
F2::
IF(B){
soundbeep
}ELSE{
return
}
#ifwinactive

958 :名無しさん@お腹いっぱい。:2015/01/27(火) 21:48:54.52 ID:aNMpxz5k0.net
#if〜の使い方は問題ないけど
それIFが真のときreturnできてないよ

959 :名無しさん@お腹いっぱい。:2015/01/27(火) 22:04:17.50 ID:SxbrJCU80.net
ahkでコマンドプロンプトのコマンド(delとかrenとか)を実行するには.batファイルを作っておいてそれをrunするしかない?

960 :名無しさん@お腹いっぱい。:2015/01/27(火) 22:11:33.92 ID:aNMpxz5k0.net
run, cmd.exe

961 :名無しさん@お腹いっぱい。:2015/01/27(火) 22:51:57.83 ID:SxbrJCU80.net
>>960
サンクス
run,cmd.exe /c 実行したいコマンド
で実行できる…のかな?だけどなぜかやりたい ren (rename)はできんかったけどなんでか分からんけどとりあえず感謝

962 :名無しさん@お腹いっぱい。:2015/01/27(火) 23:13:03.53 ID:ciD0QTW40.net
delとかrenってFileDeleteとかFileMoveじゃだめなの?

963 :名無しさん@お腹いっぱい。:2015/01/27(火) 23:21:03.74 ID:rSpvPeYX0.net
delもrenもできるぞ
権限絡みとか?

964 :名無しさん@お腹いっぱい。:2015/01/28(水) 12:21:17.80 ID:FP5FnsVf0.net
クリップボードの文字列のバイト長を取得したいんですが、
StringLenはAHKLでは文字数が返ってしまいます
AHKLでバイト長を得る方法はないでしょうか?

965 :名無しさん@お腹いっぱい。:2015/01/28(水) 12:31:02.52 ID:/POZTSd60.net
>>964
http://anago.2ch.net/test/read.cgi/software/1383384464/463

966 :名無しさん@お腹いっぱい。:2015/01/28(水) 12:45:17.83 ID:FP5FnsVf0.net
>>965
str := Clipboard
StrLenB(str) {
Return (A_IsUnicode) ? StrPut(str, "CP0")-1 : StrLen(str)
}
MsgBox, %str%

としてみましたが、クリップボードの中身が表示されるだけで上手くいかないようです

967 :名無しさん@お腹いっぱい。:2015/01/28(水) 12:56:03.84 ID:L9VkZjmp0.net
>>966
str := Clipboard
StrLenB(str) {
Return (A_IsUnicode) ? StrPut(str, "CP0")-1 : StrLen(str)
}
MsgBox, StrLenB(str)

968 :名無しさん@お腹いっぱい。:2015/01/28(水) 12:56:05.34 ID:G6fal+qL0.net
そりゃそうだ

969 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:00:51.25 ID:FP5FnsVf0.net
>>967
「StrLenB(str)」と表示されます

970 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:17:30.17 ID:Pp0/wm8q0.net
>>966
なんで関数作っといて使わないの?

StrLenB(str) {
Return (A_IsUnicode) ? StrPut(str, "CP0")-1 : StrLen(str)
}

Ins::
str := Clipboard
num := StrLenB(str)
MsgBox, %num%
Return

971 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:24:16.40 ID:qH48mqgU0.net
あるウインドウを「アクティブじゃなくさせる」方法って他のウインドウをwinactivateするしかない?

972 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:27:17.50 ID:/+bq3MWi0.net
説明書くらい読もうぜ

973 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:36:12.96 ID:CjZVoHzy0.net
IfWinExist, ウィンドウタイトル

って最小化してる場合でもtrue返しますか?
Activateさせたいのですが…

974 :名無しさん@お腹いっぱい。:2015/01/28(水) 13:59:39.85 ID:qH48mqgU0.net
>>972
ウインドウを非表示にするんじゃないですよ、フォーカスをそこから外したいだけなんです。WinMinimizeじゃ画面から消えてしまうし、activateの逆をする方法が分からなくて。

975 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:01:03.92 ID:QcTLVaq80.net
プログラムでよく使われるMAP,LIST,STACKみたいな関数群ライブラリファイル的なものは用意されてないのでしょうか。

976 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:04:01.04 ID:ARUd1TyM0.net
デスクトップでもアクティベートすればいいんじゃね
「なにもアクティブではない」なんてことありえるの?

977 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:13:03.68 ID:qH48mqgU0.net
>>976
何もアクティブじゃない状態にしたいんじゃなくて、そのウインドウがアクティブじゃなければなんでもいいの。
で、今は適当な他のウインドウをwinactivateしてるんだけどそれだとアクティベートという処理が重いらしくて修飾キー押しっぱなし病が発生してくる。

978 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:48:12.40 ID:gBuZB1iD0.net
>>977
send,!{Esc}

979 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:50:31.58 ID:/+bq3MWi0.net
>>10-11

980 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:56:52.00 ID:+bGLDyHg0.net
>>973
やってみればいいんでない

>>977
なんでもいいならWinSet, Bottomとかもあるよ

981 :名無しさん@お腹いっぱい。:2015/01/28(水) 14:59:37.55 ID:bwmqU77e0.net
>>980
いや、やってみれば早いんですが、常駐で今スクリプト回してる状態なんで止めたくないんですよ…

982 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:03:09.37 ID:Zdcko91t0.net
多重起動すりゃいい

983 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:10:28.71 ID:bwmqU77e0.net
やり方わかんない、てかそれよりも答え知ってる人いたら教えていただけたらって感じですー

984 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:18:45.52 ID:/+bq3MWi0.net
そろそろ次スレ
次が立つ前に埋まったら重複スレをとりあえず利用するか

AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383489925/

985 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:19:53.09 ID:BH5ySHBf0.net
 「適当にコード作ってみたけど動かない。動かない原因を調べるのも面倒だし、
  学習する気もない。どうせここに書けばおまえらが修正するだろうから誰か直して」

986 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:43:16.26 ID:/POZTSd60.net
>>986なら>>15-18の修正案で立ててみる

987 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:48:23.39 ID:WBmg2X0/0.net
すでに出てるだろ

send,!{Esc}

が楽

988 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:48:47.50 ID:34ttzEdQ0.net
>>16の図がちょっとずれちゃってるね
直せるならよろしく

989 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:53:37.08 ID:/POZTSd60.net
AutoHotkey スレッド part20 [転載禁止](c)2ch.net
http://anago.2ch.net/test/read.cgi/software/1422427426/

>>988
ごめん手遅れw

990 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:59:05.54 ID:34ttzEdQ0.net
乙w

991 :名無しさん@お腹いっぱい。:2015/01/28(水) 16:05:14.34 ID:Pp0/wm8q0.net
遅かったか・・・
             ┌ AHK64(統合)
             │
AutoIt          .│ ┌ AHK_U(統合)
 │          │ │
AutoHotkey(1.0) ─ Autohotkey_L ┬ Autohotkey(1.1) ←いまここ
   │         │         .│
   └ IronAHK×  |         .└ Autohotkey v2(α版)
              │            │
              └ AutoHotkey.dll.  ├ AutoHotkey_H v2
                │  │      │
                │  └ AutoHotkey_H
                │
                └ AutoHotkey_N×

992 :名無しさん@お腹いっぱい。:2015/01/28(水) 16:50:14.02 ID:FI4hYS7Q0.net


ていうか何なんだこのクソ質問者ラッシュはw
ID全部別ってことは同時期にアホが3人も涌いてるのか

993 :名無しさん@お腹いっぱい。:2015/01/28(水) 17:26:28.84 ID:VUeHCzKz0.net
他人任せオーラがはんぱない

994 :名無しさん@お腹いっぱい。:2015/01/29(木) 00:45:00.79 ID:opSD6jos0.net
>>981
常駐あっても別プロセスでできるだろうに
なんなんだろうなこいつ

>>977
こいつも後出しだし
使いたくない理由があるなら始めからそれ言えよ
しらねーよ


っつーことで梅

995 :名無しさん@お腹いっぱい。:2015/01/29(木) 01:31:15.24 ID:ear45heP0.net
>>958
return入れ忘れました どうもです

996 :名無しさん@お腹いっぱい。:2015/01/29(木) 08:16:49.68 ID:kJTgM47M0.net
ある変数、a_1, a_2, a_3、みたいのがあって(疑似配列?)、これの一部をメッセージボックスで表示したいのです。
その際、この配列の引数は変数になっていて、

a_%x%, a_%y%, a_%z%
などをMsgBoxで表示させたいのですが、

MsgBox, x:: %a_%x%% y:: %a_%y%% z:: %a_%z%%
などとはできません。
どうしたらいいのでしょうか

997 :名無しさん@お腹いっぱい。:2015/01/29(木) 08:36:09.70 ID:1/4yUSMu0.net
%a_%z%%みたいな書き方はできなかった気がする

a_%x%ならこんな風にすればできる(「% 」から書き始めると、文字列を指定できる場所で計算式を使える)
MsgBox, % "x:: " . a_%x% . " y:: " . a_%y% . " z:: " a_%z%

998 :名無しさん@お腹いっぱい。:2015/01/29(木) 08:55:06.27 ID:kJTgM47M0.net
ありがとう。出来ました。途中にピリオドが入っているのは文字列連結の意味で入れてるのかな
とりあえずピリオドを削除しても出来ました
要するに全体を文字列にしてしまって、頭に%をつけて、全体を解釈してもらおうということですね。こういう方法しかないのかな

999 :名無しさん@お腹いっぱい。:2015/01/29(木) 13:57:41.70 ID:OR4yCcZ30.net
A := a_%x%
MsgBox,%A%

行数増えるけど一旦代入するのもあり

1000 :名無しさん@お腹いっぱい。:2015/01/29(木) 18:16:30.86 ID:NFykVTp/0.net
起動したソフト全てを常時最大化したく、無い知恵と知識でやってみましたが出来なかったのでお力を貸してください。

SetTitleMatchMode, 2
WinMaximize [WinText -,]

どんなタイトルでも適用される様に - を使ってみましたがダメでした。
その後違う方法で

WinGet, tmp, MinMax, A
Else
WinMaxbmize, A
Return

と書いてみましたがこれもダメでした。
根本的な部分をまだ勉強中で何を間違えているのかもよくわかっていないので、間違えてる事と解決方法をお教え頂けないでしょうか?
よろしくお願いします。

1001 :名無しさん@お腹いっぱい。:2015/01/29(木) 18:34:00.00 ID:+sOCeW4m0.net
根本的に書き方が無茶苦茶です

1002 :名無しさん@お腹いっぱい。:2015/01/29(木) 18:36:01.12 ID:lNOrZBUT0.net
複数のウインドウをまとめてWinMaximizeするにはahk_groupを使う
ahk_groupにすべてのウインドウを追加するには正規表現を使う SetTitleMatchModeも変える

でもよくわかってないのに「すべてのウインドウ」とか
あんまりやらないほうがいいと個人的には思うけど

1003 :名無しさん@お腹いっぱい。:2015/01/29(木) 18:51:25.75 ID:QgqKSPCm0.net
>>1000
WinMaxbmizeという謎のコマンドについて教えてくれw

1004 :名無しさん@お腹いっぱい。:2015/01/29(木) 20:01:17.00 ID:3j9jzjcz0.net


1005 :名無しさん@お腹いっぱい。:2015/01/29(木) 20:05:21.73 ID:ofcv5mY00.net


1006 :名無しさん@お腹いっぱい。:2015/01/29(木) 20:08:11.72 ID:HKDe8Pfx0.net
糞質問者が多くてスレ消化が早いな

1007 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1007
354 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★