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

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

AutoHotkey スレッド part18

1 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:19:55.14 ID:ZU+n1lM80.net
■配布元
http://ahkscript.org/download/
2014年1月からAHKLのLが取れて正式にAHKの主流扱いになりました。
新規利用者には日本語の扱いで不具合の無いユニコード版の利用を推奨。

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

■日本語解説等
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-10

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

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

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

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

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

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

3 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:21:17.52 ID:ZU+n1lM80.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/

以下FAQ等

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

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

4 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:26:00.11 ID:ZU+n1lM80.net
■ リマップ・ホットキー割り当て

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

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

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

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

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

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

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

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

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

6 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:27:25.88 ID:ZU+n1lM80.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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている

■ IME関連

Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。

7 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:28:13.60 ID:ZU+n1lM80.net
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)

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

Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり

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

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

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

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

9 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:47:23.55 ID:55uzESsN0.net
今日の段階での最新バージョン
v1.1.14.04 - April 25, 2014

http://ahkscript.org/download/

10 :名無しさん@お腹いっぱい。:2014/04/28(月) 12:58:02.94 ID:55uzESsN0.net
>>8
Q6:
A6内で、多分、

>これを回避する方法はAutohotkey.exeを右クリックして「管理者として実行」する。

ー> これを回避する方法はAHKファイル上で右クリックして「管理者として実行」する。

ではないかと

11 :名無しさん@お腹いっぱい。:2014/04/28(月) 13:33:27.64 ID:ZU+n1lM80.net
>>10
ご指摘の通り間違ってますね
次スレ建てる方は修正お願いします

12 :名無しさん@お腹いっぱい。:2014/04/28(月) 22:53:56.84 ID:wLp/tbba0.net
autohotkey_lって名称はまだあるの?
autohotkey.comのトップページのdownloadからは_Lつきのファイルをダウンロードできるけれど
そのトップページには_Lつきの情報が書いていない

13 :名無しさん@お腹いっぱい。:2014/04/28(月) 23:09:09.16 ID:rN8ZLQ1V0.net
>>12
現行スレ終わってからにしてくれ

14 :名無しさん@お腹いっぱい。:2014/04/28(月) 23:17:23.00 ID:ZU+n1lM80.net
980を超えてから24時間レスがなければ自動的にdat落ちするからこっちでいいかと

15 :名無しさん@お腹いっぱい。:2014/04/28(月) 23:29:04.32 ID:rN8ZLQ1V0.net
>>14
現行が終わるまで次スレで書かないのが普通。

16 :名無しさん@お腹いっぱい。:2014/04/29(火) 03:28:45.57 ID:M5Upn63K0.net
> Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
> A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。

これ本当に何とかしてほしい。この仕様のために、わざわざ
4ボタン多いジョイスティックの購入を余儀なくされているし。

17 :名無しさん@お腹いっぱい。:2014/04/29(火) 10:54:19.25 ID:1X5e6M/p0.net
>>8
前スレの969です。早速これをテンプレに入れてくれてありがとうございました
あのあといろいろとやってて気づいたことがあります
それは自動記録で、AutoItなのですが、AutoItのexeファイルをすべて「互換性」で「管理者としてこのプログラムを実行する」としたのですが、なぜか、秀丸のドキュメント上では自動記録が出来ずにメモ帳のドク上では出来るという現象が発生しています
AutoItの自動記録はAu3Record.exeですが、これも管理者として実行するにチェックを入れています。
XPでは問題なく秀丸上で記録できるのですが、Win7では出来ません。
AutoHotKeyにも自動記録用のツールが別途用意されているようですが、わたしはそちらは使う予定はないのでしませんが、もしかしたら、そっちにも同じような影響があるかもしれないと思い書きました

AutoItを使い出してこんなにすばらしいツールがあったのかともっと早く知ってればと思います
GhostTracerで出来ることはもちろんさらに拡張性の高いツールだと思います
なぜかAutoItのスレは相当寂れているのですよね。向こうにこの現象を書きたかったのですが、みんな知らないのかなあ
教えて頂いた方にはほんとに感謝しています。AutoItはexeファイルにコンパイルできます
AutoItとAutoHotKeyを併用すれば100倍力かもしれませんね。はじめたばかりの初心者の一言でした

18 :名無しさん@お腹いっぱい。:2014/04/29(火) 10:58:57.66 ID:1X5e6M/p0.net
それと、アプリの種類によってAutoHotKeyが有効に動く場合と動かない場合があるというのはどうしてなのでしょうか
私はXPでVisualC++6.0でプログラミングをしてきましたが、そんな設定したことがないし存在すら考えたこともありませんでした
最新版のVC++ではそんなセキュリティの設定とかあるのでしょうかね

19 :名無しさん@お腹いっぱい。:2014/04/29(火) 11:43:41.08 ID:6i1yHp3O0.net
>>18
管理権限の問題はVista以降導入された ユーザーアカウント制御(UAC)の仕業。
対応してないソフトでは設定など記録が保存されない問題がある、あとは自分でググろう。

取り回しが悪すぎるので慣れた人は別のセキュリティーソフトに切り替えている。(性能的にも向上する)

20 :名無しさん@お腹いっぱい。:2014/04/29(火) 11:47:51.89 ID:1X5e6M/p0.net
>>17
この問題ですが、自己解決しました
秀丸を起動するとき、秀丸のショートカット上で右クリックで管理者として実行を
選択すると、問題なくAutoItでも記録できました

一般のtxtファイルをダブルクリックしたりして秀丸を起動すると駄目です
またtxtファイル上で右クリックしても管理者として実行する項目は出てきませんね
そのときは秀丸自身のexeファイルの互換性設定のところでチェックをつけておくしかないのは

なんだかなあw

21 :名無しさん@お腹いっぱい。:2014/04/29(火) 12:32:21.58 ID:I9Dcz2730.net
管理者権限でスクリプトを動かすのなら
スクリプトの初めのほうに

if not A_IsAdmin
{
Run *RunAs "%A_ScriptFullPath%" ; Requires v1.0.92.01+
ExitApp
}
を入れてれば管理者権限で動いてくれるみたい
(少なくともUACの確認窓は出てくる)

あとは、autohotkey.exeのショートカットを作って、そのショートカットに対して
互換性タブで管理者権限で実行するように設定するとか。
(コマンドラインまで指定したショートカットで管理者権限つけておくと便利)

全然試してないし、信用できるのかどうかもわからないんだけど指定したプログラムの実行時に
UACを要求されても自動で許可してくれるプログラムってのも今見つけた
http://winaero.com/comment.php?comment.news.152

22 :名無しさん@お腹いっぱい。:2014/04/30(水) 01:10:14.58 ID:eWPaZlA20.net
うーん、異常な速度のクリックの内容を破棄する、ってできないですかね?
ようするにチャタリングをどうにかしたいんです

23 :名無しさん@お腹いっぱい。:2014/04/30(水) 01:13:35.77 ID:RpW/kJ9P0.net
チャタリングキャンセラー キーボード
チャタリングキャンセラー マウス
のどっちか好きな方でググる

24 :名無しさん@お腹いっぱい。:2014/04/30(水) 01:14:42.58 ID:eWPaZlA20.net
>>23
ahk上でできないと干渉しちゃって役に立たないのです
ahk上でどうにかできれば希望が見えるんですが

25 :名無しさん@お腹いっぱい。:2014/04/30(水) 01:27:21.95 ID:RpW/kJ9P0.net
出来ないことはないだろうけどチャタしているボタンに関わるもの全てで
スクリプトが面倒くさいことになると思う。
一番手っ取り早いのはチャタリングしているデバイスを買い換える。
安価で済ませたいなら(部品交換が可能なものなら)キーやスイッチだけを交換。

26 :名無しさん@お腹いっぱい。:2014/04/30(水) 02:17:37.99 ID:WnF6ofYG0.net
たしか、マウスジェスチャーの中に類似コードを見かけた記憶がある
物理的な原因でチャタリングが起きてるならとっとと新品を買うか修理する
ソフトで誤魔化してもチャタリングは直らないしひどくなるだけ
mouse debounce ahkあたりでググればなんか出てくる

でもahk以外で干渉してるのにahkでは干渉しないと思う理由がわからん

27 :名無しさん@お腹いっぱい。:2014/04/30(水) 07:15:07.25 ID:E4Aqz89i0.net
AutoHotKey専用のエディター

SciTE4AutoHotkey
v3.0.05.01 - April 5, 2014
http://fincs.ahk4.net/scite4ahk/

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

28 :名無しさん@お腹いっぱい。:2014/04/30(水) 09:42:06.95 ID:NbtgUkFi0.net
チャタじゃなくて キーリピートな悪寒
任意キー押下でマウスクリックとか、
もしくはタイマーでアプリ側の処理待ち未考慮でガンガンクリックしてるとか

ソース張ってないから何ともいえんがここしばらくの質問内容見るに(同一人物だよね?)
本人が認識してる問題点からが違ってる可能性が高そう

29 :名無しさん@お腹いっぱい。:2014/04/30(水) 14:24:42.64 ID:xs6fM63w0.net
今ちょっとMGLに組み込める慣性スクロール作ってるんですけど、これ再起動したら0x0って出るのはなんで何でしょう?
再起動直後ホイール回転で初回だけ出るんですよね。その後は普通に使えるんですが……

Inertia_wheel(){
global axl,scroll
If(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<220)
axl++
else{
axl = 0
StringTrimLeft,scroll,A_ThisHotkey,1
send,{%scroll%}
return
}
SetTimer,Slip,20
}

Slip:
If(axl>0)
{
Send,{%scroll% %axl%}
If(axl>2)
axl-=0.2
else
axl-=0.1
}Else
SetTimer,Slip,Off
Return

30 :名無しさん@お腹いっぱい。:2014/04/30(水) 14:51:43.03 ID:pL7PSKbk0.net
スクリプトをexe化した場合、GUIのチェックボックス内容を再起動後も保存するのって、
iniとかの外部ファイルを使うしかないですか?

31 :名無しさん@お腹いっぱい。:2014/04/30(水) 16:09:22.98 ID:j+drx99V0.net
>>30
頭で考えただけだから可能かどうかは分からないし、かなり強引だが、
iniやレジストリ使わず再起動後にも変更内容を反映させる方法として大まかに言うと、

exeと同じフォルダ(じゃなくてもいいが)にソースahkを置いとく。
→exe終了時にソースahkを書き換える。
→書き換えたソースahkをexe化する。

なんてどうだろうか。
ちなみに、Command Line Parameters:
Ahk2Exe.exe /in infile.ahk [/out outfile.exe] [/icon iconfile.ico] [/bin AutoHotkeySC.bin]

32 :名無しさん@お腹いっぱい。:2014/04/30(水) 16:12:21.62 ID:j+drx99V0.net
>>27があったんで関連質問OKかなと思い投稿。
SciTE4AutoHotkey v3.0.05.01を数日前にアップデートしたんだけど、
検索系が小窓タイプからツールバータイプに変わり、
尚かつウインドウ下に表示されてちょっと使いにくい。
元の小窓タイプに戻す方法、またはウインドウ上に表示する方法ないですかね?

33 :名無しさん@お腹いっぱい。:2014/04/30(水) 20:30:18.77 ID:vdJzRyTu0.net
インストするときの選択にclassicとかなんたらあったような気が
関係ないかな

34 :名無しさん@お腹いっぱい。:2014/04/30(水) 20:47:05.18 ID:pL7PSKbk0.net
>>31
ウルトラCな方法ですね…
現実的にはやはり外部ファイルを使うのが王道ですかね。
ありがとうございました。

35 :名無しさん@お腹いっぱい。:2014/04/30(水) 21:25:04.21 ID:j+drx99V0.net
>>33
レスサンキュー。
>インストするときの選択にclassicとかなんたらあったような気が
おそらくそれは、背景色や文字フォントなど予め設定されたスタイルを選ぶものだと思う。
あれからSciTEGlobal.properties見て関係ありそうな設定いじってみたけど進展無しだった。

新仕様に慣れるかバージョン落とすか、今考え中。

>>34
王道もなにもini(ファイル)かレジストリしかないんじゃないかなぁ。(自分はこの他には思いつかない)

36 :名無しさん@お腹いっぱい。:2014/04/30(水) 22:09:16.59 ID:j+drx99V0.net
>>34
急に別の方法思いついた。(設定を記憶するんじゃないが)
GUIのチェックボックスが幾つ有るのかとかどういうスクリプトなのか知らないけど、
コマンドラインオプション別にチェック有り無しを分けて起動する、なんてどうだろう?

例えばチェックボックスがAとBの二つあるとして、
何も付加せず起動→チェックボックスAB共にチェック無しにして起動
p1(プリセット1)を付加してexe起動→チェックボックスAをチェック有り、チェックボックスBをチェック無しにして起動
p2を付加してexe起動→チェックボックスAをチェック無し、チェックボックスBをチェック有りにして起動
p3を付加してexe起動→チェックボックスAB共にチェック有りにして起動

37 :名無しさん@お腹いっぱい。:2014/05/01(木) 00:37:56.33 ID:Ydjbvs/90.net
>>29
俺には何がダメなのかわからん
むしろ便利に使わせていただきますありがとう

38 :名無しさん@お腹いっぱい。:2014/05/01(木) 02:50:48.27 ID:Nz1ZLN4h0.net
>>36
頭柔らかいですねえー

たしかにそれが実現できると色々応用聞いてオモシロそうですね

39 :名無しさん@お腹いっぱい。:2014/05/01(木) 12:17:28.11 ID:irjR+JFm0.net
>>30
exeのAlternate Data Streamに格納するとか

40 :名無しさん@お腹いっぱい。:2014/05/01(木) 12:26:50.70 ID:3JyqL2Ux0.net
素直にiniに書いておいたほうがiniいじりだけで問題解決することもあるだろうしそのほうがよくないか?
てかそもそもexe化のメリットが俺よくわかんない。ポータブル化ならahk本体ごと持ちあるけばいいんじゃないかなと思うし

41 :名無しさん@お腹いっぱい。:2014/05/01(木) 14:18:44.34 ID:n1WNrUtZ0.net
やったことないから出来るかわからんが、自分のexeファイルをバイナリでオープンして
一番最後に付け加えておくとか
起動時にそこを読み込んで、終了時にそこを書き換える
exeの最後ならなんか付け加えても動作には影響ないんじゃね
やったことないからわかんねえwww

42 :名無しさん@お腹いっぱい。:2014/05/01(木) 14:32:40.21 ID:hnMIYGSq0.net
Autohotkey.ahkしか使わないならそれでいいかもしれんけど
exe化したいってことは独立系ソフトとして切り離して使いたいってことでしょ
そういうのを毎回autohotkey.exe hoge.ahkとか面倒くさくね?コマンドライン引数とかあると更に厄介
他人に配布するならexe単体のほうが身軽だし

U64環境でANSI版時代の古AHK使いたい場合とかでも
A32.exe指定してahk2exeで固めてしまえば互換性で悩まなくて済む

考えられるシチュエーションはいくらでもあると思うんだが
なんでわざわざexe化わかんないとか言いたいのかわかんない

設定関係はiniにしとけには同意、
これはahkの場合でもスクリプト内部を弄らなくて済むようになるから有効だと思う

43 :名無しさん@お腹いっぱい。:2014/05/01(木) 14:33:22.72 ID:hnMIYGSq0.net
42は>40へのレスね

44 :名無しさん@お腹いっぱい。:2014/05/01(木) 14:46:08.25 ID:7zM3nG6m0.net
スクリプト自身のファイル名書き換えるとか

45 :名無しさん@お腹いっぱい。:2014/05/01(木) 16:56:43.52 ID:hVOqctMv0.net
「なんでiniじゃダメなの?」って最初に聞くべきだったよこれ
その理由次第で解決法も変わってくるかもしれないし
「何となく外部ファイル作りたくない」とかだったら回答する価値もない

46 :名無しさん@お腹いっぱい。:2014/05/01(木) 19:05:18.05 ID:qa1QwwoW0.net
LButton::
if( xxx )
{
動作
}
else
{
Send, {LButton}
}
というプログラムを作りました。で、xxx以外のときは、通常の動作をすると思ったら駄目でした
たとえば、ウインドウのタイトルを左クリックで押した状態で動かすとかこのプログラムでは動きません
多分、このプログラムでは左クリックを押して放すところまでをやってしまうからなのでしょう

解決策はありませんか

WEBで探しているのですが、なかなかマウス動作に関しては見つかりません
たとえば、
LButton Down:: とか
LButton Up::
みたいなことは出来ませんか

47 :名無しさん@お腹いっぱい。:2014/05/01(木) 19:24:23.70 ID:zVOEGAu80.net
>>46
押す送る、離すの待つ、上げる送る で出来る。
wikiでも読めば分かる基本的なことなのでヒントだけ、後は自分で スクリプト を考えよう。

ttp://ahkwiki.net/Send
ttp://ahkwiki.net/KeyWait

48 :名無しさん@お腹いっぱい。:2014/05/01(木) 19:45:12.58 ID:/qkz+b020.net
>>46
例えばこういう風に書けば希望通りに動作はするけど、左ボタンの動作をカスタマイズしようと
すると他のアプリの左クリック割り当てと競合して別問題が起きる(希望通りに動作しない)。
そしてその問題を回避するのに再び試行錯誤してスクリプトがごちゃごちゃになってかなり面倒くさいことになる
なので左ボタン以外に割り当てたほうがいい。
中ボタンや(5ボタンマウスなら)xbutton1 または xbutton2 に割り当てることをオススメする。

if ( xxx )
{
動作
} else {
click, left, down
while getkeystate("lbutton", "P")
sleep, 10
click, left, up
}

49 :名無しさん@お腹いっぱい。:2014/05/01(木) 19:48:00.32 ID:jn3hT/Ge0.net
if( xxx )がどんな条件なのか知らんけど#Ifで分岐できるんなら

#If ( xxx )
LButton::
 動作
Return
#If

でいいんじゃないの?

50 :名無しさん@お腹いっぱい。:2014/05/01(木) 19:56:23.21 ID:zVOEGAu80.net
>>48
待つだけにWhileループを使うのは負荷かかるだけだぞ。

51 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:15:14.15 ID:qa1QwwoW0.net
>>47
ありがとうございました
LButton::
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
xxx
return

このようなプログラムを作り、xxxのところでしたいことを書けばLButtonUpのときに動くようになるだろうと思ってやってみたら、新たな問題に直面しました
上記でxxxのない、単純な

LButton::
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
return

だけのプログラムでやってみたところ、Win7ではうまくウインドウを動かすことが出来たのですが
WinXPで全く同じプログラムを動かしてみたら、ウインドウを動かすことが出来ません。

我が家ではパソコン2台あって1台はセキュリティを考えWin7にしましたがもう1台はXPのままでこちらは家庭内LANのみの接続でWEBやメール等は全く使わなくしています

で、XPとWin7で動きが違いますよ。なんじゃいな

52 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:26:15.85 ID:qa1QwwoW0.net
>>49
マウスの位置がある範囲内のときという条件です

53 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:36:54.10 ID:zVOEGAu80.net
>>51
フックを使う。
ttp://ahkwiki.net/-UseHook

>>52
その条件なら >>49 が言っている#Ifで判定した方がいい。

挙動が予想と違うときや問題が起きたときは
右下タスクバーアイコンクリックしてスクリプトの実行履歴をみればどんな動作したか分かる。
細かいことだが、プログラムだと括りが広すぎで正確にはスクリプトね。

54 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:45:34.16 ID:qa1QwwoW0.net
やっぱりWin7ではこの方法で希望の動作が出来そうなのですが、WinXPでは駄目ですねえ
なんでかな
左クリックだとデスクトップ上にあるいろいろなウインドウを動かしたり出来なくなるので、右クリックで代用しますか
要するにクリック押下した状態で動かすってことが出来なくなるので、右クリックなら被害は少ないですからね

今日はここまでにします。教えてくださった方、ありがとうございました

::の左側にマウスダウン、マウスアップってのをずっと探していて見つけられませんでした

55 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:46:33.10 ID:qa1QwwoW0.net
>>53
ありがとうございました。相対座標でも出来ますか
それについては、また今後やってみますね

56 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:47:24.05 ID:M6wfwq3S0.net
自分は極力>>49のいう、

#IF 関数_xxx()
LButton::
 動作
return
#If

関数_xxx(){
 if (条件満たす){
  return true ;または、return 1
 }else{
  return false ;または、return 0
 }
}

てな感じにしてる。
見た目スッキリするし、関数にしとけば汎用的に使えるから。
ま、自分の好きなようにすればいいんだけどね。
余計なお世話でした。

57 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:48:55.24 ID:qa1QwwoW0.net
>>53
あ、それと、51の単純スクリプトでは
#UseHook
をつけています

58 :名無しさん@お腹いっぱい。:2014/05/01(木) 20:49:57.20 ID:qa1QwwoW0.net
>>56
なるほど。わかりました

59 :名無しさん@お腹いっぱい。:2014/05/01(木) 21:02:45.87 ID:zVOEGAu80.net
試しに仮想環境のXPで動作させたが左右クリックどちらも問題なし
他の原因じゃない?

#UseHook
RButton:: ;右クリック
Send, {LButton Down}
KeyWait, RButton ;右クリック
Send, {LButton Up}
return

60 :名無しさん@お腹いっぱい。:2014/05/01(木) 21:05:42.90 ID:/qkz+b020.net
>>50
スリープ入れてるんで負荷は高くないですよ

61 :名無しさん@お腹いっぱい。:2014/05/02(金) 02:03:20.13 ID:7XGn0wuj0.net
負荷云々もあるけど、DownしてからUpまで自前スクリプトでやるとスレッドひとつ消費。
イベント起きたときにWinから通知してもらう方がスマート。

ただ、人によっては複数イベントになって可読性が落ちると思う人もいるかもしれない。
また、#If の条件が変わってうまく Up が拾えなくなることもありうる

62 :名無しさん@お腹いっぱい。:2014/05/02(金) 08:26:54.68 ID:r3qrKYD/0.net
一行目以外どういうことだかわからん
すこしサンプル書いてみてよ

63 :名無しさん@お腹いっぱい。:2014/05/02(金) 08:31:07.63 ID:cTvWOU7b0.net
>>59
出社前にw
私の問題でした。どこドアというソフトで、2台のパソコンで1セットのマウスとキーボードで操作するようにしていたのでが、これを使わずにXP側のマウスでやってみたら問題なく動きました
原因はわかったのですが、どうしようかな。どこドアはとっても便利です。これを使いながら出来るようにはならないものか

どこドア
http://www.vector.co.jp/magazine/softnews/050316/n0503161.html

64 :名無しさん@お腹いっぱい。:2014/05/02(金) 11:12:44.37 ID:IwysXfTJ0.net
マウス キーボード 共有 でググれば同機能のソフトは出てくるよ、ShareMouseおすすめ


コマンドラインだがahkスクリプトに直接ファイルD&Dだとスペース分断されるな、めんどい
Loop %0%
  MsgBox, %A_Index%
test.ahkにエクスプローラから "c:\hoge\ho ga.txt" を D&D → "c:\hoge\ho" と "ga.txt" に分断
test.exeにエクスプローラから "c:\hoge\ho ga.txt" を D&D → "c:\hoge\ho ga.txt"
プロンプトで >start test.ahk "c:\hoge\ho ga.txt" → "c:\hoge\ho ga.txt"
ショートカット "autohotkey.exe test.ahk" を作ってD&D → "c:\hoge\ho ga.txt"

XP & ANSI時代はうまくできてたような気がしたけど気のせいかな

win8.1 x64 / AHK v1.1.14.04 U64

65 :名無しさん@お腹いっぱい。:2014/05/02(金) 11:43:44.61 ID:xLPXqcei0.net
そのどこドアで他のPCにも同じようにahkは入ってるの?
たとえば1PCのなかにahk常駐してて、そのスクリプトが走ってても2PC目でahk走ってなかったらそりゃ動かないと思うけど
今リモートでほかのPCで遠隔側でもahk走らせたら遠隔操作上でもちゃんと動いたし

それとLbutton::のとこ
#USEHOOK
~Lbuttonか

~$Lbuttonにした方がいいんじゃね?

66 :名無しさん@お腹いっぱい。:2014/05/02(金) 12:02:52.19 ID:N9BWKBap0.net
>>64
8.3無効にしてるとかじゃないの

67 :名無しさん@お腹いっぱい。:2014/05/02(金) 12:03:37.87 ID:3dOAxsQ10.net
>>65
そっちの方がいいね
毎度~$の存在を忘れてしまうのをどうにかしないとw

68 :名無しさん@お腹いっぱい。:2014/05/02(金) 14:13:03.69 ID:IwysXfTJ0.net
>>66
d
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"NtfsDisable8dot3NameCreation"=dword:00000000
で8.3有効
PC再起動後に作ったファイルは "c:\hoge\ho~1.txt" なショートファイル名で取れました
ショート名付いてない既存ファイルは依然ちぎれたままだけど

既存ファイルのショート名作成はファイルコピーとかで一旦ファイル作り直しするしかないのかな

69 :名無しさん@お腹いっぱい。:2014/05/02(金) 20:49:26.67 ID:fBZxn1sS0.net
>>64
今日は簡単に
教えて頂いてありがとうございました
ShareMouseさっそくDLして使ってみようとしたのですが、私はパソコン2台モニタ3台なので最初少しだけ使えた後、フリーでは使えなくなってしまいました
なので、Mouse without Borders(MWBと略)をインストしてみましたよ
今までのどこドアでは、クリップボードの共有とかキャプチャー画像の共有が出来なかったのでこれは便利です。ところで話は戻って、下記のスクリプトを作って試してみました

ーーーーここからーーー
#UseHook
LButton::
Send, {LButton Down}
KeyWait, LButton
Send, {LButton Up}
MsgBox, aa
return

t::
Click
return
ーーーここまでーーー

パソコンA(Win7)でのみこのAHKを実行するとA上ではちゃんと動きます
で、AのみでこのAHKを実行した状態で、パソコンB(XP)で、
左マウスダウン → 動かす → 左マウスアップ
とするとアップしたときにB上ではなく、A上にMsgBoxが出てきました

パソコンB(XP)のみでこのAHKを実行した状態でB上で
左マウスダウン → 動かす → 左マウスアップ
をしようとすると、ダウンした瞬間にMsgBoxが出てきます
Aでは何も起きません
この症状は、MWBでもどこドアでも同じでした。サーバーはWin7、クライアントがXPです
あとはまた明日

70 :名無しさん@お腹いっぱい。:2014/05/04(日) 13:34:41.28 ID:L1f1T5ER0.net
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
 if "%PROCESSOR_ARCHITEW6432%" == "AMD64" (
  start /b %~dp0..\AutoHotkeyU64.exe %*
 ) else (
  start /b %~dp0..\AutoHotkeyU32.exe %*
 )
) else (
 start /b %~dp0..\AutoHotkeyU64.exe %*
)

バッチファイルで以上のようにして32bit、64bitで違う実行ファイルを起動させています
今はホットキーで上のバッチファイルを経由して実行しているのですが、これをAutohotkey上で関数にして他にも使いやすくしたいのですがどのようにすればよいでしょうか?

71 :名無しさん@お腹いっぱい。:2014/05/04(日) 13:43:30.70 ID:g4dKrEfX0.net
processrun("32bitで走らせたいパス","64bitではしらせたいパス")

関数

processrun("pass32","pass64"){
If(A_Is64bitOS = 0){
run,%pass32%
}else{
run,%pass64%
}
}


1つずつでいいならこんな感じじゃねーだろうか

72 :名無しさん@お腹いっぱい。:2014/05/04(日) 15:56:25.36 ID:F2/HchsM0.net
TargetString := Target[n]
IfInString, TargetString, %SearchString%

if RegExMatch(Target[n], SearchString)
は(全く)同じ動作をすると考えていいですか?

始めは前者で記述してたんですが、
なるべく余計な変数を使いたくないのと、
行数も少なくなる方が良いと思ったのです。

73 :名無しさん@お腹いっぱい。:2014/05/04(日) 16:07:35.59 ID:VFAb7GGD0.net
ならないよ、SearchStringの中に\などの正規表現解釈文字が含まれてると破綻する
単純に文字列比較したいなら Instr()使うといい

74 :名無しさん@お腹いっぱい。:2014/05/04(日) 16:10:47.77 ID:g4dKrEfX0.net
>>72
要するに
ターゲットの全文を持ってきて変数にぶち込んで必要な形にトリムする
のと
ターゲットを部分検索する
ってことだよな?

同じ結果が得られると思うよ。タイトルマッチモードが他に作用しない限りは

75 :名無しさん@お腹いっぱい。:2014/05/04(日) 16:38:53.17 ID:F2/HchsM0.net
>>72
Instr()の存在を忘れていました。

>>73
なるほど、分かりました。

SearchString内容は単純な文字列なので、
わざわざRegExMatch()使う必要ないようです。
今回はInstr()を採用します。

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

76 :名無しさん@お腹いっぱい。:2014/05/04(日) 16:43:37.80 ID:F2/HchsM0.net
>>75
訂正です。リンク先がめちゃくちゃなのでもう一度書き直します。

>>73
Instr()の存在を忘れていました。

>>74
なるほど、分かりました。

SearchString内容は単純な文字列なので、
わざわざRegExMatch()使う必要ないようです。
今回はInstr()を採用します。

>>73-74
ありがとうございました。

77 :名無しさん@お腹いっぱい。:2014/05/05(月) 08:24:10.91 ID:q8udfYz90.net
質問です
IEとChromeのみマウスジェスチャを有効にしたいのですがうまくいきません

SetTitleMatchMode Regex
#ifWinActive ahk_class Chrome_WidgetWin_1|IEFrame
{
Send, !{Left}
}
return
#ifWinActive

としたんですがどこか間違っているのでしょうか?
宜しくお願い致します

78 :名無しさん@お腹いっぱい。:2014/05/05(月) 09:11:56.91 ID:Yo/Jfk5V0.net
>>77
#IfWinActiveの使い方がおかしい
その書き方じゃ、ホットキーも指定せずいきなり{から書き始めてることになる

#IfWinActive ahk_class 〜
(ジェスチャ)::Send, !{Left}
#IfWinActive

こんな風に書く
特定のホットキーラベルの中身を書いてるんだとしたら#は要らない

79 :名無しさん@お腹いっぱい。:2014/05/05(月) 20:56:27.56 ID:q8udfYz90.net
>>78
ありがとうございます
やってみたんですがエラー出たりしてうまくいきません

IfWinActive ahk_class Chrome_WidgetWin_1
←::Send, !{Left}
IfWinActive
return

こんな風に書いたんですが駄目でした
目的としてはChromeとIEで戻る(Alt+←)を使いたいです
宜しくお願い致します

80 :名無しさん@お腹いっぱい。:2014/05/05(月) 21:41:48.54 ID:Rps9M5Pm0.net
>>79
>>1のWikiとかよく読んだ?
https://sites.google.com/site/autohotkeyjp/reference/KeyList

どのキーを押した時にAlt+←を発動させたいの?
←が移動キーの左ということなら

left::send,!{left]

81 :名無しさん@お腹いっぱい。:2014/05/05(月) 21:43:52.02 ID:Rps9M5Pm0.net
最後が ] になってるや } に変更しといて。

82 :名無しさん@お腹いっぱい。:2014/05/05(月) 21:45:00.82 ID:Q352F66l0.net
チマチマせずにMGL使えば良くない?と思った

83 :名無しさん@お腹いっぱい。:2014/05/05(月) 21:52:09.15 ID:Rps9M5Pm0.net
ああ、前レスを読んでなかった、マウスジェスチャーでやりたいのか
>>82のいうとおりMGL使ったほうがいい。
自分で一から作ろうなんて無謀なことは考えないほうがいい。

84 :名無しさん@お腹いっぱい。:2014/05/05(月) 22:28:35.50 ID:xZGlJQxj0.net
>>71
ありがとうございます
A_Is64bitOSなんて組み込み変数があったのですね、AutoHotkeyJpで見つからなかったのでないと思っていました

呼び出しを以下のようにしたらとりあえず希望のとおりに動きました
processrun(A_ScriptDir . "32bit相対パス",A_ScriptDir . "64bit相対パス")

""の中に%A_ScriptDir%だと動かなかったので、式のところを見てやったのですが、文字列をつなげるのは上のようにスペースドットスペースという形式でいいのでしょうか?

85 :名無しさん@お腹いっぱい。:2014/05/05(月) 22:29:53.25 ID:q8udfYz90.net
わかりました
MouseGestureLでやってみます
ありがとうございました!

86 :名無しさん@お腹いっぱい。:2014/05/05(月) 23:17:03.31 ID:Eh50B3Id0.net
foo = あいうえお
bar = かきくけこ

これを二重引用符で囲って間に半角スペースを入れて連結させるとき

baz = "%foo%"
baz = %baz% "%bar%"

または

baz := """" foo """"
baz .= " """ bar """"

どっちのやり方が好き?

87 :名無しさん@お腹いっぱい。:2014/05/05(月) 23:28:17.53 ID:Eh50B3Id0.net
実際の用途は受けを取った引数を別のアプリに渡して起動させるランチャー用に考えてるんだけど

88 :名無しさん@お腹いっぱい。:2014/05/05(月) 23:35:54.07 ID:i2WSev140.net
"""" ←これ嫌い
なるべくChr(0x22)とか使う

89 :名無しさん@お腹いっぱい。:2014/05/05(月) 23:41:56.44 ID:Q352F66l0.net
文字コードよく分かんね

90 :名無しさん@お腹いっぱい。:2014/05/05(月) 23:55:32.50 ID:Eh50B3Id0.net
>>88
まーね、不格好だよね

Loop, %0% {
Args .= (A_Index = 1) ? Chr(34) %A_Index% Chr(34) : A_Space Chr(34) %A_Index% Chr(34)
}

じゃあこれにしようかな

91 :名無しさん@お腹いっぱい。:2014/05/06(火) 01:01:12.30 ID:3B/AqWI60.net
> 905 名前:名無しさん@お腹いっぱい。:2014/04/04(金) 18:25:26.58 ID:EmtUIrig0
> Quote := """"
> var := Quote . "hoge" . Quote
>
> 引用符の扱いはこんな感じでやってる

Chr(0x22)よりこっちのがいいな
俺はNotepad++のシンタックスハイライトで読みやすくなるから変数名を「A_Quote」にしてるけど

92 :名無しさん@お腹いっぱい。:2014/05/06(火) 03:08:11.40 ID:vT/Lnlck0.net
個人的に「=」は好きじゃないので「.」で結合する
式がシンプルなら """" を使うけど、複雑になるなら >>91 かな
Chr() は可読性が低いのであまり使いたくない

93 :名無しさん@お腹いっぱい。:2014/05/06(火) 08:06:46.18 ID:e0U3iwgZ0.net
エディタの設定で""を強調表示して使ってるわ
複雑になるとどうやってもわかりにくいけどね
Chr()使うなら中身は16進で指定だな、文字コードの10進表記はいまいち気持ち悪い

>>84
スペースドットスペースでもいいし ドット無しでスペース一個でもおk

94 :名無しさん@お腹いっぱい。:2014/05/06(火) 16:05:01.49 ID:56OqLCg70.net
exe化する時、バージョン情報がAHKのバージョンになりますが、
任意のバージョン番号を与えることって出来ますか?

95 :名無しさん@お腹いっぱい。:2014/05/06(火) 16:38:16.27 ID:n+W8xGjR0.net
>>94
Resource Hackerで変更する

【質問】
Numpad0 Up::Send, {Numpad0}
Numpad0 & Numpad3::処理
このように「Numpad0」を修飾キーにしてるため、テンキー0のキーリピートが効かなくない

キーリピート出来るようにするにはどうすればいいですか?

96 :名無しさん@お腹いっぱい。:2014/05/06(火) 16:48:05.06 ID:n+W8xGjR0.net
>>95の質問ですけど、誤爆が激しくなりそうなので質問を取り下げます(メインキーの0使い増すんで)
あと、どうでもいいけど、「キーリピートが効かなくない」は「キーリピートが効かない」の間違いでした

とにかく、スレ汚し澄みませんでした

97 :名無しさん@お腹いっぱい。:2014/05/07(水) 23:11:58.00 ID:fr/lZFde0.net
前スレ>>952ですが、悪化したようです
400個ほどのファイルをリネームしようとしたらパソコンがフリーズしました……

98 :名無しさん@お腹いっぱい。:2014/05/07(水) 23:33:35.18 ID:QwFuX1aK0.net
>>96
ていうかそれ、アップローダーのNewOSMで全部解決してる気が……

99 :名無しさん@お腹いっぱい。:2014/05/08(木) 01:13:03.90 ID:U9WEUh+g0.net
ウィンドウタイトルバーのクラス的なものを取得する方法ってなかったですかね?
具体的にはタイトルバー上で右クリックしたりミドルクリックすることでアクションを発生できるような。

100 :名無しさん@お腹いっぱい。:2014/05/08(木) 01:17:43.47 ID:3zhXVqi40.net
>>99
超簡単な方法はマウスジェスチャーLにお任せ
一応は指定できるけどクリック関係ならそれが一番手っ取り早い

指定はできるはずだがやり方は忘れた

101 :名無しさん@お腹いっぱい。:2014/05/08(木) 02:05:11.80 ID:5Yw3w92c0.net
>>97
RegularRenamerってファイルリネームして即終わるアプリでしょ
RunWaitで終わるまで待ってやるんじゃダメなわけ?

つかAHK内でFileMoveでリネームするのはどうよ
Unicode版ではダメ文字もなくなったしRegExReplace()も使えるから
外部アプリに頼らなくてもいいんでね


>>99
↓のMUS_GetTitleBarPos() あたり
http://www6.atwiki.jp/eamat/pages/27.html

102 :99:2014/05/08(木) 13:18:38.89 ID:U9WEUh+g0.net
>>100
>>101
ありがとうございます、やってみます。

103 :名無しさん@お腹いっぱい。:2014/05/08(木) 19:55:27.42 ID:i7jGPQu60.net
>>95に関連する(逆の?)質問なんすけど…
>>95を例にして説明すると、
長押しでキーリピートしないのは良いんだけど、長押しからリリースした瞬間「0」が1個入力されてしまうのは困る。
修飾キーとして使おうと思って「0」キー押したが暫く考えてやっぱり止めた…という時に「0」が入力されないようにしたい。
こんな場合どう書けば良いの?

Numpad0::
KeyWait, %A_ThisHotKey%, T0.5
If (ErrorLevel = 1) {
 Return
}else{
 Send, {Numpad0}
}
Return

としても「0」が入力されてしまい、だめだったです。

104 :名無しさん@お腹いっぱい。:2014/05/08(木) 21:02:30.22 ID:ysVxZ42V0.net
>>103
スクリプトの実行ログ見れば分かると思うが、キーリピートが最後に実行されている。
リピート止めていないのが原因。
それとは別に、フックを使わないとSendにも反応して無限ループする。ダメな例:Numpad0::Send,{Numpad0}

#UseHook
Numpad0::
KeyWait, %A_ThisHotKey%, T0.5
If (ErrorLevel = 1) {
 KeyWait, %A_ThisHotKey%
 Return
}else{
 Send,{Numpad0}
}
Return

105 :名無しさん@お腹いっぱい。:2014/05/08(木) 21:55:15.60 ID:3zhXVqi40.net
ていうか修飾キーとして&使っちゃうと元のキーとしての機能が失われるんよ。それはAHKの仕様

だからGetkeystateで分岐するほうが問題が少ない。
Numpad0の機能は殺して、Numpad0 upでsend,0するのは正しいけど、こうしないとダメ

Numpad0::
keywait,Numpad0
return

Numpad0 up::
if{flag==1){
flag:=0
}else{
send,{Numpad0}
}

Numpad0+Numpad3で処理をさせたいなら

Numpad3::
if (getkeystate("numpad0","p")){
flag:=1
処理
}else{
send,{Numpad3}


でやるべき。
&使うのはもともと修飾キーだったwinやaltやctrlやshiftのほうがいいぞ

106 :名無しさん@お腹いっぱい。:2014/05/08(木) 21:59:27.79 ID:i7jGPQu60.net
>>104
レスありがとう。
>>104単独ではうまく行くのですが、>>103の目的が達成されません。

#UseHook
Numpad0::
KeyWait, %A_ThisHotKey%, T0.5
If (ErrorLevel = 1) {
 KeyWait, %A_ThisHotKey%
 Return
}else{
 Send,{Numpad0}
}
Return
;例として[Numpad0]+[Numpad3]で「a」を送る
Numpad0 & Numpad3::Send, a

こうすると長押しでも「0」が送られます。
なかなか難しいすね。

107 :名無しさん@お腹いっぱい。:2014/05/08(木) 22:06:51.61 ID:3zhXVqi40.net
てかうpろだのNewOSM落として改造してみては?

Numpad0::Hotkey(1,0)
Numpad0 up::DefKeyShot("{Blind}{Numpad0}")
Numpad3::("{blind}{Numpad3}","処理ラベル")

処理ラベル:
処理
return

とか

108 :名無しさん@お腹いっぱい。:2014/05/08(木) 22:16:20.32 ID:i7jGPQu60.net
>>105
レスありがとう。
修飾キー以外もいじる必要あって何かかなり複雑になるみたいすね。

>>104-105
素直に普通の修飾キー使うか、
長押しでキー送られても問題ない状況でこういう修飾キー使おうと思います。

109 :名無しさん@お腹いっぱい。:2014/05/08(木) 22:16:58.89 ID:3zhXVqi40.net
ちがった。こうか
ちょっと関数分かりにくいなコレ

Numpad0::Hotkey(1,1)
Numpad0 up::DefKeyShot("{Blind}{Numpad0}")
Numpad3::Keypush(,"aaa")

aaa:
msgbox,A
return

110 :名無しさん@お腹いっぱい。:2014/05/08(木) 22:24:54.73 ID:i7jGPQu60.net
>>107
参考にさせてもらいます。
ありがとう。

111 :名無しさん@お腹いっぱい。:2014/05/08(木) 23:22:35.63 ID:ysVxZ42V0.net
>>ID:i7jGPQu60
何が聞きたいのかハッキリしてほしいな、コンビネーションキーの事も聞いていたのか。
普段使わないF13等のキー以外はコンビネーションキーの機能で割り当てない方がいい。
#Ifを使えばキー機能無効化せずに割り当てできる。

#UseHook

Numpad0::
KeyWait, %A_ThisHotKey%, T0.5
If (ErrorLevel) {
 KeyWait, %A_ThisHotKey%
}else{
 Send,{Numpad0}
}
Return

#If GetKeyState("Numpad0","P")
Numpad3::Send, a
#If

112 :名無しさん@お腹いっぱい。:2014/05/08(木) 23:52:54.28 ID:i7jGPQu60.net
>>111
>>103>>95を例に質問したつもりだったんですけど、分かり難かったみたいでスンマセン。
要は、修飾キーにしたテンキー0を押してそのまま何キー(テンキー3)も押さないで
暫くしてテンキー0を放した時に「0」が送られないようにしたいと言う質問でした。

>>111のコードで目的が達成できたと思います。
ありがとう。

113 :名無しさん@お腹いっぱい。:2014/05/09(金) 04:10:30.55 ID:7zmMXcCb0.net
>>2
必要

114 :名無しさん@お腹いっぱい。:2014/05/09(金) 12:39:01.16 ID:ya11hfko0.net
>>109
作った人だけどたしかに区切り多くて難しいカモ
うーんどうしよう……なんかいい方法ないかな

115 :名無しさん@お腹いっぱい。:2014/05/09(金) 17:20:32.76 ID:z0hMhqvm0.net
タスクトレイでNumlockとかの状態が見れるスクリプトってどうすればいいんだろう
わざわざキーボードのランプ見たくない

116 :名無しさん@お腹いっぱい。:2014/05/09(金) 19:00:23.13 ID:WMN9Yo2t0.net
>>115
Numlockの状態はGetKeyStateで取得できる
タイマー監視して状態変化時にトレイアイコン変更すれば一応目的は達成できる

117 :名無しさん@お腹いっぱい。:2014/05/09(金) 19:00:39.95 ID:szsV1knE0.net
>>115
タイマーでキー状態を取得してアイコン切り替えるだけ、簡単だから自力で作れ。

118 :名無しさん@お腹いっぱい。:2014/05/09(金) 19:14:07.03 ID:fLWGwM3W0.net
#NoEnv
って今のPCだとあんま体感できんよね
それでもプラシーボ効果で軽くなった気がして付け加えてしまう

119 :名無しさん@お腹いっぱい。:2014/05/09(金) 19:18:18.29 ID:z0hMhqvm0.net
NumLock::
If(GetKeyState("NumLock","T") == 0)
{
SetNumLockState, on
Menu,Tray,icon,icon0
}else{
SetNumLockState, off
Menu,Tray,icon,icon1
}
keywait,%A_ThisHotkey%
return

タイマーすら必要なかったありがとう

120 :名無しさん@お腹いっぱい。:2014/05/09(金) 21:37:44.33 ID:LG6g55C60.net
教えて下さい
質問文が長いので分割させていただきます

array1 := Object()
array2 := Object()

array1[1] := "hoge"
array2[1, 1] := ["あああ", "いいい", "ううう"]
array2[1, 2] := ["かかか", "ききき", "くくく"]

array1[2] := "hage"
array2[2, 1] := ["わわわ", "ををを", "んんん"]

(実際は更に続く)

上のよう設定としてにスクリプト内に直に書いてた物を
iniファイルから読み込むようにしようかと改造中なんですが
行き詰まってしまいました

次のレスへ

121 :名無しさん@お腹いっぱい。:2014/05/09(金) 21:39:34.82 ID:LG6g55C60.net
>>120からの続き

----- Config.ini -----
[hoge]
1=あああ, いいい, ううう
2=かかか, ききき, くくく

[hage]
1=わわわ, ををを, んんん
-----------------------

次のレスへ

122 :名無しさん@お腹いっぱい。:2014/05/09(金) 21:40:22.88 ID:LG6g55C60.net
>>121からの続き

array1 := Object()
array2 := Object()

IniRead, Section, %A_ScriptDir%\Config.ini
Loop, Parse, Section, `n
{
 n1 := A_Index
 array1[n1] := A_LoopField
 Loop,
 {
  n2 := A_Index
  IniRead, key, %A_ScriptDir%\Config.ini, % array1[n1], %n2%
  array2[n1, n2] := key
  if (key = "ERROR") {
   break
  }
  MsgBox, % n1 "-" n2 "`n" key "`n" array2[n1, n2] ;(1)
  Loop, Parse, key, `,
  {
   array2[n1, n2, A_Index] := A_LoopField ;(2)
  }
 }
}
MsgBox, % array2[1, 1, 1] ;(3)

(1)でarray2[n1, n2]には確実にデータが入ってるのですが
(2)でarray2[n1, n2, A_Index]にデータが入らないらしく
(3)で見ると空っぽなのです(「あああ」と表示して欲しい)
何処が間違ってますか?

123 :名無しさん@お腹いっぱい。:2014/05/09(金) 22:08:45.36 ID:LG6g55C60.net
>>122の一部修正します
Loop, Parse, key, `,
     ↓
Loop, Parse, key, `,, %A_Space%

124 :名無しさん@お腹いっぱい。:2014/05/09(金) 22:23:08.63 ID:rWPBh27L0.net
画像ファイルのサイズ(ピクセル)を取得するにはどうしたらいいですか?

125 :名無しさん@お腹いっぱい。:2014/05/09(金) 22:36:29.31 ID:EsjgkGB60.net
>>120-123
array2[n1, n2] := key
の時点で array2[n1, n2] が文字列になっているのが原因じゃないかな
その行を消したらきちんと代入されたよ

126 :名無しさん@お腹いっぱい。:2014/05/09(金) 23:36:21.61 ID:LG6g55C60.net
>>125
120-123です
期待通りの結果になりました
これで設定をiniファイルに移すことが出来ます
ありがとうございました

127 :名無しさん@お腹いっぱい。:2014/05/10(土) 00:10:07.21 ID:qsKirAso0.net
>>126
勝手にまとめ

obj1 := Object()
MsgBox, % obj1[1] := "あ" ;あ
MsgBox, % obj1[1, 1] := "い" ;失敗
MsgBox, % obj1[1, 1, 1] := "う" ;失敗

obj2 := Object()
MsgBox, % obj2[1, 1, 1] := "う" ;う
MsgBox, % obj2[1, 1] := "い" ;い
MsgBox, % obj2[1] := "あ" ;あ

128 :名無しさん@お腹いっぱい。:2014/05/10(土) 00:12:12.67 ID:qsKirAso0.net
続き
MsgBox, % obj2[1, 1, 1] ;失敗
MsgBox, % obj2[1, 1] ;失敗
MsgBox, % obj2[1] ;あ

129 :名無しさん@お腹いっぱい。:2014/05/10(土) 00:32:49.29 ID:qsKirAso0.net
>>124
画像の高さ/幅取得
裏でGUI作成、サイズ取得して破棄。

Gui, Add, Picture , vPID, パス/ファイル名
GuiControlGet, Var, Pos, PID
MsgBox % VarW "`n" VarH
Gui, Destroy
Return

130 :名無しさん@お腹いっぱい。:2014/05/10(土) 01:01:44.02 ID:RxoB4pdU0.net
>>129
ありがとうございます
こんな手があったとは思いもよりませんでした!

131 :名無しさん@お腹いっぱい。:2014/05/10(土) 01:17:11.26 ID:o1LpG6D90.net
>>130
http://www.autohotkey.com/board/topic/59258-get-imagesize-how-solved/
http://www.autohotkey.com/board/topic/55305-read-the-image-size-solved/#entry347466
http://www.autohotkey.com/board/topic/29449-gdi-standard-library-145-by-tic/
このあたり参考にするといいかもね
>>129の方法も紹介されてる
大量の画像のサイズ取得とかだと結構取得時間に差が出るから色々試してみるのもいい

132 :名無しさん@お腹いっぱい。:2014/05/10(土) 13:35:03.99 ID:oFUi44ng0.net
Gui, Add, DropDownList 
で、1-100くらいまでの数字を表示させたいんですが、
1つずつ打っていくしか手はないのでしょうか?
正規表現もここでは使えないぽくて…

133 :名無しさん@お腹いっぱい。:2014/05/10(土) 14:14:39.55 ID:ap1Tu+d00.net
Loopで回せばいいんちゃう?

134 :名無しさん@お腹いっぱい。:2014/05/11(日) 13:42:56.32 ID:h/TY4HtP0.net
>>118
#NoEnvはメモリ効率向上というより誤爆よけだと思うけど
関数やローカル変数がなかった頃は よくpath、tmpあたりのグルーバル変数をうっかり作って
おかしな結果になってたわ

135 :名無しさん@お腹いっぱい。:2014/05/11(日) 23:21:57.57 ID:JVnyrOhh0.net
キーボードショートカットで、
Windowsの普通のMDIアプリケーションの親ウィンドウをスクロールさせたいのですが可能でしょうか?
たいていのMDIアプリケーションって、マウスのスクロールホイールに反応しませんよね?

136 :名無しさん@お腹いっぱい。:2014/05/11(日) 23:56:51.19 ID:EhWXXYjv0.net
>>135
他の人でも試せるように具体的にどれのことを言ってるのか書いてほしい。

137 :名無しさん@お腹いっぱい。:2014/05/12(月) 00:32:15.79 ID:Ui9fdhIL0.net
>>136
こういうタイプのアプリです(これはテキストエディタ)
http://www.vector.co.jp/soft/dl/win95/writing/se234397.html

親ウィンドウがあり、新規ドキュメントで、親ウィンドウの中に子ウィンドウをつくります
子ウィンドウが親ウィンドウをはみでると、親ウィンドウにスクロールバーがでます

私がやりたいのは、この親ウィンドウのスクロールバーを
ショートカットキーや、特定のキー+マウスホイール上下左右に動かしたいんです

私が実際にやりたいのは市販の音楽ソフトなのでみなさま試せないので
シンプルな昔ながらのMDI型のテキストエディタを例として挙げさせていただきました
Windows7や8でも動きます。

138 :名無しさん@お腹いっぱい。:2014/05/12(月) 01:41:33.64 ID:IiDkPInT0.net
リダイレクトホイールの要領で行けると思う

MDIの背景領域のクラスを取得して
WM_MOUSEWHELL(0x20A, 0x20E)
WM_HSCROLL(0x114) /WM_VSCROLL(0x115)
あたりをSendMessageで投げる

139 :名無しさん@お腹いっぱい。:2014/05/12(月) 03:27:27.43 ID:JG1NZim90.net
>>137
親    Send、ControlSend ahk_parent有無
親、子 対象のClass調べて SendMessage

あとは動かすキー操作送るだけ。
もちろん動くか動かないかはアプリの仕様次第。

140 :名無しさん@お腹いっぱい。:2014/05/12(月) 09:49:16.22 ID:IhZH/lvP0.net
>>138 >>139
ありがとうございます!
でも>>137のアプリでも自分が試したいアプリでも、うごかないっす。。。orz

とりあえず>>137のアプリの親ウィンドウのスクロールバーをなんとか動かせないでしょうか?

試し方ですが、>>137のアプリで、ファイル>新規作成 をしてドキュメント(子ウィンドウ)を作って
親ウィンドウからはみだすように配置すると、親ウィンドウにスクロールバーが出ます。
2つ新規ドキュメントを作って下と右にはみだすように配置すれば親ウィンドウの右と下にスクロールバーがでます。
そのスクロールバーを動かしたいのです。
キー送信しても子ウィンドウのスクロールバーしか動かないのです。。。。

MDI親ウィンドウの外側のスクロールバーは、PgUpやPgDnやマウスのスクロールホイールなどでは動かないのですが、それでもAHKで動かすことはできるのでしょうか?
スクロールバーにマウスクリック送信とかの裏技的やりかたをしないと厳しいでしょうか?

141 :名無しさん@お腹いっぱい。:2014/05/12(月) 12:46:47.72 ID:IiDkPInT0.net
MdiCliantの場合はスクロールクラスをしてやるほうがいいっぽい
とりあえずこの辺を参考にしてみて

WheelScroll U32/64対応版
http://www1.axfc.net/uploader/so/3197627

142 :名無しさん@お腹いっぱい。:2014/05/12(月) 18:02:04.45 ID:JG1NZim90.net
>>140
スクロールバーを特定できないなら
座標か画像認証で▲まで瞬間移動してクリック送信

スマートじゃないから最終手段だが・・・。

143 :名無しさん@お腹いっぱい。:2014/05/12(月) 20:39:20.50 ID:3Gga6I5m0.net
>141
WheelScrollの最新版ていつもどのあたりで入手できるんでしょうか?

144 :名無しさん@お腹いっぱい。:2014/05/12(月) 22:06:39.75 ID:RCC9MozX0.net
>>143
WheelScroll.ahk の改造版である「WheelAccel」なら
http://code.google.com/p/mousegesturel/
http://code.google.com/p/mousegesturel/downloads/detail?name=Examples52.zip
これ↑の中に入ってる。

ここのWheelAccelのアップデート版が存在するのかは知らない。
例え存在しなくても自分でスクリプト手直し出来るんだから問題ないでしょ?(やる気が有るか無いかは別)

145 :名無しさん@お腹いっぱい。:2014/05/12(月) 23:37:05.89 ID:IiDkPInT0.net
>>143
スレ内でホイールやスクロール系の質問が来た時に保存期間の長いあぷろだに適当に上げてます
前は IME.ahkとかと一緒の @wikiのftpサーバーに置いてたんだけど
ハッキング騒ぎでウィルス怖い書き込みがあったので

>114にある通りMouseGestureLにはGesture組込み用のWheelAccel改が同梱されてるっぽく今はそっちが主流な感じかな
一応 WheelScrollにもWheelAccelの機能は盛込み済だけどMouseGestureLとの連携は考慮してないもんで

146 :名無しさん@お腹いっぱい。:2014/05/13(火) 20:37:09.69 ID:MuYqfOSW0.net
寝落ち用に作っているのだけれど
A_TimeIdlePhysicalでタイマーセットして
Run, %ComSpec% /c powercfg -x -monitor-timeout-ac 1
これで電源オプションのディスプレイの電源を切るまでの時間を1分に変更して
スクリプトが終了するときに元の間隔に戻すという感じにしてて
不意に電源がオンになっても1分で切れるようにまではできたけど
これをなんとか1分未満、秒単位に出来る方法はないかな

147 :名無しさん@お腹いっぱい。:2014/05/13(火) 21:01:21.66 ID:/QEGGUrc0.net
>144 >145
ありがとう、参考になりました!

148 :名無しさん@お腹いっぱい。:2014/05/13(火) 21:39:17.17 ID:rG8Z6GDo0.net
>>146
SendMessage, 0x112, 0xF170, 2,, Program Manager ; 0x112 is WM_SYSCOMMAND, 0xF170 is SC_MONITORPOWER.

149 :名無しさん@お腹いっぱい。:2014/05/13(火) 21:41:38.80 ID:MuYqfOSW0.net
ちゃうねん
電源の状態を確認してオンだったらオフる動作をしたいねん

150 :名無しさん@お腹いっぱい。:2014/05/14(水) 01:59:44.61 ID:RkcpF9pr0.net
画面の縦が狭いノートをずっと使っているんだが、
画面の一番下をクリックするとタスクバーが消える/表示をトグルする単純なスクリプト作ったがとても便利
もっとはやくつくればよかったw

151 :名無しさん@お腹いっぱい。:2014/05/14(水) 02:12:27.70 ID:fk1aU+Mo0.net
タスクバーを自動で隠すのとどう違うの?

152 :名無しさん@お腹いっぱい。:2014/05/14(水) 02:18:11.49 ID:RPGHyF0D0.net
自動で隠すと、出てほしくない時に出てきたりするからすごい邪魔なときある

153 :名無しさん@お腹いっぱい。:2014/05/14(水) 02:25:08.19 ID:62OzpCou0.net
そもそもタスクバーがなくなったら困らないかという気もしなくもない俺のタスクトレイはインジケーターまみれ

154 :名無しさん@お腹いっぱい。:2014/05/14(水) 03:54:57.10 ID:/HIG7Vl00.net
さいしょAHKで試行錯誤してたけど
俺は「タスクバーをほかのウィンドウの手前に表示する」のチェックを外すだけで解決した

155 :名無しさん@お腹いっぱい。:2014/05/14(水) 08:08:37.26 ID:DM5mvBPn0.net
うちは横置き&小さいタスクバーボタン
アイコンだけじゃなくウィンドウタイトルも表示されるので分かりやすい

156 :名無しさん@お腹いっぱい。:2014/05/14(水) 13:40:45.04 ID:ryadNrAh0.net
どうしてもやり方が分からないので知りたいのですが。
bmpでボタン作りたいのですがやり方どうすれば良いのでしょう?

別窓では無くイメージとしては アプリ開いている状態で画面の一部にbmpを上乗せして(濃度%いじれると良い)
クリックするとsend遅れたりするけどフォーカスは下のアプリの方(使っているアプリ)のままって感じですね。
bmp表示する方法は分かってもボタン化が分からないんですよね・・・

157 :名無しさん@お腹いっぱい。:2014/05/14(水) 14:59:05.43 ID:txyddDiZ0.net
マウスオーバーでgui時に判別が基本だろうけど

ていうかそういうのってもうビジュアルベーシックとかCのほうが早くねぇか?

158 :名無しさん@お腹いっぱい。:2014/05/14(水) 15:46:22.32 ID:/fXX0Y8P0.net
AHKでファンクションキーが使えるのか
で、私は使えたのですが、ここにこんな記述がありますねえ
これって誰が書いているのでしょうか。ちょっとびっくりです
ちなみに、ファンクションキーは普通に
F10::
Send, {F10}
return
などで出来ますよねえ。何か別の意味があるのでしょうか

http://autohotkey.blog.fc2.com/blog-entry-86.html

159 :名無しさん@お腹いっぱい。:2014/05/14(水) 15:48:30.51 ID:ryadNrAh0.net
どちらも疎いので・・・何とか分かる範囲でコレで行けるならこれでやれればなと言うのも有りまして。

160 :名無しさん@お腹いっぱい。:2014/05/14(水) 15:52:29.82 ID:RPGHyF0D0.net
>>158
重大な勘違いしてる

161 :名無しさん@お腹いっぱい。:2014/05/14(水) 15:56:27.54 ID:NeDEmuCb0.net
>>158
ノートパソコンて知ってる?

162 :名無しさん@お腹いっぱい。:2014/05/14(水) 16:08:24.99 ID:/fXX0Y8P0.net
ああ、ひょっとして、F1からF12のことではなくて、キーボードの左手前にあるFnキーのことですか
なんかありましたねえ
Fn(ファンクション)キーってわざわざファンクションとかって書いてあるし、なんかややこしい
もう少しちゃんと書いてほしいです
でもよくわかりませんが

1.人がキーを押す
2.キーボードが押されたキーの情報をパソコンに送信する
3.パソコン(Windows)が受け取る
4.Windowsが対象ウィンドウにキー情報を送る
5.AutoHotkeyが暗躍する
6.ウィンドウがキー情報を受け取って反応する

本来この順でキーを押したことがウィンドウに通知されますが、
2でキーボードが「Fnキー+○キーは×キーにする」という処理を行います。
Windowsが受け取るのは×キーのキー情報だけでFnキーや○キーのキー情報はWindowsには届きません


と書いてあります。では、この処理後の×キーのキー情報で動作を行うことって出来ないのかな
まあ、Fnキーは使うことはないと思うので余計なお世話かもしれませんが

163 :名無しさん@お腹いっぱい。:2014/05/14(水) 17:09:57.46 ID:t46m9pW+0.net
gui,add,pictureの縮小拡大でアルゴリズムの指定はできないの?
サイズ変えると糞きったなくなるんだけど

164 :名無しさん@お腹いっぱい。:2014/05/14(水) 17:54:19.83 ID:HUSPdTgC0.net
>>159
ラベル指定すると画像クリックしたときの動作を指定できるけど
それじゃ駄目なのけ

>>162
できると思うよ

165 :名無しさん@お腹いっぱい。:2014/05/14(水) 20:28:20.50 ID:fDgDPOOw0.net
トリガーキーのトグル動作でキーリマップを切り換えるスクリプト作成中なんですが、
リマップAからリマップBにした時、何らかの視覚情報で知らせられたらと思っています。

一応、リマップBにした時にタスクトレイにアイコンを表示するだけのスクリプトを走らせ、
リマップAに戻した時そのスクリプトを終了する、というのは出来たのですが、
それよりもCaretの色または太さを変える方がより視認性が高いのではないかと思い始めました。

そこで質問です。
Caretの色または太さはどうすれば変更できるんでしょうか?
また、この他にアイデア有りましたら教えていただけないでしょうか。

166 :名無しさん@お腹いっぱい。:2014/05/14(水) 21:17:19.20 ID:Tl56DF4L0.net
tooltipで表示するのがいいんでない?
俺は何かを切り替える系での告知はtooltipでやってる

167 :名無しさん@お腹いっぱい。:2014/05/14(水) 21:42:41.64 ID:DM5mvBPn0.net
>>165
なまずIME あたりが参考になるかも
中見てないけどAHKにはキャレットをカスタマイズする機能は(たぶん)ないので
GUIでキャレット位置に貼り付けてるんじゃないかな

168 :名無しさん@お腹いっぱい。:2014/05/14(水) 22:12:33.98 ID:fDgDPOOw0.net
>>166-167
回答ありがとうがざいました。

>キャレットをカスタマイズする機能は(たぶん)ないので
そうですか、わかりました。

なまずIMEのスクリプト流し読みですが、ちょっと見かなり複雑な処理してる見たいですね。

お二人の意見を参考にスクリプト書いてみます。

169 :名無しさん@お腹いっぱい。:2014/05/14(水) 22:48:46.91 ID:DM5mvBPn0.net
>>156
よくわらんがGui,Add,Buttonの上に Gui,Add,Picureでbmp貼って
GuiControlでbmpをDisableにしとけばいいんちゃう?
透明指定は WinSet,Trans とか WinSet,TransColor あたり

ボタンの形のbmp使うからButtonオブジェクトいらんってことなら
OnMessage() でWM_LBUTTONDOWNイベント発生させる

170 :名無しさん@お腹いっぱい。:2014/05/14(水) 23:11:01.08 ID:2sIhPzGT0.net
#ClipboardTimeoutの値を一つの処理(スレッド?)でのみ変更する方法ってありますか?

171 :168:2014/05/14(水) 23:44:02.72 ID:fDgDPOOw0.net
以下のようにしてCaretの位置へToolTip表示させれるようになったのですが、
秀丸エディタではCaretの位置へToolTip表示させることが出来ませんでした。(ウインドウ枠の所に表示される)
秀丸エディタでは無理なんですかね?
それから、ToolTipを半透明で表示させることって出来ますか?

;keyLayout_ChangeはリマップBになったかのフラグ
Indicator(keyLayout_Change) {
if (keyLayout_Change) {
SetTimer, Indicator_ToolTip, 1000
}else{
SetTimer, Indicator_ToolTip, Off
ToolTip,
}
}
Indicator_ToolTip:
CoordMode, ToolTip, Relative
CoordMode, Caret, Relative
ToolTip, ., A_CaretX - 10, A_CaretY - 16
CoordMode, ToolTip, Screen
CoordMode, Caret, Screen
return

172 :名無しさん@お腹いっぱい。:2014/05/15(木) 00:56:11.64 ID:gvWGefzm0.net
>>164,169

ん!
何となく分かった気がしますありがとう御座います。
頑張ってみます

173 :名無しさん@お腹いっぱい。:2014/05/15(木) 02:48:10.08 ID:smf5mgep0.net
>>162
> 処理後の×キーのキー情報で動作を行う
はできるけど、もとの×キーの動作も変えてしまう
Fn単独の動作を変更できたら便利だけど、AHKではできないって意味だな
FnキーのFnがfunctionだから(ファンクション)と書かれてるのも間違ってないな
ということで君がおばかさんだったってことだ

174 :168:2014/05/15(木) 04:19:57.92 ID:2vMbrIyM0.net
以下のように改良して秀丸エディタでも確認できるようになりました。

;keyLayout_ChangeはリマップBになったかのフラグ
Indicator(keyLayout_Change) {
if (keyLayout_Change) {
SetTimer, Indicator_ToolTip, 500
}else{
SetTimer, Indicator_ToolTip, Off
ToolTip,
}
}
;ウインドウ枠左端に縦長のToolTipを表示(ウインドウに追従し、ウインドウサイズによりToolTip縦サイズを調整する)
Indicator_ToolTip:
WinGetPos, X, Y, Width, Height, A
c := Round(Height/22)
Loop, %c% {
str .= "`n"
}
ToolTip, % str, X, Y + Round(Height/5)
str := ""
return

175 :名無しさん@お腹いっぱい。:2014/05/15(木) 04:22:58.12 ID:2vMbrIyM0.net
>>174
名前覧の168は>>171が正しいです。

176 :名無しさん@お腹いっぱい。:2014/05/15(木) 21:34:12.75 ID:x+Bh3TdJ0.net
昔はTooltipとかキャレットとかやったけど今はSoundBeep使って音階で識別してる

というのもトグル状態の確認が必要で情報表示するけど、
うざくて消したくなるから一定時間で消すような仕込みをした
でも一定時間操作してないと状態がどうなってるかよく分からなくて
再度キー押したりして本末転倒になった

今はやりたい操作は指連打と音で判断するようにしてる

*vk1Dsc07B::KeyCounter()

KeyCounter() {
 global $KeyMap
 static keyCount
 ListLines, Off
 $KeyMap:=keyCount:=(A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) ? keyCount+1 : 1
 SoundBeep, $KeyMap * 400, 10
 KeyWait, % RegExReplace(A_ThisHotkey, "^\W+", "")
 $KeyMap:=0
}

#if ($KeyMap = 1) ;
 h::Left
 j::Down
 k::Up
 l::Right
#If ($KeyMap = 2)
 ; Home, End, PgUp, PgDn とか
#If ($KeyMap = 3)
 ; WinMoveとか

177 :名無しさん@お腹いっぱい。:2014/05/17(土) 20:17:48.37 ID:CGpqRpBF0.net
このように書けば問題ないのですが、表示名が「TestToggle&Check」じゃなく、「TestToggle Check」と「半角空白」を使いたいのです
Menu, tray, add, TestToggle&Check
TestToggle&Check:
Menu, tray, ToggleCheck, TestToggle&Check
Return

でも、ラベルに半角空白含む名前は使えないらしくエラーになります
Menu, tray, add, TestToggle Check
TestToggle Check: ;<<<<<ここでエラーになる
Menu, tray, ToggleCheck, TestToggle Check
Return

何とかメニュー名に「半角空白」使えませんかね?
「全角空白」では間延びしたような見栄えでちょっとよくないです
無理なら諦めます

178 :名無しさん@お腹いっぱい。:2014/05/17(土) 21:22:07.01 ID:aSpGMjn80.net
A_Space

179 :名無しさん@お腹いっぱい。:2014/05/17(土) 23:08:57.41 ID:CGpqRpBF0.net
>>178
レスありがとうございます
すいません、どうしても分かりません。
間違ってる所を指摘して下さい

Menu, tray, add, TestToggle%A_Space%Check ;<<<<<ここでエラーになる
TestToggle%A_Space%Check:
Menu, tray, ToggleCheck, TestToggle%A_Space%Check
Return

180 :名無しさん@お腹いっぱい。:2014/05/17(土) 23:18:18.07 ID:JvJaXAuL0.net
http://ahkwiki.net/Menu

ちゃんとラベル指定しろ

181 :名無しさん@お腹いっぱい。:2014/05/17(土) 23:47:50.76 ID:CGpqRpBF0.net
>>108
ありがとうございます
解決しました

一応そのwikiのサンプルコード使って格闘してたんですが
そのコードに肝心の「Menu, tray, add, MenuItemName, Label」の例が無く
メニュー名=ラベル名になるものと思い込んでいました

182 :名無しさん@お腹いっぱい。:2014/05/18(日) 14:13:52.93 ID:azfgwDu90.net
MGLスレかどっちか迷ったんだけど、こっちで質問。

キーのリマップスクリプト(ホットキー)を一時的に無効化するのに「Suspend」使うと思うけど、
リマップスクリプトをMGLのプラグインとして使ってると、他プラグインと共にMGLがSuspendしてしまう。

他プラグインとMGLに影響出ないようホットキーのみ一時的に無効化させる方法何か有る?
あ、MGLは再起動させたくないです。

183 :名無しさん@お腹いっぱい。:2014/05/18(日) 14:28:08.85 ID:SkEzxV/c0.net
何らかのキー::
if(flag_hotkey <> 1)
 flag_hotkey = 1
else
 flag_hotkey =
return

#if (flag_hotkey)


ホットキー、
キーリマップ


#if

184 :名無しさん@お腹いっぱい。:2014/05/18(日) 16:02:07.69 ID:azfgwDu90.net
レスサンクス。
でも、パターン(1)の場合、「#If (flag_hotkey)」は無視されてうまく行かない。
で、パターン(2)のようにすれば問題なく動く。
しかし、「#If (flag_c) && (flag_hotkey)」みたいに一つ一つ書いていくのはつらい。
何か簡単な方法ないものか。

flag_hotkey := 0
flag_a := 1, flag_b := 1, flag_c := 1, flag_d := 1
return

;パターン(1)
#If (flag_hotkey)
#If (flag_a)
a::MsgBox, a
#If (flag_b)
b::MsgBox, b
#If

;パターン(2)
#If (flag_c) && (flag_hotkey)
c::MsgBox, c
#If (flag_d) && (flag_hotkey)
d::MsgBox, d
#If

185 :名無しさん@お腹いっぱい。:2014/05/18(日) 16:36:22.04 ID:SkEzxV/c0.net
わかりにくかったかな。例えば以下のようにすると、
ctrl+spaceを押すと#ifで囲まれているホットキーがonになってもう1回押すとoff(サスペンド)
ONOFFスイッチのキーは好きな奴に変えて

^Space::
if(flag_hotkey <> 1)
 flag_hotkey = 1
 ToolTip, HotKeyON, 1710, 0
else
 flag_hotkey =
 ToolTip
return

#if (flag_hotkey)

a::Msgbox, a
b::Msgbox, b
c::Msgbox, c

#if

186 :名無しさん@お腹いっぱい。:2014/05/18(日) 16:44:52.71 ID:SkEzxV/c0.net
ifのところで{}忘れてたわ

187 :名無しさん@お腹いっぱい。:2014/05/18(日) 18:01:12.11 ID:azfgwDu90.net
>>185-186
レスサンクス。
何度も申し訳ない。こっちも質問の仕方が悪かったかもしれない。

とりあえず、flag_hotkeyのフラグ切り替えの方法は理解しました。

問題は>>185の例みたいに、元々のホットキーに条件が付いてない場合はうまくいくが、
#if (flag_hotkey) ;リマップが有効か無効か
a::Msgbox, a
  ・
  ・
>>184のパターン(1)ように元々のホットキーに条件が付いてる場合うまくいかない。
#if (flag_hotkey) ;リマップが有効か無効か
#If (flag_a) ;←元々付いてる条件
a::MsgBox, a
  ・
  ・
>>184のパターン(2)のようにすれば、条件に忠実に動くようになる。
#If (flag_a) && (flag_hotkey)
  ・
  ・
でも、一つ一つ「 && (flag_hotkey)」を付け足していくのはつらい。
一つ一つに「 && (flag_hotkey)」を付け足していくのではなく、何か他に簡単な方法はないか…というのが>>184の質問でした。

#If (flag_a) && (flag_hotkey)←こういう方法しか無いですかね?

188 :名無しさん@お腹いっぱい。:2014/05/18(日) 18:20:09.13 ID:Pm+XAqGi0.net
俺もMGLかこっちか迷ったんだけどこっちで質問

;選択範囲をコピー
Lclickcopy(){
MouseGetPos, x0,y0 ;クリックした時の座標取得
keywait,Lbutton ;離すのを待つ
MouseGetPos, x1,y1 ;クリックを離した時の座標軸
if (x1-x0 > 5 or x1-x0 < -5 or y1-y0 > 5 or y1-y0 < -5){
   clipnow := ClipBoardAll ; save old clipboard
   send,^{c}
   ClipWait 1, 1
   IfEqual ClipBoard,, SetEnv ClipBoard, %clipnow%
return
}
}

こんな関数を作ったんだけどMGLのLbuttonに設定したらエラー吐く。
かといって
~Lbutton::Lclickcopy()

としたらロッカージェスチャのRB_LB__が動いてくれない
八方ふさがりなんだけどどうしよう(´・ω・`)

189 :名無しさん@お腹いっぱい。:2014/05/18(日) 18:25:07.06 ID:azfgwDu90.net
>>187追加
いわゆる「入れ子?」が#ifでは出来ないって言うことなんかな?
なら、#If (flag_a) && (flag_hotkey)←こういう方法しか無いみたいね。
元々の考えを改めて別の方法捜してみるわ。

>>185-186
お騒がせしました、あありがとう。

190 :名無しさん@お腹いっぱい。:2014/05/18(日) 20:07:10.13 ID:TWeApKh00.net
>>188
スレチ、専用スレにエラー内容とサンプルコードを書こう

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
http://anago.2ch.net/test/read.cgi/software/1384313234/

191 :名無しさん@お腹いっぱい。:2014/05/18(日) 20:40:52.59 ID:PE4IKbR20.net
せっかく専スレあるんだからあっち使ってあげなよ

192 :名無しさん@お腹いっぱい。:2014/05/18(日) 21:05:27.57 ID:SkEzxV/c0.net
>>189
あーそういうことか。
だったら&&で繋げるくらいしかないかな。

代替案としてはサスペンドしたいホットキーだけで別にahkスクリプト作って独立させて
その作ったスクリプトを起動、終了するホットキーを今まで使ってた本体ahkに登録すればいいかもしれない
ホットキーを有効にしたいなら別ahkを起動、サスペンドしたいなら別ahk終了、みたいな感じで

193 :名無しさん@お腹いっぱい。:2014/05/19(月) 22:24:30.27 ID:V/Tl4jcX0.net
hoge = 1*2/3
このように変数の中に式が文字列で格納されてるのを計算するにはどうやるの?
このあと
:= hoge + 1
などと計算しようとしてもエラーになる

194 :名無しさん@お腹いっぱい。:2014/05/19(月) 22:44:36.11 ID:zMJa+VtB0.net
式のように見えて単なる文字列なんで、
「文字列を数式として評価(計算)する」機能はAHKにはない
(なので、文字に数字を足しても計算できないので空白になる)

とはいえ、どうにかする方法は一時ファイルに書き出して実行して結果を得るとか
色々あるけど、面倒なのでその手のが得意なやつにやらせてしまうのが楽


; example
exp = 1*2/3

oScr := ComObjCreate("ScriptControl")
oScr.Language := "JScript"
MsgBox, % exp " = " oScr.Eval(exp)

※ x64だと ScriptControl が無いので、32ビット版(U32かA32)で動かすか、
互換ライブラリ(↓)を使う
http://www.eonet.ne.jp/~gakana/tablacus/scriptcontrol.html?0020

195 :名無しさん@お腹いっぱい。:2014/05/19(月) 22:59:11.75 ID:V/Tl4jcX0.net
>>194
なるほど
単純にはできないんだね
参考になりました、ありがとう

196 :名無しさん@お腹いっぱい。:2014/05/19(月) 23:40:26.01 ID:f7U+9ja50.net
>>195
hoge = 1*2/3 でなくて hoge := 1*2/3 したら計算できたけど、
こういうことじゃないってんなら無視して構わないよ。

hoge := 1*2/3
hige := hoge + 1
MsgBox, % hige

197 :名無しさん@お腹いっぱい。:2014/05/19(月) 23:56:53.27 ID:V/Tl4jcX0.net
入力した計算式を取得してそれを元に処理したかったんだ
言葉足らずでごめん

198 :名無しさん@お腹いっぱい。:2014/05/20(火) 15:48:49.63 ID:NvK9Yjv50.net
AutoHotkeyで作ったGUIの座標っておかしくない?
たとえばx0 y0 に表示させるとすると縁が画面外にめり込んでズレる
たぶん5pxくらい

199 :名無しさん@お腹いっぱい。:2014/05/20(火) 16:15:59.92 ID:bG70dH5O0.net
MGLってLボタンは使えないんですか?
MGLのスレがないのでこっちで聞きます

200 :名無しさん@お腹いっぱい。:2014/05/20(火) 16:19:36.72 ID:z1IwXtgy0.net
>>198
自動で入るマージン計算に入れてる?

>>199
>>190

201 :名無しさん@お腹いっぱい。:2014/05/20(火) 16:58:07.77 ID:kBoGdOU20.net
>>198
タイトルバーと枠線はOSが自動で追加するのでその分ずれる。
設定やOS毎に幅が違うので取得したいならAPI関数使えばいい。
消したいならウィンドウスタイルで指定。

202 :名無しさん@お腹いっぱい。:2014/05/20(火) 17:28:08.11 ID:NvK9Yjv50.net
>>201
よくわからないのがGui, +Resizeを設定するとx0 y0が画面のワークエリアぴったりの位置になる
でもリサイズできても空白領域が広がるだけで意味ないからあんまりこのオプションは使いたくないね

203 :名無しさん@お腹いっぱい。:2014/05/21(水) 02:02:47.02 ID:/61jWspK0.net
dbg(msg)
{
 ; (なければ)デバッグ表示用のメモ帳を開く
 IfWinNotExist AHK_DEBUG ahk_class Notepad
 {
  Run,notepad
  WinWaitActive,無題 - メモ帳
  WinSetTitle,AHK_DEBUG
 }

 ; 頭に時刻をつけてデバッグ文字列を表示して改行
 ControlSend,,[%A_Now%] %msg%{Enter},AHK_DEBUG ahk_class Notepad
}

a=hello,world
b:=3*10
s=%a% %b%
dbg(s)

標準のMsgBox, OutputDebug, ListVarsは使いづらいので
デバッグ表示用の関数作ってみたんですが表示が遅いのでもうちょっとマシな方法ないですか?

あと
s=%a% %b%
dbg(s)
を1行にまとめて書く方法あったら教えて下さい

204 :名無しさん@お腹いっぱい。:2014/05/21(水) 02:52:14.03 ID:8LoC4Vj00.net
>>203
ControlSendではなくControlSetTextを使おう

あと、メモ帳である必要がなければGUI作ってそこへ表示すればいいんじゃないか?
a=hello,world
b:=3*10
dbg(a " " b)
Return

DbgWndGuiClose:
ExitApp

dbg(msg)
{
Gui, DbgWnd:Font, s9, Verdana
Gui, DbgWnd:Add, Edit, w500 h500, [%A_Now%] %msg%`n
Gui, DbgWnd:Show
}

205 :名無しさん@お腹いっぱい。:2014/05/21(水) 15:24:21.65 ID:z4LrqQp40.net
XPのときに、
SoundSet, +1, , mute
で、音量をミュートしてましたが、Wn7になってから
このコマンドが使えなくなりました
やりたいことは、オンオフです。ボリュームの大きさ調整はしなくてもいいです。
Win7ではどうやればいいのでしょうか

206 :名無しさん@お腹いっぱい。:2014/05/21(水) 15:26:16.65 ID:hJN+7GyD0.net
SoundSet, +1, , MUTEでできるぞ
AHKのバージョン古いんじゃね?

207 :名無しさん@お腹いっぱい。:2014/05/21(水) 15:28:03.92 ID:y04FouMZ0.net
SendでMuteキーを送る

208 :名無しさん@お腹いっぱい。:2014/05/21(水) 15:40:10.26 ID:z4LrqQp40.net
あれ?ほんとだ。今は出来ますねえ。なんでだろ。この前はできなくてネットずっと探してわからなくて
わざわざ音量ミキサースピーカーのウインドウを立ち上げてそこのミュートボタンを押すみたいなのを作ってやってたのですが
おかしいなあ、すいませんでした

209 :名無しさん@お腹いっぱい。:2014/05/21(水) 15:52:47.40 ID:j6XGKG9I0.net
>>208
1.1.10.00 - 2013/05/11
Sound系がWindows Vista以降対応に。

210 :名無しさん@お腹いっぱい。:2014/05/26(月) 12:18:59.15 ID:ur2/Ox3V1
obj[1] := "はげ"
obj[2] := "ひげ"
obj[3] := "ほげ"
(obj[n]には重複する文字列は存在しません・・・というか、重複してobj.Insert()しないよう調べたいのです)

とある時、obj[n]に「ひげ」という文字列が存在するか調べる場合、Loop使うしかないんでしょうか?

Loop, % obj.maxindex()
{
 if (obj[A_Index] = "ひげ") {
  MsgBox, % A_Index " : " obj[A_Index]
  break
 }
}

Instr()のように簡単に調べる方法はありませんか?

211 :名無しさん@お腹いっぱい。:2014/05/26(月) 21:26:12.14 ID:91mT5Uy+0.net
WinGetClass, class, ahk_id %id%
if(class=AAA)

と記述しているんですがif条件が無視されてしまいます
ただ
if class=AAA
と記述すればきちんと判定されます。なぜでしょうか?

212 :名無しさん@お腹いっぱい。:2014/05/26(月) 21:39:28.04 ID:PRlPgk090.net
() 内は式。よって変数「AAA」を参照してるとみなされる

213 :名無しさん@お腹いっぱい。:2014/05/26(月) 21:58:35.64 ID:C4jZ9RV30.net
if(class="AAA")
にすれば下のと同じになる

214 :名無しさん@お腹いっぱい。:2014/05/26(月) 22:28:39.57 ID:91mT5Uy+0.net
>>213
>>213
なるほど 動きました ありがとうございます

215 :名無しさん@お腹いっぱい。:2014/05/26(月) 22:33:14.62 ID:z/ALe+hr0.net
A_ScriptDirはあるのにA_AhkDirがないのが解せぬ
初手SplitPath,A_AhkPath,,AhkDirは基本だよね

216 :名無しさん@お腹いっぱい。:2014/05/26(月) 22:41:08.44 ID:hRrkDBrq0.net
本体の位置が必要になるケースが俺の使い方では思い付かない

217 :名無しさん@お腹いっぱい。:2014/05/26(月) 23:21:06.11 ID:ur2/Ox3V1
すいません>>210なんですが、スルーされそうなんで…
やっぱLoopしか方法無いですかね?

218 :名無しさん@お腹いっぱい。:2014/05/26(月) 23:31:42.58 ID:HQvYke6p0.net
A_ScriptDirのA_って何を意味しているの?

219 :名無しさん@お腹いっぱい。:2014/05/27(火) 01:47:54.09 ID:rq2H6XpE0.net
absoluteじゃね

220 :名無しさん@お腹いっぱい。:2014/05/27(火) 02:59:39.42 ID:i8kJDEsw0.net
さあA_IndexのAは何だ, ハイ制限時間10秒!!

221 :名無しさん@お腹いっぱい。:2014/05/27(火) 07:11:29.71 ID:/4hDlkvI0.net
AHKのAだと思ってたわwww

222 :名無しさん@お腹いっぱい。:2014/05/27(火) 07:45:23.06 ID:UvHXQbqs0.net
aliasのAだよ

223 :名無しさん@お腹いっぱい。:2014/05/27(火) 08:07:18.56 ID:68Zxob4m0.net
とりあえず区別するためにアルファベットの最初の奴をくっつけただけかと思ってた

224 :名無しさん@お腹いっぱい。:2014/05/27(火) 17:32:37.32 ID:IYggx+7w0.net
冠詞やろ

225 :名無しさん@お腹いっぱい。:2014/05/27(火) 21:20:10.71 ID:EcAVH/Sn0.net
新2chの方に書き込んでたんですが、何故か回答貰えなくて変だなと思ってたら、こっちに反映しないんですね
ですんで再投稿します

obj[1] := "はげ"
obj[2] := "ひげ"
obj[3] := "ほげ"
(obj[n]には重複する文字列は存在しません・・・というか、重複してobj.Insert()しないよう調べたいのです)

とある時、obj[n]に「ひげ」という文字列が存在するか調べる場合、Loop使うしかないんでしょうか?

Loop, % obj.maxindex()
{
 if (obj[A_Index] = "ひげ") {
  MsgBox, % A_Index " : " obj[A_Index]
  break
 }
}

Instr()のように簡単に調べる方法はありませんか?

226 :名無しさん@お腹いっぱい。:2014/05/27(火) 23:43:09.66 ID:rq2H6XpE0.net
whileやuntilを使えばもう少し短くはなるかもしれない

227 :名無しさん@お腹いっぱい。:2014/05/28(水) 00:28:42.04 ID:yelzKzOU0.net
>>226.
なるほど・・・いずれにせよループ系コマンドで回すしかないんですね

即答ありがとうございました

228 :名無しさん@お腹いっぱい。:2014/05/28(水) 14:46:53.55 ID:KsU7hY/A0.net
^c::の処理中に元々のコピー(Send, ^c)をしたいのですが、そのままだと無限ループになります。
元のキーを実行させる方法はあるでしょうか?

229 :名無しさん@お腹いっぱい。:2014/05/28(水) 15:13:01.94 ID:0rAiDsKY0.net
フック使うか、Hotkeyコマンドでsendの直前だけoffにするか かな


あたしにゃフックてのが何なのかさっぱりわからんのだけど
とりあえずなんでもかんでもフックにしといて平気なのかな?
フック使わないほうがいい場合もあるんですかね?

230 :名無しさん@お腹いっぱい。:2014/05/28(水) 15:55:25.76 ID:kKQMem1g0.net
$^c::

231 :名無しさん@お腹いっぱい。:2014/05/28(水) 20:15:34.42 ID:WN9D9c2W0.net
>>229
ソフトウェアで送られたキー操作にホットキーが反応するかしないか。
Sendやマウスの付属ツールでのキー操作(ホットキーではなく、KeyWait系の押し下げ上げ判定)に影響が出る場合がある。
ゲームのチート対策でAPIやRegisterHotkey()を使用したら落とされるときの回避策。

判定以外はONでもOFFでも特に変わらない誤差範囲。

232 :名無しさん@お腹いっぱい。:2014/05/29(木) 21:26:58.89 ID:s80OioIM0.net
もしプログラムが無限ループに入ったとき、ブレークする方法ってありますか
これから失敗したらそうなる可能性のあるソフトを作ろうとしているので事前に知っておきたいです

233 :名無しさん@お腹いっぱい。:2014/05/29(木) 22:47:49.94 ID:69eCw+Qf0.net
>>232
Pause ExitApp を任意のホットキーに割り当て

234 :名無しさん@お腹いっぱい。:2014/05/30(金) 00:13:00.48 ID:zNFHzVCK0.net
とりあえずタスクマネージャさえ起動できればなんとかなる

235 :230:2014/05/30(金) 02:33:22.28 ID:hCwc3jJY0.net
AutoHotKeyに最初からビルトインされている方法はないのですね
どっかのキーにブレイクアプリを作って割り当てるしかないのか
タスクマネージャを使うのならkillのバッチファイルを作って落とす方が楽かもね

236 :名無しさん@お腹いっぱい。:2014/05/30(金) 02:41:08.52 ID:hCwc3jJY0.net
今なにげなく、右下のタスクトレイにあるアイコンを右クリックしたら
PauseScriptってのがあったのですが、これをクリックしたら止まりませんか
無限ループになってしまったらそもそもこのアイコンを右クリックもできないくらい
暴走してしまうのかな。でも多分インタープリタで動いてると思うので(コンパイルしてない)
必ずイベント取り込みが入れば大丈夫な気もするのですが

237 :名無しさん@お腹いっぱい。:2014/05/30(金) 02:51:24.59 ID:MJHoHr6q0.net
正直やってみるのが一番早いと思う。
んでおかしかったらPCごと再起動でいいじゃん

238 :名無しさん@お腹いっぱい。:2014/05/30(金) 02:53:45.17 ID:hCwc3jJY0.net
ああ、そもそもタスクトレイのアイコンを右クリックできるのなら、そのままEXITも出来るはずですよね
AutoHotKeyは疑似スレッドで動いてるという話なので出来るんじゃないかな?

239 :名無しさん@お腹いっぱい。:2014/05/30(金) 02:55:06.17 ID:hCwc3jJY0.net
>>237
ですねえ。でもなんか再起動するの抵抗あったので多分みんな一度や二度は経験してるだろうと
思って聞いてみました

240 :名無しさん@お腹いっぱい。:2014/05/30(金) 03:30:45.70 ID:nLYmYOfF0.net
Gui, Add, Text, ,フォルダ
Gui, Add, Edit
Gui,Show

↑のようなスクリプトを書いてGUIを表示させた時
Gui,Add,Textで表示させるテキストに「フォルダ」や「パス」などの単語が含まれてると
GUIを表示させるたびにシステム警告音が鳴ってしまうので
(テキスト内容を変更せず)音が鳴らないようにしたいのですがどうすればよいでしょうか?

また、音が鳴ってしまう原因等の情報も教えていただけるとありがたいです

241 :名無しさん@お腹いっぱい。:2014/05/30(金) 03:45:55.68 ID:XHZOvMQ+0.net
>>240
環境とテスト用のスクリプトを丸ごと書こう。

242 :名無しさん@お腹いっぱい。:2014/05/30(金) 07:29:42.71 ID:nLYmYOfF0.net
>>241
OS:WinXP SP3(32bit)
AutoHotkey本体ver:1.1.14.4

スクリプトは上記の3行のみです

243 :名無しさん@お腹いっぱい。:2014/05/30(金) 09:13:25.24 ID:zNFHzVCK0.net
>>239
ただの無限ループくらいならタスクトレイからpauseもexitもできるよ
タスクマネージャ云々書いたのはフックやホットキー使ってるスクリプトだと
下手うつとマウスやキーボードでの操作を一切受け付けなくなるようなものも作れちゃうから

244 :名無しさん@お腹いっぱい。:2014/05/30(金) 13:17:56.85 ID:VioecT/s0.net
>>243
マウスやキーボードでの操作を一切受け付けなくなったらタスクマネージャも使えなくなるんじゃない?

245 :名無しさん@お腹いっぱい。:2014/05/30(金) 14:36:48.55 ID:4bJzliOx0.net
例えば
blockinput, on
msgbox, test
blockinput, off
と書いたスクリプトを実行すると2行目で止まってインプットデバイス(キーボードやマウス)
の操作を受け付けなくなるけど、ctrl+alt+del だけは効くので
XPならタスクマネージャーが起動して操作を受け付けるようになる。
Win7ならルートメニュー画面が開くけど、そこで2回クリックすると反応するようになる。

但し、上記以外でマウスやキーボードの一部キー(ボタン)が押されっぱなしになっていると
一部ウィンドウで操作を受け付けなくなったりするので
uwscでキーコードの1〜511(実際は255まででいいけど念のため511まで)の
どれかが押しっぱなしになってたらupを3回送る。
更にそれを3回ループするようにしてるけどこれで殆ど回復する。
これをマウスジェスチャーとランチャーのどちらでも実行出来るようにしておくと
マウスorキーボードのどちらかの操作しか効かない場合に助かる。
それでも極稀に回復しない場合があるのでそのときはWindowsの再起動。
uwscで回復させている理由は、ahkで似たようなものを作ってたんだけどそれで回復しないことがあり、
試しにuwscのを実行したら回復したので今でも使ってる。
ahkをやり始めた頃に作ったので欠陥があった可能性が高いと思うけど。

246 :名無しさん@お腹いっぱい。:2014/05/30(金) 14:46:32.30 ID:zNFHzVCK0.net
両方いっぺんにやっちゃったらアウトかもね

マウスあぼーんでキーボードのみ効くとか、逆の場合とか
Ctrl+Alt+Del だけは効くパターンとが
Busyでむちゃくちゃ反応鈍くなってるがけど一応はキー拾ってるパターンとか
色々やったけど大抵は多少の救いはあるもんだ

247 :名無しさん@お腹いっぱい。:2014/05/30(金) 14:48:03.52 ID:zNFHzVCK0.net
リロってなかった
244は>242へのレス

248 :名無しさん@お腹いっぱい。:2014/05/30(金) 18:37:22.34 ID:XHZOvMQ+0.net
>>242
仮想環境のXPで確認してみたが問題なし再現しない。
スクリプトの多重起動時の ポップアップ+音 の事ではないのなら。
AHKの問題ではなく他のアプリ(セキュリティーソフト系)が特定のワードに反応してるのかも?
セーフモードでテストしてみよう、それで問題が無いなら原因はその他のアプリ。

※XPはサポート終了、OSの更新はお早めに

249 :名無しさん@お腹いっぱい。:2014/05/30(金) 20:15:21.03 ID:kafBKRTB0.net
マウスジェスチャ系のツールやらマウスユーティリティやらAHKやらを組み合わせて使ってるせいで
謎のタイミングでCtrl,Alt,Shift,Winが押しっぱなしになるから困る

250 :名無しさん@お腹いっぱい。:2014/05/30(金) 23:34:02.11 ID:MJHoHr6q0.net
MGLにプラグインって形で機能追加することで俺は回避した

251 :182:2014/06/01(日) 00:29:22.51 ID:0S/bsvos0.net
MGLのプラグインとして導入してるリマップの有効/無効について一応自己解決した

最終的に初期の頃考えた構想は一部諦めて、
リマップ用スクリプトを別の拡張子に変更(*.ahk ←→ *.bak)
   ↓
MGLを再起動する
という方式で落ち着いた

ま、力技ではあるけど、自分の場合これが一番無難な方法であった

252 :名無しさん@お腹いっぱい。:2014/06/01(日) 01:28:05.90 ID:XQBiFMGa0.net
そこまでしてプラグイン方式にこだわる意味がわからない
再起動してるところをみると情報や変数を他のスクリプトと共有してるから仕方なくとかじゃないっぽいし

253 :名無しさん@お腹いっぱい。:2014/06/01(日) 08:56:03.98 ID:hc3CB1nM0.net
マウスカーソルの位置にある(ウィンドウではなく)コントロールを
アクティブにするにはどうすればいいですか?

今は
MouseGetPos,x,y,h,cしてcの文字列で分岐して
Send,{LButton}かSend,{RButton}{ESC}の害の少ない方を送るという
強引なことをやってます

254 :名無しさん@お腹いっぱい。:2014/06/01(日) 10:01:41.32 ID:QKd5DLSy0.net
ControlFocus
ウィンドウもアクティブにしたいなら ついでに WinActivate

255 :名無しさん@お腹いっぱい。:2014/06/01(日) 14:00:13.84 ID:hc3CB1nM0.net
ありがとうございます
うまくいきました

256 :名無しさん@お腹いっぱい。:2014/06/01(日) 16:56:22.00 ID:XSDCSJFg0.net
下記動画再生プレイヤーでホイールシークに左右キーを割り当ててシークをしたいと思っています
http://www.mirillis.jp/products/splashpro

とりあえず実験で
WheelUp::left
WheelDown::right
としましたがメモ帳ではホイールでカーソルが左右に動いてくれましたが、
動画プレイヤーではシークしてくれませんでした
どのようにしたいいのでしょうか?

環境
v1.1.15.00 Unicode 64-bit
Windows8.1 x64

257 :名無しさん@お腹いっぱい。:2014/06/01(日) 17:26:36.29 ID:r7tPwiYG0.net
>>256
とりあえずそれの試用版インストールして適当な動画再生してみた
シークってのが←→キーで10秒戻ったり進んだりするやつのことなら
WheelUp::Send, {Left}
WheelDown::Send, {Right}
で動いた(Win8.1でも動くかは知らん)

258 :名無しさん@お腹いっぱい。:2014/06/01(日) 18:23:08.88 ID:XSDCSJFg0.net
>>257
教えていただいた方法で無事希望通り動作しました
ありがとうございます

259 :名無しさん@お腹いっぱい。:2014/06/02(月) 12:27:36.79 ID:RprmV8ap0.net
Gui, Add, Button, x0 y0 w50 h20 gSelect_window, ボタン 1
Gui, Add, Button, x50 y0 w50 h20 gSelect_window, ボタン 2
Gui, Add, Button, x100 y0 w50 h20 gSelect_window, ボタン 3
ボタン3つ作った後で一つ(例えば、「ボタン 3」)を削除したいのですが、やり方が分かりません。

個別削除は無理ですか?
Gui,Destroyして作り直すしかないんですか?

260 :名無しさん@お腹いっぱい。:2014/06/02(月) 12:33:58.02 ID:RprmV8ap0.net
>>259
3つのボタンで同じ「gSelect_window」になってますが気にしないで(無視して)下さい、コピペミスです。
質問内容と直接関係ありません。

261 :名無しさん@お腹いっぱい。:2014/06/02(月) 13:46:53.82 ID:km1ZIfWL0.net
完全に消す方法はないんじゃね
GuiControl,Hide で非表示にするか、Disable にするか

262 :名無しさん@お腹いっぱい。:2014/06/02(月) 17:33:06.06 ID:mLpx6fF70.net
常駐でIMEを10秒経ったら自動でオフにしたいのですがうまくいきません。
どこがおかしいか教えて下さい。

#include IME.ahk
#persistent
settimer,getIMEMode,10000
return

getIMEMode := IME_Get()
if (%getIMEMode% = 1) ;IMEオンの時
{
IME_SET(0) ;IMEオフ
return
}

263 :名無しさん@お腹いっぱい。:2014/06/02(月) 18:03:34.81 ID:AgiohG9a0.net
>>262
どううまくいかないのか書いてないけど、それコピペミスじゃなければ
settimerで設定したサブルーチンのラベルないよね?
あとIMEオンならIMEオフにするってのは、
if IME_Get() ;IMEオンの時
IME_SET(0) ;IMEオフ
の2行だけでいいんじゃない?

getIMEModeラベルに上の2行を指定でとりあえず動くけど、
そのままだとIMEオンになったタイミングによってはすぐオフにされるよ。
10秒間隔で回ってるタイマーの9秒目とかにオンになったときとかw
だからオンを検出してから10秒経過でオフにするとかにしたほうがよさげ。

264 :名無しさん@お腹いっぱい。:2014/06/02(月) 19:08:45.06 ID:mLpx6fF70.net
ありがとうございます
まだラベルの理解ができていないので調べてみます
オン検出してからですね、わかりました。

265 :名無しさん@お腹いっぱい。:2014/06/02(月) 19:56:17.59 ID:RprmV8ap0.net
>>261
どうもありがとう。
完全に消す方法はないんですね。
Gui,Destroyをそのまま使っていきます。

266 :名無しさん@お腹いっぱい。:2014/06/05(木) 00:24:26.94 ID:0xkVI64d0.net
かざぐるマウスに最前面化したウィンドウの境界部分を赤くする機能があるんですが
AHKでそれと似たようなことってできないですかね?最前面化で使うというより、
特定のアプリで特定のフラグが立っている時に境界部分を赤くする、という用途を考えているんですが。

267 :名無しさん@お腹いっぱい。:2014/06/05(木) 00:30:55.53 ID:a5G3t2960.net
一応できるな

268 :名無しさん@お腹いっぱい。:2014/06/05(木) 01:16:53.59 ID:a3gkmy250.net
>>266
http://ux.getuploader.com/autohotkeyl/download/35/AltKGM13.zip

269 :名無しさん@お腹いっぱい。:2014/06/05(木) 01:42:16.20 ID:0xkVI64d0.net
できるみたいですね
>>268
これをincludeして使うとしたらどう設定したらいいんでしょうか?
単純に自分が使っているAHKスクリプトのあるフォルダにAltKGM.ahkを置いて
#include AltKGM.ahkと書き込んでみましたがスクリプトエラーはでませんが
AltKGM.ahkが機能しませんでした。

270 :名無しさん@お腹いっぱい。:2014/06/05(木) 05:54:00.29 ID:QAt3VVhP0.net
vk1Dsc07B & F1:: msgbox,0x40,俺的メモ,
(
msgbox,ヒアドキュメント使って簡易ヘルプ仕込んでおくと
AutoHotKeyで何設定したか覚えやすい
)

271 :名無しさん@お腹いっぱい。:2014/06/05(木) 08:25:56.28 ID:CeUvIhW50.net
MGL用プラグインぽいからあっちのスレで聞いたら?
ソース丸ごと貰った挙句組込み方法まで教えろってのは随分というか
個人的には見てわかんないなら諦めろって言いたいところだが

272 :名無しさん@お腹いっぱい。:2014/06/06(金) 20:12:56.15 ID:itte/Xjr0.net
AutoHotKey Wikiのサンプルコード集から
「キー連射スクリプト」を少し改変して使っているのだが、
LButton押下中にマウスを動かすとカクカクになってしまうのは何故だ

誰かヌルヌル動かせる方法教えてくれないか?

273 :名無しさん@お腹いっぱい。:2014/06/06(金) 20:17:15.49 ID:itte/Xjr0.net
>>272の補足
>LButton押下中にマウスを動かすとカクカクになってしまうのは何故だ
カクカクになるのは視点の話であって、コンピューターの性能が足りないとかそういう
話ではない。
なんだかマウス操作がぶつ切りになってしまう、という意味だ。

274 :名無しさん@お腹いっぱい。:2014/06/06(金) 23:28:01.22 ID:eE0iOQ8E0.net
>>273
質問なら、まともな口調で書けよ。

コマンド一行ずつ見ればすぐ分かる。
意味が分からないならリファレンスから出直し。

275 :名無しさん@お腹いっぱい。:2014/06/07(土) 00:45:13.32 ID:POaMxnSa0.net
そういう意味じゃない。他の連射ツールも試してみたがやはりマウスの動きが
制限されたようになってしまう。なぜだろう

276 :名無しさん@お腹いっぱい。:2014/06/07(土) 01:02:07.98 ID:BNi7141t0.net
ダメだコイツw
つかそういう意味じゃないの意味がわからなさ過ぎてちょっとおもろい

277 :名無しさん@お腹いっぱい。:2014/06/07(土) 01:46:47.20 ID:o1I099nT0.net
BlockInput使ってるからだろ

278 :名無しさん@お腹いっぱい。:2014/06/07(土) 10:25:11.01 ID:I5X3ix+N0.net
不思議がるほど不可解な挙動じゃないし
むしろマウス連打エミュレートの真っ最中にまともにマウス操作できるとなぜ思えるのか
コピペするだけでコード全然読んでないんだろうな

279 :名無しさん@お腹いっぱい。:2014/06/07(土) 11:22:24.26 ID:Nam7l4vx0.net
まともな口調で質問もできない時点でお察し

280 :名無しさん@お腹いっぱい。:2014/06/07(土) 11:54:58.47 ID:oolvbnkE0.net
マウスのクリック音がうるさいのでキーボードで左クリック代用しようかと想うんだけどどのキーを使うのが良かろうか
マウスでポインタ移動してそのキーでクリックって感じなんだが、Ctrl+Spaceなんて良さそうだけど空いてないしなぁ

281 :名無しさん@お腹いっぱい。:2014/06/07(土) 12:09:00.66 ID:dSj9EjvP0.net
意地悪抜きでマウス買った方がいいんじゃないか

282 :名無しさん@お腹いっぱい。:2014/06/07(土) 12:26:28.71 ID:YXjqnu4X0.net
>>280
Wikiのサンプルコード集にある、キーボードでマウス操作を流用すれば?カーソル移動もできるし
自分好みのキーに入れ替えればいいだけ。自分の設定は、無変換+ESDFで移動、無変換+WRで左右クリック
あくまでも代用だけどな。俺の場合はほぼこれで済ませられるようなシンプルなゲーム用w

283 :名無しさん@お腹いっぱい。:2014/06/07(土) 12:33:00.43 ID:oolvbnkE0.net
??
いやマウスは持ってるし結局使うんだけども

まぁここで喜久子とじゃなかったか。スマソ

284 :名無しさん@お腹いっぱい。:2014/06/07(土) 12:38:53.32 ID:+f6SHj9w0.net
俺もマウスを買い替えて音のしない(小さい)のにしたほうがいいと思う
マウスクリック音がうるさいような環境だと、キークリック音も十分やかましく感じる

それにマウス左クリックみたいな重要キーはAHKで設定しなおしても、さすがに不具合が出るような気がするわ
CTRL+spaceが空いていたとしても、CTRL+左クリックはどうするの?って話になるしね。

285 :270,271,273:2014/06/07(土) 12:50:21.15 ID:zUjr+48v0.net
確かに使い始めてまだ数時間だしリファレンスもまともに読んでないし
コマンドも幾つか参照したがこれだというのもいまいちわからない
BlockInputは下のルーチン丸ごと消してるので動作には関わってきていないな

まともな口調?つまり韓国人かなんかだと?そもそも2chROM専なのでと
赤面して反論してみるが意味は無いだろうな

どっちにしても連写中は操作できそうもないってことはわかった、ありがとうおまいら

286 :名無しさん@お腹いっぱい。:2014/06/07(土) 13:05:05.17 ID:oolvbnkE0.net
質問と相談では立場が違ってくるとは思いません鐘?みなさん

287 :270,271,273,283:2014/06/07(土) 14:26:56.60 ID:zUjr+48v0.net
原因がはっきりとわかったので追記しておく。
Send,{LButton} / MouseClick LEFT / Click LEFT はいずれも
Click left mouse button at mouse cursor's current positionという
制限があるのでマウス操作がぶつ切りになってしまう。
場所に関わらずただ単にクリックだけしてくれるコマンドがあったらいいのに・・。

288 :名無しさん@お腹いっぱい。:2014/06/07(土) 15:14:34.21 ID:kAJYRdk20.net
ここまでめんどくさいやつは久々だな

289 :名無しさん@お腹いっぱい。:2014/06/07(土) 15:17:23.72 ID:alo76Jod0.net
至高の連打ツールを探してすでに旅立っただろうからもういいじゃんw

290 :名無しさん@お腹いっぱい。:2014/06/07(土) 15:45:37.56 ID:o1I099nT0.net
クリックつったら普通はクリックそのままの動作だっつの
お望みのコマンドもあるけどね、ものを聞く態度以前に質問じゃないみたいだから答えないけど


マウス代替はPhotoShop限定で無変換にLbutton割り当て、左親指操作にしてる
音防止目的じゃなくあくまでクリック時の衝撃よけ
片手でドラッグ多用すると腱鞘炎ぽくなるので右手(カーソル移動)と分業にしたら楽になったわ
ペンタブも試したがいまいち性に合わなかった

291 :名無しさん@お腹いっぱい。:2014/06/07(土) 16:09:15.31 ID:PJqgS/hj0.net
>>290
教えて下さいお願いしますm(__)m

292 :名無しさん@お腹いっぱい。:2014/06/07(土) 19:24:19.34 ID:Glw9Qub90.net
>>290
マウスふたつ使えばいいんじゃない?

293 :名無しさん@お腹いっぱい。:2014/06/07(土) 19:34:43.76 ID:oolvbnkE0.net
>>290
音防止でいいこと思い付いたぞ
奥歯にスイッチ埋め込むんだ

294 :名無しさん@お腹いっぱい。:2014/06/07(土) 19:45:16.38 ID:+f6SHj9w0.net
奥歯にスイッチ入れてると加速装置がオンになってコントロールし辛くないか?

295 :名無しさん@お腹いっぱい。:2014/06/07(土) 20:40:52.57 ID:o1I099nT0.net
>>292
M570とrollermouseで一応2台繋いでる
でもクリック衝撃を押さえるにはキーボードのほうが向いてるね
マウスのカチカチだと分業にしても連打時に辛くなっちゃって

>>291
別人だと思うがリファレンスを click で検索

296 :名無しさん@お腹いっぱい。:2014/06/08(日) 00:07:18.90 ID:j/juIH060.net
画像検索でヒットした座標から10ピクセル横をクリックするってどうやればいいのでしょうか?
変数のX座標から10とか20を引いた座標をクリックしたいのですが、、おしえてください。

ImageSearch, JcommentX, JcommentY, 0, 500, 1920, 1080, C:\AutoHotkey_L\imageSearch\Jcommentbutton.bmp
if ErrorLevel = 2
MsgBox Could not conduct the search.
else if ErrorLevel = 1
MsgBox sorry.could not find a image.
else
Click, L, , %JcomemntX%, %JcommentY%

297 :名無しさん@お腹いっぱい。:2014/06/08(日) 00:27:51.05 ID:FofsUrnZ0.net
JcommentX-20
でいいんじゃない?

298 :名無しさん@お腹いっぱい。:2014/06/08(日) 00:44:42.44 ID:n1B8yA7D0.net
>>296
式の理解が足りないのかと。
ttp://ahkwiki.net/Expression

各コマンドの引数の最初に「% 」とすると式になる。
MsgBox, % 1+2+3, 引数2, 引数3.....

299 :名無しさん@お腹いっぱい。:2014/06/08(日) 00:46:58.63 ID:j/juIH060.net
>>297
だめだー。エラーも出ない代わりにカーソルもうごかない。%つけないとだめかな。

>>298
理解足りないとおもいます。
ためしに%空白を頭につけてみたけど、だめだ。リンク先読みます。

300 :名無しさん@お腹いっぱい。:2014/06/08(日) 03:14:48.22 ID:/5QXBU8h0.net
>>299
多分Clickは座標を式で指定できない
MouseClickを使えばいいよ
MouseClick, L, JcommentX-20, JcommentY

301 :名無しさん@お腹いっぱい。:2014/06/08(日) 08:21:15.46 ID:n1B8yA7D0.net
>>299
>>300
適当な事書いてしまったようで申し訳ない。
Clickは仕様が特殊で ,で区切ってもまとめて引数1つとして認識するようだ。

公式ドキュメント - Click %x% %y%
Since click does not support expressions, variables should be enclosed in percent signs.
訳:式は使えない、%で囲む必要有り。

こうすれば式に出来る・・・がオススメできないなw
Click, % "RIGHT," hoge + 50 ",505"

302 :名無しさん@お腹いっぱい。:2014/06/08(日) 13:29:07.63 ID:xHt781st0.net
以下のウィンドウ指定たちをandでひとまとめにしたいんですけどどう書けばいいんでしょうか
#ifWinActive, - foobar2000$ ahk_class \{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8\}
#ifWinActive, (Album List|Playlist Manager|Playlist Search( \(\d+ results\))?) ahk_class \{483DF8E3-09E3-40d2-BEB8-67284CE3559F\}
#ifWinActive, (Properties( \(\d+ items\))? - |Edit Value : |Automatically Fill Values|Preferences: ) ahk_class #32770

単純に#ifWinActive, 以降のものをand でくっつけても反応してくれませんでした

303 :名無しさん@お腹いっぱい。:2014/06/08(日) 13:30:32.27 ID:xHt781st0.net
すみません、andじゃなくてorです
よろしくお願いしますm(_ _)m

304 :名無しさん@お腹いっぱい。:2014/06/08(日) 13:48:03.67 ID:/5QXBU8h0.net
>>302-301 #IfとWinActive()で指定はどう?

#IfWinActive ahk_exe notepad.exe
F1::msgbox
#IfWinActive ahk_exe calc.exe
F1::msgbox
#IfWinActive

#If WinActive("ahk_exe sakura.exe") OR WinActive("ahk_exe Everything.exe")
F1::msgbox
#If

305 :名無しさん@お腹いっぱい。:2014/06/08(日) 13:49:47.78 ID:/5QXBU8h0.net
ごめんsakura.exeとEverything.exeはコピペミスw
notepad.exeとcalc.exeに読み替えてください

306 :名無しさん@お腹いっぱい。:2014/06/08(日) 14:51:22.19 ID:xHt781st0.net
>>304
出来ました!これ出来たらいいのになぁ〜と前から思ってたことなんでうれしいです、ありがとうございましたm(_ _)m

試してる間に気になったことがあったんですが、
#ifWinActive, 開く ahk_class #32770
~~~
#ifWinActive, ahk_class #32770
~~~
#ifWinActive
とした時って上の方に書いてあるものが優先されると思ってましたが下のものが優先されました
どこの認識が間違ってるんでしょうか。AHK_Lです

307 :名無しさん@お腹いっぱい。:2014/06/08(日) 15:02:34.82 ID:6AtkeFHK0.net
>>306
ttp://ahkwiki.net/-IfWinActive

308 :名無しさん@お腹いっぱい。:2014/06/08(日) 15:24:00.25 ID:xHt781st0.net
> これらの条件は、最後に指定した物一つのみが有効になる。
でしたか……一番下の方に#ifWinActive, ahk_class #32770書いてますわ……
解説不読失礼。落ちます

309 :240:2014/06/08(日) 15:27:27.57 ID:TjQuA9Xq0.net
>>248
レスthx&返信めちゃめちゃ遅くなってスミマセン
その後いろいろ試していたら別ソフト(Combineというソフト)でも
同様の現象が再現したのでAHK側の問題ではなかったようです
お手数おかけしました

310 :名無しさん@お腹いっぱい。:2014/06/08(日) 16:27:28.31 ID:j/juIH060.net
>>300
>>301
ありがとうございます。MouseClickでやると思ったところをクリックできました!
Clickの仕様とかそういう細かいことヌーブにはわかりません。
%いれればできるらしいけど、299の例みてもそこに%入るの?wって感じで
思ってた箇所とぜんぜんちがった。たすかりました

311 :名無しさん@お腹いっぱい。:2014/06/09(月) 16:42:39.85 ID:Z6mXrjXk0.net
プロセスの元のCPU優先度って取得できないんでしょうか?

今、アクティブウィンドウの優先度を上げるだけの常駐プログラムをつくろうと思ってるんですけど、下に隠れたウィンドウの優先度を元に戻す方法が思いつきません
今のところ通常優先度にしてますけどこれを元あった優先度に戻したいんです

#Persistent
SetTimer, getwinpid,5000    ;5秒毎に発動

getwinpid:
WinGet,active_Pid, PID, A   ;アクティブウィンドウのPIDを取得
now_active_pid := active_Pid
if (Temp_active_Pid != now_active_pid)
{
;msgbox,A
Process, Priority,%now_active_pid%,AboveNormal   ;現在のアクティブ
Process, Priority,%Temp_active_Pid%,Normal   ;裏側のウィンドウ
}
WinGet,active_Pid, PID, A
Temp_active_Pid := active_Pid
return

312 :名無しさん@お腹いっぱい。:2014/06/09(月) 17:41:49.52 ID:bgc42iW60.net
うちはAHKで取得する方法わからんかったのでDllcallで見に行ってるわ

;プロセス優先度を返す
; 0x100 Realtime
; 0x80 High
; 0x8000 AboveNormal
; 0x20 Normal
; 0x4000 BelowNormal
; 0x40 Low
; http://msdn.microsoft.com/ja-jp/library/cc429132.aspx

hProcess := DllCall("OpenProcess",Uint,0x400,Int,False,Int,PID)
ret := DllCall("GetPriorityClass", Ptr,hProcess, Int)
DllCall("CloseHandle", Ptr,hProcess)

313 :名無しさん@お腹いっぱい。:2014/06/09(月) 17:47:12.10 ID:bgc42iW60.net
コメント抜け
OpenProcessのパラメータ
0x400 = PROCESS_QUERY_INFORMATION ね

314 :名無しさん@お腹いっぱい。:2014/06/09(月) 17:54:15.77 ID:XF2UEfez0.net
>>311
・検索の手順
プロセス優先度 API → GetPriorityClass autohotkey

ttp://www.autohotkey.com/board/topic/60560-retrieving-process-priority/
ttp://msdn.microsoft.com/en-us/library/aa393587%28v=vs.85%29.aspx

315 :名無しさん@お腹いっぱい。:2014/06/09(月) 20:38:24.26 ID:aYfbnJjS0.net
質問です。IEの閲覧履歴を削除するショートカットキーShift+Ctrl+Delを押した時に
ダイアログが出るので、自動的に削除のボタンも押すスクリプトを書いていますが
うまくいきません。ダイアログは出ますが削除のボタンを押しません。
どうすればいいですか?またForefoxでも同じことをしたいのですができるでしょうか。

+^delete::
+^delete
sleep,2000 ;ダイアログが出るまで待機
{
;↓この部分
;send,d ←ダメだった
;controlsend,削除(&D),d ←ダメだった

;ControlClick [,Control-or-Pos, WinTitle, WinText, WhichButton, …]

;controlclick,削除(&D),閲覧の履歴の削除 ←ダメだった
;controlclick,削除(&D),閲覧の履歴の削除 ahk_class #32770 ←ダメだった
}
return

Firefoxの場合
{
controlclick,今すぐ消去,最近の履歴を消去 ahk_class MozillaDialogClass←ダメだった
}

316 :名無しさん@お腹いっぱい。:2014/06/09(月) 20:58:39.95 ID:B4e9wrW40.net
+^delete::
send, +^{delete}

317 :名無しさん@お腹いっぱい。:2014/06/09(月) 21:01:04.23 ID:24uhY/i20.net
>>315
とりあえずリファレンスもうちょいよく読むべきかな
OSとかIEとかFirefoxのバージョンがわからんけど
IEはControlClickでbutton8をクリックしてやる(環境によってはbutton8じゃないかもしれん)
FxはそのままSend,{Enter}でよさげ

318 :名無しさん@お腹いっぱい。:2014/06/09(月) 21:20:56.61 ID:XF2UEfez0.net
>>315
複数の問題があるな・・・リファレンス、コマンド読み飛ばした?
スクリプトを書く場合やりたい事を分解してテストするといい。

*ホットキー割り当て
 +イベントを乗っ取らない ~
 +特定のウィンドウで動作 #if

*「閲覧の履歴の削除」開いたか判定 コマンド>>ウィンドウ

*キーを送信
 +ボタンがアクティブならEnter
 +ショートカットが割り当てられているなら 対象のキー
  +それ以外 ボタンの直接指定 >>ウィンドウ指定の方法

やるべき動作は書いたので後はリファレンス読んで自分で書こう。

319 :名無しさん@お腹いっぱい。:2014/06/09(月) 23:04:03.39 ID:aYfbnJjS0.net
>>316,315,316
ありがとうございます。バージョン忘れてました、すみません。
OS XP SP3 IE8 Firefox12.0 です。
リファレンス読みながらやってみたいと思います。
314さんの方法はダメでした。
315さんの IEの controlclick,button8 、FFの send,{enter} 、ダメでした。
316さん詳しい解説ありがとうございます。
1つずつ確認しながら覚えていきたいと思います。

320 :名無しさん@お腹いっぱい。:2014/06/09(月) 23:33:16.28 ID:Eav/4z2n0.net
いやだからダメなのは君のやり方だってw

321 :314:2014/06/09(月) 23:40:26.88 ID:B4e9wrW40.net
まさかとは思うけどさ

sleep,2000 (←全角);(←全角)ダイアログが出るまで待機

322 :名無しさん@お腹いっぱい。:2014/06/09(月) 23:42:27.06 ID:COFfMQ1c0.net
http://www.autohotkey.com/board/topic/60226-how-to-delete-internet-temp-files-using-hot-key/?p=379547
inetcpl.cplから直接履歴削除を呼び出す方法もあるんだね

323 :名無しさん@お腹いっぱい。:2014/06/10(火) 00:32:29.04 ID:q274kSbi0.net
すみません初歩的なことなんですが
autohotkeyのプロセスのスクリプト別に存在するかどうか確認したい場合ってどうすればいいんでしたっけ?

たとえばAHKプロセスが、MGL.AHKと○○.AHKの2つのスクリプトを走らせてるとすべてAHKプロセスでタスク上見えますけど、たしか片方ずつ判別できたと思うんですよ

完全にドわすれしてるので誰か思い出すきっかけをください

324 :名無しさん@お腹いっぱい。:2014/06/10(火) 01:02:17.32 ID:HXWdPKCt0.net
AhkTaskMan使えばいいんじゃね

325 :名無しさん@お腹いっぱい。:2014/06/10(火) 01:07:55.35 ID:hbY2+j5R0.net
>>323
DetectHiddenWindows, On
WinGet .....

326 :名無しさん@お腹いっぱい。:2014/06/10(火) 05:05:19.93 ID:Oku93AOa0.net
タスクマネージャーで常にスクリプトを区別したいなら、
スクリプトと同じフォルダに「AutoHotkey.exe」をコピーして、
スクリプトと同名にリネームし、それを実行するようにすればいい。

327 :名無しさん@お腹いっぱい。:2014/06/10(火) 05:09:58.14 ID:Oku93AOa0.net
>>326>>323の質問の答とは違うけど、一応こういう事もできるよって話ね。

328 :名無しさん@お腹いっぱい。:2014/06/10(火) 11:44:37.11 ID:hYvgg1os0.net
>>323
タイトルがahkファイルのフルパス、クラス名がAutoHotkeyの非表示ウィンドウが出来ているので

DetectHiddenWindows,On
IfWinExist,C:\Sample\0000.ahk ahk_class AutoHotkey
{
MsgBox,C:\Sample\0000.ahk は起動済です
}

329 :名無しさん@お腹いっぱい。:2014/06/10(火) 12:53:37.46 ID:d3dtXNsd0.net
ちょっといみわかんない状態に陥ってます
こんなスクリプト書いたんですが

Winget,Name,ProcessName,A
;msgbox,%Name%
If(Name == ("sakura.exe" or "firefox.exe"))
msgbox,OK %Name%

エクスプローラーでもnotepad.exeでも無差別にメッセージボックスが表示されます

なんででしょう?

330 :名無しさん@お腹いっぱい。:2014/06/10(火) 13:25:36.90 ID:d3dtXNsd0.net
事故解決しました。判定式変えたら動きました。

331 :名無しさん@お腹いっぱい。:2014/06/11(水) 06:22:46.57 ID:RuP68yGM0.net
ShowPopupMenu(retvar, "&Open,&Edit,&Print,&Exit")
くらい簡単なマウスでもキーボードでも選べるメニュー関数ないですか

332 :名無しさん@お腹いっぱい。:2014/06/11(水) 12:14:46.25 ID:W7esGF/q0.net
なかったら作ったらいいんじゃね
そんなむつかしくないと思うけど

333 :名無しさん@お腹いっぱい。:2014/06/11(水) 14:46:42.38 ID:FBfP1Dx60.net
存在しているかどうかがわからないんだから
それより一手前の状況だろう

334 :名無しさん@お腹いっぱい。:2014/06/11(水) 16:10:55.75 ID:W7esGF/q0.net
探して無かったら無いんじゃないの
つか人に存在聞く間に作っちゃったほうが早いレベルじゃないかと

335 :名無しさん@お腹いっぱい。:2014/06/12(木) 22:17:55.75 ID:FP4XYyFq0.net
すいませんすいませんちょっと今頭な回らないんで代わりに誰か具体的に考えていただけますか

1. ソフトAに選択中の複数のファイルorフォルダのパスを取得するショートカットキーを送る
2. 入力欄を表示してソフトBのパスを入力する
3. エンターで取得したパスをBに送る

Bは変動します。パスの入力は手打ちかコピペです

336 :名無しさん@お腹いっぱい。:2014/06/12(木) 23:15:46.12 ID:1rkvTTqv0.net
>>335
添削やアドバイスなら歓迎だが、スクリプトの作成依頼ならお断り。
説明も推測しないといけない箇所も多し説明不足。
分からない部分だけ聞くか、分かる部分はスクリプトを書いてからまたいらっしゃい。

337 :名無しさん@お腹いっぱい。:2014/06/12(木) 23:19:49.11 ID:HYwIIian0.net
頭回るときに書けばいいだけだしな

338 :名無しさん@お腹いっぱい。:2014/06/13(金) 01:37:54.68 ID:0S9fy+BC0.net
送信先は何となくopenかsaveダイアログっぽい気がするので
DialogHandler.で行けそうな気がしないでもない

339 :名無しさん@お腹いっぱい。:2014/06/13(金) 15:56:24.30 ID:O9Uq5E5L0.net
GUI,Addなどで作ったウインドウがあるんだが、これがほかのウインドウを操作していると
隠れてしまうので、ある操作をしたときに表に出てくるようにするため下記のスクリプトを書いた

WinGet, active_id, ID, A
GUI, show
WinActivate, ahk_id %active_id%

フォーカスは元のウインドウのままにしたいのでこうした
すると、モニター下のステータスバーに出てるHのアイコンがぴっこんぴっこんしだすんだわ
これなんとかなりませんか

ちなみにこのGUIウインドウのIDをゲットしてこれをguiIDとして

WinGet, active_id, ID, A
WinActivate, ahk_id %guiID%
WinActivate, ahk_id %active_id%

としても同じようにぴっこんぴっこんする
なぜこんなことしたいかというと、ウインドウがA,B,このGUIって3枚あったとき
Bの下にGUIが隠れてるとき、ウインドウAを触りながらこのGUIをBの上に出したいんだ
そのときフォーカスはAのまま変えたくないので。

340 :名無しさん@お腹いっぱい。:2014/06/13(金) 16:57:42.12 ID:0S9fy+BC0.net
>>339
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1186076136

ahk側で何とかしたいならGUIが表示されアクティブ化したのを待ってから
切り替えたらいいんじゃない
一瞬たりともフォーカス奪われたくないって話だとむつかしいと思うが

341 :名無しさん@お腹いっぱい。:2014/06/13(金) 17:28:24.74 ID:O9Uq5E5L0.net
WinGet, active_id, ID, A
GUI, show
Sleep, 500
WinActivate, ahk_id %active_id%
としたら、ぴっこんぴっこんはしなくなりましたが、

WinGet, active_id, ID, A
WinWaitActive, ahk_id %guiID%
WinActivate, ahk_id %active_id%

だとダメです

342 :名無しさん@お腹いっぱい。:2014/06/13(金) 21:51:19.15 ID:O9Uq5E5L0.net
原因がわかりました
スクリプトの最初の方に、
#UseHook
というのを入れてるのですが、これをコメントアウトしたらぴっこんぴっこんしなくなりました
でもなんで?
とりあえず一番簡単なスクリプトを作ってみました。下記で、#UseHookをコメントアウトするのとしないので
タスクバーのHアイコンの点滅が変わります

#UseHook

Gui,Add,Text, W100, test
Gui,Show
Return
Space::
WinGet, active_id, ID, A
GUI, show
WinActivate, ahk_id %active_id%
return

343 :名無しさん@お腹いっぱい。:2014/06/13(金) 22:44:29.74 ID:MbPE/26s0.net
>>342
こんな感じにしたら点滅しなくなった

#UseHook

Gui,Add,Text, W100, test
Gui,Show
Return

+F12::SetTimer, label_WinActivate, -1

label_WinActivate:
WinGet, active_id, ID, A
GUI, show
WinActivate, ahk_id %active_id%
return

344 :名無しさん@お腹いっぱい。:2014/06/13(金) 23:19:23.22 ID:uxlEhohk0.net
>>342
最初からまともな口調で書いてくれたら即答したのに。

#WinActivateForce
WinSet, AlwaysOnTop

345 :名無しさん@お腹いっぱい。:2014/06/14(土) 00:16:26.70 ID:Q/EUZoNR0.net
やりたいのはフォーカス保持みたいだから
常に手前は違うのかなと思ってた

346 :名無しさん@お腹いっぱい。:2014/06/14(土) 07:13:47.17 ID:LOeewHcK0.net
:*?:{Shift}stm::actionみたいに
Hotstringに文字以外のキーを指定したような挙動が欲しくて挫折したのでお助けください
~Shift::return
:*:stm::
GetKeyState, key, Shift
if A_PriorHotkey != "~Shift" || A_TimeSincePriorHotkey > 1000
{
Send, stm
return
}
if key = "D"
{
Send, +s+t+m
return
}
MsgBox, action
return
条件にするとこんな感じです
・Shiftが単体で押し上げられると受け付けが始まる
・受け付け中に文字以外のキーが押されたら解除する
・終了文字はない

347 :名無しさん@お腹いっぱい。:2014/06/14(土) 07:46:19.18 ID:nMXYm4BD0.net
>>343
おお、ありがとう。これで解決しましたわ。なんか不思議だね。理由がわからんのが気持ち悪いですが

>>344
常に手前ってのは違うわ

348 :名無しさん@お腹いっぱい。:2014/06/14(土) 19:00:13.92 ID:PY1agNmc0.net
>>347
>>347
どう考えてもGUIが一瞬最前面に出ないようにする配慮だと思うのだがw

WinSet, AlwaysOnTop, On
...
WinSet, AlwaysOnTop, Off

349 :名無しさん@お腹いっぱい。:2014/06/14(土) 20:51:41.68 ID:Q/EUZoNR0.net
常に手前にはフォーカス移動抑止効果はないから結局ほかの対策が必要じゃね

350 :名無しさん@お腹いっぱい。:2014/06/14(土) 22:06:42.51 ID:FJ7SSBqF0.net
>>349
最終的にフォーカスが同じならそこまでこだわらないでいいと思うが。
問題なのは >>345 を読んで質問者が完全に誤解している事かとw

>>346
Flag = 0

~Shift::
If Flag {
--Flag
SetTimer, KeyCheck, Off
} Else {
++Flag
SetTimer, KeyCheck, On, 100
}
Return

#If Flag
:*?:aaa::bbb
#If

KeyCheck:
Input, OutputVar, V L1, {LShift}{RShift}-^\@[]./ ;任意の終了キー
If (ErrorLevel != "Max") {
--Flag
SetTimer, KeyCheck, Off
}
Return

351 :名無しさん@お腹いっぱい。:2014/06/14(土) 22:11:15.21 ID:FJ7SSBqF0.net
訂正:いらない判定削除

~Shift::
++Flag
SetTimer, KeyCheck, On, 100
Return

352 :名無しさん@お腹いっぱい。:2014/06/14(土) 22:48:16.80 ID:FJ7SSBqF0.net
いろいろテストしたら残念な事になっていたので書き直し。

Flag = 0

Shift::
Send, {Shift Down}
KeyWait, Shift
Send, {Shift Up}
If Flag
--Flag
Else {
++Flag
SetTimer, KeyCheck, On, 100
}
Return

#If Flag
:*?:aaa::bbb
#If

KeyCheck:
Input, OutputVar, V L1, {LShift}{RShift}-^\@[]./ ;任意の終了キー
tooltip % ErrorLevel
If (ErrorLevel = "EndKey:LShift") || (ErrorLevel = "EndKey:RShift")
SetTimer, KeyCheck, Off
Else If (ErrorLevel != "Max") {
--Flag
SetTimer, KeyCheck, Off
}
Return

353 :347:2014/06/15(日) 07:35:39.16 ID:BBLMrurN0.net
>>350
失礼、#WinActivateForceの一行だけで点滅防止になるんだったね
おまけで書かれてるAlwaysOnTopのほうに反応してしまった

うちの環境ではもともと点滅しないなーと思ってたら
Template.ahkに#WinActivateForce 組み込んでた

354 :337:2014/06/15(日) 09:05:07.05 ID:Zr1Ah1LZ0.net
>>353
なるほど、私も、#WinActivateForce一行だけ入れて確認してみたら、点滅消えた
でもこれ、解説見てみると

この指令をスクリプトのどこかに書いておくと、WinActivate、WinActivateBottom、GroupActivateによるウィンドウのアクティブ化時に、
穏やかな方法を試みるのを省略して常に強制的な方法でアクティブ化を行う。
性能には変わりは無いが、ウィンドウアクティブ化時にタスクバーアイコンが点滅する現象が起こらなくなる。

って書いてあるよね
強制的なアクティブ化と穏やかなアクティブ化ってのがあるんですねえ
なんか常時入れておいていいものなのか。よくわからんから、下記のようにしてみました
それでもちゃんと動く
この場合、#WinActivateForceの上のスクリプトには影響ないのかな

この指令をスクリプトのどこかに書いておくとって表現が気になる

実際のスクリプトには上にかなり多くのスクリプトがあるので
一番上に書いても影響は多分ないんだろうとは思うけど、一応、ここだけに限定したいので

#UseHook
Gui,Add,Text, W100, test
Gui,Show
Return
#WinActivateForce     ;; ここに書いたら上には影響ないのかな
Space::
WinGet, active_id, ID, A
GUI, show
WinActivate, ahk_id %active_id%
return

355 :名無しさん@お腹いっぱい。:2014/06/15(日) 09:10:06.48 ID:Zr1Ah1LZ0.net
連投すまん
#WinActivateForceを一番下に書いても点滅消えたので、ダメだね
上の方にも全体に影響するみたいです

356 :名無しさん@お腹いっぱい。:2014/06/15(日) 17:19:07.78 ID:fhGQPxCg0.net
>>350-350
頂いたコードを参考に思い通りの操作を実現できました
感謝です!

357 :名無しさん@お腹いっぱい。:2014/06/15(日) 18:37:47.05 ID:0DzCKPBh0.net
あんまりにも独自環境にできるもんだからahk入ってないPC触るとやばいなぁと最近しみじみ思う

358 :名無しさん@お腹いっぱい。:2014/06/15(日) 19:30:26.70 ID:IeqjGRoQ0.net
コンパイルできるからよかった

359 :名無しさん@お腹いっぱい。:2014/06/15(日) 20:18:12.39 ID:BOZ0CFLg0.net
ポータブル系のフリーソフトを揃えて全部相対パス化して持ち運べる環境を作ったが
社用PCなんかに勝手に入れられないし、他人のPCに触れる機会なんてないし
リカバリーした時にちょっと面倒が減るくらいのメリットしかなかった

360 :名無しさん@お腹いっぱい。:2014/06/16(月) 17:44:49.20 ID:6l3Rv2Fd0.net
当方はサブのノートや家族のPCに必要な環境を即時構築できる利点もござった

361 :名無しさん@お腹いっぱい。:2014/06/16(月) 17:47:05.77 ID:1JuBbL1Z0.net
>>360
当方は既に忍ばせてあるからもうまんたい

362 :名無しさん@お腹いっぱい。:2014/06/16(月) 19:37:26.34 ID:jEahGBq10.net
コンパイルしてUSBメモリに入れとけば会社でもどこでも使えるんじゃね

363 :名無しさん@お腹いっぱい。:2014/06/16(月) 21:01:58.55 ID:O1if7OE90.net
未成年にはピンと来ないかもしれないが
普通は会社のPCはUSBメモリなんてアクセスできないようになってるし
もちろん勝手にソフトをインストールすることもできない
というかできるできないの前にしてはいけない

364 :名無しさん@お腹いっぱい。:2014/06/16(月) 21:03:40.53 ID:yQuHZ0Zm0.net
狭い世間しか見てないとわからないかもしれないが
会社っていろいろあるんだぜ

365 :名無しさん@お腹いっぱい。:2014/06/16(月) 21:07:02.22 ID:q8BzRZxd0.net
この話題になるといつもこの流れになるな
もはやAHK関係ないから他所でどうぞ

366 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:00:50.79 ID:qC/2qUhi0.net
会社云々とかどうだっていいわさ。サブノート持ちだって自営業だってたくさんいるんですよ

367 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:07:46.96 ID:8V/cu3c10.net
失礼します。グループの使い方を教えてください。これだと間違いですか?
GroupAdd, test_group, ahk_class Notepad
#IfWinActive, ahk_group test_group
F1::Send, ^S
#IfWinActive

368 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:09:39.62 ID:1JuBbL1Z0.net
取り上げる必要があるとしたら>>362の職場環境以外ないな
こんな事情だってあるんですよーなんて言い出したらキリがない

369 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:14:15.29 ID:GqIelpd+0.net
なんにしろそれなりに管理のしっかりした会社なら勝手なソフトなんて使えないし
USBなんてもってのほかw
うち?俺が仕事で使ってるか誰かがエロサイト見てるだけだから何でもありだけど・・・w

370 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:20:56.54 ID:qC/2qUhi0.net
GroupActivateとはちゃうの?

371 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:21:51.29 ID:gW0is7NJ0.net
>>367
ここ見て使い方学んでね。
GroupAdd - AutoHotkey Wiki
http://ahkwiki.net/GroupAdd

372 :名無しさん@お腹いっぱい。:2014/06/16(月) 22:42:19.12 ID:N1sULRnU0.net
>>367
GroupAdd使ってる割には1つしかWindowが登録されてないけど使い方は間違ってないよ
他のスクリプトにその4行追加して使いたいならGroupAddはAuto-executeセクションに記述しないとだめ
あとF1::Send, ^Sは^sじゃなくて^Sでいいの?F1で上書き保存させたいなら^s
^Sだとctrl+shift+sになるよ

373 :名無しさん@お腹いっぱい。:2014/06/16(月) 23:06:32.86 ID:8V/cu3c10.net
ご返信ありがとうございます

>>372
例えばメモ帳かワードパッドの操作中にF1で上書き保存というような機能を実現したいのです

>>371
以上の動機でIfWinActiveの条件にahk_groupを使いたいと思ったのですが、
その他のコマンドにこれは含まれないということですか?

>>372
ゆくゆくはエディタ系を一つにまとめて操作を統一するつもりでした
先に挙げた記述では反応しなかったのでどこか誤っていると思われます
ahk_classによる指定では問題なく動きますがエディタが増えるごとにコピペする手間は防ぎたいです
ちなみに上書き保存の動作は^Sでも動きましたが、直しておきました(AutoHotkeyU32 1.1.15.0)

374 :名無しさん@お腹いっぱい。:2014/06/16(月) 23:42:05.18 ID:8V/cu3c10.net
書き方変えてみました。でもダメだったので静的動的みたいな話ではないんですね
試した限りではWinTitleにahk_classを2個以上書くと最後だけ解釈されるんですよね?
グループじゃなくてもOR条件が使えれば満足なんですが、そんなのありませんか?
ダメならLに追加されたらしい連想配列を使うことにします
GroupAdd, test_group, ahk_class Notepad
$F1::
IfWinActive, ahk_group test_group
Send, ^s
IfWinNotActive, ahk_group test_group
Send, {F1}
Return

375 :名無しさん@お腹いっぱい。:2014/06/16(月) 23:57:43.30 ID:GxpYx7h10.net
>>315の人と同じ香りがする

376 :名無しさん@お腹いっぱい。:2014/06/17(火) 00:13:27.85 ID:10fnKTth0.net
>>374
GroupAdd > ウィンドウの条件をウィンドウグループに [追加] する。
違う方法は #If 使えばいい。

GroupAdd, test_group, ahk_class hoge1
GroupAdd, test_group, ahk_class hoge2
GroupAdd, test_group, ahk_class hoge3
GroupAdd, test_group, ahk_class hoge4
GroupAdd, test_group, ahk_class hoge5
#IfWinActive, ahk_group test_group
F1::Send, ^s
#IfWinActive

377 :名無しさん@お腹いっぱい。:2014/06/17(火) 00:30:57.83 ID:FqSAQivw0.net
>>376
GroupAddでグループにウインドウ条件を加えられて、以降はWinTitle引数を持つコマンドにグループ名を指定することで
そのグループに属する全ての条件が対象になるという認識で合っていますか?
だとすれば見たところ>>367と同じ内容ですが、もしかして>>367で上書き保存ができないのは自分の環境だけでしょうか?

378 :名無しさん@お腹いっぱい。:2014/06/17(火) 00:35:55.48 ID:10fnKTth0.net
>>377
ダメと言われても問題のスクリプトが書かれていなければ答えようがない。

379 :名無しさん@お腹いっぱい。:2014/06/17(火) 00:40:40.29 ID:n3eWcFnU0.net
>>377
>>372のレスちゃんと読んだ?
>あとF1::Send, ^Sは^sじゃなくて^Sでいいの?F1で上書き保存させたいなら^s
>^Sだとctrl+shift+sになるよ

380 :名無しさん@お腹いっぱい。:2014/06/17(火) 00:47:41.49 ID:FqSAQivw0.net
>>378
ダメと言ったのは>>374に載せたスクリプトです。書き方が悪くて申し訳ありません

>>379
はい。>>373で申し上げた通りに直してあります
勿論>>367を^sにした状態でも試しました

381 :名無しさん@お腹いっぱい。:2014/06/17(火) 01:00:54.10 ID:FqSAQivw0.net
ところでそのときにメモ帳を開いて物理的にCtrl+Shift+Sを押下してみたんですが
このときは上書き保存できませんでした。それなのに^Sでできたということは
Sendでシミュレートされる同時押しには順序があってCtrl→S→Shiftで押されたってことなんですかね?

382 :名無しさん@お腹いっぱい。:2014/06/17(火) 01:10:32.29 ID:10fnKTth0.net
>>367 >>374 はSend以外間違っていない、同じ動作をするが前者の方がいい。

書かれたスクリプトだけでは問題は起きない、余計なスクリプトと一緒に書いていないか?
Auto-executeセクションでGroupAddを書かないと無視される。
ttp://ahkwiki.net/Scripts#Auto-execute

>>381 自分で確認しろ Key history

383 :名無しさん@お腹いっぱい。:2014/06/17(火) 01:38:30.14 ID:FqSAQivw0.net
>>382
あ、先頭に書いたら動きました。>>374って間違ってますか?
リマップもホットキー(ホットキーラベル)に含まれるんですね。記述位置がAuto-executeだと思い込んで疑いませんでした
どうりで話が噛み合わないわけです。すみませんでした
実現できてとても嬉しいです。ご協力してくださった方々には足を向けて寝ません

ちなみにKeyHistoryで調べると^SはCtrl→Shift→Sでした
もはやどうでもいいんですがなんで保存できたんだろう

384 :名無しさん@お腹いっぱい。:2014/06/17(火) 03:13:08.73 ID:aJ2BBLW00.net
起きた事象は再現されるか再度やってみる
紹介されたページはきちんと読む

言葉が丁寧でも態度は良くない

385 :名無しさん@お腹いっぱい。:2014/06/17(火) 06:59:05.72 ID:Kx2279sK0.net
伸びてると思ったら人の話聞かない子ちゃんが連投してたのか

386 :名無しさん@お腹いっぱい。:2014/06/17(火) 16:57:11.02 ID:SsItSWtM0.net
Windows Media Player(Windows7に付属)
で再生中の位置(時間)を取得する方法ないでしょうか?

コントロールにもテキストが出ません

387 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:03:49.52 ID:C64t8iwY0.net ?2BP(1000)
すまん、FileAppendで改行が入らない。
めちゃ初歩だけど誰か教えてください。


例:
FileAppend ,%a%,C:\a.txt

388 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:12:21.01 ID:EW3LK2EA0.net
>>386
今WMPそんなことになってんの?

テキストがないなら画像認識すればいいじゃない?
またはプロパティ出させるとか?
スキンをクラシック(あるはずだよね?)にするのが一番簡単そうだけど

389 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:25:08.97 ID:Kx2279sK0.net
>>387
%a%`n

390 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:26:16.17 ID:Kx2279sK0.net
すまん `r もいるかも
まあ適当に試してみて

391 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:32:37.24 ID:RdPPpVe40.net
FileAppend便乗させてください

指定したテキストの指定した行に文字列を挿入、もしくは行を削除
ってFileAppendでは無理ですよね
そういうことやってる人いませんか?参考お願いします

392 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:44:36.16 ID:Gu79nixV0.net
>>387
wikiで検索 「改行」

>> ID:Kx2279sK0
調べれば載ってる事を聞いてくる人は調べ方教えないと
何でもかんでも聞いて残念な質問だらけになるぞ。

393 :名無しさん@お腹いっぱい。:2014/06/17(火) 19:55:00.75 ID:Gu79nixV0.net
>>391
変数に読み込み

RegExReplace() 正規表現で置換
または
一行ずつ文字列判定 Loop,Read + If系

最後にFileAppend

394 :名無しさん@お腹いっぱい。:2014/06/17(火) 20:19:22.81 ID:RdPPpVe40.net
なるほど、どうもです
つまらん質問にお答えいただき感謝

395 :名無しさん@お腹いっぱい。:2014/06/17(火) 21:12:17.73 ID:Kx2279sK0.net
>>392
いや、調べなきゃ意味分からん半端な答えを投げたつもりだけど
制御コードの類は知識ないと自分で調べろっても分からんだろうがヒントがあれば逆引きできるでしょ

wikiの該当ページ貼ってやるところまでやってやらなあかんつったら答える側のハードル上がらね?
まあ単にスマホからリンク貼るの億劫だっただけがな

396 :名無しさん@お腹いっぱい。:2014/06/17(火) 22:25:48.43 ID:tD4/JSdk0.net
まぁ別に質問者を教育してやる義理もないんで
答えたい人が答えたいようにすればいいと思うよ
増長した質問者が出て来たとしてもそれはそいつが非常識なわけで

397 :名無しさん@お腹いっぱい。:2014/06/17(火) 23:16:56.40 ID:EpGS+itz0.net
回答者様をうまく利用しようと思うなら
せいぜいご機嫌損ねないようにへーこらしておけってこった

398 :384:2014/06/18(水) 00:32:41.04 ID:fR8OVz180.net
>>388
サンクスです
画像認識ですか
テキストをOCRみたいに認識するということでしょうか?
ヒントお願いします

399 :名無しさん@お腹いっぱい。:2014/06/18(水) 03:26:42.50 ID:K9xE3C6K0.net
>>398
ttp://ahkwiki.net/Commands_Category

400 :名無しさん@お腹いっぱい。:2014/06/18(水) 07:55:21.29 ID:H+1PohN10.net
#IfWinActiveについてですが、使い方のところには
#IfWinActive [, WinTitle, WinText]
とありますが、使用例には
#IfWinActive ahk_class Notepad
とあります。
これって、
#IfWinActiveのあとのカンマ”,”は、あってもなくてもいいのでしょうか
たとえば、
#IfWinActive タイトル名   でも、
#IfWinActive, タイトル名
でもどちらでもいい?

401 :名無しさん@お腹いっぱい。:2014/06/18(水) 08:37:54.51 ID:xXX+OaeZ0.net
>>388,397
AHKにOCR機能なんてあったっけ?
ピントの外れた解答した上でそういう誘導の仕方はいくらなんでも酷いと思うが

402 :名無しさん@お腹いっぱい。:2014/06/18(水) 08:54:34.97 ID:H+1PohN10.net
>>401
ImageSearchとかじゃないの?

403 :名無しさん@お腹いっぱい。:2014/06/18(水) 11:23:46.91 ID:JHTQVKeE0.net
再生時間みたいに随時値の変わってくものはImageSearchは無理じゃね?

…と思ったが数時単位ではフォント固定だから0〜9までの画像をあらかじめキャプチャ保存しといて
hh:mm:ssそれぞれの桁位置でImageSearch*10で0〜9のどの画像と一致するか
ぐるぐる回していけばいいのかな
X1〜Y2の位置決めはよほどシビアに指定しないと隣の桁の値取得したりの誤爆しそうだが

404 :名無しさん@お腹いっぱい。:2014/06/18(水) 16:53:42.57 ID:yirwSBqB0.net
唐突にここで質問ですが、Administratorなユーザーで利用していても何故か管理者権限で起動するかでやれることが違わないですか?
例えば、管理者として起動したahkスクリプトのホットキーでfirefoxを起動すると外部アプリからURLが開けませんが、
かといって通常起動すると今度はfirefoxのウィンドウをActivateするキーバインドが時々死にます。
発生タイミングは調査中ですがfirefoxには限らないようです。詳しい方がいたら教えてください。
おま環かもしれないので色々なアプリで確かめたところ、一般に、外部アプリからのファイルオープンだとかD&Dだと通常実行が必要で、
ウィンドウのアクティブ化絡みだと管理者起動が必要となる場合があるようです。

管理者権限用のスクリプトと通常スクリプトを分けるしかないんでしょうか?
統一させる方法があれば知りたいです。

405 :名無しさん@お腹いっぱい。:2014/06/18(水) 17:52:41.45 ID:AYY81YRw0.net
>>388 OCR機能なんて一言も言ってないw
>>401 コマンド見ろよって突っ込みだろ?

>>401
勘違い質問者の言ってる事鵜呑みにしてどうするんだよw
画像認識ってヒントを出してるのにwikiすら調べもしない方がよっぽど酷いがなw

406 :名無しさん@お腹いっぱい。:2014/06/18(水) 18:09:32.12 ID:AYY81YRw0.net
>>400
スクリプトの構成
ttp://ahkwiki.net/Scripts

>>404
自分の環境を先に書くべき。

おそらくユーザーアカウント制御 (UAC)絡みの問題だと思う。検索:UAC autohotkey
あまりにも扱いにくいので自分はOFFにして、Comodo Firewall のDefense+で代用している、むしろこちらの方が高性能。

407 :名無しさん@お腹いっぱい。:2014/06/18(水) 18:46:05.70 ID:yirwSBqB0.net
>>406
環境はWindows 8.1でUACはオフにしています。

すみません。1つ知りたいのですがそのように言われるということは私の環境が原因ということですか?
OSはWindows 8.1しか持っていないのでUACのオンオフやアプリやスクリプトの書き方・起動させかたなど色々試したのですが、
>>404の現象が再現されました。他に必要な情報があったら教えてください。

408 :名無しさん@お腹いっぱい。:2014/06/18(水) 18:53:09.30 ID:yirwSBqB0.net
再現されたスクリプトの一例です。

Alt & 5::
If WinExist("ahk_class MozillaWindowClass"){
WinActivate ahk_class MozillaWindowClass
}else{
Run, C:\Program Files (x86)\Mozilla Firefox\firefox.exe
}
return

409 :名無しさん@お腹いっぱい。:2014/06/18(水) 19:01:39.00 ID:xXX+OaeZ0.net
>>405
すまんね、ImageSearchじゃ無理って思い込みがまずあったので
>386はWMP起動させずに質問ろくに読まないで勘違いレスしてるのかと思ってしまった
今は反省してる

見苦しく言い訳すると>401書いたのも自分だが、一桁づつImageSearchさせるというのは
当初思いつかなかったし、コマンド一覧眺めててもわからないんじゃないか>397

410 :名無しさん@お腹いっぱい。:2014/06/18(水) 19:14:00.40 ID:SZf81ukY0.net
回答者様は無条件で偉いんだよ いちいち意見すんじゃねーよ

411 :名無しさん@お腹いっぱい。:2014/06/18(水) 19:18:35.51 ID:AYY81YRw0.net
>>407
その現象がfirefox限定なら既知の問題「ゾンビプロセス」かと。
ttp://www.mozilla.jp/firefox/30.0/releasenotes/

裏でいくつもfirefoxが起動して残る問題がある。
それにWinActivate等が反応して結果動作していないように見えている。
余計な物に反応しないようにウィンドウ指定をタイトルの一部まで指定すれば誤動作しないかも。

SetTitleMatchMode, 2
WinActivate, - Mozilla Firefox ahk_class MozillaWindowClass

412 :名無しさん@お腹いっぱい。:2014/06/18(水) 19:20:10.51 ID:yWJNt5Y90.net
余談だが、
OCRを見るといつもOCiRiと読んでしまう

413 :名無しさん@お腹いっぱい。:2014/06/18(水) 20:28:07.23 ID:yirwSBqB0.net
>>411
タイトルをそのように指定してみましたが変わりません。

それより不思議なのがあなたの環境では観測されていないようですね。
アクティブ化だけでなく外部からのファイルオープンについても観測されていないですか?

ちなみに、既に書きましたがfirefox限定ではありません。
アクティブ化については繰り返し確認したものだけでPowerShell, gvimでも発生します。
これは「時々死にます」と言ったように、基本的には反応しますがたまに反応しないという程度ですね。

外部からのファイルオープンについては、firefox以外にもgvimの--remote-tab-silentでも発生します。
D&Dについては詳しく調べていませんがCLaunchでは決まって発生することを確認しています。
これらは時々ではなく必ずそうなります。条件を変えてもそうなります。例えば、

!3::
Run, C:\program files\claunch\claunch.exe
return

とだけ書いたスクリプトでも、管理者として起動した場合には必ず再現されます。
なので、少なくともこちらは私の環境の問題じゃないと思えるんですが、情報いただけたらと思います。

414 :名無しさん@お腹いっぱい。:2014/06/18(水) 21:28:40.21 ID:AYY81YRw0.net
>>413
セキュリティーソフトが反応しているのでは?セーフモードで動作確認。

そちらの文字通り受け取るとかなり曖昧で全く意味が違う事になりますが気づいてますか?
>Activateするキーバインドが時々死にます。
*ホットキーが動作しない <文字通りならこれ
*コマンドでエラーを起こしている >ErrorLevel があるならそれで判断
*コマンドは送られているが対象が反応しない
-------------------
こちらの環境 ahk1.1.15.00 win7 x64 UAC/off Avira COMODO
AutoHotkey.exe管理者から実行/なし、コンパイル有/無+管理者から実行/なし、何度やっても問題なし

F1::
Run, C:\Users\*******\Desktop\新しいフォルダー\claunch.exe
return

415 :名無しさん@お腹いっぱい。:2014/06/18(水) 22:36:22.93 ID:yirwSBqB0.net
>>414
確認してくださりありがとうございます。

AutoHotkeyのバージョンはv.1.14.03で、セキュリティソフトはAVG Antivirus 2014 Freeですが、
一時的にAVG保護を無効にするを選んで>>414と同じようにしてもこちらでは問題の現象が起きます。
つまりD&Dしようとしてもマウスカーソルのアイコンがドロップ禁止を示すものになり、ドロップできません。

確かに曖昧な表現でした。
*コマンドは送られているが対象が反応しない
これだと思われます。
CLaunchそのものは起動しますし、ErrorLevelというものは初めて知ったんですが、
以下のようにしても通知されないのでコマンドでエラーを起こしてもいないと思います。

F1::
Run, C:\Users\*******\Desktop\a\claunch.exe
if ErrorLevel <> 0
MsgBox, %ErrorLevel%
return

416 :名無しさん@お腹いっぱい。:2014/06/18(水) 22:59:24.97 ID:mcRn+6000.net
ウィンドウが画面外に表示されているとか?
起動したらwinmoveで枠内に強制移動させてみては?
claunchはマウスカーソルのところに移動させる起動オプション /m があるので
Run, C:\Users\*******\Desktop\a\claunch.exe /m
でもいいけど。

417 :名無しさん@お腹いっぱい。:2014/06/18(水) 23:25:24.38 ID:yirwSBqB0.net
>>416
いえ、表示はされます。ですがD&Dによるアイテム登録ができません。

418 :名無しさん@お腹いっぱい。:2014/06/19(木) 04:00:33.56 ID:kbnOIcJz0.net
練習がてらのネタ投下。
ttp://ux.getuploader.com/autohotkeyl/download/41/Auto+AIM.ahk

AIM練習FlashゲームShoot用Auto AIM
ttp://www.albinoblacksheep.com/flash/shoot
Firefox推奨

419 :名無しさん@お腹いっぱい。:2014/06/19(木) 15:33:05.09 ID:7e7H0U+10.net
回答者が嫌な奴な場合お礼のレスが付かなくてワロタ

420 :名無しさん@お腹いっぱい。:2014/06/19(木) 16:13:17.05 ID:+Wm0vIyG0.net
>>417
俺もWin8.1でAutohotkeyからClAdmin.exe使わずにCLaunch起動してるけど、管理者権限でもドラッグ登録問題ないよ

もしMetroアプリ起動するならUAC完全に切れてない
http://erisy.blog.fc2.com/blog-entry-209.html

claunchのヘルプ
UAC(ユーザーアカウント制御)の影響により、管理者の権限で実行されているプログラム(アプリケーションのインストーラやタスクマネージャなど)がアクティブ化されているときには、
マウス操作やホットキーによるCLaunchの表示、および登録アイテムの直接起動ができません。
CLaunch自身を管理者の権限で起動することにより、この制約を回避することはできますが、
そうするとエクスプローラなど標準ユーザーの権限で実行されているプログラムから、ドラッグ&ドロップでファイルを受け取ることができなくなります
ClAdmin.exeはこれらの問題を同時に解決するための起動ツールです。

421 :名無しさん@お腹いっぱい。:2014/06/19(木) 17:25:51.85 ID:kbnOIcJz0.net
Win8でUACの扱いにくさに磨きがかかっていたのか

422 :名無しさん@お腹いっぱい。:2014/06/19(木) 18:50:09.21 ID:xewSJRHp0.net
高飛車な御回答者様はリアルでは気がちっこくて自分を褒めてもらいたがってるんです
おだててあげなきゃ木に登らなくなりますよw

423 :名無しさん@お腹いっぱい。:2014/06/20(金) 07:59:37.70 ID:+VGq/vrp0.net
2ちゃんで逆恨みするタイプって
現実だともっと酷いんだろな

424 :名無しさん@お腹いっぱい。:2014/06/20(金) 09:08:17.00 ID:4NqM3TSc0.net
>>422
よかったな、同じようなレスを単発で延々繰り返してやっと触ってもらえたぞ
これを糧にこれからも精進しろよ

425 :名無しさん@お腹いっぱい。:2014/06/20(金) 10:43:01.97 ID:DK2DgIAW0.net
答える方も人だし、質問する方も人だからな
質問の仕方ってのもあるけど、諭し方ってのもある
どちらも必要よ、リアルと変わらん

426 :名無しさん@お腹いっぱい。:2014/06/20(金) 10:43:41.86 ID:DK2DgIAW0.net
ま、態度があまりにもひどくて筋通ってないのは論外だろうけどな

427 :名無しさん@お腹いっぱい。:2014/06/20(金) 10:54:56.61 ID:4aBMZAYN0.net
変な奴はNGIDしてしまえ

428 :過去ログに合ったこれをテンプレにでも貼らないとだめなのかもな:2014/06/20(金) 14:56:07.47 ID:OOe6JMd10.net
● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

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

429 :名無しさん@お腹いっぱい。:2014/06/20(金) 14:56:55.81 ID:OOe6JMd10.net
★教えて君五大要素★

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



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

430 :名無しさん@お腹いっぱい。:2014/06/20(金) 14:58:02.38 ID:OOe6JMd10.net
■回答できるレベルの人へお願い■

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

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

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

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

431 :名無しさん@お腹いっぱい。:2014/06/20(金) 15:35:53.10 ID:vePxEjBI0.net
ある程度はコード晒してもいいと思うけど、程度は考えようねってことだろ。わかってるよ

432 :名無しさん@お腹いっぱい。:2014/06/20(金) 16:57:37.73 ID:+rmoo7XB0.net
2chのスレに自分の思い通りの流れでいてほしいなんて無理な話だから諦めろ

433 :名無しさん@お腹いっぱい。:2014/06/20(金) 17:01:54.74 ID:iVQO6ijb0.net
一人暇人が紛れてるみたいだな

434 :名無しさん@お腹いっぱい。:2014/06/20(金) 17:16:30.29 ID:s0dr+ypz0.net
ファイルコピーするときに目標のフォルダがなかったら勝手に作るような仕様も用意してほしかった

435 :402:2014/06/20(金) 17:43:28.10 ID:5VKd8epE0.net
>>420
お返事遅れてすみません。ドンピシャでした。UACが切れていないのが原因でした。
外部からのファイルオープンやD&Dについては多分これで解決しました。
アクティブ化については他にも問題があるようですが、とりあえずトラブルが格段に減りました。
ahkスクリプトも1つに統一することができ、とても助かりました。ありがとうございます。

>>406
UACが切れているという思い込みで手間かけさせてしまってすみません。ご対応ありがとうございました。

436 :名無しさん@お腹いっぱい。:2014/06/21(土) 01:39:21.95 ID:Vf1XsS5O0.net
UTF-8BOM無しだと使えないのはどう考えてもおかしい

437 :名無しさん@お腹いっぱい。:2014/06/24(火) 18:11:17.13 ID:prNAg8E60.net
ごみ箱の中身を確認する方法はありませんか?
Run, C:\RECYCLER だとCドラのゴミしか見れないので

438 :名無しさん@お腹いっぱい。:2014/06/24(火) 18:18:27.34 ID:JAxH2R+M0.net
やっつけでいいなら
run,c:\gomi.lnk
とか

gomi.lnkはexplorerでゴミ箱へのショートカットを作っておく
ゴミ箱以外でも気軽にリンク張れるから割と便利

439 :名無しさん@お腹いっぱい。:2014/06/24(火) 18:21:02.16 ID:PsFdwa+z0.net
shell:recyclebinfolder

440 :名無しさん@お腹いっぱい。:2014/06/24(火) 18:36:13.43 ID:prNAg8E60.net
>>438
なるほど…目からウロコです
>>439
こちらでも開けるのを確認しました

お二方とも即レス感謝です

441 :名無しさん@お腹いっぱい。:2014/06/25(水) 20:23:52.70 ID:OGtrFUD60.net
VirtualDesktop系のツールって誤動作しまくりでまともに使い物になるのなかったけど
これさくっと普通に動いて感動した
ahkすげぇ
Multiple virtual desktops - Scripts - AutoHotkey Community
http://www.autohotkey.com/board/topic/5793-multiple-virtual-desktops/

442 :名無しさん@お腹いっぱい。:2014/06/26(木) 11:58:41.66 ID:nRIjMoW10.net
>>441
なんかすごそう。あとでやってみるかな
virtual desktopsって使ったことないしよくわからんけど、UNIX系であるように、画面を切り替えて複数の別の仕事が
同時に出来るみたいなやつかな?

443 :名無しさん@お腹いっぱい。:2014/06/26(木) 12:05:38.97 ID:nRIjMoW10.net
話変わって、下記のスクリプトを作ってみたら、なんか異常な動きをするので、教えてください
これを走らせると、大抵のウインドウ上では問題なく左クリックできるし、ドラッグ&ドロップも問題なく出来るのですが
タスクマネージャーのウインドウ上や、一部特定のウインドウ上では、まったく左クリックできなくなります
また、タスクマネージャー上ではスペースキーを押しても全く反応しません
たとえばタスクマネージャーの右側にあるスクロールバーを動かすことも出来なくなります
タスクマネージャーウインドウ上で右クリックをしたらフォーカスがこのウインドウに動いて、そうなると左クリックが利くようになります
なんで?

--- 以下、スクリプト
Space::
Click
return
LButton::
Send, {LButton Down}
return
LButton Up::
Send, {LButton Up}
return

444 :名無しさん@お腹いっぱい。:2014/06/26(木) 12:14:59.60 ID:cHtiCBT00.net
再現性なし

445 :名無しさん@お腹いっぱい。:2014/06/26(木) 12:25:58.57 ID:nRIjMoW10.net
ちなみにWin7、バージョンは1.1.14.04です
頭に#UseHookをつけてもつけなくても同じです。書き忘れててごめん

446 :441:2014/06/27(金) 08:04:11.05 ID:YFIu4QGg0.net
>>443です
わたしのWin7はまだ買って3か月くらいなのですが、パソコンを再起動してやりなおしてみたら、
タスクマネージャーのウインドウ上では問題なく動きました。申し訳ありません

でも、AutoItというソフトを使っていて、これのエディタにSciTE4AutoIt3っていうのがあって
これのウインドウ上では再起動直後でも>>443の簡単なスクリプトでやっぱりおかしくなります
もともとは、AutoItスクリプトを編集しようとしてウインドウにフォーカスできなくなって気づきました
それでいろいろやってたら、タスクマネージャー上でも同じ症状が起きたので、>>443の質問になったのですが
SciTE4AutoIt3は使ってない人も多いと思うので、一旦この質問は取り下げますね

447 :名無しさん@お腹いっぱい。:2014/06/27(金) 12:30:12.96 ID:fl4MIVHC0.net
>>446
自分、xp 32bitだけども2種類のSciTE使ってる。
でも>>443のスクリプトは無問題で動く。

・AutoIt3 ver3.3.12.0
・SciTE4AutoIt3 ver3.4.1(多分一番新しい)

・AutoHotkey ver1.1.15.00
・SciTE4AutoHotkey ver3.0.04.01(事情でupdateしてない)

もうちょっと言うと、 >>443のスクリプト + MGL ver1.20(幾つかのplugin)立ち上げて、
更に、【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
http://anago.2ch.net/test/read.cgi/software/1384313234/438
http://anago.2ch.net/test/read.cgi/software/1384313234/442
で、SciTE4AutoIt3とSciTE4AutoHotkeyを同時起動してる状態で確認。

参考にはならないと思うけども、同じ「日本で希少なAutoIt3(SciTE4AutoIt3)使い」の情報を一応。

448 :441:2014/06/27(金) 15:56:39.47 ID:77zvSBeR0.net
>>447
お返事ありがとう。わたしもこの前まで使ってたXPでやってみました。ちゃんと動きましたね
でも、Win7ではやっぱりダメです。プラットフォームによって動きが違うとか、なんかめちゃいやですねえ

AutoItは最近知って使い始めました。以前はGhostTracerを使ってました。こんな便利ですばらしいものがあったなんて
もっと早く知ってればとほんと悔しい思いをしましたよw
なんで日本でもっとメジャーにならないのかほんと不思議でなりませんww

449 :名無しさん@お腹いっぱい。:2014/06/27(金) 16:08:08.96 ID:jG5NMKeW0.net
>>448
>>8のQ6は?

450 :名無しさん@お腹いっぱい。:2014/06/27(金) 17:00:38.74 ID:77zvSBeR0.net
ああ、これかあ。ありがとうございました
AHKファイル上で右クリックで管理者として実行ってやったら問題なく動きました

451 :名無しさん@お腹いっぱい。:2014/06/28(土) 08:36:16.79 ID:Q0E6JxLv0.net
>>441
これ、やってみたけどなかなか面白いねえ
でもデスクトップ上に置いてあるアイコン等も一緒に変えられたらもっといいね
これは単にウインドウを表示したり隠したりしてるだけなんだな

452 :名無しさん@お腹いっぱい。:2014/06/29(日) 09:46:40.92 ID:vZXQ1YPC0.net
文字列のカンマの置き換え、やり方解る人いますか?

StringReplace, Clipboard, Clipboard, ",", +, All

だと期待通りに動きません。

453 :名無しさん@お腹いっぱい。:2014/06/29(日) 09:49:09.29 ID:vZXQ1YPC0.net
あ、なんかスマートじゃないけどComma = , で変数にしてやれば動きました。

454 :名無しさん@お腹いっぱい。:2014/06/29(日) 11:05:28.37 ID:fY48RzGu0.net
えすけーぷ

455 :名無しさん@お腹いっぱい:2014/06/29(日) 12:19:55.29 ID:t1j+j0Hm0.net
アプリ起動時に(起動直後のみ) 1回だけ 自動的に ahkをreload 
させる命令を送りたいのですが上手くいきません。

#IfWinActive ahk_class ○○
Reload This Script
Return
a::b
Return
c::d
Return
#IfWinActive

この記述だと、永久的にReloadを繰り返している?ようで、
タスクバーのAHKアイコンが点滅し続け、スクリプトも機能しません。

どなたかアドバイスください。

456 :名無しさん@お腹いっぱい。:2014/06/29(日) 12:29:33.92 ID:0BrASA2P0.net
一度iniにフラグを書きだそう

inireadとiniwriteの合わせ技でフラグを外に置いてifで分岐すればいい

457 :名無しさん@お腹いっぱい。:2014/06/29(日) 12:40:51.31 ID:vipcKKwi0.net
ifexist, _rld
{
filedelete, _rld
}
else
{
fileappend,, _rld
reload
return
}

ファイルをフラグ代わりにしてもいい

458 :453:2014/06/29(日) 12:55:56.12 ID:t1j+j0Hm0.net
>>457
早速のアドバイスありがとうございます。
inireadとiniwriteの合わせ技というのが良くわからず、
単純にahkファイルに記述したのですが、reloadしないようです。

459 :名無しさん@お腹いっぱい。:2014/06/29(日) 14:30:02.99 ID:n5vqyclp0.net
>>458
>inireadとiniwriteの合わせ技というのが良くわからず、
iniの読込にはinireadコマンドを、iniの書き込みにはiniwriteコマンドを使いなさい。
ってことじゃないの>>456が言いたいのは。

例えば、hoge.iniというiniファイルを用意して以下の通り記述したとする。
[WinExist]
winclass_○○=0

このスクリプトの起動時、inireadで「winclass_○○」の値を読み取りフラグ変数に代入する。(autoexecセクションに記述する)

「ahk_class ○○」のウインドウが存在し、尚かつアクティブで、尚かつフラグ変数の値が「0(false)」なら、
iniwriteで「winclass_○○」の値を「1」に書き換える。
次に、「ahk_class ○○」のウインドウが存在しなくなったら、
iniwriteで「winclass_○○」の値を「0」に書き換える。
これをsettimerで定期的にウインドウを監視すれば良いんじゃないか?
※頭で考えただけで、実際に動作確認してないので間違ってる可能性有り。

あと、 >>455のスクリプトはリマップとその他のスクリプト(通常のスクリプト?)とがごっちゃになってるみたいだから、
リマップはリマップだけでまとめて書いた方が後々見やすいと思う。

460 :名無しさん@お腹いっぱい。:2014/06/29(日) 14:58:00.79 ID:x/xGRecG0.net
やり方指導とは関係ないが、何故起動時にreloadが必要なの?
理由次第ではreloadよりいい方法があるんではないかな

461 :名無しさん@お腹いっぱい。:2014/06/29(日) 15:21:20.84 ID:vipcKKwi0.net
的外れなレスしたみたいだから455は無視してね

462 :名無しさん@お腹いっぱい。:2014/06/29(日) 18:29:50.18 ID:IWQewZtq0.net
>>455
SetTimerで監視すればいい。

初回起動(Auto-executeセクション)対象があるなら↓3:開始
1:対象が無いなら適当に500msでタイマー監視開始
2:見つかったらタイマーOff
3:対象が終了するのをタイマー監視開始
4:対象が終了したら1:を開始.....

>>460 も言ってるが、まず最初に何がしたいのか書いてほしい。
*以降推測
対象がホットキー系の機能を使用している場合、後に起動した方が優先される。その為のReload?
APIフック使わずにAHKフック(#UseHook)使えば解決する場合がある。

463 :名無しさん@お腹いっぱい。:2014/06/29(日) 20:22:59.42 ID:Z/HXBxQP0.net
元々のショートカットキーCtrl+f,Ctrl+bをCtrl+@をはじめに押してか
ら次に押すまでCtrl+Alt+f,Ctrl+Alt+bに置き換えたくてスクリプトを
書きましたがうまく行きません。
C-f,C-bはテキストエディタのカーソルの左右移動として、
C-M-f,C-M-bは左右の文字の選択として使おうと思っています。
アドバイスいただけないでしょうか
Loop{
Sleep, 1000
KeyWait, ctrl, D
KeyWait, @, D
MsgBox, start
Loop{
if(GetKeyState("Ctrl", "f"))
Send,^!f
else if(GetKeyState("Ctrl", "b"))
Send,^!b
else if(GetKeyState("Ctrl","@")){
MsgBox, end
Break
}
}
}

464 :名無しさん@お腹いっぱい。:2014/06/29(日) 20:48:49.69 ID:IWQewZtq0.net
>>463
ホットキーに登録:Ctrl+f Ctrl+b Ctrl+@
Ctrl+@:押す度に変数(例:Flag)増減 Flag + 1 、Flag - 1
Ctrl+f Ctrl+b:変数の値で発行するキーを変更 If+send

465 :名無しさん@お腹いっぱい。:2014/06/30(月) 00:17:03.99 ID:kJvHYPcl0.net
CUIを動かすGUIソフトを使っていて基本的に後ろで動かしたいのですが、そのGUIにCUI実行中の画面を非表示・最小化にする機能がなくて、次の作業にうつるたびに現在使用中のウィンドウのフォーカスが奪われてしまいます
フォーカスを奪われないようにしたいのですが、色々と常駐させているのでsettimer以外でWinSetで最前面に表示するをトグルさせるようにしたいのですが実装する方法はありますか?

466 :453:2014/06/30(月) 00:25:43.66 ID:mtL6XQ+L0.net
皆さん、レスありがとうございます。

AutoHotkeyを起動後、Notepadを起動、
Notepadにて作業、作業終了後、Notepadを終了。
その後、Notepadを新規に開き、作業を始めようとすると、
AutoHotkeyが起動している(タスクバーに存在)にもかかわらず、
リマップが効かなくなっていることがしばしばある。
そんな時はAutoHotkeyをReloadすると、リマップが有効になる。
AutoHotkeyを終了し、再起動しても同じく有効になる。

よって、やりたいことは、
Notepadを新規に開いた時に、自動的にAutoHotkeyをReloadしたいのです。

よろしくお願いします。

467 :名無しさん@お腹いっぱい。:2014/06/30(月) 00:46:45.02 ID:gtp3dbxH0.net
>>466
既に答えが出てる試した? >>462
言ってる意味が分からないならリファレンスを読み直そう。

468 :名無しさん@お腹いっぱい。:2014/06/30(月) 01:06:03.01 ID:/riqDWtW0.net
>>464
ありがとうございます、やってみます

469 :名無しさん@お腹いっぱい。:2014/06/30(月) 01:09:30.82 ID:gtp3dbxH0.net
>>465
最小化も非表示もOSの機能だから呼び出せば?
ソフト側の想定外の状態だろうから処理エラーが出るかも。

非表示 WinHide + WinShow
タイトルバーを表示 WinSet +-0x00C00000
最小化の許可 WinSet +-0x00020000

470 :名無しさん@お腹いっぱい。:2014/06/30(月) 01:26:09.69 ID:SIZuvDuE0.net
>>465
OnMessage()でWM_ACTIVATEあたりを拾ってみるのはどうだろう?


>>466
それは対症療法でどうにかするんじゃなく、リマップが効かなくなる理由のほうを直さないと

原因とは関係ないけど>453のおかしい所
> #IfWinActive ahk_class ○○
> Reload This Script
> Return
#IfWin〜は特定の条件下でホットキー効かせるためのもの
ホットキー指定なしで Reload指定しても有効にならない
現状でリロードループに陥ってるのはAuto-executeセクションとして認識されてるから
http://ahkwiki.net/Scripts#Auto-execute
> a::b
> Return
リマップにはReturn書かない
http://ahkwiki.net/Remap

こういうことの積み重ねでどっかで止まってるんだと思われ

471 :名無しさん@お腹いっぱい。:2014/06/30(月) 22:39:29.50 ID:h723feWe0.net
>>6のQ9みたいな事例はまだ経験したこと無いんですが、
いつ何時起こるか分からないので、その時にパニックに陥らないよう、
いざという時↓のスクリプトを走らせようかと書いてみたのですが、
これで十分ですか?足りない部分が有ればご指摘下さい。

Send, {Alt Up}
Send, {LAlt Up}
Send, {RAlt Up}
Send, {Ctrl Up}
Send, {LCtrl Up}
Send, {RCtrl Up}
Send, {Shift Up}
Send, {LShift Up}
Send, {RShift Up}

472 :名無しさん@お腹いっぱい。:2014/07/01(火) 05:12:31.56 ID:dCSlrpxP0.net
これはなんで最後 数値に変換されてしまうのでしょう?
x = 1と参照はしてるけど、xの値は変わってないのに
(o.Insert("" . x) とすれば回避できますが、どういう時にこういうことが起こるのか知りたい)
versionはv1.1.14.03

o := Object()
x := "0xf"
msgbox, % x ; 0xf
o.Insert(x)
msgbox, % x ; 0xf
msgbox, % o[1] ; 0xf
if (x = 1) {
}
msgbox, % x ; 0xf
o.Insert(x)
msgbox, % x ; 0xf
msgbox, % o[2] ; 15

473 :名無しさん@お腹いっぱい。:2014/07/01(火) 13:04:42.24 ID:+S2KheLO0.net
>>471
それでもいいけど
この1行でいいんじゃね?

send,{Lctrl up}{Rctrl up}{Lshift up}{Rshift up}{Lwin up}{Rwin up}{LAlt up}{RAlt up}{Lbutton up}

474 :名無しさん@お腹いっぱい。:2014/07/01(火) 21:01:41.60 ID:Rb9pcKUh0.net
>>472
ifでx参照する際に10進数の数値として扱われているのが原因?・・・。

*対策
文字列として扱う x = "0xf"
出力する際に16進数として扱う SetFormat, IntegerFast, h

475 :名無しさん@お腹いっぱい。:2014/07/01(火) 22:06:13.24 ID:PDjs0ZRy0.net
>>473です。
>>473
レスありがとうございます。
1行で書いた方がスマートですね。

476 :450:2014/07/01(火) 22:45:04.80 ID:Dl4eSanY0.net
以前質問したものですが、当方の環境だとなぜかエスケープが使えないようです。
例えば

MsgBox, 4, , This is the 3-param method, non-escaped commas ok.`n`nContinue?

これだとエスケープが効かずに文字がそのまま出てしまいます。
原因解る方いますか?

477 :450:2014/07/01(火) 22:54:57.00 ID:Dl4eSanY0.net
自己解決しました。
コピーしてきたスクリプトの中に#EscapeCharが紛れてました。

478 :名無しさん@お腹いっぱい。:2014/07/04(金) 21:53:18.83 ID:beWCQ06q0.net
LButton::
Send, {LButton Down}
return
LButton Up::
Send, {LButton Up}
return

この簡単なスクリプトを入れただけで、下記のおかしな動作になることがわかりました

AからBフォルダーにファイルをコピーするときに、Ctrlキーを押してからAのファイルを左クリックして
ドラッグ&ドロップでBフォルダーに移すとちゃんとコピーされるが、
Aのファイルを左クリックしてからCtrlキーを押してBフォルダー上へ移すと、ツールチップはBへコピーと表示されるが、コピーされずに移動になる

Aのファイルを左クリックしてBフォルダーへ移すと、ツールチップはBへ移動とでる。そのままBフォルダー上でCtrlキーを押すと
ツールチップはBへコピーに変わるが、実際はコピーはされずに移動になる

479 :名無しさん@お腹いっぱい。:2014/07/04(金) 22:00:54.13 ID:VTk2OMMT0.net
一体何をしようとしてるのかよくわからんのだが、左クリックの機能を残したいの?
フックはしてみた?
そもそもキー機能を残すだけなら~を先頭に付けたほうが安定するよ

480 :461:2014/07/04(金) 22:05:42.31 ID:XeY95yY60.net
461です。下で思っていた動作はしたのですがRightを^f,Leftを^bとしたとき動作しませんでした。わかる方いらっしゃいませんか
^f::
if(flag = 1)
Send,^!f
if(flag = 0)
Send,{Right}
Return

^b::
if(flag = 1)
Send,^!b
if(flag = 0)
Send,{Left}
Return

481 :名無しさん@お腹いっぱい。:2014/07/04(金) 22:13:51.27 ID:VTk2OMMT0.net
なんか書き方まずいなそれ
^@::
flag:=!flag
return

これでフラグをトグルして

^f::
if(flag = 1)
{
Send,^!f
}
else
{
Send,{Right}
}
return

こうじゃね?

482 :名無しさん@お腹いっぱい。:2014/07/04(金) 22:27:28.73 ID:+I1IjnFI0.net
>>480
フックを使わないとSendで発行したキーにもホットキーが反応する。
ttp://ahkwiki.net/-UseHook

意図した動作をしない場合は右下のHアイコンダブルクリックして
スクリプトやキー操作履歴を見よう。

以下のコマンド必須
#InstallKeybdHook
#InstallMouseHook

483 :名無しさん@お腹いっぱい。:2014/07/04(金) 22:28:43.57 ID:VTk2OMMT0.net
あーそっちか

ファイルの先頭に#Usehook書くのはクセにしておいたほうがいろいろといいよ
もしくは先頭に$か

484 :名無しさん@お腹いっぱい。:2014/07/04(金) 22:43:41.39 ID:XeY95yY60.net
>>482 うまくいきました。操作履歴とフックを使うのを忘れないようにします
>>483 ^@::でifを2回使ってたのですが使わずにできるのですね
お二方、ありがとうございました

485 :名無しさん@お腹いっぱい。:2014/07/04(金) 23:57:56.05 ID:2pnBbErn0.net
>>484
横から申し訳ないけど、条件毎に分けるこういう書き方はどうでしょう?

#IF (flag = 1)
^f:: 〜
^b:: 〜
#IF ;この行無くても良い?

#IF (flag = 0)
^f:: 〜
^b:: 〜
#IF

486 :名無しさん@お腹いっぱい。:2014/07/05(土) 08:10:05.98 ID:+CTvr4X+0.net
>>479
実際はもっと複雑な分岐等の入ったスクリプトになってる中で、問題が起きたのでいらない部分をそぎ落としただけですよ
UseHookはつけてもつけなくても変わりません
〜はつけてやってみたら、ファイルコピーは問題なくできたけど、ダブルクリックが出来なくなったり(UseHookつけてもつけなくてもダメ)
エディター上で左クリックをしただけでワード単位で選択されたりして、使えませんね

487 :名無しさん@お腹いっぱい。:2014/07/05(土) 08:42:38.70 ID:fzntzH1a0.net
>>478
おま環

488 :名無しさん@お腹いっぱい。:2014/07/05(土) 09:24:18.07 ID:U7BgDO8b0.net
マウス左ボタン係は下手にいじらんほうがいいよ、鬼門だ
カーソル遅延とかドラッグとかどうしても生動作ほどスムーズにはできない
単純なスプリントでは代替できないと思っといた方が良い

489 :名無しさん@お腹いっぱい。:2014/07/05(土) 09:26:46.32 ID:U7BgDO8b0.net
×スプリント
○スプリクト

490 :名無しさん@お腹いっぱい。:2014/07/05(土) 09:58:11.50 ID:YB7aTz7U0.net
>>485 if(flag=)で最初書いててうまく行かなかったんですけど#ifと書けばよかったんですね。かなり行数減らせました。ありがとうございます

491 :名無しさん@お腹いっぱい。:2014/07/05(土) 10:31:46.35 ID:+CTvr4X+0.net
>>487
マジか? 俺だけ?
>>488
ありがとう。AutoHotKey使い始めてまだ日がないんだけど、いろいろ癖になれるまではトラブりそうです
Ctrlキーを押したらツールチップは移動からコピーに変わったからコピーされてると思ってたらコピーされてなくて
元の大事なファイルを亡くしてめちゃ痛い目に会いました。ちょっと報告しておこうと思いました

492 :名無しさん@お腹いっぱい。:2014/07/05(土) 10:44:32.23 ID:DQf6QU/n0.net
スクリプトの全体像が見えないとなんにも言えねぇ

493 :名無しさん@お腹いっぱい。:2014/07/05(土) 19:39:55.64 ID:sP/l41QH0.net
AHKでテキストフィールドにフォーカスがあたっているかどうかのイベント取得はできるんでしょうか?
C-hでのBSやC-mでのEnterを、テキスト入力時のみに限定したいのです

検索の仕方が悪いのか、ぐぐっても情報が見つからず・・
http://ahkwiki.net などは調べています

494 :名無しさん@お腹いっぱい。:2014/07/05(土) 20:32:31.14 ID:0mLby/bi0.net
イベントは状態じゃないので、1行目の書き方はおかしいが、
まぁ、なんとなくいいたいことは分かる。

まじめにフォーカスの移動を検知してキーマップ変えたいなら以下を参照に
https://sites.google.com/site/agkh6mze/howto/winevent
でも、フォーカスが当たったところが入力エリアかどうかは自分で判定してやる必要がある。

擬似的にやるなら、キャレットの有無や位置でやる。
これも一般的なテキスト入力欄には効くけど、
最近のブラウザはキャレット処理自体も自前なのでほぼ太刀打ちできない。

いずれにせよ、完璧に制御する決定打は無いんじゃないかな。

495 :名無しさん@お腹いっぱい。:2014/07/05(土) 20:49:40.52 ID:c+zhnuul0.net
>>493
*指定ウィンドウの現在フォーカスを持っているコントロールのClassNNを取得 ControlGetFocus ttp://ahkwiki.net/ControlGetFocus
*組み込み変数 A_CaretX A_CaretY キャレットの座標で判断 ttp://ahkwiki.net/Variables
*IMEの状態で判断 IME.ahk ttp://www6.atwiki.jp/eamat/pages/17.html

※独自描写を行っているソフト(firefox等)ではIME+画像/マウス座標などで判断するしか無い。

496 :名無しさん@お腹いっぱい。:2014/07/06(日) 02:22:58.51 ID:XPp6jgfj0.net
MouseGetPos,,,,OutputVarControl
If (OutputVarControl = "GeckoPluginWindow1") or If (OutputVarControl = "GeckoPluginWindow2")

うーん、firefoxプラグインのコントロール上でだけ別の操作ってのは完成したんだが、この

If (OutputVarControl = "GeckoPluginWindow1") or If (OutputVarControl = "GeckoPluginWindow2")

の行のGeckoPluginWindow2とかワイルドカードにできないかな。
最後の数字だけが違うだけで何行も書き連ねなきゃいけないのはスマートに思えない

497 :名無しさん@お腹いっぱい。:2014/07/06(日) 03:06:23.56 ID:tpnInoV60.net
>>496
If RegExMatch(OutputVarControl, "^GeckoPluginWindow\d+$")

関数の戻り値を利用、関数は式なので覚えておこう。

498 :名無しさん@お腹いっぱい。:2014/07/06(日) 03:20:52.16 ID:XPp6jgfj0.net
>>497
こんな方法があったのか……
If式として使えるのは初めて知ったよありがとう

499 :名無しさん@お腹いっぱい。:2014/07/06(日) 08:05:35.13 ID:kxQlqFFJ0.net
>>493
ControlGetFocus

500 :491:2014/07/06(日) 15:21:36.46 ID:8fexpNHQ0.net
>>494-493,497
ControlGetFocusを用いる方法は、ClassNNの文字列で入力エリアかどうか判別するという理解で良いですよね?
試してみたのですが、入力エリアを一意に判別できるキーワードが見つからず、断念しました
(捉え違えていたらすみません)

そこで、A_CaretX/Yを用いて以下の様な仕組みにしてみました
エクスプローラなど一部のソフトでは入力エリア以外でもキャレットの値が帰ってきてしまうため
まだ改良が必要だとは思いますが・・・
ありがとうございました!

~Ctrl & H::
If (A_CaretX != 0 && A_CaretY != 0)
{
Send,{BackSpace}
Return
}

501 :名無しさん@お腹いっぱい。:2014/07/06(日) 18:19:04.96 ID:OBDATg0O0.net
>ControlGetFocusを用いる方法は、ClassNNの文字列で入力エリアかどうか判別するという理解で良いですよね?
ボタンやラベルなら文字列判別でもいいけどEditBoxではそれは無理
Edit1 とかのClassNN名称で指定する

502 :名無しさん@お腹いっぱい。:2014/07/06(日) 18:21:08.75 ID:OBDATg0O0.net
ごめんSetFocusと勘違いした、499は忘れてちょ

503 :名無しさん@お腹いっぱい。:2014/07/06(日) 19:31:58.73 ID:XPp6jgfj0.net
こんなところで聞くことじゃないけど、MSDNってどこで勉強できる?
calldllとかイミフすぎる

504 :名無しさん@お腹いっぱい。:2014/07/06(日) 19:45:06.49 ID:tpnInoV60.net
アンカーを付けてほしい、ログで見るときにすごく見にくい。

505 :名無しさん@お腹いっぱい。:2014/07/06(日) 21:29:37.40 ID:Y9gdoZD40.net
アンカーツリー文化はニフティの衰退と共に滅びたと思ってたが

506 :名無しさん@お腹いっぱい。:2014/07/06(日) 22:32:58.13 ID:5W9Kr20F0.net
>>493
そもそも論で悪いんだが、何故入力エリア限定のリマップしたいわけ?
誤動作が怖いのなら、適用させる(させない)ウインドウを指定する形にすれば良い気がするけど。

例えば、適用"させない"ウインドウを指定してリマップ
#IfWinNotActive, ahk_class Notepad
^h::send,{BS}
複数のウインドウを指定したいならGroupAddでグループ作って、
#IfWinNotActive, ahk_group グループ名
^m::send,{ENTER}

頓珍漢な事言ってたらご免。

507 :名無しさん@お腹いっぱい。:2014/07/07(月) 00:01:14.21 ID:k0JPporY0.net
>>489
×スプリント
×スプリクト
○スクリプト

508 :名無しさん@お腹いっぱい。:2014/07/07(月) 01:06:03.55 ID:fmtqksWp0.net
(ノ∀`) アチャー

509 :491:2014/07/07(月) 01:35:18.74 ID:qshqbG/d0.net
>>506
仰る通りです、はい
建前(というか言い訳?)としては、仕事柄いろいろなソフトを使う機会があるので
なるべく保守性・汎用性の高いものを…という思いがありました

「テキストエリアのみ」ルールが小一時間で作れるのであれば良かったのですが、なかなか難しいものですね

アドバイス頂いたとおり、誤作動のたびにGroupAddにウィンドウ名を書き足す形で運用したいと思います
ありがとうございました!

510 :名無しさん@お腹いっぱい。:2014/07/07(月) 02:19:21.86 ID:kucA2Sl70.net
>>503
いろいろな言語で利用する物だから、教本がそろっている言語で勉強してから
AHKで読み解くのが一番深く理解できると思う。

「AutoHotkey 関数名」とかでググれば先人たちの使い方見て何となく分かるので不自由ないがw

511 :名無しさん@お腹いっぱい。:2014/07/07(月) 21:58:11.95 ID:tECN2NzM0.net
一瞬スクリプトなのかスプリクトなのか
分からなくなったじゃねえか

512 :名無しさん@お腹いっぱい。:2014/07/08(火) 09:02:14.86 ID:C/uTCN1o0.net
>>503
Micro SoftのMSDNのページだったか、開発者向けのページだったかに、Windows Programmingの
説明が普通の入門書レベルで一冊分くらいなかったっけ?

そんな入門編はいらねーぜ!とか、もう読んだよっていうなら、MSDNの中を検索しながらうろつくことに
なると思う。
calldllとかその辺の関数は、それなりにまともな開発言語を使えないと意味わからないと思うから
C#とかC++(MS推奨言語w)をざっと勉強してからのほうがわかりやすいと思うよ。

513 :名無しさん@お腹いっぱい。:2014/07/08(火) 10:35:32.48 ID:oK/rBJ8l0.net
簡単な""で挟むスクリプトですが

Dq(){
bk := clipboard
send,^x
ClipWait, 0.2
if(ErrorLevel = 0){
send,"
send,^v
send,"
}
clipboard := bk
return
}

期待通りに動作しません。グーグルの検索窓などでこれを実行すると10%くらいの可能性で失敗します。
clipboardのバックアップの行を戻すと失敗率が減ります。何か原因解る方教えてください。

514 :名無しさん@お腹いっぱい。:2014/07/08(火) 10:36:38.28 ID:oK/rBJ8l0.net
以上はうまくいかない最小構成で、色々機能をつけるとどうも失敗率があがります。

515 :名無しさん@お腹いっぱい。:2014/07/08(火) 11:38:03.28 ID:V3S0UtBv0.net
>>513
どんな失敗か書いてないが、Sendの入力速度が速すぎるのかと。

*SetKeyDelay
*Sleep
*入力モード変更
*まとめてから入力
  Clipboard = "%Clipboard%"

516 :名無しさん@お腹いっぱい。:2014/07/08(火) 12:21:21.87 ID:oK/rBJ8l0.net
グーグルの検索窓でテキストにこれを掛けまくると解るのですが、
最初のクリップボードの内容が出現してしまいます。
色々やってみましたがお手上げ状態です。

期待通り→Send,"%Clipboard%"
失敗時 →Send,%bk% バックアップ用の変数
bk関連行なし→空白が戻る

517 :名無しさん@お腹いっぱい。:2014/07/08(火) 12:22:19.53 ID:oK/rBJ8l0.net
訂正:

bk関連行なしの失敗時→空白が戻る

518 :名無しさん@お腹いっぱい。:2014/07/08(火) 12:43:29.24 ID:FnwPeEGi0.net
もらったレスで解決してんじゃん

519 :名無しさん@お腹いっぱい。:2014/07/08(火) 13:29:56.61 ID:hKRDY5A90.net
ClipWait, 0.2のタイムアウトが早すぎるんじゃね

520 :名無しさん@お腹いっぱい。:2014/07/08(火) 15:21:38.31 ID:kEmkCp6+0.net
>>516
スクリプト実行前からクリップボード内に何かが入ってると、ClipWaitは
send,^xが失敗したとき、スクリプト実行前のそれを見て成功と見なすよ

521 :名無しさん@お腹いっぱい。:2014/07/08(火) 18:49:05.39 ID:PCKQpxPc0.net
>>513
IMEの状態を考慮したらこっちの方がまだ良いと思う。
あなたの環境でまともに動くか分からないけど。

Dq(){
bk := clipboard
clipboard =
send,^x
ClipWait, 2
if(ErrorLevel = 0){
clipboard := """" . clipboard . """"
send,^v
}
clipboard := bk
return
}

522 :名無しさん@お腹いっぱい。:2014/07/08(火) 21:10:56.03 ID:PCKQpxPc0.net
もう答え出てましたね、スンマソン

523 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:10:19.92 ID:WHhO2dKf0.net
clipboardを空にしておく、ってのが一番の肝だったのですね
これは知ってないとわかりませんね

524 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:28:21.12 ID:3mJik+nm0.net
一言礼ぐらい言えんのかよ
知ってないとわからんも何もClipWaitのExample(s)にそのまんま例が載ってるだろ
知らんでもちょっと読めばすぐ知ることができる情報だ

525 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:29:37.03 ID:WHhO2dKf0.net
なんだおめえは。おれは質問者じゃねえよ

526 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:35:27.82 ID:YnscYJCz0.net
じゃあ1行目は質問者に、2行目以降はお前にってことだろ

527 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:38:04.10 ID:WHhO2dKf0.net
なんか変な基地外が湧いてるなあ。こんなことで突っかかって
まさかID変えて入ってきたりしてねえよな

528 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:47:12.52 ID:3mJik+nm0.net
自演認定とか勘弁してください
質問者じゃないことも考えたけど省略してすまなかった
だが「知らんとわからん」とか突っ込まれても仕方ない

529 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:53:09.60 ID:WHhO2dKf0.net
上のほうで、タイムアウトが早すぎるんじゃねって言ってるやつもいるだろ
だから、ちょっと一行まとめただけだろ。おれは横から見ていて、これはおれも気を付けておこうと思って
なかなかいい流れだったからちょこっと書いただけだよ。あんまり大上段に変ないちゃもんつけんなよ
これ以上このスレ荒らしたくないからここまでにしとくわ。お前もここまでにしといてくれ

530 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:54:14.92 ID:ckCfs67q0.net
ClipboardやClipWaitのExample(s)に書いてある
つまづいた時は関連コマンドのExample(s)コピペして動作確認するといいよ


なんか最近、自分はちゃんと書いてるのにうまく動かないですけど? って感情を押し殺せない感じで
質問してくる人多いな、同一人物かも知らんけど
まあ>>472あたりはバグっぽいなとは思ったけど、たかを括ってるような聞き方が気になった

531 :名無しさん@お腹いっぱい。:2014/07/09(水) 08:56:40.53 ID:S0xlX+ip0.net
ID:WHhO2dKf0 いろいろ過敏な奴だなww

532 :名無しさん@お腹いっぱい。:2014/07/09(水) 09:17:33.40 ID:3mJik+nm0.net
>>530
やりたいことできそうなコマンド見つけたらExample(s)見るといいヒント載ってることが多いよね
あと、やりたいのと違うコマンドだったとしても、Relatedをチェックすると目当てのコマンドが見つかったり
説明書みたいなもんなんだから、いきなり全部読めとは言わんがわからんかったら読めよと

533 :名無しさん@お腹いっぱい。:2014/07/09(水) 09:26:31.28 ID:wQwn8zPV0.net
言われるより先に相手をキチガイ扱いしたからといって
自分のキチガイぶりが打ち消されたりはしませんよ

534 :名無しさん@お腹いっぱい。:2014/07/09(水) 14:31:18.80 ID:y63RGsRUi.net
殺伐としたスレにryのAA↓

535 :名無しさん@お腹いっぱい。:2014/07/09(水) 14:49:00.48 ID:ckCfs67q0.net
>528は>>523へのレスのつもりだったが
リロードしないで書き込だら追い打ち的な感じになってて焦ったわ
何やら朝からエキサイトしてたんだな

528の後半にも書いたけど自分はあまりいい流れには感じてなかったな
>521は敬語じゃなかったら質問者と混同されることはなかったと思う

536 :名無しさん@お腹いっぱい。:2014/07/09(水) 14:53:49.80 ID:gb2IP5Ck0.net
なんだ、このスレも下らない連中が多いんだな

537 :名無しさん@お腹いっぱい。:2014/07/09(水) 15:52:23.01 ID:QoT04iL70.net
今日はちょっと蒸し暑いからな

538 :名無しさん@お腹いっぱい。:2014/07/09(水) 17:01:22.00 ID:uvMENszb0.net
台風のせいで電波が乱れてるんだろ

539 :名無しさん@お腹いっぱい。:2014/07/09(水) 19:14:18.96 ID:hHbY86UZ0.net
どれ、川を見に行ってくるか

540 :名無しさん@お腹いっぱい。:2014/07/09(水) 19:38:44.62 ID:JMD6R42/0.net
オレも含めて>>536-538 こういうのが一番下らんと思う

541 :名無しさん@お腹いっぱい。:2014/07/09(水) 19:44:23.34 ID:Wx03ayyx0.net
>>540
お前さんは空気読めないって言われないか?
また殺伐とさせたいのかい?

542 :名無しさん@お腹いっぱい。:2014/07/09(水) 20:01:16.00 ID:TJdJ462Y0.net
ブーメランwww

543 :名無しさん@お腹いっぱい。:2014/07/09(水) 20:03:55.03 ID:gb2IP5Ck0.net
>>536-537でスレチな話を展開しているところに>>540で更にそのスレチな話についての話をすることで完全に流れを脱線させるというスレ嵐の初等テクニックでつね

544 :名無しさん@お腹いっぱい。:2014/07/09(水) 20:44:12.65 ID:QoT04iL70.net
油断ならないな

545 :名無しさん@お腹いっぱい。:2014/07/09(水) 22:59:33.68 ID:Y7qNo3Ym0.net
調べてもわからんかったので聞きたい

MG_RB_Enable:
Hotkey,*RButton,MG_RB_DownHotkey,On
Hotkey,*RButton up,MG_RB_UpHotkey,On
return

MG_RB_Disable:
Hotkey,*RButton,MG_RB_DownHotkey,Off
Hotkey,*RButton up,MG_RB_UpHotkey,Off
return

MGLのコンフィグの中のこれって結局何をしとるの?

546 :名無しさん@お腹いっぱい。:2014/07/09(水) 23:09:12.73 ID:Narj3j5Y0.net
>>545
ttp://ahkwiki.net/Hotkey

547 :名無しさん@お腹いっぱい。:2014/07/10(木) 01:25:34.00 ID:Pbh4X3rm0.net
autohotkeyでローカルにあるファイルを削除するためだけの.ahkを作成したいのですが、
一行だけ
FileDelete,"E:\work\XRecode_II_v1.0.0.rar"
とやっても削除してくれません。なにかしら前後に必要な行を足さないといけないのでしょうか?
初心者です。おしえてください

548 :名無しさん@お腹いっぱい。:2014/07/10(木) 01:31:22.10 ID:Pbh4X3rm0.net
>>547 すいません。"" 取ったら動きました...

549 :名無しさん@お腹いっぱい。:2014/07/10(木) 02:19:36.99 ID:oA+zi8OB0.net
>>547
Autohotkey使い始めて1年ぐらいしか経ってないため、スクリプトで文字列や変数扱う時に未だにハマること多い。
出来ることなら「文字列は必ず "" で括る」とか「変数は必ず %% で括る」に統一して欲しい。
それと、 = 、:= の使い方(使い分け)もホントややこしい。

550 :名無しさん@お腹いっぱい。:2014/07/10(木) 02:35:17.48 ID:BxlRLJ0/0.net
=は使わず:=のみ
if分は必ず()を使う
コマンドの引数で文字列をとるところは必ず% を使う
っていう自分ルール決めればそうそう間違える事はない

551 :名無しさん@お腹いっぱい。:2014/07/10(木) 03:10:20.46 ID:ek1DDgNK0.net
そこらへんはJScriptをほんの少しだが齧ったら型だとか式だとかの意識が付いたから大丈夫だが
()を付けないif文だとifと同じ行に中括弧を置けないのが地味に嫌
エラーが出るのが嫌でどっちの場合でも違う行に置くようにしちゃったけど
やたら長ったらしくなる

552 :511 514:2014/07/10(木) 03:11:41.22 ID:L+vfDYnb0.net
>>521
>>520
ありがとうございます。ClipWaitの仕様を知りませんでした。

>>521
試させてもらいましたが、失敗率40%ぐらいでダメでした。

クリップボードを空にしてもダメでした。これは以前から確認していました。
もしかしたらこちらの環境に原因あるのかもしれません。
結局ClipWait使わない、”Send,^x”を信頼せずに、重そうなプロセスわけと、Send,^cを組み入れることで保険をかける仕様にしました。

スレが荒れてしまったようですみません。

553 :名無しさん@お腹いっぱい。:2014/07/10(木) 19:30:58.30 ID:ClRAgs4G0.net
()が無いのはコマンド。
If A = 0    ←  If A > 0
IfEqual, A, B  ← IfGreater, A, B

で、コマンドは大抵は、第一引数が操作・参照したい変数で
残りはリテラル(書いてあるものをそのまま値として解釈する)

要は↓とかと同じ解釈。

WinGet,  hwnd, ID,     ahk_class NotePad
コマンド  変数 リテラル リテラル

554 :名無しさん@お腹いっぱい。:2014/07/10(木) 20:09:28.83 ID:mAuSwP3B0.net
>>553
括弧以外は完全に間違った覚え方だな。
←がイミフ

555 :名無しさん@お腹いっぱい。:2014/07/10(木) 21:08:08.04 ID:gdhJ8aOz0.net
>>550でいいじゃん
自分基準でいいいから混同して間違えそうな記述は徹底的に避けるって決めとけば何とかなる

556 :476:2014/07/11(金) 12:12:37.56 ID:Abdt0Ssg0.net
>>478
この問題ですが、下記のように、Blindを入れることで解決することがわかりました
初めはGetKeyStateを使ってなんとかならないかと考えたのですが、Blindという便利なものがあったんですね。

LButton::
Send, {LButton Down}
return
LButton Up::
Send, {Blind}{LButton Up}
return

557 :名無しさん@お腹いっぱい。:2014/07/11(金) 13:42:50.57 ID:7bIUr93R0.net
>>556
>>482

558 :名無しさん@お腹いっぱい。:2014/07/13(日) 05:13:19.39 ID:Px3b/hQV0.net
緊急地震速報のソフトがアクティブになったら音量を規定値まで上げたいと思っています
http://www.estrat.co.jp/download.html

下記のように設定したのですがahkを実行するとボリュームが変更されてすぐに閉じてしまいます

#IfWinActive, SignalNowExpress ahk_class WindowsForms10.Window.8.app.0.33c0d9d
Send,{Volume_Down 50} ;一旦音量を0に
Send,{Volume_Up 8} ;指定の音量まで上げる
#IfWinActive,

どこが間違っていますでしょうか?

559 :名無しさん@お腹いっぱい。:2014/07/13(日) 07:31:24.17 ID:v0QyYtZe0.net
>>558
#Persistentで常駐する。
SetTimerで定期的にwindowを監視する。
label内では、#IfWinActiveじゃなく、IfWinActiveを使う。

こんな感じにすれば良いんじゃないですかね?

560 :名無しさん@お腹いっぱい。:2014/07/13(日) 07:35:48.96 ID:v0QyYtZe0.net
>>559
3行目の、「label内では、」という文言は特に気にせずに。

普通、「#If 〜 」はリマップやホットキー登録するとき使うんで、覚えといた方が良い。

561 :名無しさん@お腹いっぱい。:2014/07/13(日) 08:43:31.49 ID:lQkVtbhK0.net
#IfWinActive〜 はホットキー指定用の設定であってイベントトリガにはならないから
>557のいうとおりSetTimerで定期チェックするか、OnMessageでWM_ACTIVATE拾うとかする

あとボリュームセットは、SoundSetWaveVolume ってコマンドがあるよ

562 :名無しさん@お腹いっぱい。:2014/07/13(日) 15:27:26.54 ID:Px3b/hQV0.net
>>559-559
ありがとうございます
下記のように実現できました

#Persistent
SetTimer Volume,500
return
Volume:
IfWinActive, SignalNowExpress
{SoundSetWaveVolume, 10
}return

563 :名無しさん@お腹いっぱい。:2014/07/13(日) 15:37:22.82 ID:2QRPD8+00.net
おれは音量セットは、SoundSetを使ってた。あとSoundGetと一緒に

564 :名無しさん@お腹いっぱい。:2014/07/13(日) 20:25:35.24 ID:Gr7WkI+L0.net
お尋ねさせてください。

変換キー、無変換キー、任意のキーの同時押しにアクションを割り当てたいのですが
以下のように記述してみても上手くいきません。

vk1Dsc07B & vk1Csc079::
If GetKeyState("w","P")
send {" 2}{Left}
return

2行目をコメントアウトすると動きますが、3つ目のキーを組み合わせようとすると
何も起きなくなってしまいます。

どなたか、改善方法をご存じの方がおられましたら教えていただけないでしょうか。

OS: Windows7 x64 SP1
AHK: AutoHotkey_L v1.1.15.02

565 :名無しさん@お腹いっぱい。:2014/07/13(日) 21:25:17.94 ID:v0QyYtZe0.net
>>564
ココが参考になると思う。

ホットキー
http://ahkwiki.net/Hotkeys
4.2 コンビネーションキー
4.7 Inputコマンド(の、2ストロークキーの例は答そのものか)

566 :名無しさん@お腹いっぱい。:2014/07/13(日) 21:28:34.19 ID:zWFAQSe50.net
KeyWaitなりLoopなりで3つ目のキー入力を待つ処理を入れないと駄目じゃない?

567 :名無しさん@お腹いっぱい。:2014/07/13(日) 23:03:25.21 ID:Gr7WkI+L0.net
レスありがとうございます。

>>565
Inputを使う方法で同時押しができるようになりました。
教えていただき、どうもありがとうございます。

>>566
KeyWaitを使い、以下のようにしてみましたが上手くいきませんでした。

vk1Dsc07B & vk1Csc079::
KeyWait,w,T0.5
If(ErrorLevel)
{
If GetKeyState("w","P")
send {" 2}{Left}
return
}
return

恐縮ですが、お差し支えなければ改善点を教えていただけませんでしょうか。

568 :564:2014/07/14(月) 00:29:33.97 ID:eXHlKKmg0.net
>>567
うん、すまない思い付きで書いただけなんだ
KeyWaitだとDオプション付けても、wキーが入力されてしまうから使えないね

569 :名無しさん@お腹いっぱい。:2014/07/14(月) 00:44:29.00 ID:eXHlKKmg0.net
変換・無変換が押し下げられている間だけ、wキーのホットキーを有効にするとか

vk1Dsc07B & vk1Csc079::
vk1Csc079 & vk1Dsc07B::
Hotkey, w, hk_w, On
While (GetKeyState("vk1Dsc07B", "P") && GetKeyState("vk1Csc079", "P"))
Sleep, 10
Hotkey, w, hk_w, Off
Return

hk_w: ; HotkeyがOnの時にwキーで実行される
Send {" 2}{Left}
Return

570 :名無しさん@お腹いっぱい。:2014/07/14(月) 00:58:33.68 ID:0Cq4dN/I0.net
$w::
While(GetKeyState("vk1Dsc07B", "P") && GetKeyState("vk1Csc079", "P"))
Sleep,10
Send {" 2}{Left}
Return

たぶんこれでいい

571 :名無しさん@お腹いっぱい。:2014/07/14(月) 00:59:19.22 ID:0Cq4dN/I0.net
おっと、失敬囲ってなかった

$w::
While(GetKeyState("vk1Dsc07B", "P") && GetKeyState("vk1Csc079", "P")){
Sleep,10
Send {" 2}{Left}
}
Return

572 :562:2014/07/14(月) 21:21:28.35 ID:BAqRoTZA0.net
レスありがとうございます。

Inputコマンドを使って同時押しする方法では、1つのキーに複数行の操作は割り当てられないのですね。。

>>569-569で書き込んでいただいた方法でも上手くいかず途方に暮れていましたが
たまたまwではなく他のキーを割り当ててみた所、すんなりと同時押しできるようになりました。

色々試してみたのですが、どうも自分の環境ではキーボードの左端2列のキーとGetKeyStateの組み合わせは上手く機能しないようでした。
ですので、それ以外のキーとGetKeyStateの組み合わせで対処いたしました。お騒がせして申し訳ありません。

これまでレスをいただいた方々、どうもありがとうございました。

573 :名無しさん@お腹いっぱい。:2014/07/14(月) 23:56:03.42 ID:0Cq4dN/I0.net
タスク切り替えをしたいんですけど

vk1Dsc07B & 1::
If winactive ahk_class TaskSwitcherWnd
send,{left}
else
send,{Alt down}{tab}
return

vk1Dsc07B & 2::
If winactive ahk_class TaskSwitcherWnd
send,{right}
else
send,{Alt down}{tab}
return

~vk1Dsc07B up::
If winactive ahk_class TaskSwitcherWnd
send,{Alt up}

関数化したいのでAlttabは使いたくないんですけどうまく動いてくれません
切り替えどころかAlt downのままになってしまいます
なんででしょ?

574 :名無しさん@お腹いっぱい。:2014/07/15(火) 00:39:56.75 ID:D/orzBlQ0.net
>>573
コンビネーションキーの起点にしたキー(無変換キー)については
そのキー単独(up含む)に割り当てが出来なくなる。
なのでやるとしたら例えば settimer 等を使わないと無理。

vk1Dsc07B & 1::
Ifwinactive ahk_class TaskSwitcherWnd
send,{left}
else
send,{Alt down}{tab}
settimer, labelhoge, 50
return

vk1Dsc07B & 2::
Ifwinactive ahk_class TaskSwitcherWnd
send,{right}
else
send,{Alt down}{tab}
settimer, labelhoge, 50
return

labelhoge:
if !getkeystate("vk1Dsc07B", "P") {
send, {alt up}
settimer, labelhoge, off
}
return

575 :名無しさん@お腹いっぱい。:2014/07/15(火) 15:35:14.07 ID:hT+Zocs20.net
マウスボタン混ぜたコンビネーションホットキー(2-hooks)が急にSendでも反応するようになった

576 :名無しさん@お腹いっぱい。:2014/07/15(火) 15:46:22.93 ID:ntWMBVUB0.net
ホットキーの起動キー名を変数で指定するにはどうすれば良いのでしょうか?
変数 = a
%変数%::b
とかはダメみたいですけど

577 :名無しさん@お腹いっぱい。:2014/07/15(火) 16:17:27.34 ID:EvuB0RIa0.net
Hotkeyっていうまんまの名前のコマンドがあるからwiki見れ

578 :名無しさん@お腹いっぱい。:2014/07/15(火) 18:05:00.45 ID:ntWMBVUB0.net
できました
ありがとうございました

579 :名無しさん@お腹いっぱい。:2014/07/15(火) 18:15:07.90 ID:+C305nS50.net
とあるウィンドウがアクティブになった時に一度だけ実行する、っていうのはどうすればいいんでしょう
#ifWinActive, インクリメンタルサーチ ahk_class #32770
Excute:=1
としてみましたがExcute=0のままでした

ここの具体例のところにそれらしき記述があるんですがこれがそうなのでしょうか?
https://sites.google.com/site/agkh6mze/howto/scripting

580 :名無しさん@お腹いっぱい。:2014/07/15(火) 18:43:43.92 ID:GpD3shRK0.net
とりあえずほんのちょっとスレさかのぼってみればいいんじゃないかな
まるっきり同じ勘違いしてるみたいだし

581 :名無しさん@お腹いっぱい。:2014/07/15(火) 19:04:24.65 ID:+C305nS50.net
>>558-560読み飛ばしてました
これなら出来そうです。ありがとうございました。それと失礼しました

582 :名無しさん@お腹いっぱい。:2014/07/15(火) 21:50:53.11 ID:ukA3Utmx0.net
GetDir(Str){
msgbox %Str%
i := 1
StringSplit, Array_, Str, \,
msgbox %Array_0%
loop,%Array_0%{
Str2 = %Str2%%Array_i%\ ←これのiを変数としたい
}
msgbox %Str2%
}

フルパスからディレクトリを取りたいのですが、
配列の添字を変数にする方法が解りません。誰か分かりますか?

583 :名無しさん@お腹いっぱい。:2014/07/15(火) 22:07:48.54 ID:GpD3shRK0.net
SplitPathじゃだめなの?

584 :名無しさん@お腹いっぱい。:2014/07/15(火) 22:21:18.25 ID:EvuB0RIa0.net
SplitPathでよさそうだね

とりあえず変数の動的な指定の仕方は
Str := Str2 Array_%i% "\"
もしくは
Str = % Str2 Array_%i% "\"

585 :名無しさん@お腹いっぱい。:2014/07/15(火) 23:55:50.75 ID:ukA3Utmx0.net
あちゃー、そんな便利な関数が。
ドキュメント探したつもりだったんだが・・・。
いずれにせよありがとうございました。助かります。

586 :名無しさん@お腹いっぱい。:2014/07/16(水) 04:11:47.88 ID:gEEtlalt0.net
必要なドキュメントを探しだすことも
技術の一つなのよ

587 :名無しさん@お腹いっぱい。:2014/07/16(水) 17:57:11.77 ID:IKwj5tZb0.net
procexp.exeとからプロセスが使用しているファイル一欄がわかりますが、AutoHotKeyでこれと同じように任意のプロセスの使用ファイル一覧は取れるでしょうか?

588 :名無しさん@お腹いっぱい。:2014/07/17(木) 11:19:27.01 ID:8uZOFzKp0.net
>>587
http://ahkwiki.net/Process
の「Process」ページに、以下の例文があった。
後は自分の使いやすいように改造すればいいんじゃない?

例5: COMを利用してプロセス一覧を得る。MSDNを参照。
Gui, Add, ListView, x2 y0 w400 h500, Process Name|Command Line
For process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
 LV_Add("", process.Name, process.CommandLine)
Gui, Show,, Process List

589 :名無しさん@お腹いっぱい。:2014/07/17(木) 11:56:48.76 ID:8yaW/hEv0.net
#Ifで囲ったホットキーが実行されたら自動的に変数に数字を入れる、とか無理なんでしょうか?

#IF hoge=1
hige := 1

A::msgbox,A

#IF

のように#If条件が整ったら即higeに変数にフラグを入れたいんですができませんか?

590 :名無しさん@お腹いっぱい。:2014/07/17(木) 12:52:23.53 ID:pGV79Pmj0.net
>>589
>578

591 :名無しさん@お腹いっぱい。:2014/07/17(木) 13:43:11.49 ID:mJJw/ezn0.net
>>589
これ1行目と最後の行で意味違うけどどっちがやりたいんだろ
1行目がやりたいならA::の下にmsgbox,Aとhige := 1持ってくるだけでよさそうだし
最後の行がやりたいなら毎度おなじみの#If系の勘違いなので>>580
hogeを1にするのが誰でどんなときなのかわからんが、
その時ついでにhigeも1にできるのならhogeを監視する必要すらなさそうだけど

592 :名無しさん@お腹いっぱい。:2014/07/17(木) 14:22:48.77 ID:8yaW/hEv0.net
>>591
#If中にホットキーを大量に登録するんでその判別フラグとして使いたいんですよね
で、条件中のホットキーがどれを押されてもhigeを1にしたいんですよ

#IF hoge=1

A::
B::
C::
D::
E::

#If

593 :名無しさん@お腹いっぱい。:2014/07/17(木) 15:02:16.94 ID:n8O82xQF0.net
#if関係ない
ホットキーが実行されたら変数入れたいってんだから
ホットキースレッドで変数入れりゃいいだけ

594 :名無しさん@お腹いっぱい。:2014/07/17(木) 15:03:47.32 ID:8yaW/hEv0.net
>>593
つまりホットキースレッド全部に変数を入れる行をかけということですか
了解です

595 :名無しさん@お腹いっぱい。:2014/07/17(木) 17:34:54.42 ID:agugNCnK0.net
もしくは↓みたいにするか

#IF hoge=1

A::
B::
C::
D::
E::
  hige := 1
  if (A_ThisHotkey == "A") {

  }
  else if(A_ThisHotkey == "B") {

  }
return

#If

596 :名無しさん@お腹いっぱい。:2014/07/17(木) 17:56:01.38 ID:xspotNM00.net
逆に行数多くなってるし視認性が・・・
普通に1回1回書くか、もしその判別フラグとやらの管理が長くなるなら
素直に関数化かラベル化して1回1回飛んだ方が良さげ

597 :名無しさん@お腹いっぱい。:2014/07/17(木) 20:44:21.09 ID:L65q6iNG0.net
hoge := 0
hige := 0

#If (hoge == 1) && (hige:=1 || TRUE)
F2::MsgBox, hige = %hige%

#If
F2::hoge := 1

598 :名無しさん@お腹いっぱい。:2014/07/17(木) 21:09:32.97 ID:vbyv4dfw0.net
>>597
無駄と間違えがある

599 :名無しさん@お腹いっぱい。:2014/07/17(木) 21:29:34.34 ID:YGa2Ty5n0.net
>>597
いいね
#If (hoge == 1) && ((hige:=1) || TRUE)
のがいいんじゃね?Lの環境内からわかんないけどもしも0入れたくなったら使えないかも?

600 :名無しさん@お腹いっぱい。:2014/07/17(木) 22:21:24.64 ID:vbyv4dfw0.net
>>599
さらに無駄が増加

601 :名無しさん@お腹いっぱい。:2014/07/17(木) 22:39:20.45 ID:YGa2Ty5n0.net
>>600
悦に入りたいだけのレスをやめて
訂正してくれるほうが無駄なレスが減ると思うんだけど?

602 :名無しさん@お腹いっぱい。:2014/07/17(木) 22:41:24.28 ID:mZU48Ijm0.net
「い」と「え」の区別が出来ないようなやつにかまっても意味ないだろ

603 :名無しさん@お腹いっぱい。:2014/07/17(木) 22:59:36.05 ID:G1Gk15PC0.net
おれなら関数にするかな

#IF hoge=1
A::nanika("{A}")
B::nanika("Bラベル")
#If

こっちが関数

nanika(key){
hige:=1
if (islabel(key)) ;分岐させる
gosub % key
else
Send % key
}

604 :名無しさん@お腹いっぱい。:2014/07/18(金) 05:48:13.21 ID:GF6ZcgHo0.net
>>591が前半に言ってるようにした方がシンプルで分かりやすいような気がする。・・・(1)
もし、「hige := 1」のところが複数行なら、そこだけ関数にするかサブルーチンへ飛べば良いと思う。・・・(2)(3)

#IF hoge=1
A:: ;(1)
hige := 1
msgbox,A
return
B:: ;(2)
hige_func()
WinActivate, 電卓
return
C:: ;(3)
gosub,hige_sub
Send, {F1}
return
#If

hige_func(){
hige := 1
処理
}

hige_sub:
hige := 1
処理
return

605 :名無しさん@お腹いっぱい。:2014/07/18(金) 08:18:27.83 ID:V8L+h0gZ0.net
年月日を入れたら、曜日が出てくるような関数ってありますか
それと、1900年1月1日を1日目として通し番号を出してくれる関数ありますか
こちらがあれば、それを7で割った余りで曜日もわかるし、何月何日から何月何日までは何日間という計算も出来るのですが
自分で作らないとないのかな

606 :名無しさん@お腹いっぱい。:2014/07/18(金) 16:00:56.31 ID:GF6ZcgHo0.net
>>605
関数ではないが、関数化は楽勝でしょ。
>年月日を入れたら、曜日が出てくるような関数ってありますか
FormatTime
>それと、1900年1月1日を1日目として通し番号を出してくれる関数ありますか
EnvSub

607 :名無しさん@お腹いっぱい。:2014/07/19(土) 01:58:21.39 ID:gtzlGVfF0.net
処理の早さとか気にしてる?
計算させないように計算させないようにするとIf分岐まみれになっちゃうんだが

608 :名無しさん@お腹いっぱい。:2014/07/19(土) 10:27:43.70 ID:7EE9S2/B0.net
計算させるのとif分岐まみれとどっちのほうが速度低下するか気になるってこと?
再計算を避けるため一旦変数に格納するべきか
変数格納を減らすため if(関数())多用するかを迷うことはあるな

まあif使ったって演算は発生するしインタプリタであまり細かいこと気にしてても仕方ない
ImageSearchやRegEXみたいに重そうなコマンドを常駐setTimer内でループ使って
大量に繰り返し処理させるとかは避けたほうがいいと思うが

609 :名無しさん@お腹いっぱい。:2014/07/19(土) 12:52:34.73 ID:4zjAgFEa0.net
cornertest(){
CoordMode,Mouse,Relative
Wingetpos,,,width,Height
;X横の位置、Y縦の位置
MouseGetPos, x, y
;TrayTip , , %width% %x% %y%, 10 ,1
width := width - 60 ;幅調節。60がボタンの太さ。25がボタンの高さ。
If (y < 25) and (width < x){
return
}
}


#if WinActive("ahk_class #32770") && cornertest()
Lbutton::
msgbox,a
;PostMessage, 274, 61472, 0, , A
return
#If

タスクマネージャーを右上のボタンクリックで最小化させてみたいんですけどどうもtrueが帰って無いようで閉じちゃいます
どこを直せばいいんでしょう?

610 :名無しさん@お腹いっぱい。:2014/07/19(土) 12:54:31.39 ID:4zjAgFEa0.net
すみませんテスト用のコメントアウト混ざってました。正しくはこうです

cornertest(){
CoordMode,Mouse,Relative
Wingetpos,,,width,Height
MouseGetPos, x, y
width := width - 60 ;幅調節。60がボタンの太さ。25がボタンの高さ。
If (y < 25) and (width < x){
return
}
}

#if WinActive("ahk_class #32770") && cornertest()
Lbutton::
PostMessage, 274, 61472, 0, , A
return
#If

611 :名無しさん@お腹いっぱい。:2014/07/19(土) 13:24:58.19 ID:7EE9S2/B0.net
Return True
http://ahkwiki.net/Return

612 :名無しさん@お腹いっぱい。:2014/07/19(土) 13:40:34.15 ID:4zjAgFEa0.net
助かりました

cornertest(){
CoordMode,Mouse,Relative
Wingetpos,,,width,Height
MouseGetPos, x, y
width := width - 60 ;幅調節。60がボタンの太さ。25がボタンの高さ。
return (y < 25) and (width < x)
}

こうでよかったんですね

613 :名無しさん@お腹いっぱい。:2014/07/19(土) 23:46:11.28 ID:FQFVCZPk0.net
>>612
[shift]+[Lbutton]とかで通常の左クリックにしとくと良いかも。

614 :名無しさん@お腹いっぱい。:2014/07/20(日) 00:41:16.39 ID:9LuS3Np30.net
強いて言うなら

return (y < 25) && (y > 0) && (width - 60 < x) && (width > x)

にしといたほうがウィンドウの右上を超えたところで暴発はしない
その条件だと延々ウィンドウより離れたところの領域もクリック検出対象内になってしまう

615 :453:2014/07/20(日) 10:11:25.36 ID:C2SfvZ4I0.net
>>462 および 皆々さま
レスポンスが遅れ申し訳ありません(笑)。
アドバイスをもとに、冒頭に以下を記すことで、上手く機能しているように思います。
何か重大なミスはないでしょうか?

#Persistent

Process,Exist,Notepad.exe
If ErrorLevel<>0
{SetTimer,ReloadTimer2,1000}
Else
{SetTimer,ReloadTimer1,1000}
Return

ReloadTimer1:
Process,Exist,Notepad.exe
If ErrorLevel<>0
{Reload
SetTimer,ReloadTimer1,Off
SetTimer,ReloadTimer2,1000}
Return

ReloadTimer2:
Process,WaitClose,Notepad.exe
If ErrorLevel<>1
{SetTimer,ReloadTimer1,1000}
Return

616 :名無しさん@お腹いっぱい。:2014/07/20(日) 11:18:04.03 ID:qVIMQXpZ0.net
>>615
ちょっとキツく言うけど、そんな無駄なスクリプト作るより↓のこと真剣に考えた方が良いと思う。

>>470
>>>466
>それは対症療法でどうにかするんじゃなく、リマップが効かなくなる理由のほうを直さないと

(中略)

>こういうことの積み重ねでどっかで止まってるんだと思われ

なんならリマップスクリプトの方をみんなに見て貰うのが最良の方法じゃないかな。

617 :名無しさん@お腹いっぱい。:2014/07/20(日) 18:04:38.64 ID:QALKhAju0.net
>>615
特に問題なし、フックの有無は試した?
問題があるときはスクリプト、常駐アプリを含めて最小限の構成で動作確認。

#UseHook
F1::
Tooltip ok
Return

これで動かないなら再起対応で問題なし。
#UseHookなしでも動くなら原因は他に、あとは自分で探そう。

618 :453:2014/07/21(月) 12:02:08.93 ID:ip1zZm/n0.net
>>616
>>617
ご助言ありがとうございます。

リマップが効かなくなる現象は、家族所有の別PC2台では出現しないことが判明しました。
よって、小生のパソコン固有の問題が疑わしいです。
短期間の検証ではありますが、#UseHook の記述で、現象は消失しているようです。
根治療法ではありませんが、当面は#UseHook+Reloadで対処したいと思います。
小生のPCは最も常駐アプリが多いため、時間をかけ最小構成から一つ一つ問題アプリを同定し、
根本的原因を究明していきたいと思います。
今回は貴重な睡眠時間を多く失ってしまいましたが、Autohotkeyの理解を深める非常に良い機会になりました。
皆さまも、アドバイスありがとうございました。
今後ともよろしくお願いいたします。

619 :名無しさん@お腹いっぱい。:2014/07/23(水) 00:39:49.59 ID:wF13ruUz0.net
今更だけどmousegetposって神機能だなこれ

620 :名無しさん@お腹いっぱい。:2014/07/23(水) 04:27:14.97 ID:ahoj7AN80.net
>>619
一番基本的な機能なのにwww
もっと驚く機能がいくらでもある

621 :名無しさん@お腹いっぱい。:2014/07/23(水) 19:06:37.55 ID:LL1B6tnR0.net
ジョイスティックの方向キーが一定時間押されっぱなしだったら実行
という処理を書くうまい方法ありませんか?

GetKeyStateでJoyPOVをLoopで監視するしかないですか?

622 :名無しさん@お腹いっぱい。:2014/07/23(水) 19:47:34.69 ID:a1PCcMtx0.net
>>621
監視をするならSetTimerの方が便利。
それ以外の方法はJoyToKey等でF13などに置き換えてからAutoHotkeyで操作する方法がある。

623 :名無しさん@お腹いっぱい。:2014/07/24(木) 00:50:11.47 ID:R9Huvnc50.net
これだとホイールリダイレクトってできないんでしょうか

MouseGetPos, , , id
ControlSend,,{wheelup},ahk_id %id%

624 :名無しさん@お腹いっぱい。:2014/07/24(木) 01:45:07.71 ID:X/a9EAAy0.net
>>623
ttp://ahkwiki.net/PostMessage

質問が変な・・・まあいいや。

625 :名無しさん@お腹いっぱい。:2014/07/24(木) 11:01:35.65 ID:vgptn5lu0.net
>>623
PostMessageで送らないとだめ
ホイールリダイレクトの最も単純なサンプル
http://ahk.xrea.jp/myscripts/WheelRedirect.zip

細かく調整したいなら>>135-145あたりも参照

626 :名無しさん@お腹いっぱい。:2014/07/26(土) 01:58:30.18 ID:7AaSUnBG0.net
非アクティブウィンドウの任意の座標の色なり画像なり
を取得するのは不可能?
PrintscreenをControlsendしてもうまくいかん。やっぱキャプチャさえ
できない。モニタに映っていない画像をどうこうは物理的にできない?
ググってもそういうソフトは皆無だし。

627 :名無しさん@お腹いっぱい。:2014/07/26(土) 02:06:05.12 ID:7AaSUnBG0.net
非アクティブウィンドウのテキストも取れるし、
キーも送れるんだからなんとかなりそうなんだけど。
全画面表示させてるソフトの裏側のブラウザの画面に変化あったら
チャイムならしてアクティブ化したいんだけど、うまい方法ない?

628 :名無しさん@お腹いっぱい。:2014/07/26(土) 13:12:52.76 ID:HOsx2RdQ0.net
>>626-625
何とも情報が少なすぎて一般論しか言えないけど…
1)ある条件を満たすとブラウザの画面が変化するのであれば、その条件の方を監視する。
2)ブラウザにお知らせ機能(?)のようなものが有れば、それを利用する。
3)ブラウザの画面に変化あった時に何が変わるのか目視確認して、ahkで取得可能なものを監視する。
4)タスクバーボタンやタスクトレイアイコンが変化するのであれば、色や画像を監視する。
5)定期的にブラウザをアクティブにして監視する。
6)諦める。
番外)「On Top Replica」というソフトを使い、サムネイル化した小窓を最前面に出し確認する。

629 :名無しさん@お腹いっぱい。:2014/07/26(土) 17:44:39.85 ID:KkeogdxY0.net
モニタに表示されてる分ならPixelGetColorで取れるけど
アクティブウィンドウが全面覆ってる状態じゃ無理じゃね

ちっさいサブモニタ買って監視したい窓はそっちのモニタに移動して表示させるとか
仮想デスクトップソフトで裏画面のSS取れる奴がないか探してみるとか

ブラウザ何使ってるか知らんのでよくわからんが
ステータスバーのテキスト監視とかはできないん?

630 :名無しさん@お腹いっぱい。:2014/07/26(土) 19:41:06.76 ID:wbgIdpo/0.net
ブラウザ上のユーザスクリプト(拡張機能,アドオン)を使うのも考えてみればどう?
たとえばchromeの拡張機能ならページのスクリーンショットがとれる

631 :名無しさん@お腹いっぱい。:2014/07/26(土) 20:43:02.71 ID:p6xkNCZQ0.net
ブラウザ 不明
変化内容 不明

632 :名無しさん@お腹いっぱい。:2014/07/26(土) 21:04:09.72 ID:dtF1r/9d0.net
AHKLです

IniRead, HogeHoge, Hage.ini, セクション1 ;キー名は指定しない

Hage.iniの中身↓

[セクション1]
Zura = 10
Katsura = 20

[セクション2]
Nuketa = 30
Nukege = 40

これで変数HogeHogeの中にセクション1の内容
↓↓↓↓↓
Zura = 10
Katsura = 20
↑↑↑↑↑
が改行を含む文字列として入ることはわかったのですが
Zura + Katsuraのような計算をしたいので
ここから個別の変数として取り扱えるように分解するにはどうすれば良いのでしょうか?

633 :名無しさん@お腹いっぱい。:2014/07/26(土) 21:47:47.08 ID:p6xkNCZQ0.net
>>632
ttp://ahkwiki.net/Loop,Parse
ttp://ahkwiki.net/RegExReplace

分解するより、ini保存するときに項目数記録してLoopで回した方が早いと思うが。

IniRead, Hoge0, Hage.ini, セクション1, Whig0
Loop %Hoge0%
{
   IniRead, Hoge%A_Index%, Hage.ini, セクション1, Whig%A_Index%
}
-----------------
[セクション1]
Whig0 = 3
Whig1 = 10
Whig2 = 20
Whig3 = 30

634 :名無しさん@お腹いっぱい。:2014/07/26(土) 22:33:49.74 ID:HOsx2RdQ0.net
>>632
こういうこと?
TestString := "Zura = 10"
StringSplit, word_array, TestString, =, %A_Space% ;「=」区切りで文字列を分割(余計なスペースを削除)
MsgBox, %word_array1% と %word_array2%

635 :名無しさん@お腹いっぱい。:2014/07/26(土) 23:39:34.49 ID:HOsx2RdQ0.net
>>634訂正
こっちの方が良いか。
Loop, Parse, HogeHoge, `n
{
Loop, Parse, A_LoopField, =, %A_Space%
{
MsgBox, %A_LoopField%
}
}

636 :名無しさん@お腹いっぱい。:2014/07/26(土) 23:42:52.13 ID:HOsx2RdQ0.net
連投すまん・・・見づらいので修正
Loop, Parse, HogeHoge, `n
{
  Loop, Parse, A_LoopField, =, %A_Space%
  {
    MsgBox, %A_LoopField%
  }
}

637 :630:2014/07/27(日) 03:34:32.30 ID:OT4jy+l/0.net
>>633-634
返答ありがとうございます

少し説明不足でした
iniファイルは他者が作ります
その為項目数も決まっておらず、取り扱う予定のない項目も混ざります
セクション内に書かれている変数名(こちらでは正確な予測はできない)と値を両方取得して
Includeしたかのように扱いたいのですが可能でしょうか?

638 :名無しさん@お腹いっぱい。:2014/07/27(日) 05:09:56.80 ID:p5wxpXaF0.net
>>637
iniファイルを他者が作る状況がさっぱりわからないが
取り込んだ文字列で変数を作りたいって事なら SetEnv。
ttp://ahkwiki.net/SetEnv

>>634-634 が言っている=での文字列分解はKey内容に=があると破綻するので
きっちりやるなら RegExMatch 正規表現(=前方一致)でやればいい。
ttp://ahkwiki.net/RegExMatch

639 :名無しさん@お腹いっぱい。:2014/07/27(日) 05:16:30.83 ID:p5wxpXaF0.net
>>638
訂正:前方一致→最短一致

640 :630:2014/07/27(日) 09:15:00.02 ID:OT4jy+l/0.net
>>634-634さんの方法で分解してSetEnvで解決しそうです。
変数にする前に取り除いておきたい記号等も色々あったので
正規表現についてのアドバイスも参考になりました。ありがとうございました。

641 :名無しさん@お腹いっぱい。:2014/07/27(日) 09:17:58.78 ID:oAwmEFzt0.net
key名非固定のini読みは自分も結構使う
とりあえず自分が作った関数群貼っとく、インデント全角→半角置換で

;=====================================================================
; セクション内のキー一覧を取得
;  in   SectDat   セクション内容
;  戻り値 キーリスト(Key=ValueのKey部分) 改行区切
;=====================================================================
Ini_GetKeyList(SectDat)  {
  return RegExReplace(SectDat,"m`n)^(?:;.*\n|(.+?)[\t ]*\=.*)","$1")
}

;=====================================================================
;  セクションから 指定 Keyの値を検索して返す
;  in   SectDat   セクション内容
;      key     Key
;      Dafault="" キーが見つからなかったときに変数に格納される値
;      quatTrim=1  1:Valueのクォーテーションを省く 0:省かない
;  戻り値 Value (Trim済 ""''で括られたタブスペースは残る)
;=====================================================================
Ini_GetValue(SectDat, Key, Default="", quatTrim=1) {
  If !(p := RegExMatch(SectDat,"im`n)^"
    . RegExReplace(Key,"([\.\*\?\+\[\]\{\}\|\(\)\^\$\\\-])","\$1")
    . "[\t ]*\=[\t ]*(?P<val>.*?$)",$))
    Return Default
  ; Valueが " " or ' ' で括られている場合は クォーテーションを省く
  if (quatTrim)
    $val := RegExReplace($val,"(?:""(.*?)""|'(.*?)'|(.*?))[\t ]*$.*\z"
                 ,"$1$2$3")
  Return $val
}

642 :名無しさん@お腹いっぱい。:2014/07/27(日) 09:23:15.51 ID:oAwmEFzt0.net
;=====================================================================
; "Key = Value" の行を分割
;    in   line     key = "value" の行
;    out  $key     key (Trim済)
;       $value    Value(Trim済)
;       quatTrim=1  1:Valueのクォーテーションを省く 0:省かない
;  戻り値 0以外:成功 / 0:失敗(分割不可)
;=====================================================================
Ini_SplitKeyValue(line, ByRef $Key, Byref $value, quatTrim=1) {
  r:=RegExMatch(line, "(?P<key>^.+?)[\t ]*\=[\t ]*(?P<value>.*?)[\t ]*$",$)
  If (quatTrim)
    $value:=RegExReplace($value,"(?:""(.*?)""|'(.*?)'|(.*?))[\t ]*$.*\z"
                  ,"$1$2$3")
  return r
}

643 :名無しさん@お腹いっぱい。:2014/07/28(月) 08:39:14.61 ID:XNTRFjm10.net
はじめまして。Unicode版のAHKで、Shift_JIS外の文字を文字コードで
表記したいのですが、どう書くのが正しいんでしょうか。

とりあえず
StringReplace Clipboard, Clipboard, Chr(0x301C), Chr(0xFF5E), All
と書いてみましたがきちんと置換してくれず、いまは仕方なく
StringReplace Clipboard, Clipboard, "〜", "〜", All
としています。

644 :641:2014/07/28(月) 08:41:00.97 ID:XNTRFjm10.net
あ、一つ目の「〜」はU+301C(WAVE DASH)で、
二つ目はU+FF5E(FULLWIDTH TILDE)です。

645 :641:2014/07/28(月) 09:21:50.67 ID:XNTRFjm10.net
根本的なところを間違っていますね。
> StringReplace Clipboard, Clipboard, "〜", "〜", All
ここはダブルクォートを省いて
StringReplace Clipboard, Clipboard, 〜, 〜, All
とするのが正しいのですね。

646 :641:2014/07/28(月) 09:39:55.78 ID:XNTRFjm10.net
すいません、自己解決しました。
U301C := Chr(0x301C)
UFF5E := Chr(0xFF5E)
StringReplace Clipboard, Clipboard, %U301C%, %UFF5E%, All

スレ汚し失礼しました

647 :名無しさん@お腹いっぱい。:2014/07/28(月) 12:37:53.40 ID:gLR9ZBNm0.net
>>643-644
「RegExReplace」使うの大袈裟かもしれないけど、問題発生しないのであれば一行で済むよ。

Clipboard := RegExReplace(Clipboard, Chr(0x301C), Chr(0xFF5E))

648 :641-644:2014/07/28(月) 13:47:42.03 ID:wkPITZ0J0.net
>>647 なるほど、その手がありましたか。実はこの後の処理に
Clipboard := RegExReplace(Clipboard,"\s+$", "")
があるので、大袈裟でもないです。

ありがたく利用させていただきます。

649 :名無しさん@お腹いっぱい。:2014/07/28(月) 19:05:17.27 ID:DZ613LaY0.net
たとえば、C言語とかだと

#if true   とか #ifdef とか
a = 10
b = 20
gosub labelA
#else
a = 100
b = 250
gosub labelB
#endif

みたいに、条件によってa, bに入れる値を変えたり、コマンドを変えたりすることをしますが、同じことをしようとすると
AutoHotKeyではみなさんどうしていますか
#は使わずに、単純に if( ){ } とかでやっちゃったりしていますか

650 :名無しさん@お腹いっぱい。:2014/07/28(月) 19:36:13.19 ID:ZNpAtyEZ0.net
>>649
このスレを「#if」で検索。
>>1も参考に
>■日本語解説等
>AutoHotkey Wik
>http://ahkwiki.net

最近この手の質問多すぎだね。

651 :名無しさん@お腹いっぱい。:2014/07/28(月) 21:07:21.06 ID:h8gMtYRI0.net
>>649

#で始まるコマンドは文法構造をプリプロセッサという意味では同じだけど、
Cでいうところのものとは ま っ た く 異 な る ので頭切り替えたほうがいい。

なので If(){ 〜 } でやるしかない。

652 :名無しさん@お腹いっぱい。:2014/07/28(月) 22:45:25.39 ID:/CqhVhZq0.net
キーリピート速度変える方法解る方いますか?
F1 & l::Send,{Right}

例えばこれだとウインドウズ標準っぽいキーリピート速度になっているようです。

653 :名無しさん@お腹いっぱい。:2014/07/28(月) 22:49:57.79 ID:J3i7EHEE0.net
SetKeyDelay

もしくはループでsendコマンドをおくりつづけ、sleepを間に挟む

654 :名無しさん@お腹いっぱい。:2014/07/28(月) 22:58:21.81 ID:u/xyAhPQ0.net
>>653
Loopはいらんだろ

655 :名無しさん@お腹いっぱい。:2014/07/28(月) 23:27:26.57 ID:/CqhVhZq0.net
そのあたりの関数をいろいろ詰め込んだら期待通りに動きました。
感謝します。

656 :名無しさん@お腹いっぱい。:2014/07/29(火) 04:10:46.35 ID:NCozYwEp0.net
エクスプローラ(フォルダ)がアクティブな時に有効になるホットキーを割り当てたいんですが、
ファイル選択時やリネーム中は除外する方法ってありますか?

657 :名無しさん@お腹いっぱい。:2014/07/29(火) 06:46:30.63 ID:HH6gD8Ui0.net
>>656
テキストの有無 Send,^c
IMEの状態取得 IME.ahk
キャレット座標 組み込み変数

658 :名無しさん@お腹いっぱい。:2014/07/29(火) 10:48:40.97 ID:pyN+Lajd0.net
>>654
例えばの話こういう処理を走らせた時、キーを話しても延々リピート走るから

a::
Setkeydelay,1000
send,{w}
return

こっちのほうが暴走しなくて安心
a::
while(GetKeyState(A_thishotKey, "P")){
send,{w}
sleep,1000
}
return

659 :名無しさん@お腹いっぱい。:2014/07/29(火) 19:33:38.52 ID:HH6gD8Ui0.net
>>658
リピート間隔をより早くしたいなら ループ、遅くするなら Sleep 最後に入れるだけで十分。
Setkeydelay を使用したいなら 最後に Sleep 0 または -1 入れればいい。

a::
Setkeydelay,500,500
Send,{w}
Sleep 0 ; or -1
Return

660 :名無しさん@お腹いっぱい。:2014/07/29(火) 19:42:08.39 ID:BN8krxRK0.net
とんちんかん

661 :名無しさん@お腹いっぱい。:2014/07/30(水) 13:56:07.27 ID:aqOxEqU00.net
VMWARE PLAYERに対してAutoHotKeyで割り込みが効かないのですが、このようなソフトには使用できないのでしょうか?
例えば以下の設定が全く生きません

#IfWinActive, ahk_class VMPlayerFrame
^a::
Send, aaa
return
#IfWinActive

662 :名無しさん@お腹いっぱい。:2014/07/30(水) 18:15:33.90 ID:CLt9bMBS0.net
以下のスクリプトで、バイナリデータとして書き出す場合はどうすればいいでしょうか?
よろしくお願いします。

FileAppend,
(
01 00 00 00 01 00 00 00 50 00 05 55 05 00 00 00
00 00 01 11 02
)
, .\ahk.bin,

663 :名無しさん@お腹いっぱい。:2014/07/30(水) 18:25:03.01 ID:c+nLUCsc0.net
>>662
VarSetCapacity()
NumPut()
Fileオブジェクト

664 :名無しさん@お腹いっぱい。:2014/07/30(水) 18:31:21.69 ID:CLt9bMBS0.net
>>663
返信ありがとうございます
私には理解出来ないので出直してきます

665 :名無しさん@お腹いっぱい。:2014/07/30(水) 19:54:39.06 ID:c+nLUCsc0.net
VarSetCapacityでメモリ確保して
NumPutでバッファにデータ書き込んで
Fileオブジェクトでバッファの内容をファイルに出力

HexToBin("ahk.bin", "01 00 00 00 01 00 00 00 50 00 05 55 05 00 00 00 00 00 01 11 02")

HexToBin(File, Array)
{
  Hex := StrSplit(Array, A_Space)
  
  BufSize := Hex.MaxIndex()
  VarSetCapacity(Buf, BufSize)
  
  Loop, % BufSize
  {
    h := "0x" Hex[A_Index]
    NumPut(h, &Buf, A_Index-1, "Char")
  }
  
  oFile := FileOpen(File, "w")
  oFile.RawWrite(Buf, BufSize)
  oFile.Close()
}

666 :名無しさん@お腹いっぱい。:2014/07/30(水) 20:50:11.65 ID:w1yK6FZl0.net
>>661
その手のVM系のはキーボードフックするドライバが入れるてるんで、お手上げ。

667 :名無しさん@お腹いっぱい。:2014/07/30(水) 20:52:49.61 ID:5BCeoWZN0.net
>>665
目的の事が出来ました!。
何から何まで本当に有難うございます。

668 :名無しさん@お腹いっぱい。:2014/08/02(土) 18:30:34.78 ID:90hCAcCt0.net
GroupDeactivateで非表示ウィンドウを探索するのは防げないんだろうか?
DetectHiddenWindowsの設定は効かないようだが

669 :名無しさん@お腹いっぱい。:2014/08/02(土) 19:01:51.67 ID:aaA9WOLd0.net
>>666
BlueStacks入れたらホストOSまでマウスフックが効かなくなった
しかもアンインストールしても戻らないと言う。あえて言おう、ksであると

670 :名無しさん@お腹いっぱい。:2014/08/02(土) 20:52:18.88 ID:nQ5FwfG60.net
>>668
非表示のウィンドウはアクティブにはできない。
アクティブ化に反応するならその対象は非表示ではない。
つまり非表示化せずに裏に隠れているアプリが誤検出されているだけ。
GroupDeactivate を使うなら GroupAdd で除外対称にすればいい。

671 :名無しさん@お腹いっぱい。:2014/08/03(日) 14:29:46.70 ID:B8zR/DFB0.net
>>670
そうなんですね
やはり1つずつ名前を入れて除外するしかないんですね
そういったウィンドウはクラス名はあっても、タイトル名がなかったりしました
せめて無名タイトルを除外対象にできれば良いのですが

672 :名無しさん@お腹いっぱい。:2014/08/03(日) 14:38:42.47 ID:1cB50yIR0.net
プロセスが残ったままのアプリを起動時に自動で再起動させる方法はありませんか?
旧v1.0.48を使用しています

::hoge.exeの起動命令を感知
Process,Exist,hoge.exe
If ErrorLevel<>0
{
Process, Close, hoge.exe
sleep, 300
run,hoge.exe
}

673 :名無しさん@お腹いっぱい。:2014/08/03(日) 14:53:32.73 ID:MtYJ51fi0.net
>>672
ん?それで正解あってね?
バージョンは最新にしてみたら?

Process,Exist,hoge.exe
if (ErrorLevel <> 0){
Process,Close,%ErrorLevel%
Process,WaitClose,%ErrorLevel%
run,hoge.exe
}

674 :670:2014/08/03(日) 15:14:32.95 ID:1cB50yIR0.net
> ::hoge.exeの起動命令を感知
 ↑
この部分のコマンドが分からず困っています
エクスプローラやランチャからもhoge.exeを起動させるので、何かうまい方法はないでしょうか?

675 :名無しさん@お腹いっぱい。:2014/08/03(日) 15:28:07.00 ID:MtYJ51fi0.net
そういうのならahkよりbatのほうがいい気がしなくもないけども
とりあえずAuto-execute部分にかいて起動してしまえばいいんじゃないかな
Auto-executeはわかるよね?
んでこういうかんじでラベルはっつけてホットキーにgosubとかで登録すればいい

hogerun:
Process,Exist,hoge.exe
if (ErrorLevel <> 0){
Process,Close,%ErrorLevel%
Process,WaitClose,%ErrorLevel%
run,hoge.exe
}

676 :670:2014/08/03(日) 15:36:25.39 ID:1cB50yIR0.net
ホットキーじゃ無理なんじゃないかな

677 :名無しさん@お腹いっぱい。:2014/08/03(日) 16:10:01.16 ID:MtYJ51fi0.net
んー工夫次第だよ。
具体例を上げてみると
俺はマグネットウィンドをスクリプト起動と同時に起動するようにしてるけど、再起動で同様に再起動するようにしてる。
考え方としてはahkの自動実行する場所に

SetTitleMatchMode,2
Process, Priority,, low
DetectHiddenWindows On
#SingleInstance FORCE
#Notrayicon

Process,Exist,MgntWnd64.exe
If ErrorLevel<>0
{
SetTitleMatchMode,2
DetectHiddenWindows On
PostMessage, 0x111, 40001, , ,ahk_class MagnetWindow64 ;終了メッセージを渡す
Process,WaitClose,MgntWnd64.exe
}
run,Software\magnetwindow\MgntWnd64.exe

こういうものを書いてる。
んで、再起動ホットキーを
#z::Reload
こうしてる。

こうしておけばahkを起動したら同時にソフトが起動。
ahkをリロードした場合終了メッセージを通ってソフトが終了、再起動させるという形になる。

678 :名無しさん@お腹いっぱい。:2014/08/03(日) 16:20:40.41 ID:koQTgTHD0.net
>>672
hoge.exe の名前を(例えば hoge_.exe に)書き換える。
>>672 の hoge.exe の部分を hoge_.exe に置き換えてからコンパイルする。
コンパイルした実行ファイル名を hoge.exe にして hoge_.exe と同じディレクトリに置く。
とかどう?

679 :名無しさん@お腹いっぱい。:2014/08/03(日) 18:58:01.81 ID:ZquuH9+60.net
prosecc, closeは強制終了だからおすすめしない
wincloseで大概の場合代用できる

680 :670:2014/08/03(日) 20:17:43.29 ID:1cB50yIR0.net
なんか無理っぽいからアプリ閉じるときにProcess, Closeで確実に終了するようにしたわ

681 :670:2014/08/03(日) 22:19:07.84 ID:1cB50yIR0.net
>>678
うわああああああ
やっと意味がわかりました!
凄すぎるアイデアありがとうございます!

682 :名無しさん@お腹いっぱい。:2014/08/04(月) 09:38:32.71 ID:qzLuBNLc0.net
AHKって一応オブジェクト志向と考えていいのかな?

683 :名無しさん@お腹いっぱい。:2014/08/04(月) 20:10:52.09 ID:v9/eTFNB0.net
>>682
純粋なオブジェクト指向言語 - ×
非オブジェクト指向(スクリプト)言語 - 旧AutoHotkey
ハイブリッド型オブジェクト指向(スクリプト)言語 - 新AutoHotkey(L)

684 :名無しさん@お腹いっぱい。:2014/08/05(火) 00:10:24.72 ID:p41852rB0.net
たまにAltキーが押し下げ状態になることがあるんですが
自分で書いた散らかったコードを管理するスキルがないため
何が原因なのかわかりません

どこにバグがあるか特定する、または
勝手に押し下げ状態になるのを防ぐような手段てないでしょうか?

685 :名無しさん@お腹いっぱい。:2014/08/05(火) 00:33:57.71 ID:WZu9YMn/0.net
>>684
>>6

*原因
Alt が関わっている部分すべて

*解決策
フックを使う
適切な間隔を指定 SetKeyDelay
sendモード変更
最後に Alt up を送る

*問題が起きたら
KeyHistory
スクリプトの実行履歴

686 :名無しさん@お腹いっぱい。:2014/08/05(火) 00:35:11.98 ID:VZNTWuWI0.net
スキルは不要、マメさと根気だけ。
小さな単位で区切って原因をチマチマ特定する作業の繰り返し。

むしろどんなスキルがある人でもやることは同じ。
何だか分からないから諦めるという姿勢がスキル向上の阻害要因。

687 :名無しさん@お腹いっぱい。:2014/08/05(火) 00:43:08.41 ID:p41852rB0.net
>>685-684
ありがとうございます

どこかのコードでAltキーをSendした後に戻らなくなってる可能性が高いということですね
考えてみたらそうですよね^^;

地道に調べてみます

688 :名無しさん@お腹いっぱい。:2014/08/05(火) 15:12:37.09 ID:wdw8wG230.net
もしXPなら「固定キーが無効にならない」というバグが昔からあるよ
コマンドを駆使しても意味無し
この問題で時間を無駄にした人間は数多い
解決策はキーボードフック一択
先人の二の舞が嫌なら何も考えず導入するべし

689 :名無しさん@お腹いっぱい。:2014/08/05(火) 15:36:12.08 ID:MeMcjQDk0.net
もしもキーリリースにAlt upいれてるなら命令レベルでブッキングしてる可能性もある

keywait,なにかしらのキー
sleep,20
send,{LAlt up}

とかにするとだいぶ誤動作減る。
その他は

send,{LAlt}{tab}
みたいな記入はやめる。{LAlt down}にすべきで、ちゃんとどこかに{LAlt up}としてキーを離す動作を入れる

690 :名無しさん@お腹いっぱい。:2014/08/05(火) 15:42:56.04 ID:MeMcjQDk0.net
あとはまぁ、1つのahkファイルに多数のスクリプトぶっこんでやたら長くなって管理できなくなると元も子もないんでincludeつかって多数のahkファイルに分けて管理、もしくはインデックス搭載エディタを使う事を勧める

たとえばソフトウェア別フォルダにブラウザ用ahk、エディタ用ahk、メディアプレイヤーahkなんかを敷き詰めて、全部includeで管理。
その他はラベル書きまくったサブルーチン用ahkと関数書きまくったファンクション用ahkみたいに、系統別で分けておくとスパゲッティはだいぶ解消される

691 :名無しさん@お腹いっぱい。:2014/08/05(火) 16:05:48.15 ID:wdw8wG230.net
この問題がAlt upで解決することは絶対にないと断言しておく
そもそものトリガーがsendじゃなく修飾シンボル使ったホットキーだし

692 :名無しさん@お腹いっぱい。:2014/08/05(火) 17:02:06.55 ID:zCHxgnn70.net
>>688-689
ありがとうございます
スクリプトの先頭に#InstallKeybdHookと書いてはいましたが
これでキーボードフックは有効ですよね?
環境はWin7 AHKL x64 最新です

693 :名無しさん@お腹いっぱい。:2014/08/05(火) 18:52:55.63 ID:7AvFpLef0.net
>>692
#InstallKeybdHook(フック) ですべてが解決するわけではないので
ホットキーがすべての原因だと決め付けないようにね。

フックを使って適切な間隔で押し下げ押し上げ分けて送信。

694 :名無しさん@お腹いっぱい。:2014/08/05(火) 19:15:02.03 ID:wUfhtriI0.net
確かにinclude管理は覚えておいたほうがいい
記入ミスなく登録しておいてもちゃんと動作しなかったりするのは上のほうが優先的に読み込まれるから
そういう時ごそっと1ブロックの順番入れ替えが可能なのは利点だ

695 :名無しさん@お腹いっぱい。:2014/08/05(火) 21:51:13.51 ID:zCHxgnn70.net
>>693
ありがとうございます>>689に教えて頂いた方法に変えて様子見中です
>>690>>694
勉強になりました
以前挑戦したことあるんですがincludeする順番で動かなかったりして挫折してしまいました・・・

696 :名無しさん@お腹いっぱい。:2014/08/05(火) 23:48:07.17 ID:hgq3E3gX0.net
>>695
スクリプト内で使う汎用関数は、なるべく「[AutoHotkeyインストフォルダ]\Lib内」に置いとく方がトラブル少なくなると思う。

697 :名無しさん@お腹いっぱい。:2014/08/06(水) 05:29:24.28 ID:Lexo686R0.net
もしポータブル環境作るなら魔法の言葉

SetWorkingDir,%A_ScriptDir%

#Include %A_ScriptDir%\フォルダパス

こんがらがったらMsgbox,%A_ScriptDir%で確認

698 :名無しさん@お腹いっぱい。:2014/08/06(水) 09:01:36.59 ID:FzqFh8NB0.net
/libは手軽ではあるが切り分けしたいならむしろ避けるべきじゃ
includeで明示してないものが入り込む余地作るのは混乱の元にもなる

699 :名無しさん@お腹いっぱい。:2014/08/06(水) 13:36:12.12 ID:3j32nWMR0.net
昔IME_Func.ahkをIncludeしたけど異様に反応が鈍かったから
AutoHotkey.ahkに全文コピペした

700 :名無しさん@お腹いっぱい。:2014/08/06(水) 13:59:02.31 ID:Gl1PaJ8j0.net
MGLにincludeの見本書いてるからそれを使うのがいいな
先頭にgotoで末尾にラベル。これが基本形。
付けなかったら自動読み込み部分と勘違いして一気に下まで読んじゃう
使い方によってはそれでもいいんだけどね。プラグインフォルダにexeloader.ahk入れて、自動読み込みで他のソフトと同時起動を実現とか

701 :名無しさん@お腹いっぱい。:2014/08/06(水) 19:39:57.55 ID:Wx4Aj3BJ0.net
そう言えば、MGLのプラグインahk内で「A_ScriptDir」使った時、
A_ScriptDir=[プラグインahkが有るフォルダ]じゃなく、
A_ScriptDir=[MGLが有るフォルダ]なのが分からなくてプチはまった事がある。

そういう時のための魔法の言葉なのかな>>697は?よく分かんないけど。

702 :名無しさん@お腹いっぱい。:2014/08/07(木) 16:46:43.31 ID:q0w0b/aW0.net
自分用とは別にMGLは別プロセスで動かしたほうがいいんじゃないか

703 :名無しさん@お腹いっぱい。:2014/08/07(木) 17:58:51.64 ID:Q/h1R3Ko0.net
そりゃそのほうがいいだろう
MGLがいい見本になってるよってだけの話だから、別にプラグインにしろというわけではない

704 :名無しさん@お腹いっぱい。:2014/08/08(金) 23:52:04.99 ID:c55I0AMR0.net
>>696
アドバイスサンクスです
やってみました

705 :名無しさん@お腹いっぱい。:2014/08/09(土) 05:44:37.85 ID:5fdI3J030.net
イコールキーを送りたいんですが、イコールはどういう風に記述すればいいでしょうか?

706 :名無しさん@お腹いっぱい。:2014/08/09(土) 09:34:31.39 ID:vMraqbvr0.net
=

707 :名無しさん@お腹いっぱい。:2014/08/09(土) 21:53:05.89 ID:AEz1Ku4/0.net
#includeの説明
>相対パスで記述した場合、基準ディレクトリ(スクリプト開始時はカレントディレクトリ)から検索される。
このカレントディレクトリってどこですか?
A_ScriptDirでもA_WorkingDirでもA_AhkPathでもないみたいだけど

708 :名無しさん@お腹いっぱい。:2014/08/09(土) 23:24:41.77 ID:yUxuRbMF0.net
>>707
カレントディレクトリ=作業ディレクトリ=A_WorkingDir

変更するなら SetWorkingDir
ttp://ahkwiki.net/SetWorkingDir

709 :名無しさん@お腹いっぱい。:2014/08/09(土) 23:51:54.83 ID:AEz1Ku4/0.net
あれー?
じゃあ何か勘違いしてるのかな、確認してみますd

710 :名無しさん@お腹いっぱい。:2014/08/11(月) 13:52:11.45 ID:datcc+k50.net
Win7ですが、左下のステータスバーのアイコンがぴかぴか光っているのを止める方法ってありますか

711 :名無しさん@お腹いっぱい。:2014/08/11(月) 14:30:21.22 ID:7mokGha10.net
>>710
>342

712 :名無しさん@お腹いっぱい。:2014/08/12(火) 12:27:35.49 ID:W6HuN31S0.net
FirefoxMessageWindowsってなんなの・・・
こいつのせいでFirefoxの操作がうまくいかない

713 :名無しさん@お腹いっぱい。:2014/08/12(火) 18:07:51.23 ID:gIoYuJuG0.net
>>712
状況や何したいのか書かないとただの愚痴なんだけど。

714 :名無しさん@お腹いっぱい。:2014/08/14(木) 23:17:07.79 ID:gI8m3SMH0.net
InputBox, OutputVar, AHK

テキスト入力を求めるウィンドウを作った後に
IMEをオンにするはどうしたらいいのでしょうか?

入力を待っている間、現在のスレッドは停止してしまうので
WinWaitしてIME_SET(1)できなくてどうしていいか分かりませんでした

715 :名無しさん@お腹いっぱい。:2014/08/14(木) 23:31:59.47 ID:c5m/JJoR0.net
タイマーで入力窓がアクティブになるの見てIME_SETするとか

716 :名無しさん@お腹いっぱい。:2014/08/14(木) 23:49:40.34 ID:gI8m3SMH0.net
>>715
なるほど
ありがとうございます

717 :名無しさん@お腹いっぱい。:2014/08/17(日) 07:06:06.74 ID:AgKgV3p80.net
人のブログを無断で貼るのが憚られるのでURL貼らんけど、
9月に、IT系翻訳家向けにAutoHotkeyの講座が開かれるみたいだな

718 :名無しさん@お腹いっぱい。:2014/08/17(日) 21:24:16.04 ID:smDKGC4H0.net
AHKでChrome(またはFirefox)で表示してるページの
タイトルとURLを取得することはできますか?

Firefoxはそれを実現する拡張がたくさんありますが
Chromeだとロクなのがないので・・・

719 :名無しさん@お腹いっぱい。:2014/08/17(日) 21:30:47.03 ID:9s6UpcxI0.net
http://ahkwiki.net/WinGetTitle

もっともChromeはahkでwingetうまくいかないっぽいんで俺はfirefoxとIEエンジンの軽量ブラウザだけにした
最近は重さ変わらんしなー……

720 :名無しさん@お腹いっぱい。:2014/08/17(日) 22:57:33.88 ID:53EwPIu30.net
>>719
それでFirefoxのURLどうやって取得するの?

721 :名無しさん@お腹いっぱい。:2014/08/18(月) 00:10:10.26 ID:vnnzcIiq0.net
URL取得なら Send,^l^c か !d^c でいけんじゃね(ブラウザ共通)

うちのChromeはWinGetTitleでタイトル取れてるみたいだけど古いバージョンだからかな?
chorome ver. 36.0.1964.4d,

722 :名無しさん@お腹いっぱい。:2014/08/19(火) 00:55:32.23 ID:6xsufSXK0.net
このスレまったりしていいな
前々から評価してもらいたかったスクリプトがあるっす。
ボタンにマウスカーソルを追随させるものなんですけど。
インテリポイント使っとけって言われればそれまでなんですが…
直す所有るなら遠慮なく言って下さい。
http://upload.saloon.jp/src/up11345.zip.html

723 :名無しさん@お腹いっぱい。:2014/08/19(火) 00:59:01.90 ID:6xsufSXK0.net
もうしわけないです
MGLのプラグイン限定です
http://upload.saloon.jp/src/up11346.zip.html

724 :名無しさん@お腹いっぱい。:2014/08/19(火) 20:40:05.03 ID:48ZEG4Ht0.net
>>723
突っ込んでほしいとのことなので遠慮なく。

*MGLならそちらのスレで
*何をするスクリプトなのかレス、コメントにも書かれていない
*使い方、必要な外部関数が書かれていない
*Pluginsに入れても動かない
*大文字小文字入り乱れている

725 :名無しさん@お腹いっぱい。:2014/08/19(火) 23:31:48.34 ID:2x+vQSGs0.net
調べたい文字入れたらブラウザで検索するのを作ってみたんですが
途中で中止したい時にEscを押してもブラウザが立ち上がって検索サイトを開いてしまうんですが
InputBoxをキャンセルした時にその後の動作も止めるにはどうすればいいのでしょうか?

InputBox, UserInput,
ifMsgBox, Cancel
Run, firefox.exe "検索サイトURL"
return

726 :名無しさん@お腹いっぱい。:2014/08/19(火) 23:47:31.46 ID:48ZEG4Ht0.net
>>725
ifMsgBox は MsgBox 専用
InputBox の判定は ErrorLevel
例を見れば判る
ttp://ahkwiki.net/InputBox

727 :名無しさん@お腹いっぱい。:2014/08/19(火) 23:50:23.95 ID:u2uJ97bs0.net
a) errorlevelを見る
b) inputboxの変数が空かどうかを見る

728 :名無しさん@お腹いっぱい。:2014/08/19(火) 23:53:41.35 ID:u2uJ97bs0.net
と思ったけどbはダメだった、すまん
キャンセル押しても入力途中の文字が変数に入っちゃうのね

729 :名無しさん@お腹いっぱい。:2014/08/19(火) 23:59:15.91 ID:r2DoQLnR0.net
>>725
>724の言うとおりifMsgBox自体がまちがってるけど
この例だと『キャンセル押された時しか検索しない』になってるで

730 :名無しさん@お腹いっぱい。:2014/08/20(水) 10:20:25.79 ID:AHil8oNk0.net
FileGetVersionでバージョンは取れるのですが、同じように「製品名」を取得する方法はないのでしょうか?

731 :名無しさん@お腹いっぱい。:2014/08/20(水) 15:38:18.94 ID:maGLbbX90.net
DLLやEXEの指定アドレスにパッチする事は出来ませんでしょうか。
ヒントをお願いします。

732 :名無しさん@お腹いっぱい。:2014/08/20(水) 23:52:36.71 ID:LGV7D1TG0.net
>>730
よくある質問なので修正版の関数作成しました。
ttp://ux.getuploader.com/autohotkeyl/download/42/FileGetVersionInfo_AW.ahk

実行ファイル/DLLのバージョン情報リソース取得関数
2014/08/20 下記スクリプト修正版
ttp://www.autohotkey.com/board/topic/59496-filegetversioninfo-aw/

733 :名無しさん@お腹いっぱい。:2014/08/21(木) 00:13:03.93 ID:Jt6fL+m50.net
単一のファイルはPastebinの方がよくない?

734 :730:2014/08/21(木) 00:50:56.31 ID:c29xi3o00.net
試しにうp
ttp://pastebin.com/Bf7tJaCT

検索でヒットしやすそうですね
だがUPロダにまとまっているのも捨てがたい
両方にあげるのが一番かも?

735 :名無しさん@お腹いっぱい。:2014/08/21(木) 05:55:45.12 ID:WHLmOfqc0.net
Pastebinは非公開設定選べるぞ

736 :名無しさん@お腹いっぱい。:2014/08/22(金) 22:47:50.69 ID:+8Wm8C7W0.net
特定のウィンドウクラスがアクティブの時だけ、IMEをオフにする機能が欲しいんですが
AHKでそういうスクリプトを組むことはできるでしょうか?

737 :名無しさん@お腹いっぱい。:2014/08/22(金) 23:10:58.57 ID:AZE5zI1K0.net
>>736
>>6
> Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
> A1:http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。

SetTimerで監視すればいい。

738 :名無しさん@お腹いっぱい。:2014/08/23(土) 00:29:49.36 ID:B3SUF70A0.net
ありがとうございます、早速試してみます

739 :名無しさん@お腹いっぱい。:2014/08/23(土) 08:50:35.61 ID:ki0D4Bic0.net
Win7です
WindowsMediaPlayerを再生しているときにgを押すと止まったり再生したりというのは簡単に作れました
これは、
Winactivate, ahk_class WMP Skin Host, プレイ
でアクティブ化してから、
MouseMove, widthx / 2, widthy - 33, slow
としてクリックすればできます。widthはWinGetPosで取得します

ところが、左右の矢印で、横長ーい現在の再生位置を知らせるバー上の現在位置をクリックした状態で左右に動かして
再生位置を微調整するということをしたいのですが、これが出来ません
横長いバー上にカーソルを置くと、現在位置を知らせる小さい四角が出てきますが、これを、ImageSearchで取得しようとしても
どうしても取得できないのです。それどころか、この横長いバー自体がどうもImageSearchの対象外になっているようなのです
なので、それを確認するために、AutoHotKeyで、指定した区画のイメージをゲットする方法ってありますか
WindowsにもともとあるPrtScnでスクリーンコピーするともちろんちゃんととれて、それを加工してImageSearchのイメージファイルに
しているのですが、どうしてもサーチに失敗しています
WMPの真ん中に出てくる再生中の内容を示すロゴはちゃんとサーチできるのですが
何か対策あればお願いいたします

過去レスみると同様の質問があったようですが結局どうやって解決したのでしょうか

740 :名無しさん@お腹いっぱい。:2014/08/23(土) 11:58:22.37 ID:wQoAza4+0.net
>>739
再生/一時停止 にはショートカットキー(Ctrl+P)が設定されているのでクリックを使う必要がない。
微調整なら 早送り/巻き戻し(Ctrl+Shift+F / Ctrl+Shift+B)

*アクティブ時のみ操作
IfWinActive, Windows Media Player
Send, ^p

*非アクティブ時でも操作
ControlSend,, ^p, Windows Media Player

741 :名無しさん@お腹いっぱい。:2014/08/23(土) 12:04:13.69 ID:2upLZx/n0.net
既定ボタン上にマウスカーソルを移動するってAHKじゃできないのかな
ポータブル環境に対応させたい。他のPCだとコントロールパネルいじるのまた手間だし、そもそもいじっちゃいけないのもあるし

742 :名無しさん@お腹いっぱい。:2014/08/23(土) 12:20:19.36 ID:wQoAza4+0.net
>>741
フォーカスがあるボタンにマウス移動させるだけ。

743 :名無しさん@お腹いっぱい。:2014/08/23(土) 12:24:45.02 ID:2upLZx/n0.net
ん?フォーカス取得って、AHKコマンドにあるの?

744 :名無しさん@お腹いっぱい。:2014/08/23(土) 14:36:40.75 ID:DXo8wPke0.net
お助けください、以下のスクリプトを作りました。
しかしHide状態でデスクトップをダブルクリックすると、スタートメニューが出てしまいます。
これを出ないように出来ませんでしょうか。
よろしくお願いします。

#z::
DetectHiddenWindows, Off
IfWinExist, ahk_class Progman
{
WinHide, ahk_class Progman
} else {
WinShow, ahk_class Progman
}

745 :名無しさん@お腹いっぱい。:2014/08/23(土) 17:25:34.59 ID:ki0D4Bic0.net
>>740
ありがとう。でもmp3のときは巻き戻しは出来ないみたいなんですよね
方法としては横バーをクリックしてからシフト押しながら左右矢印で、前後に動かすというのは出来ましたが
最初に横バーをクリックする際、現在位置をクリックしないと飛んでしまうので現在位置認識が必要です

それとWMPの横バーとかその現在位置の小さな四角とかgostopのボタンはいわゆる通常のボタンとかでは認識できないようですよ
ControlGetFocusやMouseGetPosで試しても何も取得できませんし、WindowSpyでも何も出てきません
なんか特殊な作りになっているようです。
ControlSend,, ^p, Windows Media Playerは知りませんでした。ありがとうございました

それとデバッグ用にもイメージゲットが出来ればなと考えています
ピクセル単位で色ゲットは出来るのでこれを繰り返すしかないのかな

746 :名無しさん@お腹いっぱい。:2014/08/23(土) 18:29:53.03 ID:wQoAza4+0.net
>>744
*補足
デスクトップのクラスはAero有効時に「デスクトップの表示」をすると
別のクラスである「Progman→WorkerW」に切り替わる。

*デスクトップアイコンの表示切り替え
ttp://www.autohotkey.com/board/topic/46689-my-first-script-for-hidding-desktop-icons/

F1::
ControlGet, HWND, Hwnd,, SysListView321, ahk_class Progman
If HWND =
ControlGet, HWND, Hwnd,, SysListView321, ahk_class WorkerW
If DllCall("IsWindowVisible", UInt, HWND)
WinHide, ahk_id %HWND%
Else
WinShow, ahk_id %HWND%
Return

>>745
正直なところWindows Media Playerは機能不足なので別アプリをお勧めする。

747 :名無しさん@お腹いっぱい。:2014/08/23(土) 18:34:14.83 ID:wQoAza4+0.net
>>744
×Progman を非表示
○Progman または WorkerW の全体ではなく一部分のクラスを非表示

748 :名無しさん@お腹いっぱい。:2014/08/23(土) 18:36:43.80 ID:wQoAza4+0.net
訂正:一部分のコントロールを非表示

749 :名無しさん@お腹いっぱい。:2014/08/23(土) 19:00:22.63 ID:DXo8wPke0.net
>>746
すばらしい出来ました!
有難うございます!

750 :素人:2014/08/23(土) 19:45:30.49 ID:ZPLgP2my0.net
OSは,Windows7 64ビット版
AutoHotKeyのバージョンは,1.1.1.14.03 です。

Gメール配列に格納されている値を確認したのですけど,なぜかValueの値のみが表示されません?
Msgbox,の第二引数はどのように書けば表示されるのですか?

sc001 &amp; sc07B:: ; Esc &amp; 無変換 キー 練習用
X値:={メイン:"933",メイン大:"941",メイン小:"941",メイン更に小:"928"}
Y値:={メイン:"758",メイン大:"865",メイン小:"647",メイン更に小:"621"}
色値:={色:"0xF1833F",色大:"0xF38541",色小:"0xF38541",メイン更に小:"0xF38541"}
Gメール:=[X値,Y値,色値] ; 特別なカッコを[ ]を使う 2次元配列の例

For Key, Value in Gメール
{
msgbox,%Key% %Value% ; なぜか値が表示されない。
Sleep,500
} Return

751 :名無しさん@お腹いっぱい。:2014/08/23(土) 21:21:31.37 ID:wQoAza4+0.net
>>750
X値 := {メイン:"933", メイン大:"941", メイン小:"941", メイン更に小:"928"}
Y値 := {メイン:"758", メイン大:"865", メイン小:"647", メイン更に小:"621"}
色値 := {色:"0xF1833F", 色大:"0xF38541", 色小:"0xF38541", メイン更に小:"0xF38541"}
Gメール := [X値, Y値, 色値]
Loop % Gメール.MaxIndex() {
For Key, Value in Gメール[A_Index] ;←←←
MsgBox, %Key% %Value%
} Return

752 :素人:2014/08/24(日) 05:07:53.87 ID:7w2SrZs30.net
回答して下さって有り難うございます。試してみたら確かに"値"を表示しました。でもこちら側の説明不足でした。改めて質問をします。

753 :素人:2014/08/24(日) 05:30:54.30 ID:7w2SrZs30.net
以下のコードはマウスカーソルを画面の0.0の位置から,右へ100ドット下へ100ドットの位置へ移動して,
500ms休み,次に0.0の位置から200ドット右へ下へ200ドット移動する・・・・の繰り返しで計4回マウスを
移動したいのですが全く移動しません。MouseMoveの第一引数と第2引数はどのように書けば良いのでしょうか?

X値:={メイン:"100",メイン大:"200",メイン小:"300",メイン更に小:"400"}
Y値:={メイン:"100",メイン大:"200",メイン小:"300",メイン更に小:"400"}
色値:={色:"0xF1833F",色大:"0xF38541",色小:"0xF38541",メイン更に小:"0xF38541"}
Gメール:=[X値,Y値,色値]

For Key, Value in Gメール
{
MouseMove,Value,Value+1 ; 第一引数と第二引数の書き方が分かりません?
Sleep,500
} Return

754 :名無しさん@お腹いっぱい。:2014/08/24(日) 07:19:11.98 ID:7w2SrZs30.net
OSは,Windows 7 64ビット版
AutoHotKeyのバージョンは, 1.1.14.03 です。

以下のコードを実行すると,←キーのコード{sc14B}で書いても文字として表示されてしまいます。左キーを押したのと同じ作用にするにはどうしたらいいのかな?

:*:msg:: ; 仮名モードで入力しても英字で表示されるのでこっちの方が便利
Clipboard=Msgbox,`%`% {sc14B} ; ← キー
ClipWait,2
Send,^v
Return

755 :名無しさん@お腹いっぱい。:2014/08/24(日) 07:26:58.49 ID:7w2SrZs30.net
すいません,自己解決しました。

756 :743:2014/08/24(日) 13:21:34.08 ID:+3KJSDAh0.net
>>745です。
PixelGetColorを使って、イメージを取り込むスクリプトを作って試してみました
出力はppmファイル形式で出力して、IrfanViewで画像を見るということをしました
そしたら、WindowMediaPlayerの全画面を取り込んだのですが、やはり下のほうにある
横に細長いバーやスタートストップボタン、先送り巻き戻しボタンはなぜかすべて、取り込めていませんでした

AutoHotKeyの画像取り込みは、必ずしもWindowsのスクリーンキャプチャーで取り込んでいる画像と同じとは限らないことがわかりました

757 :名無しさん@お腹いっぱい。:2014/08/24(日) 14:06:46.67 ID:pX4Px9lY0.net
>>753
解決したみたいだけど、一応。
X値,Y値,色値の中の値の関連付けが文章(順番)通りになってるなら、以下の方法でやったら動いた。

これじゃ値を入力する時、入力し難い…と言うなら、自分には>>753のスクリプトを動くようには直せなかった(´・ω・`)

CoordMode, Mouse, screen
;CoordMode, ToolTip, screen

ary:=Object()
ary[1]:=[100,100,0xF1833F]
ary[2]:=[200,200,0xF38541]
ary[3]:=[300,300,0xF38541]
ary[4]:=[400,400,0xF38541]

;c:=ary.Maxindex()
;Loop, %c%
Loop, % ary.Maxindex()
{
MouseMove,0,0 ;,0 分かりやすいようにMouseMoveの第3引数省略
ToolTip, % ary[A_Index, 1] " : " ary[A_Index, 2],500,500
MouseMove,ary[A_Index, 1],ary[A_Index, 2]
Sleep,500
}

758 :名無しさん@お腹いっぱい。:2014/08/24(日) 15:44:34.07 ID:4yBZDbkX0.net
キー押してる間だけ監視ってこんなかんじでいいんですかね?

a::
settimer,hoge,20
keywait,a
settimer,hoge,off
return

759 :素人:2014/08/24(日) 17:03:20.96 ID:7w2SrZs30.net
755番の回答者の方,回答有り難うございました。

どうても"値"が表示されず散々困っていました。

回答を試してみたら都合の良いコードが書けそうです。

有り難うございました。

760 :名無しさん@お腹いっぱい。:2014/08/24(日) 19:39:48.19 ID:qMRMx5Co0.net
>>758
ok

761 :名無しさん@お腹いっぱい。:2014/08/24(日) 20:56:36.43 ID:4yBZDbkX0.net
>>760
ありがとう。
これでキー押してる間はマウスが画面反対側にワープする機能作れたよ

762 :名無しさん@お腹いっぱい。:2014/08/24(日) 21:11:10.02 ID:QM0nVhuj0.net
それを友人のデスクトップに仕込むと
鬼畜やなぁ

763 :名無しさん@お腹いっぱい。:2014/08/25(月) 11:51:10.18 ID:BG+Jn5IX0.net
一定時間経過したらマウスカーソルが隠れるようにしたいってどうすればいいんでしょう?
調べてみたけどノーマウスカーソルはいつの間にか有料化してて使う気になれません

764 :名無しさん@お腹いっぱい。:2014/08/25(月) 13:24:03.29 ID:JGJhw2qg0.net
>>763
マウスカーソルを非表示にする。
ttp://www.autohotkey.com/board/topic/5727-hiding-the-mouse-cursor/#post_id_35221

非表示のまま終了させると消えたままになるので
Auto-executeセクションに以下を追加。

OnExit, ShowCursor
ShowCursor:
SystemCursor()
ExitApp

765 :名無しさん@お腹いっぱい。:2014/08/25(月) 13:52:15.04 ID:BG+Jn5IX0.net
このloop9から始まるところを丸コピすればいいのかな?ちょっとやってみます

766 :名無しさん@お腹いっぱい。:2014/08/25(月) 14:00:35.03 ID:BG+Jn5IX0.net
あ、ちがった。システムカーソルっていう関数なんですね。了解しました

767 :名無しさん@お腹いっぱい。:2014/08/25(月) 14:59:51.91 ID:BG+Jn5IX0.net
もう一回力をおかしください
SetTimer, hidecursor,5000

hidecursor:
CoordMode,Mouse,Screen
mousegetpos,_X,_Y
If (tempX = _X)&&(tempY = _Y)
{
SystemCursor(0)
}else{
SystemCursor(1)
}
TempX := _X
TempY := _Y
return

さっきの関数でこんなかんじで作ってみたんですけどこれだと動かしてから5秒立たないとマウスカーソルが出てくれません
動かしたらすぐ見えるようにするにはどうすればいいんでしょう?

768 :名無しさん@お腹いっぱい。:2014/08/25(月) 15:15:45.24 ID:BG+Jn5IX0.net
あ、できた。自己解決しました

SetTimer, hidecursor,10

hidecursor:
CoordMode,Mouse,Screen
mousegetpos,_X,_Y
Timer++
If (tempX = _X)&&(tempY = _Y)&&(Timer>500)
{
SystemCursor(0)
}else{
If(Timer > 500)
Timer := 0
SystemCursor(1)
}
TempX := _X
TempY := _Y
return

769 :名無しさん@お腹いっぱい。:2014/08/25(月) 15:55:08.38 ID:fhuMfdLD0.net
際限なく足されるって怖くね?こうしたら?
timerset := 500
SetTimer, hidecursor,10

hidecursor:
CoordMode,Mouse,Screen
mousegetpos,_X,_Y
If(timerset > Timer){
Timer++
;TrayTip , , %Timer%, 10 ,1
}
If (tempX = _X)&&(tempY = _Y)&&(Timer = timerset)
{
SystemCursor(0)
}else If(Timer = timerset){
Timer := 0
SystemCursor(1)
}
TempX := _X
TempY := _Y
return

770 :名無しさん@お腹いっぱい。:2014/08/25(月) 17:54:01.57 ID:fhuMfdLD0.net
なんかおかしい気がするのでもうちょい手直し
いや、希望の動作とは違うかもしれないけど、>>768-767だとカウント後座標がフラグになってないから

hidecursor:
CoordMode,Mouse,Screen
mousegetpos,_X,_Y
;座標確保
If (Timer = 0){
TempX := _X
TempY := _Y
}
;カウント
If(timerset > Timer)&&(tempX = _X)&&(tempY = _Y){
Timer++
;TrayTip , , %Timer%, 10 ,1
}else if(tempX != _X)or(tempY != _Y){
Timer:=0
}
;カウント到達でマウスカーソル隠す
If (Timer = timerset){
SystemCursor(0)
}else{
SystemCursor()
}
return

771 :名無しさん@お腹いっぱい。:2014/08/25(月) 18:39:43.02 ID:1aYnwp2u0.net
>>737
遅くなりましたが助言ありがとうございました
おかげでショートカット多用するペイントソフトで頻発していた事故が収まりました

772 :名無しさん@お腹いっぱい。:2014/08/26(火) 11:42:49.61 ID:MQi+52IU0.net
>>770
ノーマウスカーソルの代わりはこれでもいいかも

773 :名無しさん@お腹いっぱい。:2014/08/26(火) 21:23:32.58 ID:Mt2v1TI80.net
>>770
関数ひたすら実行してるのだが・・・。

定着すると怖いので修正&まとめ
; ---------------------------------------------------------------------------
; 一定時間後マウスカーソルを非表示
; マウスカーソル非表示関数 SystemCursor()
; http://www.autohotkey.com/board/topic/5727-hiding-the-mouse-cursor/#post_id_35221
; ---------------------------------------------------------------------------
#Persistent
SetTimer, SHCursor, 100
OnExit, ShowCursor
Return

ShowCursor:
SystemCursor(1)
ExitApp

SHCursor:
CoordMode, Mouse, Screen
MouseGetPos, SHC_X, SHC_Y
If (SHC_X = _SHC_X) && (SHC_Y = _SHC_Y) && (A_TickCount > SHC_Count + 2000) && !(SHC_Flag)
SystemCursor(0), SHC_Flag := 1 SHC_Count := ""
Else {
If (SHC_X != _SHC_X) && (SHC_Y != _SHC_Y) && (SHC_Flag)
SystemCursor(1), SHC_Flag := 0
If !(SHC_Count)
SHC_Count := A_TickCount
}
_SHC_X := SHC_X, _SHC_Y := SHC_Y
Return

774 :名無しさん@お腹いっぱい。:2014/08/27(水) 07:42:19.81 ID:toZfFhrn0.net
面白い方法だな
カーソル非表示を正攻法でやるならAttachThreadInputとShowCursorだと思うけど
実際自分はこれでやってるんだが
久々にMSDNのAttachThreadInputを眺めてたら、ジャーナルレコードフックについて記述してあることに気づいて
もしかしてと思って試したら
AttachThreadInput使わなくてもShowCursorを他のプロセスでも適用できた
コード的には多分これが一番簡単かもしれない

プロシージャ内での処理が適切かどうかわからんので
危険が危い感じがしたら修正よろ

因みにここらへん落ちてたコードを改変して貼りつけ用に短くしてある
http://news.livedoor.com/article/detail/4630875/

RegisterCallbackで一応SlowにしてるけどFastでも平気かもしれない
まぁこんな方法もあるよってことで

775 :名無しさん@お腹いっぱい。:2014/08/27(水) 07:45:43.91 ID:toZfFhrn0.net
ちょっと待ってw1行が長すぎたので
短くしてから貼るw

776 :名無しさん@お腹いっぱい。:2014/08/27(水) 07:48:42.14 ID:toZfFhrn0.net
#Persistent
OnExit, Unhook
hJournalHook:=DllCall("SetWindowsHookEx", "int", 0, "Uint", RegisterCallback("JRProc", "S"), "Uint", DllCall("GetModuleHandle", "Uint", 0), "Uint", 0)
ShowCursor(false)
Return
Unhook:
DllCall("UnhookWindowsHookEx", "Uint", hJournalHook)
ExitApp
JRProc(nCode, wParam, lParam){
global hJournalHook
Return DllCall("CallNextHookEx", "Uint", hJournalHook, "int", nCode, "Uint", wParam, "Uint", lParam)
}
ShowCursor(bShow=true){
dispCount:=DllCall("ShowCursor", Int, bShow, Int)
if(bShow){
while dispCount>0{
dispCount:=DllCall("ShowCursor", Int, false, Int)
}
while dispCount<0{
dispCount:=DllCall("ShowCursor", Int, true, Int)
}
}else{
while dispCount<-1{
dispCount:=DllCall("ShowCursor", Int, true, Int)
}
while dispCount>-1{
dispCount:=DllCall("ShowCursor", Int, false, Int)
}
}
return dispCount
}
esc::exitapp

777 :名無しさん@お腹いっぱい。:2014/08/27(水) 11:25:28.54 ID:m5m67TPR0.net
>>776
環境で動作が変わっているので修正が必要。

*win7x64
スクリプト → AutoHotkey上のみ非表示
EXE → 常に非表示

*XPx86
スクリプト、EXE → 常に非表示

778 :名無しさん@お腹いっぱい。:2014/08/28(木) 00:33:16.39 ID:HPvF5asc0.net
割って入って申し訳ないですが初心者の質問でおしえてください。
autohotkeyで現在の日付時間をスラッシュやコロンなしで入力したいのですが
どうやればできますか? 日本語なしで数字の羅列だけで
(矛盾するようですが日付と時間の間にマイナスをいれたい気持ちもあります。)

拝借してきたこれを改変したいのですが
TimeString = A_Now
FormatTime, TimeString, yyyy MM dd hh:mm R
clipboard = %TimeString%

779 :名無しさん@お腹いっぱい。:2014/08/28(木) 00:40:33.25 ID:NC5V11ov0.net
それA_Nowのままでいいんじゃ?w

780 :名無しさん@お腹いっぱい。:2014/08/28(木) 00:54:31.67 ID:HPvF5asc0.net
776です。なんとか適当にいじったらできたかもしれません。
FormatTime, TimeString, ,yyyy-MMM-dd__hh-mm

781 :名無しさん@お腹いっぱい。:2014/08/28(木) 01:08:05.67 ID:w+ZLlrfk0.net
>>780
数値を変換するならFormatTimeで処理、
現在時刻だけなら組み込み変数並べたほうが手間が掛からない。

782 :名無しさん@お腹いっぱい。:2014/08/28(木) 02:18:17.79 ID:4tGEBKnw0.net
>>777
環境がないから確認できないんだよなー
なんだろう?EXEだと普通に動くのか
32bitプロセスから64bitプロセス(またはその逆)にフックが掛からないとかあるみたいだから
そこらへんかな?
あと考えられるとしたらSetWindowsHookEXとGetModuleHandleにはWとAが定義されてるけど
その切り替えでうまくいってないとか?
とりあえず参考程度のスクリプトってことで御免

783 :名無しさん@お腹いっぱい。:2014/08/28(木) 07:48:01.04 ID:99sdwoKC0.net
それこそノーマウスカーソル使えばいいんじゃないの?

と思ってググったらマウ筋lite同様有料ソフトになってやがった……

784 :名無しさん@お腹いっぱい。:2014/08/28(木) 07:58:18.17 ID:twHdboIn0.net
>>783
少しくらいは過去レスみてから書き込め  >>763

785 :名無しさん@お腹いっぱい。:2014/08/28(木) 08:17:02.76 ID:99sdwoKC0.net
ありゃ、これは失礼しました。もう書いてたのか

786 :名無しさん@お腹いっぱい。:2014/08/28(木) 13:14:04.66 ID:0Yj9U2+V0.net
なんでもできるなー

787 :名無しさん@お腹いっぱい。:2014/08/28(木) 13:22:05.45 ID:eDZSNL1P0.net
何でもは出来ないわよ。出来ることだけ。

788 :名無しさん@お腹いっぱい。:2014/08/30(土) 19:17:51.61 ID:RGupRAYrZ
OSは,Windows 7 64ビット版
AutoHotKeyのバージョンは, 1.1.14.03 です。

Gメールの画面で自動ログオフするコードを考えています。
画面の最も上から下に向かって
SysGet,Tabタイトルバー高,30
SysGet,アドレスバー高,52
SysGet,境界高,5
っと,それぞれ値を求められますが,その下にある幅の広いバーの値を求める方法は無いのでしょうか?

789 :名無しさん@お腹いっぱい。:2014/08/30(土) 22:30:07.37 ID:Ycw7vOPq0.net
sendmodeって一回記述すればそれ以後はずっと有効なんですかね?
例えば
a::
sendmode,Input
send,a
return
b::
send,c
return

のような場合、b::の時もsendmode,inputは有効なんでしょうか?

790 :名無しさん@お腹いっぱい。:2014/08/30(土) 22:36:48.80 ID:BRijOGLV0.net
>>789
この設定の基本値は、スクリプトの最初のAuto-executeセクションで設定する。
ホットキーなどで新たに起動されたスレッドでは、設定は基本値に設定される。
ttp://ahkwiki.net/SendMode#Remarks

791 :名無しさん@お腹いっぱい。:2014/08/30(土) 23:02:40.50 ID:U1HzSyRh0.net
すみまsん、ちょっとお聞きしたいんですが……

ブラウザで現在開いてるすべてのタブのテキストを.txtでそれぞれ保存して、さらにそれらにテキストエディタのマクロを適用するって出来るでしょうか?
ブラウザはOpera12、テキストエディタはMeryです

2chのSS(ショートストーリーの略)まとめサイトからめぼしいSSを拾っては無駄な空行消すなど修正してローカルに貯めてるんですが、
一気に30くらい見つかると一つ一つやるの面倒でして

792 :名無しさん@お腹いっぱい。:2014/08/30(土) 23:34:54.03 ID:ABoBk3HOi.net
専ブラ使った方が楽じゃね?

793 :名無しさん@お腹いっぱい。:2014/08/30(土) 23:51:13.04 ID:CZXV3KMe0.net
秀丸、xyzzy、emみたいにテキストブラウザになるエディタ使うという手も

794 :名無しさん@お腹いっぱい。:2014/08/31(日) 00:00:18.40 ID:FfxihNaD0.net
>>791
するべきことを順番に書き並べてみたら簡単なことじゃない?
それとも、面倒だからここで誰かに作ってもらおうと思った?

795 :名無しさん@お腹いっぱい。:2014/08/31(日) 00:36:37.94 ID:ObCclixM0.net
>>794
現状に沿った単純なマクロ処理以外に何か妙手を思いつく方がいないかと思いまして
>>793さんのような

とりあえず、作業フォルダに一タブずつ全選択→コピー→FileAppendでtxtで保存してMeryでコマンドラインから作業フォルダ内の全txtにそれぞれマクロを適用する、という流れを考えていたんですけど、
loopとかの繰り返す操作の使い方下手なのでエラー起きそうで、もっと賢いやり方があると良いなと思いました
あと全タブからテキストを取得するのもいろいろソフトを駆使したら楽に確実に出来るんじゃないかなぁとか

「お知恵を拝借したく」っていうのは本来こういう意味ですよね?

796 :名無しさん@お腹いっぱい。:2014/08/31(日) 01:06:40.73 ID:ajKlbYIs0.net
質問です。

str = abcdef
rep("str")

rep(tgt){
 MsgBox, % %tgt%
return
}

このスクリプトを動かすとMsgboxが「abcdef」と表示できちゃうのはなんでですかね?
関数内からglobal宣言していない外部の変数を参照してるのに。
さらに不思議なことに

str = abcdef
rep("str")

rep(tgt){
 MsgBox, % %tgt%
 MsgBox, %str%
return
}

という風に関数内から仮引数を使わずに外の変数を参照するものを併記すると
2つ目のMsgboxはもちろん1つ目のMsgboxも何も表示しません。
バグなのか俺が知らない仕様があるのか・・・

797 :名無しさん@お腹いっぱい。:2014/08/31(日) 03:35:16.57 ID:92w83bwi0.net
>>791
「スクレイピング」でググれ
…と言ってもわからんか。ブラウザとテキストエディタをベースに考えるんじゃなくて、
まず目的とするHTMLファイルをダウンロードして、
ダウンロードしたHTMLファイルの中からタグを目印に本文を切り出すアプローチを考えるんや。
そういう仕事は AutoHotkey の主戦場やない。わしなら WSH/JavaScript でやるわ

798 :名無しさん@お腹いっぱい。:2014/08/31(日) 09:00:57.36 ID:0c8+uCAf0.net
>>796
ここは作者が常駐してるフォーラムと違うんで謎挙動の理由問われても答えらんないよ

あと個人的に、謎挙動の報告に「質問」という体を装うのはどうかなと思う
ここで質問する人の多くはやりたいことをどうやって実現するかを聞いてくるので
何がしたいかの前置きなしに特に目的のないソース貼って
「動かしてくれればわかる」みたいな質問の仕方だとちょっと戸惑う

799 :名無しさん@お腹いっぱい。:2014/08/31(日) 09:57:18.03 ID:Z333pmd20.net
>>796
ド素人ががんばって考えてみた結果

前者でtgtに入ってるのは「strの複製物」であって
外部の変数strを参照してるのではない
かな?

後者もtgtの中身が「グローバル変数とは異なるstr」ってとこまでは同じで
じゃあそのstrの中身はなんですかって時に
関数内にローカル変数strが存在するのでそっちが参照される
かなかな?

800 :名無しさん@お腹いっぱい。:2014/08/31(日) 10:16:00.03 ID:vKeDNnyn0.net
つかそのコードの書き方だと動作不定っていうか
仕様上こうなるのが正しいって保障されるべきものはないでしょ
期待する結果出なくて当然じゃない?

バグじゃなくて単に避けるべき記述だと思うけど

801 :名無しさん@お腹いっぱい。:2014/08/31(日) 10:27:02.42 ID:uiHAl66P0.net
>>799
tgtに入ってるのは "str" という文字列だと思う

こういう参照系のミスリードを誘うコードは意図してやってるなら一言説明が欲しいね
説明なしに貼られるとまず記述ミスなのかって疑うし

802 :名無しさん@お腹いっぱい。:2014/08/31(日) 10:32:19.60 ID:FfxihNaD0.net
多分、未定義っていう仕様なんじゃない?
調べてないけど定義されていない変数参照だし、まあ未定義だろうとおもう。
上のスクリプトでabcdefと表示されるのは単なる偶然で、おそらくは廃棄された変数領域を
アクセスしてるだけ。

803 :名無しさん@お腹いっぱい。:2014/08/31(日) 10:59:29.15 ID:wwg4nAYp0.net
>>798
自分じゃよくわからないから質問して何が問題なんだか。
挙動もキチンと書いてあるじゃない。

>>796
変数の二重展開するとグローバル変数扱いに、通常の展開をすると変数がローカル変数扱いに
local str とするとローカル変数扱いになるのでやはりバグかもしれない。

フォーラムに投稿してみれば?
ttp://ahkscript.org/boards/viewforum.php?f=14&sid=fa3cef74485a9aa151adff43aedd2d7a

804 :名無しさん@お腹いっぱい。:2014/08/31(日) 11:53:46.94 ID:ObCclixM0.net
>>797
>スクレイピング
これはまさしく今私が手動でやってることですね
phpとrubyという文字が出てきますがAHKでも手こずってる私には無理ですね……利用できそうなフリーソフトも見あたりませんし

今Weboxを利用できないか検討してます
面白いものをありがとうございました

805 :名無しさん@お腹いっぱい。:2014/08/31(日) 13:17:35.04 ID:JgCc02W00.net
>>804
ちょっと…もう見てないかな、まあいいか。

使ってるブラウザがopera12.xなら、[メニュー]→[ページ]→[保存](ctrl+s)で出る保存ダイアログで
「ファイルの種類」を「text file」にすれば表示してるページをテキストで保存できるぞ。
「Switch to next page(ctrl+F6)」ないし、「Switch to previous page (ctrl+shift+F6)」
で次(前)のタブに移り、表示してるページのテキスト保存を繰り返す。
最初のタブのページタイトルを記憶しておき、一周したらスクリプト終了。
とりあえず、表示してるページのテキスト保存は自動で出来ると思う。

が、テキスト保存より先のテキストエディタのマクロを適用するまでを自動化する方法は分からない。

806 :名無しさん@お腹いっぱい。:2014/08/31(日) 13:58:41.51 ID:I5KnY+v4J
PixelGetColor,色,500,550,RGB ; XとYの値は背景色が金色の領域内にあり
msgbox,%色%
return

ところが
PixelSearch,X,Y,500,500, 500,600,色,5,RGB
If(ElorrLevel=0) {
Msgbox,色が一致
} Else {
msgbox,色は不一致
} Return
上のコードで何回やっても「色は不一致」と標示されます?どのような方法をとれば良いのでしょうか?

807 :名無しさん@お腹いっぱい。:2014/08/31(日) 14:49:58.59 ID:ObCclixM0.net
>>805
5年ほどおぺらーやってましたがそんなことが出来たなんて……
Operaでページ保存というとmhtmlしか頭にありませんでした

ダイアログ出さないで保存してくれるアクションがあると良かったんですけどね
さんくすです

808 :名無しさん@お腹いっぱい。:2014/08/31(日) 14:53:36.93 ID:JgCc02W00.net
>>773
なんか、マウスカーソルの消えるタイミングがまちまちだった。(おれ環?)

なので、一応素人なりに作ったスクリプトだけど、上げとく。
大体一定時間経つと消えると思うし、>>773が言う、「関数ひたすら実行してるのだが・・・。」も踏まえてる…ハズ。
玄人の方、ここはこうした方が良い…等有れば修正よろしくです。
#Persistent

hide_flag := 0
timer := 0
timerset := 50

SetTimer, show_hide_cursor, 100
OnExit, show_cursor
return

show_cursor:
systemcursor(1)
ExitApp

次レスへ続く→

809 :名無しさん@お腹いっぱい。:2014/08/31(日) 14:54:41.49 ID:JgCc02W00.net
→前レスからの続き

show_hide_cursor:
CoordMode, mouse, screen
MouseGetPos, _x, _y
timer++
if (timer > timerset) {
timer := 0
}
if (tempx = _x) && (tempy = _y) {
if (timer = 0) {
systemcursor(0)
hide_flag := 1
}
}else{
if (tempx != _x) || (tempy != _y) {
timer := 0
}
if (hide_flag = 1) {
systemcursor(1)
hide_flag := 0
}
}
tempx := _x
tempy := _y
return

810 :名無しさん@お腹いっぱい。:2014/08/31(日) 16:10:07.51 ID:ajKlbYIs0.net
>>796です。
今作成中のスクリプトの動作確認中にglobal宣言してない変数にアクセスできることに気づき
仕様なのかどうなのか気になったので質問させて頂きました。
特に他の意図はないです。
蛇足までに補足すると、「tgt」は実際のスクリプトでは関数内外で使用する変数のプレフィックスです。
質問するにあたって問題が再現できる最小限の構成にしたのでこんな意味のない記述になっていますが。

皆様のレスを見る限りどうやらバグくさいようですね。
フォーラムに投稿か・・・英語でこれを説明できるかどうか。
まぁぼちぼち頑張ってみます。お騒がせしました。

811 :771:2014/08/31(日) 16:46:20.38 ID:KrfNP8VO0.net
>>808
改めて見てみると正しく処理できてませんね、お恥ずかしい限りですw
以下修正
; ---------------------------------------------------------------------------
; 一定時間後マウスカーソルを非表示
; マウスカーソル非表示関数 SystemCursor()
; http://www.autohotkey.com/board/topic/5727-hiding-the-mouse-cursor/#post_id_35221
; ---------------------------------------------------------------------------
#Persistent
SetTimer, SHCursor, 100 ;負荷/精度調整
OnExit, ShowCursor
Return

ShowCursor:
SystemCursor(1)
ExitApp

SHCursor:
CoordMode, Mouse, Screen
MouseGetPos, SHC_X, SHC_Y
If (SHC_X = _SHC_X) && (SHC_Y = _SHC_Y) {
If !(SHC_Flag) && (A_TickCount > SHC_Count + 2000) ;非表示までの時間
SystemCursor(0), SHC_Flag := 1
} Else {
SHC_Count := A_TickCount
If (SHC_Flag)
SystemCursor(1), SHC_Flag := 0
}
_SHC_X := SHC_X, _SHC_Y := SHC_Y
Return

812 :名無しさん@お腹いっぱい。:2014/08/31(日) 16:46:32.39 ID:JgCc02W00.net
>>809
すいません。
if (tempx != _x) || (tempy != _y) { 以下3行修正しますた。

誤:
if (tempx != _x) || (tempy != _y) {
timer := 0
}

正:
timer := 0

813 :名無しさん@お腹いっぱい。:2014/08/31(日) 16:53:29.23 ID:NRLJRH8m0.net
>>808-805
グローバル変数を減らすとかはどうだろう

#Persistent
timerset := 50
SetTimer, Show_Hide_Cursor, 100
OnExit, Show_Cursor
Return

Show_Cursor:
SystemCursor(True)
ExitApp

Show_Hide_Cursor:
CoordMode, Mouse, Screen
MouseGetPos, x, y
HideAndSeek(x, y, timerset)
Return

HideAndSeek(x, y, limit = 50){
Static px, py, cnt := 0, flag := True
If (x == px && y == py) {
(++cnt >= limit && cnt := 0 || flag && SystemCursor(flag := False))
Return
}
(flag || SystemCursor(flag := True))
cnt := 0, px := x, py := y
}

814 :名無しさん@お腹いっぱい。:2014/08/31(日) 16:59:55.41 ID:YTchHGmI0.net
関数にstr渡しておきながらstrが外部だからといって参照できなかったらそのほうが困っちゃわね?

815 :名無しさん@お腹いっぱい。:2014/08/31(日) 17:11:28.75 ID:JgCc02W00.net
>>811,809
凄い、なんか洗練されてるって感じがする。
また、同じことするスクリプトなのに、これだけ多くの書き方が有るんだなあと思った。
両スクリプト共、まだ内容が理解できてないので、時間かけてじっくり読み解こう。

816 :名無しさん@お腹いっぱい。:2014/08/31(日) 18:47:51.92 ID:3RwTlV6b0.net
つか存在してない変数を参照しようとすること自体おかしいと思うんだが
普通に考えたら>799だしバグっつってるの>800だけなのに
皆様のレス見てバグくさいって判断になるのもわけわからん

817 :名無しさん@お腹いっぱい。:2014/08/31(日) 20:25:07.85 ID:73DxciyW0.net
カーソル消しに参戦。超簡単かつ単純な力技
コメントアウト消せばデバックできますが、まぁ余計か

HideCTimerset := 30

#Persistent
SetTimer, hidecursor,100

hidecursor:
;ToolTip, %Timer%
CoordMode,Mouse,Screen
mousegetpos,X,Y
If(Timer > 0)&&(TempX = X)&&(TempY = Y)&&(Timer != "off"){
Timer--
}else if(tempX != X)||(tempY != Y)||(getkeystate("Lbutton")){
Timer := HideCTimerset
}
If (Timer = HideCTimerset){
If(HideC == "off"){
SystemCursor(1)
}
TempX := X,TempY := Y,HideC := "on"
}else If (Timer = 0){
Timer := HideC := "off"
SystemCursor(0)
}
return

818 :名無しさん@お腹いっぱい。:2014/08/31(日) 23:31:54.21 ID:sJu3+fAL0.net
>>816
>>802の内容ってバグそのものじゃん
何いってんの

819 :名無しさん@お腹いっぱい。:2014/09/01(月) 00:01:58.30 ID:dCXMakQC0.net
>>818
は?

820 :名無しさん@お腹いっぱい。:2014/09/01(月) 03:58:11.03 ID:jEtBup8p0.net
仕様じゃね?

https://sites.google.com/site/autohotkeyjp/reference/Function#TOC--9

821 :名無しさん@お腹いっぱい。:2014/09/01(月) 08:44:35.07 ID:dcxYt6Km0.net
>>818
cとか他の言語使ったことない人?ポインタ制御知ってたらそういう結論にはならないと思うが

まあ>816見る限り仕様だな、きちんと説明されてるし意図して作ってあるっぽい

822 :名無しさん@お腹いっぱい。:2014/09/01(月) 09:02:19.59 ID:HXvkDDO60.net
ahkは初期化しなくても変数使えちゃうからこういうことになる

823 :名無しさん@お腹いっぱい。:2014/09/01(月) 19:26:11.54 ID:Bjr4cTCA0
;以下のコードを実行すると「Gメール」の文字がウインドウ内で左寄りに標示されてしまいます。Gメールの文字を中央に標示させたいのですが,どのように書けば良いのでしょうか?

Msgbox,1,Gメール,%A_SPACE%%A_SPACE%%A_SPACE%%A_SPACE%%A_SPACE%%A_SPACE%%A_SPACE% Gメール ,.3
Return

824 :名無しさん@お腹いっぱい。:2014/09/01(月) 21:16:30.94 ID:XbquXvrb0.net
>>796=>>810です。

>関数内で Array%i%のような動的変数を使用した場合、ローカル変数として扱われる。
>ただし、その名前のローカル変数が存在せず、グローバル変数なら存在する場合、そのグローバル変数が使われる。

そういう仕様があったんですね。

ただ>>796
rep(tgt){
 MsgBox, % %tgt%
 MsgBox, %str%
return
}
だと表示できなくなるのはなんでなn・・・いやもういいか(笑)

>>820及び意見をくれた皆さんありがとうございました。
調べ不足で申し訳ない

825 :名無しさん@お腹いっぱい。:2014/09/01(月) 21:51:04.91 ID:jEtBup8p0.net
>>824
たぶんだけど、静的変数(?)はスクリプト実行前に決定して
動的変数は実行時に決定するんじゃないかな
% %tgt% より %str% が後に出てきても strは関数の頭からlocal変数扱いになると

ドキュメント探せば書いてあるかも知れないが面倒なのでパス

826 :名無しさん@お腹いっぱい。:2014/09/01(月) 21:53:35.57 ID:DodDbTDN0.net
>>820
それ作者が書いたの?

827 :名無しさん@お腹いっぱい。:2014/09/01(月) 22:13:14.64 ID:XbquXvrb0.net
>>825
ふむふむなるほど。
納得がいきました。ありがとうございます。

828 :名無しさん@お腹いっぱい。:2014/09/01(月) 23:46:14.40 ID:eunlrUEY0.net
>>826
ヘルプのFunctionsの項に原文載ってるよ

829 :名無しさん@お腹いっぱい。:2014/09/02(火) 16:13:06.23 ID:tlpGyT8x0.net
ヤバいハマった……

指定フォルダの7日前以前のファイルを削除したいんですがどういうふうに書けばいいんでしょう?

ちょっと2chビュワーのログが1G超えてて戦慄を覚えたんで定期的に掃除したいんです

830 :名無しさん@お腹いっぱい。:2014/09/02(火) 16:21:03.23 ID:DToazf+v0.net
>>829
簡単だから後は自分で考えよう。

ttp://ahkwiki.net/LoopFile
ttp://ahkwiki.net/FileGetTime
ttp://ahkwiki.net/FileDelete

831 :名無しさん@お腹いっぱい。:2014/09/02(火) 19:57:37.63 ID:7X8ex1bP0.net
3TBのHDDが1万円くらい
1GBあたり3円ちょっとだけど
まあがんばれ

832 :名無しさん@お腹いっぱい。:2014/09/02(火) 21:29:59.63 ID:gyybJRIy0.net
>>811
>If !(SHC_Flag) && (A_TickCount > SHC_Count + 2000) ;非表示までの時間
!(SHC_Flag) は無くても良いような。
(A_TickCount > SHC_Count + 2000) の条件が成立するのは、SHC_Flag がfalseの時だけだよね?
とりあえず実際に動かしても問題なかったけど、検証よろしく。

833 :名無しさん@お腹いっぱい。:2014/09/02(火) 21:49:08.51 ID:DToazf+v0.net
>>832
実行ログ見ればわかるが
!(SHC_Flag) が無いと関数が繰り返し実行され続ける。

834 :名無しさん@お腹いっぱい。:2014/09/02(火) 23:06:05.50 ID:gyybJRIy0.net
>>833
あ、そうか。
SystemCursor(1) の方にばっかり目が行ってた。
カーソルが消えてるとき、!(SHC_Flag) が無いと SystemCursor(0) が実行され続けるんだね。
ご指摘サンクス。

835 :名無しさん@お腹いっぱい。:2014/09/03(水) 00:00:44.09 ID:rujf13220.net
キーボードにマウスの右クリック割り当てたいのだけど一定時間でホールド状態が強制的に解除されてしまってマウスのように長時間ホールドできません
これは解決方法はあるのでしょうか?

836 :名無しさん@お腹いっぱい。:2014/09/03(水) 00:13:58.81 ID:Cg+xZbYi0.net
どういうスクリプト書いてるかわからんからアレだけど
キーのダウンに右クリックダウンを割り当てて
キーのアップに右クリックアップを割り当ててみれば?

837 :名無しさん@お腹いっぱい。:2014/09/03(水) 00:18:50.39 ID:kr8YCd2y0.net
もともとキーボードのキーを押しっぱなしにすると連打状態になるせいか、そのようにして実際にキーを上げなくても内部的にキーが上がっているようです
キーが下がったまま、上がった時のコマンドが実行されます

838 :名無しさん@お腹いっぱい。:2014/09/03(水) 00:25:40.56 ID:8n1nWL330.net
KeyWait

839 :名無しさん@お腹いっぱい。:2014/09/03(水) 00:31:29.30 ID:kr8YCd2y0.net
失礼、MouseGestureLの影響だったようです
キーダウンに何も設定していなかったので関係ないだろうと思っていたのですが無効にしたらうまく動きました
MGLのほうで解決方法を探してみます
ありがとうございました

840 :名無しさん@お腹いっぱい。:2014/09/04(木) 14:36:12.35 ID:z0lEX3fZ0.net
IniRead, hage, hage.ini, ハゲ, 人数
If hage=0 || hage=1 || hage=2 || hage=3 || hage=4 || hage=5
{
msgbox, ハゲが%hage%人なので終了します
} else {
msgbox, それ以外
}
return

~esc::exitapp

IniReadからのIF文についてお尋ねします
二行目のIF文を「一行」で複数指定する場合はどうしたらいいでしょうか?
よろしくお願いします

841 :名無しさん@お腹いっぱい。:2014/09/04(木) 14:43:04.30 ID:TALmPXwX0.net
普通に分岐を5かそれ以下にすればいいじゃない

842 :名無しさん@お腹いっぱい。:2014/09/04(木) 14:53:44.42 ID:z0lEX3fZ0.net
すみません。
二行目を、If hage <= 5
にする事で対応出来たのですが、出来れば複数の数値を明確に指定したいのです。
引き続きよろしくお願いします。

843 :名無しさん@お腹いっぱい。:2014/09/04(木) 14:55:27.64 ID:z5i2/mUT0.net
>>842
If hage=1, 2, 3, 4, 5
とかそんな感じでってこと?

844 :名無しさん@お腹いっぱい。:2014/09/04(木) 15:00:16.29 ID:z0lEX3fZ0.net
>>843
実際に数値は歯抜けになるケースがあるので、指定したい数値は様々です。
If hage=0, 2, 5
If hage=1, 4, 5
If hage=1, 2, 3
とかそんな感じです。

845 :名無しさん@お腹いっぱい。:2014/09/04(木) 15:03:13.14 ID:od9O8lnv0.net
If hage in 1,3,5
とか

846 :名無しさん@お腹いっぱい。:2014/09/04(木) 15:08:39.01 ID:z0lEX3fZ0.net
>>845
素晴らしいーーーーーーーーーーーーーーーー!!!!。
出来ました有難うございます、本当に感謝しています。
協力して頂いた皆さんも有難うございます!!!!!!!!。

847 :名無しさん@お腹いっぱい。:2014/09/04(木) 15:11:21.47 ID:od9O8lnv0.net
>>846
数値としてじゃなく文字列として判断してるとかスペース入れちゃだめとかあるから
一応リファレンス確認しておいてね

848 :名無しさん@お腹いっぱい。:2014/09/04(木) 16:09:29.43 ID:z0lEX3fZ0.net
>>847
分かりました、ありがとうございました。

849 :名無しさん@お腹いっぱい。:2014/09/05(金) 23:18:50.11 ID:v9xLdxPpu
また髪の話してる ・・

850 :名無しさん@お腹いっぱい。:2014/09/06(土) 20:49:41.99 ID:ZqvDFPoh0.net
どなたかお助け下さい。
以下のコードは、Pauseキーを長押しすると処理を実行するのですが
こちらの環境ですと、Pauseキーを長押ししても反応なしです。
しかし、長押し設定にしないとPauseキーが反応します。
よろしくお願いします。
~Pause::
KeyWait, Pause, T0.9999
If Errorlevel {
SoundPlay, *64
} return

851 :名無しさん@お腹いっぱい。:2014/09/06(土) 21:05:36.04 ID:jBHP6t7R0.net
そのままで長押しでピローンて鳴る

852 :名無しさん@お腹いっぱい。:2014/09/06(土) 21:10:18.70 ID:ZqvDFPoh0.net
検証有難うございます。
こちらでも、他の環境ですと音が鳴るんですよね。
どうやら環境に問題ありそうです。
この手の長押し系コードで、別のコードが有ればご紹介ください。
よろしくお願いします。

853 :名無しさん@お腹いっぱい。:2014/09/06(土) 21:36:42.70 ID:083wOB700.net
>>850
環境書いてないのだが。
余計なコードと一緒にテストしてないか?
あと、音だとわかりにくい。

~Pause::
KeyWait, Pause, T1
If Errorlevel {
MsgBox
} return

854 :名無しさん@お腹いっぱい。:2014/09/06(土) 21:48:34.60 ID:ZqvDFPoh0.net
>>853
すみません。
win7x64に、ここのhttp://ahkscript.org/download/
ansi版とUnicode版で確認しました。
出来る限りの常駐物をキルした状態でも反応しませんでした。
Pauseキー以外の違うキーなら幾らでも反応するんですけど・・・。
原因がさっぱり分かりません。

855 :名無しさん@お腹いっぱい。:2014/09/06(土) 22:35:39.29 ID:083wOB700.net
>>854
5行だけでテストしたのか?
MsgBoxで反応したのか?
実行ログは見たのか?

856 :名無しさん@お腹いっぱい。:2014/09/06(土) 22:58:28.96 ID:z66Sxjgd0.net
Lock系とかPauseあたりのキーはけっこう環境依存するよ
ノートのキーボードだと挙動が違ったりとかわりとよくあった印象

857 :名無しさん@お腹いっぱい。:2014/09/06(土) 23:04:27.55 ID:5LsRgPgN0.net
#Usehook
Pause::
keywait,%A_thishotkey%,T0,5
If Errorlevel {
msgbox,%A_thishotkey%
}else{
send,%A_thishotkey%
}

たぶんこう
だけどpauseキーはahk上では変な動きする。試しにAとか無難なキーでやってみること
絶対そうじゃないとやだってんならレジストリでキーを置き換えてから設定すること

858 :名無しさん@お腹いっぱい。:2014/09/06(土) 23:15:21.05 ID:+7IIDpa+0.net
俺の使ってるノートPCも駄目だな
Pauseキーを押した瞬間にUpが来てる

859 :名無しさん@お腹いっぱい。:2014/09/06(土) 23:17:32.46 ID:ZqvDFPoh0.net
みなさん有難うございます。
違うキーに割り当てをして使用する事にします。
お騒がせしました。

860 :名無しさん@お腹いっぱい。:2014/09/07(日) 12:13:06.20 ID:MLPc7WIbc
; OSは,Windows 7 64ビット版
; AutoHotKey Lのバージョンは, 1.1.15.04
; IMEは,Japanist2003 です。
; 以下質問内容
;以下のコードを実行すると,途端に無変換キーを押しながら英字キーを押しても英字キー単独の文字が標示される用になって無変換キーが効かなくなります?。どの用にしたら無変換キーが有効になるのでしょうか?

#InstallKeybdHook
sc07b::Send,{Blind}{sc07b} ; sc07bは無変換キー
sc07B & sc01c:: ; 無変換 & Enter キー 練習用
Msgbox,,無変換キーが効いた
return
#UseHook off ; ここまでのホットキーラベルがすべてフック使用にな

861 :名無しさん@お腹いっぱい。:2014/09/08(月) 03:02:24.35 ID:TCA+ujc00.net
入力欄のGUIがでるサンプルスクリプトってありませんか?
入力欄に入力した分数だけ時間を待ってそのあと特定のウインドウを閉じるってのを
やりたいのです。どこかにありませんか?おしえてください

862 :名無しさん@お腹いっぱい。:2014/09/08(月) 03:19:44.98 ID:roxp4VMB0.net
入力するのが何分とかっていう時間だけならInputBoxで十分じゃないの?

863 :名無しさん@お腹いっぱい。:2014/09/08(月) 03:21:46.78 ID:TCA+ujc00.net
ありがとうございます。みてみます

864 :名無しさん@お腹いっぱい。:2014/09/08(月) 09:04:10.02 ID:XXRQvkLD0.net
先に見ろ

865 :名無しさん@お腹いっぱい。:2014/09/09(火) 19:48:35.99 ID:UiPdTHFIH
#Ifについてお聞きします。
以下のコードが有効になりません。
よろしくお願いします。

#IfNotExist, hage.exe
処理
#IfNotExist

866 :名無しさん@お腹いっぱい。:2014/09/09(火) 23:35:19.32 ID:9FGvm5mb0.net
やりたいことがあるのですがこのような処理は出来ますか?
1.常駐
2.特定のウィンドウ[A]がアクティブになったら指定座標を自動で1回だけクリック
3.[A]が非アテクティブになったら、次回[A]がアクティブ時にまた2を行う

867 :名無しさん@お腹いっぱい。:2014/09/09(火) 23:57:54.77 ID:C63BiZZ00.net
>>866
SetTimerで監視、あとは全部のコマンド確認すればわかる。
ttp://ahkwiki.net/SetTimer

868 :名無しさん@お腹いっぱい。:2014/09/10(水) 00:33:54.44 ID:J2WCecmv0.net
>>867
できました、ありがとうございました

869 :名無しさん@お腹いっぱい。:2014/09/10(水) 10:45:54.95 ID:txYxsJ020.net
ウィンドウの表示領域の背景色をAutoHotKeyで変更させることはできるでしょうか。

870 :名無しさん@お腹いっぱい。:2014/09/10(水) 15:01:44.38 ID:ynUhCzMM0.net
>>869
何のウィンドウ?

871 :名無しさん@お腹いっぱい。:2014/09/10(水) 16:17:41.85 ID:Qb2VMetO0.net
Everythingの右クリックが相対パスできないと知ってカッとなって自前で右クリックコンテキストメニュー作ったったwww

autohotkeyすげぇ……

872 :名無しさん@お腹いっぱい。:2014/09/10(水) 16:57:17.08 ID:WBGJ9Bdi0.net
>>871
頑張れ

873 :名無しさん@お腹いっぱい。:2014/09/10(水) 17:05:23.73 ID:txYxsJ020.net
>>870
PDFビューワです。ウィンドウに限らずそれができるのであればいろんなウィンドウにもと思っています。

874 :名無しさん@お腹いっぱい。:2014/09/10(水) 17:19:00.20 ID:59sR7erz0.net
>>871
結構簡単にコンテキストメニュー作れるのはマジ便利

>>873
まずそのファイラーに機能があるかどうかが問題。あるのであれば、ショートカットキーの組み合わせで行けるかもしれないし、マウスでウィンドウの座標クリックしまくって機能にたどり着くっていうのは可能だと思う
でもファイラーにその機能がないと、難しいんじゃないかな?

875 :名無しさん@お腹いっぱい。:2014/09/10(水) 18:50:01.67 ID:ynUhCzMM0.net
>>873
アプリに背景色変更する機能がなければ無理。
どうしても変更したいならResource Hackerで改変するしかない。

876 :名無しさん@お腹いっぱい。:2014/09/10(水) 19:20:26.73 ID:59sR7erz0.net
言ってしまうとソフト側を改造するんじゃなくて、元々できる制御を自動化する、っていうツールだからな

877 :名無しさん@お腹いっぱい。:2014/09/10(水) 21:11:06.05 ID:59sR7erz0.net
ふとひらめいた。Everythingでコンテキストメニュー作れるならMasterseekrでも作れるんじゃね

878 :名無しさん@お腹いっぱい。:2014/09/10(水) 21:21:47.47 ID:ocvuOyLg0.net
意義が見い出せないねそれ

879 :名無しさん@お腹いっぱい。:2014/09/10(水) 22:17:01.00 ID:6qJgbT1f0.net
>>877
よく分からんが、最新版のEverythingなら他のを使う必要なくね?
俺もMasterSeekerやHddbを使ったりしてたけど、もうほとんど出番ない

880 :名無しさん@お腹いっぱい。:2014/09/11(木) 11:38:45.38 ID:xQYqo18n0.net
>>877
やってみたら出来た。とりあえずファイルのフルパスが取得できるならつくれる
いやー便利だわ

881 :名無しさん@お腹いっぱい。:2014/09/11(木) 13:11:41.78 ID:MwL/7/dP0.net
今、無変換キー+『F』にマウスクリックを割り当ててるけど、
デバイスマネージャーとか通知バーのautohotkeyを右クリック後のコンテキストメニューとか
クリックを受付ない。これは仕様と諦めるべきなのか?くぐり抜ける方法があるのか?教えて

882 :名無しさん@お腹いっぱい。:2014/09/11(木) 13:52:00.00 ID:xQYqo18n0.net
俺もキーボードに割り当ててるけど普通に動くな

#usehook

send,{Blind}{Lbutton}

でいけるはずだが

883 :名無しさん@お腹いっぱい。:2014/09/11(木) 15:15:11.72 ID:Qq3H0XMg0.net
質問です
mousegetpos, , , ,Control
msgbox,%Control%
でマウス下のコントロールをMsgboxで表示できるじゃないですか?
このmsgboxの表示をコピーするっていうのはどうすればいいんでしょう?
わざわざメモってもう一度書くのも効率悪いと思うんです

884 :名無しさん@お腹いっぱい。:2014/09/11(木) 15:20:45.66 ID:3J9ljDze0.net
Clipbord := Control

885 :名無しさん@お腹いっぱい。:2014/09/11(木) 15:29:48.71 ID:Qq3H0XMg0.net
なるほどなー
ありがとうございました。こういう解決方法は考えてなかった

886 :名無しさん@お腹いっぱい。:2014/09/11(木) 16:09:56.31 ID:MwL/7/dP0.net
>>882
デバイスマネージャーの件は記憶違いだったようだ。動いたわゴメン
でも 通知バーのautohotkeyを右クリック→コンテキストメニュー表示すると受付ないな
Reload This ScriptとかEdit This Scriptを頻繁に選ぶとき不便なんだよね
ReloadとEditを割り当てれば済む話なんだけどさ

887 :名無しさん@お腹いっぱい。:2014/09/11(木) 16:13:24.05 ID:xQYqo18n0.net
>>886
スレッドの概念をしらべてくるんだ
コンテキストメニューは最上位で割り込みできないはず
タスクトレイのもそれだったはず

888 :名無しさん@お腹いっぱい。:2014/09/11(木) 16:20:07.02 ID:xQYqo18n0.net
んでまぁ、他にコンテキストメニュー作りたい場合は他にahkファイル作ってrun,%Ahkpath%からのコマンドラインで呼び出してやったほうが不具合はない。
この場合別スレッドになるから操作できなくなるなんてこともないはず

889 :名無しさん@お腹いっぱい。:2014/09/11(木) 16:51:33.29 ID:MwL/7/dP0.net
>>887
そういう制限あるんですね。それならショートカット割り当てるだけです。
原因わからず不自由ってのが嫌なのでスッキリしました。ありがとう
スレッドだからこそ割り込めるもんだと思ってたけど、違うんやね

>>803
AHK深すぎるわぁ 頭の片隅に入れとこう

890 :名無しさん@お腹いっぱい。:2014/09/11(木) 20:50:35.00 ID:Qq3H0XMg0.net
>>884
おかげさまで選択部分autocopyの実現出来ました
スクリプト置いていきます

~Lbutton::
If(copyf = 1)&&(A_PriorHotKey = A_ThisHotKey){
send,^{c}
If(prevClip != Clipboard){
tooltip,%Clipboard%
SetTimer, RemoveToolTip, -1000
prevClip := Clipboard
}
}
copyf = 0
mousegetpos,acx1,acy1
keywait,Lbutton
mousegetpos,acx2,acy2
If(acx1 != acx2 || acy1 != acy2)
copyf = 1
return

RemoveToolTip:
SetTimer, RemoveToolTip, Off
tooltip
return

891 :名無しさん@お腹いっぱい。:2014/09/11(木) 20:57:02.23 ID:KhTw3dF/0.net
文字がクリップボードにコピーされたら全角英数字を半角に変換して置き換えてくれるものがほしいです
誰かテンプレート作って下さい。
お願いします。

892 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:05:30.27 ID:3J9ljDze0.net
settimer
clipwait
regexreplace
で簡単にできるからテンプレ作るまでもない

893 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:10:34.92 ID:2zCImIqD0.net
そもそもテンプレートって何だよ・・・。

894 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:23:03.31 ID:KhTw3dF/0.net
作ってくれなきゃやだやだやだ><

895 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:27:12.80 ID:PEQNL+Ka0.net
ピーマン食べない子にあげるテンプレートはありません!

896 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:32:22.79 ID:KhTw3dF/0.net
マンピー好きだし!

897 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:33:34.45 ID:nLUtAL5h0.net
While (True) {
ClipWait
ClipBoard := RegExReplace(ClipBoard, "全角英数字", "半角")
}

898 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:38:31.49 ID:KhTw3dF/0.net
>>897
settimer使わなくてもできるんですか!
やってみます、ありがとうございました!

899 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:43:37.79 ID:nLUtAL5h0.net
SetBatchLines, -1
って書いておくとさらに鬼のように変換してくれると思うのでおすすめです☆

900 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:48:56.39 ID:KhTw3dF/0.net
>>899
ありがとうございます、やってみます!

901 :名無しさん@お腹いっぱい。:2014/09/11(木) 21:53:45.19 ID:2zCImIqD0.net
ワラタw

902 :名無しさん@お腹いっぱい。:2014/09/11(木) 22:56:45.20 ID:3J9ljDze0.net
鬼やな

903 :名無しさん@お腹いっぱい。:2014/09/11(木) 23:52:47.24 ID:KhTw3dF/0.net
動きませんでした!しっかり動くものを教えて下さい!お願いします!

904 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:08:28.75 ID:YFeFy/GD0.net
動かないです、教えて下さい

#Persistent
SetTimer Henkan,500
return

Henkan:
ClipWait
ClipBoard := RegExReplace(ClipBoard,"[A-Z]","[A-Z]")
return

905 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:19:57.09 ID:hrcl7HtQ0.net
1. RegExReplaceのヘルプを熟読後、RegExReplaceの行のみ切り出し正しく置換できるまで単独デバッグする
2. SetTimerのヘルプを熟読して 必要に応じてTimer ON/OFFする
3. ClipWaitのヘルプを熟読して挙動をきちんと調べる。ムダなループを避ける

906 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:20:55.91 ID:YFeFy/GD0.net
作ってくれなきゃやだやだやだ><

907 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:23:24.31 ID:H3reB1pZ0.net
NGID ID:YFeFy/GD0

908 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:26:01.49 ID:YFeFy/GD0.net
教えて下さい><

909 :名無しさん@お腹いっぱい。:2014/09/12(金) 00:34:45.46 ID:YFeFy/GD0.net
perlの$data =~ tr/0-9a-zA-Z/0-9a-zA-Z/;こういう置換どうやるんですか?

910 :名無しさん@お腹いっぱい。:2014/09/12(金) 01:25:03.68 ID:71KRey/T0.net
autohotkeyには全角を半角に直す簡単なコマンドは無いんじゃないかな
どっかから関数を拾ってくるか自分で作るか。
単純に
clipboard := regexreplace(clipboard, "A", "A")
clipboard := regexreplace(clipboard, "B", "B")
中略
clipboard := regexreplace(clipboard, "Z", "Z")
って1つずつ置き換えるのを26行書いたほうが速いんじゃない?
まぁ、Loop,parse を使えば10行以下で関数を作れそうだけど

911 :名無しさん@お腹いっぱい。:2014/09/12(金) 01:33:27.12 ID:RZfEeVqF0.net
いやもう相手にすんなよ

912 :名無しさん@お腹いっぱい。:2014/09/12(金) 01:56:54.05 ID:jePdT1Vm0.net
>>910
荒らしにレスすんな馬鹿

913 :名無しさん@お腹いっぱい。:2014/09/12(金) 13:18:03.18 ID:nxyHaN7w0.net
>>910
ありがとうございます!
Loop,parse を使う場合は、配列にあらかじめ全角英数字を全て代入しておいて、Loop内で配列を1個ずつずらして使う感じでしょうか?
>>911 >>912
できるまでID変えて連投しますのでスルーしない方が懸命です

914 :名無しさん@お腹いっぱい。:2014/09/12(金) 15:06:46.86 ID:Anl7MzwV0.net
>>910
しね

915 :名無しさん@お腹いっぱい。:2014/09/12(金) 16:14:38.47 ID:H3reB1pZ0.net
NGID ID:jePdT1Vm0

煽って解答得ようとしても無駄、ここの住人はクレクレは徹底スルーする方針

916 :名無しさん@お腹いっぱい。:2014/09/12(金) 17:26:28.42 ID:x3mQSf9E0.net
全角アルファベットを半角にする

zenkaku_to_hankaku(clipboard)
return

zenkaku_to_hankaku(az){
hankakuL = ABCDEFGHIJKLMNOPQRSTUVWXYZ
hankakuO = ABCDEFGHIJKLMNOPQRSTUVWXYZ
zenkakuS = abcdefghijklmnopqrstuvwxyz
hankakuS = abcdefghijklmnopqrstuvwxyz
loop, parse, hankakuL
hankakuL%a_index% := a_loopfield
loop, parse, hankakuO
hankakuO%a_index% := a_loopfield
loop, 26
az := RegExReplace(az, hankakuL%a_index%, hankakuO%a_index%)
loop, parse, zenkakuS
zenkakuS%a_index% = %a_loopfield%
loop, parse, hankakuS
hankakuS%a_index% = %a_loopfield%
loop, 26
az := RegExReplace(az, zenkakuS%a_index%, hankakuS%a_index%)
clipboard := az
msgbox, %az%
}

917 :名無しさん@お腹いっぱい。:2014/09/12(金) 17:34:28.96 ID:x3mQSf9E0.net
変数名があべこべだ
>>916でも動作は問題ないけど一応修正しとく

zenkaku_to_hankaku(clipboard)
return

zenkaku_to_hankaku(az){
zenkakuL = ABCDEFGHIJKLMNOPQRSTUVWXYZ
hankakuL = ABCDEFGHIJKLMNOPQRSTUVWXYZ
zenkakuS = abcdefghijklmnopqrstuvwxyz
hankakuS = abcdefghijklmnopqrstuvwxyz
loop, parse, zenkakuL
zenkakuL%a_index% := a_loopfield
loop, parse, hankakuL
hankakuL%a_index% := a_loopfield
loop, 26
az := RegExReplace(az, zenkakuL%a_index%, hankakuL%a_index%)

loop, parse, zenkakuS
zenkakuS%a_index% = %a_loopfield%
loop, parse, hankakuS
hankakuS%a_index% = %a_loopfield%
loop, 26
az := RegExReplace(az, zenkakuS%a_index%, hankakuS%a_index%)
clipboard := az
msgbox, %az%
}

918 :名無しさん@お腹いっぱい。:2014/09/12(金) 22:14:18.91 ID:TMOGBmMg0.net
DllCall使えるなら

http://msdn.microsoft.com/ja-jp/library/cc448052.aspx

919 :名無しさん@お腹いっぱい。:2014/09/12(金) 23:38:27.23 ID:x3mQSf9E0.net
>>918
ありがとう、dllcallは拾い物しか使ったこと無いけど
今度いろいろ試してみるよ

920 :名無しさん@お腹いっぱい。:2014/09/13(土) 14:35:36.24 ID:RoKGhGla0.net
音量監視して、変更される度にトレイチップで音量通知させたいんですが、
これだと変更しなくても1秒毎に通知されてしまいます
どうすればいいんでしょうか?

SoundGet, Vol1
SetFormat,Float,1.0
Vol2=Vol1
SetTimer, ChVol, 1000
return

ChVol:
SoundGet, Vol1
If Vol1 <> %Vol2%
TrayTip, Volume, %Vol1%%, 10, 17
Vol2=Vol1
SetTimer, RemoveTrayTip, 1000
Return

RemoveTrayTip:
SetTimer, RemoveTrayTip, Off
TrayTip
return

921 :名無しさん@お腹いっぱい。:2014/09/13(土) 17:21:31.57 ID:c9jj089C0.net
>>920
= 文字列の代入(変数展開されない)
:= 式の代入(変数展開される)

Vol2 = Vol1  → Vol2 := "Vol1"
Vol2 = %Vol1% → Vol2 := Vol1

922 :名無しさん@お腹いっぱい。:2014/09/13(土) 22:46:28.53 ID:5h8aoVu10.net
>>920
こんな感じにしてみたけど、どうだろ。

#Persistent

SoundGet, Vol1
SetFormat,Float,1.0
Vol2 := Vol1
SetTimer, ChVol, 100
return

ChVol:
SoundGet, Vol1
If (Vol1 != Vol2) {
TrayTip, Volume, %Vol1% `%, 10, 17
Vol2 := Vol1
SetTimer, RemoveTrayTip, -3000
}
Return

RemoveTrayTip:
TrayTip
return

923 :名無しさん@お腹いっぱい。:2014/09/14(日) 02:13:46.69 ID:1Jt61VIf0.net
>>921-922
お2人ともありがとうございます。>>922で見事希望通りに動いてくれました
=だと文字列代入で変数展開されないんですね
初歩的なミスで恥ずかしいですが、お陰様で勉強になりました

924 :名無しさん@お腹いっぱい。:2014/09/14(日) 20:38:43.43 ID:9RRE9Xra0.net
現在↑>>918 のLCMapString で DllCall の勉強中なのですが、
VarSetCapacityで「メモリの動的確保」はどのように書けばいいのでしょうか?
-----------------------------------------
■処理内容
OutputVar変数の動的メモリ確保。
InputVar変数の文字列変換。

■メモ・考察
Unicodeは1〜6バイトの文字列になる。
VarSetCapacity(InputVar)で大雑把なサイズは取得できる。
OutputVar は InputVar *6倍 のメモリ確保すればいい?
-----------------------------------------
InputVar = abc 123 アイウ ; 任意の値
VarSetCapacity(OutputVar, ???) ; ←メモリの動的確保をしたい
DllCall("LCMapStringW"
     , UInt, DllCall("GetUserDefaultLCID") ; ロケール識別子(日本:1041)
     , UInt, 0x00800200            ; マップ変換の種類
     , Str, InputVar              ; マップ元文字列のアドレス
     , UInt, -1                 ; マップ元文字列の文字数
     , Str, OutputVar             ; マップ先バッファのアドレス
     , UInt, ???)              ; マップ先バッファのサイズ
MsgBox % OutputVar

925 :名無しさん@お腹いっぱい。:2014/09/15(月) 09:30:56.76 ID:aazSVZQm0.net
質問です
>>29のIf(A_Priorhotkey = A_thishotkey && A_TimeSincePriorHotkey<220)〜とかって
三項演算子で書けますか?三項演算子難しい

926 :名無しさん@お腹いっぱい。:2014/09/15(月) 20:17:41.94 ID:dEyLjjnU0.net
>>925
Ifの処理が複数行あるので普通は使わない、可読性悪くなるだけ。

■三項演算子
hoge = 0 ;変数を確保する必要あり
If (1=1 && 1<2) ? hoge += 1 : hoge := 0 { ;処理順 (式)→三項→If
} else {
 MsgBox % hoge
 MsgBox % hoge
}

■通常
If(1=1 && 1<2)
 hoge++
else {
 hoge = 0
 MsgBox % hoge
 MsgBox % hoge
}
-------------------------------------
通常はこちら

■三項演算子
hoge = 0 ;変数を確保する必要あり
(1=1 && 1<2) ? hoge++ : hoge := 0

■通常
If (1=1 && 1<2)
 hoge++
else
 hoge = 0
}

927 :名無しさん@お腹いっぱい。:2014/09/15(月) 22:56:14.57 ID:66Bg8oeU0.net
>>924

リンク先をよく読むこと。

>戻り値
> (中略)
> cchDest パラメータの値が 0 の場合、関数が成功すると、変換後の文字列または
> 並び替えキーを受け取るために必要な文字数またはバイト数(LCMAP_SORTKEY
> をセットした場合)が返ります。この数は終端の NULL を含みます。

この手のAPIは大抵、変換先に0やNULLを指定してやると、
格納すべきバッファ長を返してくれる。(MultiByteToWideCharとかも同じ)

つまり、バッファ長を得るのと、変換本体をするのと2回コールしてやる必要がある。
それをAHKの関数で包んでやるともうちょっと便利。


サロゲートペアや組み文字使ったりしない限り「1文字」は2バイトなので、
大文字小文字変換など特定の変換なら自前で計算してやってもいいかも。

928 :名無しさん@お腹いっぱい。:2014/09/15(月) 23:21:40.09 ID:KG1aFbq6i.net
クリップボードを介さずにキャレット位置の文字列を取得する方法ってありますか?
それとも、コピーした文字列をシステムのクリップボードに入る前にフックするような方法があるんでしたら教えていただきたいんです。

選択文字列周りの文字(や単語)を入れ替えるようなスクリプトを作っているんですが
クリップボードを利用すれば、例えばクリップボード監視ソフトとかに履歴が残るのが気になるんです。

929 :名無しさん@お腹いっぱい。:2014/09/16(火) 00:03:42.76 ID:+gCT1D5c0.net
>>926
手当り次第に三項演算子にしようとしてました
何でもかんでもやればいいって訳でもないんですね
ありがとうございます

930 :名無しさん@お腹いっぱい。:2014/09/16(火) 00:04:31.43 ID:gcYOfhal0.net
クリップボード監視ソフトをコマンドラインオプションなどで一時停止(なけりゃ終了)→クリップボードのbackup→
作業→クリップボードの復元→監視ソフトの再開

931 :名無しさん@お腹いっぱい。:2014/09/16(火) 10:03:19.81 ID:nDWhVH5h0.net
>>928
対象オブジェクトがEditBox互換なら
ControlGet(LineCount、CurrentLine、CurrentCol、Line, N、Selected)や
ControlGetTextで取得&割り出し可能

TEditor(EditBox互換だがControlGetで値が取れない)の場合は
SendMessage(EM_GETSEL / EM_REPLACESEL)で値が取れる

その他の独自オブジェクト使ってるソフトの場合は無理
エディットボックス風であっても独自オブジェクトのソフトは結構多い
なので汎用性を持たせるなら結局はクリップボード経由でないとってことになるんだけど
監視対象のソフトが限定されてるなら場合によっては有効

932 :名無しさん@お腹いっぱい。:2014/09/16(火) 11:29:00.82 ID:7Pc9Ipex0.net
Firefoxの特定のWEBサイトの特定のテキストボックスにフォーカスが当たったら処理をする、がしたいのですがイベントは拾えますか?

933 :名無しさん@お腹いっぱい。:2014/09/16(火) 11:56:00.13 ID:zrM7ykwS0.net
むりっす。javaでやらんとだめ

934 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:33:32.08 ID:PE0cMsNs0.net
気軽に「こんなソフトありませんか?」Part.164
http://anago.2ch.net/test/read.cgi/software/1407423596/796
http://anago.2ch.net/test/read.cgi/software/1407423596/800
です。
http://anago.2ch.net/test/read.cgi/software/1407423596/823
で書いたように、ここで質問させていただきます。

※「改行多すぎ」と怒られたので、二レスに分けます。

935 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:34:21.50 ID:PE0cMsNs0.net
>>934からの続き
組合せをリスト化するツール作ろうとしてます。
具体的には、同じフォルダ内に頭に番号が振られているファイルが有り、
その番号でグループ分けしています。

(第1グループ)
01_papa.txt
01_mama.txt

(第2グループ)
02_musuko.txt
02_musume.txt
02_okama.txt

(第3グループ)
03_jiji.txt
03_baba.txt

各グループから一ファイルずつ選出して、

01_papa.txt
02_musuko.txt
03_jiji.txt

を始めとする、全ての組合せ(この場合だと12通り?)を
リスト化(テキスト化)するスクリプトを作る場合、
どのような流れで書けばいいのか教えて下さい。

936 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:53:24.10 ID:PE0cMsNs0.net
>>934-935
お聞きしたいのは全体の流れではなく、全組み合わせを取得するプロセスをどのような流れで書くか?です。
他の部分は自力で何とか出来そうです。
よろしくお願いします。

937 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:56:54.62 ID:e4XhlLgm0.net
一回自分の手でやってみろ
自分の手でやり方を思いつかないようなことは、コンピュータに実行させられるわけがない

938 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:58:01.96 ID:e4XhlLgm0.net
ahkのスレでなかったら、学校の宿題は自分でやれって言うところだよ

939 :名無しさん@お腹いっぱい。:2014/09/16(火) 12:59:53.66 ID:zrM7ykwS0.net
実際に紙に書いた数字を整理するんであれば、どこを見る?それをどう選り分ける?
俺ならRegEXと変数格納、あとはぐるぐるループさせる

940 :名無しさん@お腹いっぱい。:2014/09/16(火) 13:05:01.55 ID:sw3mXj5Hi.net
>>931
返答ありがとうございます。
助言に従って試しに以下のようなテストコードを書いてみたのですがテキスト座標が取得できません
何か不手際があるのでしょうか?

StartPos:= -1
EndPos:=-1
#h::
  ControlGetFocus, ClassName, A
  SendMessage, 0xB0, &StartPos, &EndPos, %ClassName%, A
  StartPos:= NumGet(StartPos)
  EndPos:= NumGet(EndPos)
  MsgBox, 0, %ClassName%, %StartPos%`n%EndPos%

環境はwin7x64, ahk.u-64bit, 1.1.16.03です

941 :名無しさん@お腹いっぱい。:2014/09/16(火) 13:15:01.26 ID:nDWhVH5h0.net
>>936
そこはアルゴリズムの話であって、どの言語で実現するか以前の問題なんだけど

Loop (第1グループ)
{
  Loop (第2グループ)
  {
    Loop (第3グループ)
    {
      
    }
  }
}
で総当りする、階層数がわからん場合は再帰的にやる

942 :名無しさん@お腹いっぱい。:2014/09/16(火) 13:45:08.87 ID:rXOmxzc80.net
単純な総当りが思いつけないとすると先が思いやられるな

943 :名無しさん@お腹いっぱい。:2014/09/16(火) 14:06:57.90 ID:v4iGoBus0.net
ヤフー知恵袋の質問かと思った

944 :名無しさん@お腹いっぱい。:2014/09/16(火) 14:11:33.66 ID:nDWhVH5h0.net
>>940
えっとすまん
EM_GETSELはキャレット位置ではなく現在選択されている範囲の取得だわ
それとEditBox非互換のコントロールではどっちにしても取れないんだけど
ちゃんとコントロール名調べてから試してる?

TEditor(http://homepage3.nifty.com/~katsuhiko/hedit2.html)てのは
一時期フリーソフトで多用されてたEditBox互換のDelphi用コンポーネントで
今どきのソフトではそう使われてることは少ないと思うんだが

AHKの内部ソースを当たるとControlGet,,SelectedはEM_GETSEL取得してることがわかる
それと同じことをTEditorに対しても適用したら取得できた。
調べたの5年以上前のことなんて詳しく覚えてないが
ControlGet,Line, N、ControlGetTextあたりのAHK内部ソースを解析すれば
選択外のテキストの取得方法もわかるんではないかと思う。
https://github.com/Lexikos/AutoHotkey_L

945 :名無しさん@お腹いっぱい。:2014/09/16(火) 19:41:31.91 ID:PE0cMsNs0.net
>>934-936です。
みなさんレスありがとうございます。
すいませんでした、出直します。

946 :名無しさん@お腹いっぱい。:2014/09/16(火) 21:40:26.80 ID:EDVLyVRe0.net
>>927
完全に横レスだが超参考になった

947 :名無しさん@お腹いっぱい。:2014/09/16(火) 22:21:01.94 ID:AQHML+8y0.net
>>945
丸投げっぽい感じになっちゃってるから微妙な空気なのよ
擬似コードでもいいから出来るだけ形を作った上で質問しなさいな

リファレンス読んでサンプル試すだけでもかなりのことがわかるはずだよ
結果欲しいだけならここはそういうスレじゃない

948 :916:2014/09/17(水) 01:42:30.60 ID:ePbf/xVv0.net
>>927
また一歩理解を深めることが出来ました、ありがとうございました。

949 :932:2014/09/17(水) 02:42:18.07 ID:CUbjpPYpi.net
>>944
試行錯誤した結果、やっと座標の取得に成功しました。
座標が表示されない原因は

  StartPos:= NumGet(StartPos)
  EndPos:= NumGet(EndPos)

にありました。>>1のwikiにあるNumGetの解説に依りますと

NumGet(Var|Addr [, Offset = 0, Type = "UPtr"])
Var|Addr: 変数を指定した場合、その変数に割り当てられたメモリ領域が対象となる( &VarNameのように指定するのと同じ)。

とありますが、本家の該当ページを見てみると

VarOrAddress
A memory address or variable.
If VarOrAddress is a variable such as MyVar and the variable does not contain a pure number or an object,
it is equivalent to passing &MyVar.
(拙訳)
メモリアドレス又は変数。
VarOrAddressがMyVarというような変数で、純粋な数値又はオブジェクトを格納していない場合は
&MyVarを渡すのと同じ。

とありまして、どうも明示的に&を使わなければならないようです。
つまり

  StartPos:= NumGet(&StartPos)
  EndPos:= NumGet(&EndPos)

で行けました。

950 :名無しさん@お腹いっぱい。:2014/09/17(水) 08:30:09.50 ID:5lZEqmIE0.net
クリップボードに送られると同時に、該当する名前のファイルがあるかどうかを
ファイル検索ソフトEverythingを使って検索を掛けるようなscriptを
試行錯誤の末一晩かけて以下のように書いたのですが、


#Persistent
OnClipboardChange:
Run,C:\SOFTWARE\Everything\Everything.exe -search "%Clipboard%"
return

検索をかける前に、クリップボードの文字列を、
半角から全角に置換する操作と
記号を全部半角スペースに置換する操作を、書き加えたいのですが
お手上げです。どのようにすれば良いのかご教示ください。
お願いします。

951 :名無しさん@お腹いっぱい。:2014/09/17(水) 10:35:33.40 ID:GJhwWJ7e0.net
>>950
>>910>>917 にサンプルがある
>>917 の行数を減らしたいなら↓のサンプルみたいにする
記号を半角スペースに置き換えるのも同様の方法で変換すればいい
dllcallの使い方が分かるなら >>918

;以下サンプル
zenkaku_to_hankaku(clipboard)
return

zenkaku_to_hankaku(az){
zenkaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
hankaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
loop, parse, zenkaku
zenkaku%a_index% := a_loopfield
loop, parse, hankaku
hankaku%a_index% := a_loopfield
loop, 52
az := RegExReplace(az, zenkaku%a_index%, hankaku%a_index%)
clipboard := az
msgbox, %az%
}

952 :932:2014/09/17(水) 12:23:06.43 ID:CUbjpPYpi.net
今度は実際に選択テキストを取得しようと思い、ネットでの検索結果から次のコードを書き
メモ帳で試してみましたが文字列を取得できません。
これで大丈夫な筈なんですが・・・何か間違っていますか?

#j::
  buf := ""
  ControlGetFocus, ClassName, A
  SendMessage, EM_GETSELTEXT, 0, &buf, %ClassName%, A
  VarSetCapacity(buf, -1)
  MsgBox, 0, %ClassName%, エラー: %ErrorLevel%`nバッファ内容: %buf%

953 :名無しさん@お腹いっぱい。:2014/09/17(水) 15:08:38.26 ID:EXnJ/Hh50.net
>>952
自分もEM_GETSELTEXTはうまくいかなくて諦めたっぽい
(5年前のメモには「EM_GETSELTEXTは不正終了するので使わない」と書いてあった)

WM_GETTEXTLENGTH で全テキストサイズ取得
WM_GETTEXT で全テキスト取得
EM_GETSEL で選択範囲取得
SubStr() で選択範囲文字列抽出
というまどろっこしい手法を使ってた

ANSI時代のコードなのでポインタやバッファサイズ計算は間違ってるかもなので参考程度に
SendMessage,%WM_GETTEXTLENGTH%,0,0,%clsNN%,%WinTitle%
len := ErrorLevel
VarSetCapacity(str,len+1,0)
SendMessage,%WM_GETTEXT%,len+1,&str,%clsNN%,%WinTitle%

954 :名無しさん@お腹いっぱい。:2014/09/17(水) 19:52:19.82 ID:5lZEqmIE0.net
>>951
頂いたサンプルや以下に書き換えて動かしてみましたが、
文字化けしてしまい使えません。
恐らく2バイト文字と1バイト文字でおかしくなっているかもしれないと思いましたが、
何をすればいいか分かりませでした。
dllcallを使ってみようと見ましたが無理でした。
レスありがとうございました。

#Persistent
OnClipboardChange:
hankaku_to_zenkaku(clipboard)
return

hankaku_to_zenkaku(az){
zenkaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
hankaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
loop, parse, hankaku
hankaku%a_index% := a_loopfield
loop, parse, zenkaku
zenkaku%a_index% := a_loopfield
loop, 52
az := RegExReplace(az, hankaku%a_index%, zenkaku%a_index%)
clipboard := az
msgbox, %az%
}

955 :名無しさん@お腹いっぱい。:2014/09/17(水) 20:11:02.33 ID:GJhwWJ7e0.net
>>954
もしかして旧Autohotkeyでやってる?旧だと文字化けするよ
新しい方のAutohotkeyじゃないとダメ

956 :名無しさん@お腹いっぱい。:2014/09/17(水) 20:30:23.05 ID:5lZEqmIE0.net
腕力書きやってみたけど、やっぱりおかしくなる。
数字とか全然いかん。何がいけないんだ・・・


#Persistent
OnClipboardChange:
henkan := Clipboard
henkan := regexreplace(henkan, "A", "A")
henkan := regexreplace(henkan, "B", "B")
 (略)
henkan := regexreplace(henkan, "Z", "Z")
henkan := regexreplace(henkan, "a", "a")
henkan := regexreplace(henkan, "b", "b")
 (略)
henkan := regexreplace(henkan, "z", "z")
henkan := regexreplace(henkan, "0", "0")
henkan := regexreplace(henkan, "1", "1")
 (略)
henkan := regexreplace(henkan, "9", "9")
Clipboard := henkan
Run,C:\SOFTWARE\Everything\Everything.exe -search "%Clipboard%"
return

957 :名無しさん@お腹いっぱい。:2014/09/17(水) 20:30:53.11 ID:5lZEqmIE0.net
>>955
>>955
即レスありがとうございます。
バージョンを確認したらAutoHotkey.exeが1.0.48.5でした。最新バージョンに入れかえます。
本当にありがとうどざいました。

958 :名無しさん@お腹いっぱい。:2014/09/17(水) 20:35:23.75 ID:5lZEqmIE0.net
先日インストールしたのは旧公式サイトのものだったのか・・・
グーグル先生の検索で一発目のサイトが旧公式とはなんという罠だ

959 :名無しさん@お腹いっぱい。:2014/09/17(水) 20:37:33.10 ID:5lZEqmIE0.net
>>955
サンプルで頂いたものが完璧に動作しました
本当に親切にありがとうございました。
エスパー回答心から感謝しています。

960 :名無しさん@お腹いっぱい。:2014/09/17(水) 23:57:54.26 ID:5lZEqmIE0.net
ここまで書いて、半角英数の全角化と、全角記号の半角スペース化までは、
希望通りの動作までもってくることが出来たのですが、
半角記号を半角スペースに換えようとすると思い通りに動作しません。
一部の半角記号がscriptの動作に影響してしまうのだ思うのですが、
どのように記載すれば良いのか、重ねてご教示お願いします。

#Persistent
OnClipboardChange:
moziseiri(clipboard)
Run,C:\SOFTWARE\Everything\Everything.exe -search "%Clipboard%"
return

moziseiri(naosi){
zenkaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
hankaku = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
loop, parse, zenkaku
zenkaku%a_index% := a_loopfield
loop, parse, hankaku
hankaku%a_index% := a_loopfield
loop, 62
naosi := RegExReplace(naosi, hankaku%a_index%, zenkaku%a_index%)

kigou = !”“#$%&’‘()―−=〜^|¥@「【」】;+:*<>、。,.・?/_
loop, parse, kigou
kigou%a_index% := a_loopfield
loop, 37
naosi := RegExReplace(naosi, kigou%a_index%, A_Space)

Clipboard := naosi
}

961 :名無しさん@お腹いっぱい。:2014/09/18(木) 01:32:42.17 ID:AGvwYIMF0.net
半角記号を腕力で動くかごうか

hankigou = !"#'-=~@「」;:,/_<>、。
loop, parse, hankigou
hankigou%a_index% := a_loopfield
loop, 19
naosi := RegExReplace(naosi, hankigou%a_index%, A_Space)
ここまでは動いた

$%&`()^|\+*.・?
この辺の半角記号は異常動作するか、消せない感じ。

疲れた・・・

962 :名無しさん@お腹いっぱい。:2014/09/18(木) 01:36:50.90 ID:ywGOiuVI0.net
>>960
AHKと正規表現のエスケープ文字
ttp://ahkwiki.net/-EscapeChar

MsgBox % kigou := "!""""#$`%&''()―-=~^|\@「【」】`;+:*<>、。`,.・?/_" ;←←AHKエスケープ文字
loop, parse, kigou
{
 if a_loopfield in \,*,+,.,?,{,},(,),[,],^,$,-,|,/ ;←←
  kigou%a_index% := "\" a_loopfield
 Else
  kigou%a_index% := a_loopfield
}
loop, 37
 kigou := RegExReplace(kigou, kigou%a_index%, "8") ;←←正規表現エスケープ文字
MsgBox % kigou
Return

963 :名無しさん@お腹いっぱい。:2014/09/18(木) 03:17:50.15 ID:k1/L8noe0.net
自分も少し興味あったので、あえて別な書き方で朝鮮・・・(置換はStringReplaceコマンド使用)
一応関数にしてみたけど、汎用性無し
※sch_str と rep_str 全部書くと書き込めないので途中省略(こうしても1回じゃ書き込めないので分割)

str := "12345あいうえお+:*<>、?/_abcde!""#$%&'()―-=VWXYZ"

;全角英数を半角に
sch_str := ["0","1", 〜 ,"8","9","a","b", 〜 ,"y","z","A","B", 〜 ,"Y","Z"]
rep_str := ["0","1", 〜 ,"8","9","a","b", 〜 ,"y","z","A","B", 〜 ,"Y","Z"]
ret := henkan(str, sch_str, rep_str)
MsgBox, % ret

;全角&半角記号を半角空白に
;半角記号の「"」のみ「"」でエスケープ→記述する場合、「""""」とする
sch_str := ["!","”", 〜 ,"/","_","!","""", 〜 ,"/","_"]
rep_str := A_Space
ret := henkan(str, sch_str, rep_str)
MsgBox, % ret

964 :名無しさん@お腹いっぱい。:2014/09/18(木) 03:18:24.58 ID:k1/L8noe0.net
henkan(str, search_str, replace_str) {
 if (! replace_str.MinIndex()) {   ;Objectかどうかの判断をこうしたが、正当な判断方法はどうするのか分からない
  loop, % search_str.MaxIndex()
  {
   StringReplace, str, str, % search_str[A_Index], % replace_str
  }
 } else {
  loop, % search_str.MaxIndex()
  {
   StringReplace, str, str, % search_str[A_Index], % replace_str[A_Index]
  }
 }
 return %str%
}

965 :名無しさん@お腹いっぱい。:2014/09/18(木) 12:38:54.86 ID:k1/L8noe0.net
>>964
Objectかどうかの判断方法が分かったので関数を訂正

henkan(source_str, search_str, replace_str) {
 if (IsObject(replace_str)) { ;(1)Objectかどうかの判断(1)と(2)は結果同じ(wikiより)
 ;if (replace_str) { ;(2)       〃       〃        ←分かり難い
  loop, % search_str.MaxIndex()
  {
   StringReplace, source_str, source_str, % search_str[A_Index], % replace_str[A_Index] ;replace_strがObjectの場合
  }
 } else {
  loop, % search_str.MaxIndex()
  {
   StringReplace, source_str, source_str, % search_str[A_Index], % replace_str ;replace_strがObjectではない場合
  }
 }
 return %source_str%
}

966 :名無しさん@お腹いっぱい。:2014/09/18(木) 14:35:54.63 ID:5fIbXHFF0.net
質問者の書き方を尊重してそれをコンパクトにするならこんな感じかね

hankaku := "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
Str := Clipboard
Loop, Parse, hankaku
Str := RegExReplace(Str,A_LoopField,Chr(Asc(A_LoopField)+65248))
Str := RegExReplace(Str,"[!-~!”“#$%&’‘()―−=〜^|¥@「【」】;+:*<>、。,.・?/_]",A_Space)
msgbox, % Str

Loop,Parse内はStringReplaceでいいかと思ったけどStringCaseSense,OnをつけたらRegExReplaceより遅かった
1000万文字中、置換対象が500万文字ある文字列でやったらうちのPCで、
StringCaseSenseなしのStringReplaceが平均2.3秒程度
RegExReplaceが平均2.6秒程度
StringCaseSense,OnのStringReplaceが平均2.9秒程度
Str := ClipboardなしでClipboardのまま置換したら倍以上遅くなった

記号の列挙は全角は質問者のやつそのままコピペで半角は[!-~]の範囲内だけ。不足あれば追加記述
[!-~]に半角英数も含まれるけど、事前に置換されてるからまあいいかってことで

967 :名無しさん@お腹いっぱい。:2014/09/18(木) 19:06:29.17 ID:sw7evu+R0.net
>>918 を使ってみた

class WinConst {
 static LCMAP_BYTEREV:=0x00000800,LCMAP_FULLWIDTH:=0x00800000,LCMAP_HALFWIDTH:=0x00400000,LCMAP_HIRAGANA:=0x00100000
 static LCMAP_KATAKANA:=0x00200000,LCMAP_LINGUISTIC_CASING:=0x01000000,LCMAP_LOWERCASE:=0x00000100,LCMAP_SIMPLIFIED_CHINESE:=0x02000000
 static LCMAP_SORTKEY:=0x00000400,LCMAP_TITLECASE:=0x00000300,LCMAP_TRADITIONAL_CHINESE:=0x04000000,LCMAP_UPPERCASE:=0x00000200
 static NORM_IGNORENONSPACE:=0x00000002,NORM_IGNORESYMBOLS:=0x00000004,LINGUISTIC_IGNORECASE:=0x00000010,LINGUISTIC_IGNOREDIACRITIC:=0x00000020
 static NORM_IGNORECASE:=0x00000001,NORM_IGNOREKANATYPE:=0x00010000,NORM_IGNOREWIDTH:=0x00020000,NORM_LINGUISTIC_CASING:=0x08000000
 static SORT_DIGITSASNUMBERS:=0x00000008,SORT_STRINGSORT:=0x00001000
}

LCMapString(srcStr, convType) {
 If ((cchDest:=DllCall("LCMapString", "UShort", 0x0400, "UInt", convType, "Ptr", &srcStr, "Int", -1, "Ptr", 0, "Int", 0, "Int"))) {
  VarSetCapacity(destStr, cchDest*(1+A_IsUnicode))
  DllCall("LCMapString", "UShort", 0x0400, "UInt", convType, "Ptr", &srcStr, "Int", -1, "Ptr", &destStr, "Int", cchDest, "Int")
  Return destStr
 }
}

MsgBox, % LCMapString("アイウエォ", WinConst.LCMAP_HIRAGANA)
MsgBox, % LCMapString("アイウエォ", WinConst.LCMAP_FULLWIDTH)
MsgBox, % LCMapString("アイウエォ", WinConst.LCMAP_HIRAGANA | WinConst.LCMAP_FULLWIDTH)

968 :名無しさん@お腹いっぱい。:2014/09/18(木) 20:48:00.97 ID:ywGOiuVI0.net
>>967
動いてるけどDLL引数一個多くない?

969 :名無しさん@お腹いっぱい。:2014/09/18(木) 21:52:13.91 ID:sw7evu+R0.net
最後のは戻り値の型指定

970 :名無しさん@お腹いっぱい。:2014/09/18(木) 22:17:21.29 ID:Z1Apm8mc0.net
なに、全半変換.ahkでも作るかって流れなの

971 :名無しさん@お腹いっぱい。:2014/09/18(木) 22:54:12.15 ID:ywGOiuVI0.net
>>969
ありがとう、指定なしで動くから存在を知らなかった。

>>970
回答しつつ自分の技術の底上げ中

972 :名無しさん@お腹いっぱい。:2014/09/19(金) 10:32:03.42 ID:fW6U/Quv0.net
FileMoveDirはエクスプローラの切り取り&貼り付けとは違うのでしょうか?
ネットワークドライブ上で切り取り&貼り付けは一瞬ですが、FileMoveDirだとコピーしてから削除しているようです。

973 :名無しさん@お腹いっぱい。:2014/09/19(金) 15:39:06.94 ID:NzwsR9Om0.net
全角半角なんかこれでいいじゃん

FulltoHalf(Full){
StringReplace, Full, Full, 1 , 1, All
StringReplace, Full, Full, 2 , 2, All
(略)
StringReplace, Full, Full, Y , Y, All
StringReplace, Full, Full, Z , Z, All
Return Full
}

974 :名無しさん@お腹いっぱい。:2014/09/19(金) 15:57:11.84 ID:0jv9Vjz70.net
>>973
力業ならそれでいいってのが前提で、もっとスマートにって話してるわけで
カタカナも含めたらものすごい行数になるじゃねーか

975 :名無しさん@お腹いっぱい。:2014/09/19(金) 17:58:57.42 ID:vmxC40lT0.net
DllCall以外とくにたいしてスマートになんてなってないけど

976 :名無しさん@お腹いっぱい。:2014/09/19(金) 18:20:52.25 ID:0jv9Vjz70.net
>>975
それはつまり、DllCallはスマートだし他も多少はマシってことだろ?

977 :名無しさん@お腹いっぱい。:2014/09/19(金) 18:22:16.91 ID:Dly9Xkfw0.net
ぶっちゃけ眺めてるだけでも勉強になったよ

978 :名無しさん@お腹いっぱい。:2014/09/19(金) 18:51:22.41 ID:t1hNwcw/0.net
>>972
ローカルディスクやネットワークドライブ(LAN)どちらにも言えると思うが。
同一ドライブかどうかの違いじゃないの?詳しく書いてないから憶測だけど。

同一ドライブの移動ならディレクトリエントリの変更だけなので一瞬。
別ドライブの移動ならデータ丸ごとコピーしてから削除。

979 :名無しさん@お腹いっぱい。:2014/09/19(金) 18:56:33.17 ID:n+Z1/05B0.net
>>960
全角半角変換の話じゃないが、気になったもので。

もし、クリップボード内容を変換後Everything以外で使う予定無いなら
変換したデータはクリップボードに戻さないで、変数を直接Everythingの引数にした方が効率良いように思う。

moziseiri(clipboard)
Run,C:\SOFTWARE\Everything\Everything.exe -search "%Clipboard%"
     ↓
naosizumi := moziseiri(clipboard)
Run,C:\SOFTWARE\Everything\Everything.exe -search "%naosizumi%"

関数内の
Clipboard := naosi
     ↓
return %naosi%

980 :名無しさん@お腹いっぱい。:2014/09/19(金) 19:04:18.80 ID:sCZR/GwA0.net
>>975
行数だけで言うなら>>966なんか半角全角変換自体は3行で終わってるじゃないか

981 :名無しさん@お腹いっぱい。:2014/09/19(金) 19:26:20.45 ID:K4F5b8AD0.net
それがどうしたの?

982 :名無しさん@お腹いっぱい。:2014/09/20(土) 20:03:24.20 ID:C60wtkB30.net
文字列の処理はどの方式が最適なのかいろいろ検証してみた。

半角全角変換関数詰め合わせ + ベンチマーク
http://pastebin.com/diJWv0pw

■処理速度比較 ※早い順
対象: すべて < リスト[英数] < 正規表現[英数] < リスト[英数カナ] < 正規表現[英数カナ] <<< 一文字
変換: DLL ≒ リスト ≒ 文字コード(英数)
置換: StringReplace(StringCaseSense OFF) < RegExReplace < StringReplace(StringCaseSense ON)
読み込み: 変数 < Clipboard

(H/半角 Z/全角 > m秒)
1-H > 312 (対象:すべて 変換:DLL)
1-Z > 2168 (対象:すべて 変換:DLL)
2-H > 1482 (対象:リスト[英数] 変換:DLL)
2-Z > 1450 (対象:リスト[英数] 変換:DLL)
3-H > 1482 (対象:リスト[英数] 変換:リスト)
3-Z > 1466 (対象:リスト[英数] 変換:リスト)
4-H > 1482 (対象:リスト[英数] 変換:文字コード)
4-Z > 1467 (対象:リスト[英数] 変換:文字コード)
5-H > 2558 (対象:リスト[英数カナ] 変換:リスト)
5-Z > 2543 (対象:リスト[英数カナ] 変換:リスト)
6-H > 2091 (対象:正規表現[英数] 変換:DLL)
6-Z > 1872 (対象:正規表現[英数] 変換:DLL)
7-H > 2090 (対象:正規表現[英数] 変換:文字コード)
7-Z > 1841 (対象:正規表現[英数] 変換:文字コード)
8-H > 3183 (対象:正規表現[英数カナ] 変換:DLL)
8-Z > 3104 (対象:正規表現[英数カナ] 変換:DLL)
9-H > 2356 (対象:リスト[英数その他] 変換:リスト)
9-Z > 2340 (対象:リスト[英数その他] 変換:リスト)
10-H > 14789 (対象:一文字ずつ 変換:文字コード)
10-Z > 16848 (対象:一文字ずつ 変換:文字コード)

983 :名無しさん@お腹いっぱい。:2014/09/20(土) 22:43:06.36 ID:WRe3CBn/0.net
今ちょっとマウス座標定規作ってるんですけど横線とか縦線きっちり測りたいとき、キーを押してる間マウスがX軸のみ動くとかY軸のみ動くとかできないですか?

地味に座標計算めんどいのでユーティリティできたらソース貼りたいと思います

984 :名無しさん@お腹いっぱい。:2014/09/20(土) 23:12:46.55 ID:auaxvSvs0.net
MouseMoveでできる

985 :名無しさん@お腹いっぱい。:2014/09/20(土) 23:20:39.01 ID:3rowWFtw0.net
>>983
http://www.autohotkey.com/board/topic/79246-limiting-cursor-movement-to-horizontal-only/

986 :名無しさん@お腹いっぱい。:2014/09/21(日) 16:08:07.63 ID:22Q6Gq6R0.net
If FileExist("hage.exe") || FileExist("hoge.exe")
{
Run, %ヒットしたexe%
}

上記のような処理をしたいのですが、ヒットしたexeの変数を取得する事は出来ますでしょうか?。
よろしくお願いします。

987 :名無しさん@お腹いっぱい。:2014/09/21(日) 16:35:23.85 ID:9GaGPVBl0.net
>>986
どうしてElse使うとか2文に分けるとかしないの?

988 :名無しさん@お腹いっぱい。:2014/09/21(日) 16:54:15.72 ID:22Q6Gq6R0.net
言葉足らずですみません。
If FileExistで存在確認するexeは30を超えます。
スレに書き込む都合で短く2ファイルにしただけです。
現在はelseで分岐していますが、もっとスマートにならないかと質問しました。

989 :名無しさん@お腹いっぱい。:2014/09/21(日) 17:28:29.05 ID:9GaGPVBl0.net
>>988
対象ファイルがある程度まとまった場所にあるなら、Loop,filepatternで回せばいいんじゃない?
それが無理なら、前もって配列に入れておいてA_Index使って取り出すなり、
カンマ区切りで1つの変数に入れておいてLoop,parseするしか思いつかん
elseで分岐させるのと大して変わらんから、スマートとは言いがたいけど

990 :名無しさん@お腹いっぱい。:2014/09/21(日) 17:31:10.24 ID:HRJ1ScPu0.net
前々からテキストエディタ上の行数さえ少なければスマートだって人がいるけどそれはどうなのよ

991 :名無しさん@お腹いっぱい。:2014/09/21(日) 17:38:15.84 ID:Xb6MgkSH0.net
Objectに全部のexe入れてforで回せばいいんじゃね

992 :名無しさん@お腹いっぱい。:2014/09/21(日) 18:06:04.18 ID:hjvdJZ550.net
皆の言うとおり、リスト回すのが常套手段だね

あと、実質リストと同じだけど、正規表現の後方参照という手もある。

993 :名無しさん@お腹いっぱい。:2014/09/21(日) 18:16:19.51 ID:9GaGPVBl0.net
>>990
数行の差ならともかく、数十行も違ってくれば短いだけで十分価値はあると思うぞ
内容が同じなら、長々と書くより短くまとめてる方が頭良さそうだと思わん?

994 :名無しさん@お腹いっぱい。:2014/09/21(日) 18:18:59.42 ID:B+sFi6ad0.net
意味わかりやすい方がありがたい

995 :978:2014/09/21(日) 18:58:05.63 ID:22Q6Gq6R0.net
皆さんコメント有難うございます。
Loop,filepatternとforで回すを実行してみます。

996 :名無しさん@お腹いっぱい。:2014/09/21(日) 19:11:51.95 ID:X/CdzPgc0.net
一定時間PC操作していなかったらマウスカーソルを非表示をやりたいんですが
カーソル非表示方法が見つかりませんでした・・・
もしわかれば教えて下さい

997 :名無しさん@お腹いっぱい。:2014/09/21(日) 19:14:57.49 ID:PW95sWQz0.net
>>996
このスレは探したの?

998 :名無しさん@お腹いっぱい。:2014/09/21(日) 22:48:17.09 ID:GjUIW0ON7
>>996
スレ内を検索してみよう

999 :名無しさん@お腹いっぱい。:2014/09/22(月) 01:25:05.33 ID:JIWaXRe70.net
探してませんでした、思いっきり有りますね
>>8074のこれそのまま使えるんでしょうか?

1000 :名無しさん@お腹いっぱい。:2014/09/22(月) 02:18:20.34 ID:+lqQnBvw0.net
>>999
>>811はリンク先にある関数を利用したスクリプト
まず関数が何なのか理解する必要がある。
http://ahkwiki.net/Function

1001 :名無しさん@お腹いっぱい。:2014/09/22(月) 12:55:52.20 ID:LhXBlblr0.net
クリップボードの中に例えばこういうふうに

C:\01.txt
C:\02.avi
C:\03.mp3
以下続く

と複数別のファイルのフルパスをコピーしておくとするじゃないですか
この1行づつに対して処理を割り当てることは可能ですか?
1行づつにフルパスを分解したいんですがそういうことはできないんでしょうか?

1002 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:04:48.32 ID:7QC6z9Fg0.net
http://ahkwiki.net/Loop,Parse
Example #3

1003 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:10:08.05 ID:LhXBlblr0.net
あ、Loop,parseでできました。事故解決しました

1004 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:11:05.87 ID:LhXBlblr0.net
>>1002
あ、ありがとうございます。お騒がせしました

1005 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:46:53.48 ID:sCilm04c0.net
AutoHotkey スレッド part19
http://anago.2ch.net/test/read.cgi/software/1411360229/

1006 :名無しさん@お腹いっぱい。:2014/09/22(月) 13:51:44.99 ID:EIAzfdYz0.net
>>1005


1007 :名無しさん@お腹いっぱい。:2014/09/22(月) 15:29:59.96 ID:v7J6g4pW0.net
>>1005
乙です

1008 :名無しさん@お腹いっぱい。:2014/09/22(月) 18:21:39.72 ID:sCilm04c0.net
うめ

1009 :名無しさん@お腹いっぱい。:2014/09/22(月) 18:36:26.65 ID:f92IDu460.net
AutoHotkey スレッド part19
http://anago.2ch.net/test/read.cgi/software/1411360229/

1010 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1010
370 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★