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

オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →URLリンク(www.autohotkey.net)
 →URLリンク(sites.google.com)

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

※ACC.ahkとCOM.ahkはフォーラムのリンク先にファイルが存在しませんので下記から入手してください。
 URLリンク(ux.getuploader.com)

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

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

3:名無しさん@お腹いっぱい。
14/09/22 13:31:34.38 sCilm04c0
■過去スレ
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)
スレリンク(software板)スレリンク(software板)

以下FAQ等

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

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

4:名無しさん@お腹いっぱい。
14/09/22 13:32:28.26 sCilm04c0
■ リマップ・ホットキー割り当て

Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( URLリンク(www.forest.impress.co.jp) )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  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:名無しさん@お腹いっぱい。
14/09/22 13:34:51.88 sCilm04c0
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:名無しさん@お腹いっぱい。
14/09/22 13:35:22.44 sCilm04c0
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:名無しさん@お腹いっぱい。
14/09/22 13:35:52.99 sCilm04c0
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:URLリンク(www6.atwiki.jp) の「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:公式( URLリンク(www.autohotkey.com) )から SmartGUI Creator をDLして使うと楽。

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

8:名無しさん@お腹いっぱい。
14/09/22 13:45:31.11 sCilm04c0
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
URLリンク(fincs.ahk4.net)

参考 URLリンク(autohotkey.blog.fc2.com)

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

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

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

11:名無しさん@お腹いっぱい。
14/09/22 15:31:25.93 TWZQl0Y50
★教えて君五大要素★

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



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

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

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

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

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

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

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

#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:名無しさん@お腹いっぱい。
14/09/22 18:41:40.53 p6lOg1se0
>>12に追記
表示されたウィンドウ内のテキストが切れると言う意味です。
よろしくお願いします。

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

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

>>2
旧版のAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
 →URLリンク(ahkscript.org)
 →URLリンク(ahkwiki.net)

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

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

Q3:GUI作るのめんどくせ~~
A3:海外の有志が作ったツールを使うと楽。
 SmartGUI Creator ( URLリンク(www.autohotkey.com) )
 GUI Creator ( URLリンク(ahkscript.org) )

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

16: ◆T98aC7LCC.
14/09/22 20:08:25.66 +lqQnBvw0
■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(開発終了)
URLリンク(www.autohotkey.com)
Autohotkey 1.1 (Autohotkey_L)
URLリンク(ahkscript.org)

■開発中
Autohotkey v2(下位互換性を排除して操作利便性の向上)
URLリンク(ahkscript.org)

17: ◆T98aC7LCC.
14/09/22 20:09:00.95 +lqQnBvw0
■派生版
IronAhk(.NET製、クロスプラットフォーム。開発終了)
URLリンク(www.ironahk.net)

AutoHotkey.dll(真のマルチスレッド対応)
URLリンク(www.autohotkey.com)
AutoHotkey_N(開発終了)
AutoHotkey_H
URLリンク(www.autohotkey.net)

■統合
AHK_U(Unicode版)
URLリンク(www.autohotkey.com)
AHK64(64bit版)
URLリンク(www.autohotkey.com)

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

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

2:対策パッチ
 実行ファイルのマニフェスト書き換え、自己署名証明書のインストールが行われる。
 ※AutoHotkey.exeはProgram Files以下に置く必要がある。
 URLリンク(www.autohotkey.com)

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
 URLリンク(fincs.ahk4.net)

GUI作成ツール
 SmartGUI Creator
 URLリンク(www.autohotkey.com)
 GUI Creator
 URLリンク(ahkscript.org)

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

URLリンク(ux.getuploader.com)

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

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

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

23:名無しさん@お腹いっぱい。
14/09/22 21:49:09.99 LhXBlblr0
あ、サーセン。やらかしてた。
>>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
14/09/22 22:25:42.48 KL8RiTSL0
クリップボードの文字列の半角を全角に置換してファイル検索ソフトに送る方法で質問していた、前スレの952です。
本当に沢山の皆様からのレスありがとうございました。
つい最近スクリプトの知識が全くないまま作り始めたものだったので、
頂いたレスの半分も理解できませんが、自分が望む動作のスクリプトが形成できました。
返事が遅れて申し訳ないですが、レスを頂いた皆様、本当にありがとうございました。

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

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

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

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

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

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

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

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

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

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

32:名無しさん@お腹いっぱい。
14/09/24 07:29:22.32 h+15TBzd0
>>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:名無しさん@お腹いっぱい。
14/09/24 07:53:10.30 h+15TBzd0
あ、この条件だとちょっと挙動危ないな
If(editclass == "Edit1")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47:名無しさん@お腹いっぱい。
14/09/24 23:12:36.36 lsLyuOWz0
>>46
URLリンク(ahkwiki.net)

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

値をOnMessageで受け取る
URLリンク(ahkwiki.net)

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

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

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

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

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

52:名無しさん@お腹いっぱい。
14/09/25 11:56:30.53 pwdySlks0
右から左に受け流す~♪

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

71:名無しさん@お腹いっぱい。
14/09/27 15:59:58.52 YcFvAXqt0
こんなのを見つけてやってみた。とっても便利で気に入りました
URLリンク(www.autohotkey.com)

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

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

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

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

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

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


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

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

76:名無しさん@お腹いっぱい。
14/09/27 20:30:08.69 qd2bT6T+0
>>69
任意のプロセスを一時停止/再開
URLリンク(www.autohotkey.com)
検索ワード:autohokey Suspend processes

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

100:名無しさん@お腹いっぱい。
14/09/30 02:38:02.91 QrCMvsbv0
横から失礼

Autohotkey-Scripts/Affinity.ahk at master ・ dufferzafar/Autohotkey-Scripts ・ GitHub
URLリンク(github.com)

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

Affinity_Set(1,notepad.exe)

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

101:名無しさん@お腹いっぱい。
14/09/30 02:42:49.46 SeJUcLB30
それ以前にMGLはスレチ

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

そもそも第二引数はプロセス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:名無しさん@お腹いっぱい。
14/09/30 15:25:37.51 12x17Na20
7日前の日付をフォルダ名にしたいんですがなんでコレ動いてくれないんでしょう

foldername:=A_now
foldername-=7,D

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

104:名無しさん@お腹いっぱい。
14/09/30 16:13:51.34 V+44fyZJ0
foldername += -7,D

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

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

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

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

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

110:名無しさん@お腹いっぱい。
14/10/01 14:33:01.00 m5XVznIk0
アルヨー

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

111:名無しさん@お腹いっぱい。
14/10/01 14:41:41.20 NC4Qan6e0
object

112:名無しさん@お腹いっぱい。
14/10/01 17:13:16.66 m5XVznIk0
デスクトップにあるファイルの自動振り分け機能作ってるけどもうちょっとメンテナンスしやすくしたいんですがなんかいいアイディアないですかね?
これでも動くんですが、具体的には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:名無しさん@お腹いっぱい。
14/10/01 17:41:50.84 O8eRmxL00
>>112
なんで配列にしないでスペース区切りの文字列にしてるのか知らないけども
仮想配列と配列を使えばいいんでないの?

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

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

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

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

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

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

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:名無しさん@お腹いっぱい。
14/10/01 21:19:38.97 V8yOKcSw0
A_TimeIdleが、30秒まで数えると0に戻っちゃうみたいなんですが
この状況でそれ以上数えるにはどうしたらいいですかね?

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch