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

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

AutoHotkey スレッド part20

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

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

■日本語解説等
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 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:44:21.94 ID:/POZTSd60.net
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall()を利用しているスクリプト)は最新Verで動作しないものがあり、
その場合はスクリプトの修正が必用です。

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

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

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

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

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

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

以下FAQ等

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

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

4 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:45:32.13 ID:/POZTSd60.net
■ リマップ・ホットキー割り当て

Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
  レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( http://www.forest.impress.co.jp/library/software/changekey/ )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
  「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
  ウィンドウが表示されるので右上の「Scan code」をクリック。
  覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
  「登録」をクリックし、Windowsを再起動する。

Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
  これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
   ^1::Send, {Esc}

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

5 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:46:53.52 ID:/POZTSd60.net
Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

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

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

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

Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。

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

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

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

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

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

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

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

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

8 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:50:43.70 ID:/POZTSd60.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:Windows Vista(以降)で管理者権限のウィンドウ操作やSendPlayが効かないんだけど?
A6:OSのセキュリティ機能であるユーザーアカウント制御(UAC)にブロックされている。

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

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

3:UAC停止 ※注意!! 必ずHIPS機能がある他のセキュリティ対策ソフトを導入してください。
 「コントロールパネル」→「ユーザーアカウント」
 Vista:「ユーザーアカウント制御の有効化または無効化」→ チェックボックスをオフ。
 7/8/8.1:「ユーザーアカウント制御設定の変更」→ スライドバーを一番下に。
 ※Windows 8/8.1では上記に加えレジストリを変更する必要があります。(注意:Windowsストアアプリが実行できなくなる)
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System
 「EbableLUA」の値を「0」に変更。

9 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:51:41.08 ID:/POZTSd60.net
■AutoHotkeyの系譜
             ┌ AHK64(統合)
             │
AutoIt         .│ ┌ AHK_U(統合)
 │          │ │
AutoHotkey(1.0) ─ Autohotkey_L ┬ Autohotkey(1.1) ←いまここ
   │         │       │
   └ IronAHK×  │       └ Autohotkey v2(α版)
             │           │
             └ AutoHotkey.dll  .├ AutoHotkey_H v2
                │  │     │
                │  └ AutoHotkey_H
                │
                └ AutoHotkey_N×

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

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

10 :名無しさん@お腹いっぱい。:2015/01/28(水) 15:52:16.58 ID:/POZTSd60.net
■派生版
IronAhk(.NET製、クロスプラットフォーム。開発終了)
http://www.ironahk.net/

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

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

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

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

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

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

12 :名無しさん@お腹いっぱい。:2015/01/28(水) 18:08:41.51 ID:/+bq3MWi0.net
★教えて君五大要素★

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



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

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

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

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

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

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

13 :名無しさん@お腹いっぱい。:2015/01/28(水) 18:09:09.25 ID:/+bq3MWi0.net
スレをひと通り読めば分かると思うんだが、
「○○という処理をするにはどういうコードを書いたらできますか?」 ではダメなんだよ

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

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

14 :名無しさん@お腹いっぱい。:2015/01/28(水) 20:29:16.25 ID:X/kNxoKN0.net
テキストファイル操作の内、ファイルの中身を消して新規書き込みをしたいんですが、
FileAppendで最初の引数を空にして書き込んでから、
さらに同じファイルに対してもう一度FileAppendして上書き、
っていう手順踏まなきゃだめなんですか?

一発で、ファイルの中身を消す→新規書き込み、をしたいんですが
何か方法ありますか

15 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:01:06.60 ID:Pp0/wm8q0.net
>>14
FileOpen()のWrite使えばええやん?

16 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:21:36.88 ID:X/kNxoKN0.net
>>15
なるほど、って思って使ってみたんですが、
何かファイルの中身がなくなるだけで書き込みの方ができません
なんか使い方勘違いしてますか?

file := FileOpen("C:\Hour.txt" , "w")
file.Write(%A_Hour%)

17 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:34:02.84 ID:Pp0/wm8q0.net
>>16
最後にfile.Close()

18 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:35:06.70 ID:nOerFSIe0.net
%A_Hour%→A_Hour

19 :名無しさん@お腹いっぱい。:2015/01/28(水) 21:40:43.96 ID:X/kNxoKN0.net
>>17
>>18
できました!ありがと3です

20 :名無しさん@お腹いっぱい。:2015/01/29(木) 20:12:22.89 ID:fr5eZeEy0.net
なかなか埋まらなかった前スレが、ネタレスのお陰でやっと埋まったようだなw

21 :名無しさん@お腹いっぱい。:2015/01/29(木) 21:22:56.97 ID:WtZquUFY0.net
AHKってマウスボタンの4個目以降はホットキーとして使えないであってあるよね?
今まで本家にそういう要望はなかったんだろうか・・・カスタムしたい

22 :名無しさん@お腹いっぱい。:2015/01/29(木) 21:38:06.85 ID:mH9Fj39D0.net
>>21
OSがサポートしているのがXButton2まで
サイドボタン3個目以降はマウス側でF13等に割り当ててからホットキーにする

23 :名無しさん@お腹いっぱい。:2015/01/29(木) 22:00:30.37 ID:WtZquUFY0.net
>>22 了解、ありがとう助かった

24 :前スレ994:2015/01/29(木) 22:52:24.16 ID:bBH6jDc40.net
終わり間際の前スレで質問してしまった…
995(アンカー付けるとこのスレのその番号に迷惑かけるのでアンカーは無しで)
どっちも検索で見付かった、キーに最大化を割り当てるやり方とかで、キーを押すんじゃなく起動したソフトは全部最大化させたいのでキーや元の大きさに戻すとかの部分は消してみたのがあれでして…
996
まとめてというか、別々で全部と言えば良いでしょうか
はい、よくわかってないので何がなにやら
997
それは…きっと何かが起きるのでは無いでしょうか…(笑)

25 :名無しさん@お腹いっぱい。:2015/01/29(木) 23:22:55.53 ID:fr5eZeEy0.net
>>24
悪いことは言わないから、「Maximize Assistant」という常駐ソフト使った方が良いよ。
ウインドウ(ソフト)一つに付き一つずつ設定していくか、設定次第では一つ設定するだけで全てのウインドウに適用できるかも知れない。

26 :名無しさん@お腹いっぱい。:2015/01/30(金) 00:52:30.78 ID:FiR08TSa0.net
前スレ終了の流れ
とりあえず厚顔無恥なクソやろう共と単純にわかってなくて支離滅裂になってる子を
同列にくさすのはやめようや

>>24
コピペはる前にコマンド説明くらいは読もう、で段階踏んで実行してみる

まずはアクティブウィンドウズでwinMaxmizeできるようになる
そしたらWinGet,outputver,list ですべてのウィンドウのIDリスト取得して
ループでぐるぐる回して一個ずつWinMaxmize
http://ahkwiki.net/WinMaximize
http://ahkwiki.net/WinGet

まあ>25の言うとおりアプリで何とかできるならそのほうがいいかもね

27 :名無しさん@お腹いっぱい。:2015/01/30(金) 06:50:20.24 ID:26CQmxX20.net
普通の権限で起動したAHKから管理者権限で起動するにはRun,*RunAsを使えば良いですが、管理者権限で起動したAHKから普通の権限で起動させるには、MouseGestureLのようにRunAsでユーザー名とパスワードを使わなければならないんでしょうか

28 :名無しさん@お腹いっぱい。:2015/01/30(金) 08:00:26.46 ID:jZoxhTfl0.net
>>24
前スレで「起動したソフト全てを常時最大化したく」って書いてたけど最小化を無効化したいってこと?
そうすると>>26に加えてタイマーで監視する必要もある

>>27
逆に聞くけど、それ以外にどんな方法(機能)を望んでいるんだw

29 :名無しさん@お腹いっぱい。:2015/01/30(金) 14:48:47.46 ID:FkIw8rOi0.net
>>28
昇格させたウィンドウで使えなくなるので管理者権限にしたいのですが、スクリプトを共有してるのでそういう情報は書き込みたくないなと
起動毎に環境変数に入力しかないかなあ

30 :名無しさん@お腹いっぱい。:2015/01/30(金) 15:53:31.32 ID:NIBcyWF10.net
質問です。半角全角をEscにしてカタカナひらがなをEscにする設定を教えてください。
以下のコードでは片方ずつなら設定されますが両方同時には設定できませんでした。

#SingleInstance force
#InstallKeybdHook
#InputLevel 1
SendMode Input
SetKeyDelay, -1
SetMouseDelay, -1
SetBatchLines, -1

#UseHook On

*sc029::Esc
*sc070::sc029

#UseHook Off

31 :名無しさん@お腹いっぱい。:2015/01/30(金) 17:09:47.11 ID:qoVrIGAM0.net
>>27 >>29
>管理者権限で起動したAHKから普通の権限で起動させるには
>昇格させたウィンドウで使えなくなるので管理者権限にしたい

管理者権限のある人だけ常に管理者として実行するってことか?
Autohotkey.exe→互換性→特権レベル にチェック

>>30
フックを使うとAHKが発行したキーイベントではホットキーは反応しない

#UseHook
*sc029::
*sc070::Esc

32 :名無しさん@お腹いっぱい。:2015/01/30(金) 17:25:29.85 ID:WEbmw/5q0.net
>>31
以下のようにコメントアウトしてインプットレベルをデフォルトに戻すと動作するようになりました
ありがとうございました

;#InputLevel 1

33 :24:2015/01/30(金) 19:54:10.13 ID:bICDVRkA0.net
レスありがとうございます。
>>25
以前最大化専用ソフトを検索してvectorだったかで数個入れたのはwin8に対応していなくて使えず、他のソフトを使わずAHKで出来るならベストだなと思ったので。
>>26
書いてあったページ他で説明は読んだのですがこれにはこれが必要とかこれはこうする為にあるとか、詳しく、はっきりと書かれてる所が無くて不要部分を削ってみたり - にしてみたりしました。
貼って頂いた上のページは読んでいたのですが、簡素過ぎて初心者には全然分かりませんでした。
下のwingetの方は詳しく書いてますね。
逆に難解ですがコマンドの意味などがわかるのでよく読んでみます。
アプリでなんとか出来るならその方が良いってレベルの難しい事なんですか?
AHKの得意分野かと思って(特定のアクションが起きたら指定した事をやらせる)実現しやすい事だと思っていました。
書いて頂いた事をコードにしてやってみます(ループなんかは全く使い方理解出来て無くて一生ループしそうで怖いのですが)。
ありがとうございました。
>>28
起動後って事ですよね。
いえ、起動時に最大化だけしてくれれば一応それで充分です。
紛らわしい書き方してすみません。

34 :名無しさん@お腹いっぱい。:2015/01/30(金) 20:37:22.97 ID:FiR08TSa0.net
いや、AHKの得意分野だし実現しやすい内容だよ
ただ君がそこにたどり着ける気がしないだけで

とりあえずここで長文全レスしてても事態は進展しないので
リファレンスのイントロダクションからその他解説まで順に読め
http://ahkwiki.net/Reference

35 :24:2015/01/30(金) 23:41:55.74 ID:bICDVRkA0.net
>>34
やっぱりそうなんですね。
土日で読んでみます。
何度もありがとうございました。

36 :名無しさん@お腹いっぱい。:2015/01/31(土) 07:57:23.98 ID:iw/y08fB0.net
>>31
・管理者権限で起動したウィンドウにフォーカス当たってるとAHKが効かない
→AHKを管理者で起動すれば効くらしい
→AHKを昇格させるとRunで起動するソフトも管理者に
→MGLで対策用の関数があったがRunAs使うためユーザー名とパスワードが必要
⇒ユーザー名とパスワードを入力しない方法があったりしないかな

知りたかったのは管理者として実行しない方法なのでAHKを管理者として実行する方法ではないです

37 :名無しさん@お腹いっぱい。:2015/01/31(土) 08:53:02.18 ID:gTibSzyx0.net
試せる環境ないので実現可能なのかわからないけど
AHKコマンドでRunAs実行じゃなく、RunAs.exeを一般ユーザ権限オプションで実行するのは?

Run, RunAs.exe /trustlevel:0x20000 〜

http://www.k-tanaka.net/cmd/runas.php

38 :名無しさん@お腹いっぱい。:2015/01/31(土) 10:43:58.59 ID:u0ve/ASt0.net
>>33
ttp://ahkwiki.net/Run
最大化して起動したいだけならこんなコマンドもあるぞ

39 :名無しさん@お腹いっぱい。:2015/01/31(土) 13:02:34.52 ID:iw/y08fB0.net
>>37
ありがとうございます、やってみました
cmdを起動させたら「管理者: cmd (○○\○○として制限された特権で実行中)」とタイトルに出ました
どうやら少し違うようです

40 :名無しさん@お腹いっぱい。:2015/01/31(土) 19:06:40.39 ID:uuQmSKf30.net
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/65
thumbremapの64bit化に挑戦しています

TP_DW=0x01000000
NumPut(TP_DW | 10 ,ibuf+4*0) ; TP_DeviceHandle,
NumPut(TP_DW | 729 ,ibuf+4*1) ; TP_PacketFingerInfo,
(中略)
DllCall("DeviceIoControl",UInt,hDev,UInt,0x80006004,UInt,ibuf,UInt,ilen,UInt,obuf,UInt,olen,UIntP,bytes,UInt,0)

この
0x01000000 | 729や 0x80006004という値はどうやって得られたものなのでしょうか?

41 :名無しさん@お腹いっぱい。:2015/01/31(土) 23:35:01.26 ID:3bXCUNEB0.net
彼が書いたはコメント少な目な最小コードなので、
API仕様読むとか、ヘッダファイル見るとか色々しないと分からない。
特にビットORで合算したものは難儀だね

42 :名無しさん@お腹いっぱい。:2015/02/03(火) 18:27:29.87 ID:iECdrNEu0.net
URLDownloadToFileを使用するときにURLエンコードをしたいのですが、AutoHotKeyでは用意されていないので他のバッチコマンドなどを使用しなくてはいけないのでしょうか?

43 :名無しさん@お腹いっぱい。:2015/02/03(火) 19:51:33.78 ID:Vc7kHo7G0.net
>>42
URIエンコード・デコード関数
http://www.autohotkey.com/board/topic/75390-ahk-l-unicode-uri-encode-url-encode-function/?p=480216

44 :名無しさん@お腹いっぱい。:2015/02/04(水) 15:25:45.79 ID:+gTLM4Q40.net
altダブルクリックのホットキー登録ができれば教えていただけないでしょうか?
その際、他のalt組み合わせのホットキーに影響が内容にしたいです。

45 :名無しさん@お腹いっぱい。:2015/02/04(水) 15:37:43.24 ID:b+uyoQlk0.net
下記の2次元の配列を作っています
DIM_1_1, DIM_5_6など。たとえば、DIM_%x%_%y%など
これらは、一般的な表記、DIM(x,y)に対応するようにしているのですが、可変長にしており
DIM_10_5までかもしれないし、DIM_5_20までかもしれません
また、DIM_10_5には代入していてもDIM_5_5には代入していないかもしれません
で、途中でこれらの配列の中身をすべてクリアしたいのです
一般的にはFORループを使って全部の要素を回るのでしょうが、AHKの場合単純に出来る方法ってありませんか
AHKでは多分、データ領域に使用している変数名とか保管しているのだと思うのですが
例えば、DIM_から始まる変数を一斉削除とか
x、yのMAXを憶えておいてループで回るしか方法はないのでしょうか

46 :名無しさん@お腹いっぱい。:2015/02/04(水) 18:40:22.63 ID:UWZMQSET0.net
>>45
変数ではなく配列・オブジェクトを使用する

DIM := Array()
; DIM := []
MsgBox % DIM[1, 1] := "a"
MsgBox % DIM[1, 2] := "b"
MsgBox % DIM[5, 1] := "c"
MsgBox % DIM[5, 2] := "d"

DIM := Array() ; 空にする
; DIM := []
MsgBox % DIM[1, 1]
MsgBox % DIM[1, 2]
MsgBox % DIM[5, 1]
MsgBox % DIM[5, 2]
Return

47 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:25:47.48 ID:b+uyoQlk0.net
>>46
ありがとうございました。それを使えば簡単にできたのですね
それは使ったことがなかったので、これを機に使ってみようと思います

48 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:35:51.80 ID:VOPHjqx/0.net

質問者じゃないけど、
DIM := Array() と DIM := Object()
の違いが分からないので教えてつかぁさい。

「Array()」の説明が何処に書いてありますか?
「ComObjArray()」の説明なら見つかったんですが・・・

49 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:38:06.18 ID:VOPHjqx/0.net
>>48
吸いません。
>>48>>46へのレスです。

50 :名無しさん@お腹いっぱい。:2015/02/04(水) 19:49:05.98 ID:6e7nMhHj0.net
>>48
http://ahkscript.org/docs/commands/

51 :名無しさん@お腹いっぱい。:2015/02/04(水) 20:17:19.44 ID:VOPHjqx/0.net
>>50
解説ページありがとうございます。
日本語じゃないのが辛いとこですが、じっくり読んでみます。

52 :名無しさん@お腹いっぱい。:2015/02/04(水) 20:23:12.28 ID:UWZMQSET0.net
>>48
どちらもオブジェクト扱いで
配列:インデックスでアクセス
連想配列:文字列をキーにしてアクセス

空のオブジェクト宣言する場合は Array() と Object() どちらでも同じだが
割り当てを同時にする場合や Array := [Item1, Item2, ..., ItemN]
誤読をさける為にも空であっても使い分けたほうがいい

http://ahkscript.org/docs/Objects.htm

53 :名無しさん@お腹いっぱい。:2015/02/04(水) 22:21:58.91 ID:VOPHjqx/0.net
>>52
レスありがとうございます。
う〜ん、使い分けするの難しそう・・・寝ます。

54 :名無しさん@お腹いっぱい。:2015/02/05(木) 13:14:04.85 ID:Swi5zNAI0.net
関数内から呼び出した関数に変数を渡すにはどうすればいいのでしょうか?

SetX(){
global trigger = A_ThisHotKey
}

!a::
SetX()
gosub msgtest
return

msgtest:
msgbox,%Trigger%
return

のようにGosubを使えばよいというのは分かったのですが

!a::
SetX()
msgtest()
return

msgtest(){
msgbox,%Trigger%
}
return

このような場合msgtest()に%Trigger%を渡すにはどうすればいいのかが分かりません

55 :名無しさん@お腹いっぱい。:2015/02/05(木) 13:55:23.76 ID:FjihlSDJ0.net
msgtest(){
global Trigger
msgbox,%Trigger%
}

56 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:07:05.56 ID:Lyo+BX4h0.net
>>41
ヘッダファイル見なおしたら読解が少し進みました
ありがとうございました

57 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:09:14.80 ID:Swi5zNAI0.net
>>55
ああ、なるほど・・・
globalってそういうふうに使うんですね
よく分かりました。ありがとうございます

58 :名無しさん@お腹いっぱい。:2015/02/05(木) 14:53:23.38 ID:QwBMHot70.net
DllCallのCreateFileが上手く動きません。
どこでもいいので空のtxtが生成されるスクリプトのサンプルをどなたか教えてください。
それとアドレスの親フォルダの指定

SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
hFile := DllCall("CreateFile", str, "FileName.txt", Uint, GENERIC_WRITE, Uint, 0, UInt, 0, UInt, CREATE_ALWAYS, Uint, 0, UInt, 0)

59 :名無しさん@お腹いっぱい。:2015/02/05(木) 15:02:27.18 ID:QwBMHot70.net
それとAHKで親フォルダ、などの相対アドレスの指定の仕方についてまとめてあるところって
ないですか?\ を使った表現と/を使った表現の使い分けがよくわかりません

60 :名無しさん@お腹いっぱい。:2015/02/06(金) 17:17:08.51 ID:SzO0EcHO0.net
アクティブウィンドウにキャレットがあるかないかを判断することはできるでしょうか?
キーボード入力できる状態かを判断して処理をするときに使いたいです。

61 :名無しさん@お腹いっぱい。:2015/02/06(金) 18:41:13.20 ID:KwnAyWU00.net
>>60
ぐぐれ
autohotkey キャレット

62 :名無しさん@お腹いっぱい。:2015/02/06(金) 19:46:08.56 ID:jqrxqYRE0.net
>>58
ttp://ahkwiki.net/FileAppend
読む

>>59
・ディレクトリの区切りは/ではなく\
・\を\\とエスケープする必要はない
・ワイルドカードはコマンドによって使えたり使えなかったり
・相対パスで指定した場合、%A_WorkingDir%を基準としたパスになる(それ以外は普通の相対パスと同じ)
・?\ を使った表現と/を使った表現の使い分けとかはない

63 :名無しさん@お腹いっぱい。:2015/02/07(土) 10:58:23.49 ID:PcAcqUqK0.net
http://www.scythe.co.jp/input-device/rakuraku-keyboard3.html

これ使ってる人いないですかね? tab shift ctrlの更に左側にカスタマイズできるキーがあってかなり便利そうなんだけど
ここにF12以降のファンクションキーとか割り当ててやったらかなり色々やれそうだけど、割り当てできないとか
そもそも同時押しできないとかだったら意味ないけど

64 :名無しさん@お腹いっぱい。:2015/02/07(土) 11:08:03.57 ID:7n9GrLO+0.net
安いテンキーにいろいろ割り当てて左側においたほうが便利そう

65 :名無しさん@お腹いっぱい。:2015/02/08(日) 00:00:41.54 ID:MpE2KH5A0.net
キーを増やしてもあくまでスペースキーの無駄な長さは堅持するんだな

66 :名無しさん@お腹いっぱい。:2015/02/08(日) 14:29:27.38 ID:dwprUX2U0.net
タッチ系のイベント(タップや各種タッチジェスチャーなど)をマウスやキーボードの任意のイベントに
変換したいのですがAHKで可能ですか?

67 :名無しさん@お腹いっぱい。:2015/02/10(火) 14:51:40.64 ID:ocJSTbwq0.net
>>64
メインのキーボードに付いてるテンキーと、後付けの単品テンキーのキーコードって区別できるの?

68 :名無しさん@お腹いっぱい。:2015/02/10(火) 17:13:14.98 ID:B7K0g39b0.net
ahkではできないね

69 :名無しさん@お腹いっぱい。:2015/02/10(火) 20:17:57.96 ID:wPE2f1vh0.net
Win10で使ってる人ここ居る?
不具合ある?

70 :名無しさん@お腹いっぱい。:2015/02/10(火) 20:31:33.00 ID:uBA0tjnZ0.net
>>69
聞く前に自分で調べろ

71 :名無しさん@お腹いっぱい。:2015/02/10(火) 21:31:23.86 ID:wPE2f1vh0.net
"ここ"に限定したつもりだったんだが理解されないらしい

72 :名無しさん@お腹いっぱい。:2015/02/10(火) 21:41:33.04 ID:hASVzjNM0.net
Win10ってまだ出てないだろ

73 :名無しさん@お腹いっぱい。:2015/02/12(木) 12:05:02.21 ID:3ZPK5N2h0.net
任意のウィンドウは非表示にしないで、そのアプリをツールバーから削除することはできるでしょうか?
Alt+Tabで出てくるアプリ一覧から消したいアプリをコントロールできればと思ってます。

74 :名無しさん@お腹いっぱい。:2015/02/12(木) 16:44:17.03 ID:LHu7oJqN0.net
Alt+tabから非表示は知っているけど
ツールバーから削除はわからんね

75 :名無しさん@お腹いっぱい。:2015/02/12(木) 17:08:57.89 ID:3ZPK5N2h0.net
>>74
ありがとうございます。助かります。
Alt+tabの消し方はどうすればよろしいでしょうか。

76 :名無しさん@お腹いっぱい。:2015/02/12(木) 17:35:06.63 ID:LHu7oJqN0.net
WinSet, ExStyle, +0x00000080, ウィンタイトル

77 :名無しさん@お腹いっぱい。:2015/02/12(木) 21:53:45.32 ID:7pISx/9U0.net
しかしスマホでahkファイル見ると文字クッキリしてほんと見易いな
普及価格帯のPCモニタがRetinaになるのっていつのことだろう

78 :名無しさん@お腹いっぱい。:2015/02/13(金) 15:13:55.26 ID:9Dlr7kMk0.net
1ウィンドウで複数分割できるエディタエリアがあるのですが、
分割したエディタエリアごとにコントロールが存在しますが、
このコントロールに対しての表示幅を設定させることはできるでしょうか?

ちなみにドラッグ・アンド・ドロップでリサイズできます。

79 :名無しさん@お腹いっぱい。:2015/02/13(金) 15:18:00.64 ID:nJaOh+nx0.net
ドラッグアンドドロップさせればいいじゃん

80 :名無しさん@お腹いっぱい。:2015/02/13(金) 18:26:35.14 ID:ZkWQvUsm0.net
どうせ答え聞き出したら、何も言わずに違う質問するんでしょ?
もう放置でいいよ

81 :名無しさん@お腹いっぱい。:2015/02/13(金) 18:41:53.10 ID:cMMQOGm10.net
回答しても返事が無いと話が終わったのか分からんし
聞き逃げは荒らしと同じだよな

82 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:22:52.74 ID:ohimDlIQ0.net
返事してお礼してもらわんと怒り出すとかw
Q&Aでいいじゃね。はっきり言ってお礼とか読んでる分には邪魔なだけだな。いらんわ

83 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:29:00.53 ID:cC4tqfrz0.net
その返しまるごとそのまま前にも見たよ
もっとがんばりましょう

84 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:40:29.58 ID:XavJxak10.net
>>82
じゃあお前が答えてやりゃいいじゃん

85 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:45:05.62 ID:ohimDlIQ0.net
>>84
今まで何度か答えてるよ
お礼を要求するとかなあ。どうでもいいw

86 :名無しさん@お腹いっぱい。:2015/02/13(金) 19:51:08.69 ID:ZkWQvUsm0.net
>>82
どこにも「お礼」とか「怒り出す」なんて書いていないよ?。
ああ、自分自身の体験談と感想を述べただけか。
自己紹介乙です。

87 :名無しさん@お腹いっぱい。:2015/02/13(金) 20:04:32.49 ID:ebVwDu0h0.net
>>85
どうでもいいw、なら黙々と答えるかスルーしろよ

88 :名無しさん@お腹いっぱい。:2015/02/13(金) 20:38:11.81 ID:bEiShX/t0.net
よく話が見えないだが、なんで急に
>どうせ答え聞き出したら、何も言わずに違う質問するんでしょ?
みたいな話になってんの?
明確な回答があったのに1日2日経っても返事がないとか、質問者が回答無視して違うレスしてるとかなら分かるんだけど

89 :名無しさん@お腹いっぱい。:2015/02/13(金) 21:00:57.42 ID:cC4tqfrz0.net
3年ROMれ

90 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:10:20.91 ID:ee8zl+on0.net
Guicontrolでいけるんでないの
やったことないけど

91 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:54:23.89 ID:WR5uCBsq0.net
13 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/01/28(水) 18:09:09.25 ID:/+bq3MWi0
スレをひと通り読めば分かると思うんだが、
「○○という処理をするにはどういうコードを書いたらできますか?」 ではダメなんだよ

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

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

92 :名無しさん@お腹いっぱい。:2015/02/13(金) 23:57:39.32 ID:bEiShX/t0.net
>>89
いや3年位はこのスレ見てると思うけど唐突に>>80が難癖つけだしたようにしか見えんのだけど

93 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:00:15.54 ID:aIDRYLzc0.net
>>80も3年くらい居るんだろう

94 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:04:57.74 ID:pCHjBVDR0.net
くれくれ君からの流れだったのか
でも質問者のレスって別に完成したスクリプトくれじゃなくて
単なる質問でそれが分からなきゃコードの書き用もないことだと思うが

神経質すぎやしないかい

95 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:33:51.21 ID:/bUlSFlq0.net
ID:bEiShX/t0
>明確な回答があったのに1日2日経っても返事がないとか、質問者が回答無視して違うレスしてるとかなら分かるんだけど
似た書き方のやつがほぼ無返答でだったのが原因

96 :名無しさん@お腹いっぱい。:2015/02/14(土) 00:35:23.57 ID:+DziXdMA0.net
また熱い週末が始まるのか

97 :名無しさん@お腹いっぱい。:2015/02/14(土) 01:03:08.93 ID:VYmByJ+W0.net
>78がクレクレかどうかは知らんけど
D&D処理なんて対象ソフトに依存しそうな内容を
具体的なソフト名も出さずに質問されても答えようがないべ

せいぜいMouseClickDragでがんばれば?としか

98 :名無しさん@お腹いっぱい。:2015/02/15(日) 07:13:36.27 ID:f7IqpmGr0.net
教えるのは自由、教えないのも自由
教えることを強要されたり、教えないことを促される謂れはない

99 :名無しさん@お腹いっぱい。:2015/02/15(日) 07:24:38.37 ID:j6vuoi2+0.net
教えることを強要してる奴も、教えるななんて言ってる奴もいないだろ
責められてんのは聞きっぱなし厨だし

100 :名無しさん@お腹いっぱい。:2015/02/15(日) 10:53:40.24 ID:mbbbBWUW0.net
唐突感はたしかに有ったなw
しかしお礼を要求してるわけじゃないだろうに
解決策となったのかどうか結果を報告しろって言ってんじゃないの?
結果がわからんのなら答える意味ないじゃんよ
だったらどんなメチャクチャな回答しても一緒じゃん
質問者の結果報告は最低限のルールだと思うけどね

101 :名無しさん@お腹いっぱい。:2015/02/15(日) 21:57:31.50 ID:TEWcej010.net
修飾キーの押しっぱなし病の回避策って貴方はどうしてますか?

102 :名無しさん@お腹いっぱい。:2015/02/16(月) 01:36:55.02 ID:VR/mERUy0.net
Qt製のアプリのコントロールを取得したいんですがいい方法ありませんか?
どうやらクロスプラットフォームを実現するためか自前でボタン等を描画しているようで…
とりあえず英語のフォーラムで似たような投稿を見かけて流れるように推されたツールを使ってみたんですが、
同アプリでもウインドウによって細かいとこまで取得できる例とペインレベルでしか取得できない例がありました
http://www.autohotkey.com/board/topic/96270-access-qt-framework-controls-qwidget-in-applications-like-vlc/
http://www.autohotkey.com/board/topic/77888-accessible-info-viewer-alpha-release-2012-09-20/

103 :名無しさん@お腹いっぱい。:2015/02/16(月) 03:34:06.41 ID:WPg1DaF/0.net
>>102
具体的にアプリは何なの?

104 :名無しさん@お腹いっぱい。:2015/02/16(月) 06:43:06.07 ID:VR/mERUy0.net
>>103
アプリはAnkiです
今のところアプリ内の機能に加えてショートカットキーやタブキーによるフォーカス移動を駆使することで
一応汚いながらも目的の操作を実現する目処は立っていますが、かなり偶然によるところも大きいので、
類例の問題に普遍的な定石があるかもしれないと思って質問させていただきました

105 :名無しさん@お腹いっぱい。:2015/02/16(月) 10:54:02.31 ID:yOFI9hS40.net
エクスプローラで選択している複数のフォルダをexeファイルにドラッグアンドドロップしたのと同じ動作をコマンドで記述するにはどうしたらいいでしょうか?

^+e::
Send ^c
Sleep 100
Run,(プログラムのパス) "%Clipboard%"

こんな感じでやってみたんですが
選択したフォルダが1つだけならうまくいって、複数選択しているとだめでした

106 :名無しさん@お腹いっぱい。:2015/02/16(月) 11:47:44.11 ID:r9mzilPV0.net
それやってからメモ帳かなんかにCtrl+Vしたら今クリップボードにどんな文字列が入ってるか分かるよ

107 :名無しさん@お腹いっぱい。:2015/02/16(月) 13:27:44.92 ID:yOFI9hS40.net
選択フォルダ内の全てフォルダを引数にして実行するのは

^+w::
Send ^c
Sleep 100
Loop,%Clipboard%\*,2,0
{
RunWait,(プログラムのパス) "%A_LoopFileLongPath%"
}

ってやってみたらいけました

>>105のクリップボードの中を見てみると
 C:\〜
C:\〜
といった感じで選択したフォルダのフルパスが1行づつ並んでました
選択フォルダだけ実行したい場合はクリップボードの文字列を1行ずつ分解して実行してあげないとだめなんでしょうか?

108 :名無しさん@お腹いっぱい。:2015/02/16(月) 14:17:55.53 ID:iRVUMR9T0.net
複数パスをコピーしたら間に改行記号が入った状態になるから
Loop, parse, clipboard, `r`n
で適当な変数に、a_loopfieldを1つずつ""で括ってから半角スペースで区切ってぶち込んで
最後にその変数をプログラムのパスに渡せばいい

109 :名無しさん@お腹いっぱい。:2015/02/16(月) 18:20:35.97 ID:yOFI9hS40.net
>>108
ありがとうございます
`r`nを取り除くのがうまくいかなくて変なやり方になりましたがいけました

^+b::
Send ^c
ccc:=
Sleep 100
Loop,Parse,Clipboard,`r`n,
{
StringLen,ddd,A_LoopField
if(ddd>5){
ccc=%ccc% "%A_LoopField%"
}
}
RunWait,(プログラムのパス) %ccc%
return

110 :名無しさん@お腹いっぱい。:2015/02/16(月) 19:11:20.66 ID:VR/mERUy0.net
しばらく触れてなかったから適当だけどStringReplaceの方が短く書けるんじゃないかな

111 :名無しさん@お腹いっぱい。:2015/02/16(月) 19:50:23.69 ID:yOFI9hS40.net
>>110
ありがとうございます
下のようにやってもいけました

StringReplace,ccc,clipboard,`r`n," ",All
ccc="%ccc%"
RunWait,(ソフトのパス) %ccc%

112 :名無しさん@お腹いっぱい。:2015/02/16(月) 20:07:41.77 ID:WPg1DaF/0.net
>>109
Loop,Parseの区切りは1文字の列挙、文字列ではない
`r`nと書くのはよくある間違え

例;
Var = AAA`r`nBBB
Loop,Parse,Var,`r`n,

`rまたは`nで区切るという意味になるので
先に書かれている`rだけにヒットして
区切り文字は消えて AAA と `nBBB になる

Loop, Parse, Clipboard, `n, `r
Loop, Parse, Clipboard, `r, `n

113 :名無しさん@お腹いっぱい。:2015/02/16(月) 20:36:11.18 ID:8Qzd8VQF0.net
その辺りの話は流行らせるページのどこらへんに書いてあるんでしょか

114 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:01:24.52 ID:yOFI9hS40.net
>>112
ありがとうございます
なんでうまくいかないのかもやもやしてました

^+n::
Send ^c
ddd:=
Sleep 100
Loop,Parse,Clipboard,`n,`r
{
ddd=%ddd% "%A_LoopField%"
}
RunWait,(プログラムのパス) %ddd%

115 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:37:14.53 ID:iRVUMR9T0.net
>>112
補足ありがと
wikiの
>特定の 文字列を区切りとしたい場合、StringReplaceで置換してから処理するとよい。
ってそういうことね
この場合>>112みたいに省略を使うか、「`r`n」をパスなんかじゃ絶対使わない「?」とかに置き換えてからloop, parse, clipboard, ? みたいにすればいいわけか

>>114
代入のとこは
ddd .= """" A_LoopField """ "
という風に書けるよ。一応

116 :名無しさん@お腹いっぱい。:2015/02/16(月) 21:59:01.76 ID:WPg1DaF/0.net
>>112
訂正
区切り文字は消えて AAA 次に`nで (空) と BBB になる

>>113
コマンドの解説に書いてある

117 :名無しさん@お腹いっぱい。:2015/02/16(月) 22:04:57.04 ID:yOFI9hS40.net
やっとフォルダの圧縮とフォルダ名のリネームを一緒にできるものができた
たったこれだけにずいぶん苦労した・・・

118 :名無しさん@お腹いっぱい。:2015/02/17(火) 02:56:42.46 ID:XBnrgtQm0.net
>>117ではないんだけど別の方法考えてみた・・・こんな感じで良いんかな?
「送る」にショートカット置いとくと便利だよね。

選択したフォルダ(ファイル)をスクリプト(のショートカット)にD&Dする方法。
%0% に引数の数が、%1%、%2%、... にそれぞれ第1引数、第2引数、... と入っているので…

count = %0%
Loop, % count
{
args .= " " . """" . %A_Index% . """"
}
MsgBox, % count "`n|" . args . "|" ;"|"は変数argsの頭にスペースが入ってるかの確認用
;run, (アプリパス)%args% ;変数argsの頭にスペースが入ってるので(アプリパス)とargsの間にスペース不要

119 :名無しさん@お腹いっぱい。:2015/02/17(火) 07:57:10.27 ID:r71IVUyv0.net
別の方法を取るならRegEXでよくね?
StringReplaceにしてもわざわざLoopで回す必要ないと思うんだが

120 :名無しさん@お腹いっぱい。:2015/02/17(火) 09:11:24.12 ID:V+F5Z/kR0.net
zip解凍したときにC:\baka\baka\cだったら自動でC:\baka\cにするにはどうすりゃいいんでしょ

121 :名無しさん@お腹いっぱい。:2015/02/17(火) 09:24:49.37 ID:r71IVUyv0.net
\c以下をC:\bakaに移動してからC:\baka\baka削除
もしくは解凍前にlist取得しサブフォルダの有無で解凍時の展開先指定を分ける
それかNoahはArchon2みたいなフォルダ自動判断作成オプションのあるアーカイバに投げる

122 :名無しさん@お腹いっぱい。:2015/02/17(火) 15:08:42.29 ID:2V+Ampb20.net
フォルダ監視という指定したフォルダ及びサブフォルダを監視して変更があったフォルダのパスを引数にしてプログラムの起動ができるソフトがあるんですが
exe化したAHKをこのソフトから実行させてます

送られてくるフォルダパスの階層や名前によって処理を分岐させたいです
ソフトに登録した監視フォルダ(ここまでのフォルダパスの長さが15だった) \ フォルダ(複数・名前バラバラ) \ 主に処理を行いたいフォルダ

aaa=%1%   ;%1%がフォルダ監視から送られた変更のあったフォルダのパス
SplitPath,aaa,,bbb   ;変更のあったフォルダの親フォルダのパスがbbbに入る
StringLen,ccc,bbb   ;親フォルダのパスの長さをcccに入れる
if(ccc>16)     ;変更フォルダが(主に処理を行いたいフォルダ)の場合
{ 実行したい処理1  }
else        :変更フォルダが監視フォルダ直下の場合
{ 実行したい処理2  }
Exit

このように変更のあったフォルダパスの親フォルダの長さでフォルダの階層を判断して分岐するようにしてみたんですが
これだと単純な分岐しかできません
フォルダパスの階層や名前を利用して分岐させるいい方法はないでしょうか

123 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:20:10.46 ID:r71IVUyv0.net
"フォルダ(複数・名前バラバラ) \ 主に処理を行いたいフォルダ" を取得して
フォルダパスの階層や名前を利用して分岐させたらいんでないの?
取得方法はSubStr()なりStringRightなりRegExなりLoop, FilePatternなりお好きなように

名称固定の任意の特定フォルダで数が膨大じゃないのならフルパスで延々if羅列してくって手もある
if (aaa = "c:\監視フォルダ\フォルダ1\サブフォルダ1")
else (aaa = "c:\監視フォルダ\フォルダ1\サブフォルダ2")
else (aaa = "c:\監視フォルダ\フォルダ2\サブフォルダ1")

初心者さんだったら変に凝るよりこっちのほうが見やすいかもね

124 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:20:39.81 ID:dz0ya1w00.net
・StrSplitなどで\を区切りに分割して上から調べる
・RegExMatchでフォルダパスを直接正規表現にかけて調べる
階層の数は\の数
おせっかいかもしれないけど変数名は有意味なものを心がけた方が後々楽だよ

125 :名無しさん@お腹いっぱい。:2015/02/17(火) 16:46:10.57 ID:8GvsVAqj0.net
>>123
>else (aaa = "c:\... ×
else if (aaa = "c:\... ○

126 :名無しさん@お腹いっぱい。:2015/02/17(火) 22:26:42.28 ID:HOb71BM20.net
ありがとうございました
StrSplitで分岐できるようになりました

aaa = %1%

bbb := StrSplit(aaa,"\")
bbb_index := bbb.MaxIndex()

if(bbb_index = 4)
{ 処理1   
}else if(bbb_index = 3)
{ 処理2
}


=じゃないとうまく代入できなかったり、:=じゃないとうまくいかなかったりの違いがよくわかりませんでしたが

127 :名無しさん@お腹いっぱい。:2015/02/17(火) 22:33:27.00 ID:dz0ya1w00.net
=の右辺はただの文字列として解釈されるから関数コールとして受け取ってもらえなくなる
bbb = bbb.MaxIndex() ⇔ bbb := "bbb.MaxIndex()"
まあ俺も最初躓いたとこ

128 :名無しさん@お腹いっぱい。:2015/02/18(水) 20:11:21.57 ID:lW/JiRbG0.net
AutoHotKeyは、=の扱いがほんと腹立ったな、最初の頃は
ほかに間違えるとこはif分のところ
if( a = b ) と
if a = b
とか

129 :名無しさん@お腹いっぱい。:2015/02/18(水) 21:08:23.11 ID:gMlFSxgW0.net
式を前提とした代入が:=、文字列を前提した代入が=、
ifに関しても、括弧有りが式による比較、括弧無しが文字列比較、と分けられているのはややこしいというか無駄な仕様というか・・・

結局混乱するので全て式用の表記に統一しちゃってるわ

130 :名無しさん@お腹いっぱい。:2015/02/18(水) 21:34:32.32 ID:FYP9fX6k0.net
過去スレに有ったかと思うが、コマンドライン引数を代入する時に「:=」使っちゃうとハマる

131 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:38:48.91 ID:9ijZhGRt0.net
式とリテラルの概念が分からないと混乱するよな
objectや関数を他言語と同様に扱えるのに
コマンドの引数の取り方のデフォルト仕様が式的ではないのが一番混乱させる原因だと思う
しかも中には%「半角スペース」使わなくても引数に式を取れるものとかあってさらにカオス

132 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:43:05.07 ID:NRWxyKJQ0.net
一度覚えてしまえばそれだけなのでべつに

133 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:44:16.56 ID:Sod5g+AB0.net
時間を空けるとリハビリで覚えなおしの模様

134 :名無しさん@お腹いっぱい。:2015/02/18(水) 23:53:02.74 ID:Sod5g+AB0.net
そんなことよりホットストリングに全てのキーが使えるようにしてほしい
:*:ahk{Up}::とかで発動ができないのって必要な制限なんかね

135 :名無しさん@お腹いっぱい。:2015/02/19(木) 01:58:31.84 ID:rs7Tq1S30.net
今まで使ってなかったinputboxが便利でびっくりした
なおahkの文法はクソ

136 :名無しさん@お腹いっぱい。:2015/02/19(木) 02:04:42.17 ID:kSU91TvR0.net
InputBoxでググらせてるで。Shift + スペースや

+Space::
InputBox, OutputVar, Google, , , , 100
If (ErrorLevel != 1) && (OutputVar != "")
Run, https://www.google.co.jp/search?q=%OutputVar%
Return

137 :名無しさん@お腹いっぱい。:2015/02/19(木) 09:21:14.15 ID:5m5ma5DE0.net
>>136
Send,^c と組み合わせてDefaultに%Clipbord%指定すると更に便利やで

AHKの文法はBASICライクからオブジェクト系へ進化してきた過程があるので
リアルタイムにバージョンアップ追ってたに人間としてはできること増えてって楽しかった
後から入ってきた人がわけわか状態なのは認める

138 :名無しさん@お腹いっぱい。:2015/02/19(木) 10:25:03.91 ID:bUkt8qgu0.net
ブラウザで文字列選択するとその文字で
 googleでweb検索
 everythingでファイル検索
 指定場所にフォルダ作成
みたいなメニューでも出せたらちょっと便利そう
 

139 :名無しさん@お腹いっぱい。:2015/02/19(木) 15:40:08.83 ID:40fGOYxJ0.net
わりと楽にできるからリファレンス読もう

140 :名無しさん@お腹いっぱい。:2015/02/19(木) 21:53:11.94 ID:V13vIi6l0.net
マウスがデスクトップのみにいる場合って言うのを検出することってできますかね?

*Lbutton::
If winactive("ahk_class WorkerW")

だと色々巻き込んで困ってます

141 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:35:04.88 ID:40fGOYxJ0.net
マウスのことはMGLスレに行こう

142 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:51:12.46 ID:V13vIi6l0.net
ちゃうねん。MGLの話やないねん。

143 :名無しさん@お腹いっぱい。:2015/02/19(木) 22:55:57.30 ID:VHYgiOca0.net
マウスに関する条件を設定するのだから
マウスに関するコマンドが必要だろうことは俺にでもわかる

144 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:01:29.17 ID:V13vIi6l0.net
それがそうでもないねん。
SPY走らせてもタイトル空欄なんだよね。空欄指定なんてできるの?

145 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:16:33.94 ID:HJPdcuZ+0.net
>>144
ところでデスクトップのclass名はWorkerWで合ってるのかい

146 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:17:53.04 ID:V13vIi6l0.net
ahk_class WorkerW
ahk_exe explorer.exe

SPY上では間違いなさげ。うーむ

147 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:20:22.11 ID:bUkt8qgu0.net
どこぞで拾ってきたWheelScroll.ahkというフォーカスなくてもマウスカーソルのあるソフトをスクロールできるっていうスクリプト
仕組み知らないで使ってたけど覗いてみたらMouseGetPosとか使ってマウスカーソルの位置調べてゴニョゴニョしてる感じだった

148 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:31:16.92 ID:bUkt8qgu0.net
wikiのMouseGetPosのページ
http://ahkwiki.net/MouseGetPos

ここ見たらMouseGet PosのOutputVarWinにマウスの下のウインドウバンドルが格納されるとか
んでもってahk_id %OutputVarWin%とでもすればそのウインドウを指定することができるって書いてた

これを利用すればマウスがデスクトップ上なのかの判断ができるんじゃないかな
やったことないからわかんないけど

149 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:41:27.96 ID:pHWd2a9S0.net
>>146
デスクトップのアクティブを判断するなら以下全部処理する必要がある

■デスクトップのクラス2種類
*Aero有効時に「デスクトップの表示」 → ahk_class WorkerW
*デスクトップアクティブ → ahk_class Progman

■スタートバー関連
ahk_class Button
ahk_class Shell_TrayWnd
ahk_class DV2ControlHost

150 :名無しさん@お腹いっぱい。:2015/02/19(木) 23:44:33.93 ID:kSU91TvR0.net
俺も適当に考えたけど
GetDesktopWindowからのWindowFromPointってのはどう

151 :名無しさん@お腹いっぱい。:2015/02/20(金) 14:07:49.03 ID:Xtz/WPbj0.net
デスクトップフォルダを認識はできたが、”デスクトップ”そのものを一律処理は不可能っぽい

なんでこんな重要なもん歯抜けになってるんだろう

152 :名無しさん@お腹いっぱい。:2015/02/20(金) 15:59:43.47 ID:5BJcX8IP0.net
>>149を全てではないが考慮して書いてみたけど、
一応デスクトップがアクティブで尚かつマウスがデスクトップ上
にいるかどうかは判断できてると思う。
(間違いや不足箇所有ったら各自修正して)

#Persistent

SetTimer, UnderMouseWindowTitle, 500
Return

UnderMouseWindowTitle:
MouseGetPos, , , HWND
WinGetTitle, Title, ahk_id %HWND%
WinGetClass, Class, ahk_id %HWND%
if winactive("ahk_class WorkerW") || winactive("ahk_class Progman") {
if (Class != "Shell_TrayWnd") && (Class = "WorkerW" || Class = "Progman" ) {
Tooltip, ○○○DeskTop Active○○○`n○○○Mouse On DeskTop○○○`n`nWindowTitle : %Title%`nWindowClass : %Class%
} else {
Tooltip, ○○○DeskTop Active○○○`nXXXMouse On Not DeskTopXXX
}
} else {
if (Class != "Shell_TrayWnd") && (Class = "WorkerW" || Class = "Progman" ) {
Tooltip, XXXDeskTop Not ActiveXXX`n○○○Mouse On DeskTop○○○
} else {
Tooltip, XXXDeskTop Not ActiveXXX`nXXXMouse On Not DeskTopXXX
}
}
Return

153 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:12:19.46 ID:sLWcS7Kn0.net
DstngshAWin.ahk
テンプレの専用うpろだにあげました。


ActiveWindowを指定した色で縁取りし強調するスクリプト。
かざぐるにあったというあれ(だと思う。ユーザーじゃないから分からないけど)

基幹部分をhttp://www.autohotkey.com/board/topic/29197-drawing-a-rectangle/の#7、Lexikosさんの投稿から拝借しました。
DllCall、構造体などほとんど理解せずに使っているので不具合があるかもしれません。その点をご理解のうえ、自己責任でご利用下さい。
おかしな部分があれば、ご指摘、修正してもらえると嬉しいです。

154 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:14:15.07 ID:5BJcX8IP0.net
>>140
>色々巻き込んで
今更だけど、具体的にどうなるのか?
後、スクリプトは省略しないで該当個所全て公開した方が解決早くなるよ。

155 :名無しさん@お腹いっぱい。:2015/02/20(金) 16:39:09.47 ID:c1cLUlZ70.net
だからみんな相応のレスだけ返してるというのに

156 :名無しさん@お腹いっぱい。:2015/02/20(金) 17:43:54.17 ID:/C7hGgoB0.net
>>140
勘違いレスかもしれんけど、これじゃあかんのけ?

GroupAdd, Desktop, ahk_class WorkerW
GroupAdd, Desktop, ahk_class Progman
GroupAdd, Desktop, ahk_class Shell_TrayWnd
GroupAdd, Desktop, ahk_class Button
GroupAdd, Desktop, ahk_class DV2ControlHost

#If MouseIsOverDesktop("ahk_group Desktop")
LButton::
msgbox, おk
return
MouseIsOverDesktop(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}return
#If

esc::exitapp

157 :名無しさん@お腹いっぱい。:2015/02/20(金) 19:04:20.74 ID:sLWcS7Kn0.net
>>153
微妙に修正
・WM_ERASEBKGND()中、オーバーラップGui以外がブラシで黒塗りされるのを防ぐ条件追加
・MntAWin_DstngshAWin()中、activeWinの状況が変わってない時に無駄に幅/高さ計算をしないように記述の順を変えた

158 :名無しさん@お腹いっぱい。:2015/02/21(土) 02:53:05.19 ID:DTA7MJKs0.net
いろいろ自動化させてくのが楽しくなってきた

159 :名無しさん@お腹いっぱい。:2015/02/21(土) 14:14:12.56 ID:kSgKqp7n0.net
>>153
微修正
・#Include先で管理しやすいように起動switchを関数化
・スクリプト起動時に自動で強調表示を実行するかどうかの設定追加
・windowのmarginをコマンドで取得するように変更
・ダイアログ系のwindowがactiveな時にも縁取りのサイズ、位置が合うように調整
・誤字等修正

160 :名無しさん@お腹いっぱい。:2015/02/22(日) 18:19:55.09 ID:jyGGQ7Ij0.net
Loop (ファイル検索)の条件を複数設定することってできますか?

Loop , C:\hoge\*.zip , 0 , 1
でhogeフォルダ内の拡張子がzipのファイルを探すというものに*.rarや*.lzhなど他の条件でもヒットさせたいです

Loop , C:\hoge\*.* , 0 , 1
{
check := 0 ;条件に合うかどうかに使う

if A_LoopFileExt=zip ;A_LoopFileExtは拡張子
{
check := 1
}else if A_LoopFileExt=rar
{
check := 1
}else
{
check :=0
}

if(aaa=1)
{
処理
}
}

こんな感じで一個一個if文で条件に合うかチェックするように並べていったんですがすごく長くなってしまって

161 :名無しさん@お腹いっぱい。:2015/02/22(日) 18:23:40.75 ID:CoGp3yp80.net
if A_LoopFileExt not in zip,rar,lzh
 Continue

162 :名無しさん@お腹いっぱい。:2015/02/22(日) 19:05:33.94 ID:jyGGQ7Ij0.net
ありがとうございます
だいぶコンパクトになりました

Loop , C:\hoge\*.* , 0 , 1
{
  if A_LoopFileExt not in zip,rar,lzh,7z,tar ;A_LoopFileExtは拡張子
{
Continue ;ループの残りの処理をスキップして次の回に進む。
}

処理
}

163 :名無しさん@お腹いっぱい。:2015/02/22(日) 20:14:43.60 ID:GECiWek60.net
>>162
今回はそれで解決したようですが、複数比較でよくやる方法です
^s::
InputBox, chk
ext1=zip
ext2=rar
ext3=lzh
ok=
loop,3
{
if( chk=ext%A_INDEX% )
{
ok=1
break
}
}
if( ok )
MsgBox, あたり!
else
MsgBox, はずれ!
return

164 :名無しさん@お腹いっぱい。:2015/02/22(日) 20:18:18.71 ID:GECiWek60.net
タブのところにスペースをたくさん入れたのですがつぶれて見づらくなってすいません
Janeなんだけど、タブ設定ってどこかにあるのかな

165 :名無しさん@お腹いっぱい。:2015/02/23(月) 09:02:21.73 ID:xf0ye1ay0.net
>>163
質問者の意図はループ内判定をコンパクトにしたい、なので多重ループ薦めるのは違うと思う
つか毎回言われてるけどさ解決後の別提案はよりスマートさが求められるんだから
蛇足になるコードなら貼らないほうがいいかと
タブや複数スペースは省略されるのはhtmlの基本的な表示仕様
可視性重視なら全角スペース使う


あとどうせLoop使うなら後のメンテ考慮して回数固定Loopよりテーブル参照にするほうがベター
チェック項目増減で手直しが必要になった時にLoop回数直し忘れバグを回避できる
exttbl := "zip,rar,lzh"
Loop, Parse, exttbl, CSV
{
 if (chk == A_LoopField) {
  ok=1
  break
 }
}

166 :名無しさん@お腹いっぱい。:2015/02/23(月) 21:47:31.00 ID:qSCWuGR30.net
>>164
専ブラよるかもだが
タブもスペースもポップアップ表示すれば普通に見えるから俺は気にしてないし
余計な整形しないでそのままエディタからコピペしてくれる方が
専ブラでレスコピペすればそのまま使えるから楽だったりする

167 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:32:28.67 ID:S062+pLv0.net
圧縮ファイルを全部解凍してフォルダやファイルがいろんな階層に分かれている時に
図のようにフォルダを移動して空のフォルダは削除してくれるものを作ってます
http://i.imgur.com/LxIyzHm.jpg

これの処理手順を大雑把にまとめた図がこれです
http://i.imgur.com/9O7JVTr.jpg

フォルダの移動や削除があったらもう一回実行させるようにたいのですが
図の一番下のflagが1だったら一番上まで遡るというのはどう記述すればいいんでしょうか
あとここはこうしたほうがいいみたいなアドバイスあったら教えてください

168 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:37:26.96 ID:qbnfPZSw0.net
もうそこまで出来てるならそのまま作ればいいじゃないか……
IF分岐でいいじゃないか……

169 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:44:02.88 ID:S062+pLv0.net
間違ってた
http://i.imgur.com/4SRQoJk.jpg

170 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:50:53.72 ID:xf0ye1ay0.net
whileループでいいんでね
gotoで強制的に飛ばす方向もあるけどおすすめはできない

171 :名無しさん@お腹いっぱい。:2015/02/23(月) 22:57:00.08 ID:kLXHiHRG0.net
>>167
フラグ使う必要ない
処理をLoopしてマッチしなかったらBreakで抜けるだけでいい

172 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:06:11.04 ID:jzF3IPgQ0.net
すげー特殊な整理だな。何に使うんだそんなもん
てか、そんなフローチャートが書けるのになんでgotoやwhileの発想がないんだよ

173 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:35:19.44 ID:S062+pLv0.net
Whileというものを使うとこんな感じになりますかね
http://i.imgur.com/xfULiIc.jpg

174 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:38:25.77 ID:YhL83HVM0.net
むしろ再帰呼び出しを使ったほうがいいんじゃないかと思ったけど書くと伝えるのが面倒だなw

175 :名無しさん@お腹いっぱい。:2015/02/23(月) 23:59:02.41 ID:jzF3IPgQ0.net
端的には「○―ファイル」を見つけたらルートディレクトリに放り込む作業だと思うけど
これ例えば図示されているところのフォルダ2とフォルダ4が同名だったらどうすんの?

176 :名無しさん@お腹いっぱい。:2015/02/24(火) 00:03:54.74 ID:2ZBvdUPG0.net
なんだこれ。「こうですか?わかりません(><)」かよ

177 :名無しさん@お腹いっぱい。:2015/02/24(火) 00:12:20.63 ID:SHiP5LLE0.net
まあ悪いことは言わないから重複を削除するのはルートディレクトリだけにしとけ
階層化も空ディレクトリも大抵はちゃんとした意味付けがあるんだから

178 :名無しさん@お腹いっぱい。:2015/02/24(火) 01:17:54.21 ID:4mbI6FcF0.net
>>167のやつ
うーん (2)とか付けたやつが残ってびみょい

FileSortEx("TestDir")

FileSortEx(dir, pdir = "") {
 if (pdir == "")
  pdir := dir
 Loop % dir "\*", 2
 {
  dst := pdir "\" (dir == pdir ? A_LoopFileName : AddNumber(pdir, A_LoopFileName))
  FileMoveDir, % A_LoopFileFullPath, % dst
  %A_ThisFunc%(dst, pdir)
  FileRemoveDir, % dst
 }
}
AddNumber(dir, name) {
 str := name
 while (FileExist(dir "\" str))
  str := name "(" A_Index +1 ")"
 return str
}

179 :名無しさん@お腹いっぱい。:2015/02/24(火) 01:50:46.97 ID:iOoVODGH0.net
フローチャートって未だに教えてる所あるのかな?
大昔は役に立ったのだろうけどなぁ

180 :名無しさん@お腹いっぱい。:2015/02/24(火) 02:52:01.29 ID:ljxVpbkU0.net
>>170
ありがとうございました

181 :名無しさん@お腹いっぱい。:2015/02/25(水) 02:19:03.63 ID:zmRXvEXI0.net
こんな感じで指定ディレクトリ以下のファイル/フォルダを正規表現リネームできないもんでしょうか

TargetDir = 指定ディレクトリ
SWord = 検索
RWord = 置換

Loop, %TargetDir%\*, 1
{
NewFileName := RegExReplace(A_LoopFileName, "%SWord%", "%RWord%")
FileMove, %TargetDir%\A_LoopFileName, %TargetDir%\NewFileName
}
return

182 :名無しさん@お腹いっぱい。:2015/02/25(水) 03:15:57.49 ID:tHX3bWHr0.net
Wind7でAHK L 最新版を使ってます
最近includeのエラーが表示されるようになったんですがそういう人他にいませんか?
PC起動直後にスタートアップに登録したAHKスクリプトが自動で起動するようになってますが、起動直後にこのエラーがでてきます。原因わかりませんかね?

---------------------------
XXX.ahk
---------------------------
Error at line xxx

#Include file "XXX.ahk" cannot be opened.

The program will exit.
---------------------------
OK
---------------------------

こんな感じのエラー文が表示されます ただincludeで読み込んだファイルは問題なく動いていますしエラーもないです。
アクセス権限の設定かなにかですかね?

183 :名無しさん@お腹いっぱい。:2015/02/25(水) 03:24:39.55 ID:8mDVU2BC0.net
>>181
サブフォルダも検索対象にする
ttp://ahkwiki.net/LoopFile

関数は式で変数は展開される”で囲うと文字になる
RegExReplace(A_LoopFileName, SWord, RWord)

184 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:01:58.40 ID:8mDVU2BC0.net
>>182
情報不足ですかね
スタートアップで問題発生、それ以外だと?
起動タイミングでもずらしたら?

185 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:07:00.19 ID:zmRXvEXI0.net
>>183
コマンドによってくくったりくくらなかったりめんどいですね……
FileMoveのとこでA_Loop~~~を%でくくらないといけなかったり

186 :名無しさん@お腹いっぱい。:2015/02/25(水) 04:23:37.96 ID:tHX3bWHr0.net
>>184
それ以外だと起きないです
起動タイミングはもともとずらしていたんですがそれをやめてみてもやっぱりおきました

今色々見てますがどうにもなおりませんね

187 :名無しさん@お腹いっぱい。:2015/02/25(水) 06:23:33.08 ID:fwbH05yW0.net
>>185
関数は式なので(変数を前提としているので)パーセントは不要
それ以外のコマンドは文字列を前提としているのでパーセントが必要

と覚えて覚えておけばいいよ

188 :名無しさん@お腹いっぱい。:2015/02/25(水) 08:17:45.30 ID:p0w6yd+10.net
>>186
XXX.ahkのxxx行目に何が書いてあるのかの確認はしてみた?
起動時以外は起きないならとタカくくってると案外単純ミスだったりすることもあるかもよ

189 :名無しさん@お腹いっぱい。:2015/02/25(水) 08:40:26.71 ID:+Q2iDrRA0.net
たぶん関数の意味も分かってないと思われる
カッコ付いてるのが関数

190 :名無しさん@お腹いっぱい。:2015/02/25(水) 14:38:21.16 ID:zmRXvEXI0.net
>>187
なんとなーくわかったようなわかってないんだろうなぁというような感じです
>>183さん>>187さん>>189さんありがとうごさいました

191 :名無しさん@お腹いっぱい。:2015/02/25(水) 22:38:46.16 ID:tHX3bWHr0.net
>>188
書いてあるのは確認しましたが今まで普通に動いていた普通のahkスクリプトです

ためしにDドライブ直下に中身を書き換えてinclude記述だけしたahkファイルとincludeされるahkファイルを一つづつ置いて
スクリプト起動してみましたがやっぱりこのエラーがでます HDDに障害がでてるのかもしれないので
正常な外付けにその2つのファイルを置いて同じことをしてみましたが同じエラーがおきました

192 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:46:30.99 ID:SFRIynUs0.net
自分自身で解決したいのか、第三者の協力を仰ぎたいのかどっちなんだろう?
もし後者だとしたら情報少なすぎ。(エスパーでもしろってことかい?)

193 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:54:45.78 ID:c3Q7mLsl0.net
Menuで作ったコンテキストメニュー的なものをwindows標準の右クリックのコンテキストメニューに追加することってできますか?

194 :名無しさん@お腹いっぱい。:2015/02/25(水) 23:59:36.25 ID:c3Q7mLsl0.net
あ…
Menuの表示させる位置をいじれば
同時に表示できないこともないのかな

195 :名無しさん@お腹いっぱい。:2015/02/26(木) 00:08:10.07 ID:NBAhg0g00.net
>>193
メニュー専用ahkをレジ登録する方法ならこれ
http://ameblo.jp/ana78001/entry-11385138954.html

ahk起動中だけ動的にコンテキストに割り込む方法は知らん

196 :名無しさん@お腹いっぱい。:2015/02/26(木) 02:53:37.92 ID:KfMCblY+0.net
>>192
エスパーってのがどういう意味かよくわかりませんがとりあえず
こういうことって結構起きてるのかどうか確認したかったのが一番ですが

とりあえずこういうことは普通おきることじゃないみたいなんでリカバリーかけましたわ
そしたら直りました どうもでした

197 :名無しさん@お腹いっぱい。:2015/02/26(木) 15:35:53.68 ID:hPfQF5nl0.net
スレチかなぁとも思うのですが、質問させて下さい。
AHK でディスプレイの電源状態を取得したいと考えています。
以下のスクリプトはノート PC 等の内蔵ディスプレイには正常動作していますが、
HMDI で接続したディスプレイのオンオフ状態は取得しません。
これを何とかしたいと思っています。

hDisp := DllCall("CreateFile", "Str", "\\.\LCD", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 0, "UInt", 0, "Ptr")
DllCall("GetDevicePowerState", "Ptr", hDisp, "IntP", stat)
DllCall("CloseHandle", "Ptr", hDisp, "Ptr")
Msgbox % stat ? "Display On" : "Display Off"

Microsoft MSDN を調べてみたりもしましたが、基本的に門外漢のため
有用な情報に辿りついていません。どなたかアドバイスいただけると幸いです。

198 :名無しさん@お腹いっぱい。:2015/02/26(木) 18:57:40.93 ID:XuDz4mCU0.net
>>197
スレチじゃないが環境ぐらいは書こう。
以下Win7x64で動作確認、ハードウェアのスイッチは検出できない

; ディスプレイの電源状態を検出
; http://msdn.microsoft.com/en-us/library/aa373195(v=vs.85).aspx
; http://msdn.microsoft.com/en-us/library/aa372723(v=vs.85).aspx
; http://www.autohotkey.com/forum/topic67426.html
; https://code.google.com/p/automatedme/source/browse/AutoHotKey/Screen+Off+Event.ahk

OnExit, ExitSub
Gui, +LastFound
hRecipient := WinExist()
GUID_MONITOR_POWER_ON_GUID := "{02731015-4510-4526-99e6-e5a17ebd1aea}" ;GUID_MONITOR_POWER_ON
VarSetCapacity(GUID_MONITOR_POWER_ON, 16, 0)
DllCall("ole32\CLSIDFromString", "UInt", &GUID_MONITOR_POWER_ON_GUID, "UInt", &GUID_MONITOR_POWER_ON)
hMonitorNotify := DllCall("RegisterPowerSettingNotification", "UInt", hRecipient, "UInt", &GUID_MONITOR_POWER_ON, "UInt", 0)
OnMessage(0x0218, "WM_POWERBROADCAST") ;WM_POWERBROADCAST = 536 (0x218)
Return

ExitSub:
DllCall("UnregisterPowerSettingNotification", "UInt", hMonitorNotify) ; Unregisters the power setting notification.
ExitApp
...

199 :名無しさん@お腹いっぱい。:2015/02/26(木) 18:58:17.59 ID:XuDz4mCU0.net
/*
lParam+16+4 is the address of POWERBROADCAST_SETTING's Data
member which is the current monitor state

GUID PowerSetting: size 16
DWORD DataLength: size 4

0x0 = The monitor is off.
0x1 = The monitor is on.
*/
WM_POWERBROADCAST(wParam, lParam, msg, hwnd) {
monitorState := NumGet(lParam + 16 + 4, "UChar")
if (monitorState == 0)
MsgBox OFF
else
MsgBox ON
}

F1:: ; モニターOFF
SendMessage, 0x112, 0xF170, 2,, Program Manager
Return

ESC::
ExitApp

200 :名無しさん@お腹いっぱい。:2015/02/27(金) 02:21:23.00 ID:S1w84vHl0.net
imagesearch用の素材画像作りを楽にするために
欲しい部分の左上でボタン押す→右下でボタン押す
その部分で囲まれた画像をbmpで保存
こんなのがほしい

201 :名無しさん@お腹いっぱい。:2015/02/27(金) 07:06:24.64 ID:WfUIXhGZ0.net
枠ならGui,+/-Optionで作れる

202 :名無しさん@お腹いっぱい。:2015/02/27(金) 07:19:27.81 ID:gSDfUsc+0.net
raptureとか使えば

203 :名無しさん@お腹いっぱい。:2015/02/27(金) 10:21:40.12 ID:vWotzIX00.net
Bandicamとか使う

204 :197:2015/02/27(金) 12:07:34.60 ID:dOnDdzOq0.net
>>198 大変失礼しました。
HMDI 環境は Windows 10 preview x64 です
(正常動作しているノートPC は複数あって、いずれも Win 8.1 x64)
また提示していただいたスクリプト、上記 Win 10/HMDI 環境で正常動作しました。
ハードウェア的オンオフでなく、ソフトウェア的オンオフ (スクリーンセーバー的なモノ)
の状態を知りたいので、今回紹介していただいたスクリプトが大変参考になりそうです。
本当にありがとうございました。少し挑戦して、また分からないことがあったら
ご教示下さい。

205 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:13:25.75 ID:S1w84vHl0.net
avastさんがexeに変換したスクリプトをことごとく削除してくる・・・

206 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:25:28.09 ID:OeH8CZWE0.net
UPX圧縮OFFにしてもだめ?

207 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:37:02.81 ID:S1w84vHl0.net
Ahk2ExeのBaseFileをDefaultからANSI 32-bitに変えてみたら出てこなくなった・・・

208 :名無しさん@お腹いっぱい。:2015/02/27(金) 16:39:20.01 ID:C1XlgZHA0.net
>>200
http://www.autohotkey.com/board/
検索語を「Capture」にして検索したら
Capture screeshots with a nice GUI (and IrfanView) - Scripts - AutoHotkey Community
http://www.autohotkey.com/board/topic/4980-capture-screeshots-with-a-nice-gui-and-irfanview/?hl=%20capture
というページ見つけたが、「Easy Copy AHK.ahk」というスクリプトは外部ソフト(IrfanView)を使うものであった。

imagesearch使うスクリプトは常駐させてはいるが、それ用の素材作るのは個人的には[IrfanViewでキャプチャー] + [編集保存]で十分だな。

209 :名無しさん@お腹いっぱい。:2015/02/27(金) 20:45:03.97 ID:+Kww4BIn0.net
>>205
*スクリプトの文を誤検出
*AHK本体やコンパイルスクリプトを誤検出

Avast!のログを見る
Avast!の設定でAHKディレクトリを除外
空のファイルをEXEにしてみる
それでも駄目ならAvast!に誤検出報告送る

210 :名無しさん@お腹いっぱい。:2015/02/27(金) 21:03:10.42 ID:C1XlgZHA0.net
>>208だけど、>>208で貼った同URLページの中ごろに 172x という人が作った全く別のスクリプトもあり、
ちょっと改造したらうまく動いたので改造部分だけ書いとくけど、これもIrfanViewを利用するタイプ。
ドラッグで指定した矩形範囲を、指定したフォルダにどんどん保存していくものなので、おそらく>>200の理想に一番近いかも。

Alt & Lbutton::

(中略)

file_name := GetFileName(Folder, "SCR", "JPG") ;ここを、"JPG" → "BMP" にすればBMP形式で保存される
;TakeScreenShot(irfanviewPath, file_name, MX, MY, MXend, MYend, 0)
; ↑ を ↓ のように変更
TakeScreenShot(irfanviewPath, file_name, MX, MY, MXend-MX, MYend-MY, 0)
}
Return

211 :名無しさん@お腹いっぱい。:2015/02/28(土) 02:00:45.43 ID:fi17g8G40.net
ビットマップだけならWin32APIだけで保存できないこともなく
DCやDIBセクションを作ってそこにBitBltで転写したあとDIBのバイナリをWriteFileで保存すればいい

212 :名無しさん@お腹いっぱい。:2015/02/28(土) 10:39:04.06 ID:5BLPatPM0.net
左上を、Aホットキー、右下をBホットキーでBキーを押した瞬間画面全体をスクリーンショットでキャプチャーさせたあと
A,Bホットキーで保存しておいた左上、右下の座標で切り出すスクリプト作ったらいいんじゃね
切り出すのは外部のソフトでImageMagickのコマンド系使ってもいいしなんでもあるだろ

213 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:10:11.99 ID:w2cRL2ia0.net
AHKだとFunc("関数名")で文字列からMy関数呼び出せて超便利だけど、クラス関数だけどうやっても呼び出せない
みんなFuncはグローバル関数専用で使ってんのかな

214 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:16:35.71 ID:7jW9ns/y0.net
スレ汚しすいません。
ID:C1XlgZHA0 す。
>>208>>210を大幅に変更してみますた。
見づらいかも知れませんが変数名も変えてます。
以前はドラッグの方向が左上→右下のみ正常動作してましたが、
全方向正常に動くようになってると思います。
>>211の方法は分からないので、irfanviewを使用してます。

GetFileName関数についてですが、保存フォルダ内に画像が大量に有ると
処理に時間が掛かると思われるんですが、現実的には作っても
数十〜数百位だから気にする必要ないですかね?
それか、良い案有りますか?

次レス以降にスクリプト貼ります。(長いので分割します)

215 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:17:33.72 ID:7jW9ns/y0.net
irfanviewPath := "(インストパス)\i_view32.exe"
SaveFolder := TEMP . "\CaptureImage" ;テンポラリフォルダ内にフォルダ作成
SaveImage_Pre := "SCR"
SaveImage_Ext := "bmp"

goto, TakeScreenShot_end

TakeScreenShot(AppPath, FileName, x_start, y_start, width, height) {
Send, {PRINTSCREEN}
RunWait, "%AppPath%" /clippaste /crop=(%x_start%`,%y_start%`,%width%`,%height%) /convert="%FileName%", , hide
}

GetFileName(FolderPath, FilePrefix, FileExt) {
FileNoCount := 0
Loop, {
FileNoCount++
Tmp_FileName := FolderPath . "\" . FilePrefix . FileNoCount . "." . FileExt
} until ! FileExist(Tmp_FileName)
return Tmp_FileName
}

216 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:20:48.75 ID:7jW9ns/y0.net
#x:: ExitApp
Alt & Lbutton::
if ! FileExist(SaveFolder) { ;画像の保存場所が存在しなければ作成する
FileCreateDir, %SaveFolder%
}
CoordMode, Mouse, Screen
MouseGetPos, start_X, start_Y
Gui, 1:Color, EEAA99
Gui, 1:+Lastfound
WinSet, TransColor, EEAA99
Gui, 1:-Caption +Border
Loop, {
MouseGetPos, end_X, end_Y
crop_width := abs(start_X - end_X)
crop_height := abs(start_Y - end_Y)
If (start_X < end_X) {
crop_X_start := start_X
} Else {
crop_X_start := end_X
}
If (start_Y < end_Y) {
crop_Y_start := start_Y
} Else {
crop_Y_start := end_Y
}
Gui, 1:Show, x%crop_X_start% y%crop_Y_start% w%crop_width% h%crop_height%
} until ! GetKeyState("LButton", "P")
Gui, 1:Destroy
SaveImageName := GetFileName(SaveFolder, SaveImage_Pre, SaveImage_Ext)
TakeScreenShot(irfanviewPath, SaveImageName, crop_X_start, crop_Y_start, crop_width, crop_height)
Return
TakeScreenShot_end:

217 :名無しさん@お腹いっぱい。:2015/02/28(土) 12:22:48.58 ID:7jW9ns/y0.net
以上です。
説明のコメント少なくてすいません。
最後に、スレ汚しすいませんでした。

218 :名無しさん@お腹いっぱい。:2015/02/28(土) 14:30:30.52 ID:z8Z8inyf0.net
>>217
長過ぎるときはこれ >>1
> 簡易スクリプト掲示板
> http://pastebin.com/

コメントが無いので処理の把握が面倒

関数の書く位置がおかしい、先に書く必要ない
Returnの下にまとめて書けばいい
gotoが謎

単純な一行ifなら三項演算子にした方が見やすい
代入も含めて1行で済む hoge := (1 < 0) ? 1 : 2

FileNoCount → A_Index
Tmp_FileNameに代入しないでFileExistの中で連結したほうが処理が減る
処理速度は自分で計ればわかる A_TickCount - A_TickCount

219 :名無しさん@お腹いっぱい。:2015/02/28(土) 14:32:55.78 ID:UwDvAnBB0.net
これとAUTOIT3の違いって何ですか?

220 :名無しさん@お腹いっぱい。:2015/02/28(土) 15:29:12.72 ID:PGQVCLd20.net
詳しくなっていくにつれて
以前書いたスクリプトのアラに気が付き
修正し始める、のループ

効率をあげるためにAHK使い始めたのにAHKのスクリプト書いてる時間のほうがながいきがしてきた

221 :名無しさん@お腹いっぱい。:2015/02/28(土) 15:52:06.68 ID:7jW9ns/y0.net
>>218
説明コメントの件はすいません。
元々のスクリプトは>>208に貼ったページに書かれてあった他人(172x)のもので、
元々のスクリプトにもコメントがないんです。

関数の位置が上に来てるのは分割レスするのにキリの良いところで区切ろうとすると
こういう区切り方にするしかなかったのです、見づらくてすいませんでした。

goto, TakeScreenShot_end
 (中略)
TakeScreenShot_end:
はいつものクセでこうしてます。
これで、(中略)部分にサブルーチンのラベルがあった場合でも
スクリプト起動時に実行してしまうのを防止してくれます。
「return」でも良いのでしょうけど、何か分かりにくいので「goto」使ってます。

ご指摘の所は今後気を付けます。
また、色々と分かりやすい解説ありがとうございました。

>>219
大きな違いは、
1.キーリマップに特化されているか否か
2.文法
ですかね。
キーリマップ(カスタマイズ)したいなら「AutoHotkey」。
一般的な自動化スクリプト書きたいならどちらでも。(個人的には、文法は「AutoIt3」の方が分かりやすいと思う)
あとは、出来ることや獲て不得手も有るかもしれないので、両方見比べて使い分けすれば良いと思いますよ。
自分は両方使い分けてます。

222 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:15:01.83 ID:mdycdv2l0.net
呼べないわけじゃない。
下のオブジェクト Hoge と Fuga は(ほぼ)等価。
AHKのクラス定義(Hoge)はかなり新しくて、
過渡期的にオブジェクトのメソッドは外部関数にて実現していた時期があり、
手法的にはFugaの形式でやっていた。

class Hoge{
 static name := "HogeHoge"
 func() {
  MsgBox, % "I am " this.name
 }
}

Fuga := {"base":{"func":"Fuga_func"}, "name":"FugaFuga"}
Fuga_func(this) {
 MsgBox, % "I am " this.name
}

Hoge.func()
Fuga.func()

んで、HogeもFugaの間でのメソッド(クラス関数)の違いは、
「暗黙的な自分自身を示すthis引数を書かなくていいだけ」であって、
関数として呼ぶときは「暗黙のthis」が必要になる。

fn:=Func("Hoge.func")
fn.(0)
fn.({"name":"HigeHige"})

223 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:15:47.72 ID:mdycdv2l0.net
>>222>>213 宛て

224 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:37:25.10 ID:UwDvAnBB0.net
サンクス。

225 :名無しさん@お腹いっぱい。:2015/02/28(土) 16:51:10.68 ID:AINZ07z20.net
>>221
>これで、(中略)部分にサブルーチンのラベルがあった場合でも
>スクリプト起動時に実行してしまうのを防止してくれます。
>「return」でも良いのでしょうけど、何か分かりにくいので「goto」使ってます。

ちょ防止って、あのねアセンブラじゃないんだからさ
AutoExecuteセクションはラベルこそないけど最初に実行される一つのサブルーチンって考えたほうがいいよ
出口はreturnなりexitappなりが妥当
中途に他サプルーチンやら関数やらホットキーやら挟むようなコード書いちゃいかんのよ
ファイル末尾のラベルまでgotoで飛ばすって普通はあり得ない

個人的なわかりやすさ優先でマイルール貫きたいんでいいんですっていうことだったら
金輪際こういう場でコードさらすのはやめたほうがいい、それくらい悪い見本

226 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:04:17.15 ID:Nv6f4t4+0.net
>>225
AutoExecuteセクションの終わりでExitするのにくらべて
Gotoで末尾に飛ばすことがどのような致命的な問題があるのか
是非とも教えていただきたい

227 :211:2015/02/28(土) 17:10:41.16 ID:fi17g8G40.net
言いだしっぺなりに援助のつもりでBMP保存のコードを書いてたらDIDデータを書き込むとこで予想外に行き詰った
全消しするのももったいないので後人に希望を託して経過だけ貼っておく
http://pastebin.com/pa0NRAYi

228 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:21:16.42 ID:fi17g8G40.net
いきなりだが微修正
55行目のpvbits → &pvbits
あとBitBltの引数がミスってた。座標部分だからこの際どうでもいいけど
Int, right - left, Int, bottom - top, Int, 0 → Int, 0, Int, right - left, Int, bottom - top

http://ahkwiki.net/FileSelectFile
> options 8を指定して 16を指定しなかった場合、強制的に 保存ダイアログになる。
ところでこれ誤植かなぁ。仕様も意味不明だし実際に試してもそうならなかったような

229 :名無しさん@お腹いっぱい。:2015/02/28(土) 17:35:55.92 ID:Nv6f4t4+0.net
16を指定して 8を指定しなかった場合
が正しいんじゃないかね

230 :名無しさん@お腹いっぱい。:2015/02/28(土) 19:08:11.68 ID:yfEHmudG0.net
ImageSearchで画像探してる時ってマウスのカーソルは無視してくれてるの?

231 :名無しさん@お腹いっぱい。:2015/02/28(土) 20:54:35.45 ID:AINZ07z20.net
>>226
えっそれ人に聞くの?
煽りじゃなく本気で知りたいならここで横着して聞くよりも自分で調べたほうがためになると思うけど

http://ja.wikipedia.org/wiki/Goto%E6%96%87
>Cなどの構造化プログラミング言語においては、goto文はむやみに使ってはいけないと言う暗黙の約束がある。
>これは、goto文が原始的で自由度の高すぎる機能であるため、安易なgoto文の使用はプログラムの構造化を妨げ、
>デバッグなどが行いにくくなり、バグの発生や、メンテナンス性・可読性の低下の原因になりやすいからである。

逆になぜそこにこだわるのか、理由やメリットがあるなら教えてほしい
gotoで飛ばすにしても TakeScreenShot_end: の次の行にはReturnを書くべきだし
AutoExecuteセクション内にラベルや関数を内包するというのは
自分にはコーティングルール違反にしか見えないのだけど

232 :名無しさん@お腹いっぱい。:2015/02/28(土) 21:33:21.83 ID:ma75jfsH0.net
思考停止して「そういうものだから」と思ってるだけならそれでもいいけど
〜すべきとか他人に言わないほうがいい

233 :名無しさん@お腹いっぱい。:2015/02/28(土) 22:01:06.78 ID:QaJ7AYq30.net
>>230
書いてある

234 :名無しさん@お腹いっぱい。:2015/02/28(土) 22:20:31.66 ID:i67nsyV20.net
>>232
こういうプログラミングの基礎部分のタブーはやりがちゆえに皆それなりに痛い目見てきてるし
他人が書いたトンデモソースをデバッグしたことある人間なら身に沁みてることではないかと

単純に思考停止と言いきってしまう人は逆に経験則で学ぶ機会をまだ得てないのかなと思ってしまう

前にも三項演算子とかスマートコーティング() とか妙な煽り方してた人いたけど
右へならえを否定したい変なポリシーでもあるんだろうか

235 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:56:28.28 ID:HPdXpqeF0.net
思考停止という熟語は喧嘩売るときに使われるという文化的背景を知るべき

236 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:59:24.59 ID:w2cRL2ia0.net
>>222-223
丁寧に回答感謝します
Fuga.func()の書き方は初めて知った。引数の渡し方が特に参考になり感謝です

237 :名無しさん@お腹いっぱい。:2015/02/28(土) 23:59:43.58 ID:rNeGr3r90.net
#include, Gdip_All.ahk

file : ="foo.jpg"
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen()
Gdip_SaveBitmapToFile(pBitmap, file)
Gdip_Shutdown(pToken)

Gdip_All.ahkをつかってデスクトップのスクリーンショットを保存する
ttp://www.autohotkey.net/~Rseding91/Gdip%20All/Gdip_All.ahk

238 :名無しさん@お腹いっぱい。:2015/03/01(日) 00:04:40.42 ID:rTsCTT9d0.net
Gdip_BitmapFromScreenはウィンドウや矩形を指定できるっぽい

239 :名無しさん@お腹いっぱい。:2015/03/01(日) 05:59:04.95 ID:/27aLbAj0.net
最近は条件付きでgotoを認めようという中道派が増えてきた気がしないでもない
用途はフラグ変数の節減とかその程度のものだけど

>>220
よく分かるわ。ちょっと凝ろうとすると外部関数が必要になるし、DllCallへの移植が大変過ぎる
ヘッダファイルをぶっかいて入力支援を作ろうかと思ったがtypedefとか多くて諦めた

>>237-238
そんなのがあったのか。すげえな

240 :名無しさん@お腹いっぱい。:2015/03/01(日) 08:39:19.41 ID:Vj76C+Z/0.net
Errorアボートの時にはよく使うけどね>goto

241 :名無しさん@お腹いっぱい。:2015/03/01(日) 09:17:36.84 ID:mbX5CEKm0.net
AHKコンソールの文字サイズはどう変更するんです?
Script lines most recently〜が表示されるアレです
もう少し大きくしたいんですが

242 :名無しさん@お腹いっぱい。:2015/03/01(日) 09:29:34.51 ID:HRvEjq5N0.net
こんなのあるけど

Screen Capture using only AHK. No 3rd party software required.
http://www.autohotkey.com/board/topic/91585-screen-capture-using-only-ahk-no-3rd-party-software-required/

gotoは多重ループの内側から一番外へ出たいときとかに使うけどなあ
まったくないのも不便
でもAutoExecuteから一番最後にジャンプってのはあり得ないわw
そんなコード書くやつは、まともなプロジェクトとかには参加できない。そこでは書き方も含めチェックされるからね

243 :名無しさん@お腹いっぱい。:2015/03/01(日) 11:24:57.16 ID:O82ldbvM0.net
>>227
なんかタブが無駄に入ってしまった
でもpastebinて便利だな
http://pastebin.com/2jadLBws

244 :名無しさん@お腹いっぱい。:2015/03/01(日) 12:49:33.26 ID:/27aLbAj0.net
>>243
おおお、すげー。色々浮かばれたわ、サンクス

リベンジとは違うけど、さっきMSDN等の関数定義をDllCallの書式に移植するやつを作ったので公開しとく
http://pastebin.com/0EB9Ykyw

245 :名無しさん@お腹いっぱい。:2015/03/02(月) 01:42:22.99 ID:qRAEGYPk0.net
ホームページ更新の巡回に関する小技募集

246 :名無しさん@お腹いっぱい。:2015/03/02(月) 02:42:07.80 ID:qRAEGYPk0.net
Send, ^+!v ; ファイラーでカレントディレクトリパスを取得
ClipWait
TargetDir = %Clipboard%
Clipboard =

InputBox, S&RWord, Search&Replace, Search/Replace,, 500, 120
SWord := RegExReplace(S&RWord, "^(.*)/", "$1")
RWord := RegExReplace(S&RWord, "/(.*)$", "$1")
Loop, %TargetDir%\*.*, 1 {
NewFileName := RegExReplace(A_LoopFileName, SWord, RWord)
FileMove, %A_LoopFileFullPath%, %TargetDir%\%NewFileName%
FileMoveDir, %A_LoopFileFullPath%, %TargetDir%\%NewFileName%
}
return

この『ディレクトリ直下一括リネーム.ahk』のInputBoxから仕入れたS&RWordの処理が気に入らないんですが、
ひとつの入力欄に「検索語/置換語」と入力したあとスマートにそれらを二つの変数に分けるのって、どうやります?

247 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:00:22.81 ID:A9bu8JKX0.net
>>246
RegExReplace → RegExMatch
または
InputBox → GUI自作して入力項目を分ける

248 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:04:18.22 ID:A9bu8JKX0.net
Clipboard =
Sendの前に追加

249 :名無しさん@お腹いっぱい。:2015/03/02(月) 03:05:11.48 ID:jFWfWs/q0.net
検索語を入力していって/が入力されると置換語の入力に切り替わるようなものを作るのはどうでしょ

250 :名無しさん@お腹いっぱい。:2015/03/02(月) 04:25:53.00 ID:/YnkJPoe0.net
作ればいいと思いますよ

251 :名無しさん@お腹いっぱい。:2015/03/02(月) 04:46:39.16 ID:uwFqihon0.net
?w
流れとか文章とか読めないひとなのかしら

252 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:52:59.07 ID:PStKGwIP0.net
流れとか文章とか関係ない
テンプレも読めない人なんだねってだけw
>>1-13 の何に該当すると思う?

253 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:54:53.00 ID:Y3/aW/KL0.net
何くらだねえの相手にしてんだよ

254 :名無しさん@お腹いっぱい。:2015/03/02(月) 07:57:53.62 ID:0Soi2uWn0.net
そんなのに即レスするあんたもたいして変わらんと思う

255 :名無しさん@お腹いっぱい。:2015/03/02(月) 08:23:42.64 ID:qRAEGYPk0.net
>>247
Word := RegExMatch(S&RWord, "^(.+)/(.+?)", Word)
としたらWord1にSWordが、Word2にRWordが格納されるんですかね?
Matchって一致箇所を調べるだけかと思ってました
GUI自作はGUI,Destroyがうまく使えないので避けてます
>>248
忘れてました。ども

256 :名無しさん@お腹いっぱい。:2015/03/02(月) 08:46:53.06 ID:qRAEGYPk0.net
>>249
InputコマンドのEndkeysオプションみたいな感じですかね

257 :名無しさん@お腹いっぱい。:2015/03/02(月) 10:25:36.59 ID:cDD5fVU70.net
>>252の言うことがガチで意味分からんから誰か解説してほしい
ただのテンプレ工作?

258 :名無しさん@お腹いっぱい。:2015/03/02(月) 11:24:48.88 ID:1RBp1lvy0.net
ID:qRAEGYPk0 の教えて君っぷりを指して
>11-13って言いたかったんじゃないかと

それより>251の言う流れのほうがよっぽどわからない

259 :名無しさん@お腹いっぱい。:2015/03/02(月) 11:37:40.55 ID:cDD5fVU70.net
流れも何も、>>249>>246への提案レスに対して「作ればいい」というレスポンスが意味不すぎるだけだと思うけど

260 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:18:57.68 ID:ZB7V9D3L0.net
Chromeを使っています
IEでもいいのですが、複数のタブを並べて複数のHPを開いているのですが、タブの切り替えってどうやったらいいでしょうか
今考えているのはImagesearchを使って該当するタブを見つけてクリック、くらいしか思いつかないのですがもっとスマートな方法は
出来ないでしょうか
引数としてはタブに出てるHP名です

261 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:48:25.04 ID:1RBp1lvy0.net
Ctrl+Tabで順次切替えるのは?
WinGetTitleで該当HP名取得できるまでWhileで回す


>>259
作るのはどうでしょ
→ 同意、作ればいいと思いますよ>246

って意味かなと思ったけど、そうじゃなくてもスルー対象じゃね

262 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:51:57.62 ID:cDD5fVU70.net
ChromeのGUIはActive Accessibilityに対応してるからACC.ahkで操作できそうだな

263 :名無しさん@お腹いっぱい。:2015/03/02(月) 12:56:55.57 ID:1RBp1lvy0.net
そんで
欲しい答えもらえなかった質問者=>251でファビョってんのかなと
その後の流れで違うのはわかったけど、>252もそこ勘違いしたんだと思う
で、教えて君のテンプレ貼ろうとして参照先間違えたと想定

264 :名無しさん@お腹いっぱい。:2015/03/02(月) 13:18:19.31 ID:ZB7V9D3L0.net
>>261
なるほど、そういう手がありましたか
>>262
今ちょっと時間がないので、ACC.ahkというのをあとで調べてみますね。ありがとうございます

265 :名無しさん@お腹いっぱい。:2015/03/02(月) 13:25:55.56 ID:A9bu8JKX0.net
>>11-13
これはテンプレではありません勝手に追加しようとしているものです
以降スルーしてください

266 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:22:28.67 ID:qRAEGYPk0.net
テンプレ工作ってどういう意味かと思ってましたが>>265でようやっと把握しました
勝手なテンプレ追加改変をしれっと容認させる片棒を担がされそうになってたわけですね……

Word := RegExMatch(SandRWord, "^(.*)/(.*)$", Word)
とあとディレクトリかファイルか判定させてクリップボード周りをご指摘通り修正したら完璧に動作することを確認しました。ありがとうございます>>247>>248

なにやら荒れるきっかけを作ってしまったようで申し訳ありませんでしたm(__)m

267 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:55:04.57 ID:uwFqihon0.net
ID:qRAEGYPk0って教えて君か?
>>263こいつの中の教えて君の定義がどうなってんのか知りたいわ
ちゃんと手順踏んでる質問者に無能ってのもひどすぎると思うし
発端の勘違い>>250クンもだけど「教えて君」に過剰反応し過ぎて逆にスレの正当な流れすら乱してる

268 :名無しさん@お腹いっぱい。:2015/03/02(月) 14:58:34.23 ID:uwFqihon0.net
ごめん
無能云々は他スレの荒らしだったわ
タブ開きすぎてて間違った
スマソ

269 :名無しさん@お腹いっぱい。:2015/03/02(月) 16:42:29.08 ID:oV9pnqm40.net
>245で「子技募集」
>246で拾ってきたスクリプトの挙動が「気に入らない」

教えて君断定は言い過ぎだとしても うかつ感は拭えないな
カチンと来たのは自分だけだろうか

270 :名無しさん@お腹いっぱい。:2015/03/02(月) 17:57:04.37 ID:K2k+E1710.net
すいません、これって
「外付けテンキーのxx」を押したとき
という指定は出来るのでしょうか

つまり、普通のフルサイズのキーボードと外付けテンキーをPCに繋いで、フルサイズのキーボードはテンキー含めて全て変わりなく使える。テンキー部分も。
ただし外付けのテンキーはボタンの割り当てを変える という感じです

271 :名無しさん@お腹いっぱい。:2015/03/02(月) 18:22:11.98 ID:jFWfWs/q0.net
>>270
http://ahkwiki.net/KeyList
その外付けテンキーが普通のキーボードのNumLockと連動しなければ
数字の部分とIns,Delはキーボードのとは違うものを割り当てられるよ

完全に別の入力として分けたいなら「HidKeySequence」みたいなソフトを経由すればいいんじゃないかな

272 :名無しさん@お腹いっぱい。:2015/03/02(月) 18:44:51.72 ID:cDD5fVU70.net
>>269
強いて言えば「小技って具体的に何だよ」と思ったぐらいでそれ以外は別に
再発明はムダなだけだし出来合いのソースの募集はスレ的にはむしろ推進されるべきですらある
どういう目的でコードを書こうが改変しようが自分には知ったこっちゃないし
何にせよ、その程度で「迂闊」とされて無駄な茶々入れが入る方が優先的にイラつくだけ

273 :名無しさん@お腹いっぱい。:2015/03/02(月) 19:05:04.31 ID:F9hILZpp0.net
>>270
http://pc12.2ch.net/test/read.cgi/software/1265518996/795

274 :名無しさん@お腹いっぱい。:2015/03/02(月) 21:53:39.58 ID:RxYnwJ0R0.net
おまゆう

275 :名無しさん@お腹いっぱい。:2015/03/02(月) 22:31:32.15 ID:rptcqWQf0.net
>出来合いのソースの募集はスレ的にはむしろ推進されるべきですらある
このスレに長くいるけどこんなの初めて聞いたわ

276 :名無しさん@お腹いっぱい。:2015/03/03(火) 00:05:14.63 ID:u28G/DU50.net
自分が先に提供してから皆の小技も教えて って呼びかけるならわかるけど
募集(クレクレ)と質問のコンボだと心象よくないかもね

改変はかまわんが質問する立場の時に言葉を選ばないのは迂闊だと思うわ
己の希望と少し違う、自分が使いやすいように変えたい、など言い回しは気をつけよう
当人に悪意はなくても元ソース提供者を下げる言い方に取れるし手を貸す気が削がれる

まあわざわざ絡むほどかっつーとそうでもないが
まともな質問でも因縁つける奴はいるし
多少の茶々が入っても騒ぎ立てずスルーしとくほうがいいと思う

277 :名無しさん@お腹いっぱい。:2015/03/03(火) 00:22:40.23 ID:pSvwlkqj0.net
そもそもその『ディレクトリ直下一括リネーム.ahk』ってのは拾い物なのか
ググったけどそれっぽいの見当たらんし>>246はどっかで公開されるようなレベルには見えないよ

278 :名無しさん@お腹いっぱい。:2015/03/03(火) 03:15:29.95 ID:J1d0ud9B0.net
>>3
>64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
の制約とは具体的にはどういうものになるのでしょうか?
ぐぐっても同じような文面しかヒットせず詳細が分からないです

279 :名無しさん@お腹いっぱい。:2015/03/03(火) 11:01:40.59 ID:uwF/gt120.net
>>278
64bit版が使えない環境なのか好奇心なのか読み取れませんでした
試しに使ってみてはどうでしょうか
不具合が出て困ったときは相談に乗ります

280 :名無しさん@お腹いっぱい。:2015/03/03(火) 20:02:01.53 ID:gJZoAFmS0.net
>>278
DllCall、WOW64リダイレクト (System32、レジストリ)、メモリ、このあたりかな

AHKが32bitならDllCallで64bitのDLLを呼び出すとエラーが出る
AHKが64bitならDllCallで32bitのDLLを呼び出すとエラーが出る
OSが64bitならDLLも64bitがメインになる

281 :名無しさん@お腹いっぱい。:2015/03/03(火) 21:48:25.52 ID:LZEYUTQz0.net
具体的にはILP32とLLP64の違い
32bitだとintもptrも4byteだけど64bitだとptrだけ8byteになってうげーってなる

282 :名無しさん@お腹いっぱい。:2015/03/04(水) 12:34:53.00 ID:05cZsQ1r0.net
278です

ようやくOSをXP(とAHK1.0.48.5)から8のx64に更新したのでAHKも新しいのに、と思ったのですが
DllCallとか以外にも64ビットアプリをフックできないとかいろいろあるみたいですね
当面はANSI 32-bitのとUnicode 64-bitのを併用しながら移行してみようかと思います
みなさんありがとうございました

283 :名無しさん@お腹いっぱい。:2015/03/04(水) 13:21:26.80 ID:dAIxby2W0.net
>>282
>AHK1.0.48.5
それどう見たって古すぎだろ。
その版のAHKで動いていた(作った)スクリプトの幾つかがUnicode版(32,64に関わらず)ではエラーが出て動かない
っていう単純な話なら、スクリプトのエンコードを「UTF-8 BOM有り」に変更するだけで動く場合が有るぞ。
DLLうんたらかんたら…が原因で動かないならオレは解決方法は知らない。

284 :名無しさん@お腹いっぱい。:2015/03/05(木) 10:05:48.70 ID:PvGdQg/av
定時タイマーでアクションを起こしたいのですが方法どなたか教えてください。
半日近く探したけど適当なコードが見つからない・・・・。
下のコード書いたは書いたのですがキーに割り当てしないと動作しません。
トリガーなしでオートで動作するようにしたい。
よろしくお願いします。

#Persistent
nowtime=%A_HOUR%%A_MIN% ;現在hhmm取得
settime=1730 ;時刻指定
If (nowtime == settime)
Run,C:\○○○.exe
Return

285 :名無しさん@お腹いっぱい。:2015/03/05(木) 19:42:07.72 ID:fLHlRxfL0.net
たびたびお世話になっております。

特定のアプリ限定で、左ダブルクリックを殺す方法はありますか?

そのアプリとは要するに並列ダウンローダーなのですが、
一覧表でアイテムを選択するつもりでうっかりダブルクリックしてしまうと
「一時停止」がかかってしまって、それが終わってから走らせるはずだった
タスクが代わりに動いてしまい、まずいのです。


#IfWinActive, 某アプリ
;こんな感じで
左ボタンのダブルクリック::
  SendInput 左ボタンのシングルクリック
  return
#IfWinActive

286 :名無しさん@お腹いっぱい。:2015/03/05(木) 20:17:57.86 ID:HWex2iB/0.net
クリックされたらフラグを立ててタイマーで500msくらいしたら下げるようにする
それでフラグが立っているときだけそのアプリのクリックを殺す

287 :284:2015/03/05(木) 21:03:08.58 ID:fLHlRxfL0.net
>>286 あー、結局そうなりますか。ありがとうございます。
タイマーとフラグ使うプログラミングなんて20年前の8bitマイコン以来だw

288 :名無しさん@お腹いっぱい。:2015/03/05(木) 21:10:54.82 ID:HWex2iB/0.net
AHKがどうかは知らんけどメッセージフックができるならWM_LBUTTONDBLCLKを検知する手もある

289 :名無しさん@お腹いっぱい。:2015/03/05(木) 22:07:31.33 ID:KzDwKELs0.net
>>287
こんな方法もある

a::Return

#If (A_TickCount > Time + 500)
~a::Time := A_TickCount
#If

290 :名無しさん@お腹いっぱい。:2015/03/06(金) 01:40:32.85 ID:0uNqwvG50.net
If (式) 式の計算結果の真偽で条件分岐を行う。
If (変数の比較) 変数と数値を比較して条件分岐を行う。

上記2つの違いがわかりません。
使い分けないと困る、使い分けると便利な場面が有りましたら教えてください

291 :289:2015/03/06(金) 01:56:58.36 ID:0uNqwvG50.net
テンプレ読みましたごめんなさい

292 :名無しさん@お腹いっぱい。:2015/03/06(金) 02:11:00.54 ID:OmF/O/650.net
ええのよ

293 :284:2015/03/06(金) 14:02:18.02 ID:XTaoPMMA0.net
>>288 早速やってみました。

OnMessage(0x203, "WM_LBUTTONDBLCLK")

WM_LBUTTONDBLCLK(wParam, lParam, iMsg, hWnd)
{
 if WinActive("某ダウンローダー")
 {
  return 1
 }
 else
 {
  return ""
 }
}

結果…反応せず。
AHKのOnMessage()は、スクリプト内でウィンドウを自作して、
それにメッセージが届いたときに反応するようです。
タイマーを試してみます。しばしお待ちを。

294 :名無しさん@お腹いっぱい。:2015/03/06(金) 14:15:11.34 ID:i727hu6r0.net
a.exeというプロセスが同時に10個走ってるとして、その10個に対して同じ処理をしたい時、
最初の1つだけでなく、1つ1つのPIDを順番に取得して処理していく方法ってあるのん?

295 :284:2015/03/06(金) 14:15:46.81 ID:XTaoPMMA0.net
できました。ありがとうございました。

global tLastLButtonClick := 0
#IfWinActive, 某ダウンローダー
LButton::
 if (tLastLButtonClick < A_TickCount-500)
 {
  Send {LButton}
 }

 ; 必ずこの位置で更新
 tLastLButtonClick := A_TickCount
 return
#IfWinActive

296 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:11:54.35 ID:r7rWZBoJ0.net
>>294
WinGet List

>>295
関数以外でglobalを書く必要はない

297 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:22:31.37 ID:/NJQnDZm0.net
>>285=294
ダブルクリック(じゃないこと)の判定は組み込み変数だけでもできるね
あと、>>295だとドラッグができなくなるから、もし必要ならKeyWaitで
LButtonが離されるのを待ってからLButton Upしてやる

LButton::
If (A_PriorHotkey <> A_ThisHotkey OR A_TimeSincePriorHotkey > 500)
{
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
}
Return

298 :名無しさん@お腹いっぱい。:2015/03/06(金) 15:47:37.42 ID:812RJITe0.net
AHKには、PixelGetColorやImageSearchみたいのはあるのに、
画面の範囲を指定してそのBMPをファイル保存みたいのはないのでしょうか
たとえば、HPでもなんでも指定の画面範囲のBMPを読み込んで、別の個所の画面の画像と比較をしたいのですが
画面の指定範囲をファイル保存→そのファイルでImageSearchで別の画面をサーチ
みたいなことを考えていました

299 :284:2015/03/06(金) 17:12:56.99 ID:XTaoPMMA0.net
ありがとうございます。

>>296 了解です>関数以外でglobalを書く必要はない

>>297 こちらのほうがよさそうですね。ありがたく使わせていただきます。

300 :名無しさん@お腹いっぱい。:2015/03/06(金) 18:25:52.72 ID:OmF/O/650.net
>>298
丁度同類のスクリプトがこのスレで公開されてるよ

301 :名無しさん@お腹いっぱい。:2015/03/06(金) 20:10:08.59 ID:812RJITe0.net
>>300
ありがとうございます。見ましたがとても難しそうですね
結局、AHKではそのようなコマンドは用意されてないのですね
それならいっそと思って、PixelGetColorで画素をとってきてppmファイルを作るスクリプトを作ってみました
あとはppmからbmpへ変換するコマンドソフトがあればいいだけです
時間はかかりますが、200x200くらいまでならまだ耐えられそうですw

q::ExitApp, 0

^s::
file := FileOpen( "C:\xxx.ppm", "w" )
if( file = 0 )
{
MsgBox File Not Open
return
}
x1 = 0
x2 = 500
y1 = 0
y2 = 500
cx = % x2-x1+1
cy = % y2-y1+1

s = P3`n%cx% %cy%`n255`n
file.Write( s )
ys = %y1%

302 :名無しさん@お腹いっぱい。:2015/03/06(金) 20:10:51.14 ID:812RJITe0.net
つづき
loop, % cy
{
xs = %x1%
t = 0
loop, % cx
{
PixelGetColor, col, xs, ys, RGB
StringMid, r, col, 3, 2
StringMid, g, col, 5, 2
StringMid, b, col, 7, 2
r = 0x%r%
g = 0x%g%
b = 0x%b%
r += 0
g += 0
b += 0
s = %r% %g% %b%
if( t = 1)
file.Write( " " )
file.Write( s )
xs += 1
t = 1
}
file.Write( "`n" )
ys += 1
}
file.Close()
MsgBox 変換終了
return

303 :名無しさん@お腹いっぱい。:2015/03/07(土) 00:57:15.02 ID:B3eYvI7S0.net
>>301
> あとはppmからbmpへ変換するコマンドソフトがあればいいだけです
http://www.imagemagick.org/

> 時間はかかりますが、200x200くらいまでならまだ耐えられそうですw

凄いな。CPUの型番きぼんぬ。

304 :名無しさん@お腹いっぱい。:2015/03/08(日) 04:06:48.18 ID:zliUZK/s0.net
Headline-Reader Liteとautohotkeyの連携がなかなかイイね

305 :名無しさん@お腹いっぱい。:2015/03/08(日) 18:28:18.66 ID:+Kl9YiW10.net
質問です。同じフォルダ内の拡張子が同
じxxxa1,xxxa2,xxxa3,xxxa4(xxx部には毎回異なる数字が入る)がありxxxa2以外のファイルをFileDeleteを使い削除したいのですがどのようにすればよいのでしょうか?

306 :名無しさん@お腹いっぱい。:2015/03/08(日) 18:45:00.00 ID:jz2AVciS0.net
>>305
Loop (ファイル検索) + If RegExMatch() で回せばいい
後は自分で考えよう

307 :名無しさん@お腹いっぱい。:2015/03/08(日) 19:23:58.32 ID:3bMFBWcF0.net
質問が初歩的すぎてどこまで説明が要るのか分からん
ファイルは取得できるのか連番は作れるのか文字列は扱えるのかetc
徒労の説明とかしたくないから要点を分割して訊くか、できるとこまでスクリプトを書いて転載してくれ

308 :名無しさん@お腹いっぱい。:2015/03/08(日) 19:30:44.19 ID:u1Hx7wMH0.net
>>305
LOOPでフォルダー内のファイルをとってくるということが出来る
これくらいは調べて
で、ファイル名が得られるから、とりあえずそのファイル名にa2が入っているかどうかを
文字サーチしてないやつだけ削除すればいい
a2が思っていたところ以外の個所にある場合は削除出来ずに残るが、そこは例外処理をしよう

309 :名無しさん@お腹いっぱい。:2015/03/08(日) 20:52:12.36 ID:3bMFBWcF0.net
ここで正規表現を使わずいつ使うのか
[0-9]+(.+)(|\..+)$ とか(キャプチャ使用)
[0-9]+[^a][^2](|\..+)$ とか

310 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:12:57.57 ID:qcXH9bFf0.net
>>306で終わってるのにどうしても 俺が俺が しないと気がすまないのか

311 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:14:28.50 ID:1bwREvY/0.net
>[0-9]+[^a][^2](|\..+)$ とか
[0-9]+(?!a2\.)の方がまだ良いのでは

とにかく丸投げ過ぎ。ここ何週かでトップレベルのクソ質問者 ←これが言いたい

312 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:39:00.55 ID:/cBwszRt0.net
んなこたあない
このスレ内のクソ認定度では 初心者 <<< クレクレ

313 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:48:05.96 ID:GDqebOvo0.net
>>311
^((?!a2\.拡張子).)*$
で十分じゃね?数字は特に意味が無いだろうし

314 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:54:25.86 ID:fSR8ly9m0.net
このひどい正規表現の数々は確実に釣り
得意気にベスト書いた奴が負け

315 :名無しさん@お腹いっぱい。:2015/03/08(日) 21:59:40.57 ID:3bMFBWcF0.net
>>311
そんなの使えるのか、サンクス
後半は00a2.01.jpgとか拡張子無しの対策だけど

316 :名無しさん@お腹いっぱい。:2015/03/08(日) 22:07:41.36 ID:3bMFBWcF0.net
てか^aじゃa1も弾くから一択しかないな

317 :名無しさん@お腹いっぱい。:2015/03/08(日) 22:48:07.25 ID:SZBUqUWU0.net
1.1.20.00
なんか更新内容多い

ラベルが見つからない時に同名の関数受け付けたり
メニューやホットキーのイベントでfunction objectを受け入れたりって
どう便利なんだろう

318 :名無しさん@お腹いっぱい。:2015/03/08(日) 23:01:05.97 ID:DgnwCOHF0.net
そんなんより文字列をオブジェクト化してくれればいいのに

319 :名無しさん@お腹いっぱい。:2015/03/09(月) 01:45:05.68 ID:I8msS/ir0.net
;東京のテレビ番組表を取得し、as_HTMLというファイル名で保存
UrlDownloadToFile,http://tv.so-net.ne.jp/rss/schedulesByCurrentTime.action?group=10&stationAreaId=23,as_HTML

;番組表の内容を変数に入れる
FileRead,G_Guide,as_HTML

;番組表を削除
FileDelete,as_HTML

MsgBox,%G_Guide%


今放送してるテレビ番組名を取得したいのですが、上記のように番組表を持ってきてAHKで表示させると日本語の部分が文字化けしてしまいます
文字化けしないようにするにはどうすればいいでしょうか
AHKのスクリプトはUTF-8で保存してます

320 :名無しさん@お腹いっぱい。:2015/03/09(月) 01:56:15.09 ID:pqlQgiia0.net
FileReadのオプション

321 :名無しさん@お腹いっぱい。:2015/03/09(月) 02:13:26.90 ID:I8msS/ir0.net
>>320
ありがとうございます
これで読めるようになりました

;番組表の内容を変数に入れる
FileRead,G_Guide,*P65001 as_HTML ;*P65001はUTF-8

322 :名無しさん@お腹いっぱい。:2015/03/10(火) 01:32:30.73 ID:ikLxLr5X0.net
>>317

> The main benefit of using a function is that local variables can be used,
> which avoids conflicts when two or more hotkeys use the same variable
> names for different purposes.
> It also encourages self-documenting hotkeys, like in the code above where
> the function name describes the hotkey.

> If GuiClose is a function, the GUI is closed by default.
> The function can prevent this by returning a non-zero integer, as in the example below:
GuiClose(GuiHwnd) { ; Declaring this parameter is optional.
 MsgBox 4,, Are you sure you want to close the GUI?
 ifMsgBox No
  return true ; true = 1
}

GuiSize(GuiHwnd, EventInfo, Width, Height)


ふむ。関数型に移行してますなぁ。
個人的には↓がよさげ。
> Changed the method used by A_CaretX/A_CaretY to retrieve the caret position.

323 :名無しさん@お腹いっぱい。:2015/03/10(火) 08:37:17.04 ID:WAIsf76V0.net
;URLのHTMLをテキスト形式で変数に入れる
URLDownloadToVar(url){
hObject:=ComObjCreate("WinHttp.WinHttpRequest.5.1") ;Create the Object
hObject.Open("GET",url) ;Open communication
hObject.Send() ;Send the "get" request
return hObject.ResponseText ;Set the "text" variable to the response
}


拾ってきたこの関数を使うとファイルを保存せずに変数にHTMLの内容を読み込めるぽいですが
見えないところにキャッシュファイルみたいなかんじで溜まったりしますかね

324 :名無しさん@お腹いっぱい。:2015/03/10(火) 09:13:06.09 ID:WYVbNPbI0.net
直接メモリに読み込んでるんじゃない?
HTMLのテキスト容量なんてたかが知れてるし

325 :名無しさん@お腹いっぱい。:2015/03/10(火) 14:52:02.60 ID:HSsgppHA0.net
AHKのスクリプトをオートフォーマットできるエディターとかって無いですかね?
コピペを繰り返してるとインデントがぐちゃぐちゃになっちゃって修正するのが大変なんです

326 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:23:01.35 ID:mTklEGR20.net
ある商用アプリを使っているとき、そのアプリにフォーカスが当たっていると
AHKのホットキーが効かないことがわかりました
びっくりして、単純なa.ahkというのを作って

q::ExitApp,0

というのだけを入れてみましたが、その商用アプリのウインドウにフォーカスが
当たっているときは、qキーを押しても、a.ahkが終了にはなりません
そんなことがあるのか、と驚きましたが、これってこのアプリでもAHKが効くようには
出来ないのでしょうか。どんな仕組みでそうなるのか
自作のアプリ(VC++とか)でもそのようなことが出来るのでしょうか
もちろん、その商用アプリはAHKをわざわざ意識して作られているようなものではありません

327 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:28:15.17 ID:vy2D2X/w0.net
答える価値無し

328 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:32:06.16 ID:PI46hMz+0.net
SendModeで方式変えて試してみ
ゲームの類はハードキーじゃないと効かないと思うが

329 :名無しさん@お腹いっぱい。:2015/03/10(火) 15:38:12.95 ID:mTklEGR20.net
>>328
SendModeを、Event、Input、Play、InputThenPlayでやってみましたが、どれもダメです

330 :名無しさん@お腹いっぱい。:2015/03/10(火) 19:01:28.27 ID:BKwZ5Y8p0.net
テンプレ

331 :名無しさん@お腹いっぱい。:2015/03/10(火) 20:04:37.77 ID:nxAv8yEB0.net
クリップボード履歴作った
Unicode版 v1.1.20.00以降用

http://ux.getuploader.com/autohotkeyl/download/56/ClipboardHistory.ahk 👀

332 :名無しさん@お腹いっぱい。:2015/03/11(水) 00:32:09.23 ID:+q54axpY0.net
DLしようとしたらサーバーがエラるわ

333 :名無しさん@お腹いっぱい。:2015/03/11(水) 01:19:11.64 ID:3kUMuemo0.net
クリップボード履歴バグってたので修正版

http://ux.getuploader.com/autohotkeyl/download/57/ClipboardHistory.ahk 👀

334 :名無しさん@お腹いっぱい。:2015/03/11(水) 12:32:01.86 ID:HtyaJ32l0.net
ahkでソース中のある文字列をある文字列に置き換えて解釈するようにする擬似命令?みたいなのってありますか?
たとえばmuhenkanをvk1Dsc07Bに置き換えるような。

335 :名無しさん@お腹いっぱい。:2015/03/11(水) 13:38:50.66 ID:+q54axpY0.net
defineみたいなプリプロセッサ命令のこと?
たぶん無い

336 :名無しさん@お腹いっぱい。:2015/03/11(水) 15:14:44.85 ID:iwY1VDQM0.net
スレッドの割り込みについて質問。

スレッド実行中に一時停止/再開をするためにホットキーでPauseするようにしたんだけど、
実行中のスレッドになぜか割り込めず、スレッドが終わってからPauseしてしまう。

↓はF1キーで1秒ごとに123を入力して、F2キーで一時停止してくれると思うんだけど、
動かすと123の入力が全部終わるのを待ってから一時停止ってなふうになる。どうすればいいかな

F1::
SetKeyDelay,1000,-1
Send,1
Send,2
Send,3
Return

F2::
Pause
Return

337 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:30:04.17 ID:b7QimU4R0.net
>>336
二つの問題がある

SetKeyDelayの待機時間はSleepと違って割り込み不可
割り込もうとしたスレッドは待機後実行される

割り込みできる位置が無い
Send の間に Sleep,0 か -1 で指定する

338 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:45:39.14 ID:+q54axpY0.net
>>333
結構いいねこれ

339 :名無しさん@お腹いっぱい。:2015/03/11(水) 17:56:12.72 ID:iwY1VDQM0.net
>>337
ありがとう。Sleepを書かないと割り込めないのか

340 :197:2015/03/12(木) 16:33:15.00 ID:Sw9Isv5G0.net
下記スクリプトで、ディスプレイのソフトウェア制御下パワー状態取得ができるように
なりました。このスクリプトでは終了時 UnregisterPowerSettingNotification の
呼び出しをしていないのですが、どんな問題が生じうるでしょうか。
今のところ特に問題ないような感じなのですが…。

Gui, +LastFound
hRecipient := WinExist()
DISP_GUID := "{02731015-4510-4526-99e6-e5a17ebd1aea}"
VarSetCapacity(DISP_STAT, 16, 0)
DllCall("ole32\CLSIDFromString", "UInt", &DISP_GUID, "UInt", &DISP_STAT)
DllCall("RegisterPowerSettingNotification", "UInt", hRecipient, "UInt", &DISP_STAT, "UInt", 0)
OnMessage(0x0218, "DispStatChange")
Return

DispStatChange(wParam, lParam, msg, hwnd)
{
Msgbox % NumGet(lParam + 16 + 4)
}

341 :名無しさん@お腹いっぱい。:2015/03/13(金) 01:20:24.64 ID:KxHrOCah0.net
開いたモノは閉じる
確保したものは開放する
登録したものは登録解除する


そこまでスクリプトが書けるのならわかると思うが

342 :名無しさん@お腹いっぱい。:2015/03/13(金) 17:24:44.91 ID:OvDEEwAf0.net
http://ux.getuploader.com/autohotkeyl/download/59/ClipboardHistory.ahk
のクリップボード履歴関係なんだけど
ポップアップメニューを出した時に対象のウインドウがフォーカスを失うせいで
たとえばエクスプローラーなんかでうまくペーストできない問題を解決したいと思って…
1::
WinGet,targetPID,PID,A
ProcessSuspend(targetPID) ;プロセスを一時停止
Menu,testMenu,Add
Menu,testMenu,Show ;メニュー表示
ProcessSuspend(targetPID,1) ;プロセスを再開
Return

ProcessSuspend(PID,resume=0){
h:=DllCall("OpenProcess", "uInt", 0x1F0FFF, "Int", 0, "Int", PID)
If h
{
if resume
DllCall("ntdll.dll\NtResumeProcess", "Int", h)
else
DllCall("ntdll.dll\NtSuspendProcess", "Int", h)
DllCall("CloseHandle", "Int", h)
}
}
上のようにメニュー表示中は対象のプロセスを一時停止するようにしてみたところ、
メニュー項目を実行したときやメニューをESCで閉じた場合は期待通り動作するんだけど、
メニューを出したまま対象のウインドウにマウスクリックで直接戻ったときなんかに、
プロセスの再開処理が走るのが遅れるのか数秒間フリーズした状態になってしまいます。
メニュー表示中はマウスクリックに別の処理を割り当てればいいと思ったんだけど、
どうもうまくいかないっぽい。
「ウインドウのフォーカスを維持したままメニューを出す」
あるいは「メニュー表示中にマウスクリックをフックする」
といったことはどうやったらできますか? 👀

343 :名無しさん@お腹いっぱい。:2015/03/13(金) 18:55:07.62 ID:VipaWBZc0.net
こんな感じの指定したファイルパスにあるbmpを開くというスクリプトを書いたんですが

openfile(path)
{
run,%path%
}

F1::
Filepath=%A_ScriptDir%\A\B.bmp
openfile("Filepath")
return

openfile関数の引数に変数をいれるやり方がわからなくてストップしています
どうしたらいいでしょうか?

344 :名無しさん@お腹いっぱい。:2015/03/13(金) 19:42:01.99 ID:ZdmYCXyj0.net
>>343
括弧の中は式、変数は展開される
関数はreturn下に書くのが一般的

■関数 → 関数の引数に代入されるもの
hoge("AAA") → 文字列AAA
hoge(AAA) → 変数AAAの中身
hoge(%AAA%) → 二重展開 中身の中身

345 :名無しさん@お腹いっぱい。:2015/03/13(金) 19:56:12.27 ID:VipaWBZc0.net
>>344
できました どうもです 詳しい解説どうもです

あとその二重展開ってどういう時に使うんですかね?

346 :名無しさん@お腹いっぱい。:2015/03/13(金) 20:36:03.27 ID:ZdmYCXyj0.net
>>345
使いたい変数名を書くときなど色々

F1::
Filepath = %A_ScriptDir%\A\B.bmp
openfile("Filepath")
return

openfile(path)
{
MsgBox % %path%
}

347 :名無しさん@お腹いっぱい。:2015/03/13(金) 20:51:29.47 ID:4FOLYL/i0.net
カナかなキーと変換キーでD&Dしたいんですが左クリック押しっぱなしが出来ていないようです
sc070::MouseClick, Left,,,, 1, D
vk1Csc079::MouseClick, Left,,,, 1, U
他のコマンドの干渉はないようです
キーボードでD&Dするとき特に気をつけるべきことがあるんでしょうか?

348 :名無しさん@お腹いっぱい。:2015/03/13(金) 22:53:37.21 ID:VipaWBZc0.net
>>346
なるほどどうもでした

349 :名無しさん@お腹いっぱい。:2015/03/13(金) 23:36:15.00 ID:ZdmYCXyj0.net
>>347
こちらでは特に問題なく動いたので自分で原因を探そう

テストするスクリプト以外書かない(二行のみ)
UTF-8 BOM有り で保存
スクリプト実行ログを確認
キーログを確認
Sendで書く (表記が簡単なのでミスしにくい)

sc070::Send {LButton Down} ; カナかな
sc079::Send {LButton Up} ; 変換

350 :名無しさん@お腹いっぱい。:2015/03/14(土) 00:21:21.39 ID:zWeT5dtF0.net
>>347
特に何を変えるでもなく今もう一回やってみたら出来ました
検証不足失礼しましたm(__)m

351 :341:2015/03/14(土) 01:37:27.04 ID:9saTsIKF0.net
かなり強引だけど自己解決しました
下記のやり方ならポップアップメニューでアクティブウインドウがフォーカスを失わないっぽい

Gui,+LastFound -Caption +ToolWindow +AlwaysOnTop
Gui,Color,000000
WinSet,Transparent,1
WinGet,targetPID,PID,A
Suspend:=DllCall("OpenProcess","uInt",0x1F0FFF,"Int",0,"Int",targetPID)
DllCall("ntdll.dll\NtSuspendProcess","Int",Suspend)
DllCall("CloseHandle","Int",Suspend)
Menu,testMenu,Add
Gui,Show,NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
Menu,testMenu,Show
Gui,Hide
Suspend:=DllCall("OpenProcess","uInt",0x1F0FFF,"Int",0,"Int",targetPID)
DllCall("ntdll.dll\NtResumeProcess","Int",Suspend)
DllCall("CloseHandle","Int",Suspend)

352 :名無しさん@お腹いっぱい。:2015/03/14(土) 07:45:02.85 ID:oJd6rQgS0.net
OR ANDがあるifを書きたいんですが

if (y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth )

これだと動かないんですが、どう書いたらいいんでしょうか?

353 :名無しさん@お腹いっぱい。:2015/03/14(土) 12:33:34.46 ID:oqJG/xEU0.net
それだと式になってない

if ((y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth ))

354 :名無しさん@お腹いっぱい。:2015/03/14(土) 16:07:43.40 ID:lKfyXFXG0.net
ctr+shift+zでctr+yの動作をさせると捗るなぁ

355 :名無しさん@お腹いっぱい。:2015/03/14(土) 16:46:12.20 ID:oJd6rQgS0.net
>>353
いけました どうもです

356 :名無しさん@お腹いっぱい。:2015/03/14(土) 17:46:22.61 ID:h0UcWAhF0.net
>>352
間違ってない、他のミス

>>353
> それだと式になってない
式になってる

■If (変数の比較) コマンド
if 3 > 1 + 1 || 3 > 1 + 1 ; 不正 先頭は変数展開される

Var = 3
if Var > 1 + 1 || Var > 1 + 1 ; 正しい 先頭は変数展開される

■If (式)
if (3 > 1 + 1 || 3 > 1 + 1) ; 正しい

if (3 > 1 + 1) || (3 > 1 + 1) ; 正しい 範囲が分かりやすくなる

if ((3 > 1 + 1) || (3 > 1 + 1)) ; 括弧が二重で無駄

357 :名無しさん@お腹いっぱい。:2015/03/14(土) 22:20:23.02 ID:RRXEcAlZ0.net
if (式) で必ず外側にカッコつけるのはcの仕様だな
ahkではしなくても動くけど多言語扱う習慣のある人ならつけるのが無難
無駄と言い切るのは乱暴かと

358 :名無しさん@お腹いっぱい。:2015/03/15(日) 16:41:20.79 ID:B1hnPxsm0.net
>>356
どう記述するのが正解ですか?

if (y+height < A_ScreenHeight) OR (x+width < A_ScreenWidth )

y座標+高さがモニターの縦幅より小さいかx座標+幅がモニターの横幅より小さい時の条件が作りたいんですが

359 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:32:06.22 ID:L8/89NQZ0.net
>>358
動くなら後は好みと統一性の問題だけど
その見本なら3か4番目じゃない?
あとは計算は右に置いた方がバランスいいかと

(A_ScreenHeight > y+height)
hoge = y+height

360 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:40:46.73 ID:B1hnPxsm0.net
>>359
動きました どうもです
右においた方がいいというのは
不等号の位置的にそうするべきという意味ですか?

361 :名無しさん@お腹いっぱい。:2015/03/15(日) 17:44:04.66 ID:ENZJa4ci0.net
まず君はやるべきことがあるのでは、と思うがね

362 :名無しさん@お腹いっぱい。:2015/03/15(日) 23:32:24.40 ID:ZJS2FJtk0.net
質問者じゃないけど>352が動かない理由が皆目わからない
参考までにどのあたりに他のミスがあるのか教えてほしいです>356

363 :名無しさん@お腹いっぱい。:2015/03/16(月) 00:38:21.89 ID:y4oIDS+O0.net
351をコヒペして適当に変数に数値代入してみたけど普通に動いたよ

364 :名無しさん@お腹いっぱい。:2015/03/16(月) 00:51:02.34 ID:GzqZZfsL0.net
F1キーを押して押し上げた瞬間に特定の動作をさせたいのですがどうしたらいいでしょうか?
たとえば

F1::soundbeep

と書いたとして、F1キーを押した瞬間ではなく押し上げた瞬間に音がなるようにしたいのです。
F1キーを押しっぱなしにしてしまって音が2回以上なってしまうのを避けたいのです。きっかり一度だけ鳴らしたいので押しあげた瞬間のみに音を鳴らしたいのです。

365 :名無しさん@お腹いっぱい。:2015/03/16(月) 01:56:04.91 ID:j74GxRa80.net
押し上げた瞬間に鳴らしたいならUpホットキー
http://ahkwiki.net/Hotkeys#Up.E3.83.9B.E3.83.83.E3.83.88.E3.82.AD.E3.83.BC
KeyWaitならリピートさせずに押した瞬間・押し上げた瞬間どちらでも可能
http://ahkwiki.net/KeyWait

366 :名無しさん@お腹いっぱい。:2015/03/16(月) 11:49:34.04 ID:Wcaklw3v0.net
Fnキーの取得って無理ですか?
バッファローのUSBキーボードなんですが、Fn押しながらの別機能は使わないので他のキーを割り当てようと思ったのですが「Key history and script info」をしても出ませんでした。
キーのラベル載せてるサイトでもFnはありませんでした。
どうかよろしくお願いします。

367 :名無しさん@お腹いっぱい。:2015/03/16(月) 13:07:00.27 ID:fgVsYJTD0.net
むりです。そのキーはOSを介してるものじゃないので

368 :名無しさん@お腹いっぱい。:2015/03/16(月) 13:25:24.23 ID:VkS4pR1w0.net
やるならハードウエアレベルでドライバをハックする必要があるかと

369 :名無しさん@お腹いっぱい。:2015/03/16(月) 17:58:20.36 ID:ZkO6+tak0.net
関数やラベルを使わずに事前に定義した式を後で適用する方法はありますか?

これができるように

Var := "A"
A := "あ"
MsgBox, % %Var% ; あ

こんな感じでやる方法があるのか少し気になりまして

Var := "Var1 + Var2"
Var1 := 1
Var2 := 2
MsgBox, % %Var% ; 3

370 :名無しさん@お腹いっぱい。:2015/03/16(月) 18:40:29.52 ID:iquRvpTl0.net
最近同じやつが自己努力しないでずーっと同じようなレベルの質問繰り返してないか?
スレへの嫌がらせ?

371 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:01:50.08 ID:3Qa1+6+Q0.net
>>369
文字列を式として計算する機能は用意されていない
自分で書けばできるが大変、適当に書くとこうなる

Target := "Var1 + Var2"
Var1 := 1
Var2 := 2
RegExMatch(Target, "(.+?)\s*(\+)\s*(.+)", Shiki)
If (Shiki2 = "+")
 Var := Var1 + Var2
MsgBox % Var ; 3
Return

372 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:06:32.76 ID:GzqZZfsL0.net
>>365
どうもありがとうございました これで誤動作がなくなります

373 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:34:10.47 ID:ZkO6+tak0.net
>>371
力技でしか無理な感じですか
ありがとうございました

374 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:39:08.15 ID:wp7xGYTJ0.net
そういうeval的なのはライブラリとしてあったような

375 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:47:33.74 ID:D8AkpNrd0.net
04,12といった2つの数値から
04,05,06……11,12
という1づつ足していった数値を得たいんですが

04から一旦先頭の0を外してから1足して
その後5の先頭に0を付け足すということを繰り返すしかないでしょか

376 :名無しさん@お腹いっぱい。:2015/03/16(月) 19:52:28.85 ID:Yu0d7lgh0.net
てs

377 :名無しさん@お腹いっぱい。:2015/03/16(月) 21:16:01.55 ID:ZkO6+tak0.net
リストビュー内でのダブルクリック時の挙動をEnterを押した時と同じにしたいのですが
Enterキーを押した後の処理はホットキーラベル内で定義、Enterのホットキーラベルは複数なのでGosubは使わないという前提として
どのようにすればいいでしょうか?
直接キーを送ってみましたが反応しません

Gui, Add, ListView, gListView, 1
LV_Add("", "あ")
LV_Modify(1, "Focus Select")
Gui, Show
Return

ListView:
If (A_GuiEvent = "DoubleClick")
Send, {Enter}
Return

#If (その他の条件)

Enter::Return

#If (リストビューにフォーカスがある時の条件)

Enter::
MsgBox, OK
Return

#If (その他の条件)

Enter::Return

378 :名無しさん@お腹いっぱい。:2015/03/16(月) 21:26:44.43 ID:+TbA765R0.net
>>375
setformat

379 :365:2015/03/16(月) 22:54:45.83 ID:Wcaklw3v0.net
>>367-368
そんなに無理な事なんですかっ
何かしらを送信してるからわかるかと思ったんですが残念です
ありがとうございました。

380 :376:2015/03/16(月) 23:27:12.02 ID:ZkO6+tak0.net
Gosubで対応するしかないんですかね…
ホットキーラベルのところに並べて通常のラベルも置いたら目的の場所には飛べましたが、使い方としては問題ないんでしょうか?

ListView:
If (A_GuiEvent = "DoubleClick")
Gosub, EnterListView:
Return


#If (その他の条件)

Enter::Return

#If (リストビューにフォーカスがある時の条件)

EnterListView:
Enter::MsgBox, OK

#If (その他の条件)

Enter::Return

381 :名無しさん@お腹いっぱい。:2015/03/16(月) 23:42:44.13 ID:N7oXghhy0.net
関数使えばいい。
でもgosubを関数に直すと複雑怪奇になるからやめといた方がいい
場合によっては書き直すハメになる

382 :379:2015/03/17(火) 00:16:01.96 ID:Ev/aS3TK0.net
>>381
ありがとうございました

確かにそうなのですが、リストビューを関数で動的に幾つか作っていて、
それぞれに専用の関数を作ると煩雑な感じになってメンテナンス性が少し悪くなりそうなのです

383 :名無しさん@お腹いっぱい。:2015/03/17(火) 00:25:09.62 ID:T2p2xOY80.net
ahkスクリプト開始時点にフラグ用の変数を自動で読み込ませたいんですがどうしたらいいですかね?
こういう感じの記述でいうところのflag =1 の部分をスクリプト起動時点で読み込ませておきたいんです

flag = 1

A::
if flag = 1
tooltip,OK
else
return

384 :名無しさん@お腹いっぱい。:2015/03/17(火) 02:44:42.19 ID:909q+xHK0.net
そんな意味のない機能はない
init.ahkなどを用意してインクルードするか、nflagみたいにon/offを逆にした命名にする

385 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:08:24.71 ID:RMaqoVKg0.net
>>384
ムダに煽るなよ何言ってるのかわからんし

>>383
#ifdef的に使いたいってことかな
定数を初期化したいだけならAutoexecute領域に書いときゃいいよ
frag = 1 の下行にreturnつけときゃ望みの動作になる

スクリプト書き換えずにflagの値を都度変えたいのなら
iniReadでiniから読むか、コマンドラインオプションを読みとるように作ればいい

386 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:26:34.44 ID:909q+xHK0.net
>>385
はぁ?お前こそ何言ってんの?

387 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:38:07.65 ID:eiqJnQ120.net
そういう使い方するのは環境変数じゃねーの?

388 :名無しさん@お腹いっぱい。:2015/03/17(火) 08:55:27.85 ID:RMaqoVKg0.net
そんなにむずかしいことを書いたつもりはないが
質問者の意図も理解できてないようだし読解力に難のある人なのか

間違った回答を上から言い切りの形で出すのは一番やっちゃアカン

389 :名無しさん@お腹いっぱい。:2015/03/17(火) 09:32:31.76 ID:909q+xHK0.net
ムダに煽るなよ何言ってるのかわからんし

390 :名無しさん@お腹いっぱい。:2015/03/17(火) 13:26:49.14 ID:o/9LF89q0.net
とりあえずID:RMaqoVKg0がいつもの親切すぎる解答者じゃないことはわかる

391 :名無しさん@お腹いっぱい。:2015/03/17(火) 13:53:31.06 ID:N62n5Gpa0.net
穏やかな心を持ちながら激しい怒りによって目覚めた親切すぎる解答者

392 :名無しさん@お腹いっぱい。:2015/03/17(火) 15:45:16.26 ID:Kjo98OVb0.net
>>383の意図なるものが俺にはさっぱりわからんのだが
382に書いてるのをそのまま保存して実行すれば望み通りに動くだろ??

393 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:00:28.15 ID:ZWxLBT4z0.net
autoexecuteにreturnがないし
ホットキーのほうもelseのときしかreturn通らないから
まともに動かなくね?

394 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:07:41.79 ID:ZWxLBT4z0.net
まあ手直しすれば動くし>384が何故ないっていってるのかわからんけど
スプリクトの最初で変数初期化するのって無駄?自分よくやるけど

395 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:16:13.84 ID:Kjo98OVb0.net
ホットキーラベルが現れた時点でAutoExecuteセクションは勝手に終了するので
ReturnやExitはべつに必須なわけではない

ifが真だとreturnしないのは間違ってはいるが
これより後ろに何も記述がないのであればとりあえず動くことは動く

396 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:17:55.98 ID:MTZ2OOQ30.net
ID:909q+xHK0が赤っ恥書いただけだろ
あまり引っ張って晒してやるな

397 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:32:20.37 ID:Kjo98OVb0.net
インクルード使えって回答がおかしいとは思わんが

398 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:53:14.09 ID:A0XBm+WR0.net
そのままで動くならiわざわざncludeする意味なくね?
初期化対象の変数が大量にあるなら分けるのも手だけどさ

399 :名無しさん@お腹いっぱい。:2015/03/17(火) 16:55:45.01 ID:4Jayl0Jm0.net
includeにインクルードしてレスの意図を視覚的に表現とは高度な

400 :名無しさん@お腹いっぱい。:2015/03/17(火) 17:52:33.88 ID:wsdIwXMd0.net
>>399
パッと見必死こいてるのかと思ったがそういう意図が……

401 :名無しさん@お腹いっぱい。:2015/03/17(火) 18:24:57.70 ID:Gy9j9Bm90.net
これ作っとくと便利だぞっていうスクリプトや関数ありますか

402 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:28:44.57 ID:T2p2xOY80.net
382ですけどAuto execute sectionに変数を書き込むのとiniを使うやりかた両方使う感じにしました
ありがとうございました

403 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:44:58.58 ID:909q+xHK0.net
AutoExecuteぐらいとっくに知ってて初期化処理を分化するか無くしたいってことじゃないの?
エスパーが間違ってたら次から反省するよボク

404 :名無しさん@お腹いっぱい。:2015/03/17(火) 19:54:31.66 ID:909q+xHK0.net
あ、反省って言ったけど、ID:RMaqoVKg0への応対はまったく間違ってないと思ってるけどね

405 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:05:57.83 ID:m42dKMP+0.net
次とかいらないんでROMってて下さい

406 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:53:49.19 ID:2Xm/+h6R0.net
ん?リロってないでゴチャゴチャいってんの?
>403読んだらとっくに知ってた可能性なんかどこにもないことわかるけど

407 :名無しさん@お腹いっぱい。:2015/03/17(火) 20:54:57.62 ID:2Xm/+h6R0.net
レス間違え>402だた

408 :名無しさん@お腹いっぱい。:2015/03/17(火) 21:24:58.08 ID:909q+xHK0.net
>>406
言うこと変わらんからそのまま書いただけ

409 :名無しさん@お腹いっぱい。:2015/03/17(火) 21:49:56.30 ID:N62n5Gpa0.net
質問者の方がよほどまともだな…

410 :名無しさん@お腹いっぱい。:2015/03/17(火) 22:39:30.45 ID:909q+xHK0.net
質問者には大して不満なんて持ってないよ
今までも質問者を擁護こそすれ叩いたことなんて一度もないし
マニュアルを読み返したらAutoExecuteが思ったよりマイナーな機能であることも分かったし
質問の確認や回答の前提の前置きすら心掛けず思い込みでレスしたのは俺の責任と言える
鼻に付いたのはあの程度のレスで無駄な煽り認定を受けたことだよ
そんで親切な解説者とやらは結果が判明しない内から煽るな意味不だと言いつつ自分は碌に解釈の説明もしない
まあ消えて欲しかったら皆でこれっきりスルーしてね。それで判断するから

411 :名無しさん@お腹いっぱい。:2015/03/18(水) 02:41:59.87 ID:Lv3td3ic0.net
>>399
そのつもりならinの後に書くだろう

412 :名無しさん@お腹いっぱい。:2015/03/18(水) 08:50:07.14 ID:g479jRP10.net
次スレにはこれの追加が必要になるのか…

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

書き込むなカス

413 :名無しさん@お腹いっぱい。:2015/03/18(水) 09:21:42.29 ID:/YHMQWCO0.net
ヒントになる要素のないツンデレはただの貶しと同じ

質問者のレベルを見極められない時は初心者向けと上級者向け2つ回答を用意してやれば
大抵はどっちかがひっかかる

414 :名無しさん@お腹いっぱい。:2015/03/18(水) 09:53:22.79 ID:ZbfKR6320.net
じゃあそれも追加で
ぶっちゃけ無能に回答されても邪魔なだけなんだよねこっちは

415 :名無しさん@お腹いっぱい。:2015/03/18(水) 10:08:00.16 ID:/YHMQWCO0.net
あとはドンピシャ回答後のうろ覚え回答と
質問者から解決済出たあとの劣化ソース提供かな

解読の必要のある質問の場合はエスパーも賑やかしだけど流れは読んでほしいと思う

416 :384:2015/03/18(水) 10:39:52.84 ID:/YHMQWCO0.net
>>410
>そんで親切な解説者とやらは結果が判明しない内から煽るな意味不だと言いつつ自分は碌に解釈の説明もしない

>386,389は煽り以外の何者でもないと思ってたのでスルーした
まさか解釈の説明を求められてるとは夢にも思わなかったわ

煽りじゃなかったなら悪かったが
>383のifやreturnの使い方見れば質問者が構文よくわかってないのは明白だったし
最初についたレスがいきなり間違った回答だと質問者が混乱するので注意したまで

417 :名無しさん@お腹いっぱい。:2015/03/18(水) 13:09:17.92 ID:gTk+kb8K0.net
無知な奴と、押しつけがましい奴と、説教くさい奴と、
教えたがりな奴と、煽るだけの奴は書き込まなくていいよ

次スレからのテンプレね

418 :名無しさん@お腹いっぱい。:2015/03/18(水) 13:12:24.45 ID:Nx3BLbJN0.net
テンプレのQ3にあるコンビネーションキーですが、なんとか3キー以上同時押しできるようになりませんかねぇ
F13 & +j::とか

419 :名無しさん@お腹いっぱい。:2015/03/18(水) 15:46:25.75 ID:YQll6y190.net
>>418
コンビネーションキーではなく #If 使えばいい
安いキーボードだと同時押しの対応数が少ないので注意

420 :名無しさん@お腹いっぱい。:2015/03/18(水) 15:56:11.42 ID:vVDvrMa60.net
AHKじゃ関数の戻り値を複数取得ってできないん? gosubでやるしかないかな

421 :名無しさん@お腹いっぱい。:2015/03/18(水) 16:07:06.68 ID:Nx3BLbJN0.net
>>419
つまりGetKeyStateなわけですね。ありがとうございます
他と干渉しないか気をつけつつ使ってみます

422 :名無しさん@お腹いっぱい。:2015/03/18(水) 16:25:51.14 ID:xs7ZGE6R0.net
>>420
global変数か、引数をByRref渡しにするかで対策

423 :名無しさん@お腹いっぱい。:2015/03/18(水) 17:01:44.71 ID:vVDvrMa60.net
globalがお手軽だね。ありがとう

424 :名無しさん@お腹いっぱい。:2015/03/18(水) 18:06:52.01 ID:tREIlTjw0.net
>>420
解決済みのようだけど、自分は配列に入れて似たようなことやってたよ
文法的に正しいのか分からないけど

Function()
{
A := "あ"
B := "い"
Return {1: A, 2: B}
}

Var := Function()
MsgBox, % Var[1] Var[2] ; あい

425 :423:2015/03/18(水) 18:14:24.30 ID:tREIlTjw0.net
あ、"Var"より"Array"の方が名前的に適切だった

426 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:15:08.19 ID:J9qjAr580.net
>>424
こういうスマートな書き方あったのかー
自分はわざわざ関数使ってた

CreateArray(values*) { ; 可変長引数で配列作成
return values
}
Function() {
A := "あ", B := "い"
return CreateArray( A, B )
}

427 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:24:52.09 ID:4240iYLg0.net
フォトショップを使っている時に特定動作をすると現在ブラシツールが選択している色を反映したProgressバーをマウスカーソルポジションから100ピクセル下に表示するようにしてます。
このProgressバーはタイマーで300ms後に消えるようにはしてるんですが絵を書いている時だとたまにProgressバーが消える前にProgressバー自体をクリックしてしまい
フォトショップが非アクティブになってしまって作業が中断してしまいます。これを避けるためにマウスカーソルが30ピクセル動いたらProgressバーを強制的に消すような設定をしていますが
これだと色々と不都合があります。なのでもっと手っ取り早くProgressバーをクリック不可能=アクティブ化できない状態にできないかと考えています。
どうにかできないものでしょうか?

428 :名無しさん@お腹いっぱい。:2015/03/18(水) 19:27:15.37 ID:NdwCM8GW0.net
自分はいつも「Function1」の方法でやってるな

Var := Function1()
MsgBox, % Var[1] Var[2] ; あい
Var := Function2()
MsgBox, % Var["亜"] Var["井"] ; をん

Function1() {
A := "あ", B := "い"
Return [A, B]
}
Function2() {
A := "を", B := "ん"
Return {亜:A, 井:B}
}

429 :名無しさん@お腹いっぱい。:2015/03/18(水) 20:54:46.68 ID:/YHMQWCO0.net
>>427
よくわかんないけどEnabledをfalseにしたらいいんじゃね

430 :名無しさん@お腹いっぱい。:2015/03/18(水) 21:11:28.79 ID:4240iYLg0.net
>>429
ProgressバーにEnabledオプションないですよね?

431 :名無しさん@お腹いっぱい。:2015/03/18(水) 21:53:06.70 ID:57qzseOZ0.net
>Progressバーをクリック不可能
WinSet, ExStyle, +0x00080020, (Progressバーを指定)

432 :名無しさん@お腹いっぱい。:2015/03/18(水) 23:26:11.78 ID:4240iYLg0.net
>>431
できました ありがとうございます でもプログレスバーのテキストが消えてしまいました
どう設定したらいいんでしょうか?

433 :名無しさん@お腹いっぱい。:2015/03/18(水) 23:45:03.67 ID:4240iYLg0.net
いやこれでいけました sleep,10を挟むとテキストが消えないです なんででしょうかね?sleepないとテキストが消えます。

F2::
x :=A_ScreenWidth/2
y := A_ScreenHeight/2
Progress , 1:B1 x%x% y%y% h200 w200 CWFFFFFF c11 CT000000 ZX0 ZY20 ZH0 , ,TEST, TESTTEST,
sleep,10
WinSet, ExStyle, +0x00080020, TESTTEST

return

434 :名無しさん@お腹いっぱい。:2015/03/19(木) 00:18:05.88 ID:Hu/LxZVi0.net
あとすいません これなんですけど F2を押しっぱなしにするとマウスカーソルの位置にプログレスバーが追随してきますがプログレスバーが更新される度にプログレスバーが点滅しているように見えてしまいます。
これを点滅しないようにできないでしょうか?

F2::
Mousegetpos,x,y
Progress , 1:B1 x%x% y%y% 50 50 CWFFFFFF c11 CT000000 ZX0 ZY20 ZH0 , ,TEST, TESTTEST,
sleep,10
WinSet, ExStyle, +0x00080020, TESTTEST

return

435 :名無しさん@お腹いっぱい。:2015/03/19(木) 19:58:13.76 ID:npLKt0VW0.net
wget4win的なものでホームページの更新確認巡回とかさせてる人いたら是非パクらせてくださいm(__)m

436 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:10:00.40 ID:En+tbqHp0.net
もし変数の中身に関数の名前があるなら関数を呼び出したいんですが、こっからどうすればいいです?

If(ISFunc(Funcname))


gosubもsendも使えません。Funcname変数を展開したいだけなんです

437 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:27:45.05 ID:U+fiuP9W0.net
>>435
>>245

438 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:34:06.23 ID:npLKt0VW0.net
巡回関係はタブーなんですか……失礼しました

439 :名無しさん@お腹いっぱい。:2015/03/19(木) 20:35:13.36 ID:+aahqHLj0.net
何関係であろうがクレクレは歓迎されない

440 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:01:33.16 ID:k6VKmFFQ0.net
>>436
ttp://ahkwiki.net/Func_Object

If (fn := Func("TEST")) {
 fn.()
} Else {
 MsgBox NO
} Return

TEST() {
 MsgBox OK
}

441 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:03:45.77 ID:1kqhiWu90.net
>>436
Funcname := "kansuu"
If ISFunc(Funcname) {
%Funcname%()
}

kansuu() {
MsgBox, kansuu jikkou
}

442 :名無しさん@お腹いっぱい。:2015/03/19(木) 21:23:37.59 ID:En+tbqHp0.net
>>440-441
どっちもできました。助かりました

443 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:16:16.65 ID:xIWxMLXz0.net
変数の中に文字列があるんですが、これを分解して前半部分と後半部分に分けたいんです。
要するに中には関数の全文が入ってるわけですが、これを>>441でやった場合、関数の値は指定されませんよね。なので

Funcname := "kansuu"
If ISFunc(Funcname) {
%Funcname%(%FnVar%)
}

kansuu(hoge)

で、()を区切り文字にして%Funcname%と%FnVar%各々 に値を入れたいんですが、なにか使えるコマンドはありますか?

444 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:41:24.79 ID:xIWxMLXz0.net
あ、いえ、出来ました。

445 :名無しさん@お腹いっぱい。:2015/03/20(金) 21:51:18.24 ID:alc6b5t00.net
UrlDownloadToVarでユーザーIDとパスワードを入力してログインした状態の値を取得したいのですが

http://www.autohotkey.com/board/topic/9529-urldownloadtovar/page-7#entry671474

このページのコードを使えばそのようなことができるんでしょうか

446 :名無しさん@お腹いっぱい。:2015/03/22(日) 00:29:21.74 ID:GkHCJ2Q90.net
外部アプリのリストビューを自動でソートさせたいのですが、カラムの座標を指定してマウスでクリックさせる方法以外にありますか?

447 :名無しさん@お腹いっぱい。:2015/03/22(日) 02:30:02.26 ID:SO90yV1k0.net
>>446
ショートカット(設定されているなら)
コントロールに直接送る(コントロール取得できるなら)

448 :名無しさん@お腹いっぱい。:2015/03/22(日) 04:51:19.17 ID:GkHCJ2Q90.net
>>447
ショートカットはないようですが、コントロール名は"SysHeader321"でした
指定カラムをソートするコマンド等があるのでしょうか?

449 :名無しさん@お腹いっぱい。:2015/03/22(日) 05:10:51.88 ID:SO90yV1k0.net
>>448
どんなコマンドがあるのか目を通すのが先じゃない?
アプリが何なのか分からないので答えようが無い

450 :名無しさん@お腹いっぱい。:2015/03/22(日) 06:34:37.95 ID:GkHCJ2Q90.net
>>449
一応一通り見て、Controlコマンド辺りかなと思ったのですが、任意のカラムをソートできるようなものが見当たらないので確認してみました
EveryThingというアプリで、どのカラムを選択してもコントロール名は"SysHeader321"と表示されます

451 :名無しさん@お腹いっぱい。:2015/03/22(日) 06:45:46.32 ID:Lq8NvNP20.net
>>450
EveryThingならメニューからキー操作で並び替えできるからそっちを使った方がいいんじゃない
表示(V)>並び替え(o)>
で、Ctrl+数字と昇順(A)・降順(D)ってデフォで設定されてるし、これ自体カスタマイズできるから
もっと楽にやれそう

452 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:17:09.42 ID:GkHCJ2Q90.net
>>451
いつの間にかアプデでそのようなメニュー&ショートカットが加わってたのですね。ありがとうございました

結局のところ、コマンド類でこのようなカラムをソートするのは不可能なんですかね?
(他にも同じようなリストビューを持つアプリが幾つかあって、今のところ大きな支障はないのですが、気になったので一応)

453 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:29:27.13 ID:Lq8NvNP20.net
>>452
そのあたりのことは詳しく分からないし、そのソフトにもよるのかもしれないけど、
FirefoxみたいなメジャーなソフトでもClassNNが取得できなかったりするくらいだから、
どんなソフトでもソート部分が取得できて、それが機能するとは限らないと思う
ホットキーがないのなら、それこそ、同位置・同サイズを前提にしてクリックさせる方が現実的かも

454 :名無しさん@お腹いっぱい。:2015/03/22(日) 07:38:20.66 ID:GkHCJ2Q90.net
>>453
やはり最終的にそうなりますか。ありがとうございました

455 :名無しさん@お腹いっぱい。:2015/03/23(月) 21:14:55.35 ID:bUt74JCu0.net
alt+左クリックで関数をループ実行させてなおかつaltと左クリックを押し続けるような動作をさせたいんですが
こういう感じのループを使ってみましたが左クリックを押し上げてからSend,{Lbutton up}{Alt UP}が実行されるまでに時間がかかるので
左クリックを押し上げても最初のdownが解除されない状態が400ミリセカンドくらい続きます
左クリックを押し上げた瞬間にSend,{Lbutton up}{Alt UP}をきっちり実行させることって無理でしょうか?

!Lbutton::
Send,{Alt down}{Lbutton down}
Loop
{
GetKeyState, state, Lbutton , p
if state = u
break
}
Send,{Lbutton up}{Alt UP}
return

456 :名無しさん@お腹いっぱい。:2015/03/23(月) 21:22:45.60 ID:bUt74JCu0.net
400msは言いすぎました 50msくらいです

457 :454:2015/03/23(月) 21:31:13.83 ID:bUt74JCu0.net
またまたすいません どう考えても自分の使ってる関数のせいで遅れてました
やっぱり質問はなかったことにしてください

458 :名無しさん@お腹いっぱい。:2015/03/24(火) 01:12:05.76 ID:8+a2TfNI0.net
Firefox上のリンクや選択状態にしたテキストをahkで作ったguiにD&Dしたいんですけどどうすればいいのでしょうか
現状guiのウィンドウ自体や、エディットコントロールにドロップしようとしても
マウスカーソルが丸に斜め線が入ったものになりできません
(FirefoxからのD&D自体はIEの文字入力欄やデキストエディタ等なら受け取れるのは確認しています)

よろしくお願いします

459 :名無しさん@お腹いっぱい。:2015/03/24(火) 01:56:10.17 ID:SYc3t2JM0.net
>>458
Send ^c

460 :名無しさん@お腹いっぱい。:2015/03/24(火) 17:28:21.15 ID:vRsuGYqF0.net
#IfWinActiveなのですが、タイトルが2つのときのORをしたいときはどうしたらいいのでしょうか
たとえば、2つのウインドウがあってそれらのタイトルが
hoge hoge
hage hage
のとき、
#IfWinActive hoge hoge | hage hage
#IfWinActive "hoge hoge" | "hage hage"
でも動きません

461 :名無しさん@お腹いっぱい。:2015/03/24(火) 17:44:06.20 ID:b40haFUl0.net
#IfとWinActive()を使う

462 :名無しさん@お腹いっぱい。:2015/03/24(火) 19:11:02.58 ID:vRsuGYqF0.net
出来ました。ありがとうございました
#If WinActive("hoge hoge") | WinActive("hage hage")
最後は
#if
しておけばいいのですね

463 :名無しさん@お腹いっぱい。:2015/03/24(火) 20:40:58.30 ID:hVYozaQf0.net
>>459
それぐらいしかやり用ないですかね
D&Dの挙動が一番理想に近いんですが

464 :名無しさん@お腹いっぱい。:2015/03/24(火) 20:41:56.00 ID:hVYozaQf0.net
ん、なんかID変わってますけど>>458です

465 :名無しさん@お腹いっぱい。:2015/03/24(火) 21:13:42.60 ID:s+pzoKKw0.net
>>463
そのままのコマンド、MouseClickDragでできるかも?
winactivateも必要かな?
動くかどうか実験できないんでスマナイね。

ファイルをアプリにD&Dする、「Simulate Drop Files」っていう関数は使っているから知ってるんだが…

466 :名無しさん@お腹いっぱい。:2015/03/24(火) 23:41:52.44 ID:hVYozaQf0.net
>>465
MouseClickDragではできませんでした。ありがとうございます

結局ドラッグ操作にはなりませんでしたが、MGLで
MG_Move()、MouseGetPos、MG_CheckCursor、ControlSendあたりを使ってゴリ押しました。
貼ろうとも思いましたが、長さ的に分割しないと投稿できないしそこまでお目汚しする程のものではないのでよしときました

>>459さんもありがとうございました

467 :名無しさん@お腹いっぱい。:2015/03/26(木) 15:58:35.86 ID:Bx9NsndY0.net
範囲に入ったらツールチップ表示ってどうにかできませんかね?

468 :名無しさん@お腹いっぱい。:2015/03/26(木) 15:59:55.88 ID:Bx9NsndY0.net
Settimerでやりたいんですが、そもそも座標をトリガーにすることって出来るんでしょうか?
#Persistentを使うしかない感じです?

469 :名無しさん@お腹いっぱい。:2015/03/27(金) 01:34:28.37 ID:6CJdtRAy0.net
「マウスが〜」ってことでいいのかな?

>Settimerでやりたいんですが、そもそも座標をトリガーにすることって出来るんでしょうか?
Settimer使うんでしょ?単純にマウス座標とその範囲の座標とを比べればいいじゃない

>#Persistentを使うしかない感じです?
settimer使うんならもちろん常駐が必要で、コード的に#Persistentがなきゃ常駐できないんなら使えばいい

何を聞きたいのかいまいちよく分からんな

470 :名無しさん@お腹いっぱい。:2015/03/27(金) 09:21:50.06 ID:dvbICV0C0.net
Settimerは使いたいのですがぶっちゃけ#Persistentは使いたくないんです。常駐してしまうのではなくonoffを切り替えたいので

471 :名無しさん@お腹いっぱい。:2015/03/27(金) 10:31:53.35 ID:jwAKZjot0.net
Settimerって常駐しなきゃ無理でしょ

472 :名無しさん@お腹いっぱい。:2015/03/27(金) 11:13:58.23 ID:YaF88CcH0.net
SetTimerのON/OFFはAHK常駐してなかったらできない

#Persistentの記述が嫌なら適当なホットキーを突っ込んどく
SetTimer On/OFFでも割り当てとけばいい

使わない時はAHKが動いている事自体が嫌だということなら
任意のタイミングでExitAppするコードを組み込んでおけばいい

473 :名無しさん@お腹いっぱい。:2015/03/28(土) 00:56:43.77 ID:5s82G7GG0.net
特定のキーを押す毎にアルファベットのa-zを順にsendしたいのですが
変数に整数を入れて1ずつ増やした時に
if文を使わずに直接変数からアルファベットに変換する方法は無いでしょうか?

474 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:28:34.00 ID:EeJsQ2o90.net
Transform

475 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:32:28.86 ID:1IsZlfKl0.net
>>473
zまでいったらaに戻るのかとか、途中でリセットしてaに戻したりする必要あるのかとか
細かいことがわからんけど↓みたいな感じは?

F1::
n++
Send, % Chr(n+96)
Return

476 :名無しさん@お腹いっぱい。:2015/03/28(土) 01:54:33.89 ID:5s82G7GG0.net
>>475
出来ました、完璧です
ありがとうございます
別のキーでaに戻すようにしてあります
ループするかはまだ考えていませんでした

477 :名無しさん@お腹いっぱい。:2015/03/30(月) 01:08:05.56 ID:ITanFaH/0.net
チルダキーを付けて動作させたいものとさせたくないものがあるんですがそういうことってできますか?
たとえばあるアプリで

~Space & 1::soundbeep
Space & 2::soundbeep

の2つの設定を作りましたが、上だけはチルダありで、下はチルダなしでSpaceキーを無効化したいんですが
この2つを書いてしいまうと両方共Spaceが生きたままになってしまいます

478 :名無しさん@お腹いっぱい。:2015/03/30(月) 03:36:44.73 ID:ITanFaH/0.net
>>477は勘違いでした なかったことにしてください

479 :名無しさん@お腹いっぱい。:2015/04/03(金) 11:51:23.93 ID:MQyEHpAC0.net
外部にあるファイルの関数って呼び出せないかな?
便利にするためにいろいろ関数作ってたら無軌道に増えてって、
新しい.ahkファイルを作るたびに今までの関数全部コピペしなきゃならないんだけどいい方法ある?

480 :名無しさん@お腹いっぱい。:2015/04/03(金) 12:31:14.05 ID:zkU3W2Z+0.net
Wikiで「関数」の項目を読む

481 :名無しさん@お腹いっぱい。:2015/04/03(金) 12:54:27.64 ID:MQyEHpAC0.net
>>480
ファイル読み書き系のコマンドばっか眺めてたわすまんかった

482 :名無しさん@お腹いっぱい。:2015/04/03(金) 14:21:55.84 ID:5KU6O+Hk0.net
右クリックのクラスって取得できません?
Appkeyでトグルさせたいんです。右クリックコンテキストの有無で。

483 :名無しさん@お腹いっぱい。:2015/04/04(土) 10:45:18.25 ID:81olN86v0.net
a & b::send,c
こうやった場合やGetKeyStateを使っても
aが死ぬんですが何故でしょうか?

484 :名無しさん@お腹いっぱい。:2015/04/04(土) 11:05:05.40 ID:NdWTHlxL0.net
仕様だから

485 :名無しさん@お腹いっぱい。:2015/04/04(土) 11:16:06.11 ID:3yMU30pq0.net
つかGetKeyState使うんならこうじゃね?
b::
  If(GetKeyState("a")) {
    Send, c
  } else {
    Send, b
  }
  Return

そりゃコンビネーションキーにしたらaは死ぬよ

486 :名無しさん@お腹いっぱい。:2015/04/04(土) 13:21:47.90 ID:81olN86v0.net
おーありがとうございます
関数の使い方を間違っていました
勉強になります

487 :名無しさん@お腹いっぱい。:2015/04/04(土) 20:11:24.01 ID:VDUMwzcu0.net
>>482
MouseGetPos

488 :名無しさん@お腹いっぱい。:2015/04/04(土) 21:29:00.06 ID:+HRqUzbg0.net
>>487
できなかったです。

489 :名無しさん@お腹いっぱい。:2015/04/04(土) 21:43:24.71 ID:py+t02Yz0.net
メニュー、ダイアログ系のClassはだいたい ahk_class #32770
コンテキストメニューかどうかの判別方法は知らん

490 :名無しさん@お腹いっぱい。:2015/04/05(日) 10:24:32.11 ID:CDj9mNfl0.net
>>488
+WinGetClass

491 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:35:27.10 ID:20EMD3Aj0.net
初歩的な質問なのですが
「F12」キーと「A」キーを押した場合「b」と入力したい場合どう記述すればよいのでしょうか?
(F12a::Send b とかやってみたのですが出来なくて…)

492 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:40:49.34 ID:7ACApk/G0.net
数レス前もしくはautohotkey wiki と検索して出るサイトを見て下さい

493 :名無しさん@お腹いっぱい。:2015/04/05(日) 23:42:02.37 ID:05yqFFwC0.net
テンプレに書いてるしw

494 :名無しさん@お腹いっぱい。:2015/04/06(月) 00:20:56.69 ID:MlgJxlGV0.net
>>492
>>493
ありがと。&と{}ってやつで囲ったらできました
プログラミング的なのに縁遠くてチンプンカンプンでした

495 :名無しさん@お腹いっぱい。:2015/04/06(月) 00:27:16.16 ID:dVbhCwY90.net
wikiはプログラミングできない奴向けの解説だろうに何言ってんだ?

496 :名無しさん@お腹いっぱい。:2015/04/06(月) 01:19:59.57 ID:KiKP6hcl0.net
すみません、お尋ねします。
IEのリンク上で右クリックメニューを表示させた際に「ショートカットのコピー(T)」のあるウィンドウが発見された時に、任意のコードを実行したいのですが
「ショートカットのコピー(T)」をWinTextに指定すると反応が無くて困っています。
何か根本的な事を間違っていると思うのですが、どうかお力添えをお願いします。

Loop {
WinWait, ahk_class #32768, ショートカットのコピー(T), 5
If ErrorLevel = 0
{
msgbox, 5秒以内に発見
} else If ErrorLevel = 1
{
msgbox, 5秒以内に発見出来ず
}
}
return

esc::exitapp

497 :名無しさん@お腹いっぱい。:2015/04/06(月) 09:32:17.27 ID:GFGxqZ1b0.net
右クリメニューのテキスト取得は多分できないから無理

質問するときは具体的に何のためにそれがしたいのか書いたほうが代案出してもらえていいよ
もしカーソルがリンク上にあった場合のみ特定の処理がしたいなら
変数A_Cursorで現在のカーソルの形が取得できるからそれで判別

あと何かを監視したい場合はLoopじゃなくてSettimerを使うこと

498 :名無しさん@お腹いっぱい。:2015/04/06(月) 09:53:18.07 ID:d6KiG/Qn0.net
コンテキストメニューのテキストを取るのは標準コマンドじゃ無理と思う
自分はImageSearch で無理矢理に検知させてるわ
スクショから「ショートカットのコピー(T) 」の部分を切りだして検索元画像にするといい

フォント変わったらアウトだし汎用性皆無だけどね

499 :名無しさん@お腹いっぱい。:2015/04/06(月) 14:34:23.14 ID:KiKP6hcl0.net
>>497 >>498
解りました、ありがとうございます。

500 :名無しさん@お腹いっぱい。:2015/04/06(月) 15:32:05.38 ID:kSkTXHTB0.net
a::
if GetKeyState("Space","P"){
send,あ
}else{
send,a
}

i::
if GetKeyState("Space","P"){
send,い
}else{
send,i
}

この時にaと打つと「ai」が送信、Space+aと打つと「あい」が送信されます。
なぜaを打つと下のiのifまで実行されるのでしょうか?
対処方法を教えください。

501 :名無しさん@お腹いっぱい。:2015/04/06(月) 15:46:24.77 ID:yEh88lnd0.net
>>500
Return

解説と見本を読まないと余計に時間かかる。

502 :名無しさん@お腹いっぱい。:2015/04/06(月) 16:38:09.75 ID:kSkTXHTB0.net
>>501
ありがとうございます。
解説をじっくり読みます

503 :名無しさん@お腹いっぱい。:2015/04/06(月) 21:45:34.33 ID:HmzKuP6Q0.net
以前ここで、マウスのXbutton1、2以上の拡張ボタンをどう割り当てればいいか質問した者です
そのときF13, F14・・・に割り当てればいいということだったのですが
いざ、マウスを買って来たら、キーのリバインド先は実際にキーボードを押さなければならず
F13のようなキーを割り当てることができませんでした
この場合どのようにすればいいのでしょうか?

504 :名無しさん@お腹いっぱい。:2015/04/06(月) 21:47:39.46 ID:4m8lMHdu0.net
まるで成長しとらんな

505 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:16:53.93 ID:yEh88lnd0.net
>>503
マウスの設定ファイルを自分で探して直接書き換えるか
適当なキーを一時的にF13に割り当てればいい

F1::F13

506 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:18:38.68 ID:d6KiG/Qn0.net
そういう時はマウスの型番やメーカーは書け、情報隠すと2度手間でうざい

ロジならuberOptionsで可能
http://ahkwiki.net/Faqs

そうでないなら割り当て設定時用に F3::F13 とかリマップスクリプト書いてF3押したらいいんじゃね
AHKのリマップではダメなら一時的にChangeKeyで割り当て変換したらいいんじゃね

507 :名無しさん@お腹いっぱい。:2015/04/06(月) 22:31:44.20 ID:HmzKuP6Q0.net
>>505
ありがとうございます
それはなんとか私でも思いついてやってみたのですが
ユーティリティが反応しません
F1::F12とすればちゃんと受理してくれます
Razer DeathAdderというマウスです

508 :名無しさん@お腹いっぱい。:2015/04/07(火) 03:58:04.14 ID:srF0sXjc0.net
Logiならドライバ入れて設定できたんだがRazerは使ったことないからわからないな
ハードウェア板向きの話題じゃねえかな

509 :名無しさん@お腹いっぱい。:2015/04/07(火) 08:19:19.01 ID:Uvh4pKKx0.net
RazerはF12までしか対応してなかった記憶

510 :名無しさん@お腹いっぱい。:2015/04/08(水) 12:15:39.88 ID:EtNb5qyG0.net
(誤検出、誤動作なく)左右同時押しを検出する方法があったら教えて下さい

511 :名無しさん@お腹いっぱい。:2015/04/08(水) 15:45:32.91 ID:DTorG3cd0.net
AutoHotkeyサンプル集が404になってる
大変お世話になりました

512 :名無しさん@お腹いっぱい。:2015/04/09(木) 00:14:36.87 ID:y/OsY/dd0.net
こういう記述をしたときにahk_class AAAのアプリがアクティブでもaキーを押すとsend,cの動きをしてしまうんですが普通ですかね?
限定してるのでa::soundbeepが動いてくれると思ってたんですが

#ifwinactive ahk_class AAA
a::soundbeep
#ifwinactive

a::send,c

513 :名無しさん@お腹いっぱい。:2015/04/09(木) 13:53:03.28 ID:hEHWFs4Q0.net
クラス指定間違ってるんだろ

514 :名無しさん@お腹いっぱい。:2015/04/13(月) 21:39:03.72 ID:fkQnGzUR0.net
Pause/BreakキーにWinキーを配置したいんですが
Pause::Send,{RWin}
だと長押しが連打判定になってしまいました
Win+Rキーなどのショートカットを使いたいのですがいい方法はないでしょうか

515 :名無しさん@お腹いっぱい。:2015/04/13(月) 21:52:36.76 ID:k7WMUgej0.net
>>514
KeyWait
連打→キーリピート

まず解説とコマンド全部読む方が先

516 :名無しさん@お腹いっぱい。:2015/04/15(水) 14:54:50.39 ID:oL1oACbx0.net
アップローダにあった
WindowGrid.ahk
コレどうやって使えばいいの。

517 :名無しさん@お腹いっぱい。:2015/04/15(水) 18:37:20.06 ID:/pg2z1j+0.net
先頭にホットキー書いてあるじゃん

518 :名無しさん@お腹いっぱい。:2015/04/15(水) 20:08:36.02 ID:4DIcQuGQ0.net
座標とかが出るだけなんだよな

519 :名無しさん@お腹いっぱい。:2015/04/15(水) 21:41:01.59 ID:/pg2z1j+0.net
いや?カクカクとリサイズしたり移動したりできたぞ

520 :名無しさん@お腹いっぱい。:2015/04/15(水) 21:45:56.89 ID:4DIcQuGQ0.net
あーctrl+Rドラッグで機能するってことね。

521 :名無しさん@お腹いっぱい。:2015/04/16(木) 22:52:54.38 ID:S7s+M0q20.net
>>514
オレも Pause にキー割り当てようと思ってしてみたんだけど、
Pause/Break はちょっと特別なようで、割り当ないで他のキーで
回避してる。上手くいかなかった。

522 :名無しさん@お腹いっぱい。:2015/04/17(金) 06:08:20.71 ID:LpK03rxv0.net
google.comでの検索結果上で何かキーを打つと、
同じクエリでgoogle.co.jpで検索してくれるスクリプトをスマートに作る方法はないですかね?
アドレスバーのcomを書き換える方法しか思いつかないんですが、誤爆しそうで・・

523 :名無しさん@お腹いっぱい。:2015/04/17(金) 10:40:17.02 ID:Ym5918OY0.net
誤爆しそうって、書き換えるURLの文字列位置を間違える的な意味で?
そういう意味ならRegExReplace()で大丈夫かと

524 :名無しさん@お腹いっぱい。:2015/04/17(金) 10:48:29.50 ID:h8ag0FEx0.net
そんなのはブックマークレットでいいじゃん
つか.comと.co.jpでなんか違うの?

525 :名無しさん@お腹いっぱい。:2015/04/17(金) 13:25:20.80 ID:LpK03rxv0.net
jpだと検索結果違う時あったり画像検索のカテゴリ分け使えなかったり
経路検索でワンクッションはさまないといけなかったりいろいろ面倒だったので、、
ブックマークレットとkeyconfig for chromeが俺としては楽そうです。
ありがとうございました!

526 :名無しさん@お腹いっぱい。:2015/04/17(金) 18:30:25.87 ID:DGRHVW9D0.net
むしろそれらの情報が有用だわ
なんとなくくせでcom使っててよかった

527 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:54:32.33 ID:CNY2SU6G0.net
ボタンを押すたびに変数を増やす方法が上手くいかないんですが
教えていただけないでしょうか

528 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:56:25.11 ID:t7c8Vf1Q0.net
変数++でいいやん

529 :名無しさん@お腹いっぱい。:2015/04/17(金) 23:57:17.74 ID:arw34YO40.net
金も払わず質問とな

530 :名無しさん@お腹いっぱい。:2015/04/19(日) 21:15:46.82 ID:R2kTS/HR0.net
箱1コンを認識してくれない

531 :名無しさん@お腹いっぱい。:2015/04/19(日) 21:25:05.57 ID:4prPKQjo0.net
AHKのせいちゃうがな

532 :名無しさん@お腹いっぱい。:2015/04/20(月) 01:00:46.02 ID:Cay/m/LD0.net
くそうNHKめ!

533 :名無しさん@お腹いっぱい。:2015/04/23(木) 16:10:33.63 ID:YQQckzSl0.net
AHKでguiのウィンドウを作成して、そのウィンドウを OnMessageを使用して
マウスのクリックイベントを拾い、都度 Gui, Add, Text で
そのウィンドウに時刻を表示するスクリプトを作りました。
ログとして表示するのが目的なのですが、この場合にウィンドウの一番下まで
テキストで埋まると以降は何も表示が更新されません。
テキストが下まで来たらスクロールされるにはどうしたらいいでしょうか?

534 :名無しさん@お腹いっぱい。:2015/04/23(木) 16:39:46.31 ID:K1DogRPZ0.net
Gui, Add, Edit, ReadOnly HScroll VScroll

535 :名無しさん@お腹いっぱい。:2015/04/23(木) 17:46:28.27 ID:YQQckzSl0.net
>>534
ありがとうございます

Gui, Show, w1024 h768
OnMessage(0x204, "WM_RBUTTONDOWN")
Return

GuiClose:
ExitApp

WM_RBUTTONDOWN(wParam, lParam)
{
ntime = %A_Year%/%A_Mon%/%A_MDay% %A_Hour%:%A_Min%:%A_Sec%:%A_MSec%
Gui, Add, Text,, %ntime%
Return
}

こんな感じで作ったのですが、Gui, Add, Text だと HScroll VScroll のオプションつけても
希望通りになりませんでした、Gui, Add, Edit は使った事がないのですが
どう転用すればいいのでしょうか?

536 :名無しさん@お腹いっぱい。:2015/04/23(木) 18:51:14.48 ID:Qpc6t8jV0.net
>>535
二度目以降はGui作成ではなくGuiControlで内容変更

Gui, Add, Text, vTEST w150
Gui, Show
; OnMessage(0x204, "WM_RBUTTONDOWN")
Return

; WM_RBUTTONDOWN() {
; GuiControl,, TEST, % A_Year "/" A_Mon "/" A_MDay A_Hour ":" A_Min ":" A_Sec ":" A_MSec
; }

GuiContextMenu:
GuiControl,, TEST, % A_Year "/" A_Mon "/" A_MDay A_Hour ":" A_Min ":" A_Sec ":" A_MSec
Return

537 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:15:24.17 ID:YQQckzSl0.net
>>536

ありがとうございます
なんだか後出しみたいで本当に申し訳ないのですが>>533にある
「ログとして表示するのが目的なのですが」の通り、あくまでログウィンドウが目的なので
ウィンドウサイズ1024 x 768の複数行表示なのです

538 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:46:26.44 ID:Qpc6t8jV0.net
後は読めば分かる

539 :名無しさん@お腹いっぱい。:2015/04/23(木) 19:58:55.55 ID:YQQckzSl0.net
>>536
一行目の Gui, Add, Text, vTEST w150

Gui, Add, ListBox, vTEST w1024 h768
にしてみた所かなり自分のイメージ通りになりました
ただ、依然として自動で最終行に追随してスクロールはしてくれないです
ここがなんとかなれば良いのですが…
なんにしてもみなさん助かりました、ありがとうございました

540 :名無しさん@お腹いっぱい。:2015/04/23(木) 20:12:55.08 ID:Qpc6t8jV0.net
>>539
Ctrl+EndかEnd

541 :名無しさん@お腹いっぱい。:2015/04/23(木) 20:50:20.51 ID:YQQckzSl0.net
>>540

実はさっきの書き込みをしたすぐ後に、
最終行でログが更新されて行数が増える度に渋々PageDown押してた時に
これって、わたしがPageDown押す代わりにスクリプトに押させればいいだけなんじゃ…
と気付いて、マウスイベントから戻る直前に Send, {PgDn} して解決してました
ごり押しの解決ぽかったので、ちょっと言えなかったんですけれども

最後まで細やかなフォローありがとうございました

542 :名無しさん@お腹いっぱい。:2015/04/24(金) 12:43:41.18 ID:f5QeCqZK0.net
;--------
a::1

#IfWinActive, 〜
a::2
;--------
これは期待通り動作するのに

;--------
a::Send, 1

#IfWinActive, 〜
a::2
;--------
これだと下が機能しないのは仕様ですか?

;--------
a::1

#IfWinExist, aaa
a::2

#IfWinActive, aaa
a::Send, 3
;--------
#If〜は条件が被ってたら先頭が優先なはずだけど、これだと後ろが優先されるのもよくわからない

wikiのどこかに説明ある?

543 :名無しさん@お腹いっぱい。:2015/04/24(金) 12:52:47.77 ID:IY9zVxvC0.net
なんで#Ifで閉じないの?デバッグのつもりなの?

544 :名無しさん@お腹いっぱい。:2015/04/24(金) 13:32:41.42 ID:m+JL+NGt0.net
俺も同じことでめっちゃ躓いたんだけど
そういう時は

#IfWinActive, 〜
a::Send, {2 down}
a up::Send, {2 up}

みたいに二行に分けて書かないとダメ
>>542の書き方ではなぜか

a::Send, 1
a up::Send, {2 up}

と解釈されてしまいうまく動作しない

545 :名無しさん@お腹いっぱい。:2015/04/24(金) 17:00:56.15 ID:f5QeCqZK0.net
リマップがホットキー変換されるときのバグっぽいのかな?
リマップとホットキーの違いはどうにも理解が難しい

546 :名無しさん@お腹いっぱい。:2015/04/24(金) 20:49:55.94 ID:lqocsr9z0.net
>>542
#IfWinExist < #IfWinActive こちらが優先

>>544 >>545
バグではない仕様
#If系とは無関係リマップは変換されて実行されるので分かりにくい
同じキーの割り当てはホットキーで統一した方がいい

■変換前
a::2
a::Send 1

■変換後
*a::
SetKeyDelay -1
Send {Blind}{2 DownTemp}
Return

*a up::
SetKeyDelay -1
Send {Blind}{2 Up}
Return

a::Send 1

-------
同じホットキー「a」が登録されているように見えるが
「a」と「*a」違うホットキーなのでエラーが無く動く
修飾キーを押していないので「a」→「*a up」という流れになる

547 :名無しさん@お腹いっぱい。:2015/04/24(金) 21:28:02.04 ID:m+JL+NGt0.net
>>546
別のホットキー扱いだったのか・・・
全く気づかなかったわ。ありがとう

548 :名無しさん@お腹いっぱい。:2015/04/24(金) 22:25:12.74 ID:pJJKqwld0.net
>>546
>#IfWinExist < #IfWinActive こちらが優先

そんなことないよ
#IfWinExist, ahk_class Notepad
a::1
#IfWinActive, ahk_class Notepad
a::2
これメモ帳でa押したら1だよ
前後入れ替えれば2になるよ

549 :名無しさん@お腹いっぱい。:2015/04/24(金) 23:02:42.71 ID:KbUta85o0.net
上から読んでく。左から読んでく。
includeは先に読み込んだほうが優先

550 :名無しさん@お腹いっぱい。:2015/04/24(金) 23:11:36.08 ID:lqocsr9z0.net
>>548
こっちも書いてる上でいつのまにか間違ってました
これは無視してください、指摘どうもです。
> #IfWinExist < #IfWinActive こちらが優先

551 :名無しさん@お腹いっぱい。:2015/04/25(土) 01:46:52.05 ID:przsQ+QU0.net
ウィンドウのアクティブになってる箇所の位置を取得することってできますかね?
例えばエディタなら、文章編集の部分がアクティブなのか、それとも検索窓がアクティブなのか、とか

552 :名無しさん@お腹いっぱい。:2015/04/25(土) 08:38:43.96 ID:ILhHnN/f0.net
ControlGetFocus

553 :名無しさん@お腹いっぱい。:2015/04/25(土) 10:21:27.98 ID:przsQ+QU0.net
>>552
ありがとうございます
おかげさまで望み通りの挙動を実現できました

554 :名無しさん@お腹いっぱい。:2015/04/26(日) 07:15:11.97 ID:E7ItJPWy0.net
通常、文字はキーを押した瞬間に反映されますが、
反映されるのをキーを離した時に変えることって出来ますか?

555 :名無しさん@お腹いっぱい。:2015/04/26(日) 10:37:17.24 ID:/KOqIoQI0.net
>>554
ttp://ahkwiki.net/Hotkeys

556 :名無しさん@お腹いっぱい。:2015/04/27(月) 23:44:16.23 ID:YkImkU5F0.net
最近.ahkスクリプトを弄っていないのに、F19の割り当てがある日突然動かなくなりました。
なぜでしょう?
changekeyというソフトを使って、AppskeyにF19を割り当てていままでうまくやってきた
つもりだったのですが、突然3日ほど前からF19の割り当てだけ動かなくなりました。
F19::b とやってもだめなのです。今日気づいたのですが、
sc06A::bというスキャンコードでahkスクリプトに登録すると以前のようにちゃんと動きます。
なぜでしょう。

557 :名無しさん@お腹いっぱい。:2015/04/28(火) 00:19:52.71 ID:Z5Yw7+AI0.net
>>556
最小限のスクリプトでテスト
KeyHistoryのログでAHKがF19を認識してるか自分で確認

558 :名無しさん@お腹いっぱい。:2015/04/28(火) 00:31:20.28 ID:KJcPzRL00.net
>>557
historyではF19と認識されていました。
最小のスクリプトでやると、F19::bのままでちゃんと動く。
なぜだろう。スクリプト見なおしてみます。ありがとうございました。

559 :名無しさん@お腹いっぱい。:2015/04/28(火) 01:20:14.02 ID:KJcPzRL00.net
スクリプトのなかでsc06Aの行とF19の行があると、
どちらかが動かなくなるみたい。統一しないといけないの?
#IfWinActive とかで区切っててもだめっぽい。

560 :名無しさん@お腹いっぱい。:2015/05/02(土) 13:51:17.86 ID:J/EjvGQ30.net
vk82sc06A::Send, {F19}

561 :名無しさん@お腹いっぱい。:2015/05/12(火) 15:50:15.55 ID:UeaJTsYg0.net
ご教示願います
変換(sc079)にshiftを割り当てたいのですが、 sc079::Shift と書いても反映されません
sc079 & a::A  と総当りする以外に、書き方はあるでしょうか?

562 :名無しさん@お腹いっぱい。:2015/05/12(火) 16:07:11.26 ID:UeaJTsYg0.net
解決しました 
sc079::Shift 以降に
sc079 & a::A みたいなのが2〜3混入していたのが原因だったようです
前者のみにしたところ動作するようになりました

563 :名無しさん@お腹いっぱい。:2015/05/13(水) 00:34:47.27 ID:RnxP4oC40.net
何かヒントを探しています。
ツールは違いますが、最小限の類似の似た事で質問すると

MSペイントでそのウィンドウをフォカスした状態でスクリプト上からペイントにjpegがドラッグされたのと同等のアクションを実現するにはどうしたらいいんでしょう?
注意点としてはmsペイントのメニュー等で読み込むのでは無くドラッグと言う事です。
ペイントは悪魔で例でして、run, 等で別のアプリケーションに紐付けられている為
runで外部アプリを起動するのはNGです。

batだとドラッグと同様な効果って合った気がするのですが・・・できばahkオンリーで可能だと嬉しいです。
数日考えてても思いつかなくて。。

564 :名無しさん@お腹いっぱい。:2015/05/13(水) 01:33:36.70 ID:RnxP4oC40.net
http://www.autohotkey.com/board/topic/88036-drag-drop-file-script/
自己解決しそうな・・・・これ同じような問題解決している奴なんでしょうかね。

565 :名無しさん@お腹いっぱい。:2015/05/13(水) 03:51:04.94 ID:k2+Di73M0.net
>>563-564
もう解決したのかな?ま、いちおう…
http://ahk.xrea.jp/myscripts/index.html
にある、「ファイルドロップ関数」は?
あと、↑の発展系がMouseGestureLの内部に「MG_DropFiles()」としてある。

自分は前者は使ったことないけど、後者はそこの関数だけ抜き出して個別のスクリプトで使わせてもらってる。

566 :名無しさん@お腹いっぱい。:2015/05/13(水) 07:58:32.76 ID:AgxOjBgh0.net
そこのファイルドラッグ関数はANSI時代のでUnicode版では動かない

過去ログよりU対策、まだ見れると思う
http://hibari.2ch.net/test/read.cgi/software/1280482227/330-332

567 :名無しさん@お腹いっぱい。:2015/05/13(水) 13:06:36.91 ID:RnxP4oC40.net
>565

仕事の時間が来たのでまだですがドロップ関数とか有るんですね。
今週来週パツパツですが合間を見て作っている感じです。

通常は、この手段使わなくても良いんですが使えると色々便利なはずなので頑張りたいと思います。

>566
見てみます。

有難う御座います!

568 :名無しさん@お腹いっぱい。:2015/05/14(木) 00:30:26.74 ID:HwMcKOEp0.net
クリップボードを使わずに文字列を一気に入力する方法はありませんか?

569 :名無しさん@お腹いっぱい。:2015/05/14(木) 00:47:50.13 ID:lpl3HLkX0.net
ControlSetText

570 :名無しさん@お腹いっぱい。:2015/05/14(木) 01:23:49.57 ID:HwMcKOEp0.net
ありがとうございます

571 :名無しさん@お腹いっぱい。:2015/05/16(土) 11:48:33.89 ID:PCrubyTL0.net
csvファイルから読み込むことはできるんだけど、保存ってどういうふうにしたらいいかな

例えば
aaa,1
bbb,2
ccc,3
という内容のcsvファイルがあったとして、これを
変数aaaに1を格納、
変数bbbに2を格納、
変数cccに3を格納
といった感じにするコードを組んだんだけど、処理中にいずれかの変数の値が変わったとき、
それをcsvファイルのほうに反映させることはできないだろうか

572 :名無しさん@お腹いっぱい。:2015/05/16(土) 12:29:03.68 ID:kOy7gbjs0.net
FileDelete後にFileAppendで丸ごと書き換える

573 :名無しさん@お腹いっぱい。:2015/05/16(土) 14:48:23.19 ID:PCrubyTL0.net
>>572
ありがとう。やってみる

574 :名無しさん@お腹いっぱい。:2015/05/16(土) 14:51:30.58 ID:eUo+JdQG0.net
それだと全部消える瞬間あるからどうだろ

575 :名無しさん@お腹いっぱい。:2015/05/16(土) 15:09:42.40 ID:kOy7gbjs0.net
そんなら別名で作成して成功したら古いの消してリネームする
CSVじゃなきゃならない理由がないならini使ったほうが楽ではある

576 :570:2015/05/16(土) 20:13:12.66 ID:PCrubyTL0.net
ありがとう。やっとなんとかできた。
俺も消えるの怖かったからFileMoveでリネームしてバックアップとってから書き込み作業させる感じでやってみた
csvはExcelシートで編集するのが楽だからだけど、iniのが便利なのか

何にしても回答thx

577 :名無しさん@お腹いっぱい。:2015/05/17(日) 12:14:28.04 ID:QIbhGgDk0.net
Excelみたいに参照元の値が変わったらそれを参照してる先に変更を反映させたいんだが・・・

例えば下みたいなコードがあったとする
米:=200
調味料:=50
チャーハン:=米 + 調味料
Msgbox,% "チャーハンの値段=" チャーハン

これを実行するとメッセージボックスにチャーハンの値段=250と出るわけだが、
この後チャーハンの素や米の値段を変えても、"チャーハン:=米 + 調味料"の処理を
再度行わないとチャーハンの値段は250のままになる。

再計算の処理を行わずに、元となる値を変更するだけで参照先の値に反映させられないだろうか。
もしくは変数の値を変更したらその変数を参照している全ての変数を検索することはできないだろうか

578 :名無しさん@お腹いっぱい。:2015/05/17(日) 12:30:44.62 ID:TU8bjKH40.net
期待した答えと違うだろうけど
その部分だけVBAで組めば?

579 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:19:38.21 ID:l5tu0VN80.net
料理名を関数にするとか…

チャーハン関数(米, 調味料){
 処理
}

ラーメン関数(米, 調味料, 片栗粉){
 処理
}

580 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:21:34.60 ID:l5tu0VN80.net
>>579
ラーメン関数の引数間違ってたorz

ラーメン関数(小麦粉, 調味料, 豚肉){
 処理
}

581 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:29:19.49 ID:chDQUntX0.net
setterかgetter作るのがセオリー

get_price(){ ; 値が必要になった時に計算
 return kome+chomi
}

set_kome(v){ ; 値を設定するときについでに価格も更新
 kome:=v
 price:=kome+chomi
}

582 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:30:13.94 ID:l5tu0VN80.net
すいませn、上2つのレスは無かった事にして

583 :名無しさん@お腹いっぱい。:2015/05/17(日) 16:25:35.70 ID:xSeyaxV/0.net
チャーハン変数はどうしても使わないといかんのか?
直に計算式放り込めば常に最新の値になると思うが

Msgbox,% "チャーハンの値段=" 米+調味料

584 :576:2015/05/17(日) 19:17:30.45 ID:QIbhGgDk0.net
みんなレスありがとう。
おかげで目途ついたかもしれないから、ちょっと組んでみる。できたら報告させてほしい。

あと>>583が指摘してくれてる直接計算式放り込むやり方なんだが、
材料の材料を使ったものもあるからできないんだ
(a=b+c b=d+e の場合にaの価格を求めたいとき、直接計算式を入れてもdやeの値の変化に対応できない)

とにかくやってみる。みんなthx

585 :576:2015/05/18(月) 00:23:45.98 ID:uhyQAsmx0.net
やっとできた・・・こんな感じで組めた。長いからレス分ける。
>>581の登録と出力、>>582の引数に材料名を指定するのがヒントになった。お二方ありがとう。

何故か出力関数が登録関数の値を受け取ってくれなくてさんざwiki見た挙句、
globalを書けばいいことにたどり着くのに2時間かかったよorz

F10
;ケーキの材料費を計算する
SetGoodsValue("ケーキ",0,"スポンジ","ホイップクリーム","イチゴ")
SetGoodsValue("スポンジ",0,"粉","卵","バター","砂糖")
SetGoodsValue("粉",100)
SetGoodsValue("卵",50)
SetGoodsValue("バター",50)
SetGoodsValue("砂糖",20)
SetGoodsValue("ホイップクリーム",0,"生クリーム","砂糖")
SetGoodsValue("生クリーム",50)
SetGoodsValue("イチゴ",300)
Msgbox,% "ケーキ=" GetGoodsValue("ケーキ")
return

586 :576:2015/05/18(月) 00:24:14.68 ID:uhyQAsmx0.net
;品物の値段と材料を登録する関数
;Nameが登録する品物の名前
;Priceが原材料費もしくは加工による付加価値
;Mats*が材料の名前
SetGoodsValue(Name,Price,Mats*){
global
%Name%_Price:= Price
Loop,% Mats.MaxIndex() {
%Name%_Mats%A_Index% := Mats[A_Index]
}
}
;品物の値段を返す関数
GetGoodsValue(Name){
PriceSum+=%Name%_Price
While(%Name%_Mats%A_Index% != ""){
PriceSum+=GetGoodsValue(%Name%_Mats%A_Index%)
}
Return PriceSum
}

587 :名無しさん@お腹いっぱい。:2015/05/18(月) 05:06:25.42 ID:YF2LOIX30.net
がんばるね〜

588 :名無しさん@お腹いっぱい。:2015/05/18(月) 12:32:38.01 ID:JqdHtnRV0.net
VBで作られたフォーム内のコントロールの値を取得したいんだけど、指定の方法がわからないよ助けて!

589 :名無しさん@お腹いっぱい。:2015/05/18(月) 13:16:49.67 ID:uBE6jm3m0.net
>>585
すごいがんばってるし適性もありそうだから
Objectのページも読むともっとよくなると思うな

590 :名無しさん@お腹いっぱい。:2015/05/18(月) 19:11:09.94 ID:TONE4GIQ0.net
同じスクリプトがもう一つ実行された場合にだけ特定の処理をするというようなことは可能なのでしょうか?
#SingleInstanceだと多重起動の有無くらいしか設定できないので…

591 :名無しさん@お腹いっぱい。:2015/05/18(月) 19:33:44.80 ID:QfcpYhw40.net
変数作って場合分け

592 :名無しさん@お腹いっぱい。:2015/05/18(月) 20:22:00.11 ID:fYgf5L7M0.net
>>590
いろいろ方法がある

; タイトルで判断
#SingleInstance Off
DetectHiddenWindows On
WinGet,hoge,List
Loop,Parse
WinGetTitle
...略

OnMessage()
環境変数
ini作成

>>591
別スクリプトの変数は共有されない

593 :名無しさん@お腹いっぱい。:2015/05/18(月) 20:29:24.13 ID:TONE4GIQ0.net
>>592
レスありがとうございます
OnMessage()かiniかでやってみます

594 :名無しさん@お腹いっぱい。:2015/05/18(月) 22:36:03.79 ID:fiB4L+jl0.net
教えてください。
ASUSの8インチWindows8.1タブレット「Vivotab Note 8」を使っていて、ボリュームキー上下にそれぞれ単押し、2回押し、長押しの3つの機能を持たせたく思っています。
Wikiなどで、Keywaitを使う方法、IF(A_PriorHotkey == A_ThisHotkey) && (400 > A_TimeSincePriorHotkey)を使う方法を知り、それぞれ2回押しまでは成功しました。
しかし、どうしても長押しが実現できません。
単純にアルファベットのキー入力をするコードを入れて調べてみたところ、どうも、ボリュームキー等のハードキー自体が、長押し中に「押下されたまま」ではなく、「連続押下」の信号を出しているようです。
このようなタイプのハードキーで、長押しを判定する方法はあるでしょうか?

595 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:16:02.31 ID:fYgf5L7M0.net
>>594
とりあえず最小限のコードを書いてほしい
何が間違ってるか分からない

596 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:31:56.49 ID:fiB4L+jl0.net
勘違い。Keywaitを使う方法では、2度押しもダメだった。失礼しますた_(._.)_

#Usehook

$Volume_Up::
KeyWait,Volume_Up,T0.8
If(ErrorLevel)
{
Send,a ;長押し
KeyWait,Volume_Up
Return
}
KeyWait,Volume_Up,D T0.4
If(ErrorLevel)
{
Send,b ;1度押し
KeyWait,Volume_Up
Return
}
Send,c;2度押し
KeyWait,Volume_Up
Return

↑このコードで、2度押しでもbが入り、長押しをすると、bが連続で入力されてしまう。

597 :名無しさん@お腹いっぱい。:2015/05/18(月) 23:34:21.35 ID:fiB4L+jl0.net
んで、単押しと2度押しの使い分けができたのが以下のコード

Volume_Up::
If (A_PriorHotkey = A_ThisHotKey && A_TimeSincePriorHotkey > 100 && A_TimeSincePriorHotkey < 500)
Send,b
Else
Send,a
Return

ハード的に連続(断続?)的に発生している入力信号を排除するため、>100を入れてる

598 :名無しさん@お腹いっぱい。:2015/05/19(火) 00:45:05.29 ID:vqvTfWRg0.net
>>597
そのノートパソコンがVolume_Upの割り当てをソフトで行っている場合
フックを使用するとソフトが発行した信号は無視されるのでKeyWaitも反応しない
フックなしにして論理的判定にしたら動くと思うがどうだろう?

Volume_Up::
KeyWait, Volume_Up, T0.8 L
If (ErrorLevel)
ToolTip ok
Return

599 :名無しさん@お腹いっぱい。:2015/05/19(火) 01:16:04.01 ID:rple42k80.net
普通にキーリピートじゃないの?
KeyWaitが無理ならUpホットキーで対策したら
http://ahkwiki.net/Hotkeys#Up.E3.83.9B.E3.83.83.E3.83.88.E3.82.AD.E3.83.BC

600 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:28:35.45 ID:dbD1dE6i0.net
thx。
今晩ためしてみます

601 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:42:32.31 ID:dbD1dE6i0.net
電車中でやってみた
Voluume_Up:;をVolume_Upに変更。結果変わらず
処理も変えないといけないのかな

また夜に挑戦

602 :名無しさん@お腹いっぱい。:2015/05/19(火) 07:43:35.11 ID:dbD1dE6i0.net
みす
Voluume_Up:;をVolume_Up upに変更、でした。

603 :名無しさん@お腹いっぱい。:2015/05/19(火) 09:05:20.47 ID:rple42k80.net
そうじゃなくて、押し下げイベントはリピートする前提でフラグを設置、A_TickCountで初回押下時刻記憶
次回の押し下げイベントでフラグONだったら押されっぱなしとみなし
初回押下時刻とA_TickCountとの差分が800ms以上だったら長押し判定とする

upイベントにはフラグと押下時刻初期を化処理を入れる

604 :名無しさん@お腹いっぱい。:2015/05/19(火) 17:18:25.43 ID:zeMGqcPi0.net
可変長変数の引数の数を変数か何かで指示することって可能?例えば

hoge(Text*){
Loop,% Text.MaxIndex(){
Msgbox,% Text[A_Index]
}
}

こんな関数があったとして、普通に使うなら
hoge("てきすと1","てきすと2","てきすと3")
みたいになると思うけど、この「"てきすと1","てきすと2","てきすと3"」の部分を
変数か何かに組み込んで、hoge(てきすと)みたいな使い方をすることはできないだろうか

605 :名無しさん@お腹いっぱい。:2015/05/19(火) 18:48:41.36 ID:iqtbUEhl0.net
>>604
こうすれば出来るけど、他の方法は知らない

ary_Text := array()

ary_Text := ["てきすと1"]
hoge(ary_Text*)

ary_Text := ["てきすと1", "てきすと2", "てきすと3"]
hoge(ary_Text*)

hoge(Text*){
 Loop,% Text.MaxIndex()
 {
  Msgbox,% Text[A_Index]
 }
}

個人的には、素直に、hoge("てきすと1","てきすと2","てきすと3")で良いような気がするがなぁ

606 :名無しさん@お腹いっぱい。:2015/05/19(火) 19:20:26.73 ID:iqtbUEhl0.net
>>605に追加
個別に変数のデータを変更する時

ary_Text := ["てきすと1", "てきすと2", "てきすと3"]
hoge(ary_Text*)

ary_Text[3] := "てきすと4"
hoge(ary_Text*)

607 :名無しさん@お腹いっぱい。:2015/05/19(火) 20:28:38.69 ID:zeMGqcPi0.net
>>605
なるほど。助かった。
"てきすとn"の数がいくつになるか分からないデータがあって、
手動で打ち込むことができなかったんだ thx

608 :名無しさん@お腹いっぱい。:2015/05/21(木) 11:17:48.45 ID:eRo2mlV60.net
常に変数の値を監視させて、条件が一致したら現在のスクリプトをポーズさせて
別の処理を行わせるって可能かな?例えば

スクリプトA:変数hogeを1秒ごとに1増やす
Loop {
hoge++
tooltip,% hoge
Sleep,1000
}

スクリプトB:変数hogeが10を超えたらMsgboxを出す
While(hoge<10){
}
Msgbox, ほげ

でもこれだとスクリプトが別だから変数hogeをスクリプトBが受け取ってくれないし、
同じスクリプトに書くとスクリプトBの監視処理を行ってくれない。

スクリプト間で変数の受け渡しをするか、同じスクリプトで同時に二つのスレッドを
起動させる方法はないだろうか?

609 :名無しさん@お腹いっぱい。:2015/05/21(木) 12:10:26.18 ID:isnlwiEM0.net
スクリプト間で変数の受け渡し → OnMessage
同じスクリプトで同時に二つのスレッド → SetTimer 2つ起動

方法はあるからwiki熟読するといい

610 :名無しさん@お腹いっぱい。:2015/05/21(木) 14:12:17.79 ID:mSCtIiwk0.net
loop回しでスレッド抜けない状態だとsleep入れても他スレッドが割り込めなかった記憶
settimer使うならtimer間隔を1秒単位で周回するようにしてloopウエイトは取っ払ったほうが良さげ

611 :607:2015/05/21(木) 15:01:19.83 ID:eRo2mlV60.net
おーできた、SetTimer便利だね。ありがとう
一応無限ループの中からも割り込んでくれるみたい

Settimer, ほげ監視
Loop {
hoge++
tooltip,% hoge
Sleep,1000
}
ほげ監視:
While(hoge < 10){
return
}
msgbox,ほげ
Exit

612 :名無しさん@お腹いっぱい。:2015/05/22(金) 01:26:23.41 ID:AdeS2dqu0.net
Ctrl+alt+wheelUpなどに割り当てる時はどうすればいいのでしょうか?
GetKeyStateですか?

613 :名無しさん@お腹いっぱい。:2015/05/22(金) 01:45:22.00 ID:MYV8WZ2s0.net
ttp://ahkwiki.net/Hotkeys

614 :593:2015/05/22(金) 16:28:19.56 ID:+w+wX+y40.net
うむむ、うまくいかない(´・ω・`)
おしっぱで押下のみのキーリピートが発生する物理キー
(押下にsend{a}、キーアップにsend,{b}を割り当てた状態でおしっぱ→離すと「aaaaaab」と出力される)
に、1回押し、2回押し、長押しの3つの機能を割り当てたい。
んで597さんのLオプは改善せず、598さんのUPを使う方法で挑戦ちゅう

615 :593:2015/05/22(金) 16:36:16.94 ID:+w+wX+y40.net
んでこんな感じで書いてみたんだが、1回押しと長押しはうまくいくのだけど、2回押しをしても1回押しになってしまう
原因はなんだろうか(´・ω・`) 分かる人いたら教えて

#Usehook
LastVdownReleaseTime = 0
VdownHoldFlag = 0

Volume_Down:: ;押した時
if(VdownHoldFlag == 0)
{
FirstVdownPressTime = %A_TickCount%
VdownHoldFlag = 1
}
return

616 :593:2015/05/22(金) 16:36:58.91 ID:+w+wX+y40.net
(つづき)
Volume_Down up:: ;離した時
if (A_TickCount > FirstVdownPressTime + 500) ;最初の押し下げから長めに時間たってから
{
send,{L}
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0
return
}
Keywait,Volume_Down,D T0.5 ;もう一度押されるのを待って
If(ErrorLevel) ;押されなかったら
{
send,{1} ;
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0
return
}
send,{2} ;以上に当たらなければ
LastVdownReleaseTime = %A_TickCount%
VdownHoldFlag = 0

Return

617 :593:2015/05/22(金) 16:42:44.48 ID:+w+wX+y40.net
秒数を色々変えてみたけど、結果変わらず
Keywait使わないで、2回押しの1回目、2回目両方を1回押しと区別する方法があれば解決しそうなんだけど

618 :名無しさん@お腹いっぱい。:2015/05/22(金) 16:55:17.93 ID:SHMJnUpL0.net
>>617
確認だけど>>598のフックを使用しない方法はちゃんとやったか?

これは書かいてはいけない
#Usehook ; フック
$Volume_Down:: ; $もフック


キーログを見てUPの信号が出ているのか確認
特殊なキーは出ていない場合がある

例 a長押しの場合

41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.03 a
41 01E d 0.05 a
41 01E u 0.02 a ←

619 :593:2015/05/23(土) 06:56:39.86 ID:5ocJAUJB0.net
ふおお。そういう意味だったんか…
ろくに理解せず#Usehook書いたままLオプつけてた

んで、ahkwikiにある「1つのキーに3種類以上の動作割り当て」のサンプルから#Usehookを外して、Keywait全部にLオプション付けたら
動きました! うおお感激(´;ω;`) どうもありがとうありがとう
あと、キー履歴を見てみたら、uは出てた。
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a d 0.03 Volume_Down
AE 12E a u 0.02 Volume_Down

620 :名無しさん@お腹いっぱい。:2015/05/23(土) 14:43:22.19 ID:uC/053Td0.net
ワコムの液タブ使っているんですが液タブとサブモニターの相性って何気に悪いのですが
ふと思ったんですがタブレットドライバーのマッピング変更ってAUTOHOTKEYから叩く事って出来ないんでしょうか?
この部分が、自分ではちょっと分からないので可能ならば

タスクバーからサブモニターのタスク→マッピング切り替え→カーソルフォーカス移動
何らかの別のフレーム指定でマッピング指定を戻す

って事で扱い楽に出来そうなんですがマッピング切り替えって部分がさっぱり分からないので・・・
どうもショートカットに割り振る事も出来無さそうだし
(違ったらすいません+ドライバー設定死んだら面倒なのでデフォから取れると一番良い)

621 :名無しさん@お腹いっぱい。:2015/05/23(土) 19:53:41.32 ID:vZYD6MeW0.net
>>620
マッピング変更が何なのか分からないが
整理するとこういうことかな?

*特定条件でホットキー割り当て(アクティブウィンドウがサブモニターであるなら)
*対象にカーソルを移動

#If ここに条件、複雑なら自作関数作成
F1::
WinGetPos, X, Y, , , A
MouseMove, X, Y
return
#If

622 :名無しさん@お腹いっぱい。:2015/05/24(日) 00:23:05.59 ID:hyt6dQYmw
windowタイトル使っての監視も足しますが、カーソルのムーブとwindow判定は良く組んでいるのでツールの機能の部分を組めるのは時間の問題なのですが最大の問題は

マッピング変更って奴ですね。
コレを詳しく言うとタブレットは1つのモニターだけを移動範囲とする物
(液タブの範囲内)と接続されているモニター両方を跨ぐモードに切り替える事が出来る機能です。
http://nueko048.blog.shinobi.jp/cintiq%E3%81%AE%E8%A8%AD%E5%AE%9A/

要はですね液タブの場合でマッピング変更を使わず該当モニターの外にカーソルを持っていたとしても液タブにマッピングしていると液タブに強制的に移動されるのでマッピング変更で全画面にしてやらないといけない訳です。

ただautohotkeyだとjoypad等ソフトで用意してくれている物かキーボードのような定番の物以外だとハード関係のキーを取得するのが難しいみたいで質問の主軸としてはスクリプトでの移動等では無くこのキーの方の取得の方ですね。

ワコムのドライバー内でペン cintiqに付いているボタンに対して設定することでこの機能が使えるのですが
選択肢としては
1.ハードキーが叩かれた事を取得する
2.ソフトウェアーキーが叩くコードを取得する
3.マッピング変更のショートカットキーをキーボードショートカットに設定する

3が出来ると良いんですがどうも3が出来ないぽいので難航って所ですかね・・・

623 :名無しさん@お腹いっぱい。:2015/05/24(日) 14:09:26.89 ID:mtLGjGbS0.net
>>620
初代Bambooの場合だけど、それっぽいこと出来てる。
俺の場合はゲーム用3種類と絵描き用3種類から選択して切り替えれるようにしてる。
3種類ずつあるのは詳細設定(最低筆圧、筆圧カーブ、マッピング等)が違うため。
※Bambooは通常の設定項目に最低筆圧を下げたり、筆圧カーブの設定は無いけど
  設定ファイルには項目があるのでそれを直接書き換えることで変更可。

事前準備は(Win7の場合)
C:\Users\ユーザー名\AppData\Roaming\WTablet\Pen_Tablet.dat
にペンタブ(Bamboo)の設定ファイルがあるのでゲーム用3つと絵描き用3つそれぞれの設定を
Pen_Tablet01.dat 〜 Pen_Tablet06.dat として別のフォルダに保存しておく。

autohotkeyで行う動作は
1.必用な設定(設定ファイル)を選択出来るGUIを表示
2.C:\Users\ユーザー名\AppData\Roaming\WTablet\Pen_Tablet.dat を削除
3.選択したBambooの設定ファイルをコピー
 例 Pen_Tablet01.dat を Pen_Tablet.dat として手順2で削除したフォルダへコピー
4.Bamboo用のWindowsサービス2つを再起動(WTouchService と TabletServicePen)
 このサービスを再起動しないと設定ファイルが反映されない。

手順としてはこんな感じ、Wacomの場合はペンタブの種類によってサービス名が違うので
それさえ判ればなんとかなるかも。

624 :名無しさん@お腹いっぱい。:2015/05/25(月) 15:38:30.88 ID:Or3Qnp1G0.net
DropboxAHKの様にユーザープロファイル以下などを違うディレクトリにするのってどうやって実現させているのでしょうか?

625 :名無しさん@お腹いっぱい。:2015/05/26(火) 00:28:25.02 ID:9vRHIAQp0.net
>>623

ああああ。
成る程!何かヒント貰えた気がします!
確かにそれなら出来そうなので調べながらやってみます。

626 :名無しさん@お腹いっぱい。:2015/05/27(水) 02:24:42.44 ID:0xah5Mr50.net
こういうことって普通に出来るのでしょうか?

F1〜F12のキーの動作は特殊機能がデフォルトになっていて、F1〜F12の機能はFnキーと同時押しする必要があるキーボード。

その動作を逆にしたい・・・・

All-in-One Media Keyboard N9Z-00023
http://review.kakaku.com/review/K0000658756/#tab

他のキーボードで出来たという報告はありますが、そういうのは一般的に可能なんでしょうか?
2000円をドブに捨てるのはもったいない(^_^;)

627 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:23:02.72 ID:IcamOoy90.net
>その動作を逆にしたい・・・・

これはAutohotkeyだけじゃ無理。
RegisterRawInputDevices をゴニョゴニョすれば行けるかもしれんけど
やったことないし、俺には分からん。

628 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:23:05.28 ID:KBpDd0T+0.net
>>626
F1 → Media_Prev
Fn+F1 → F1
Fnキー → 不可
という信号が出ていると思うので「AHKで拾えるなら」逆にするだけ
※買うなら自己責任でどうぞ

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

629 :名無しさん@お腹いっぱい。:2015/05/27(水) 03:29:43.68 ID:IcamOoy90.net
そっか、Media_Prevで行けるのか。
これは失礼致しました。

630 :名無しさん@お腹いっぱい。:2015/05/27(水) 16:08:49.11 ID:0xah5Mr50.net
>>628
ヒントありがとう。もう少し調べてみます。

631 :名無しさん@お腹いっぱい。:2015/05/28(木) 21:20:12.00 ID:hWnLqw8l0.net
そこそこ幸せになれる使い方見つけた
上から
カーソルが有る単語の選択
コピーして辞書引き
コピーして音読

Send,^{Right}
Send,^{Left}
Send,^+{Right}

Send,^c
Sleep,500
Run,ebwin4.exe /S=%Clipboard%

Send,^c
Sleep,500
SofTalk.exe /X:1 /w:%Clipboard%

632 :名無しさん@お腹いっぱい。:2015/05/28(木) 21:27:43.56 ID:tZCrgr2n0.net
EBWIN重いんだよな

633 :名無しさん@お腹いっぱい。:2015/05/28(木) 23:06:32.07 ID:hWnLqw8l0.net
ソフトークの所run書き忘れたな
WinMenuSelectItemやSendMessageも試したが挙動が安定しないのはrunの仕様だったからsleep必須なのが痛い
キャレットブラウズなら概ね良い感じなんだけど下記のだとスペースの無い単語の選択が上手く行かないな
キャメルケース、スネークケース、チェインケース辺りに対応した別なの考える必要有るかな?

単語選択の関数
ClipSaved := ClipboardAll
Send,^c
Sleep,500
Run,SofTalk.exe /X:1 /w:%Clipboard%
Sleep,500
Clipboard:=ClipSaved
ClipSaved=

634 :名無しさん@お腹いっぱい。:2015/06/02(火) 06:35:33.22 ID:fUMwwWeK0.net
無変換+v or cで起動して
(メモ帳、VisualStudio、ブラウザ等)アクティブウィンドウの種類に応じて辞書を切り替えて
キーボードで定型文を絞り込んでペーストするという環境を作りたいんだけど
元となるペースト支援ユーティリティでフリーで良さげなのってないかな
いくつか試してるんだけど単一辞書しか持ってる奴しかなくてなかなか見つからない

635 :名無しさん@お腹いっぱい。:2015/06/02(火) 12:55:49.24 ID:SQHO6eDv0.net
汝、単一辞書のをアプリ判別して切り替える動作から始めよ

636 :名無しさん@お腹いっぱい。:2015/06/02(火) 15:22:28.25 ID:WGwtfqhS0.net
Windows7ですが、BlockInput, Onが効きません
これを実行したあとも、マウスも動くしキー入力も普通に受け付けます
BlockInput, MouseMoveはちゃんと効いて、マウスが動かなくなります
みなさんはどうでしょうか。 Windows7ではOnは利かないのかな
極単純なスクリプトで試しましたがダメでした

637 :名無しさん@お腹いっぱい。:2015/06/02(火) 15:47:12.07 ID:s06rWvf80.net
>>636
管理者権限の問題じゃない? >>8
自分の環境と何をやったか(スクリプト等)を正確に書かないと推測しかできない

638 :名無しさん@お腹いっぱい。:2015/06/02(火) 18:42:56.31 ID:Wb7F5c5h0.net
>>637
ありがとうございます。そのとおりでした
でも、BlockInput, MouseMoveは管理者じゃなくても効いて、Onは管理者じゃないとダメなんですね
なんだかなあ

639 :名無しさん@お腹いっぱい。:2015/06/04(木) 13:23:29.13 ID:ZRAOoa070.net
>>623
ペンタブの設定のはまだやってないのですが(マッタリですがいずれやりますが)
cintiqは
\AppData\Roaming\WTablet\ Wacom_Tablet.dat
あたりぽいです。

こちらの知識内で別アプローチで突貫で解決しました。
原理と理屈は簡単でミニマムな話で画面の外にウィンドウが有るなら一時的に画面の中のmoveすればいいだけって話ですね。
そこから先は書く人間のスキル次第なのですが色々この方が応用出来るみたいですね。

今はコレを応用して指定したウィンドウに対してカーソルが乗っかればムーブして移動するようなスクリプト書きたくて頑張ってます。。。
多分そんなに難しくないはずなのですが・・・スキルが無くて。。
一番レベルが低いと思われる カーソル→ライド→別の指定した位置にmove→タイマーでライドしていた場所にムーブ。

要は画面最前面に張り付いている設定で上1/4サイズのwindowでカーソルが来たら下にムープして数秒したら又上に戻すというものですね。
これが出来れば画面最前面にウィンドウ貼り付けても操作や画面の下は容易に確認出来るので。
頑張ってみます。

640 :名無しさん@お腹いっぱい。:2015/06/06(土) 18:31:35.62 ID:MhAXWuqk0.net
Sysgetコマンドでモニターのアス比を取得する事出来ます?

641 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:05:23.71 ID:vti+iXrJ0.net
>>640
何で自分で確認しないの?
無いならググレ

aspect autohotkey

642 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:20:13.78 ID:MhAXWuqk0.net
私の頭では理解できませんでした
どうも有り難うございました

643 :名無しさん@お腹いっぱい。:2015/06/06(土) 19:47:02.87 ID:lXnJQYaD0.net
使い方がわからない道具は使うな。危ないから

644 :名無しさん@お腹いっぱい。:2015/06/06(土) 23:33:13.54 ID:+jQ7emU60.net
機能的には出来ているので良いといえば良いのですが
これは1キーで透明と解除のループなんですけど

on off 0ff(flag0?) onで  offが2つになるようなのですが on/offにするにはどうするんですか?
いや・・・昔調べてon/offのは作ってたんですが何か違うみたいですね。
同じような感じで単純だったはずなんですが。

f10::
Flag += 1
If Flag = 1
{
WinSet, Transparent,100,A
Return
}
If Flag = 2
{
WinSet, Transparent,off,a
Return
}
Flag =
Return

645 :名無しさん@お腹いっぱい。:2015/06/06(土) 23:56:03.20 ID:pwHMXENo0.net
何故flag管理を+=1でやるのか

f10::
If !(Flag) {
WinSet, Transparent,100,A
Flag = 1
} else {
WinSet, Transparent,off,a
Flag =
}
Return

蛇足だがフラグで管理するよりもWinGetのTransparentでウィンドウ透明度が取得できるから
それによって動作を変えた方がいいと思う

646 :名無しさん@お腹いっぱい。:2015/06/07(日) 09:07:16.30 ID:N2KLgAfR0.net
インクリメントフラグは2で割るか最下位ビット以外マスクすればif判定要らなくなる
三項演算子で行数減らしたいならアリじゃね
まあ>644の例では意味なくなってるけどな

やりたいのはたぶんこういうことかと
WinGet,var,Transparent,A
WinSet, Transparent,% var!=100 ? 100 : "OFF", A

647 :名無しさん@お腹いっぱい。:2015/06/08(月) 01:06:23.17 ID:iBP8XUj/1
指摘有りがどう御座います。
たまたま見つけたサンプルがflag +=1してただけです^^;;

>蛇足だがフラグで管理するよりもWinGetのTransparentでウィンドウ透明度が取得できるから
今回のは偶々透明度だったのでどちらかと言うと汎用的なキーループとしての方がメインなのでwingetは元々思いついてなかったです。
何れにしろ勉強になったのでありがとうございます。

648 :名無しさん@お腹いっぱい。:2015/06/09(火) 06:05:20.52 ID:fk1IibvO0.net
カタひらを単体で押したときはIMEオンオフ、他のキーと組み合わせたときはSHIFTの動作に変わるようにするにはどう設定すればよいでしょうか?
ワンショットモディファイアというらしいんですが

649 :名無しさん@お腹いっぱい。:2015/06/09(火) 08:30:52.66 ID:0zljtKj10.net
>>648
http://blechmusik.hatenablog.jp/entry/20091005/1254674747
これの応用で出来る。
それと「カタカナひらがな」キーをF13とかに置き換えないとダメ、詳しくは>>4を参照。

650 :名無しさん@お腹いっぱい。:2015/06/09(火) 12:21:10.46 ID:fk1IibvO0.net
>>649
ありがとうございます!
いままで試したなかで一番惜しいところまでいきました
ただ初回しかSHIFTが効かないのと、IMEトグルも二回押さないと始まらない状態です

651 :名無しさん@お腹いっぱい。:2015/06/09(火) 13:30:41.42 ID:06GOnCHm0.net
すいません。詳しくないのでどなたか教えてください。
画像を検索してその画像があれば特定のキーを押す、なければ
その画像が出てくるまでまって、出てきたら特定のキーを押す
というのがやりたいです。

ImageSearch, , 0, 0, 1920, 1080, C:\hoge\ipodicon.bmp
if ErrorLevel = 2
MsgBox Could not conduct the search.
else if ErrorLevel = 1
MsgBox sorry.could not find a image.
else
Send, !f v y

というような感じでやろうと思ったのですが、エラーがでたら戻って待つ(繰り返す)という
やり方がわかりません。おしえてくれませんか

652 :名無しさん@お腹いっぱい。:2015/06/09(火) 14:43:11.46 ID:+OJpvc1Z0.net
settimer

653 :名無しさん@お腹いっぱい。:2015/06/09(火) 16:21:39.29 ID:0zljtKj10.net
>>650
応用なので希望の動作をするようにフラグ管理を修正しないとそうなる

#If (KeyMap = 0)
f13::
KeyMap := 1
keywait, f13
If (KeyMap = 1)
send,{sc029} ; 半角/全角
KeyMap := 0
return

#If (KeyMap)
sc002::
sc003::
(中略)
sc034::
sc035::
sc073::
KeyMap := 2
send,+{%A_ThisHotkey%}
return
#If

654 :名無しさん@お腹いっぱい。:2015/06/09(火) 17:34:08.30 ID:SOrEGBUG0.net
>>644
聞きっぱなしクズ質問者

655 :名無しさん@お腹いっぱい。:2015/06/11(木) 08:14:33.02 ID:ffgtDZkn0.net
タスクマネージャーにフォーカスがあると、なぜかAutoHotKeyが効かなくなるようです
また、正規購入したソフトウエアのウインドウでも同じように効かなくなることがあるのですが、なぜでしょうか

656 :名無しさん@お腹いっぱい。:2015/06/11(木) 10:13:56.18 ID:L7SUeBqz0.net
>>655
環境とどんな割り当てなのか具体的に書かないと誰にも分からない

657 :名無しさん@お腹いっぱい。:2015/06/11(木) 10:24:02.62 ID:JcxoWCv60.net
具体的にどう「効かなくなる」のか
ホットキーが無効になるだけなのかタイマーも機能しなくなってるのか
OSやAHKのバージョンはいくつなのか
Autoexecuteや#if記述位置、return抜け等のコード記述上の問題がないか確認したのか

こういうことを明確に書かないで質問する人のバグ報告は往々にして勘違い率が高い
なぜでしょうかと聞かれてもおま環言われるのが落ち
他者が追試できるよう問題のコード貼って発生条件を書かないと

658 :名無しさん@お腹いっぱい。:2015/06/11(木) 11:17:14.01 ID:ffgtDZkn0.net
ああ、すいません。Windows7
です。単純なスクリプトで、

#UseHook
a::
MsgBox, A
return

だけでも動かなくなりますよ。タスクマネージャーにフォーカスを当ててやってみてください

659 :名無しさん@お腹いっぱい。:2015/06/11(木) 11:35:24.87 ID:L7SUeBqz0.net
>>658
OSの種類
AHKのバージョン
管理者権限の有無 >>8

660 :名無しさん@お腹いっぱい。:2015/06/11(木) 12:21:44.75 ID:mcTP3wwH0.net
なりますよw
やってみてください(笑)

661 :名無しさん@お腹いっぱい。:2015/06/11(木) 13:15:06.95 ID:VqRebeq70.net
タスクマネージャーなら普通に管理者権限の問題だろ
ahkファイルを起動する時に、右クリ→管理者として実行にすれば動くはず
まぁセキュリティ上管理者として実行はしない方がいいよ
よく分かってないならなおさら。我慢せよ

662 :名無しさん@お腹いっぱい。:2015/06/11(木) 14:10:22.03 ID:ffgtDZkn0.net
>>661
なるほど、わかりました。ありがとうございました。そうすることにします

663 :名無しさん@お腹いっぱい。:2015/06/12(金) 00:29:33.50 ID:Zxv+f6Pi0.net
>>653
コードまで書いていただけるなんてどこのAHK有償サポートチームですか・・・
独力だったら200%諦めていたので本当に助かりました
そのコードをスクリプトの一番先頭に置いたら思っていた通りの挙動になりました
他のコマンドが前にあるとなぜか無効化されてしまうようです
ありがとうございました!

664 :名無しさん@お腹いっぱい。:2015/06/12(金) 13:56:56.24 ID:MlXKDKC20.net
imagesearchって、右クリックメニュー中の画像検索って無理なんでしょうか?

itunesの項目を右クリックしてでてきたメニューから「プロパティ」って文字をbmp画像で
探してそれをクリックさせたいんですが、探す段階で[見つかりません]ってでてしまいます。
右クリメニューじゃないitunes上のボタン文字とかだとふつうにimagesearchは成功するんですが。
imagesearchの座標は 0, 0, 1920, 1080 にしています。

665 :名無しさん@お腹いっぱい。:2015/06/12(金) 14:55:35.84 ID:ztDhuyUa0.net
検索したらitunesにはctrl+iでプロパティを開くショートカットがあるらしいけど
それじゃいかんの?

666 :名無しさん@お腹いっぱい。:2015/06/12(金) 15:40:35.46 ID:MlXKDKC20.net
途中でそのショートカットに気付きました。いまはそれでやってて問題ないんですが、
imagesearchでプロパティを何度やってもクリックできなかったことが悔しいので
今後のために聞きたいとおもいました。右クリックメニュー内はimagesearchで探せないのでしょうか?

667 :名無しさん@お腹いっぱい。:2015/06/12(金) 16:04:04.22 ID:ibsGJC3R0.net
itunesのことはよう知らんけどソフトに依存するんじゃね?
うちはブラウザ(PaleMoon)ではimagesearchで右クリメニュー内のコマンド探せてる

668 :名無しさん@お腹いっぱい。:2015/06/12(金) 21:47:14.88 ID:MlXKDKC20.net
>>667
たしかに。gpadの右クリメニューでやってみましたが、成功しました。
itunesはできん。
http://freetexthost.com/kjtcndhitx
たとえばこんな感じ。 sorry.could not find a image が出ることに。 👀
Rock54: Caution(BBR-MD5:1afdc9e9a6c7bfb7b198c68134844756)


669 :名無しさん@お腹いっぱい。:2015/06/13(土) 01:00:11.58 ID:YkUDCRqr0.net
それイメージファイルのパスが見つからないってメッセージじゃろ
> C:silo(x64)residentAutoHotkeyimageSearchitoption.bmp

C:\ になってないからCドライブのカレント見に行ってるだけと思うが

670 :名無しさん@お腹いっぱい。:2015/06/13(土) 04:51:01.63 ID:uBW/2qNt0.net
s=
(
aaa
bbb
ccc
)
my_func(a)
をmy_funcの引数に直接書くことって出来ない?

msgbox %
(
aaa
bbb
ccc
)
は出来るようだけど

671 :名無しさん@お腹いっぱい。:2015/06/13(土) 05:57:47.45 ID:AmjDzvxq0.net
気が付かなかったです。海外サイトなので\が全部消えてる..

672 :名無しさん@お腹いっぱい。:2015/06/13(土) 08:59:26.07 ID:d+ugg74P0.net
>>670
質問の意味が不明だが…
こういうことしたい?

s=
(
aaa
bbb
ccc
)

;変数 s を引数にする
my_func(s)

;複数行の文字列を引数にする
my_func("aaa`nbbb`nccc")

my_func(x) {
msgbox, % x
}

673 :名無しさん@お腹いっぱい。:2015/06/13(土) 22:23:09.55 ID:3I5Pr+4S0.net
無変換+アルファベットにAutoCADのショートカット登録してるんだけど、一発でショートカット送れないです
必ずショートカットを2回連打しないとダメなんですけど、なんででしょうか?
ウインドウ指定とかもやってみましたがダメでした・・・

674 :名無しさん@お腹いっぱい。:2015/06/13(土) 22:29:08.04 ID:lsZP1Qd50.net
>>673
とりあえずSetKeyDelayで入力遅くする

問題の解決したいならスクリプトと環境ぐらいは書こう

675 :名無しさん@お腹いっぱい。:2015/06/13(土) 23:27:52.84 ID:3I5Pr+4S0.net
>>674
すみません
環境は
Windows7 64bit
AutoCAD 2012
です

まずAutoCADのコマンドに複雑なショートカット(例えばAlt+Shift+Ctrl+F1)を設定してます
本当はCAD側で無変換がショートカットキーに設定できればいいのですが、できないので
これをAutoHotkeyで実現しようとしています

スクリプトは↓です
SC07B & 1::send,!+^{F1} ;十字穴

これで「無変換+1」でAutoCADのマクロに設定したショートカットが実行されるはずですが、一回押すだけでは
ただ単にAltが押された状態になり、メニューにフォーカスが行くだけになります。
この状態でもう一度「無変換+1」を押すとようやく実行されます

win7のAutoCAD Mechanical2007、Mechanical2012などでは一発でいくので
環境による影響も考えられますが・・・なぜかレギュラー版2012だとうまくいきません…

676 :名無しさん@お腹いっぱい。:2015/06/13(土) 23:53:34.39 ID:lsZP1Qd50.net
>>675
アプリが反応する前に押し上げてるのかも

; SendMode Input
; SetKeyDelay,,10

SC07B & 1::
Send {Alt Down}
Send {Shift Down}
Send {Ctrl Down}
Send {F1}
Send {Alt Up}
Send {Shift Up}
Send {Ctrl Up}
Return

677 :名無しさん@お腹いっぱい。:2015/06/14(日) 00:30:50.12 ID:vRKISFaD0.net
>>676
ありがとうございます
自宅では試せないので、週明けに試してみたいと思います

678 :名無しさん@お腹いっぱい。:2015/06/14(日) 08:14:12.68 ID:GyBtayty0.net
STEP1:定義ファイルを用意する。

#ifwin 電卓 ahk_class CalcFrame
使い方|RUN|http://www.google.com/?q=calcの使い方
PI|AHK|send,3.141592

#ifwin Internet Explorer ahk_class IEFrame
...

STEP2:Ctrl+Alt+Cを押す。

STEP3:電卓がアクティブな状態だったらコンテキストメニューが表示される。

使い方
PI

STEP4:選んだメニューによって外部のプログラムを起動したり、AutoHotKeyがsend,3.141592を実行する(別途定義した関数呼び出しも可能)。

という画期的なアイデアを思いついたので誰か作ってください宜しくお願いします。
自力で作るには何もかもがわかりません><

679 :名無しさん@お腹いっぱい。:2015/06/14(日) 08:50:38.75 ID:wK4l9dpt0.net
いいから宿題の計算ドリルでもやってろ

680 :名無しさん@お腹いっぱい。:2015/06/14(日) 09:01:35.96 ID:P1MG69MF0.net
実行部を汎用化してahkのほぼ全コマンドを外部iniに従って実行できるスクリプト
iniで指定した内容読み込んでメニュー作るスクリプト

なら作って使ってるよ

変動部の編集の手間が楽になるメリットはある
ただ、ahk自体がインタプリタなのに更にかますのはある意味無駄ともいえる
他人が画期的と思ってくれるかどうかは微妙なところだな

681 :名無しさん@お腹いっぱい。:2015/06/15(月) 18:38:57.32 ID:EEiQFxjg0.net
変数に任意のWindowClassを使いたいのですが、どうすればいいでしょうか?。
以下のやり方だと出来ませんでした。
よろしくお願いします。


WinClass=任意のウィンクラス

#IfWinExist, %WinClass%
処理
#IfWinExist

682 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:13:29.08 ID:v3FeIkzA0.net
>>681
#If WinExist(WinClass)

683 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:19:16.43 ID:EEiQFxjg0.net
>>682
本当に素晴らしい!
本当に有難うございました!

684 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:32:34.29 ID:0cok6kz60.net
いいってことよ

685 :名無しさん@お腹いっぱい。:2015/06/15(月) 19:37:16.39 ID:iDDUbAll0.net
眺めてるだけだが、ここ解決人が優秀すぎる

686 :名無しさん@お腹いっぱい。:2015/06/15(月) 20:20:24.77 ID:uVL/DwmW0.net
まぁ、そもそもちゃんとwiki読もうって話よな

687 :名無しさん@お腹いっぱい。:2015/06/15(月) 22:01:40.94 ID:fOTVbzvy0.net
onenote上で
;; 無変換 + i = ↑
sc07B & i:: Send,{Up}
;; 無変換 + k = ↓
sc07B & k:: Send,{Blind}{Down}
これが動きません。→や←は動くのに。どうしてでしょう

688 :名無しさん@お腹いっぱい。:2015/06/15(月) 22:35:59.93 ID:CrVFYZv10.net
>>676
今日試してきました
教えていただいた通りですと、メニューにフォーカスが行ってしまいましたが
↓のようにShiftとCtrlの後に押下するように変更した所1回押すだけでコマンド実行できるようになりました。
ありがとうございました


; SendMode Input
; SetKeyDelay,,10

SC07B & 1::

Send {Shift Down}
Send {Ctrl Down}
Send {Alt Down}
Send {F1}

Send {Shift Up}
Send {Ctrl Up}
Send {Alt Up}
Return

689 :名無しさん@お腹いっぱい。:2015/06/15(月) 23:17:44.55 ID:v3FeIkzA0.net
>>687
最小限のスクリプトを自分でテスト

スクリプトとキーログを見て処理とキーが送られているか確認
Sendの方式変更
SetKeyDelay
ControlSend

690 :名無しさん@お腹いっぱい。:2015/06/16(火) 04:23:37.37 ID:Ga9+At6a0.net
>>686
とはいえAHKで使われてる言語は酷すぎるよ…
pythonかperl風味に変えてほしい

691 :名無しさん@お腹いっぱい。:2015/06/16(火) 04:42:52.81 ID:E6lTCV0a0.net
wiki読まない理由にはなってない

692 :名無しさん@お腹いっぱい。:2015/06/16(火) 07:37:52.85 ID:ZOIC/ey/0.net
>>690
ちなみにどの辺がヒドイと思うの?

693 :名無しさん@お腹いっぱい。:2015/06/16(火) 07:45:55.66 ID:DcshQhzP0.net
if xx = yy

if( xx = yy )
で違うとか、いろいろめんどくさい

694 :名無しさん@お腹いっぱい。:2015/06/16(火) 14:36:29.06 ID:tVufIEKX0.net
「本当に」他言語やってる人はいつもの感覚プラスαで上段の記法もできるってだけだから何も混乱しない

695 :名無しさん@お腹いっぱい。:2015/06/16(火) 15:20:18.24 ID:x+VHtPpr0.net
v2でちょっとはましになってるので試してみるといいかも

696 :名無しさん@お腹いっぱい。:2015/06/16(火) 16:59:32.66 ID:e+QZwt8/0.net
>>690
perl風とかひたすら読みにくくなるなw

697 :名無しさん@お腹いっぱい。:2015/06/17(水) 22:43:13.36 ID:RCetnyoS0.net
お助けください
親父が将棋ゲームを遊んだ積算時間を知りたいと言うので、コードを改変しましたが上手くいきません。
秒と分が1桁の時に、先頭に0が表示されません。INIWRITEしても同様の症状です。
分が59から00に変わる所に、1秒間だけ60が表示されます。
何卒宜しくお願い致します。

http://pastebin.com/aTA7mTzJ

698 :名無しさん@お腹いっぱい。:2015/06/18(木) 01:49:00.43 ID:QmnHYq920.net
ManicTime使ったほうが早くね

699 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:26:01.78 ID:t37xkAv40.net
Sekisan:
timers += 1

if(timers > 59)
{
timerm += 1
timers := "0"
}
if(timerm > 59)
{
timerh += 1
timerm := "00"
}
while StrLen(timers) < 2
 timers = 0%timers%
while StrLen(timerm) < 2
 timerm = 0%timerm%
while StrLen(timerh) < 2
 timerh = 0%timerh%
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%

return

こんなんでいいんじゃねーの?試してないから分からんけど

700 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:28:00.97 ID:avfhSFuk0.net
>>697
そのスクリプトだと分と秒の判定が順序が逆。
10秒以下なら前に"0"を付ける。

以下、やっつけ

Sekisan:
timers += 1
if ( timers < 10 )
timers = 0%timers%
if(timers > 59){
timerm += 1
if ( timerm < 10 )
timerm = 0%timerm%
timers := "00"
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}else{
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}
if(timerm > 59){
timerh += 1
timerm := "00"
GuiControl, , Sekisan , %timerh%:%timerm%:%timers%
}
return

701 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:44:03.68 ID:40T+bdxp0.net
>>697
Settimerなどでの単純な数値のカウントでは
自動Sleep、割り込み、処理負荷などで少しずつ誤差が生じるので精度が低い
正確に計算したい場合はOSから時間を取得して算出する必要がある


Save_Time := 24 * 60 * 60 * 1000 ; 1日
Save_Time += 60 * 60 * 1000 * 23 ; 23時間
Save_Time += 59 * 60 * 1000 ; 59分
Save_Time += 55 * 1000 ; 55秒

Time := A_TickCount ; 開始時間
Settimer, timer, 1000
return

timer:
Tooltip % TimeConvert(A_TickCount - Time + Save_Time)
Return

TimeConvert(mSec) { ; ミリ秒 → 日時分秒 変換関数
SetFormat, Float, 02.0
D := mSec // 86400000 + 0.0
H := Mod(mSec // 3600000 , 24) + 0.0
M := Mod(mSec // 60000 , 60) + 0.0
S := Mod(mSec // 1000 , 60) + 0.0
return % D "day " H ":" M ":" S
}

ESC::
ExitApp

702 :名無しさん@お腹いっぱい。:2015/06/18(木) 02:49:56.47 ID:iRtY3t370.net
>>699様、>>700様、>>701様、こんばんは。
寝る間も惜しんでスレに張り付いていた甲斐がありました。
無事に正常動作の確認が取れました。
これで早朝には親父にドヤ顔出来ます!!!!。
本当に有難うございました、この御恩は一生忘れません。

703 :名無しさん@お腹いっぱい。:2015/06/19(金) 15:57:57.34 ID:p5DbvC0w0.net
NumLockオフ時のテンキーのリマップが上手く生きません。助けてください。

Key History で調べて、
テンキー4を次のようにしました。

vk25sc04B::Send,{Media_Prev}

すると、普通のカーソルキーまでMedia_Prevになってしまいます。

NumLockオフ時のテンキーは
vk25sc04B
であり、
普通のカーソルLeftキーは
vk25sc14B
のはずですが、

どうすれば巻き添えの誤爆を回避できるでしょうか?
(ほかにもいっぱい不具合が出てお手上げです。)

704 :名無しさん@お腹いっぱい。:2015/06/19(金) 16:06:02.26 ID:lkXV4CWY0.net
http://ahk.xrea.jp/KeyList.html
NumpadLeft

705 :名無しさん@お腹いっぱい。:2015/06/19(金) 16:07:37.69 ID:uoPaOsGA0.net
質問する前にwikiを見ましょう

706 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:13:58.54 ID:sx2tWzdL0.net
特定の色を(透明にするのではなく)別の色に置き換えることはできませんか?

707 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:28:10.49 ID:LbICqwUq0.net
>>706
状況が分からないのですが

708 :名無しさん@お腹いっぱい。:2015/06/19(金) 19:37:32.47 ID:p5DbvC0w0.net
>>704
>>705
ありがとうございました。散々調べたのですが意味がわからず無駄なことをやっていたようです。

このページを見たんですが、
http://ahkwiki.net/KeyList

〜〜〜
Numpad0 〜 Numpad9
NumpadDot
(NumLockがOFFの時のみ) ←★
テンキー上の 0 〜 9 および .(ドット)、キーボードメイン部分とは区別される。
※外付けテンキーで「00」や「000」を持つものもあるがNumpad0連打のことが多い。
〜〜〜〜

★の部分って間違ってますよね?
逆ですよね?

709 :名無しさん@お腹いっぱい。:2015/06/19(金) 20:03:16.52 ID:LbICqwUq0.net
>>708
誤植だね

710 :名無しさん@お腹いっぱい。:2015/06/19(金) 20:27:47.27 ID:sx2tWzdL0.net
>>707
たとえばウィンドウの青い部分を赤い色に置き換えたいです

711 :名無しさん@お腹いっぱい。:2015/06/19(金) 21:01:04.12 ID:ScgTnJvZ0.net
青い部分を透明化&GUIで該当窓と同サイズの赤窓作って該当窓の下に重ねる
窓移動時の追従とか考えだすと面倒くさくなるけどな

712 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:06:05.85 ID:uoPaOsGA0.net
>>708
情報が古い、不備があるので
http://ahkwiki.net/Top
こっちを使った方が

713 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:07:19.60 ID:uoPaOsGA0.net
>>704のサイトとまちがえたw
すまん。それでいい

714 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:08:13.29 ID:uoPaOsGA0.net
>>708
その2つ下を見ましょう

715 :名無しさん@お腹いっぱい。:2015/06/19(金) 23:59:17.39 ID:sx2tWzdL0.net
>>711
参考になりました

716 :名無しさん@お腹いっぱい。:2015/06/20(土) 02:44:13.36 ID:fAVAqMVh0.net
c:\test.txtというファイルが有ったとして
これをExplorerで選択、切り取り状態にするにはどうやればいいですか

717 :名無しさん@お腹いっぱい。:2015/06/20(土) 11:20:51.65 ID:ZHFJl+ZG0.net
>>716
WinActivateでエクスプローラをアクティブ
ControlFocusでアドレスバーにフォーカス移動
環境に合わせて適度にSleep
Send,c:\{Enter}
ControlFocusでファイルペインにフォーカス移動
環境に合わせて適度にSleep
Send,test.txt^x

OSバージョンやツリーペインのあるなし等でClass名、Control名は変わるので適度に調整
アドレスバー出してない場合は知らん

718 :名無しさん@お腹いっぱい。:2015/06/20(土) 15:20:08.19 ID:8MyyN6gm0.net
explorer.exe /select,c:\text.txt

719 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:08:02.33 ID:YPh81vzJ0.net
アドバイスお願いします。
マウスのホイールクリックをCtrl+F1で行おうとしたのですが・・・

^F1::
Send,{MButton down}
KeyWait,Ctrl
Send,{MButton up}
return

Firefoxだと正常だし、ブラウザ以外のアプリ(秀丸エディタ、Google Earth)でも動作します。

しかし、ChromeとIEのブラウザコンテンツ内でのみ『動作しません』
タブの上では反応します。

修飾キーを Shift, Win, Alt いずれに替えても同じ症状です。
もちろん拡張機能などは切ってます。

動かない原因分かりますでしょうか?

(Chromeだと押した一瞬だけカーソルが変化するので何か反応しているようです)

720 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:39:04.50 ID:qldo9SDE0.net
>>716
クリップボードにコピーまたは移動するファイルを設定する関数
ttp://www.autohotkey.com/board/topic/23162-how-to-copy-a-file-to-the-clipboard/?p=463462

MouseGestureL.ahkの中にあるMG_FilesToClipboard関数でもいいがx64非対応

721 :名無しさん@お腹いっぱい。:2015/06/20(土) 21:56:06.75 ID:qldo9SDE0.net
>>719
困ったら手動で再現してみれば問題が分かりやすい
オートスクロールの終了条件が「スクロール以外のキーを押す」
それが原因で一瞬で終わっている

^F1::
KeyWait Ctrl
KeyWait F1
Send {MButton}
return

722 :名無しさん@お腹いっぱい。:2015/06/20(土) 22:23:49.03 ID:YPh81vzJ0.net
>>721
ありがとうございます。

>オートスクロールの終了条件が「スクロール以外のキーを押す
>それが原因で一瞬で終わっている

これは自分でも疑っていたのですが、一体何に反応しているのかが、どうしても分かりません。


〜〜〜
とりあえず、教えて頂いたコードにしたら、今度はGoogle Earthで動かなくなってしまいました。
#IfWInActiveで個別に判定するしかないのかもしれませんね。

723 :名無しさん@お腹いっぱい。:2015/06/20(土) 22:37:38.60 ID:YPh81vzJ0.net
>>722
いま原因に気が付きました。

『修飾キーの自動復元
Sendコマンドが始まるとき、仮想的に修飾キーを離した状態になる。
コマンド終了時に、再びもとの状態に戻される。
この動作は、Keysの最初に {Blind}をつけることで無効化できる。』

これですね!!

^F1::
Send,{Blind}{MButton down}
KeyWait,Ctrl
Send,{MButton up}
return

さらに Ctrl+CapsLock にアサインし直して最高の使い心地になりました。
(Lock系キー問題回避のためレジストリのスキャンコードマップで仮想的にF13キーを経由)

724 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:35:18.66 ID:gWqgsFnN0.net
エクスプローラを落としてシェルを使わない状態でVistaを運用しようと思ってるんですが、その場合AHKって動くんでしょうか?
また、AHKと補助でいくらかソフトを導入すればシェルなしVista運用は可能だと思いますか?

725 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:44:01.24 ID:dMLrQ3p00.net
IniReadについてお尋ねします。
例えば、IniRead, HENSUU, HENSUU.ini, HAGE, HOGE
だとして
HENSUUから返された変数がERRORだった時のIF文で

If HENSUU = ERROR
IniWriteしたくない

ではなくて

If Not HENSUU = ERROR
IniWriteしたい

みたいな事をしたいのですが、2行では出来ません。
このような時はどのようにすればよろしいでしょうか?。
よろしくお願いします。

726 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:48:36.20 ID:NHz4zLYU0.net
If HENSUU <> ERROR
If HENSUU != ERROR

727 :名無しさん@お腹いっぱい。:2015/06/21(日) 23:55:29.96 ID:dMLrQ3p00.net
>>726
出来ました!。
いつも稚拙な質問に光速回答ありがとうございます。
お世話になりました。

728 :名無しさん@お腹いっぱい。:2015/06/22(月) 03:42:53.14 ID:8D6+AoT90.net
「あるウィンドウから開いた#32700」ってどう表現するんで?

729 :名無しさん@お腹いっぱい。:2015/06/22(月) 08:18:01.46 ID:PCjWNZvJ0.net
SoundGet以外の方法で、マスターボリュームを取得する方法ってありますか?

730 :名無しさん@お腹いっぱい。:2015/06/22(月) 09:05:28.92 ID:7s+LTHL90.net
>>728
プロセス名から判断したらいい。
それか常にアクティブウィンドウをチェックしておいて#32700がアクティブになったときの
事前のアクティブウインドウで判断するか。

731 :名無しさん@お腹いっぱい。:2015/06/22(月) 18:30:23.29 ID:akNvAV5P0.net
>>729
できるがマスターボリュームならSoundGet使えばいい
他には外部ライブラリの Vista Audio Control Functions が紹介されてる

732 :名無しさん@お腹いっぱい。:2015/06/22(月) 21:07:17.69 ID:SfGXTq5f0.net
ありがとうございます、確認してみます。

733 :名無しさん@お腹いっぱい。:2015/06/22(月) 21:28:58.62 ID:SfGXTq5f0.net
>>731
VA.ahkのコードが大きいですけど、やりたい事は無事出来ました。
ありがとうございました。

734 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:18:55.77 ID:uPq0cgfh0.net
以前回答いただいた時のコードなのですが、バイナリデータを出力する際に6KB程度のファイルしか出力出来ません。
大きなデータを出力しようとするとエラーが表示されてしまいます。
どうにか改善出来ませんでしょうか、よろしくお願いします。

HexToBin("Hoge.bin", "00 00 02 00 01 00 20 20 00")
HexToBin(File, Array)
{
Hex := StrSplit(Array, A_Space)
BufSize := Hex.MaxIndex()
VarSetCapacity(Buf, BufSize)
Loop, % BufSize
{
h := "0x" Hex[A_Index]
NumPut(h, &amp;Buf, A_Index-1, "Char")
}
oFile := FileOpen(File, "w")
oFile.RawWrite(Buf, BufSize)
oFile.Close()
}

735 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:32:48.89 ID:mpSINKgY0.net
>>734
いつの何する物なのかぐらい書いたら?

736 :名無しさん@お腹いっぱい。:2015/06/23(火) 23:54:49.47 ID:VzeKDTKE0.net
http://anago.2ch.net/test/read.cgi/software/1398655195/660-
↑で俺が以前書いたものだけど、8MB程度まで試したけどちゃんと出力されたけどな
速度遅いしとメモリ食うし大きいデータは一旦テキストで出力して外部ツールで処理した方がいいんじゃない?

http://www.vector.co.jp/vpack/filearea/win/util/bin/conv/
ここから好きなの選ぶといいよ

737 :名無しさん@お腹いっぱい。:2015/06/24(水) 00:18:04.19 ID:K13YYqDY0.net
>>735
説明不足ですみません。

>>736
素直にVectorのツール使います。
ご紹介有難うございました。

738 :名無しさん@お腹いっぱい。:2015/06/25(木) 19:14:07.99 ID:15S1kntH0.net
autohotkeyとは直接関係ないんで恐縮ですが、
エクスプローラのコピー、切り取りを呼び出すような単機能フリーソフトであとからあとから対象ファイルを追加していくことのできるものってご存知の方いらっしゃいませんか?

cutfileとcopyfileとpastefileっていうbluewindに関連した単機能ツール群があってそれをファイラーからautohotkeyを経由して呼び出して使ってるんですが、
それだとエクスプローラのコピー、切り取りを呼び出すまではできるんですがC:\bをコピーしてからC:\cもコピーしてC:\eにまとめて貼り付けるってことができない状態です
重複ファイルがあるときのリネーム書式が〜〜〜 (2).***であってほしいんでFastCopyとかの代替ファイルコピーソフトは使えません。探しましたが書式いじれるソフトは公開されてませんでした
バッチファイル書ければ出来るんでしょうか?

環境はWin8.1 32bit、autohotkey v1.1.09.00です

739 :名無しさん@お腹いっぱい。:2015/06/25(木) 19:58:56.43 ID:66nXthkk0.net
>>738
無いなら自分で作ればいい
ファイルの存在確認して重複はリネームしてから送ればいいだけだろ?

740 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:17:17.21 ID:15S1kntH0.net
>>739
すみません、確認してその結果によって分岐〜っていうの苦手でして……多分肝の部分なんでしょうが
〜〜〜.***の存在を確認したあと存在したら〜〜〜 (2).***を確認して存在したら〜〜〜 (3).***を確認して存在しなかったら〜〜〜 (3).***にリネームっていう加算しつつ確認の仕方がわかりません。ここだけお恵み願えないでしょうか

741 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:40:55.13 ID:YGQADaH50.net
RegExMatch()で引っ掛けて(n)の数値部分抜き出して+1してReplace

742 :名無しさん@お腹いっぱい。:2015/06/25(木) 21:50:54.75 ID:xSDuv3nz0.net
歯抜けあったときに再利用するのか欠番にするのか

743 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:04:36.43 ID:15S1kntH0.net
ダメですわかりません
多分慣れてる人から見れば2,3行ですよね?おねがいします(><;)

>>742
再利用したいです

744 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:06:51.82 ID:YGQADaH50.net
そういうお願いのしかたしてコード貰えるスレじゃないからここ

745 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:36:07.13 ID:15S1kntH0.net
知識の出し惜しみは集団を非生産的にする原因の一つですよ。無用な不和を生むしそのうち必要な知識の共有にも歯止めをかけ始めます
その結果の今のこのスレなのかもしれませんね
教えていただけないのであればこれにて失礼します

746 :名無しさん@お腹いっぱい。:2015/06/25(木) 23:37:58.53 ID:Y5SdqH+C0.net
バイバイw

747 :名無しさん@お腹いっぱい。:2015/06/26(金) 00:57:47.27 ID:cSqtQs7c0.net
クレクレの捨てゼリフ虚しすぎ
ここは自助努力する人は全力で助けるスレなのになあ

748 :名無しさん@お腹いっぱい。:2015/06/26(金) 01:01:50.66 ID:NgSxznxn0.net
このスレ、2chとは思えないほど親切な人多いのになw

749 :名無しさん@お腹いっぱい。:2015/06/26(金) 06:05:29.98 ID:qnLH4XQ70.net
>>745
こういうレスは非生産的で無用な不和を産む原因ですよw

750 :名無しさん@お腹いっぱい。:2015/06/26(金) 07:29:42.75 ID:Izhts68i0.net
>>745
集団を生産的にしたいがお前のような乞食はぶっ殺したい

751 :名無しさん@お腹いっぱい。:2015/06/26(金) 11:52:12.55 ID:Qu/lLMXm0.net
>知識の出し惜しみ
教える側の手間や工夫やモチベーションとか想像もつかないんだろうな
ID:YGQADaH50はいろいろ問題あるけどそういう想像力のなさも一つだよな

752 :名無しさん@お腹いっぱい。:2015/06/26(金) 13:12:31.52 ID:4/OLyxU30.net
正直おれも>>738のようにファイルやフォルダの「追加コピー/移動」したくて、
10年近く前に、当時やり始めたばっかのWSHでかなり苦労して作った(未だに使ってるよ)。

>多分慣れてる人から見れば2,3行ですよね?
冗談じゃねーぞ、変数代入だけの2,3行とはわけが違う。
改めて見直したら、自分はリネームと再コピーの処理を一つのサブルーチン(20行ほど)にして、再帰処理を使ってループしてた。
それに、同名ファイル(フォルダ)の存在確認などせず、コピーに成功するか失敗するかで分岐するという"荒技"も使用してたよw

753 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:22:28.75 ID:RR4yo7vg0.net
2つのファイル、a.ahk と b.ahk があって、それぞれに

a::
なんとか
return

と入れているとします。
そして、2つのファイルに別のなんとかが入っているのですが、双方のa:: の中身を実行してほしいのですが
実際にやってみると、どちらか片方だけしか実行されないみたいです

双方のa:: の中身を実行させるようにする方法ってどうするのでしょうか

754 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:24:31.08 ID:ekLlarAg0.net
どっちか片方になんとかを二つ分入れたらいいんじゃない

755 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:26:43.42 ID:XrpFyCrZ0.net
コジるしか能のないやつがコジってきたところでそんなに相手にする必要があるか?
それと単芝を生やすやつも消えろ、見苦しい

756 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:27:47.46 ID:/QNj1MFk0.net
コジるって何?

757 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:29:29.18 ID:Qcw8n3w80.net
>>756
想像力の欠如

758 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:32:33.48 ID:RR4yo7vg0.net
>>754
2つとも全く別のスクリプトで、普通は片方だけで使うのですが、ときどき両方を同時に使うことがあるんです

そのとき、a.ahk内のa:: はa,ahk内の他のコマンドと関係していてて、b.ahk内のa:: はb.ahk内で動いているので
一緒にできないのですよ

759 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:37:46.12 ID:ekLlarAg0.net
a.ahkのa::のなかにsend bでも付け足して
b.ahkにa::とおなじ内容のb::を加えるってのはどう

760 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:43:55.57 ID:RR4yo7vg0.net
>>759
なるほど。そうやって逃げられるのかな。やってみますね
正当法で両方のa::を実行させることは出来ないのですね

761 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:48:11.29 ID:RR4yo7vg0.net
>>759
これやってみたけど、ダメですねえ
send, b ってやりましたが、他のスクリプトのb:: には入らないようです

762 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:49:31.84 ID:ekLlarAg0.net
そうでしたか
ごめんなさい

763 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:54:53.35 ID:WBaIj8X+0.net
>>760
a.ahkの方でb.ahkが存在するならb.ahkに変数を渡してみては?
以下は過去スレを個人的にメモしてたサンプル

●GUIを利用して変数と値を渡す
;---- server.ahk ---- (受け側のスクリプト)
Gui, Add, Button,gSub1
Gui, Add, Edit, vParam
Gui, Show,Hide, HiddenWindow
Return
Sub1:
Gui, Submit, NoHide
MsgBox, % Param
Return

;---- client.ahk ---- (送る側のスクリプト)
Gui, Add, Edit, vParam
Gui, Add, Button,,Go
Gui, Show
Return
ButtonGo:
Gui, Submit, NoHide
DetectHiddenWindows, On
ControlSetText,Edit1,% Param, HiddenWindow ahk_class AutoHotkeyGUI
ControlClick,Button1,HiddenWindow ahk_class AutoHotkeyGUI
Return

764 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:55:50.78 ID:WBaIj8X+0.net
>>763 とは別の方法

●OnMessage と PostMessage を使って値を渡す
;文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む

;--- receiver.ahk --- (受け側のスクリプト)
;第1引数の 0x5555 は他の値でもOK、第2引数は受け取ったときに実行する関数名
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg) ; ※引数は省略してもOK、例えば MsgHandler() というようにする。
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}

;--- sender.ahk --- (送る側のスクリプト)
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
;第1引数は送る値、第2と第3引数は0や1でも問題ない
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return

765 :名無しさん@お腹いっぱい。:2015/06/26(金) 15:58:43.15 ID:ekLlarAg0.net
あ、exe化させたb.ahkを起動させるというのは

766 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:00:59.00 ID:RR4yo7vg0.net
>>764
On

767 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:02:42.82 ID:RR4yo7vg0.net
>>764
OnMessageを使った方法は前にやったことがあります
>>763の方法は初めてです。ありがとうございました

やっぱりメッセージのやりとりとかしないといけないのかな
ちょっとめんどくさいですが、これなら出来るのでこれでやりましょうか

768 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:07:45.68 ID:RR4yo7vg0.net
2時間くらい席を空けます。なにかあれば、またあとでw

769 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:14:20.02 ID:Q7Wzsq1u0.net
クレクレ荒らしが来た直後にこういう理想的なやりとりがかなり速いペースでなされるって前にも見たな。まるで仕切り直しのために用意されたような
気のせいか?

770 :名無しさん@お腹いっぱい。:2015/06/26(金) 16:40:33.48 ID:cSqtQs7c0.net
>>752
うちは妥協して hoge〜のコピー〜のコピー〜のコピー.txt
みたいな感じでどんどん末尾増やしてってたなw
エクスプローラと完全に同じ規則でそこ絶対譲れないって前提がまず面倒
そもそもOSバージョンでリネーム規則自体違うしな

771 :名無しさん@お腹いっぱい。:2015/06/26(金) 18:45:41.21 ID:lzZmXfXn0.net
これはクレクレとどう違うん?

772 :名無しさん@お腹いっぱい。:2015/06/26(金) 18:51:49.48 ID:Qu/lLMXm0.net
744が言ってるが自助努力から見える姿勢だろね

773 :名無しさん@お腹いっぱい。:2015/06/27(土) 08:41:42.50 ID:6dLBD4bc0.net
生産性が30%向上する神スクリプト

Space::Shift
Shift::Space

774 :名無しさん@お腹いっぱい。:2015/06/27(土) 14:13:06.57 ID:ikjXxhWm0.net
shift押す頻度よりspace押す頻度の方がよっぽど高い

775 :名無しさん@お腹いっぱい。:2015/06/27(土) 14:59:16.07 ID:D9/6DwQL0.net
小指スペースのほうが捗る派なんじゃね

776 :名無しさん@お腹いっぱい。:2015/06/27(土) 15:11:09.09 ID:NP7P/K510.net
>>775
だとしても。。。

777 :名無しさん@お腹いっぱい。:2015/06/27(土) 15:30:32.49 ID:TBPPo3Er0.net
流行らせるページだかにSandS.ahkって有るのにな
今のバージョンでそのまま使えるか分からんけど…

778 :名無しさん@お腹いっぱい。:2015/06/27(土) 17:59:28.80 ID:Djei5dJQ0.net
正直、スペース部分をシフトにするより柔軟に設定できる分、アップローダにあるワンショットモデファイヤのほうが使いやすいのですよ

779 :名無しさん@お腹いっぱい。:2015/06/27(土) 22:22:03.89 ID:TLYmI5Mvg
無変換・変換あたりをshiftに割り当てればいいんじゃない?親指シフト派みたいに

780 :名無しさん@お腹いっぱい。:2015/06/29(月) 04:51:48.46 ID:NLpdyHkk0.net
GuiControlで数値やテキスト等をタイマーで表示させた場合に
更新したウインドウがチラつかない上手い方法ってありますかね?

781 :名無しさん@お腹いっぱい。:2015/06/29(月) 05:06:40.21 ID:YdY2eCXn0.net
表示しているメッセージに変更がなければ更新しないようにすれば多少は改善されるんじゃない

782 :名無しさん@お腹いっぱい。:2015/06/29(月) 05:37:36.61 ID:0A9SBmi50.net
情報たりなさ過ぎじゃない?
表示内容の取得とその反映をsettimerで行っているという前提で話すけど、
タイマー間隔で毎回Guicontrolしてるからちらつく
本当に必要な時(表示内容が前回と違う時)だけ実行するようにすればいい
タイマー間隔と同間隔で目まぐるしく表示内容が変わるんなら知らん

SetTimer, Timer, 1000
return

Timer:
 min := A_Min
 WinGetTitle, aWin, A

 if (min != preMin || aWin != preAWin) {
   GuiControl, Text, ControlID1, %min%
   GuiControl, Text, ControlID2, %aWin%
   preMin := min
   preAWin := aWin
 }
return

783 :名無しさん@お腹いっぱい。:2015/06/29(月) 06:22:11.86 ID:NLpdyHkk0.net
>>782
確かに情報少な過ぎました、申し訳ないです。
SETTIMER 50ms位で回しているんですけど、難しいですかね。
どうも有難うございました。

784 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:23:57.17 ID:ZicKgyoX0.net
AHKで初心者スレ作らない?
もっと簡単な質問したいけど、基本的にスラスラ書ける奴以外お断り感が凄い

785 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:35:10.05 ID:YdY2eCXn0.net
1スレを2〜3日とかで消費するなら分けたほうがいいだろうけど
こんな過疎スレは分ける必要ないやん
初心者だからと気にせず質問したらいい、レスが付くかどうかは質問内容次第だし

786 :名無しさん@お腹いっぱい。:2015/06/29(月) 08:51:24.44 ID:zKtdn2ze0.net
初心者という名のクレクレが湧いて過疎るだけかと

基礎的な質問にはwikiの該当ページ貼って誘導になるし
わかってなさそうな人にはみ砕いて説明してくれてる回答者もいるよ

ただ質問テンプレみたいなのはあってもいいかもね
環境書かない人、目的書かずにコード貼ってデバッグ頼んでくる人とかいるし
クレクレ避けにコード書いて下さい禁止って明示しとくのも有効かも試練

787 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:00:54.30 ID:VFRNxj0V0.net
wikiの該当ページ開いて誘導とか激しくめんどい
AutoHotkeyJpとかAutoHotkey Wikiとかでググってもらう方がいい

788 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:04:03.80 ID:zKtdn2ze0.net
それはググらなくても>1にある
初心者は自分の欲しい情報の該当ページがどこだかわからないから質問してくるんだよ

789 :名無しさん@お腹いっぱい。:2015/06/29(月) 09:12:18.66 ID:YdY2eCXn0.net
>>787
レスしたくなければスルーするかNGに突っ込めばいいやん

>>786
そうなんだよね、本スレがこんなに過疎ってるのに
初心者スレ作っても過疎って放置されるのが分かりきってる。
以前なら知らない間にdat落ちしてる感じ。

790 :名無しさん@お腹いっぱい。:2015/06/29(月) 11:07:04.05 ID:ZicKgyoX0.net
>>785-789
うーむそうですね。
自分も質問できるレベルまでもっと勉強します。

791 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:21:30.45 ID:HWJjF1A20.net
学習中の者です。
IfWinExist が正しく判定されない原因が分かりません。

#+n::
IfWinExist Untitled - Notepad
WinActivate
else
Run Notepad
return

ホットキーが ^!n だと正常に動作します。
しかし #+n だと Untitled - Notepad が存在しても else に飛んでしまいます。

原因と対策を教えて下さい。

792 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:32:04.76 ID:HWJjF1A20.net
すいません、いろいろ勘違いしていました。
どちらのホットキーでも判定おかしいです。


で、そもそも原因はウインドウ名が英語で書かれているからですね。たぶん。
英語でも日本語でも判定出来るように頑張ってみます。

793 :名無しさん@お腹いっぱい。:2015/06/29(月) 14:58:43.40 ID:YdY2eCXn0.net
AU3_Spy.exe でウィンドウ情報を取得してWindowsClass(ahk_class)を指定すればいい
IfWinExist ahk_class WindowsClass

794 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:04:27.46 ID:0A9SBmi50.net
>>783
>>782の前提が間違ってなければ、
タイマーが50msでも表示したい内容が50ms間隔で変更されない限りチラツキは軽減されるはずだけど。
書いたコードは例で、
こんな風に表示した内容を記録しといて変更がないか判別したらいいってことだよ

後は自力で頑張るなり、諦めるなり、情報出すなりなんなりと

795 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:06:29.81 ID:HWJjF1A20.net
>>793
IfWinExist ahk_class Notepad
ということですね。
勉強になりました、ありがとうございます。

796 :名無しさん@お腹いっぱい。:2015/06/29(月) 16:39:52.28 ID:hGPWoSJP0.net
俺も勉強中だがUTF-8で動いた
IfWinExist, 無題 - メモ帳
WinActivate, 無題 - メモ帳
Else
Run Notepad
Return

797 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:14:38.87 ID:HWJjF1A20.net
IfWinExist の後ろのカンマ無くても動きますね。

そもそもサンプルファイルAutoHotkey.ahkにもカンマ無いし。

798 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:39:42.41 ID:hGPWoSJP0.net
OnClipboardChange:をホットキーで有効無効を切り替えるにはどうすればいい?
Suspend,ToggleもPause, Toggleも変化なかった

799 :名無しさん@お腹いっぱい。:2015/06/29(月) 17:49:47.90 ID:UqNeNdBe0.net
普通はホットキーでフラグをトグルさせて、OnClipboardChangeラベル内のIfで分岐処理する

http://ahkscript.org/docs/commands/OnClipboardChange.htm#Function
AHK_Lが最新ならOnClipboardChange関数を使えばオン・オの切り替えもできるよ

800 :名無しさん@お腹いっぱい。:2015/06/29(月) 18:00:05.01 ID:UqNeNdBe0.net
途中で書き直したら消しすぎたw
過去ログ見ればいくつもあるけど簡単な例だと

ClipFlag = 1
return

OnClipboardChange:
if ClipFlag
ToolTip, %Clipboard%
return

!Space::
ClipFlag := !ClipFlag
ToolTip, % ClipFlag ? "ON" : "OFF"
return

801 :名無しさん@お腹いっぱい。:2015/06/29(月) 18:21:59.10 ID:qU45Nqld0.net
カンマ付けてなくても動くけど付けた方が明示的だから最初のうちは付けといた方がいい

802 :名無しさん@お腹いっぱい。:2015/06/29(月) 22:31:42.85 ID:HWJjF1A20.net
>>801
OK

803 :名無しさん@お腹いっぱい。:2015/06/30(火) 18:11:08.95 ID:BCuzGtO60.net
ウインドウタイトルを正規表現でマッチさせたはいいんだけど、その中の一部を後で使うにはどうすればいいのだろ
他の関数中で\1って入力しても、\1がそのまま入っちゃうし、正規表現で待ったさせつつ変数に入れる方法はわからないし困った。
例えば20150531データってウインドウタイトルでいうと、20150531って部分をどこかに保持する方法を知りたいのです。
解決方法はありますか。

804 :名無しさん@お腹いっぱい。:2015/06/30(火) 19:00:28.17 ID:0mtHG+R70.net
RegExMatch

805 :名無しさん@お腹いっぱい。:2015/06/30(火) 19:39:38.84 ID:BCuzGtO60.net
>>804
WinGetTitleの結果に対してRegExMatchでできましたありがとう!

806 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:46:05.60 ID:qUtegEjk0.net
wiki読まないカスは死んでおけ

807 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:49:14.39 ID:H3DPThHx0.net
>>806
死んできたよ
今度はあなたの番ね♪

808 :名無しさん@お腹いっぱい。:2015/06/30(火) 21:55:39.96 ID:vVuJd9SW0.net
何言ってるんだこのカス。死んでも直らんらしいな

809 :名無しさん@お腹いっぱい。:2015/07/01(水) 02:08:22.61 ID:g8dMrIiN0.net
^!f:: msgbox,^!f

vk1Csc079 & S::
; Suspend,On
Send,^!n^!f
; Suspend,Off
return

上のコードでSuspend On/OffしないとSendしたものをAHKがまた拾っちゃうんだけど
対象アプリに^!fを伝えたい場合どう書くのが普通なの?

810 :名無しさん@お腹いっぱい。:2015/07/01(水) 02:32:15.19 ID:+fIiRTQV0.net
>>809
フック >>5

811 :名無しさん@お腹いっぱい。:2015/07/01(水) 16:23:04.14 ID:gB1kXVgW0.net
起動中のメモ帳や電卓のタスクバーボタンを中クリックすると複数起動出来るはずですが、
AHKから起動したメモ帳や電卓だと、この動作が出来ません。

#+n::Run Notepad
#+c::Run Calc

不思議なことに、ピン留めしてある電卓やメモ帳だと普通に複数起動出来ます。

Windows本来の動作ならピン留めなしでもホイールクリックで複数インスタンス起動するはずです。
AHKから起動した時でもこの動作を取り戻すにはどうすれば良いでしょうか?

812 :名無しさん@お腹いっぱい。:2015/07/01(水) 16:32:26.37 ID:+fIiRTQV0.net
>>811
管理者権限 >>8

最低限環境を書こう

813 :名無しさん@お腹いっぱい。:2015/07/01(水) 18:50:45.42 ID:gB1kXVgW0.net
>>812
Windows7 Home
AHK v1.0.48.05
です。

>管理者権限

私も最初それを疑ったのですが、管理者権限でも通常権限でも同じ症状です。

814 :名無しさん@お腹いっぱい。:2015/07/01(水) 18:55:33.89 ID:+fIiRTQV0.net
>>813
旧版のAHKが問題
そのころは管理者権限自体が無い想定外

815 :名無しさん@お腹いっぱい。:2015/07/01(水) 20:49:35.97 ID:gB1kXVgW0.net
>>814
最新の AHK_L を導入することにします。

(ついでに、かざぐるマウスもやめてMouseGestureL.ahkにまとめた方が良さそうですし)

教えて頂いてありがとうございました!

816 :名無しさん@お腹いっぱい。:2015/07/03(金) 01:40:35.81 ID:qgluISHY0.net
IMEがオフの時だけ,
無変換キーにコントロールキーを,
変換キーにシフトキーを,
割り当てたいけど,>>1では無理かな

そもそもIMENの動作モードの取得とかどうすんだって話だし

817 :名無しさん@お腹いっぱい。:2015/07/03(金) 02:13:30.29 ID:7GUlc3YA0.net
テンプレ

818 :名無しさん@お腹いっぱい。:2015/07/03(金) 07:40:36.17 ID:iBIC9JGh0.net
>>816
>7

819 :名無しさん@お腹いっぱい。:2015/07/03(金) 17:50:16.24 ID:hTtMpwkr0.net
事務でよく使う作業で、単語登録してある語が入力された後にカーソルを戻したく、調べてみてホットストリングで出来るのかな?と思ってやってみましたが出来ませんでした。

http://ahkwiki.net/Hotstrings
:*B0:年月日)::{Left 4}

試しに)だけで入力したら出来たので日本語では出来ないという事でしょうか?
あと単語登録で)を出力した時は出来ませんでしたので、ホットストリングでは無理な作業でしょうか?
だとするとこれが可能になるやり方は何かあるでしょうか?
すみませんがよろしくお願いします。
Win8.1 64

820 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:25:50.86 ID:jEsR1Ep/0.net
単語登録に登録した変換元になる言葉をホットストリングのキーにするのは?

hogehoge→変換→:*B0:年月日)
となってるのを

::hogehoge::
Send,:*B0:年月日)
Send,{Left 4}
Return

的な感じで

821 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:35:30.20 ID:iBIC9JGh0.net
ホットストリングはキー入力を見てるからIME経由での貼付けは無理じゃろ
>820が正解

822 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:47:38.80 ID:iM+fwL850.net
>>819
自分で張ったリンク先に
「置換後のテキストに2バイト文字を使うことはできないので、〜」
って解決策含めて書いてあるじゃん

823 :名無しさん@お腹いっぱい。:2015/07/03(金) 18:50:46.22 ID:iM+fwL850.net
すまん818は815の質問勘違いしてた

824 :815:2015/07/03(金) 18:57:50.70 ID:hTtMpwkr0.net
>>820-821
お返事ありがとうございます
共用のパソコンでパソコンに不慣れな人が何人もいて、そんな人の作業をやりやすくミスが起きない用にしたくてなんですが、
その為単語登録も簡単に一文字で出せる様にしてある物が多く、今回の物も他に同じ読みの登録が複数あるのでその方法が使えないんです
自分が個人で使うにはいくらでも変更出来るのですが、他の複数の人がメインで皆さんそれに慣れてるので違う言葉には出来ないんですよね
使い勝手を変えず実現させたいのですが、他にやり方は無いのでしょうか?
長文すみません。

825 :815:2015/07/03(金) 19:00:12.85 ID:hTtMpwkr0.net
>>822-823
ですよね。
読んで逆だなと思ったので違うだろうと質問させて頂きました。

826 :名無しさん@お腹いっぱい。:2015/07/03(金) 20:11:55.29 ID:9dk2v8nd0.net
>>824
; #If IME_Get() ; http://www6.atwiki.jp/eamat/pages/17.html
:B0:nenngappi::{BackSpace 5}年月日{Enter}){Enter}{Left 4}(
; #If

827 :名無しさん@お腹いっぱい。:2015/07/04(土) 10:09:18.35 ID:u9PD2TChH
ホットキーラベルなんだけど、shift+aとかはできるんだけどshift+Numpad5ができない
別に他に割り当てればいいんだけど、+Numpad5::は書き方がおかしいのかな
^Numpad5::はいけるんだけど

828 :名無しさん@お腹いっぱい。:2015/07/04(土) 16:22:08.05 ID:hjaU8+Ae0.net
調べてもどうしても分からなかったので教えて下さい。

あるキーをWinキーと同様に動作させたいのですが、キーリピートを拾わないようにするにはどうすれば良いでしょうか?

たとえば下記のようにしても、押し続けると a のキーリピートが発生してしまいます。
a::
send,{LWin down}
KeyWait,a
send,{LWin up}
return

Winキーと同様にキーリピートが生じないようには出来ないでしょうか?
(Windowsのキーリピートまるごと無効化することは考えていません)

(環境)
v1.1.22.02
Win7

829 :名無しさん@お腹いっぱい。:2015/07/04(土) 16:56:26.80 ID:LJcutymJ0.net
フック

830 :名無しさん@お腹いっぱい。:2015/07/04(土) 17:27:31.07 ID:qxaeyUNz0.net
>>828
そういう用途ならホットキーじゃなくてリマップしたほうがいい
a::LWin

831 :名無しさん@お腹いっぱい。:2015/07/04(土) 18:12:48.68 ID:tFlcUr1H0.net
>>828
LWin+a が押されたと認識してる
ホットキーは登録されていないので a のキーリピートが発生する

--------

*a:: ; 修飾キーの組み合わせを受け入れる

; $a:: ; またはフックで拒否する
; $#a::

send, {LWin down}
KeyWait, a
send, {LWin up}
return

832 :名無しさん@お腹いっぱい。:2015/07/04(土) 20:50:25.60 ID:hjaU8+Ae0.net
>>830
こんなにシンプルに出来るとは。。。
ありがとうございました。

>>831
>LWin+a が押されたと認識してる

これは気付きませんでした。AHKは難しいですね。

ホットキーラベルを *a にしたら狙い通りの動きになしました。
a::Lwin のリマップと同じ動きみたいです。

教えていただいたコードをいろいろ試行錯誤してみました。
理解しきれていませんが頑張ります。
ありがとうございました。

>>829
フックって難しいですね。

833 :名無しさん@お腹いっぱい。:2015/07/04(土) 23:40:41.07 ID:kTJL9NHr0.net
#USEHOOK

おまじないな。書いとこうな。

834 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:03:49.01 ID:99Nt666p0.net
684にも書きましたが、
onenote上でSend, {Up}等がどうしても動きません。賢い方助けてください。

send,{left}は動きます。最小構成で試してみましたがやはり動きませんでした。
以下が動きません。
;; 無変換 + i = ↑
sc07B & i:: Send, {Up}
;; 無変換 + k = ↓
sc07B & k:: Send, {Blind}{Down}

835 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:06:59.27 ID:uiV+6Tdg0.net
同じ現象に出会った人のためのメモ。

Google Chrome の Webコンテンツ内で
+RButton::AppsKey
が動きません。

IEとFirefoxでは動きます。

どうやら Chrome では シフト修飾されたアプリケーションキー には反応しないようです。

なのでリマップではなくホットキーを使いました。
+RButton::Send,{AppsKey}

836 :名無しさん@お腹いっぱい。:2015/07/05(日) 00:20:24.69 ID:bL3HRZsN0.net
Chromeはクラス拾えないし相性悪いからfirefoxにしとき。ブラウザでAHK使うならね

837 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:34:38.28 ID:ybRBVByc0.net
すみません、このコードで小数点以下を削除するにはどうしたらよろしいでしょうか。
よろしくお願いします。

Width := A_ScreenWidth
Height := ( A_ScreenWidth * 0.5555 )
SetFormat,Float, 0.0
msgbox, %Width%x%Height%

838 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:50:23.31 ID:ybRBVByc0.net
度々すみません、これで正解ですか?。
何となくスマートではない様な気がします。

Width := A_ScreenWidth
Height := ( A_ScreenWidth * 0.5555 )
StringTrimRight, Height, Height, 7
msgbox, %Width%x%Height%

839 :名無しさん@お腹いっぱい。:2015/07/05(日) 01:55:11.58 ID:XZrEpAiZ0.net
>>837
SetFormatのページに書いてある
このコマンドを使用しても、すでに変数に入っている数値のフォーマットは変換されない。
変換するには、0を足すなどの計算を行えばよい。

840 :名無しさん@お腹いっぱい。:2015/07/05(日) 02:07:38.18 ID:ybRBVByc0.net
>>839
了解しました!返答有難うございました。

841 :名無しさん@お腹いっぱい。:2015/07/05(日) 03:17:19.02 ID:A0DdOJbL0.net
>>840
小数点以下切り捨てっていう直接的な関数はないみたいだけど、Floorっていう関数があった・・・これ使える?

Floor()
http://ahkwiki.net/Floor

Width := A_ScreenWidth
Height := Floor( A_ScreenWidth * 0.5555 )
msgbox, %Width%x%Height%

842 :名無しさん@お腹いっぱい。:2015/07/05(日) 04:41:54.09 ID:ybRBVByc0.net
>>841
おお!こんなものまであったんですね、色々と使えそうです。
ご紹介有難うございました。

843 :名無しさん@お腹いっぱい。:2015/07/05(日) 10:11:53.44 ID:Xw4ohWkl+
関数を終わらせる方法があるか質問なんだけど、なにかあるかな

普通なら関数を終わらせるにはreturnを使えばいいんだけれど、
関数内でSetTimerでサブルーチンを回転させてて
そのサブルーチンに条件が一致したら関数を終了させる、ということをさせたい

けれどサブルーチン内でreturnやexitをさせても、
そのサブルーチンが終了するだけで関数を終わらせられない。何かやり方あるだろうか

844 :名無しさん@お腹いっぱい。:2015/07/05(日) 12:25:15.72 ID:hsnN1xHr0.net
>>834
ぐぐれ
不完全ながら解決してる人がいたはず

845 :名無しさん@お腹いっぱい。:2015/07/05(日) 20:22:57.78 ID:nYhbS0TU0.net
有料ポルノ動画が「見るだけなら」無料 両手をキーボードの上に置いている間だけ再生できるポルノサイト
ttp://headlines.yahoo.co.jp/hl?a=20150703-00000050-it_nlab-sci

瞬時にAHKのことが頭をよぎった

846 :名無しさん@お腹いっぱい。:2015/07/05(日) 20:55:06.47 ID:O2cESNl20.net
>>845
ゲームガードとかでガチガチにされてないだろうか?

847 :名無しさん@お腹いっぱい。:2015/07/05(日) 21:35:31.21 ID:uFf8JbN+0.net
>>845
つ[文鎮]

848 :名無しさん@お腹いっぱい。:2015/07/06(月) 01:35:27.19 ID:zcpXJv/k0.net
後は適当なダウンローダーに動画のURLを送るか
rtmpdumpみたいなので取得する方法だけだな

849 :名無しさん@お腹いっぱい。:2015/07/06(月) 15:44:14.80 ID:fYN2QyB10.net
;エクスプローラーのナビゲーションペインの表示/非表示
#IfWInActive, ahk_class CabinetWClass
!n::
Send, !d ★
Sleep, 100 ★
Send, {TAB 2} ★
Sleep, 100
Send, {ENTER}
Sleep, 100
Send, {DOWN 7}
Sleep, 100
Send, {RIGHT}
Sleep, 100
Send, {DOWN 3}
Sleep, 100
Send, {ENTER}
return
#IfWinActive

★の3行を下記に置き換えたのですが、
ControlFocus,DirectUIHWND2
フォーカスが当たったり当たらなかったり不安定です。

原因と対策のアドバイスをお願いします。

v1.1.22.02 64bit Unicode / Win7 Home 64bit

850 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:16:38.24 ID:SfVDsuM00.net
PCの画面に指定したウインドウが現れると
Androidのスマートフォンのアラームだったり通知がでて知らせてくれるようにしたいのですが
autohotkeyで作れるものでしょうか

851 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:34:53.28 ID:UCmA/edh0.net
>Androidのスマートフォンのアラームだったり通知がでて知らせてくれるようにしたいのですが
ここがいまいち分からない
PCからスマホに通知を送りたいってことかな
だったらwshでメールが送れるみたいだからそれでいけるかな

「autohotkey CDO.Message」でggr

852 :名無しさん@お腹いっぱい。:2015/07/06(月) 23:36:25.02 ID:UCmA/edh0.net
ハードルが高ければフリーソフトの
コマンドラインからメール送信できるメーラーを探して使えばいいと思う

853 :名無しさん@お腹いっぱい。:2015/07/07(火) 06:13:43.05 ID:FULEwfoA0.net
run,cmd.exe /c start myshortcut.lnk arg1 arg2
これってもっと短く書けないですか

run,myshortcut.lnk arg1 arg2
とするとエラーになります

854 :名無しさん@お腹いっぱい。:2015/07/07(火) 07:54:49.80 ID:9+RwmPKy0.net
確認してないので申し訳ないけど、
a = cmd.exe /c start myshortcut.lnk
run, %a% arg1 arg2
とかでは出来ない?

855 :名無しさん@お腹いっぱい。:2015/07/07(火) 08:11:31.23 ID:GH0oD2pX0.net
.lnkを起動しなきゃならんのかっていう

856 :名無しさん@お腹いっぱい。:2015/07/07(火) 08:49:25.03 ID:WVm7mRdl0.net
>>849
DirectUIHWND2 は背景のコントロールにも割り当てられているので必ずしもボタンにフォーカスが移動するとは限らない。
それとナビゲーションペインのツリーにフォーカスがあるとControlFocusだけでは移動しなかったりする。
↓のように記述すれば動くには動く。

controlgetpos,x,y,,,DirectUIHWND2,ahk_class CabinetWClass
x+=10,y+=10
controlclick,x%x% y%y%,ahk_class CabinetWClass,,left,1,pos
send,{space}レナ ; "レナ" の部分は旧版のAutohotkeyでは動作しない

>>853
絶対パスや相対パスではないからエラーが出るんじゃない?

857 :名無しさん@お腹いっぱい。:2015/07/07(火) 09:50:38.03 ID:Y6KRJm9e0.net
>>844
ありがとうございます。ぐぐったらすぐそういうブログがヒットしました。よかった!
ただ日本語のブログに明示されてる方の解決策じゃまったく動かなかった。win7だけど。
そこの文中で触れられてる&英語の海外フォーラムにあった
SendPlay, {UP}
これで動いた。あーよかった。

858 :名無しさん@お腹いっぱい。:2015/07/07(火) 14:20:35.73 ID:4as8OiiF0.net
>>856
まるごと全体の改善コードまで提示して下さりありがとうございます。

ほんと自分一人では解決不可能だったと思います。

やはりAHKを使うのは色々難しいです。
普及が進みにくいのも当然ですね。

859 :名無しさん@お腹いっぱい。:2015/07/07(火) 14:47:25.56 ID:pD6vffMY0.net
まぁ、これ勉強するくらいなら他の言語に手を伸ばしてそれっきり戻ってこないだろうからな

860 :名無しさん@お腹いっぱい。:2015/07/07(火) 17:48:52.07 ID:+PtcBdFV0.net
アップローダーにある独自関連コンテキストメニューと過去スレにあったデスクトップ判別関数使ったら世界が相当変わった。

なにこれ半端ない。

861 :名無しさん@お腹いっぱい。:2015/07/07(火) 17:51:45.98 ID:O6WcvpwU0.net
>>687>>834>>857

>>689
> Sendの方式変更

言われたこと合ってたのに試してなかったのかよ

862 :名無しさん@お腹いっぱい。:2015/07/07(火) 22:56:40.48 ID:+PtcBdFV0.net
あ、だめだわこれ。
デスクトップでコンテキスト開くと選択外れるわ。死ねwindows

863 :名無しさん@お腹いっぱい。:2015/07/08(水) 00:36:37.36 ID:9Rbyi1W70.net
品の無い人が定期的に湧くのは何故?呪われてるの?このスレは

864 :名無しさん@お腹いっぱい。:2015/07/08(水) 01:47:22.73 ID:OvJF9dNv0.net
>>861
言うべくもございません。
686さんありがとうございました

865 :名無しさん@お腹いっぱい。:2015/07/08(水) 03:38:45.22 ID:dv+Eplwp0.net
この1行だけのスクリプトを動かすと・・・・
NumpadDown::MButton

常駐秀丸エディタのホットキー Ctrl+Alt+H が動かなくなります。

A2 01D d 1.17 LControl
A4 038 d 0.23 LAlt
48 023 d 0.28 h
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 h d 0.00 NumpadDown
28 050 h u 0.00 NumpadDown
48 023 u 0.11 h Program Manager
A4 038 u 0.19 LAlt
A2 01D i d 0.00 LControl
A2 01D i u 0.00 LControl
A2 01D u 0.38 LControl

キーヒストリー見ても自分には原因が分かりません。
どうしてこういう現象が起きるのでしょうか?

AHKは最新版です

866 :名無しさん@お腹いっぱい。:2015/07/08(水) 03:50:18.04 ID:dv+Eplwp0.net
NumpadDownが発生するメカニズムがどうしても分からない

867 :名無しさん@お腹いっぱい。:2015/07/08(水) 04:00:48.36 ID:FVdEFCye0.net
> ■質問に際して
> OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
のテンプレを守れてないと
> 1行(追加した)だけのスクリプト
とか
> 1行だけのスクリプト(と他の常駐スクリプト)
とか
超展開する心配が
あと秀丸のバージョンと、ノートPCや特殊なキーボードなら
その型番も書いたほうが回答がもらえる可能性が上がると思う

868 :名無しさん@お腹いっぱい。:2015/07/08(水) 04:31:13.59 ID:12TtXlEg0.net
>>865
キーフックだけの常駐スクリプトでログを見るとaとあるので
つまりこれは秀丸エディタが発行しているキーイベント

a=Artificial/人工的
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 a d 0.00 NumpadDown
28 050 a u 0.00 NumpadDown

なぜかよく分からないがリマップだとフックでも無視できないので
コマンド形式で対応するとできる

×NumpadDown::MButton
○NumpadDown::Send {MButton}

869 :名無しさん@お腹いっぱい。:2015/07/08(水) 12:44:01.77 ID:dv+Eplwp0.net
>>868
ありがとうございます。
たしかにSendを使うと動きますね。

ただこの現象を解明したいので、引き続きNumpadDownが発生する原因を調べてみようと思います。

>>867
1行だけのスクリプトです。スクリプト全体がこの1行。
もちろん他のスクリプトは動いていません。
常駐系はAHKと秀丸エディタだけです。
AHK最新版64bitとWin7 64bitです。

870 :名無しさん@お腹いっぱい。:2015/07/08(水) 14:31:48.04 ID:dv+Eplwp0.net
NumpadDownともMButtonとも無関係なリマップ
a::b
でもNumpadDownが発生してます。

つまりこれはCtrl+Alt+Hをトリガーとして秀丸エディタが発行しているイベントということですね。たぶん。
一応納得しました。

A2 01D d 0.41 LControl
A4 038 d 0.19 LAlt
48 023 d 0.20 h
A2 01D a u 0.00 LControl 秀丸エディタ
28 050 a d 0.00 NumpadDown
28 050 a u 0.00 NumpadDown
48 023 u 0.08 h
A4 038 u 0.17 LAlt
A2 01D u 0.30 LControl

871 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:26:11.34 ID:LFuGtEvg0.net
やったよー慣性スクロール関数できたよー
でもコレだとマウス下のウィンドウにスクロール送れないんで助けて下さい

Inertia_wheel(slip="3",axl="60"){
global WheelCount,scroll
If(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<axl && A_TimeSincePriorHotkey != -1){
WheelCount++
}else{
If A_thishotkey contains *,~
StringTrimLeft,scroll,A_ThisHotkey,1
else
scroll := A_ThisHotkey
send,{Blind}{%scroll% 1}
return
}
SetTimer,Slip,10
}

Slip:
;TrayTip , , %WheelCount%, 10 ,1
If(WheelCount>0)
{
If(WheelCount>slip)
WheelCount-=0.2
else
WheelCount-=0.1
Send,{Blind}{%scroll% %WheelCount%}
}Else{
SetTimer,Slip,Off
}
Return

872 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:35:52.39 ID:fdBqyQ2A0.net
一貫性スクロール?どういうことだ

873 :名無しさん@お腹いっぱい。:2015/07/09(木) 16:56:51.83 ID:nCQIwjZN0.net
使い方書いてなかった。

Wheelup::
Wheeldown::
Inertia_wheel()

で動くはず

874 :名無しさん@お腹いっぱい。:2015/07/09(木) 17:20:21.83 ID:96ih8Ia50.net
>>871
↓のホイールリダイレクトを参照
http://ahk.xrea.jp/myscripts/index.html

875 :名無しさん@お腹いっぱい。:2015/07/10(金) 09:17:46.02 ID:itk+MHym0.net
>>871
わざわざAHKで実現しなくてもほかの常駐フリーソフトでもこれ動くね

876 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:37:15.00 ID:KSolukUs0.net
それは言わないお約束
つかahkスクリプトでも類似従来品はここで何度も発表されてるし
自分で作るってところに意味があるんじゃね

877 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:50:45.50 ID:O+854SBf0.net
自分で作らずに済むならそれがベスト

878 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:55:40.60 ID:OCeyVYKD0.net
でも、車輪の再発明って学習には有用だよね

879 :名無しさん@お腹いっぱい。:2015/07/10(金) 10:57:23.90 ID:kLvXw/Ik0.net
>>877
そうだね、君はそういう生き方していけばいいんじゃないかな

880 :名無しさん@お腹いっぱい。:2015/07/10(金) 11:33:11.60 ID:yg8onbYi0.net
自分の理想とする物があればベストだろうけど、
違うときにカスタマイズできたりっていうのが自作のメリットでしょ
どちらも一長一短

881 :名無しさん@お腹いっぱい。:2015/07/10(金) 11:38:18.93 ID:D2msNeMB0.net
しかしahkのホイールリダイレクトのソース見てもさっぱり分からんな
lpとかなんだこれ

882 :名無しさん@お腹いっぱい。:2015/07/10(金) 12:41:47.62 ID:OCeyVYKD0.net
たぶん、wp はwParam、lp はlParamの略じゃなかな
lParamは上位ワードと下位ワードでマウスポインターの位置を示してるらしい

883 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:23:54.50 ID:KSolukUs0.net
ほい
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms645617%28v=vs.85%29.aspx

884 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:51:02.54 ID:D2msNeMB0.net
俺には敷居が高すぎるよ……

SendMessage,0x84,0,%lp%,,ahk_id %ctrl%
If ErrorLevel=4294967295
MouseGetPos,,,,ctrl,2
Loop,%A_EventInfo%
PostMessage,0x020A,%wp%,%lp%,,ahk_id %ctrl%

このへんなにしてるのかわかんね

885 :名無しさん@お腹いっぱい。:2015/07/10(金) 14:52:09.98 ID:D2msNeMB0.net
PostMessage,0x020A,
>>883で分かった

886 :名無しさん@お腹いっぱい。:2015/07/10(金) 15:06:33.13 ID:Yl639HwT0.net
>>884
http://www.autohotkey.com/board/topic/36328-windows-constants/
↑で84や20Aを探して、そのメッセージをググればある程度何しているのか分かる、はず

887 :名無しさん@お腹いっぱい。:2015/07/10(金) 15:13:30.77 ID:D2msNeMB0.net
Sendmessage ってWindows固有コマンドにも使えるなんて知らなかったそんなの

888 :名無しさん@お腹いっぱい。:2015/07/10(金) 17:45:14.72 ID:KSolukUs0.net
0x84はWM_NCHITTEST
WheelRedirect.ahk冒頭のコメントにあるようにマウス下のコントロール判定に仕様

元管理人さんのスプリクトはコードから目的が追いにくいというのはあるな
参考用サンプルとして公開してくれてた割にはdefineの代わりに直値で書くし
コメントもほぼなしだったから逆引きがしづらくて泣ける

889 :名無しさん@お腹いっぱい。:2015/07/10(金) 18:53:16.88 ID:vFGWJlBv0.net
以下のスクリプトをtest.ahkで保存し、DetectHiddenWindows On 対象のホットキーを有効にしたいのですが
この場合はどう処理したら良いですか?。
よろしくお願いします。

#NoEnv
#NoTrayIcon
#InstallKeybdHook
#UseHook

;DetectHiddenWindows Off 対象のホットキー
1::msgbox, %A_DetectHiddenWindows%

;DetectHiddenWindows On 対象のホットキー
;SetTitleMatchMode, 2
#If WinExist("test.ahk - AutoHotkey")
2::msgbox, %A_DetectHiddenWindows%
#If

890 :名無しさん@お腹いっぱい。:2015/07/10(金) 20:28:43.02 ID:FeOC+rtp0.net
>>889
15 スクリプトの起動とAuto-executeセクション
http://ahkwiki.net/Scripts

ホットキー(サブルーチン)のみ適応したいなら
複数行にしてホットキー内に書けばいい

891 :名無しさん@お腹いっぱい。:2015/07/10(金) 21:15:17.34 ID:kLvXw/Ik0.net
>>889
2::
DetectHiddenWindows, On
;SetTitleMatchMode,
if WinExist()
MsgBox,
Return

892 :名無しさん@お腹いっぱい。:2015/07/10(金) 21:26:00.00 ID:OCeyVYKD0.net
関数作ればいいんじゃね?

; 引数は WinExist() と同じ
; 戻り値は表示なら 0 以外、非表示なら 0、存在しなければ -1
IsWinVisible(WinTitle:="", WinText:="", ExcludeTitle:="", ExcludeText:="") {
DHW := A_DetectHiddenWindows
DetectHiddenWindows, On
hWnd := WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText)
DetectHiddenWindows, %DHW%

Return hWnd ? DllCall("IsWindowVisible", "Ptr", hWnd) : -1
}

893 :名無しさん@お腹いっぱい。:2015/07/10(金) 22:09:27.68 ID:SNn+/Ija0.net
>>890>>891
有難うございます、複数行にする事で対処しました。

>>892
有難うございます。
しかし私には難しすぎな上、エラーが発生して対処出来ませんでした、すみません。

894 :名無しさん@お腹いっぱい。:2015/07/10(金) 23:11:40.75 ID:PRCaaYXy0.net
Xキーを長押しで「−」が入力したい

895 :名無しさん@お腹いっぱい。:2015/07/10(金) 23:25:30.60 ID:pM1plsiZ0.net
>>八八八
つ どうぞどうぞ

896 :名無しさん@お腹いっぱい。:2015/07/11(土) 14:00:34.99 ID:ssAo0IJP0.net
>>871をもうチョット簡単にしてみたけど、これホイール数えるの、リダイレクトだと再現出来無くない?
Slip処理の中にloop置いてしまうと止まるし

Inertia_wheel(slip="3",axl="300"){
global WheelCount,scroll
If A_thishotkey contains *,~
StringTrimLeft,scroll,A_ThisHotkey,1
else
scroll := A_ThisHotkey
If(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<axl && A_TimeSincePriorHotkey != -1){
WheelCount++
}else{
WheelCount := 1
}
SetTimer,Slip,10
}

Slip:
;TrayTip , , %WheelCount%, 10 ,1
If(WheelCount>0)
{
Send,{Blind}{%scroll% %WheelCount%}
If(WheelCount>slip)
WheelCount-=0.2
else
WheelCount-=0.1
}Else{
WheelCount := 0
SetTimer,Slip,Off
}
Return

897 :名無しさん@お腹いっぱい。:2015/07/11(土) 16:41:10.67 ID:Lb7qzCnB0.net
SendでWheelup/Down投げてるってことは再帰呼び出し前提なのかな
SetTimerとかも扱い面倒だし全面的に見直さないと難しそう

リダイレクトで慣性スクロールなら
http://lukewarm.s101.xrea.com/up/の58.zipあたりが参考になるのでは

898 :名無しさん@お腹いっぱい。:2015/07/11(土) 17:08:09.63 ID:Pt3XXray0.net
>>896-897
リダイレクト??
タイマーかサブルーチンの間違いじゃないのか?

899 :名無しさん@お腹いっぱい。:2015/07/11(土) 18:39:59.30 ID:jbNnXm050.net
ネット上で公開されてる複数のスクリプトを登録して切り替えて使えるといいのに。
ありそうでないな

900 :名無しさん@お腹いっぱい。:2015/07/11(土) 19:07:15.02 ID:Lb7qzCnB0.net
>>898
>874のホイールリダイレクトのことだよ
流れ読めないなら無理に加わろうとしなくていいから

901 :名無しさん@お腹いっぱい。:2015/07/11(土) 20:35:49.77 ID:bU70aI5o0.net
性格の悪さが滲み出てるなw

902 :名無しさん@お腹いっぱい。:2015/07/12(日) 01:49:38.92 ID:GcXLWyrm0.net
>>894
何か説明面倒くさいから、触りだけ。

先ずは、以下の二つを用意する
(1)長押し判定用コード
サンプルコード集 - AutoHotkey Wiki
http://ahkwiki.net/SampleCodes
「1つのキーに3種類以上の動作割り当て」サンプルを改造する
(2度押し判定も含めて汎用関数化した方が、後々使えるので良いと思う)

(2)挿入する文字列によってはIMEオン状態だと困るのでIMEを制御する
(クリップボードを介して文字列挿入するならこの関数不要かな?)
eamat @Cabinet - IME制御
http://www6.atwiki.jp/eamat/pages/17.html
で、IME制御関数「IME.ahk」を入手

後は頑張ってちょ

>>899
どういうスクリプトを想定してるのか分からないが、
常駐スクリプトなら、一々手動で切り換えないで settimer で巡回すれば良いんでない?
それか、ahkで常駐のランチャーツール作ってそれに登録して個別に実行すれば良いんでないの?

んーんよく分かんないわ(´Д`)

903 :名無しさん@お腹いっぱい。:2015/07/13(月) 21:16:34.67 ID:A5DSKZz80.net
マウスがおかしいのでチャタリングキャンセラを作ってみた
反応速度が0.01秒遅れるけど良い感じ

904 :名無しさん@お腹いっぱい。:2015/07/13(月) 23:43:34.29 ID:JCRIi78a0.net
>>857
うちはSendPlayでは動かなかったわ
Win8.1でOneNote2013だからかも知れん

905 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:08:25.04 ID:nsujvHmk0.net
MGL使ってる時チャタリングはまずいので、100ミリ秒以下のクリックは認識しないでとばすとかできないかな。マウス買いに行くのめんどくさい

906 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:30:29.97 ID:bm5eJYhp0.net
チャタリングを起こしてるマウスでジェスチャー系ツールを使うと
押しっぱなしが多発するから早めに買い替えたほうがいい。
もしくはマイクロスイッチ(D2F-01 or D2F-01F)を買って自分で交換。
個人的にはD2F-01(1.47N)より低荷重のD2F-01F(0.74N)の方が疲れにくくて好き。

907 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:32:02.40 ID:hQnduirZ0.net
他の人に適用できるか分からんが俺はこのやり方で大丈夫だったみたい

LButton::send,{LButton down}
LButton up::
loop,{
KeyWait, LButton, D T0.01
if ErrorLevel = 1
break
KeyWait, LButton,
}
send,{LButton up}
return

908 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:34:40.05 ID:1Aa5UlaJ0.net
接点復活スプレーで一発で回復するなんて話もあるね
ヨドバシなら送料無料で410円だ

909 :名無しさん@お腹いっぱい。:2015/07/14(火) 14:42:27.77 ID:nsujvHmk0.net
お金使うのは構わないしそのうち買い換えるけど、今すぐ買い換えるのが面倒臭いから最初からMGLに組み込めればいいなと思ったのさ

>>907
コレ参考に埋め込めるかやってみるよ。ありがとう

910 :名無しさん@お腹いっぱい。:2015/07/14(火) 17:34:56.29 ID:8alDAerP0.net
オムロン製のスイッチは頻繁にチャタリング起こす。
インテリマウス10個入り購入したけど、2年位で全部チャタリング起こした。
2年で10個も駄目になるとかウンコ過ぎですよオムロンさん・・・。

911 :名無しさん@お腹いっぱい。:2015/07/14(火) 17:47:30.57 ID:5J4+LB+R0.net
インテリマウスを貧民が使う……わけの分からない世の中だ

912 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:30:31.57 ID:IDMmKwlc0.net
インテリの貧民だっているだろうよ

913 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:33:37.42 ID:en7mlv+t0.net
1個故障した時点でその商品はもう買わんな

914 :名無しさん@お腹いっぱい。:2015/07/14(火) 20:58:25.97 ID:+JNFeD9E0.net
初歩質ですみません、昨日の日付を得るにはどうしたら良いですか?
day += 1, days は出来るのに
day -= 1, days はNG…。なので

SetFormat, FLOAT, 02.0
if(a_dd = "01") {
if(a_mm a_dd = "0301") {
a := a_yyyy "0301", b := (a_yyyy-1.0) "0301"
a -= b, days
day := a_yyyy ((a = "366") ? "/02/29" : "/02/28")
}else {
day := RegExMatch(a_mm, "(01|05|07|08|10|12)")
? ((a_mm = "01") ? (a_yyyy-1.0) "/12/31" : a_yyyy "/" (a_mm-1.0) "/30")
: a_yyyy "/" (a_mm-1.0) "/31"
}
}else {
day := a_yyyy "/" a_mm "/" (a_dd-1.0)
}
MsgBox,,, % day,
return
こんなんしか思いつきません。もっとスマートにできないでしょうか?

915 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:06:25.43 ID:ztG0+lqw0.net
俺も同じ問題に遭遇して散々悩んだ末に過去ログを見たらこんな答えがあったよ
day += -1,D

超シンプルw

916 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:10:43.75 ID:+JNFeD9E0.net
>>915
なんてこった!そんなやり方が。
即レスサンクス

917 :名無しさん@お腹いっぱい。:2015/07/14(火) 21:42:20.69 ID:GcduKYQ70.net
RegExReplaceの検索条件や置換条件の中で変数を用いることはできないのでしょうか?

918 :名無しさん@お腹いっぱい。:2015/07/14(火) 22:49:06.82 ID:LfZIb0hA0.net
>>917
できる
関数など式形式のコマンドでは、変数は%で括らずそのまま書こう
RegExReplace(hoge, hage, homo)

ちなみに%で括った場合は、その変数内の値を変数名と見なす
以下の場合、変数aaaを参照してしまう
hoge := "aaa"
RegExReplace(%hoge%, 〜〜)

919 :名無しさん@お腹いっぱい。:2015/07/14(火) 23:14:43.54 ID:GcduKYQ70.net
ありがとうございます
使い道がぐっと増えた気がします

920 :名無しさん@お腹いっぱい。:2015/07/15(水) 01:52:46.44 ID:UWuEXNY80.net
すいません、AHKって修飾キー2つ押しをホットキー化出来ないのですか?


Ctrl 押しながら Win に機能を割り当てるのは無理ですか?

921 :名無しさん@お腹いっぱい。:2015/07/15(水) 02:48:39.86 ID:DwFw1Wd70.net
難しいですよ。頑張って勉強できますか?

922 :名無しさん@お腹いっぱい。:2015/07/15(水) 02:55:25.55 ID:Ap3S46QB0.net
>>920
#If GetKeyState()

923 :名無しさん@お腹いっぱい。:2015/07/15(水) 03:59:55.29 ID:oStWEal20.net
>>910
インテリマウスって偽物がいろいろ出回ってたけど
家電店とかの仕入れがしっかりしてそうなところで買ってた?

924 :名無しさん@お腹いっぱい。:2015/07/15(水) 07:32:33.35 ID:ODxmyac40.net
>>920
^LWIN::
^RWIN::
#Ctrl::

925 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:15:21.69 ID:aP0mKxx40.net
http://ux.getuploader.com/autohotkeyl/download/75/ACC_Unicode.zip
需要があるか分からんけど、フォーラムのAccInfoViewer.ahkを元に少し修正したものをうpした。
・チェックマークの判別を追加。※Stateの()内の値の変化で判別
・詳細表示/非表示切り替え時のアニメーションを無効。
・ウィンドウサイズを少し大きめに。

それとUnicode版用のACC.ahk(以前フォーラムで拾ったもの)
とマウスカーソル下の情報を取得するサンプル関数付き。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


926 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:18:51.76 ID:ZQ50+71T0.net
#If GetKeyState(”Lctrl”,”P”)
LWin::機能

みたいな感じ

927 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:19:32.09 ID:ZQ50+71T0.net
>>925
何するものなん?

928 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:31:22.46 ID:aP0mKxx40.net
>>927
AU3_spy.exe の拡張版みたいなもの、実際に試してみると分かると思う。
ダウンロードして AccInfoViewer_kai.ahk を実行して
左上の 田 (四角枠に+)の部分をドラッグしたままマウスカーソルを色んな所に移動してみて。
ドラッグを解除したら右上の「Show Acc Structure」をクリックするとターゲットウィンドウ内の
各々についての取得情報を見れたりする。

929 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:39:08.65 ID:ZQ50+71T0.net
へー。便利かも。AccessibleInfoって条件に使えるん?

930 :名無しさん@お腹いっぱい。:2015/07/15(水) 11:54:04.73 ID:aP0mKxx40.net
付属の ACC.ahk をLibフォルダに突っ込むか#Includeすれば条件として使える。
使い方は付属のサンプル関数やACC.ahkを直接見ればなんとかなる。
AccInfoViewer_kai.ahkを参考にするなら358〜370行までと639行以降(Acc Library)かな。

931 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:18:23.91 ID:QMsD/Wdl0.net
http://pastebin.com/KBYh38x2
ACC.ahkを使ってブラウザのタブをダブルクリックで閉じるものがHDDに残ってたんで貼ってみる

932 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:25:56.44 ID:aP0mKxx40.net
>>925 のサンプルが間違ってた( ChildId のところを Child にしていた)ので修正版をうp
http://ux.getuploader.com/autohotkeyl/download/76/ACC_Unicode_and_AccInfoViewer_kai.zip 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


933 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:54:23.34 ID:UWuEXNY80.net
>>924
そのままコピペして動きましたありがとう。

>>922
10分間調べたけど実装できなかったので頭の引き出しに保管しましたありがとう。

934 :名無しさん@お腹いっぱい。:2015/07/15(水) 12:56:12.15 ID:ZQ50+71T0.net
おー、これ、タスクトレイ操作もできるかも?

935 :名無しさん@お腹いっぱい。:2015/07/15(水) 13:02:41.09 ID:UWuEXNY80.net
>>926
気付くの遅れた、ありがとう。

しかし何故か動かなかったorz

#If GetKeyState("LCtrl","P")
LWin::
Run,taskmgr
Return
#If

936 :名無しさん@お腹いっぱい。:2015/07/15(水) 14:34:35.23 ID:Ap3S46QB0.net
>>935
#If GetKeyState("Ctrl","P")
^LWin::MsgBox
#If

937 :名無しさん@お腹いっぱい。:2015/07/15(水) 14:36:31.98 ID:Ap3S46QB0.net
この場合は無駄だなw

938 :名無しさん@お腹いっぱい。:2015/07/15(水) 16:41:42.96 ID:UWuEXNY80.net
>>936
重ねてありがとう!

939 :名無しさん@お腹いっぱい。:2015/07/15(水) 18:28:48.87 ID:EnGBFw5/0.net
>>918
マジか・・
今までの苦労は一体

940 :名無しさん@お腹いっぱい。:2015/07/16(木) 12:08:59.74 ID:MCc7AOhZ0.net
>>931

これサンプルもひとまとめにして先頭と末尾にgotoとラベル書けばMGLで使えるのね。マウス下の奪うって意味でも相性が良いと思うんでやっとくと幸せになれる

941 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:36:44.77 ID:sVq38FFM0.net
関数の集合体なんだからgotoとかそういうのいらないな

カスタム条件式に
"hoge.ahk" == Acc_GetName()
"ボタン" == Acc_GetRole()

とかでMGLがタスクトレイ上でも動くようになった。これは便利だ

942 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:38:03.52 ID:sVq38FFM0.net
あ、Acc.ahkにサンプル関数をコピペしてプラグインフォルダに直入れしたらうごいたよ

943 :名無しさん@お腹いっぱい。:2015/07/16(木) 20:41:12.31 ID:E0egZ+Lu0.net
無操作時間がしばらく続けば離席時の処理に切り替えてくもの作ろうとして
うまくいかないなぁと思ってたら
#InstallMouseHook を追加したり
動画再生ソフトの再生中はスクリーンセーバーをオフにするのチェックはずしたらうまくいくようになった

944 :名無しさん@お腹いっぱい。:2015/07/17(金) 06:37:32.55 ID:JS78MbMA0.net
UACがあるOSで管理者権限必須の実行ファイルを見るとアイコン右下に盾のマークが表示されますが、AHKでこのマークが表示されるかされないか、管理者権限が必須かどうかを調べる方法はありませんか?

945 :名無しさん@お腹いっぱい。:2015/07/17(金) 18:09:20.55 ID:/xeH24bk0.net
>>944
何でそんな面倒な処理が必要なのか書かれていないが
AHKを管理者権限で起動すればいいだけでは?

946 :名無しさん@お腹いっぱい。:2015/07/17(金) 20:32:54.93 ID:NXCA6zjcR
>>27
管理者権限で動作中のプログラムから通常権限でプログラムを起動する方法〜〜〜

あらかじめタスクスケジューラに対象プログラムを起動するだけのタスクを登録しておく。
当然、Run with highest privileges はオフにしておく。
トリガーは設定不要。

あとは、コマンドラインから任意に起動できる。
schtasks /run /tn "タスク名"

これをAHKからRunすれば良い。
Run,schtasks /run /tn "タスク名"

〜〜
ちなみにこの方法で、逆に管理者権限で起動の際のUACダイアログをスキップすることも出来る。

947 :名無しさん@お腹いっぱい。:2015/07/17(金) 21:31:59.68 ID:r8EDUmrt0.net
str := "abc", var := "123" str "456" str "789hoge"
RegExMatch(var, "i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)", $)
MsgBox,,, % $1 "`," $2 "`," $3 str, ;123,567,789abc

MsgBox,,, % RegExReplace(var, "i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)", "$1`,$2`,$3" str, cnt) "`n" cnt ;123,567,789abchoge
return
;(´・ω・`)・・・なんでこうなるの

948 :名無しさん@お腹いっぱい。:2015/07/17(金) 22:13:33.98 ID:vsifWqTO0.net
>>947
"i)(\d+)" str "(\d+)" str "(\d+)(?=hoge)"
に一致するのは Var(123abc456abc789hoge)の 123abc456abc789 になる。
RegExReplace()は文字列中の正規表現パターンに一致する箇所を
別の文字列に置換して返すので(流行らせるページから引用)
var(123abc456abc789hoge) の 123abc456abc789 を 123,567,789abc に置き換えて
123,567,789abchoge になる。

949 :名無しさん@お腹いっぱい。:2015/07/17(金) 22:34:02.64 ID:r8EDUmrt0.net
> パターンに一致する箇所を別の文字列に置換して返す
ナルホド…そうか、消さない限り、元の文字列もくっついてくるんですね。
ありがとうございました。スッキリした。

950 :名無しさん@お腹いっぱい。:2015/07/19(日) 06:35:09.19 ID:2mJ9QIEn0.net
SMAILという送信専用コマンドラインメールソフトでメール送ろうとしたらエラーの連続で困り果てたけど

Run , .....¥smail.exe .......
じゃなくて
Run , .....¥smail .......
でいけたんすね・・・・・

951 :名無しさん@お腹いっぱい。:2015/07/19(日) 07:13:46.68 ID:AQ9JKLd40.net
ahkスクリプトにドラッグ&ドロップした(渡した)ファイルを予め決めたフォルダに
移動させたいんですが、「ドロップされたファイルを」ってどういうふうに書けばいいんでしょうか?
たとえば
FileMove, C:\My Documents\List1.txt, D:\Main Backup\
のList1.txtの部分をドロップされたファイルにしたいのです。教えてください

952 :名無しさん@お腹いっぱい。:2015/07/19(日) 07:29:48.37 ID:sPj33igg0.net
コマンドライン引数

953 :名無しさん@お腹いっぱい。:2015/07/19(日) 08:14:53.52 ID:yJi3Wr1t0.net
>>951
Loop, %0%
{
FileMove, % %A_Index%, D:\Main Backup\
}

Installerを使ってAHKをインストールしてなかったら要レジストリ編集
>>8のQ5が参考になる

954 :名無しさん@お腹いっぱい。:2015/07/19(日) 15:33:22.16 ID:MKYqbkSx0.net
とりあえずwikiを見る、見直すくせを。
http://ahkwiki.net/GUI
GuiDropFiles参照

955 :名無しさん@お腹いっぱい。:2015/07/19(日) 16:52:57.96 ID:yhyzj4ew0.net
>見直すくせを。
自虐ネタか?
久しぶりにこのスレで笑った

956 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:26:19.15 ID:RKVsNGlM0.net
var = 5
Clipboard = 123456789123456789
Clipboard := RegExReplace(Clipboard, ".*?"var, "")

こうすると結果が「6789」になるんですが、この場合は最小マッチはどうすればできるんでしょうか

957 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:43:20.11 ID:Kt/+QQ5X0.net
"^.*?" var

958 :名無しさん@お腹いっぱい。:2015/07/20(月) 04:48:33.67 ID:kDbgwVPK0.net
>>956
Var = 123456789123456789
MsgBox % RegExReplace(Var, ".*?5", "",, 1)

959 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:00:06.79 ID:RKVsNGlM0.net
^を使う方法と置き換え回数の指定とどちらでも思い通りになりました
ありがとうございました
まだまだ理解が足りないようで勉強になります

960 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:33:40.32 ID:raNxgfNT0.net
AutoHotkeyというより正規表現の問題。
正規表現はできる限り最長の文字列とマッチしようとする。

961 :名無しさん@お腹いっぱい。:2015/07/20(月) 05:38:34.55 ID:kDbgwVPK0.net
>>960
?入ってるしちょっと違いと思うが・・・。

962 :名無しさん@お腹いっぱい。:2015/07/20(月) 06:29:39.42 ID:raNxgfNT0.net
まぁ微妙だけどな。
12345が空白に置換された後、
678912345がまた空白に置換されてるから、
先頭からを意図する必要があるのか無いのかで解釈が変わる。
空白ではなく適当なアルファベットかなにかで置換すればすぐ気付けたろうに。

963 :名無しさん@お腹いっぱい。:2015/07/20(月) 15:09:58.29 ID:4RO9KRwC0.net
は?

964 :名無しさん@お腹いっぱい。:2015/07/20(月) 19:51:53.85 ID:myuReIcN0.net
>>27
遅レスだが、未解決のようなので回答。

〜〜〜管理者権限で動作中のプログラムから通常権限でプログラムを起動する一般的な方法〜〜〜

あらかじめタスクスケジューラに対象プログラムを起動するだけのタスクを登録しておく。
当然、Run with highest privileges はオフにしておく。
トリガーは設定不要。

あとは、コマンドラインから任意に起動できる。
schtasks /run /tn "タスク名"

これをAHKからRunすれば良い。
Run, schtasks /run /tn "タスク名"

〜〜
ちなみに、このようにタスクスケジューラーを経由することで、
逆に管理者権限でプログラムを呼ぶ際に、UACダイアログをスキップすることも出来る。

965 :名無しさん@お腹いっぱい。:2015/07/21(火) 07:43:32.90 ID:imJ3Q2CJ0.net
面白いものを見つけた

字幕速記人 特製機械で1秒6文字!ニュース番組数秒遅れで対応
http://headlines.yahoo.co.jp/hl?a=20150720-00000117-spnannex-ent
字幕速記人用の特製キーボード
http://www.sponichi.co.jp/car/news/2015/07/20/gazo/G20150720010773790.html
https://www.youtube.com/watch?v=vSRpF8eTBJ0

これって、AHKを使って入力変換スクリプトを作ったら
似たようなもの作れるよね

966 :名無しさん@お腹いっぱい。:2015/07/21(火) 21:58:06.44 ID:ffKSDUHa0.net
> これって、AHKを使って入力変換スクリプトを作ったら
> 似たようなもの作れるよね

既に作った人がいるよ。

967 :名無しさん@お腹いっぱい。:2015/07/21(火) 22:36:21.92 ID:FwoV3yQW0.net
誰かの通った道

968 :名無しさん@お腹いっぱい。:2015/07/22(水) 16:33:43.85 ID:hMHRIjXL0.net
>>953
ありがとうございました。成功しました!% %A_Index%ってのがまったく意味わかりませんが
なんとかコピペしたら動いてくれています。ファイラから任意で選んだのを渡すってのも
やりたかったのですが、同じスクリプトでうごいてくれています。

>>952
そうなんでしょうか?自分にはまだわかりません。ヒントありがとうございました。
>>954
特殊サブルーチンラベルっていうのでしょうか?難しい。

969 :名無しさん@お腹いっぱい。:2015/07/22(水) 17:46:08.06 ID:oymWcwUW0.net
清々しすぎんだろ
調べもしないでまったく意味わかりませんコピペしましたはないわ
嘘でもいいから調べたけど難しすぎて理解できませんでした言うくらいの配慮はもてよ

970 :名無しさん@お腹いっぱい。:2015/07/22(水) 17:56:34.59 ID:mVleZPUB0.net
顔も見せないどっかの誰かにそんな誠意が必要か?

971 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:24:43.95 ID:sDhj9phK0.net
2ちゃんで顔見せ要求されても困るが

972 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:30:24.38 ID:POGsbABW0.net
いきなり完答書いて自分だけ気分良くなってるアホが悪い

973 :名無しさん@お腹いっぱい。:2015/07/22(水) 18:34:22.30 ID:s5en+coD0.net
>>972
じゃあお前が詳しく解説してやれよ

974 :名無しさん@お腹いっぱい。:2015/07/22(水) 21:10:40.99 ID:V0+jogaj0.net
もう質問禁止スレでも作れw

975 :名無しさん@お腹いっぱい。:2015/07/22(水) 23:56:37.74 ID:hMHRIjXL0.net
>>969
w

976 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:00:43.65 ID:bV/68n2E0.net
知性を感じないレスするやつほどアンカだけのレスするんだよな

977 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:04:30.08 ID:e5fDCgop0.net
お前はこのスレにどうなって欲しいんだよ

978 :名無しさん@お腹いっぱい。:2015/07/23(木) 00:16:34.15 ID:dOwokymO0.net
無礼すぎて礼なしの方がよっぽどいましなレベルだわ
回答者はクレクレ幇助で叩かれてるし災難もいいとこだな

979 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:14:49.63 ID:7UpKvqlZ0.net
^a::
処理1
return

^b::
処理2
return

^c::
処理1
処理2
return

このように、^cの処理が他のホットキーの組み合わせになっている場合、簡略化して書けませんか?

^c::
Send,^a
Send,^b
return
では動きませんでした。

#InstallKeybdHook #UseHook を宣言しているせいでしょうか?

やはり処理1と2を関数化して、

^a::shori1()
^b::shori(2)
^c::
shori1()
shori2()
return
のようにするのが良いのでしょうか? なにか勘違いか、大幅に間違っている点はありますか?

980 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:30:18.34 ID:M70SAws30.net
^c::
gosub,^a
gosub,^b
return

981 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:31:36.60 ID:ubCTyG/X0.net
gosub ^a は?

982 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:33:34.79 ID:T2WY7oq90.net
>>979
多用するなら関数で簡単ならGosubで十分
ホットキーもラベルとして利用できる
フックの認識はあってる

^c::
Gosub ^a
Gosub ^b
return

983 :名無しさん@お腹いっぱい。:2015/07/23(木) 02:34:38.17 ID:ubCTyG/X0.net
3人での結婚生活はカオス

984 :名無しさん@お腹いっぱい。:2015/07/23(木) 10:25:07.58 ID:BCiaxGPR0.net
ラベルに飛ぶという同じやり方にしても、自分ならこうするかなー(関数にするのと変わらないが)
^a::gosub,shori1
^b::gosub,shori2
^c::
gosub,shori1
gosub,shori2
return

shori1:
 処理 1
return

shori2:
 処理 2
return

ラベル^aへ飛ぶやり方だと、こういう場合↓処理 2の(2)へ飛びたい時困るよね
下の例は単純だから、下の #IfWinActive, ウインドウ B〜#If を上へ持って行けば良いだけだが…

#IfWinActive, ウインドウ A
^a::処理 1   ;(1)
#If

#IfWinActive, ウインドウ B
^a::処理 2   ;(2)
#If

^c::gosub,^a

勘違いしてたらスマン

985 :名無しさん@お腹いっぱい。:2015/07/23(木) 12:18:57.17 ID:Wrp2nC720.net
ん?
よくわからんが、下記で、^cを実行したとき
ウインドウAにフォーカスがあったときは実行されないんだっけ?
^c::の前後には#ディレクティブがないから^cには制約がかからずすべてのウインドウにフォーカスがあったときに
実行されると思ってたんだが


^c::gosub ^b

#IfWinActive, ウインドウ A
^a::処理 1
#If

#IfWinActive, ウインドウ B
^b::処理 2
#If

986 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:24:35.85 ID:CQfxvWAY0.net
>>980-982
ありがとうございます。

あぁ・・・リファレンスに書いてありますね。気が付かなかったョ
有るかどうか分からない機能を見つけ出すのはムツカシイ・・・・・・・・・・・

987 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:25:16.86 ID:CQfxvWAY0.net
>>984-985
追加情報ありがとうございます。

988 :名無しさん@お腹いっぱい。:2015/07/23(木) 17:25:52.91 ID:mVpwhHY60.net
次スレが立つ前に埋まってしまった場合の避難所

AutoHotkey スレッド part17
http://anago.2ch.net/test/read.cgi/software/1383489925/

989 :名無しさん@お腹いっぱい。:2015/07/29(水) 16:22:54.12 ID:5xNyVhRM/
「#」
この文字自体の出力ができないとは知らなかった。
意外な欠点だわ

990 :名無しさん@お腹いっぱい。:2015/07/31(金) 18:01:28.73 ID:ZhH5BJs94
ホットストリングがたまに効かないときがあるんだけどなんで?
タブキーで動作させてるんだけど。

991 :名無しさん@お腹いっぱい。:2015/09/11(金) 09:51:20.38 ID:xH4J8IQl6
test

992 :名無しさん@お腹いっぱい。:2015/09/13(日) 20:55:34.48 ID:Qx/zjqmTT
(・∀・)

総レス数 992
326 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★