AutoHotkey スレッド part12

このエントリーをはてなブックマークに追加
1名無しさん@お腹いっぱい。
■配布元
http://www.autohotkey.com/
本家Autohotkeyは事実上開発停止で、派生のAutoHotkey_L(AHKL)が主流となりつつある。
新規利用者には日本語の扱いで不具合の無いAHKLのユニコード版の利用を推奨。

■日本語解説等
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/
アップローダ
http://loda.jp/ahk/

■過去スレ
@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/

■派生版
IronAhk (.NET製、クロスプラットフォーム)
http://code.google.com/p/ironahk/
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.net/~tinku99/ahkdll/

■ 関連スレ
AutoIt
http://pc12.2ch.net/test/read.cgi/software/1277173327/
2名無しさん@お腹いっぱい。:2011/01/31(月) 13:00:22 ID:o8mz8tRb0
    |l  |l l |l | |i
   |i  l |i l| li  |
        ∩
    _,,..,,n,r'゙ <⌒つ
   ./ ゚ 3  ヽ )´   
 ) l ゚ ll ∩ ノ そ
Σ `'ー---‐''  (
  ⌒ヽ/V⌒v、/⌒ ビダァァァン!!!!
3名無しさん@お腹いっぱい。:2011/01/31(月) 13:01:45 ID:o8mz8tRb0
<わからない9大理由>
1.読まない …参考書などを読まない。読む気などさらさらない。
2.調べない …過去スレ、ググるなど最低限の内容も自分で調べようとしない。
3.試さない …めんどくさいなどの理由で実行しない。する気もない。
4.覚えない …人から聞いて、楽して得た答えは身に付かないから、すぐに忘れる。
5.説明できない …何に困っているのか、第三者に正確に伝わる文章が書けない。
6.理解力が足りない …理解力以前の問題で理解しようとしない。
7.人を利用することしか頭にない …甘え根性でその場を乗り切ろうとする。
8.感謝しない …教えてもらって当たり前。事がすんだらさようなら。
9.逆切れする …自分の思うようにならないと逆切れする。

★教えて君五大要素★

1 読まない             (文盲)
2 調べない             (能なし)
3 試さない (発想力欠如のアホ)
4 理解力が足りない        (馬鹿)
5 人を利用することしか頭にない (死ね)
4名無しさん@お腹いっぱい。:2011/01/31(月) 13:03:08 ID:qh3anlvR0
■重要事項
オリジナルである、本家 "AutoHotKey" の開発は終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流になりつつある。
スクリプトについては、それが本家AHKで動くものであるか、Lであるのかに注意。

AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/

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

※ 新規利用者にはAHKLを推奨するが、移行に際してすくなからずの改修が必要となる。
特に、旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない。
安定利用できている環境を崩して移行するかどうかは各人の判断による。

■派生版
ironahk (.NET製、クロスプラットフォーム)
http://code.google.com/p/ironahk/

AutoHotkey.dll (真のマルチスレッド対応など) (AHKLベース)
http://www.autohotkey.net/~tinku99/ahkdll/

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

2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
5名無しさん@お腹いっぱい。:2011/01/31(月) 13:04:19 ID:qh3anlvR0
以下FAQ等

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

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

■ リマップ・ホットキー割り当て

Q1:[CapsLock(英数)]や[ひらがな]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理なので、
 レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
 
 例) ChangeKeyを使って[ひらがな]を[F13]にする
  AutoHotkeyで任意のキーをF13にリマップする例えばF12をF13にリマップし、スクリプトを実行)。
   F12::F13
  Changekeyを起動する。( ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
  「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
  F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
  「上のスキャンコードでキー変更する」をクリックすると「変更前 (中略) 0x0064 をどのキーに変更しますか?」
  というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
  リマップ( F12::F13 )を解除する。
6名無しさん@お腹いっぱい。:2011/01/31(月) 13:08:47 ID:qh3anlvR0
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}

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ではできない。
7名無しさん@お腹いっぱい。:2011/01/31(月) 13:09:45 ID:qh3anlvR0
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/pub/MyScript/ の「IME.ahk」を使いましょう。

Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
8名無しさん@お腹いっぱい。:2011/01/31(月) 13:11:12 ID:qh3anlvR0
■ その他
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)を利用すると真のマルチスレッドが利用可。
9名無しさん@お腹いっぱい。:2011/01/31(月) 13:12:18 ID:qh3anlvR0
■リンク等
AutoHotkey メモ - Principia
http://principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
なまず日記
http://www.tierra.ne.jp/~aki/diary/
eamatの日記
http://d.hatena.ne.jp/eamat/
1 Hour Software by Skrommel - DonationCoder.com
http://www.donationcoder.com/Software/Skrommel/
Rosetta Code (さまざまな処理を各種プログラム言語で書いた場合の比較)
http://rosettacode.org/wiki/Category:Programming_Tasks

以下公式フォーラムより
http://www.autohotkey.com/forum/topic8795.html  Tips N Tricks
http://www.autohotkey.com/forum/topic26855.html ListViewで大きな画像を扱いたい
http://www.autohotkey.com/forum/topic19509.html GUIで標準のもの以外を使いたい
http://www.autohotkey.com/forum/topic20097.html GUIを手軽に作りたい
http://www.autohotkey.com/forum/topic39598.html DllCallで定数調べるのマンドクセ
http://www.autohotkey.com/forum/topic22975.html コンパイルユーティリティ(Compile_AHK II)
http://www.autohotkey.com/forum/topic23072.html HIDを直に読んで、キーボードやマウスの拡張ボタンの状態を得たい
http://www.autohotkey.com/forum/topic19367.html Windowsのイベントをフックして色々やりたい
http://www.autohotkey.com/forum/topic20701.html ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
http://www.autohotkey.com/forum/topic20701-42.html ShellDesktop() : デスクトップで選択されたファイルを取得
http://www.autohotkey.com/forum/topic21451.html ポップアップメニューの情報を得る
10名無しさん@お腹いっぱい。:2011/01/31(月) 13:33:35 ID:hoqurBSV0
AAはともかくn大理由は必要悪か・・・
11名無しさん@お腹いっぱい。:2011/01/31(月) 17:02:51 ID:QBjo4Vgc0
そろそろ「まとめwiki」が必要だな
12名無しさん@お腹いっぱい。:2011/01/31(月) 20:25:23 ID:FtjP7Jza0
>>1
乙乙。これなら無印と L の違いが上手く判断できると思います。
13名無しさん@お腹いっぱい。:2011/01/31(月) 21:58:01 ID:SKDk1Vdp0
非常に乙
わかりやすいテンプレだね
14名無しさん@お腹いっぱい。:2011/01/31(月) 22:25:32 ID:LhnowdIV0
スキップリストが実装できないorz
15名無しさん@お腹いっぱい。:2011/01/31(月) 23:23:46 ID:cwxpMw3C0
前スレ894
どうもありがとうございます
メッセージの中身はURLだけのようだったので
教えていただいたコードを参考にしスレタイトルもとれるようにかいているのですが
missing { やThe leftmustといったエラーが出てしまいます
 req.Open("HEAD", "http://" $host "/" $board "/subject.txt")
 req.Send()
 If ("OK" = req.StatusText) {
  Loop, Parse,ThreadName,req.ResponseText,`n,{
   IfInString,ThreadName,$dat,{
    Pattern = m)(?P<DatNum>\d{9,10}\.dat)<>(?P<Title>.*?)\s\((?P<res>\d{0,4})\)
    RegExMatch(ThreadName,Pattern,$)
   TitleName:= $Title
   }
  }
  MsgBox, % "タイトル: " . $Title
 }Else{
  MsgBox, % "Error: " req.StatusText
 }
前スレのコート下から3行目2行目の間に上記のコードを書き込み
1行のelseも{}でくくりました。
どうしたらいいでしょうか
16名無しさん@お腹いっぱい。:2011/02/01(火) 00:35:55 ID:5qWGnNzR0
>>15
HEADだと更新日時とかファイルサイズ等を取得するヘッダのみを取得なので、
本体を取得するGETを使う。
本体は res.ResponseText で取得でき・・・ないorz
出来ないっつーか、ANSIを無理栗取得するから化けるので変換してやらんといけなくなるな。
スゲー面倒だw

該当部分のみ書くんで適当に貼り付けて使うよろし。
※ DAT落ちして subject.txt に乗ってない時は空になる。

req.Open("GET", "http://" $host "/" $board "/subject.txt")
req.Send()
b:= req.ResponseBody
VarSetCapacity( buff, 1024 ), idx := 0
Loop, % b.MaxIndex() + 1 {
 If ( (v := b[A_Index-1]) == 0x0A ) {
  NumPut(0, buff, idx, "UChar")
  If RegExMatch(StrGet(&buff, "CP932"), $dat ".dat<>(?P<name>.+)\((?P<res>\d+)\)", $)
   Break
  idx := 0
 } else {
  NumPut(b[A_Index-1], buff, idx, "UChar")
  idx++
 }
}
VarSetCapacity(buff, 0), b:=
MsgBox, % "スレタイ`t" $name "`nレス数`t" $res
17名無しさん@お腹いっぱい。:2011/02/01(火) 07:25:20 ID:jvUN4Mm90
AHKL用MouseGesture.ahk、64bitOS対応版うp頼む
18名無しさん@お腹いっぱい。:2011/02/01(火) 09:46:35 ID:pDjt1KJ80
(・∀・)フクショク!!
19名無しさん@お腹いっぱい。:2011/02/01(火) 16:13:51 ID:smBNCy3p0
>>16
ありがとうございます。
前スレのとあわせてうまくできました。

Last-ModifiedはGMTで取得されますが
DATEオブジェクトのtolocalestringが使えればJSTに変換できると思い
ComObjCreateでDATEオブジェクトを作れるCOMを探したのですが見つかりませんでした。
Last-Modifiedをまとまりごとに分割してIFで細々と変えていくしかないのでしょうか?
20名無しさん@お腹いっぱい。:2011/02/01(火) 19:13:58 ID:5qWGnNzR0
イマイチよく分からんが、JavaScriptのDateオブジェクトのことかな。
あれはJSのビルトインオブジェクトだから使えない
 -- new ActiveXObject("Date") とかやらないでしょ --
JSに慣れてるなら、ScriptControl 使えばいいと思うよ。
http://hibari.2ch.net/test/read.cgi/software/1280482227/293,296,623
それだったら通信部分もJSで組んじまえばいい気もするけど。
21名無しさん@お腹いっぱい。:2011/02/01(火) 22:15:23 ID:CYZNwIDL0
>>17
文字コード変えて、2バイト文字のエスケープを取り除いて、DllCallの所直せばおk。

でもDllCallの直し方がいまいちよくわからない。
とりあえず末尾がAになってるやつは取り除く、ってことはわかったが
ポインタとかデータ長とかは全然わからん。
誰かまとめてくれ。
22名無しさん@お腹いっぱい。:2011/02/01(火) 22:18:36 ID:5qWGnNzR0
面倒だけど、関数名をMSDNで引数や戻り値の型を調べるだけだよ
23名無しさん@お腹いっぱい。:2011/02/01(火) 22:21:37 ID:jvUN4Mm90
アップローダを用意してくれた訳だから、そこに対応版をうpしてくれると有り難い
24名無しさん@お腹いっぱい。:2011/02/01(火) 22:37:22 ID:CYZNwIDL0
>>22
つまり、DllCallの種類ごとに調べないと駄目って事か。一括で置換出来たりしたらいいと思ったんだが。
32bitと64bitで変わってくるのかもよくわからん。
とりあえず自分の手元にあるMouseGesture.ahkはターゲットの実行ファイルのパスが取れない。
stdio.ahkとかも動かない。
流行らせるページの作者が作ったスクリプトが動かなくて移行出来ないって人、結構居るんじゃないかな。
25名無しさん@お腹いっぱい。:2011/02/01(火) 22:41:58 ID:CXy2hbrt0
なんでこんなにクレクレが増えたんだろ
26名無しさん@お腹いっぱい。:2011/02/01(火) 22:54:00 ID:CYZNwIDL0
ユニコードに対応したし、窓使いの憂鬱やマウ筋などからの移行とかで新規ユーザーが増えてるんでは。
でも、ちょっと高度なことやろうとすると奇っ怪な言語仕様も相まって詰まる人が多いと思う。
PerlとかならCPANとかあるけどAutoHotKeyは基本自分でやれってなるからね。
質問スレと分けるほどの勢いも無いし、気にするほどでは無いだろ。
27名無しさん@お腹いっぱい。:2011/02/01(火) 23:44:23 ID:QiCSovzp0
autohotkeyならCPANのようなものを作れそう
28名無しさん@お腹いっぱい。:2011/02/02(水) 00:11:15 ID:Wc7J8eY20
バックグランド(非表示)にこだわらないなら、子プロセスの標準出力を得るのは以下のようにすりゃいい

exec := ComObjCreate("WScript.Shell").Exec("ipconfig /all")
While !exec.Status
 Sleep, 100
MsgBox, % RegExReplace(exec.StdOut.ReadAll(), "\r")
29名無しさん@お腹いっぱい。:2011/02/02(水) 07:57:12 ID:cQM1P7mT0
MSDNで値の型を調べる
http://msdn.microsoft.com/ja-jp/library/default.aspx
Windows Data Types
http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx

問題となるのは
1. 型のサイズ(32bitと64bitでサイズが異なるもの)
2. 構造体のサイズと配置(メンバの型のサイズの違いとアラインメント・パックの違いによるサイズの違い)
3. わざわざANSIで呼んでるもの(語尾にAのついているもの)

1について
名前にHがついてるハンドル型(hwnd, hinstance, hprocess, hgdiobj等々)や ポインタ型(メモリアドレスとか、DWORD_PTR等)
は32bit→4バイト、64bit→8バイトなので型をPtrに修正。

2について
これが面倒くさい。MSDNにはパックの情報載ってないし
VisualStudioでsizeof見るのが手っ取り早い? ヘッダファイルを追跡してもいいけど~。だいたい勘で

3について
これは単にAを取ればよか。
語尾にAとかWとかなしで呼ぶとシステムが勝手に判断してくれるっしょ
30名無しさん@お腹いっぱい。:2011/02/02(水) 07:59:14 ID:cQM1P7mT0
>>24
>実行ファイルのパスが取れない

MouseGesture.ahkの490行あたりのMG_CommandLineかな~
こんな感じ? 知らんけど

MG_CommandLine(pid=0){
    global MG_PID
    static ptr:=0
    if(!pid){
        pid:=MG_PID
    }
    if(!ptr){
        ptr:=(NumGet(DllCall("kernel32.dll\GetProcAddress","Ptr",DllCall("kernel32.dll\GetModuleHandle","Str","Kernel32"),"Str","GetCommandLine","Ptr")+1))
    }
    hp:=DllCall("kernel32.dll\OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,Ptr)
    VarSetCapacity(res,1024)
    DllCall("kernel32.dll\ReadProcessMemory","Ptr",hp,"Ptr",ptr,"UIntP",addr,"Ptr",8,"Ptr",0)
    DllCall("kernel32.dll\ReadProcessMemory","Ptr",hp,"Ptr",addr,"Str",res,"Ptr",1024,"Ptr",0)
    DllCall("psapi\CloseProcess","Ptr",hp)
    return res
}
31名無しさん@お腹いっぱい。:2011/02/02(水) 10:49:14 ID:KCMJOsuG0
関数の引数や戻り値の型はチマチマ調べなきゃいけないのは確か。
あと WPARAM, LPARAM は UPTr かな。

構造体はライブラリの Struct() 使うと楽。
http://www.autohotkey.com/forum/topic59581.html

stPoint := Struct("POINT")
DllCall("GetCursorPos", "Ptr", stPoint[]) ; 構造体のポインタは無名キーを指定
MsgBox, % stPoint.x A_Tab stPoint.y

sizeOf したいなら MsgBox, % Struct(stPoint)

登録済みの構造体はそれほど多くないので、使いたい構造体がないときは登録が必要。
でもか、なり簡単。
例えポインタや入れ子構造体を含む構造体として以下を使う場合、
http://msdn.microsoft.com/en-us/library/bb761393%28v=VS.85%29.aspx


Struct("").IMAGEINFO := "
(Comment
HBITMAP hbmImage; l このように typedef の内側を丸々貼ればいい
HBITMAP hbmMask;
int Unused1;
int Unused2;
RECT rcImage;
)"

stImageInfo:= Struct("IMAGEINFO")
stImageInfo.rcImage.top := 100 ; 入れ子のアクセスも余裕
MsgBox, % stImageInfo.rcImage.top

32名無しさん@お腹いっぱい。:2011/02/02(水) 19:09:40 ID:mVMIdv5d0
実行ファイル名の取得はMG_ExePath()かな
>>30の関数は、
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/115
らしい。x64のマシン語用に修正とか('A`)なので、別の手法でコマンドラインをとってきた方がよさそうだ。これとか
http://hibari.2ch.net/test/read.cgi/software/1280482227/735
(前スレにあったCOMを使った例)
33名無しさん@お腹いっぱい。:2011/02/02(水) 22:20:10 ID:NtXMhpNM0
これから先は人に見せるスクリプトを作るときは
初回起動時にOSとかAHKのバージョンを確認してiniにでも書き込んで
で、それを元に動作を分岐するようにでもした方がいいのかな?
動作確認等がすごい面倒そうだけどorz
34名無しさん@お腹いっぱい。:2011/02/03(木) 00:49:07 ID:YI8tHb/V0
スクリプトなのにアーキテクチャに依存するとかワロス
35名無しさん@お腹いっぱい。:2011/02/03(木) 04:54:29 ID:6DvpMEO+0
外部DLLを決め撃ちで呼ぶ機能だし仕方ないさ。
うまいことオブラートにくるめるといいんだけど。
36名無しさん@お腹いっぱい。:2011/02/03(木) 13:58:22 ID:rbM/vFPX0
ホットキーが有効だと、guiの (&a のようなものが動かなくなるので、
gui とホットキーの処理を分離したいです。
そこで、両者を分離させようと思いました。

どうやって分離させようか考えたところ、
前スレ754-755にありました、autohotkey_l のスクリプト間で情報をやりとりするのが使えそうだと気づきました。
(sender.ahk と receiver.ahkのやつです)

ですが、それらは一方向の情報しかやりとりできません。
A.ahk -> B.ahk

これを双方で送受信、つまり
A.ahk -> B.ahk も
A.ahk <- B.ahk もできるようにするには、どうすればいいでしょうか?
37名無しさん@お腹いっぱい。:2011/02/03(木) 19:26:30 ID:6DvpMEO+0
>>36
面倒なことしなくても、

#IfWinNotActive, GUIのタイトル ahk_class AutoHotkeyGUI

とか

Gui, +LastFound
GroupAdd, MyGui, % "ahk_id " WinExist()
#IfWinNOtActive, ahk_group MyGui

とやって、グローバルなホットキーを自GUIがアクティブでない場合に置き換えちまえばいいかと。
38名無しさん@お腹いっぱい。:2011/02/04(金) 07:58:11 ID:dvswQKUi0
スクリプト終了時に、特定のアプリケーションを同時に終了させるにはどうすれば良いのでしょうか?
OnExitを使うのはわかるのですが、アプリケーションを終了させる方法がわからなくて困っています。
39名無しさん@お腹いっぱい。:2011/02/04(金) 08:13:41 ID:i1PposY90
Send, !{F4}
WinClose
Process, Close
4038:2011/02/04(金) 09:29:55 ID:dvswQKUi0
>>39
色々試してみたのですが、どうもうまくいきません。
具体的には、foobar2000を終了させたいのですが、


SetTitleMatchMode, 2

OnExit, Owari
return

Owari:
WinClose, foobar2000
ExitApp

としてみたのですが、ダメでした。
稚拙な質問で申し訳ないです。
41名無しさん@お腹いっぱい。:2011/02/04(金) 11:29:38 ID:7emQEsIj0
残念だったねぇ
42名無しさん@お腹いっぱい。:2011/02/04(金) 12:55:32 ID:V86xJa080
>>40
"owari"って関数をDetectHiddenWindowsでかこってみ?
43名無しさん@お腹いっぱい。:2011/02/04(金) 15:14:57 ID:nFODjuPJ0
マウ筋の「ホイールでマウス直下にフォーカスして前面にもってきてスクロール」って機能は実現できませんかね?
WhellRedirectは「スクロールするけど前面に来ないしフォーカスも奪わない」なんで
4438:2011/02/04(金) 16:01:08 ID:dvswQKUi0
自己解決しました。
記述する位置が悪かっただけでした。

スレ汚しすみませんでした。
45名無しさん@お腹いっぱい。:2011/02/04(金) 16:33:30 ID:i1PposY90
Autoexecセクションに OnExit を記述してないってところか。よくある事だw
位置を気にせずに終了処理を書きたいならこんな感じで出来る。

MsgBox, ここまでAutoExec
ExitApp
OnExitFunc() {
 static $:=Object("base", Object("__Delete", "OnExitFunc")) ; この行がおまじない
 MsgBox, おわり
}
46名無しさん@お腹いっぱい。:2011/02/04(金) 17:31:57 ID:aUqdDHtC0
やったwww
3キーコンビネーションでけたww俺偉いwww
Ctrl+F1でA、Ctrl+F1+1でB、F1+1でCってなったwww
47名無しさん@お腹いっぱい。:2011/02/04(金) 17:40:38 ID:aUqdDHtC0
違った・・・・・・。
Ctrl+1でA、Ctrl+F1+1でB、F1+1でCだった・・・。
スレ汚しすみませんでした。
草生やしまくってごめんなさい(´;ω;`)
48名無しさん@お腹いっぱい。:2011/02/04(金) 17:53:44 ID:gkNWDpA90
foobarの人、もう解決してるみたいだけど
コマンドラインから /exit で終了させる手もあるでよ
49名無しさん@お腹いっぱい。:2011/02/04(金) 22:41:47 ID:eSBIkihs0
>>37
その手がありましたか。ありがとうございます。
50名無しさん@お腹いっぱい。:2011/02/06(日) 08:06:44 ID:MKB3Yuo+0
MediaPlayerClassicの右下に表示される再生時間を取得しようといろいろ試してみました。

Process, Exist, mplayerc.exe
If ErrorLevel<>0
WinActivate, ahk_pid %ErrorLevel%

ControlGetText, text, ahk_class Static2
MsgBox, The text is:`n%text%

ahk_class Static2の部分をプロセスエディタで調べたハンドルahk_id 0x003802BAに変えても出来ないようです。
正しい方法を教えていただけないでしょうか。
51名無しさん@お腹いっぱい。:2011/02/06(日) 08:42:52 ID:j9/dbLv20
ControlGetText, text, ahk_class Static2

ControlGetText, text, Static2, ahk_pid %ErrorLevel%

こうすればたぶんおk
52名無しさん@お腹いっぱい。:2011/02/06(日) 13:00:07 ID:9uX7zjkx0
53名無しさん@お腹いっぱい。:2011/02/06(日) 13:03:28 ID:9uX7zjkx0
誤爆した。
>>47
ちょっと待て。
それ3キーできてるんじゃないの?
54名無しさん@お腹いっぱい。:2011/02/06(日) 17:44:38 ID:7zwNXcTv0
キー連打系のおすすめ設定教えてくれ。
無変換キー2連打とかいろいろ使い道あると思うんだが。。
55名無しさん@お腹いっぱい。:2011/02/07(月) 01:01:10 ID:nuKPQbue0
>>51
うまくいきいました。ありがとう
56名無しさん@お腹いっぱい。:2011/02/07(月) 10:51:55 ID:xIfdXMSN0
XButton1とLButton同時押しをMButtonとRButtonの同時押しに割り当てるにはどうしたらいいの
なんか右クリメニューが出てくる
57名無しさん@お腹いっぱい。:2011/02/07(月) 11:46:47 ID:5pl4UUav0
>>56
どう書いたの?
58名無しさん@お腹いっぱい。:2011/02/07(月) 14:06:40 ID:xIfdXMSN0
そんな羞恥プレイは勘弁して
59名無しさん@お腹いっぱい。:2011/02/07(月) 14:40:45 ID:GKkVS+sl0
>>56みたいな文章書いてる時点で十分恥ずかしいのになw
60名無しさん@お腹いっぱい。:2011/02/07(月) 15:03:57 ID:xIfdXMSN0
そりゃ比較級の話しさ
61名無しさん@お腹いっぱい。:2011/02/07(月) 15:16:33 ID:pqvNV8kP0
エスパー頼みか人にすべてやらそうとしてるクズか
62名無しさん@お腹いっぱい。:2011/02/07(月) 15:47:25 ID:LdKiHLS20
メニューを出すキーの Alt や Win はDown時じゃなくてUp時にメニューが出る。これはRButtonでも同じ。
で、キーを送るのに、
 Send, {LWin}
とすると {LWin Down}{LWin Up} と解釈されてスタートメニューが出るけど、
 Send, {LWin Down}^{LWin Up}
のようにキーUp時に Ctrl キー等を併用するとメニューを出さなくすることが出来る。
これはOSの機能で、Sendでやらないで手動でやっても同じ。(#MenuMaskKey のページ参照)

一方、RButtonは何らかのキーやボタンを同時に押せばメニューをキャンセル出来るという機能がない。

物理的なボタン押下の直後に {RButton Down} を発行してしまったらメニューは必ず出るので、
(押す|押さない)の判断を他のボタンが押されたかどうかまで遅延しなければならなくなる。
これは物理的なDown〜Upの間に同時押しがあったら RButton の発行をしないというようにすればいい。

しかし、これでも問題があって物理的なボタンUp時に RButton の発行が遅延されてしまうので、
エクスプローラ等でよく使う右ボタンドラッグが全く出来なくなる。

もっとも全くキャンセル出来ないわけではない。
ソフトによるが「ボタンDownがあったウィンドウの外でUpをする」ことでキャンセルできる場合もある。
しかしウィンドウが外でUpしてもメニューが出るものも依然として多い。

従ってコンビネーションで使う場合でメニューを完全に出さなくする汎用的な方法はなく、
対象別の処理分岐を行ったり、何らかの割り切りをしたりする必要がある。
63名無しさん@お腹いっぱい。:2011/02/07(月) 15:49:02 ID:LdKiHLS20
以下は、マウスジェスチャツールでよく見るタイムアウトを利用した割とお手軽な「割り切り」の例。
単純右クリックは問題ないが、ドラッグやマウスジェスチャはタイムアウトまで待つ必要がある。

#If
RButton::
 fRB:=True
 BlockInput, MouseMove
 KeyWait, RButton, T0.5 ; タイムアウト(秒)
 BlockInput, MouseMoveOff
 If (fRB) && !(fRB:=False) {
  Send, {RButton Down}
  KeyWait, RButton
  Send, {RButton Up}
 }
 Return

#If (fRB) && !(fRB:=False) ; この式が評価されるのは該当ホットキーが押されたときのみ
LButton::MsgBox, R + L
MButton::MsgBox, R + M

64名無しさん@お腹いっぱい。:2011/02/08(火) 23:50:44 ID:7ZUKHhXT0
起動時に1度だけ処理を行うのはどう書けばいいでしょうか?

tempファイルにフラグ立てて常時監視だとあんまり綺麗じゃないし。。
65名無しさん@お腹いっぱい。:2011/02/09(水) 00:24:20 ID:+fPQ8Tsg0
>>64
Auto-Execセクションに書けばいいんでないの?
あと、SetTimerで負の値指定すれば指定時間後に一度だけ実行するって意味になる。
AutoHotkeyの起動に関わらずOSの起動時ってんなら、
スタートアップに入れといて独立に実行させるのが簡単。
66名無しさん@お腹いっぱい。:2011/02/09(水) 00:37:44 ID:xzIUQ0/U0
>>65
SetTimerとは盲点でした。マイナス値指定でこんな制御できるんですね。
やりたかった事がこの機能なんでドンピシャでした。サンキューです!
6738:2011/02/09(水) 03:11:03 ID:5H8QE6c20
解決できませんでしたorz
AutoHotkey.exeでスクリプトを動かすと、正常に動作するのですが、
コンパイルして使用すると、全く機能が働きません。

以下にソース貼りますので、どなたか添削お願いいたします。



SetTitleMatchMode, 2
DetectHiddenWindows, On

Run, C:\Program Files\foobar2000\foobar2000.exe

OnExit, Owari
return

Owari:
IfWinExist, foobar2000
WinClose, foobar2000
ExitApp

#z::Run, C:\Program Files\foobar2000\foobar2000.exe /prev
#x::Run, C:\Program Files\foobar2000\foobar2000.exe /next
#Space::Run, C:\Program Files\foobar2000\foobar2000.exe /pause
68名無しさん@お腹いっぱい。:2011/02/09(水) 03:21:15 ID:e0+dVN3e0
セキュリティソフトの設定とかじゃないの?
6938:2011/02/09(水) 03:26:51 ID:5H8QE6c20
>>68
NOD32で除外に入れてみましたが(コンパイルしたEXEを)、ダメでしたorz
70名無しさん@お腹いっぱい。:2011/02/09(水) 07:28:25 ID:4ov0yC+Q0
#zやなんやらのホットキーは正常動作してんの?
なら >48にもあるけど
Run, C:\Program Files\foobar2000\foobar2000.exe /exit
を試してみてはどうか
7138:2011/02/09(水) 09:38:19 ID:5H8QE6c20
>>70
ホットキーは正常動作しています。



SetTitleMatchMode, 2
DetectHiddenWindows, On

Run, C:\Program Files\foobar2000\foobar2000.exe

OnExit, Owari
return

Owari:
IfWinExist, foobar2000
Run, C:\Program Files\foobar2000\foobar2000.exe /exit
ExitApp

#z::Run, C:\Program Files\foobar2000\foobar2000.exe /prev
#x::Run, C:\Program Files\foobar2000\foobar2000.exe /next
#Space::Run, C:\Program Files\foobar2000\foobar2000.exe /pause


としてみたら、今のところ正常に動いているようです。
ダメそうならまた相談しに来ます。
ありがとうございました。
72名無しさん@お腹いっぱい。:2011/02/09(水) 20:48:07 ID:AnYPhDjJ0
foobarとやらを起動した状態で、WinClose 単体で閉じられるかどうかはテストしたのかな?
問題の切り分けは、最小の単位で動くかどうからやったほうがいいよ
まぁ組む時もおなじだけど
73名無しさん@お腹いっぱい。:2011/02/09(水) 23:15:13 ID:e0+dVN3e0
コンパイルした時だけ動かなかったみたいだからな
コンパイル時の動作って何が違うんだろうか?
74名無しさん@お腹いっぱい。:2011/02/09(水) 23:35:16 ID:lB6wDz5r0
コンパイルしたスクリプトの名前がfoobar2000_Lunch.exeとかで
タイトルマッチでスクリプト自身が一致して本命には処理が回らない
75名無しさん@お腹いっぱい。:2011/02/09(水) 23:36:36 ID:e0+dVN3e0
あぁ、なるほどそれありそうだな
76名無しさん@お腹いっぱい。:2011/02/09(水) 23:37:48 ID:OiSdYAZE0
自分用のスクリプトでコンパイルする必要ってあるの?
77名無しさん@お腹いっぱい。:2011/02/09(水) 23:51:07 ID:e0+dVN3e0
>>76
基本必要ないと思う。
でも、たとえば、もうメンテの必要性のないスクリプトであれば
コンパイルしてしまえば、AHKのバージョン気にしないですむというメリットはあるかも
78名無しさん@お腹いっぱい。:2011/02/11(金) 13:53:26 ID:LhYK6ip3P
古いツールですが、DVDリップツールのDVD Decrypterで、

http://beans.seartipy.com/wp-content/uploads/2007/03/decrypter.jpg

AHKをつかって、Information欄のRead rate等をテキストデータとして抜き取って
監視&統計を取りたいのですが、この左側のInformationのテキストを抜き出せません。

稼働中に WinGetText, text,A をしたところ、

>Progress
>Information
>Destination
>Destination
>Source
>[0:0:0] HL-DT-ST DVD-ROM GDRH20N (O:)
>Settings
>MAX
>Destination
>Source
>[0:0:0] HL-DT-ST DVD-ROM GDRH20N (O:)
>Extracting Sectors...

という感じで、データは含まれていませんでした。

ステータスバーはStatusBarGetTextで取得できましたが、表示されてるとおりの
データのみが取得でき、目的のデータはありませんでした。

なんとかAHKで取り出す方法はないでしょうか。
79名無しさん@お腹いっぱい。:2011/02/11(金) 23:01:47 ID:Yok/jE4L0
ControlGetText でいけそうに見えなくも無い


>>76
ahkプロセスをタスクマネージャから消したいときに
複数あってもコンパイルしてあれば名前で分かる
メインの常駐のだけはexe化してある
80名無しさん@お腹いっぱい。:2011/02/13(日) 09:00:16 ID:gXAaP4jT0
ウインドウを移動させる方法ですが
起点を左下、右上、右下にする方法教えてください(´・ω・`)
81名無しさん@お腹いっぱい。:2011/02/13(日) 09:58:09 ID:6AvuwheK0
起点ってなんぞや?
画面の端にくっつけたいのなら、画面全体の縦横サイズを表す組み込み変数があるんで、
そいつを使って計算すりゃいい。
8280:2011/02/13(日) 10:19:54 ID:4uNgI/Xl0
すいませんちょっと間違ってました。

「ウインドウを下へ10ドット、右へ10ドット移動しなさい」
とした場合
ウインドウの左上角が、画面左上端から下へ10ドット、右へ10ドットの位置へ来ますが
これを
ウインドウの右下角が、画面左上端から下へ10ドット、右へ10ドットの位置へ来るようにしたいです。

また分かりにくかったらすいません(´・ω・`)
83名無しさん@お腹いっぱい。:2011/02/13(日) 10:45:01 ID:6AvuwheK0
どっちにしろ画面サイズからウィンドウサイズ引けばいいだけかと。
紙に図を書けば小学生でも分かるっしょ。

ただし、右下角はタスクバーやサイドバーなどがあるとウィンドウの領域が変わるんで、
 SysGet, Monitor, MonitorWorkArea, 1
でウィンドウ描画領域として使える領域の左上(MonitorLeft , MonitorTop) と右下(MonitorRight , MonitorBottom)を得てから
計算してやる必要がある。
8480:2011/02/13(日) 11:44:25 ID:4uNgI/Xl0
>>83
どもです。
がんばってみます( ^ω^)
85名無しさん@お腹いっぱい。:2011/02/13(日) 11:47:03 ID:6agsnF6R0
ドットという言葉には加齢臭を感じる
86名無しさん@お腹いっぱい。:2011/02/13(日) 12:02:18 ID:4uNgI/Xl0
(´・ω:;.:...:
87名無しさん@お腹いっぱい。:2011/02/13(日) 21:22:30 ID:gF7/7Kxm0
どっどどんまい!
88名無しさん@お腹いっぱい。:2011/02/14(月) 12:59:31 ID:eyP5++8F0
前スレを参考に2つのスクリプト間で通信をしたいのですが、

;常駐側
WM_USER_XBUTTONREQ := DllCall( "RegisterWindowMessage", "Str", "WM_USER_XBUTTONREQ", "UInt" )
OnMessage( WM_USER_XBUTTONREQ, "RsvMessage" )
return
RsvMessage( wp, lp, msg, hWnd ){
global WM_USER_XBUTTONREQ
If( msg == WM_USER_XBUTTONREQ )
{
Tooltip, Received
Sleep, 100
ToolTip
}
}


;呼出側
ButtonRequest:
DetectHiddenWindows, On
SendMessage, DllCall("RegisterWindowMessage", "Str", "WM_USER_XBUTTONREQ", "UInt"),,,, ahk_id 0xFFFF
DetectHiddenWindows, Off
Msgbox, % ErrorLevel
Return

SendMessageはErrorLevelに戻り値が入るとあるのですが、
常駐側ってどうすれば呼出側に値を返せるのですか?
89名無しさん@お腹いっぱい。:2011/02/14(月) 14:55:11 ID:c2qOLN/10
メッセージハンドラ関数 -- ↑の場合だと RsvMessage -- で Return するだけ。
90名無しさん@お腹いっぱい。:2011/02/14(月) 15:10:44 ID:eyP5++8F0
>>89
ありがとうございます

例えば、試しにこの様にすると

RsvMessage( wp, lp, msg, hWnd ){
global WM_USER_XBUTTONREQ
If( msg == WM_USER_XBUTTONREQ )
{
Tooltip, Received
Sleep, 100
ToolTip
}
Return 100
}

呼出側でMsgbox, % ErrorLevelしても、0しか返されないのです、
常駐側からは状況に応じて任意の値を返したいのですが…
これって何が間違っているのでしょうか?
91名無しさん@お腹いっぱい。:2011/02/14(月) 15:30:13 ID:c2qOLN/10
おっと、ブロードキャストしてんのか。それじゃ無理。
SendMessageって相手の応答待ちなのにブロードキャストしたら誰からの応答を戻り値にすりゃいいか分かんないじゃん。
面倒でも対以下のように象ウィンドウを決め撃ちしないと。
 受信側スクリプトパス ahk_class AutoHotkey
92名無しさん@お腹いっぱい。:2011/02/14(月) 15:31:09 ID:c2qOLN/10
うひゃ、編集ミスw
93名無しさん@お腹いっぱい。:2011/02/14(月) 15:57:53 ID:eyP5++8F0
>>91
ありがとうございます、やっとできましたっ

そういうことだったのかー、勉強になりました
94名無しさん@お腹いっぱい。:2011/02/14(月) 20:01:02 ID:IAJVXKt20
┌──────────┐
|               |
|  どかーん!.      |
|  (⌒⌒⌒).       |
|   ||,         |
|   ||.         |
|  / ̄ ̄ ̄ ̄ ̄\..  |
|  | ・ U      |.  |
|  | |ι        |つ |
|  U||  ̄ ̄ ||  |
|     ̄      ̄ .  |
└──────────┘
      象ウィンドウ

95名無しさん@お腹いっぱい。:2011/02/15(火) 19:00:18 ID:XPg+HvFIP
FileMoveDirコマンドでフォルダを移動させてから
そのフォルダに対して処理を行いたいのですが
移動が完了したかを判定する方法はあるでしょうか
(ErrorLevelで移動の完了を判定してくれるでしょうか?)
96名無しさん@お腹いっぱい。:2011/02/15(火) 19:11:22 ID:yZcLp3z60
過去スレにもあったけどWin7でAeroを有効にするとPixelGetColorが檄遅になるなあ
何気に不便だこれは
97名無しさん@お腹いっぱい。:2011/02/15(火) 20:08:18 ID:ISw4ecMV0
ええい!GPGPUへの対応はまだか!
98名無しさん@お腹いっぱい。:2011/02/16(水) 13:15:17 ID:cP5/14Rx0
Pauseキーにホットキー割り当てると、それ以降ずっとコントロールが
押しっぱなしの状態になるんだけど、これは修正できないのでしょうか?

^Pause::
ControlSend, SysTreeView321, {space}, ahk_class {97E27FAA-C0B3-4b8e-A693-ED7881E99FC1},
return

って感じでfoobarの一時停止を割り当てたんですけど、
ふつうのラップトップのキーボードなんすけど。
Capslockキーと同じような感じのエラーなのかな。
99名無しさん@お腹いっぱい。:2011/02/16(水) 13:52:36 ID:eWIHoRs+0
フック使ってる? (>>7参照)
100名無しさん@お腹いっぱい。:2011/02/16(水) 14:02:02 ID:cP5/14Rx0
>>99
フックつかっておりません。
ありがとうございます。テンプレにあるんですね。

>>98の事例は半ば諦めてほかのキーバインドにしたのですが
そもそもPauseの挙動がおかしいです。
Pauseをモディファイアにしたコンビネーションがまったく動かない。

Pause & J:: うんちゃら

ってやっても、動かないです。
テンプレもう一度読んでみます。#InstallKeybdHookなんかiniスクリプト全般に
適用されるようで気後れしてしまう
101名無しさん@お腹いっぱい。:2011/02/16(水) 14:28:27 ID:eWIHoRs+0
フック使うと確かに遅くなるけど、それを体幹でkるひとなんて居ないと思う。
102名無しさん@お腹いっぱい。:2011/02/16(水) 19:00:13 ID:5HamAol10
正規表現でこれが引っかからないんですがLじゃないと無理でしょうか?

Pos := RegExMatch("タ", "タ", $)
MsgBox, %Pos% %$%
103名無しさん@お腹いっぱい。:2011/02/16(水) 20:38:34 ID:eWIHoRs+0
ANSIだと「タ 0x83x5e」 は2バイト目が 0x5e(^)になる
10495:2011/02/16(水) 22:03:16 ID:SpieOa44P
質問の仕方がまずかったでしょうか

FileMoveDir〜
Run〜
で一応動いてるっぽいんですが、ファイルサイズが大きい場合に
移動中に処理が開始されたりすると怖くて使えないので
どなたかわかる方いましたらおながいします
105名無しさん@お腹いっぱい。:2011/02/16(水) 22:05:49 ID:I2v35JLBP
>>104
俺はコマンドラインを呼び出してrunwaitでやってる。
嫌でも待たされるから安心できる。
106名無しさん@お腹いっぱい。:2011/02/16(水) 22:06:15 ID:eWIHoRs+0
オペレーションが完了するまで次のコマンドの処理には入らないよ
107名無しさん@お腹いっぱい。:2011/02/16(水) 23:39:48 ID:5HamAol10
>>103
ありがとうございました
108名無しさん@お腹いっぱい。:2011/02/17(木) 08:34:52 ID:/UbtFMxKi
本家やLのANSI番で正規表現をまっとうに使いたいなら、
対象文字列やパターンをUTF-8に置換してやればいい
Unicode版でも内部でそうしてるらしいし。
もっとも、マッチ位置や(サブ)マッチ 文字列はANSIに戻してやんないといけないけど。
まぁ、流行らせるページのBREGEXP使えばいいんだけど。
(鬼車エンジンのbregonig.dllもつかえる)

でも、やっぱりLのUnicode 版で使う方が圧倒的に楽だよ。
109名無しさん@お腹いっぱい。:2011/02/17(木) 12:03:43 ID:Jb5NHySW0
!S::Win〜
のSを「:」に変えたいんですが「`:」にしてもErorrになってしまいます
「:」はGoogle検索の対象から外れているので検索してもわかりませんでした
よろしくお願いします。
110名無しさん@お腹いっぱい。:2011/02/17(木) 12:26:49 ID:F/zTx55I0
>>109
!vkBAsc028::
111名無しさん@お腹いっぱい。:2011/02/17(木) 14:10:29 ID:Jb5NHySW0
>>110
仮想キーコードだったんすか!
「`;」は認識したのですっかり抜け落ちてました
ありがとうございました。
112名無しさん@お腹いっぱい。:2011/02/17(木) 22:43:17 ID:xAy+os6W0
これのオブジェクト指向のサンプルがいくつか書いてある日本語サイトありまっか?
113名無しさん@お腹いっぱい。:2011/02/18(金) 11:53:30 ID:xlVz1NVl0
なんだって?
114名無しさん@お腹いっぱい。:2011/02/18(金) 14:20:05 ID:Ol/KNRRG0
組み込みのObjならwiki
デザインパターンの方なら無い
115名無しさん@お腹いっぱい。:2011/02/18(金) 22:43:36 ID:RpoPDXlc0
WinMenuSelectItem

↑このコマンドが成功するアプリって存在するの?
メモ帳ですら受け付けんが。

XP32 AHK1.0.48.05
116名無しさん@お腹いっぱい。:2011/02/18(金) 22:46:11 ID:NKRANOEc0
っ ファイル(&F)
117名無しさん@お腹いっぱい。:2011/02/18(金) 22:53:06 ID:RpoPDXlc0
>>116
ファイル(&F)やら1&やら引数は変えてみたが、どんなアプリでも全く動かんよ
118名無しさん@お腹いっぱい。:2011/02/18(金) 23:25:47 ID:6SObkGS90
せめてどう記述して動かんのかぐらい貼って聞けよ
119名無しさん@お腹いっぱい。:2011/02/18(金) 23:53:48 ID:RpoPDXlc0
>>118
例えばメモ帳に対してなら

WinMenuSelectItem,ahk_class Notepad,,1&,2&
120名無しさん@お腹いっぱい。:2011/02/18(金) 23:58:35 ID:RpoPDXlc0
WinMenuSelectItemがどんなアプリでもちゃんと使えたら、だらだらSendなんて書かなくて済むのにね
121名無しさん@お腹いっぱい。:2011/02/19(土) 00:11:00 ID:vzYpb0xH0
>>119
ウチは無問題だなぁ @XP SP3

>>120
メニューバーに見えるところで ClassNN とれるなら標準メニューじゃないしわけで、
そうなるとコンポーネント毎に作りが違うからもうお手上げでしょ。
122名無しさん@お腹いっぱい。:2011/02/19(土) 00:14:24 ID:sPe5uHb60
>>121
無問題ですか、いいなぁ〜
うちもXP SP3なんだけど、動いた試しがないw
123名無しさん@お腹いっぱい。:2011/02/19(土) 15:16:45 ID:zzXxeGu+0
「マウスの右ボタン押しながら左ボタンでコピー」したいんだが

RButton & LButton::^c
とすると通常時に右ボタンが効かなくなるし

~RButton & LButton::^c
とするとコピーの後に右ボタンが押されたことになるんだが

なんかいい方法ない?
ちなみにこれは流行らせるページのHotkeysを参考にしてる
http://ahk.xrea.jp/Hotkeys.html
124名無しさん@お腹いっぱい。:2011/02/19(土) 16:18:56 ID:Oq7gKDok0
>>123
RButton & LButton::Send,^c
RButton::Send,{RButton}

これだと右ドラッグができないけど
125名無しさん@お腹いっぱい。:2011/02/19(土) 16:42:27 ID:zzXxeGu+0
>>124
レスthx
その方法は俺も試したんだがドラッグできないのは痛い
右ドラッグだけなら被害はfirefoxぐらいだけなんだろうけど
最終的には
「マウスの右ボタン押しながら左ボタンでコピー」
「マウスの右ボタン押しながら中ボタンでカット」
「マウスの左ボタン押しながら右ボタンでペースト」
としようと思ってるからね
右ドラッグ(選択)ができなくなってしまうw

なんかいい方法ないかな〜…
126名無しさん@お腹いっぱい。:2011/02/19(土) 17:07:21 ID:dx3UXP7O0
>>125
どの道マウスを使うのなら、いっそのことジェスチャーに割り当ててしまえば?
127名無しさん@お腹いっぱい。:2011/02/19(土) 17:31:12 ID:zzXxeGu+0
>>126
レスthx
流行らせるページ管理人のマウスジェスチャーのことだと思うけど
ここに割り当てるとFirefoxでは無効になってしまうんだ
何故かというと、FirefoxではFireGesturesというアドオンを使っているため
ahkジェスチャーは無効にしてるんだよね

だから、より一般的に利用するためにコンビネーションキーで実現したいんだわ
128名無しさん@お腹いっぱい。:2011/02/19(土) 17:40:00 ID:dx3UXP7O0
>>127
難しいとこだねw
でも、コピペは色々なアプリで使うから、思い切ってFireGesturesを外しては?
それはFirefoxでしか機能しないマウスジェスチャーでしょ
MouseGesture.ahkでもいいし、他のジェスチャーソフトでもいいけど、ジェスチャーは専用ソフトに1本化した方が楽じゃね?
俺の使ってるブラウザもファイラもジェスチャー機能がついてるけど使ってないw
129名無しさん@お腹いっぱい。:2011/02/19(土) 18:02:37 ID:zzXxeGu+0
>>128
難しいとこなんだわw
FireGesturesを外すのは勇気がいるなぁ〜めちゃくちゃ便利だからなぁ〜
ジェスチャーを専用ソフトに一本化したほうがいいという意見はごもっともなんだが
ブラウザ付属のジェスチャーとかファイラ付属のジェスチャーにしかできないことってあるでしょ?
例えばFireGesturesだと
→↓:選択範囲をGoogle検索
→↓→:選択範囲を検索エンジンを選んで検索(ポップアップが出てくる)
っていう感じに俺は割り当てていて
これをahkジェスチャーで実現するのは無理だから
やはりFireGesturesは外せないw
130名無しさん@お腹いっぱい。:2011/02/19(土) 18:20:43 ID:dx3UXP7O0
>>129
実は俺はFirefox使いでもないしahk使いでもないwから、参考にならんかもしれんが…
その実現したい機能がホットキーで割り当てられるのなら、マウスジェスチャーで実現できると思う。
俺が使ってるジェスチャーソフトは、StrokeItってやつなんだが、
例えば、IEで調べたいキーワードをGoogle検索したい場合、そのキーワードをD&Dで選択して
Ctrl+C → Ctrl+T → Ctrl+E → Ctrl+V → Enterって流れになる

これを、StrokeItので実現しようとすると、「キーストロークを送る」ってコマンドで
[Ctrl_Down]C[Ctrl_Up][Ctrl_Down]T[Ctrl_Up][Ctrl_Down]E[Ctrl_Up][Ctrl_Down]V[Ctrl_Up][Enter]
って記述すればOK
Chomeだったら、3番目のCtrl+EがCtrl+Kに変わるだけ

想像だが、「検索エンジンを選んで検索」ってのも、Altや方向キーでキーボードだけで追えるんでしょ?
組み合わせて、キーボードだけで実現できることなら、StrokeItに割り当てられるよ
131名無しさん@お腹いっぱい。:2011/02/19(土) 18:24:59 ID:A1X39um80
>これをahkジェスチャーで実現するのは無理だから

FireGesturesのソースのbrowser.jsで760行目辺りにある
case "FireGestures:WebSearchPopup"
以降の処理をuserchrome.jsを利用して自前で関数に登録
Griever氏のKeyChanger.uc.jsやalice0775氏mainKeyset_overlay.xul
等を利用して関数にキーボードショートカットを割り当てる
単語が選択された状態からMouseGesture.ahkのアクションで
先程割り当てたショートカットを送る

これで出来る気がするけど…
132名無しさん@お腹いっぱい。:2011/02/19(土) 18:42:01 ID:vzYpb0xH0
コンテキストメニューが出ていいなら、ジェスチャ認識後のアクションに
 Send, {AppsKey}s
とか
 Send, {AppsKey}{Down 2}{Enter}
とかで代用できそうだけどな。
133名無しさん@お腹いっぱい。:2011/02/19(土) 18:55:06 ID:A1X39um80
>>132
129で言ってるのは、FireGesturesが自前で実装してるポップアップだと思うから
FireGestures自身がその機能を自分で呼び出すか、
>>131の様に自前で同等の処理を準備してやるかしないとダメじゃない?
AppsKeyをsendしても標準のコンテクストメニューしか利用できないと思う
134名無しさん@お腹いっぱい。:2011/02/19(土) 19:24:40 ID:vzYpb0xH0
挙げられた例を見ると通常のコンテキストメニューでもある項目だったんでな
135名無しさん@お腹いっぱい。:2011/02/19(土) 20:52:39.71 ID:zzXxeGu+0
>>130
>想像だが、「検索エンジンを選んで検索」ってのも、Altや方向キーでキーボードだけで追えるんでしょ?
>>133の言う通りFireGesturesが自前で実装してる機能のためできないと思う

>>131,>>133
レスthx
Firefox&FireGesturesユーザー(?)ということで
非常に技巧的な解決策を提示してもらったが、
例に示した以外にもたくさんのものがあって、
これらを全部>>131の方法でやっていく気にはなれない
FireGesturesは自前関数に登録するために必要だけど、
登録したあとは不要になるというのもちょっと…

>>132,>>134
レスthx
1つ目の例は確かにそれでいけたね
だけど2つ目の例に関しては>>133の言う通りだと思う



今ちょっとひらめいたんだが
「~」を使って、イベントを乗っ取らず、そのままシステムに通すと、
最終的に右ボタンは送られるわけだけど、
これをInputを使って横取りして取得して無効化することってできないかな?
136名無しさん@お腹いっぱい。:2011/02/19(土) 22:21:29.42 ID:kL20aePY0
一応、
Firefoxのデフォルトの検索ボックスだと
 ^k フォーカス移動
 ^{Up} ^{Down} でエンジン選択
 !{Up} or !{Down} でエンジン選択プルダウン展開
ができる。

固定エンジンならキー送るだけで何とかなるな。
 Send, ^c
 ClipWait, 0.5
 If (!ErrorLevel)
  Send, ^k^{Up 10}^{Down 1}^v{Enter} ; {Up 10} は一番上に移動するため。そこから {Down 1} なので2番目を選択
 Return

プルダウンの位置が気にくわない化もしれないが、出来なくもない。
 Send, ^c
 ClipWait, 0.5
 If (ErrorLevel)
  Return
 Send, ^k^v!{Down}
 WinWaitClose, ahk_class MozillaDropShadowWindowClass
 Send, {Enter}
 Return
137名無しさん@お腹いっぱい。:2011/02/19(土) 23:18:35.79 ID:A1X39um80
>例に示した以外にもたくさんのものがあって

これがKeypress Gesturesの機能を指してるならば
"検索エンジンを選んで検索"を外部からどう実現するかを
これ以上検討しても無駄かも。

実は以前FireGesturesをahkから使えるようにスクリプト書いたことあるけど
Keypress Gesturesの機能だけは諦めた。
実際には不可能じゃなかったけど主要な部分を殆どFirefox側で
実装しなければならず本末転倒すぎた…
138名無しさん@お腹いっぱい。:2011/02/20(日) 16:59:44.30 ID:euvOUDK20
XDebugClientでデバッグをしたい。

やり方はAutoHotkeyJp に

・XDebugClient を予め起動しておく
・AutoHotkey_L を /Debug オプションを有効にして起動する。XDebugClient 側は自動的に対象スクリプトに対して接続を行う。

とあるのですが、

「AutoHotkey_L を /Debug オプションを有効にして起動する」

これの意味が分かりません。
AutoHotkey.exeのショートカットの引数に/Debugをつけるとエラーになりますし
どうしろと言っているのでしょうか?
139名無しさん@お腹いっぱい。:2011/02/20(日) 18:47:36.59 ID:pNjsnC7U0
コマンドライン引数に /Debug 指定するだけ。

分かんないなら、AutoHotkey.exe を右ドラッグしてショートカット作る。
Alt+Enter か 右クリのプロパティでコマンドラインに /Debug を追加。
そのショートカットにデバッグ対象スクリプトを D&D。

てか、そこに書いてあることすら分かんないようじゃデバッグは厳しいと思うが
140名無しさん@お腹いっぱい。:2011/02/20(日) 21:21:30.73 ID:euvOUDK20
>>139
どうも。解決しました。
XDebugClientがAutoHotkeyJp用ではなかったのが原因でした。通常版を使っていた
141名無しさん@お腹いっぱい。:2011/02/21(月) 01:08:53.07 ID:TbF/Eqg30
>>123
できた。若干の条件付だけど悪くない
コピーするには右押してから300ms以内に左押さないといけない
右ドラッグするには右押してから300ms待たないといけない
マウスジェスチャとかとの競合は知らない


RButton::
SetTimer, nagaoshi, -300
RBtnDown=1
Return

nagaoshi:
RDrag=1
Send, {RButton Down}
Return
142名無しさん@お腹いっぱい。:2011/02/21(月) 01:09:39.50 ID:TbF/Eqg30
#IF RBtnDown

LButton::
SetTimer, nagaoshi, OFF
If( !RDrag ){
 RtoL=1
 Send, ^c
}
Return

RButton Up::
SetTimer, nagaoshi, OFF
If( RtoL )
 RtoL=0
Else If( RDrag ){
 Send, {RButton Up}
 RDrag=0
}Else
 Send, {RButton}
RBtnDown=0
Return

#IF
143名無しさん@お腹いっぱい。:2011/02/21(月) 07:02:45.80 ID:MjDtRBCm0
>>62,63
144名無しさん@お腹いっぱい。:2011/02/21(月) 22:11:29.13 ID:TbF/Eqg30
すげえww色々試して>>62と完全に同じ結論に辿り着いたんだw
すでに解明されてて俺意味ねえwww
しかもBlockInputあったらドラッグの誤爆防げるんだね
145名無しさん@お腹いっぱい。:2011/02/22(火) 02:31:14.40 ID:H3lonP3O0
↓俺のAutoHotKeyがこんなに可愛いわけがない
『俺の妹がこんなに可愛いわけがない』
第12話「俺の妹の人生相談がこれで終わるわけがない TRUE ROUTE」Web配信

【配信開始時期】 2011年2月22日(火) 12:00 〜 2011年3月8日(火) 12:00
【配信サイト】 ※全てのサイトで無料にて視聴していただけます。
◆「俺の妹がこんなに可愛いわけがない」アニメ公式サイト http://www.oreimo-anime.com/
◆ニコニコ動画 http://ch.nicovideo.jp/channel/ch639
◆ShowTime http://www.showtime.jp/genre/animation/
◆MovieGate モバイルサイト&i-Phone、i-Pad http://movie-gate.jp/
◆バンダイチャンネル http://www.b-ch.com/ttl/index.php?ttl_c=2809
146名無しさん@お腹いっぱい。:2011/02/22(火) 15:25:41.09 ID:njCiDHjY0
147名無しさん@お腹いっぱい。:2011/02/22(火) 23:16:55.90 ID:QOmTHbIH0
アプリごとに、「左クリック押しながら右クリック」したらアプリ専用のメニューが出るようにしてるんだけど、
これをホットキーでも呼び出せるようにしたい。

--------------------------------
#m::Send, {LButton Down}{RButton}{LButton Up}

#IfWinActive, Firefox
~LButton & RButton::FirefoxMenu()

#IfWinActive, Jane Style
~LButton & RButton::JaneMenu()
--------------------------------

しかし、このコードだと失敗する。(コンビネーションキーが上手く動いてない)
で、通常のホットキーなら Send でも発動するからそっちに統一したら何とか動く

--------------------------------
~LButton & RButton::Send, {F13}
#m::Send, {F13}

#IfWinActive, Firefox
F13::FirefoxMenu()

#IfWinActive, Jane Style
F13::JaneMenu()
--------------------------------

でもこれだと、どのキーを押すのかわかりにくい。("F13"だけじゃ何のキーかすぐに思い出せない)
できれば上のコードで運用したいんだけど、コンビネーションキーを上手くエミュレートする方法ってない?
148名無しさん@お腹いっぱい。:2011/02/22(火) 23:30:33.04 ID:HCowCsFx0
#IfWinActive, Firefox
#m::
~LButton & RButton::FirefoxMenu()
#IfWinActive, Jane Style
#m::
~LButton & RButton::JaneMenu()
単にこれじゃダメなのか?
149名無しさん@お腹いっぱい。:2011/02/22(火) 23:36:22.08 ID:njCiDHjY0
AHKで発行したキーを、AHKのホットキーラベルが拾えるのはキーボードを使ったホットキーだけ、
しかもフックを使っていないのに限る。(>>6 QA4)
マウスボタンは常にフックなので無理ということ。

やりたい処理を関数化してあるんだから、横着しないで #m を複数定義してやりゃいいだけじゃないの?
150名無しさん@お腹いっぱい。:2011/02/23(水) 01:13:53.43 ID:0baHJf8l0
>>148-149
レスthx.

コードの読み易さと手間を考えて、
#m::を一回書けばすべてのアプリに適用されるような書き方がしたかったんだけど、意外と面倒なのね

>>148氏の方法は初見で、色々応用効きそうなので使わせてもらいます
151147:2011/02/23(水) 01:15:49.33 ID:0baHJf8l0
あ、ID替わってた
152名無しさん@お腹いっぱい。:2011/02/23(水) 08:53:36.11 ID:RDl8/H8b0
どうしようもなくしょぼい質問なんですけど、教えてください。
ファイルオブジェクトを用いて、完全に上書きするにはどうしたら良いでしょうか。
下記の方法では、新しいデータが元データよりも小さいときに、ファイル末尾に
古いものが残ってしまいます。

file := FileOpen("test.txt", "rw")
str := file.Read()
file.Seek(0)
file.Write("new contents")
file.Close
153名無しさん@お腹いっぱい。:2011/02/23(水) 09:59:41.89 ID:zxfz08I+0
ファイルの先頭だけ書き換えたいときは逆に便利なんだけどな。

↑のままのやり方なら、Write したあとのポインタの位置までが有効なデータとなるっぽいんで、
 file.length := file.Position
とやって、そこまでのサイズで切り詰めちまえばいい。

あと、Close はメソッドだから Close() にしないと。
154名無しさん@お腹いっぱい。:2011/02/23(水) 15:58:36.47 ID:T40qBS+G0
上にも書いちゃってるんですが、
Pauseキーを修飾キー的な使い方がしたいです。
コンビネーションで
Pause & F::
みたいにしたいんだけど、キーの操作がおかしくなる。
155名無しさん@お腹いっぱい。:2011/02/23(水) 16:24:53.61 ID:gxJ9M9MJ0
>>154
#If GetKeyState("Pause","T")
f::hogehoge
#If
156名無しさん@お腹いっぱい。:2011/02/23(水) 19:19:01.78 ID:MG3kuiSG0
Autohotkeyでmypaintというお絵かきソフトを起動させて
そこにショートカットキーを送るものを作りましたが
mypaintを起動後、
普通にmypaintから「開く」の操作で画像を開くと
ショートカットキーを受け取ってくれますが
mypaintに画像ファイルをドラッグ&ドロップさせると
Autohotkeyからのショートカットキーが送れなくなりました。
これはどうすればいいのでしょうか???

157156:2011/02/23(水) 19:20:16.30 ID:MG3kuiSG0
#WinActivateForce
textname=%A_ScriptDir%\settei.txt
;mypaintの場所
FileReadLine, mpbasyo, %textname%, 1
SplitPath, mpbasyo ,mpname
Process, Exist,%mpname%
pid = %ErrorLevel%
if pid = 0
{
;↓mypaintの起動
Run, %mpbasyo%,,,pid
}
GroupAdd, mypaint, ahk_pid %pid%
WinActivate, ahk_group mypaint
WinWait, ahk_group mypaint
Gosub, Tool
WinWaitClose
ExitApp
;ツールウィンドウ作成
Tool:
Gui, +ToolWindow +AlwaysOnTop
Gui, Add, Button, x0 y0 w30 h30 gZkey, 戻る
Gui, Add, Button, x30 y0 w30 h30 gYkey, 進む
Gui, Show, x127 y87 w60 h150, ツール
Return
158156続き:2011/02/23(水) 19:20:57.74 ID:MG3kuiSG0
;「send,」の後を自分がmypaintに登録しているショートカットキーにする
;戻る
Zkey:
WinActivate, ahk_group mypaint
Send, z
Return
;進む
Ykey:
WinActivate, ahk_group mypaint
Send, y
Return
159名無しさん@お腹いっぱい。:2011/02/23(水) 19:56:18.90 ID:T40qBS+G0
>>155
ありがとうございます。
しかしよくわからず、やり方がわかりません。

http://www.autohotkey.com/wiki/index.php?title=Using_GetKeyState_to_Extend_Hotkeys
を読んでいますが、英語が読めないので、また分からない・・・。

どうやら3コンビネーションのホットキーや駄目キーでのホットキーが出来そうな
こと書いてあるんだけど・・・。
160156:2011/02/23(水) 20:29:41.81 ID:MG3kuiSG0
すいません、自己解決です。
とりあえず
mypaintの起動時に取得したpidじゃなくて普通にwintitle入れたら動きました
なんかもうすいませんでした。
;GroupAdd, mypaint, ahk_pid %pid%
GroupAdd, mypaint, MyPaint
161名無しさん@お腹いっぱい。:2011/02/23(水) 20:38:04.03 ID:zxfz08I+0
>>156
http://hibari.2ch.net/test/read.cgi/software/1280482227/653 の人かな

ってかもう解決してるからいいんだろうけど、一応。

このソフトみたいにパレットみたいな小窓があるやつだと、
プロセスIDに紐付く窓が複数存在する事になるから、
メインウィンドウを決め撃ちしなきゃってことになる。

>>160で書いた通りにやると対象がきっちり絞り込まれて動くようになる、と。
162名無しさん@お腹いっぱい。:2011/02/23(水) 21:01:34.19 ID:Uz7IjJsN0
; AutoHotKeyからWSCを使うサンプルです。JavascriptやVbscriptが詳しいひとは、WSHやHTA、HTABOXコア、テキストエディタのマクロなどで使う関数と共用出来て便利かも?
; 以下の変数wscscriptの部分をg.wscとして、このスクリプトと同じフォルダに保存して実行します。
objjs := ComObjCreate("ScriptControl")
objjs.Language := "JScript"
objjs.addCode( "function getobjectg(pwsc){return GetObject('script:'+pwsc);};" ) ;
p =%A_ScriptDir%\g.wsc
g := objjs.Run("getobjectg",p)

wscscript =
(
<?xml version="1.0" encoding="shift_jis" ?>
<component><?component error="true" debug="true"?><public>
<method name="popup"/>
<method name="init" dispid="0"/>
</public><implements type="Behavior" id="Behavior"/>
<script language="JScript"><![CDATA[
var oshl=new ActiveXObject('WScript.Shell');
function popup(smes,nsec){return oshl.popup(smes,nsec);};
function init(othis){
if(typeof(othis.location)=='object'){location=othis.location;
}else if(typeof(othis.WScript)=='object'){WScript=othis.WScript;
};return this;
}; ]]></script></component>
)
g.popup(wscscript) ;
163名無しさん@お腹いっぱい。:2011/02/23(水) 23:34:19.03 ID:hxVowOOgP
入門者レベルのスクリプトですが教えてくだされ。
USキーボード使うてます。
F1`キーに、左Alt+`(日本語キーボードだと、半角全角に当たるキー)
を割り当てるにはどうしたらいいですか?
同時に押すんじゃなくて、左Alt(押しっぱなしで) ` を押す、
という挙動にしたいです。
164名無しさん@お腹いっぱい。:2011/02/23(水) 23:54:12.72 ID:MG3kuiSG0
>>161
そうです、同じ人物です。
解説ありがとうございます。
何でこうなのかよく分からなかったのでたすかりました!
165名無しさん@お腹いっぱい。:2011/02/24(木) 06:50:01.35 ID:Ify1/SzO0
>>153 ありがとうございました。大変参考になりました。
結局このようにやって、うまくいきました。

str := file.Read()
file.Length := 0
file.Write("new contents")
file.Close()
166名無しさん@お腹いっぱい。:2011/02/25(金) 01:26:23.93 ID:MU+gEzNn0
質問です
後方一致(部分一致で問題ないと思います)で
ウィンドウを指定するにはどうしたらいいですか?
SetTitleMatchMode, 2
をどこに書けばいいんですか??

WinActivate,
だと一致する文字列が指定できませんよね???
167166:2011/02/25(金) 01:34:06.13 ID:MU+gEzNn0
すいません、自己解決。
別に行の手前に書いておけばいいんですね・・
168名無しさん@お腹いっぱい。:2011/02/25(金) 01:36:28.93 ID:3Ra6Bkup0
スクリプト全体に影響を及ぼしたいなら、Autoexecセクションに。
分かんないなら1行目に書く。

現在の一連の操作だけに影響を及ぼしたいなら、直前の行でいい。


例えばメモ帳を素で起動すると「無題 - メモ帳」のタイトルになるが
  WinActivate, メモ帳
だと通らない。これはデフォルトで前方一致なため。
逆に、その直前にマッチモードを指定してやれば通るようになる。
  SetTitleMatchMode, 2
  WinActivate, メモ帳

ちなみに RegEx を指定してきっちりと後方いっちにするって手もある
  SetTitleMatchMode, RegEx
  WinActivate, メモ帳$
169名無しさん@お腹いっぱい。:2011/02/25(金) 01:36:54.79 ID:3Ra6Bkup0
無駄足w
170名無しさん@お腹いっぱい。:2011/02/25(金) 01:42:15.44 ID:umcPdiwq0
>>169
半年ROMってる初心者には参考になっておりますよ
171名無しさん@お腹いっぱい。:2011/02/25(金) 01:51:36.60 ID:NOULXWdp0
>>168
>ちなみに RegEx を指定してきっちりと後方いっちにするって手もある
横レスだがその手は思いつかなかった
thnx
172名無しさん@お腹いっぱい。:2011/02/25(金) 02:01:25.60 ID:MU+gEzNn0
説明ありがとうございます。
すいません、もうひとつ質問です。
ここの部分に入ったらマウスの右クリック押しっぱなしを
スペース押しっぱなしにしたいのですが
どうしたらいいのでしょうか??

Spacekey:
 WinActivate, ahk_group honyarara
 ここ
 Return
173172:2011/02/25(金) 02:22:26.80 ID:MU+gEzNn0
LButton::Spaceにしたら常にLButtonを押したときはSpaceになってしまいます。
その時だけSpaceにするいには(例えば解除ボタンをクリックしたら戻るとか)
どうしたらいいのでしょうか??
174名無しさん@お腹いっぱい。:2011/02/25(金) 02:35:51.58 ID:lLyutHO80
ここはおまえの日記帳じゃry
それにおまえには問題解決力もあるだろ?
>>1のリファレンス読めばすぐ解決するさ
#IfWinActiceとか#If(ahk_専用)あたりだ
ahkでキー操作以外に何ができるかもよく分かるだろう
175名無しさん@お腹いっぱい。:2011/02/25(金) 03:38:10.89 ID:lpL9oMBM0
質問させてください。
キーリピートを無視したい場合どうすればいいのでしょうか。
キーを押下した時にだけ操作が発生し、押し続けている間は何も起きないようにしたいです。
Numpad0 up::
の要領で
Numpad0 down::
とやってみたのですがダメでした。
初回KeyDownにのみ呼応する方法、よろしくお願いします。
176名無しさん@お腹いっぱい。:2011/02/25(金) 03:41:06.85 ID:r6PtuCBx0
すいません、おしえてください。
トリプルコンビネーションを動かそうとしているのですが、
その組み合わせに無変換キーを入れると動かなくなります。
どうやればいいのかおしえてください

^vk1Dsc07B::
^Z::
if ((A_ThisHotkey = "^vk1Dsc07B" and GetKeyState("Z")) or (A_ThisHotkey = "^Z" and GetKeyState("vk1Dsc07B")))
{
MsgBox, Hotkey successfully activated.
}
return
177名無しさん@お腹いっぱい。:2011/02/25(金) 20:24:37.92 ID:Z5U2DCP00
>>175
例えば以下のようにするとダイアログが出るが、OKを押して該当ホットキーの一連の
処理が完了するまで Numpad0 を連打しても何も起きない。
  Numpad0::MsgBox
デフォルト設定の場合、ホットキーラベルが同時に処理できるのは1つまでとなっているためである。
( #MaxThreadsPerHotkey の項目を参照 )

この原理を利用して、キー押下解除までホットキー処理が終わらないようにすれば、キーリピート処理を抑制できる。

Numpad0::
  ; やりたい処理
  KeyWait, Numpad0
  Return

他にもフラグを用いてどうにかするという手もある。

#If (NP0)
Numpad0::Return ; 一度処理したらキー押下解除があるまでこちらに流れる
#If
Numpad0::
  NP0 := True
  ; やりたい処理
  Return
Numpad0 Up::NP0:=False
178名無しさん@お腹いっぱい。:2011/02/25(金) 20:32:12.48 ID:MU+gEzNn0
Autohotkey_Lですが
MouseGetPos, mX , mY, OutputVarWin, OutputVarControl ,AltMethod
Msgbox %OutputVarWin%
とやったら全角の日本語のウィンドウのタイトルじゃなくて
0x10a22とでました。
全角の日本語のウィンドウのタイトルはどうやったらでますか?
179名無しさん@お腹いっぱい。:2011/02/25(金) 20:39:19.77 ID:Z5U2DCP00
>>176
方法1) Hotkeyコマンドで一時的にホットキー定義を置き換える方法で実現
Hotkey, ^z , DefaultAction
Hotkey, ^vk1Dsc07B, DefaultAction

DefaultAction:
 key := (A_ThisHotkey = "^z") ? "^vk1Dsc07B" : "^z"
 Hotkey, %key%, CombiAction
 KeyWait, % RegExReplace(A_ThisHotkey, "^\W+")
 Hotkey, %key%, DefaultAction
 Return

CombiAction:
 MsgBox, Hotkey successfully activated.
 Return

方法2) 原理的には方法1と〃だが #If で実現
#If (A_ThisHotkey = target)
^z::
^vk1Dsc07B::
 MsgBox, Hotkey successfully activated.
 Return
#If
^z::target:="^vk1Dsc07B"
^z Up::target:=
^vk1Dsc07B::target:="^z"
^vk1Dsc07B Up::target:=

180名無しさん@お腹いっぱい。:2011/02/25(金) 20:40:08.95 ID:Z5U2DCP00
>>178
取れるのはウィンドウハンドル(ウィンドウID)なので WinGetTitle で取得。
181名無しさん@お腹いっぱい。:2011/02/25(金) 20:41:10.47 ID:Z5U2DCP00
>>180
伝わらんかも試練から、補足。
その 0xNNNNN ってのを利用して改めて WinGetTitle を使ってタイトルを別途取得。
182178:2011/02/25(金) 20:58:11.24 ID:MU+gEzNn0
MouseGetPos, mX , mY, OutputVarWin, OutputVarControl ,AltMethod
WinGetTitle,title,%OutputVarWin%
Msgbox %OutputVarWin%=%title%
とやってみましたがMsgboxが
0X1808e2=
のみ表示になってしまいました
なにがおかしいのでしょうか??
183名無しさん@お腹いっぱい。:2011/02/25(金) 21:23:38.87 ID:Z5U2DCP00
> 取れるのはウィンドウハンドル(ウィンドウID)

書かれた事以外にもマニュアル読むことはしようぜ
184名無しさん@お腹いっぱい。:2011/02/25(金) 21:32:30.27 ID:r6PtuCBx0
>>179
詳しく書いてくださってありがとうございます。
貼り付け方がわからないためか、方法1のほうは動作確認できませんでした。
一方、方法2のほうは動作確認できました。msgでました。

たいへんわがままなのですが、僭越ながらコメントを。

>>176で書かせていただいたスクリプトは、修飾キーを押しながら
残りの2キーを押す順番がどちらが先でも起動するという趣旨のものでした。

しかし>>179さんが示してくださった方法ではおそらく、決まった順序で
キーを押したときしかmsgがでない方法だと思います。

予め、趣旨のことを書くべきでした。
しかし、無変換を使用したトリプルコンビネーションが使えて有り難いです。

スクリプト書いてくださって有難う御座いました。
185名無しさん@お腹いっぱい。:2011/02/25(金) 21:43:10.69 ID:eJaHpR4s0
>>176
こういう動作?

^vk1Dsc07B::
If getkeystate("z", "P")
testmsgbox()
return

^z::
If getkeystate("vk1Dsc07B", "P")
testmsgbox()
return

testmsgbox() {
MsgBox, Hotkey successfully activated.
}
186名無しさん@お腹いっぱい。:2011/02/25(金) 23:42:02.57 ID:MU+gEzNn0
あっっ・・・んっ・・・もっげ・ん・か・いっっ







すいません
マジでボスケテくださいOTLOTL
#If sw=1でマウスの左クリックをスペースにする事ができましたが
ボタンがあるウィンドウの上にきてボタンをクリックすると
「マウスの左クリックをスペースにする」を解除したいんですが・・・
どうしたらいいんでしょうか?

恐らくMouseGetPos, mX , mYをループ無限ループさせて
常にマウスの座標を常にとってボタンのウィンドウの上にマウスがきたら
「マウスの左クリックをスペースにする」を解除して
ループから出てsw=0にすればいいかと思うんですけど
For ループのパラメータの説明の意味がまったく理解できなくて困ってます。


#If sw=1
sw=1
LButton::Space
WinGetPos , X, Y, Width, Height, ボタン
MouseGetPos, mX , mY

If X < mX & X+Width > mX
 If Y < mY & Y+Height > mY
  sw = 0
187名無しさん@お腹いっぱい。:2011/02/25(金) 23:53:35.06 ID:r6PtuCBx0
>>185
有難うございます!無事できました!
Ctrlと無変換の押し順序関係なく行けます。
助かりました。

testmsgboxを任意のものに置き換えてやってます。

ただ私、素人なのでちょっと分からないので、
おそらくコレに関係ない初歩的な問題でしょうが、

Ctrlを右のCtrlを使用したときに、右のCtrlを
押しっぱなしだと発動しないということです。
左Ctrlは問題なく発動してくれますが。

有難う御座いました。ほんと助かります。
188名無しさん@お腹いっぱい。:2011/02/26(土) 00:13:47.72 ID:S1p+AZ5K0
autohotkeyからプログラムを実行してその返値を取得するようなことはできますか?
具体的には、コマンドプロンプトから実行するようなもの(例えばdirコマンド)を実行して、その結果を取得したものをautohotkeyで直接受け取れればいいのですが

ダミーのテキストファイルを経由してやりとりすることをまず考えましたが
autohotkeyと外部アプリ間で直接やりとりできれば効率的だと思いましたので
189186:2011/02/26(土) 00:34:17.76 ID:FB63iWjs0
すいません、whileでなんとか解決できたんですが
やはりwhileのループから抜け出れません・・・
アドヴァイスお願いします・・・
 #If sw=1
 sw=1
 LButton::Space
 While sw=1{
  WinGetPos , X, Y, Width, Height, ツール
  MouseGetPos, mX , mY, OutputVarWin, OutputVarControl ,AltMethod
   If (X < mX & X+Width > mX)
   {
    If (Y < mY & Y+Height > mY)
     {
     sw = 0
     }
   }
  }
190名無しさん@お腹いっぱい。:2011/02/26(土) 00:46:50.66 ID:S1p+AZ5K0
>>189
sw = 0の直後に抜けるというなら
break
http://sites.google.com/site/autohotkeyjp/reference/commands/Break
を書けばいいのでは?
191186:2011/02/26(土) 01:05:04.02 ID:FB63iWjs0

なんかループを出れない原因がわかりました。
WinGetPos , X, Y, Width, Height, ツール
MouseGetPos, mX , mY
Msgbox X=%X% mX=%mX%
#If sw=1
LButton::Space
だとMsgboxが表示されるのに
#If sw=1
LButton::Space
WinGetPos , X, Y, Width, Height, ツール
MouseGetPos, mX , mY
Msgbox X=%X% mX=%mX%
だとMsgbox自体が表示されません
これはどうしたらいいのでしょうか??
192名無しさん@お腹いっぱい。:2011/02/26(土) 01:15:00.10 ID:FB63iWjs0
>>190
アドヴァイス有難うございます
でもじつはまだループにすら入ってなかったですOTL
193名無しさん@お腹いっぱい。:2011/02/26(土) 01:24:18.10 ID:9t4kRLPO0
せっかく #If 使ってんだから、クリック発生時のときだけマウス直下の情報を調べればいいんで、
ループなんぞする必要はないよ。

あと、ウィンドウタイトルってかなり曖昧ってことを知っておこうぜ。
「ツール」ってフォルダをエクスプローラで開いていたら、タイトルは「ツール」になって判別つかない。

ウィンドウを一意に識別できる唯一の手段がウィンドウハンドル(ID)なんで、それを使って厳密にやった方がいい。
お絵かきソフトの自作ツールバーの人だと思うけど、自前のGUIならハンドル取るのはたやすい。

; 以下の2行を Gui, Add, ... の後ろあたりに入れて、GUIのハンドルを変数に入れておく
Gui, +LastFound
HwndToolbar := WinExist()

; これ以降はホットキー定義
#If MouseIsOverMyToolbar(HwndToolbar) ; 単一式でどうにもならない場合は関数でやる
LButton::Send, {Space}
#If

; あらかじめ取得しておいた GUI のハンドルと マウス直下のウィンドウのハンドルを比較
MouseIsOverMyToolbar(target) {
 MouseGetPos,,, hwnd ; マウス下の窓だけ分かればいい
 Return (hwnd == target)
}


※ 一番大事な事はスクリプトの流れをきちんと知れ。この辺でも読んでおくといい。
http://sites.google.com/site/agkh6mze/howto/scripting
194名無しさん@お腹いっぱい。:2011/02/26(土) 01:52:37.63 ID:FB63iWjs0
>193
解説有難うございます。
じっくり読んでみます。
もしかして・・・ループにすら入って無かったのは
MouseGetPosはクリックしたら発動なのに
左クリックがスペースに置きかえられているから
MouseGetPosが発動しないというオチなのかああああ

195名無しさん@お腹いっぱい。:2011/02/26(土) 02:39:35.45 ID:9t4kRLPO0
まったく的外れ。オチも何もない、調べるところはちゃんと調べれ。それだけ。
196名無しさん@お腹いっぱい。:2011/02/26(土) 05:02:05.79 ID:FB63iWjs0
>195
有難うございます
改行だったんですね、この違いは・・・
こんな感じになりました。
ただ
LButton::Space
だと長押しとかマウス左クリックを押している間Spaceが押されているのですが
(当然ながら次の行にいかない)
LButton::
  Send,{Space}
だと一回押されてるだけっぽいのですが
どうしたらLButton::Spaceと同じ動きで次の行もちゃんと実行されるのでしょうか??
LButton::
  Space
だとエラーが出ますしどうしたものかと・・・OTL
Tenohira:
 WinActivate, ahk_group mypaint
 sw=1
 #If sw=1
  LButton::
   Send,{Space}

  If MouseIsOverMyToolbar(HwndToolbar) ; 単一式でどうにもならない場合は関数でやる
sw=0
  ; あらかじめ取得しておいた GUI のハンドルと マウス直下のウィンドウのハンドルを比較
  MouseIsOverMyToolbar(target) {
   MouseGetPos,,,hwnd ; マウス下の窓だけ分かればいい
   Return (hwnd == target)
  }
 #If
 Return
197名無しさん@お腹いっぱい。:2011/02/26(土) 11:46:26.80 ID:lLtS88dm0
標準出力に関してなんですが、
今まで海外フォーラムにあるDllCallを使ったものを利用してましたが
>>28を見てCOMオブジェクト?を使うとこんなに短くなるんだと驚きました
これ一瞬コマンドプロンプトが見えるのですが、
何も表示しない様にするにはどうしたらいいのでしょうか?
198名無しさん@お腹いっぱい。:2011/02/26(土) 12:45:25.45 ID:L2Mgage90
ん〜、>>28にも書いた通りで、基本的に非常時にはできないんだよね。

ただ、AHK自信がコンソールアプリになっちまえばいいんで
DllCall("AllocConsole")
ってやるとコンソールがでるんで、それ以降のコンソールアプリは別窓が出なくなる。

まー、これじゃ本末転倒なわけで、標準出力を得て加工して終わりってちょっとしたツールなら
全く意味がない。

常駐アプリだったら、

DllCall("AllocConsole")
Process, Exist
WinWait, ahk_class ConsoleWindowClass ahk_pid %ErrorLevel%
WinHide

ってやると一瞬出てるけど消せるんで、起動時に一階だけ我慢すればあとは出さないで済むって感じにできる。
199名無しさん@お腹いっぱい。:2011/02/26(土) 12:49:21.89 ID:L2Mgage90
それにしても誤字脱字がヒドいなw
200名無しさん@お腹いっぱい。:2011/02/26(土) 17:54:16.33 ID:lLtS88dm0
>>198
ありがとうございます、
やっぱり基本的に非表示は無理でしたか。
常駐させる使い方はしてないので素直にDllCallにしておきます。
今後他で常駐させる必要が出てきた場合には参考にさせて頂きます。
201186:2011/02/26(土) 19:46:49.18 ID:FB63iWjs0
すいません、どうしてもうまくいきません
アドヴァイスお願いします。
Tenohira:に入った時に
マウス左クリックをSpaceキーにして
その際、ツールウィンドウの上に来たときはSpaceキーを解除したいのです。
自分としてはTenohira:に入った時にsw=1というフラグを立てて
その時だけマウス左クリックをSpaceキーにするような内容にしようとしたのですが
色々いじってもどうもうまく動きません。
#IF内でループを組まずMouseIsOverMyToolbar(target) の関数の中で
条件付けをすればいいのかと思って
If sw=1等入れてみたのですがうまくいかないです・・・

Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 ; これ以降はホットキー定義
 #If MouseIsOverMyToolbar(HwndToolbar) ; 単一式でどうにもならない場合は関数でやる
 If sw = 1
  LButton::
   Send,{Space}

 #If
  ; あらかじめ取得しておいた GUI のハンドルと マウス直下のウィンドウのハンドルを比較
 MouseIsOverMyToolbar(target) {
  MouseGetPos,,,hwnd,test ; マウス下の窓だけ分かればいい
  Return (hwnd != target)

  }
 Return
202名無しさん@お腹いっぱい。:2011/02/26(土) 20:24:53.25 ID:L2Mgage90
グチャグチャしすぎて何したいかがスクリプトから全く見えてこない。
そのまま貼ったコメントも不適当。

ってか、↑は実質↓と同じ。

Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 If sw = 1
  LButton::
   Send,{Space}
 Return


どうしてそうなるかはきちんとマニュアルに書いてある。
ってか、#If のページとか読んでないでしょ。
203名無しさん@お腹いっぱい。:2011/02/26(土) 20:29:39.24 ID:L2Mgage90
あ、違った。もっとヒドいか。

Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 If sw = 1
  Return

だな。

貼り付けた所だけのスクリプト作って実行してみれば分かる。
直近に実行された行と、ホットキー定義はトレイアイコン操作してメインウィンドウ開けば見られる。
204名無しさん@お腹いっぱい。:2011/02/26(土) 22:55:17.58 ID:FB63iWjs0
#Ifのページ読んでこれなんですよ・・・
うyわあああああん
こうですか・・・
Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 #If sw=1
 LButton::
   Send,{Space}
 #If
while(MouseIsOverMyToolbar(HwndToolbar)){ ;ツールウィンドウの上では左クリックは普通の左クリック
  
   sw = 0
   }
 MouseIsOverMyToolbar(target) {

MouseGetPos,,,hwnd,test ; マウス下の窓だけ分かればいい
Return (hwnd != target)

}
 Return
205名無しさん@お腹いっぱい。:2011/02/27(日) 00:02:57.80 ID:FB63iWjs0
ここまでやってみたですが
ツールウィンドウの上でクリックしたときにやっぱり
左クリックがスペースにならないです・・・
なにが・・・おかし・・いで・・・すか・・・OTL
Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 #If sw = 1
 LButton::
    Send,{Space}
 #If

 while(sw=1){
  If MouseIsOverMyToolbar(HwndToolbar)
   sw = 0
   break
  }

 MouseIsOverMyToolbar(target) {
  MouseGetPos,,,hwnd
  Return (hwnd == target)
  }
 Return
206名無しさん@お腹いっぱい。:2011/02/27(日) 00:27:58.30 ID:EaDNfPFc0
方針は分からなくもないし、論理としての方向性はまちがってなさそう。
ただ、スクリプトに対する理解が 絶 対 的 に 足 り て な い 。

それに、殆ど代わり映えに無い動かないスクリプトばかり貼るのはどうかと思う。
もっと、じっくり考えてからレスしようぜ。

マニュアル読んでるといってるけど、ページ下部のサンプル動かしたりしてないんだろう。
そういうのも含めて「読め」ってことだよ。

急がば回れだ。
207名無しさん@お腹いっぱい。:2011/02/27(日) 00:54:50.27 ID:/UT/Z5GV0
うーん、じつはやってるしスクリプトの動きは
こうなるんだなっていうのは分かるんですけど
「スクリプトに対する理解が 絶 対 的 に 足 り て な い 。」
だと思います。
もうそれ以前の問題で・・・
「#IfWin〜 ディレクティブに似て、#If は位置を指し示すもので、以降のスクリプトに記述されたホットキーとホットストリングが有効かどうかに影響を与える。
つまり #If と #IfWin〜 は排他的であって、直上の #If または #IfWin〜 が実効性を持つ。 」
実はこの文章の意味すらまったく理解できてないです
なにを言ってるかまったく分からないです・・・
208名無しさん@お腹いっぱい。:2011/02/27(日) 01:19:37.56 ID:/UT/Z5GV0
具体的に質問ですけど
パラメータの無い#Ifは一体なんでしょうか??
例3と比較しても例4の6行目がエラーで動かないので分からないんですが・・・
209名無しさん@お腹いっぱい。:2011/02/27(日) 03:15:28.80 ID:UujhPftF0
プログラムまったくわからないのですが、キーボードのキーを押したら、指定のファイルが指定のフォルダに移動してくれるような
ものがあれば便利だと思って、このソフトを試してみました。
質問なんですが、Gのキーを押したら、すべてのファイルを、移動するコマンドって
g::
FileMove, C:\My Folder\*.*, C:\My Folder1\*.*
return
でいいんでしょうか?動作したのでいいんだと思うのですが、自信がなくて聞いてみました。。
あと、ウィンドウズで、フォルダの中の、選択したファイルだけを移動したいのですが、どういうコマンドを使うのでしょうか?
全部選ぶっていうコマンドが * アスタリスクで指定できることはわかったのですが、 指定したファイルだけを移動っていうのがわからなくて。
210186:2011/02/27(日) 03:25:23.22 ID:/UT/Z5GV0
ごめん解決した


Dkey:
 sw = 0 ;他のボタンを押したら左クリックをSpaceにしない
 WinActivate, ahk_group mypaint
 Send, d
 Return


Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1;ここでsw=1にして左クリックがSpaceの条件を一個満たす

 #If sw=1 and MouseIsOverMyToolbar(HwndToolbar)
  ;↑ここに&でsw=1を付け足せばいいだけだったOTL
  LButton::Space


 MouseIsOverMyToolbar(target) {
  MouseGetPos,,,hwnd ; マウス下の窓だけ分かればいい
  Return (hwnd != target):ツールウィンドウの外のときに左クリックがSpaceの条件を一個満たす

  }
  Msgbox超お騒がせしました。本当にすいませんでした
  Return
211名無しさん@お腹いっぱい。:2011/02/27(日) 03:52:13.37 ID:rqgddGb60
ID:/UT/Z5GV0
どうしてスクリプトなんか書こうと思ったの?
212ID:/UT/Z5GV0:2011/02/27(日) 04:16:59.18 ID:/UT/Z5GV0
>>211
話が長くなるけど
もともとMyPaintという
好きなお絵かきソフトがあって
それの独自形式のファイルを
フォトショップのPSDファイルに変換したくなって、
半年ぐらい頑張ってなんとか変換ソフト作ったんです。

そのあと、その好きなお絵かきソフトを使いながら
そのPSDの読み込み書きだしをして
他の画像変換ソフトと連携がしやすいような
(Mypaintには画像の変形とかいう機能がまったく付いていない)
ユーザーインターフェースを追加したかったんです。

213名無しさん@お腹いっぱい。:2011/02/27(日) 05:21:09.77 ID:rqgddGb60
半年かけて…っていうのは沢山の助言を受けてじゃない?
今のあなたの姿勢を見ていると、時間さえあれば完成するって訳じゃなさそうだから。

人に手取り足取りやり方を教えるのは
自分でとっとと仕事しちゃうより難しいんだよ。
214ID:/UT/Z5GV0:2011/02/27(日) 06:22:19.80 ID:/UT/Z5GV0
そうですね、2ちゃんでものすごく教えて貰いました。
基本的にBasicとCは実務経験がありますが
改造するとか読んで流れを頭にたたき込んでおく為で
>207で書いたようにプログラムの用語とか分かんないです。

最初、こんなフリーソフト作って下さいスレで依頼したら、
やれば出来る、自分でやれって言われて
ヒント貰って初心者スレに行って・・・って感じで
ほぼRPGお使いゲームみたいな流れでしたね・・・・

とりあえずMyPaintスレに投下した完成ソフトはこれです。
http://www1.axfc.net/uploader/Li/so/91757.zip
本当にお騒がせ&お世話になりました。
215名無しさん@お腹いっぱい。:2011/02/27(日) 08:46:25.62 ID:EaDNfPFc0
え゛、C使った事あるんかい。
なら、AHK の #If は C の #ifdef とかと同じプリプロセッサみたいなもんだと分かりそうなもんだが。
216名無しさん@お腹いっぱい。:2011/02/27(日) 09:01:20.28 ID:EaDNfPFc0
>>209
あってるよ。
ファイルの指定の仕方は、ファイルパスをそのまま書くだけでいい。
複数指定したいなら、面倒でもその分だけコマンドを並べてやる必要がある。
217名無しさん@お腹いっぱい。:2011/02/27(日) 10:39:07.21 ID:/UT/Z5GV0
>>215
実際みたプログラムに無かったのかもとしか・・・。
一般的なプログラムでも無かったですし・・・。
#が付くなんて#インクルード(綴りすら覚えてない)ぐらいしか
覚えてないですし・・・。
まあ、そんなレベルですよ。
218名無しさん@お腹いっぱい。:2011/02/27(日) 15:01:21.71 ID:p05EqjHp0
#Ifwinactive で複数のアプリを同時指定することはできますか?
219名無しさん@お腹いっぱい。:2011/02/27(日) 15:13:46.21 ID:EaDNfPFc0
>>218

1) GroupAdd でグループに追加して ahk_cgoup を指定
 GroupAdd を実行しないと該当グループは空のままなので、
 Autoexecセクションに GroupAdd を記述するなどしてやる必要がある

GroupAdd, Explorer, ahk_class CabinetWClass
GroupAdd, Explorer, ahk_class ExploreWClass
Exit ; Autoexecここまで
#IfWinActive, ahk_group Explorer
Space::MsgBox, エクスプローラ


2) 正規表現で指定する
 ただし、Autoexecセクションで 「SetTitleMatchMode, RegEx」 してやる必要がある。

SetTitleMatchMode, RegEx
Exit ; Autoexecここまで
#IfWinActive, ahk_class (?:Explore|Cabinet)WClass
Space::MsgBox, エクスプローラ
220名無しさん@お腹いっぱい。:2011/02/27(日) 15:52:20.10 ID:K+0GU3nW0
>>219
できました!分かりやすく大変ありがとうございました <(_ _)>
221名無しさん@お腹いっぱい。:2011/02/27(日) 17:18:20.45 ID:FlTUhvdp0
ハンドル(?)がahk_class SunAwtFrameであるソフトが複数ある場合、そのうちのひとつを
特定して起動したりアクティブにすることはどうやれば可能でしょうか?
ただし、タイトルのなかに固定した語句がなくて、タイトルのほうでも指定できなくて困ります。
2chブラウザV2Cのことなんですけど。
御知恵を拝借できれば幸いです
222名無しさん@お腹いっぱい。:2011/02/27(日) 17:57:10.14 ID:EaDNfPFc0
クラス名だぬ
起動は普通に .exeや .lnk をRunすりゃいいだけじゃないかね。

Java や Adobe AIR で作ったものなどクロスプラットフォーム製品は厄介な事が多くて、
情報が殆ど取れない。
複数ウィンドウから目当てのものを特定するための手段として残っている汎用的な手法は
プロセスIDで更に絞り込みをするくらい。

ただし、1プロセスに複数ウィンドウがあり、それらのクラスが全部同じ場合は判別がつかない。
その際に、WinActivateの第3引数の除外タイトルなどを上手く使えば余計なのは除外できるかもしれない。

Process, Exist, 調べたいプロセス名
PID := ErrorLevel
WinActivate, ahk_class SunAwtFrame ahk_pid %pid% ; クラスとプロセスIDで二重に絞り込み。


※ Java で java.exe を叩いている場合はもっと厄介で、プロセス名が全部おなじになる。
その場合は、COM経由でコマンドラインから PID を調べてやるなどをしてやらないといけない。

; コマンドラインからPIDを調査する関数。matchModeに1を指定すると中間一致。
GetPidFromCommandLine(commandLine, matchMode=0) {
 For p in ComObjGet("winmgmts:").ExecQuery("SELECT processId FROM Win32_Process WHERE CommandLine " (matchMode ? "LIKE '%" commandLine "%'" : "='" commandLine "'"))
  Return p.processId
}
223名無しさん@お腹いっぱい。:2011/02/27(日) 22:02:27.72 ID:FlTUhvdp0
>>222
レスありがとうございました。すごい難しそう。
これ聞かないと絶対むりですね。

ちょっとタスクマネージャーをみたところ、
プロセス名がV2Cとほかのjavaソフト(?)で同じでした。
もっと厄介なパターンみたいですね。

その難しい文字列をどうつかっていいのかわかりませんが、これから格闘してみます。
ありがとうございます。PIDがわかったところでその先、見当つきませんが。

ちなみに、「起動していないなら起動、既に起動してるならアクティブ」をやりたいのです。
ありがとでした
224名無しさん@お腹いっぱい。:2011/02/27(日) 22:33:06.12 ID:keFGfV0/0
autohotkeyからCOMを操作できる人は
他のプログラミング言語に精通しているのかな
basicとautohotkeyしかできない私にとっては驚きの機能ばかりです
すごいですね
225名無しさん@お腹いっぱい。:2011/02/27(日) 23:55:10.83 ID:CkrSeCK+0
先へ進むんだ


ノートPCにPgUp, Homeとかが欲しくなる
 ↓
コンビネーションも使えるAHKでリマップすることに
 ↓
最前面表示のトグルとか便利だから組み込みコマンドを使い始める
 ↓
InputBoxじゃ不満になってGUIに手を出しAHKに翻弄される
 ↓
一通りAHKを理解し、小物のexeを作りまくる
 ↓
常駐ソフトをすべてAHKで代替するべくSendMessageやDllCallを使い始める
 ↓
オブジェクトを使いこなすためにJavaScriptを学び始める
226名無しさん@お腹いっぱい。:2011/02/28(月) 00:52:50.28 ID:46Pp3Lej0
>一通りAHKを理解し、小物のexeを作りまくる

俺、いまにまさにここ

dllは独自に使いたいけど全く意味がわからない
dllcallのサンプル書いてくれた人のスクリプトを丸ごとコピペして使ってる

ちょっと自分でいじろうとすると必ず返答がnullになって愕然とする
227名無しさん@お腹いっぱい。:2011/02/28(月) 01:08:16.56 ID:ovVX3/ps0
DllCallは使えるようになるまで1年以上かかった。
いじっては動かず、いじっては動かず、の繰り返し。トライ&エラーは数知れず。
228名無しさん@お腹いっぱい。:2011/02/28(月) 03:57:36.21 ID:1NNFFOIJ0
プログラミング歴そこそこ長いけどWinAPIとかCOMとかどうやって勉強すればいいのかもわからん
229名無しさん@お腹いっぱい。:2011/02/28(月) 05:55:28.72 ID:O1fN0ZG/0
常駐ソフトのほとんどをAHKで置き換えることができない俺
Proxomitronとかどう考えても無理だwww
230名無しさん@お腹いっぱい。:2011/02/28(月) 07:23:16.42 ID:1NNFFOIJ0
いまのバージョンのAutohotkey_LでURLエンコードする方法を教えてください
231名無しさん@お腹いっぱい。:2011/02/28(月) 07:34:33.99 ID:ovVX3/ps0
StrPut で指定文字列を指定エンコードに変換してバッファに書き込み、
バッファのデータを NumGet または *(addr) で1バイト毎に参照して、
そのコードを15進数に置換して文字列として追記格納。
232名無しさん@お腹いっぱい。:2011/02/28(月) 15:03:51.16 ID:eCV3tF/E0
このソフトのお陰でJavaのGoFデザインパターンを勉強せざるをえなくなったじゃねぇか・・・orz
233名無しさん@お腹いっぱい。:2011/02/28(月) 16:37:18.69 ID:NYUfAEeUi
GoFってあったっけ?と
Chain of Responsivilityみたいなやつの略語かと一瞬考えちまった。
234名無しさん@お腹いっぱい。:2011/03/01(火) 00:32:01.16 ID:BFiuYPb80
>>216 ありがとうございます。まるでわからないことだらけですが少しづつ消化していきたいなとおもいます。
またわからないときは質問させていただきたいとおもいmす。
235名無しさん@お腹いっぱい。:2011/03/01(火) 03:55:44.62 ID:0vFLdOs/0
AutoHotkeyで下駄配列みたいなのを作ろうとしたけれど、同時押しシフトを複数定義すると単打ができなくなる。
原因と解決方法を教えてくれ。
dをシフトキーにした例
$d::Send,d
d & $q::Send,dq
d & $w::Send,dw
d & $e::Send,de
d & $r::Send,dr
d & $t::Send,dt
d & $a::Send,da
 ・
 ・
 ・
$q::Send,q
$w::Send,e
$e::Send,e
$r::Send,r
$t::Send,t
$a::Send,a
 ・
 ・
 ・
q & $d::Send,dq
w & $d::Send,dw
e & $d::Send,de
r & $d::Send,dr
t & $d::Send,dt
a & $d::Send,da
 ・
 ・
こうするとなぜかqやwやeなどが単打で何もでなくなる。
236名無しさん@お腹いっぱい。:2011/03/01(火) 04:02:04.96 ID:QkTRwwEM0
>>235
それってコンビネーションキーの仕様じゃないか
チルダ「~」つけないと一つ目のキーは無効化されるって書いてあるぞ
237名無しさん@お腹いっぱい。:2011/03/01(火) 05:03:12.98 ID:0vFLdOs/0
それはそうなんだが、無効化された後に再び無効化されたキーを定義すると(上のスクリプトの$d::Send,dとか、$q::Send,qとかのぶぶんね)
新たに定義されたキーが有効になるはずなんだが、
キー定義が増えてくると(?)それが効かなくなるんだよね。
dvorakjの人は一体どうやってるんだろう?
238名無しさん@お腹いっぱい。:2011/03/02(水) 00:25:28.18 ID:SGwEtAAf0
>>237
dvorakjの同時打鍵の原型は http://hibari.2ch.net/test/read.cgi/pc/1201883108/282 がアップロードしているautohotkeyのスクリプト
(.ttfを.txtに変える必要あり)

★Axfc UpLoader 小物板 -File_13163.ttf-
http://www1.axfc.net/uploader/File/so/13163.ttf

ソースの598行目以下を見ると分かるように、
コンビネーションキーを一切使っていないのがポイント

下駄配列みたいなのを作るなら、このスクリプトを編集することから始めればいいと思う
239名無しさん@お腹いっぱい。:2011/03/02(水) 17:15:37.36 ID:IKCDDAcw0
>>238
ありがとうございます。
スクリプトを見ても、何をしているのか理解できないが、すごいことをしているんだな。
240名無しさん@お腹いっぱい。:2011/03/06(日) 04:51:38.15 ID:kh7S6GYS0
すみません。ゲームの話なんですが、教えてください。
特定のPCゲームのみ、AHKの#IfWinactiveのコマンドが動かなくなるのです。
つまり、そのゲーム限定のキーのリマップ等AHKの動きが一切動かなくなるのです。

しかし#IfWinactive/Existなど、そのゲームだけに限定しない一般的なスクリプトは
ふつうに動きます。

steamのValve社のゲームです。
(それ以外にsteamのゲームもっていないので分からないのですが、ほかのPCゲームなら
ふつうにAHKが動きます)

しかし、一年前はsteamのゲームでも日常的にAHKが動いていました。
いまではビデオボードが昔のPCを使っているので一年前とは環境が少しちがいます。
やはりゲームなのでビデオドライバ等とAHKが相性悪いのでしょうか

どなたか解決法ご存知であればおしえてください。
241名無しさん@お腹いっぱい。:2011/03/06(日) 06:58:15.90 ID:wTO8r2S/0
>>240
dirt2というゲームでそういう状況になった。
dirt2がアクティブな状態でAHKをReload(マウスジェスチャーにReloadを割り当てて実行)すると
#IfWinactiveのHotkeyが効くけど、一旦、別ウィンドウをアクティブにしてからDirt2をアクティブにすると効かなくなる。
私はUSBテンキーパッドのみ割り当てを変更したかったのでAHKでの割り当てをせず、
MagicKeyPadで割り当てを変更しています。
AHKのみで対応したいのであれば(試してないのでうまくいくかは解らないけど)
SetTimerでゲームウィンドウがアクティブになるのを監視して
アクティブになったらAHKをリロードするようにすればいけるかもしれない。
242名無しさん@お腹いっぱい。:2011/03/07(月) 12:07:48.59 ID:TWcuSmwW0
そのゲームはウィンドウがアクティブになるとフックして、
非アクティブになるとアンフックしてんじゃないのかね。

フックは後勝ちで、後に仕込んだ方から順に処理されていって
そこで情報捨てられると、順序的に次のフックには何も起きてないように見える。

まーDirectInput使っててお手上げってやつよりはマシかもしれない。
243名無しさん@お腹いっぱい。:2011/03/11(金) 15:12:35.84 ID:H6BQ5kI60
Win7 x86/x64 + AHK_L Unicode x86 v1.0.92.02
何時からか知らないけど、RegExReplaceのターゲット文字列が2バイト文字で始まり、
パターンに ^ を指定、且つ第5引数に1以外(デフォルト -1)を指定すると、負のエラーコードが返って失敗するね。

RegExReplace("あ", "^", "a")
MsgBox,% ErrorLevel
RegExReplace("あ", "^", "a", "", 1)
MsgBox,% ErrorLevel
244名無しさん@お腹いっぱい。:2011/03/11(金) 18:22:36.24 ID:Gocfd85s0
ホンマやね
何でか知らんが手元に大量にある L48〜L61(A&U) ではきちんと動いてる。
245名無しさん@お腹いっぱい。:2011/03/11(金) 21:51:00.63 ID:H6BQ5kI60
検証サンクス。1.0.90.00以降の問題か〜。とりあえずバグ報告してみた。
246名無しさん@お腹いっぱい。:2011/03/12(土) 19:59:39.43 ID:Ak6gUs++0
こんな状況の中なんだが...うpだてきた

1.0.95.00 - March 12, 2011

- All file I/O has been heavily optimized.
- Added #Warn to assist with debugging; initial design by ac.
- By default, if name_var contains a function name, name_var.() calls the function. This can be overidden via the default base object, as before.
- Run supports verbs with parameters, such as Run *RunAs %A_ScriptFullPath% /Param.
- If an operator which can accept either one operand (&x) or two numeric operands (x & y) follows a quoted literal string, auto-concat occurs and the operator is applied only to the right-hand operand.
 This is because quoted literal strings are always considered non-numeric and are therefore not valid input for numeric operators. For example, expressions like "x" &y and "x" ++y now work.

Fixed:
* Wildcard hotkeys were not respecting modifiers such as ^!+ in specific cases.
* File.Pos returned garbage for non-seeking file types; now it returns -1.
* File.AtEOF was incorrectly true in some cases.
* COM wrapper objects left A_LastError unset in some cases.
* Gui submenu icons did not work on Windows 2000/XP/Server 2003.
* SplashImage clipped the image if height > width.
* ComObjConnect did not alert when the first parameter is invalid.
* SplashImage now uses GDI+ only when the other methods fail, for compatibility.
* Tilde in ~x:: now affects x & y:: in the same way that ~x & z:: would, instead of having no effect.
* A_PriorHotkey and A_TimeSincePriorHotkey now have the expected values when used with #If.
* RegExReplace did not advance through the string correctly after a match failure if the string contained non-ASCII characters.
247名無しさん@お腹いっぱい。:2011/03/12(土) 20:00:44.78 ID:Ak6gUs++0
で、>>243 は直ってるな
248名無しさん@お腹いっぱい。:2011/03/12(土) 23:36:14.56 ID:6gOWoU5C0
正規表現で「abc(.*?)e(.*?)g」とした場合

「abcdefg」では$1に「d」$2に「f」
「abcefg」では$1に「」「f」が格納されると思ったのですが後者の場合はうまく
動いてくれません。どう表現すれば良いのでしょうか?
249名無しさん@お腹いっぱい。:2011/03/14(月) 00:27:53.65 ID:iQgZV4IX0
1.0.95.00   Vista sp2 32bit
タスクトレイアイコンからEditThisScriptで落ちる


ついでに。
ホットキーで別のスレッドに割り込んでExitやReturnさせることってできますか?
Pauseで停止させっぱなしでも短期的には代用できるんですが、
停止スレッドが貯まる一方なので

>>248
上手く動きますよ
250名無しさん@お腹いっぱい。:2011/03/14(月) 00:58:16.49 ID:k5kSbZs90
>>249
1.0,95.00 Unicode @ XP SP3だけど無問題。

NextAction =
While !(NextAction)
 Sleep, 200
If (NextAction = "Exit")
 Exit
Return

とかやって、他のスレッドで NextAction を上書きすりゃ何とか出来そう。
実行行がずらずら表示されるのが嫌なら ListLines, Off で
251名無しさん@お腹いっぱい。:2011/03/20(日) 13:46:19.49 ID:fuGCdwlG0
---gomisute.ahk---
FileRecycle, zzz\yyy
---ここまで---

これを、外付けHDDの E:\aaa\bbb\gomisute.ahk に置いて実行したら(E:\aaa\bbb\zzz\yyyが存在する)
bbbフォルダ丸ごと全部削除(RecycleではなくてDelete)された
スクリプト自身も消された

FileRecycleはフォルダに対して使っちゃ駄目だったってことなのかもしれんが、
今まではフォルダに対して使っても特に問題は起きなかったからかなりショック
しかも再現できんから他にも条件が重なったのかもしれん
1.0,95.00 Unicode Vista sp2 32bit
252名無しさん@お腹いっぱい。:2011/03/21(月) 17:54:39.08 ID:mmuN6T2t0
アクティブなソフトの縦スクロールバーの表示・非表示を切り替えたく以下のように書いてみたのですが
メモ帳で試してみるとスクロールバーが二つに増える、戻るのように動いてしまいます。
元々ある縦スクロールバーを消す・戻す、ようにさせるにはどうすればよいのでしょうか?

#1::
WinSet, Style, ^0x00200000, A
return
253名無しさん@お腹いっぱい。:2011/03/21(月) 18:57:46.16 ID:wjViV1Nr0
アプリケーションのコントロール毎に指定しないとダメでしょ。

ControlGet, hWnd, Hwnd,, Edit1, ahk_class Notepad
WinSet, Style, ^0x00200000, ahk_id %hWnd%
254名無しさん@お腹いっぱい。:2011/03/21(月) 19:05:44.94 ID:mmuN6T2t0
>>253
おお、そうやるんですね。ちゃんと動きました。
ありがとうございました。
255名無しさん@お腹いっぱい。:2011/03/23(水) 21:02:20.75 ID:oP9/7xvt0
1.0.96.00 - March 21, 2011

New features:
ComObjQuery: Queries a COM object for an interface or service.
ComObjFlags: Retrieves or changes flags which control a COM wrapper object's behaviour.
ComObjCreate allows non-dispatch objects to be created if an interface identifier (IID) is given.
COM arrays support for-loops and the Clone() method.
ListVars shows the inner variant type and value of each COM wrapper object, in addition to the wrapper's address.

Changes:
When a literal integer or variable containing both a numeric string and cached binary integer is assigned to a field of an object,
an integer is stored instead of a string. This particularly benefits scripts calling COM methods which accept integers but not strings,
or have different behaviour depending on the type of value.
NULL values are now allowed with ComObjParameter for the VT_UNKNOWN and VT_DISPATCH types.
Improved support for Common Language Runtime (.NET) objects via COM.
FileRecycle should now warn before deleting a file which is too large to recycle.
When a SafeArray created with ComObjArray is assigned to an element of another SafeArray, a separate copy is created.
This prevents the script from crashing due to a second attempt at "destroying" the array. ComObjFlags allows this behaviour to be avoided.

Fixes:
Assigning to a COM array of VT_DISPATCH or VT_UNKNOWN crashed the script.
Break and Continue were tolerated outside of loops in some cases.
Standalone carriage-return (`r) was not correctly interpreted as end-of-line.
MouseMove miscalculated negative coordinates with the Input and Event send modes.
Selecting Edit This Script from the tray menu or using the Edit command crashed the script (broken by v1.0.95).
Error dialogs pointed at irrelevant lines of code in some cases.
256名無しさん@お腹いっぱい。:2011/03/23(水) 22:45:15.68 ID:FBmOIZD/0
>>251のクラッシュ条件はtoo large to recycleか。
つかupdateが21日って、あと2日ずれてれば助かったのかー。

251でFileRecycleをフォルダに使っちゃだめって解釈しちゃってたけど
フォルダ対象で使っても問題無しですね
誰かが惑わされてもいけないので訂正します。すまん
(公式のリファレンスではフォルダを扱う場合についての言及がある)


しかし>>249も当たり前に修正してくるあたり俺にとって神対応すぎる
257名無しさん@お腹いっぱい。:2011/03/27(日) 19:36:09.34 ID:TQ/iY1Rx0
複数のプログラムを一括で終了&起動させたいのですが、
#F4::
Process, Close, UnlockerAssistant.exe
Process, Close, opera.exe
     ・
     ・
     ・
return

#5::
Run, C:\Program Files\Unlocker\Unlocker.exe
Run, C:\Program Files\AVAST Software\Avast\AvastUI.exe
    ・
    ・
    ・
return
こんな感じでやってみたのですが、終了してくれたりしてくれなかったり、起動してくれたりしてくれなかったりします。
どこか間違っているところはありますか?
258名無しさん@お腹いっぱい。:2011/03/27(日) 20:54:33.98 ID:HZi46bEr0
バックグラウンドのウィンドウでの文字判別って出来る?
259名無しさん@お腹いっぱい。:2011/03/27(日) 21:24:44.38 ID:pqJTURrX0
>>257
終了または起動したかをチェックするようにしてみては?
260名無しさん@お腹いっぱい。:2011/03/27(日) 21:59:52.29 ID:pqJTURrX0
MouseGesture.ahk を ネットブック(OS Windows7 Starter)で利用しています。
エクスプローラのアイコン上でマウスジェスチャーを無効にしたい(アイコンを右ドラッグしたい)のですが
MG_CClass = DirectUIHWND になっているせいかエクスプローラのアイコン上だと
MG_TreeListHitTest() = 0 となり、無効化されません。
ちなみにWin7のデスクトップ上のアイコンは MG_CClass = SysListView32 なのでXPと同じです。
とりあえず、下記スクリプトを MG_User.ahk に記述し、カスタム条件式で指定し
一応、問題なく動いていますが、XPと同様にアイコンを識別する方法をご存知な方が
いらっしゃいましたらアドバイスを頂けないでしょうか。
よろしくお願い致します。

MG_TreeListHitTest2() {
global MG_CClass
if MG_TreeListHitTest()
return 1
else if ( MG_CClass == "DirectUIHWND" ) {
blockinput, on
ifwinexist, ahk_class #32768 ; コンテキストメニューが表示されているなら
send, {alt} ; コンテキストメニューを消す
CoordMode, Mouse, Relative
mousegetpos, mx, my
PixelGetColor, a_color, %mx%, %my%, slow
CoordMode, Mouse, screen
blockinput, off
if ( a_color != 0xFCFCFC ) ; 0xFCFCFC は背景色
return 1
}
return 0
}
261名無しさん@お腹いっぱい。:2011/03/28(月) 20:34:22.76 ID:B2O82ufB0
>>259
停止できないプロセスがあったり、
設定したホットキーが間違ってたりしてたようでした
そのアイディアももらいます
ありがとう
262名無しさん@お腹いっぱい。:2011/03/30(水) 12:47:32.98 ID:tVn8rbyJ0
ひさびさにバージョンアップ(1.0.91.3 → 1.0.97.0)したらマウスボタンの押し上げ操作がおかしくなっとる……(゚д゚)

XButton1 Up::Msgbox, 1
XButton1 & LButton::Msgbox, 2

このコードで下のホットキーを呼び出すと、拡張ボタン離した瞬間に上のホットキーも呼び出されてしまう( 1.0.91.3 では自動でカットされていた模様 )
かといって、

XButton1::Msgbox, 1
XButton1 & LButton::Msgbox, 2

にすると上のホットキーが動作しない……(自分のマウスM705rが特殊なだけか?)
さて、どうしたものか
263名無しさん@お腹いっぱい。:2011/03/30(水) 21:00:43.78 ID:kpOXz9+v0
>>262
拡張ボタンのあるマウスないから MButton を左側にしたコンビキーでやったけど無問題 @Unicode on XP 32bit
ボタンイベント処理でバグ混入してるかもしらんから続報を待つよろし。


しかし、Syntax sugar は楽ちんだな

for k, v in ["boo", "foo", "woo"]
 MsgBox, % v
for k,v in {a:"b", c:"d", e:WinExist("A"), g:3*5, j:A_AhkVersion}
 MsgBox, %k% = %v%


params = 1|3|5|7|9
Loop, Parse, params, |
{
 ・・・
}
ってのは、もうやらんで済む
264名無しさん@お腹いっぱい。:2011/03/30(水) 23:10:23.76 ID:tVn8rbyJ0
>>263
う〜む、ちなみにXButton2は通常通り動いている模様。( @Unicode on XP 32bit SP3 )
ますますわからん……。とりあえず一旦は前Ver.に戻してVerUP修正に期待すっかな。レスd


ところで最近2chのAHKコードをコピペ実行すること多いから、
ドラッグしてホットキー1発で実行できるコード書いてみた

#e::
Send, ^c
ClipWait, 1

code := RegExReplace( Clipboard, " ", " " ) ; 全角スペースを半角スペースに
file = %A_Temp%\AHKCodeExec.ahk
temp := A_FileEncoding

FileEncoding, "UTF-8" ; 文字コードをUTF-8に
FileDelete, %file%
FileAppend, %code%, %file%
FileEncoding, %temp%
Run, AutoHotKey.exe %file%
return


↓サンプル例(ドラッグして[Win]+[E]キーでOKダイアログ)
Msgbox, OK

チラ裏ですまんが、意外と快適なので載せとく
265名無しさん@お腹いっぱい。:2011/04/04(月) 13:27:30.61 ID:+P1LNa5r0
全くの初心者なのですが、

非アクティブのソフトに対してHomeキーを送りたいと思いメモ帳で試してみたところ、

#Del::
ControlSend,,Home,ahk_class Notepad
return

これで確かにWinキー+Deleteを押せば非アクティブの状態でもメモ帳にはキーは送られるのですが、
「Home」キーではなく「H」「o」「m」「e」のそれぞれのキーが送られてしまいます。
つまり
266265:2011/04/04(月) 13:28:55.55 ID:+P1LNa5r0
すみません、手違いで途中送信してしまいました。

これで確かにWinキー+Deleteを押せば非アクティブの状態でもメモ帳にはキーは送られるのですが、
「Home」キーではなく「H」「o」「m」「e」のそれぞれのキーが送られてしまいます。
つまりWinキー+Deleteを押すとメモ帳にはHomeという文字が書き込まれてしまう訳なのです。
これを「Home」キーにするのはどうすれば良いのでしょうか。
267名無しさん@お腹いっぱい。:2011/04/04(月) 15:24:31.04 ID:e6qFCQ9p0
{Home}
268名無しさん@お腹いっぱい。:2011/04/04(月) 20:52:44.80 ID:eIq10FCN0
まー、もう答えが描いてあるけど。

> 「Home」キーではなく「H」「o」「m」「e」のそれぞれのキーが送られてしまいます。
こうやって自分で書いてるけど、1つのキーを表すのは 「〜」 でなく {〜} ってだけなのさ。
Home は {H}{o}{m}{e} の省略形。
269265:2011/04/05(火) 09:56:45.62 ID:HR8tFI/T0
>>267>>268

おかげ様で解決しました。
初歩的な質問に答えて頂きどうも有難う御座いました。
270名無しさん@お腹いっぱい。:2011/04/05(火) 13:42:44.07 ID:ZrHi0O170
何コレ? AHKの新バージョン??
http://www.autohotkey.com/forum/topic70266.html
271名無しさん@お腹いっぱい。:2011/04/05(火) 14:10:32.24 ID:03eIayfI0
お、v2のテスト始まったのか
272名無しさん@お腹いっぱい。:2011/04/05(火) 14:55:37.83 ID:ZrHi0O170
'=' を '`=' にしないと動かないよ><
他にも hoge = %hoge1%%hoge2% とかも hoge = % hoge1 . hoge2 にしないといけない
試しに移行しようにも、修正箇所山積みで起動させることすら難しい
273名無しさん@お腹いっぱい。:2011/04/05(火) 14:59:53.46 ID:ZrHi0O170
あ、 hoge `= %hoge1 . hoge2 だった
274名無しさん@お腹いっぱい。:2011/04/05(火) 22:58:48.02 ID:CsJOA5dC0
代入は式になって、リテラルそのまんまは推奨しないってことでしょ。

a `= あいうえお
b := "かきくけこ"
c := a . b
MsgBox, % c
275名無しさん@お腹いっぱい。:2011/04/06(水) 17:54:12.26 ID:rQnrqrHv0
AHKに詳しい皆様に、ImageSearch、PixelSearchの使い方で
教えて頂きたいことがございます。

横書きの文章にところどころ挿入されている画像を指定するために、
ImageSearchまたはPixelSearchを使いたいのですが、説明には
左から右へ垂直方向に走査すると書かれています。

横書きの文章に合わせて横方向に走査するようにしたいのですが、
やりかたがよく分かりません。

どのようにすれば良いか、お知恵をお貸しくださいませ。
276名無しさん@お腹いっぱい。:2011/04/06(水) 18:01:57.22 ID:GnQn4nrg0
それを使う具体的なアプリを書いてよ。

そもそも行間とかの概念がないimagesearchをつかって、
文章に対してなにをしたいの?

識別範囲を狭めればいいだけな気がするが。
277名無しさん@お腹いっぱい。:2011/04/06(水) 18:21:09.22 ID:rQnrqrHv0
失礼しました。

PASORAMAという辞書ソフトです。本文中に

?come/k?m/
  ……
I [来る]
1 [SV(M)]
a〈人・動物・車などが〉(話し手の方へ)(やって)来る;(聞き手の方へ)行く[例]
b[SV doing] …しながらやってくる;やってきて…する[例]

みたいになっているのですが、この[例]の部分はマウス・クリックでしか選択できません。
([例]をクリックすると、例文ウィンドウが開きます)
画面上、○○番目の[例]をショートカット・キーでダイレクトに選択したいのですが、
この○○番目というのは横書き文書に沿っての順番にしたいと考えております。
278名無しさん@お腹いっぱい。:2011/04/06(水) 21:55:57.80 ID:Q8I0Fr+x0
箇条書きの数字のX座標は固定っぽいんで、まずその位置を調べるのがいいんじゃね?
  ▼
   1 XXXXXXXXXXX
     XXXXXXXXX
   2 YYYYYYYYYY
   3 ZZZZZZZZZZZ
    ▲
▼〜▲ の間を ImageSearch で数字の画像でやれば何とかなるかも

項目 の数字 (n) 画像の位置を調べる。なかったら終了。あったら変数 Y1 に保存。
次に、項目の数字 (n+1) の Y 座標を調べる。みつかったら Y2 として保存。なかったらコントロールの右下の座標をY2とする。
で、Y1〜Y2の間で「 [例] 」 の画像を調べて、あったらクリックしてやる。
279名無しさん@お腹いっぱい。:2011/04/07(木) 01:03:36.35 ID:DrQN0H3g0
>>278
おお、なるほど。そう発想すれば良いんですね。確かに、数字のX座標は固定されているみたいなので、
この方法で出来そうな気がします。>>278さんのレスを見て、やっと>>276さんのレスの最後の行の意味
が分かりました!

ちょっとやってみます。ありがとうございました!
280名無しさん@お腹いっぱい。:2011/04/07(木) 06:30:06.42 ID:PVXsm7Ue0
お金払うのでAutoHotkeyのスクリプト書いてくれるようなとこ知らない?
デスクトップ上で色々開いてるウィンドウの中で
特定のアプリケーションのアクティブだけを切り替えるコードが知りたくて
色々調べてみたんだけど、素人すぎて自分じゃどうにもならない。
当面、自分にとって必要なのはその動作だけなので、
その為だけにプログラム一から勉強するのは時間と労力的に厳しい。
と思って検索してたんだけど、そういうHPみたいなのがみつからなかった。
281名無しさん@お腹いっぱい。:2011/04/07(木) 10:25:07.84 ID:DUrVFwHe0
>>280
こういうこと?

; 特定のウィンドウグループ
TargetWindow := Object()
TargetWindow.Insert("ahk_class 特定のウィンドウクラス1")
TargetWindow.Insert("ahk_class 特定のウィンドウクラス2")
TargetWindow.Insert("ahk_class 特定のウィンドウクラス3")
MaxIndex := TargetWindow.MaxIndex()
Current = 1

; [Shift]キー&[Esc]でウィンドウ切替え
+Esc::
Current++
If (Current > MaxIndex)
Current := 1
target := TargetWindow[Current]
WinActivate, %target%
return
282名無しさん@お腹いっぱい。:2011/04/07(木) 13:42:13.24 ID:QHjMDEjT0
こうな気がする

#IfWinNotActive 特定のアプリケーション
#a::WinActivate, 特定のアプリケーション

#IfWinActive 特定のアプリケーション
#a::Send, !{Esc}
283名無しさん@お腹いっぱい。:2011/04/07(木) 16:33:25.38 ID:2PoVKZSz0
仮想デスクトップ入れてAlt+tabとか
ちょっと違うけど「窓替え」も便利
284名無しさん@お腹いっぱい。:2011/04/08(金) 20:43:50.42 ID:mLXiyYLQ0
触れるだけで押下できる親指サイズのキー入力デバイス「BitTouch」
http://akiba-pc.watch.impress.co.jp/hotline/20110409/etc_btone.html


見た目はかわいいけどお値段が・・・
285名無しさん@お腹いっぱい。:2011/04/08(金) 22:06:37.91 ID:NT03AE5h0
>>270の新バージョンは
大まかには以前と何が変わったの?

それと、昨日も更新したみたい
>v2.0-a002-30017e5 is now available. The changes are:
286名無しさん@お腹いっぱい。:2011/04/08(金) 23:19:19.79 ID:Ie+ctjmt0
>>284
キーバインドできるデバイスならフットスイッチ、ゲーム用リモコンとかおすすめ
287名無しさん@お腹いっぱい。:2011/04/09(土) 00:32:09.91 ID:g5zpVbxD0
>>262だが、新しいバージョンアップ(1.0.97.1)で拡張ボタンの不具合が改善されてた
288名無しさん@お腹いっぱい。:2011/04/09(土) 19:22:50.32 ID:oiIbw9PJ0
AutoHotkey_Lに移行したらこれが動かなくなりました。

vk1c & Tab::send {End}

変換キーとTabを入力しても単にTabが入力されてしまいます。
どうしたら動きますか?

ちなみにこれらは動きます。Tabだけ動かないのも不思議な話です。

vk1c & t::send {Del}
vk1c & r::send {BackSpace}
vk1c & i::send {Insert}
vk1c & LCtrl::send {Home}
289名無しさん@お腹いっぱい。:2011/04/09(土) 20:00:53.72 ID:g5zpVbxD0
>>288
一応、こちらの環境では問題なく動く @Unicode on XP 32bit SP3
290288:2011/04/09(土) 20:14:30.47 ID:oiIbw9PJ0
>>289
あれれ。もうちょっと調べてみます。報告ありがとうございます。
291288:2011/04/09(土) 20:30:48.14 ID:oiIbw9PJ0
原因はこれでした。

!sc00F::send foo ;Alt+Tab
!+sc00F::send bar ;Alt+Shift+Tab

こうすれば動きました。

vk1c & Tab::send {End} ; 変換キー+Tab
Alt & Tab::send foo ;Alt+Tab

しかしこれは動きませんでした。

Alt & Shift & Tab::send foo

どうすれは動きますか?
292名無しさん@お腹いっぱい。:2011/04/09(土) 21:48:41.51 ID:ZpbRWqgl0
>>291
> Alt & Shift & Tab::send foo
コンビネーションキーの仕様を確認すること。
指定できるキーは二つのみ
293288:2011/04/09(土) 22:41:36.98 ID:oiIbw9PJ0
>>292
確認しました。では、こういう状況でAlt+Shift+Tabを指定するにはどうしたら良いのですか?
294名無しさん@お腹いっぱい。:2011/04/09(土) 23:26:27.69 ID:g5zpVbxD0
>>291
そんなことしなくても、これで問題なく動く。試してみれ
!Tab::send foo ;Alt+Tab
!+Tab::send bar ;Alt+Shift+Tab
vk1c & Tab::send {End} ; 変換キー+Tab

どうしてもトリプルコンビネーション使うなら>>185
295288:2011/04/09(土) 23:41:25.90 ID:oiIbw9PJ0
>>294
動きました。なぜ動かなかったのか謎です。
トリプルのやり方参考になりました。ありがとうございます。
296名無しさん@お腹いっぱい。:2011/04/10(日) 22:54:55.50 ID:7+BwCA3O0
Win7 x64 AutoHotkey_L x64を使用しています
現在のマスターボリュームを取得して保存した後に
マスターボリュームを最大にしてwavファイルを鳴らし
その後にマスターボリュームを元に戻すという動作をしたいのですが
SoundGet, MasterVol
MsgBox, % MasterVol
この段階で既に正しく取得できない様です
どうすれば上手く動作させることができますか?
297名無しさん@お腹いっぱい。:2011/04/10(日) 23:19:04.81 ID:UJxlKXF/0
298名無しさん@お腹いっぱい。:2011/04/10(日) 23:57:34.78 ID:FiSRnkAl0
俺はRunでこれ呼んでる
http://maglog.jp/mos-privpro/Article10569.html
299名無しさん@お腹いっぱい。:2011/04/11(月) 00:01:54.68 ID:JHTVwKDu0
ごめん>>298は音量取得できないわ
>>297のリンク先でおk
300名無しさん@お腹いっぱい。:2011/04/11(月) 00:20:40.67 ID:+Uncriya0
>>297-299
ありがとうございます
リンク先のVista Audio Control Functionを利用して望み通りの動作ができました。
301名無しさん@お腹いっぱい。:2011/04/12(火) 21:58:39.21 ID:IyViwyyr0
どこでも使える。Dropboxを持ち歩く「DropboxPortableAHK」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
http://www.moongift.jp/r/2011/03/20110323-4/
302名無しさん@お腹いっぱい。:2011/04/13(水) 10:31:43.57 ID:f0KmeVGz0
303名無しさん@お腹いっぱい。:2011/04/13(水) 13:02:19.68 ID:lsUbZIUk0
>>301
ソース見せてほしいな。これみたいに一時的にレジストリ登録してる、というわけではない模様
http://www.autohotkey.com/forum/topic32097.html

レジストリ使うアプリを、レジストリいじらずにポータブル化ってどうやってんだろ?
304名無しさん@お腹いっぱい。:2011/04/14(木) 16:57:54.22 ID:GIR2nL+K0
>>287だが、やっぱり拡張ボタンの不具合なおってなかったorz
今後修正されるかどうか怪しいんで、とりあえずドライバで拡張ボタン1をファンクションキーに割り当てることで回避することに

これで配列とオブジェクトが楽に使える
305名無しさん@お腹いっぱい。:2011/04/14(木) 22:11:09.26 ID:ibW9/4u00
>>301
AHKとDropboxがどうつながるのかサッパリ分からない。
306名無しさん@お腹いっぱい。:2011/04/15(金) 11:29:39.63 ID:8gDYt9vr0
ポータブル化をAHKで実装してるってことでは
307名無しさん@お腹いっぱい。:2011/04/15(金) 11:35:29.99 ID:lframcof0
AHKをただのGUIアプリ作成言語として使ってるってだけでしょ
単一言語、スクリプトしか使えない人が
あまり適してない用途でものすごい力作を作ったりすることはまれによくあるw
308名無しさん@お腹いっぱい。:2011/04/15(金) 17:01:32.58 ID:zqSln54+0
それは俺のことか・・・
AHKしか使えないから、動画エンコードバッチからデジカメファイルのリネーム、
settimerで定期バックアップまで手を出してしまった。
309名無しさん@お腹いっぱい。:2011/04/15(金) 18:09:09.70 ID:rnahYgW00
車輪の再発明をするのが楽しくてたまらなくなるよな
310名無しさん@お腹いっぱい。:2011/04/15(金) 18:20:49.77 ID:e6jN9mcS0
いいんじゃね
まあC#とかPythonとかで作ったほうが楽だろうけど
311名無しさん@お腹いっぱい。:2011/04/15(金) 21:46:50.48 ID:1SjjkYm90
これも超大作。ahkでエクスプローラ拡張
http://hibari.2ch.net/test/read.cgi/software/1292589411/755


>>308らへんの用途だとahkがすごく適してると思う
コマンドライン書きやすいし、SetTimer便利だし、正規表現使えるし
ちょっとのことならGoTo使って楽できるのも良いし
いつでもホットキーでPauseできるのもありがたい

俺もahkしか使えないけどScriptControlのおかげで
ネットに大量に落ちてるVBScriptまで使い放題で便利すぎw
312名無しさん@お腹いっぱい。:2011/04/16(土) 03:09:11.87 ID:zNdGP3WN0
すみません 流れを読まず質問です
FileAppendで追記する対象ファイルの文字コードはUTF-8が最適ですか?
313名無しさん@お腹いっぱい。:2011/04/16(土) 10:07:07.50 ID:KlvlrhqW0
答えなんぞ無いわな。

普通は追記元と同じにすると思うが。
314名無しさん@お腹いっぱい。:2011/04/16(土) 10:22:39.27 ID:eNGMx+hq0
>>310
自分もWeb以外はAHKしか使ったことないんだけど、勉強のためにC#、Python辺りでコーディングすると効率良い所とか教えてほしい
体感で構いませんから

>>312
追記する対象ファイルの文字コードは既に決まってるのでは?
新たに作るならUTF-8が無難かも。一部古いエディタは文字化け起こすけど
315名無しさん@お腹いっぱい。:2011/04/16(土) 11:15:54.00 ID:3OJ2XPV10
XPでは
SendMessage,0x112,0xF170,1,,Program Manager
でディスプレイを省電力モードにできたのですが
7の64bitでは動作しません
x64用の実行ファイルに変えてあるのですが
どなたかご存知ありませんか?
316名無しさん@お腹いっぱい。:2011/04/16(土) 11:25:17.72 ID:7401Pslu0
317名無しさん@お腹いっぱい。:2011/04/16(土) 12:56:45.52 ID:3OJ2XPV10
>>316
ありがとうございますできました
2にすればよかったんですね
318名無しさん@お腹いっぱい。:2011/04/17(日) 02:29:15.26 ID:ORmYlBM/0
ahkで作ったスクリプトが動作してる時にシャットダウンなどした場合、エラーメッセージが出て
シャットダウンできない場合があるので、ahkで作られたexeのプロセスをプロセス名などで指定せずに
全て強制終了したいんですがなにかいい方法ありませんか?
319名無しさん@お腹いっぱい。:2011/04/17(日) 05:27:24.95 ID:78fgdjCn0
exe でも非表示のメイン窓はあるんで ahk_class AutoHotkey を探す。
で、窓IDからPID引いてプロセス殺す。
320名無しさん@お腹いっぱい。:2011/04/17(日) 09:08:08.82 ID:5wWcVwFs0
OnExitじゃ駄目なんだっけ?
321名無しさん@お腹いっぱい。:2011/04/18(月) 12:14:22.71 ID:GcLEPxSn0
海外ではautoitのほうがユーザー層多いように見えるんだけど日本で何でahkが流行ってるの?
http://www.google.co.jp/trends?q=autoit%2CAutoHotkey
322名無しさん@お腹いっぱい。:2011/04/18(月) 12:23:27.57 ID:UV4hVtwe0
右も左もわからない時代に、はやらせるページの人がサンプルを交えて解説してくれたからだと思う。
AHKは、ホットキー以外にバッチ+αの作業を行う場合に小回りが利いていろいろ便利。
323名無しさん@お腹いっぱい。:2011/04/18(月) 12:54:21.42 ID:Y0rkTdj60
ver.104805をXPsp3で使ってるよ
たまーにAHKがフリーズしてタスクマネージャとかtaskkillでもAHKを終了できなくなるんだけど
理由分かる人いる?
324名無しさん@お腹いっぱい。:2011/04/18(月) 22:30:12.37 ID:OjG1lJMz0
>>322
autoitとautohotkeyでは、できることはほぼ一緒だけど、記法が大きくことなっている(autohotkeyはたしかautoitベースだったが)と思っていたけど
autohotkeyでしか出来ないことがあるのか
なるほど
325名無しさん@お腹いっぱい。:2011/04/18(月) 23:36:05.49 ID:xcY6yw2O0
AHKの流行らせるページには世話になったわ
AutoItでも似たようなページがあれば試してみる気になるんだけど
326名無しさん@お腹いっぱい。:2011/04/19(火) 02:09:33.09 ID:kKbEreqL0
AutoItは、キーバインド変更ソフトとしての用途だと面倒なんだよな
#UseHookに相当する機能がないから、AutoItのヘルプに書いてある通り

HotKeySet("{Esc}", "captureEsc")
Func captureEsc()
HotKeySet("{Esc}")
Send("{Esc}")
HotKeySet("{Esc}", "captureEsc")
EndFunc

こんな感じで書かなきゃいかんところが結構でてくる
ウィンドウ作ったりするのは楽なんだが、そっちメインにするならVisualStudioでも
使って設計したほうがはやい
327名無しさん@お腹いっぱい。:2011/04/20(水) 00:29:52.77 ID:gCeRJll80
AHKってEXEコンパイルしたら動作速いのかね
デコンパイルできる所を見ると、単にコードを内部に置いて翻訳しながら実行してる気がするけど
328名無しさん@お腹いっぱい。:2011/04/20(水) 06:35:41.51 ID:lOxGhetJ0
むしろ遅い。とはいっても起動時だけだけど。
スクリプト+Exeのパッケージなだけなんで。
329名無しさん@お腹いっぱい。:2011/04/20(水) 12:03:14.66 ID:gCeRJll80
>>328
やはりか。機械語にしてくれればWebアプリにも使えると思ったんだが
スクリプト言語であらかじめ機械語にコンパイルすることってできないのかな。できたら死角なしなんだけど
330名無しさん@お腹いっぱい。:2011/04/20(水) 18:49:55.70 ID:ZEVjyN0A0
>>329
インタープリタで逐次翻訳するのをスクリプト言語と呼んでるだけで本質的な違いはない
インタープリタとコンパイラの両方同根してる処理系(Haskell言語のGHCとか)もあるぐらい

けどAHKには高速に動かしたい需要自体があんまりないしね
(それなりにあるJAVA,JavaScriptは高速化にかなりリソース割いてる)
331名無しさん@お腹いっぱい。:2011/04/20(水) 19:24:54.31 ID:QbyVp2CY0
おかげでOpenGLSLもろくにできねぇよ
332名無しさん@お腹いっぱい。:2011/04/20(水) 20:28:48.92 ID:lOxGhetJ0
今時のっつーかここ数年のマシンなら実行速度はほぼ気にならん。
RegisterCallbackで フック関数登録して、マウス移動のたびにスクリプト動くけど、
高負荷のときちょっと重いなってくらいで大したことないし。

PocketPC版も動かしてるけど、逆にコイツはインタプリタの遅さが目立って
ホットキートリガで数十行の処理とかウィンドウ一覧をループさせるとかの
処理でもたつく。
333名無しさん@お腹いっぱい。:2011/04/22(金) 08:16:06.43 ID:rH7s0CHA0
ソフトごとに音量いじったりできますか?
334名無しさん@お腹いっぱい。:2011/04/22(金) 20:00:22.10 ID:GnPqe4/k0
>>333
IfWinActive, ソフト1
SoundSet, 100
Else IfWinActive, ソフト2
SoundSet, 0
Else
SoundSet, 50

こんな感じの動作をタイマーかホットキーかOnMessage()に割り当てる

335名無しさん@お腹いっぱい。:2011/04/23(土) 12:42:43.72 ID:f4tKtPy/0
336名無しさん@お腹いっぱい。:2011/04/24(日) 02:33:08.90 ID:dpHDB4dO0
ウィンドウがフルスクリーンになっているかどうか判別する方法ない?
WinGet, foo, MinMax, A しても foo は 0 しか返してこないし上手くいかない
337名無しさん@お腹いっぱい。:2011/04/24(日) 03:03:28.57 ID:rUzK1S4S0
どんなアプリで、ウィンドウがフルスクリーンになっているかどうか判別したあと何をしたいのか

を書いた方が早く解決できる気がする
338名無しさん@お腹いっぱい。:2011/04/24(日) 04:19:38.83 ID:dpHDB4dO0
>>337
アプリは「NScripter」。ノベルゲームの一種。
簡単にウィンドウモードとフルスクリーンモードを切替えられるのだが、今回はこれがネック。
ゲーム内の各種ボタン押下の方法は座標をクリックするしかないんで、ホットキーでMouseClickしたいのだがどうもフルスクリーン時は微妙に座標がずれる模様
よって、ウィンドウモードとフルスクリーンの場合とで別の座標を指定したい、というのが今回の目的だけど未だに解決してない。いい方法あったらヨロ
339名無しさん@お腹いっぱい。:2011/04/24(日) 12:49:25.97 ID:d33kqv9W0
>>338
ウインドウの座標, Style, ExStyleが違った

#IfWinActive ahk_class NScripter
F1::
 WinGet,exStyle,ExStyle,A
 if (exStyle & 0x8) { ; WS_EX_TOPMOST
  SoundPlay,*64 ; フルスクリーン
 } else {
  SoundPlay,*48 ; 通常
 }
 return
340名無しさん@お腹いっぱい。:2011/04/24(日) 14:17:55.78 ID:dpHDB4dO0
>>339
おぉ、上手くいった! dです。
しかし最前面かどうか、のスタイルだと思ったのにこんな使い方もできるのか
これからは、めぼしいスタイルはとりあえず試してみることにするよ。ありがとう
341名無しさん@お腹いっぱい。:2011/04/24(日) 19:00:56.30 ID:FryVW6CP0
AHKで作ったEXEは
すぐにそれがAHKで作られた物とバレてしまいますか?
342名無しさん@お腹いっぱい。:2011/04/24(日) 19:44:10.93 ID:S0rpdq4t0
アイコン変えたりファイルバージョンとか書き換えれば、素人には分からん。
AHK使いにはすぐバレる
343名無しさん@お腹いっぱい。:2011/04/25(月) 18:37:37.19 ID:EOUJnPS60
そんなあなたに難読化
344名無しさん@お腹いっぱい。:2011/04/26(火) 14:18:51.81 ID:uQ++AcLe0
Winwaitみたいに基本的には待機の状態でAウィンドウが存在しなくなったらラベルA
Bウィンドウが表示されたらラベルBへ飛ばすことってタイマー使わずにできませんか?
345名無しさん@お腹いっぱい。:2011/04/26(火) 19:29:31.84 ID:aF9G3YIOi
sites.google.com/site/agkh6mze/howto/winevent
346名無しさん@お腹いっぱい。:2011/04/27(水) 15:31:19.15 ID:my6h1OMs0
DesktopLighterもどきを作りたいんだけど
画面の明るさを0-100だか0-255で指定するようなコマンドってないですか?
最悪DLをクリックするスクリプトになっちゃうとは思うんだけど
出来ればDLとは独立してやりたいんです。
347名無しさん@お腹いっぱい。:2011/04/27(水) 18:00:18.10 ID:0/h7RHae0
>>346
ttp://retla.g.hatena.ne.jp/retla/20100810/dimmonitor
モニターの明るさを操作してるわけじゃないから参考にならないかもしれんが
348名無しさん@お腹いっぱい。:2011/04/27(水) 21:59:03.49 ID:z4TEZIex0
そういや 1.0.97.xx になって動かないスクリプトがあって何だろうと思ってたが、
obj._Insert とか obj._GetAddress あたりがスルーされてた。
まぁ、機能導入時の暫定仕様だったからしょうがないが、つい最近まで動いててすっかり直すの忘れてたわ
349名無しさん@お腹いっぱい。:2011/04/28(木) 01:50:11.85 ID:Y7e4r1WD0
初代Autohotkeyはこのスレ的にはもう古いの?
350名無しさん@お腹いっぱい。:2011/04/28(木) 04:28:42.25 ID:Ljxe801m0
公式サイトがAutoHotkey_Lを勧めてるから
やっぱり古いってことになるような
351名無しさん@お腹いっぱい。:2011/04/28(木) 09:09:33.93 ID:Zx1bkVLR0
prcess,close使ったらタスクトレイアイコンが残るんですが
OSの問題だとは思いますがこれを消す方法ありませんか?
352名無しさん@お腹いっぱい。:2011/04/28(木) 13:02:02.78 ID:Z/mmlfD40
スマートな方法じゃなくていいのなら
マウスカーソルをタスクトレイの辺りで左右に動かすスクリプトが
ここの過去ログやフォーラムにあったはず
353名無しさん@お腹いっぱい。:2011/04/28(木) 18:27:17.37 ID:A7F8ornR0
>>351
http://www.autohotkey.com/forum/topic26042.html
の Tray.ahk をインクルードするか Tray_Refresh() だけをコピペし、
(ウチのWinXP SP3 では)↓のように prcess,close の直後に Tray_Refresh() を実行すると消える。
prcess,close
Tray_Refresh()

ウチでは↓のようにする(sleepを挟む)とアイコンが消えない。
prcess,close
sleep,200
Tray_Refresh()
354352:2011/04/28(木) 18:30:26.97 ID:A7F8ornR0
今試したらsleep挟んでも消えた。
他の何かが影響してたかもしれない。
355名無しさん@お腹いっぱい。:2011/04/28(木) 18:46:32.45 ID:xkpPhtIq0
それ昔GetTooltipでお世話になった記憶があります
試してみましたが消えました!ありがとうございます。
356名無しさん@お腹いっぱい。:2011/04/29(金) 00:20:54.80 ID:45mZtda00
何か便利なスクリプトありますか
今はMouseGesture.ahkだけ使ってます
357名無しさん@お腹いっぱい。:2011/04/29(金) 09:01:58.90 ID:v0V5hQrc0
何かって何だよ
358名無しさん@お腹いっぱい。:2011/04/29(金) 09:34:13.57 ID:djhm7bQN0
色々あるが教えて君のために列挙は勘弁
359名無しさん@お腹いっぱい。:2011/04/29(金) 09:44:09.39 ID:Rt1TlOdq0
テキストボックスに日本語を自動入力させたいんですが
^vでクリップボードから送る意外になにか方法ありませんか?
360名無しさん@お腹いっぱい。:2011/04/29(金) 10:06:57.50 ID:djhm7bQN0
エディットボックス互換限定でいいなら
Control, EditPaste, String

S-JIS限定なら全角をコード化してSendで送る(SendConv でググレ)
UNICODE版で使えるかは知らん
361名無しさん@お腹いっぱい。:2011/04/29(金) 10:12:54.22 ID:8Mo9So2I0
>>356
ありますよ
それを作るのがAHKなんだがら
がんばれ
362名無しさん@お腹いっぱい。:2011/04/29(金) 13:36:25.33 ID:z2YgJn+E0
>>359
ControlSetText
363名無しさん@お腹いっぱい。:2011/04/30(土) 01:52:59.89 ID:5n45JD2c0
前スレにあった、AquesTalkでの時報が、x64 Unicode版で動作しません
どうすれば動作させられるのでしょうか?
AutHotKey_L x64-Unicode版、Win7 64bit

AutoHotkey スレッド part10
http://pc12.2ch.net/test/read.cgi/software/1265518996/12
ネタ: テキスト音声合成ミドルウェア AquesTalk を使って時報
364名無しさん@お腹いっぱい。:2011/04/30(土) 09:24:53.80 ID:f/2ltouj0
よく分からんが、x64 は 32ビット版DLL を直接ロード出来ないとかで、
呼び出しは何かのオブラートに包まないといけないらすぃ。

1) Softalk をコマンドラインで呼ぶ
2) 32ビット版AHKでロードして、x64からはメッセージで制御する
3) 32ビット版の Autohotkey.dll をCOM登録して COM上の32bit版AHKを x64 から操作する
365名無しさん@お腹いっぱい。:2011/04/30(土) 09:51:14.56 ID:5n45JD2c0
めんどくせー、もうx86版使うからいいや、ありがと
366名無しさん@お腹いっぱい。:2011/05/01(日) 01:55:42.64 ID:hTSFGKTvP
MacのMagic TrackpadをWinで使う場合、純正ドライバーだと
マルチタッチ操作できないみたいなんだけど、一応信号は
出してるみたい。
AutoHotkeyでなんとかならないかな?
367名無しさん@お腹いっぱい。:2011/05/01(日) 12:34:52.53 ID:wytEpnly0
非表示のウィンドウにフォーカスが移ってしまったら
直前のウィンドウにフォーカスを戻すという事をしたいのですが
どうやったらよいのでしょうか。

WinGet, sty, ExStyle, A
とかで判定できるかと思いましたが、どうも違うようです。
現在は次善策として特定プロセスにフォーカスが渡ったら…という形にしていますが
穴があるのでなんとかしたいです。
368名無しさん@お腹いっぱい。:2011/05/01(日) 14:10:02.15 ID:vf/Rs+tQ0
次に入力するホットキーだけ無効にするような方法ありますか?
たとえば普段wordで
^f::Send,{Right}
みたいにしてるけど、
^qおした直後に^fしたときは検索になるようにするとか。
369名無しさん@お腹いっぱい。:2011/05/01(日) 15:07:12.26 ID:vf/Rs+tQ0
不完全だけどなんとなくそれっぽいのできました。ありがとうございました。
^q::
Input,InputChar,L1 M T0.5
if A_ThisHotkey != %A_PriorHotkey%
{
Send,%A_ThisHotkey%
}else{
Send,%InputChar%
}
return
370名無しさん@お腹いっぱい。:2011/05/01(日) 16:48:58.96 ID:Js9XgbTS0
AutoHotKey v2 コンバータ
ttp://www.autohotkey.com/forum/topic70291.html

v2でも動かねぇぇぇ (ノ ゚Д゚)ノ
371名無しさん@お腹いっぱい。:2011/05/01(日) 16:52:35.48 ID:Za2Dnz5Y0
v2って本家の後継なの?
Lの後継なの?
372 忍法帖【Lv=4,xxxP】 :2011/05/01(日) 22:51:01.46 ID:tV5sS4MQ0
今からAutoHotkeyを導入したい人はどれを入れればいいのかな?
あと英語分からないよー
373 忍法帖【Lv=4,xxxP】 :2011/05/01(日) 22:52:20.22 ID:tV5sS4MQ0
>>5見たら書いてありました
めんごっつ
374名無しさん@お腹いっぱい。:2011/05/01(日) 23:16:36.46 ID:RoOATStI0
>>5を見て疑問に思ったんだけど
> 64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
具体的にはどういう制約があるの?
375名無しさん@お腹いっぱい。:2011/05/01(日) 23:23:25.29 ID:KA0pi79N0
64bitアプリをフックできなかんべ
376名無しさん@お腹いっぱい。:2011/05/01(日) 23:34:39.09 ID:RoOATStI0
>>375
なるほど
そういえばそうだね
377名無しさん@お腹いっぱい。:2011/05/02(月) 18:53:09.56 ID:BrCEwVnx0
1.1.00.00 - May 1, 2011

New features:
Implemented basic class definition syntax.
Implemented the new keyword for creating a derived object.
Added Func() for retrieving a reference to an existing function and improved IsFunc to recognize function references.
Added support for ++ and -- with object fields, such as x.y[z]++.

Changes:
Changed __Delete to not trigger __Call.
Changed OnClipboardChange to use AddClipboardFormatListener when available (i.e. on Windows Vista and later) to improve reliability.
Auto-concat with ( is more selective, so some invalid expressions like 12(34) will no longer work.

Fixes:
Fixed SetTimer Label, -0 to be treated as "run-once, very soon".
Fixed A_MyDocuments etc. to use SHGetFolderPath instead of undocumented registry keys.
Fixed non-empty ExcludeText causing windows with no text to be excluded.
378名無しさん@お腹いっぱい。:2011/05/02(月) 19:46:47.43 ID:cIpD4K+Y0
>Added Func() for retrieving a reference to an existing function and improved IsFunc to recognize function references.
コレなに?
379名無しさん@お腹いっぱい。:2011/05/02(月) 23:11:47.64 ID:VBFPa1AP0
>>378
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/Functions.htm#Func
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/Objects.htm#Function_References

まとめてみると、
MyFuncっていう関数が存在しないなら
Func := Func("MyFunc")
のFuncには0が入る

存在するなら、FuncにはMyFunc関数への参照が格納される。そのときには二通りのやり方で関数を呼び出せる
RetVal := %Func%(Params)
RetVal := Func.(Params)

で、IsFunc()は、関数の名前を引数にとっていたけど、関数の参照も取れるようになった
こんな感じだと思うよ
380名無しさん@お腹いっぱい。:2011/05/02(月) 23:13:41.51 ID:VBFPa1AP0
ごめん
>>379を訂正するね
参照によって関数を呼び出すのは
RetVal := Func.(Params)
こっちだけ
381名無しさん@お腹いっぱい。:2011/05/02(月) 23:32:35.17 ID:VH6dTxcW0
機能追加はもういいから、クソみたいな構文を何とかしてくれ
382名無しさん@お腹いっぱい。:2011/05/02(月) 23:42:51.58 ID:WFvsuMPr0
構文が気にいらんならAutoItにいけ
383名無しさん@お腹いっぱい。:2011/05/03(火) 00:07:49.68 ID:TJs+Oy/u0
ver2で整理されるんじゃ無かったっけ?
384名無しさん@お腹いっぱい。:2011/05/03(火) 00:11:58.75 ID:hejL9KmO0
まぁ、マニアックな方向の拡張の様な気もするし、
文法をガラリと変えるための基盤作りの様な気もする。

クソ文法だとか、よそで通用しないDSL(domain specific lang.)だといわれてるが、
マニュアル通りに処理書けば動いちまって余計な事しらべなくて済むってのはやはり素晴らしい。

クソ文法でない、汎用処理系になればなるほど、言語仕様を覚える比率が高くなって、
スクリプトいじっているうちに「俺何したいんだっけ?」ってなる。
385名無しさん@お腹いっぱい。:2011/05/03(火) 00:12:18.90 ID:TimWf4Zm0
一定時間(例えば10分とか)ごとに特定の処理をしたいとき
LOOPとsleepを使えば良いと思うんですが
CPU使用率が100%近く張り付いたりしてうまくいきません。
L版x86Unicodeなんですがどういう風に書いたら良いのでしょうか?
386名無しさん@お腹いっぱい。:2011/05/03(火) 00:13:50.42 ID:GJ9G2TD30
>>385
問題となるコードを貼ってみて。
387名無しさん@お腹いっぱい。:2011/05/03(火) 00:17:57.63 ID:MysEWyeX0
>>384
出来ることが同程度の言語なら、統一性のある文法のほうが学習コストは下がるよ
lisp並の高機能にしたいなら話は別だが
388名無しさん@お腹いっぱい。:2011/05/03(火) 00:46:11.27 ID:TimWf4Zm0
>>386
実は前に書いて投げてたところで
改めて書く前に聞いておこうと>>358のレスをしたんです
そのすぐ後に書いて試してたらなにかうまくいった感じでした。
お騒がせしてすみません
ちなみにこんな風に今回書きました。
Loop{
処理
leep,1000*60
}
389名無しさん@お腹いっぱい。:2011/05/03(火) 00:52:13.88 ID:GJ9G2TD30
>>388
そういうときは、settimerをつかえばいいんじゃない?

settimer,untara,600000
return

untara:
処理
return
390名無しさん@お腹いっぱい。:2011/05/03(火) 02:59:05.79 ID:Pk5quyRC0
>>379-380
サンクス。関数名を文字列でコールする正式な手法を実装したってとこかな
今までオブジェクトに入れて呼び出してたけど、こっちに鞍替えしてみる
391名無しさん@お腹いっぱい。:2011/05/03(火) 06:36:50.10 ID:33sg/ngS0
いまのahkって無名関数みたいなのある?
392名無しさん@お腹いっぱい。:2011/05/03(火) 08:06:12.40 ID:sbNbHs9c0
>>391
無いのでは
あればいいと思うけど
393名無しさん@お腹いっぱい。:2011/05/03(火) 14:57:27.10 ID:wAXFnobx0
ロードマップではv2.1(仮)にクロージャがある
スタックの処理も面倒そうだがそれよりv1のパーサじゃ無理かと
ttp://www.autohotkey.net/~Lexikos/AutoHotkey_L/Roadmap.htm
394名無しさん@お腹いっぱい。:2011/05/04(水) 05:14:52.08 ID:tVh3DPd/0
いいこと思いついた
それならJavascriptエンジンにahkの……

あれ?
395名無しさん@お腹いっぱい。:2011/05/04(水) 14:38:32.67 ID:oBHUOn060
あれれー??ww
396名無しさん@お腹いっぱい。:2011/05/04(水) 15:00:08.40 ID:2CoZki3o0
初めて試している初心者ですが、これって結構バグがあって、ごまかして使うようなものですか?
例えば、>>265

#Del::
ControlSend,,Home,ahk_class Notepad
return

は動くけど、繰り返しキー入力すると、HomeがHOmeになったり、あるいは、

#Del::
ControlSend,,home,ahk_class Notepad
return

にすると、検索窓が開いたり、

#Del::
ControlSend,,,{F12},ahk_class Notepad
return

だと、一発で動作しないが、

#Del::
ControlSend,,,{F12}{F12},ahk_class Notepad
return

にするとうまくいくとか、なんか思うように動かない
397名無しさん@お腹いっぱい。:2011/05/04(水) 15:39:17.63 ID:BzvCY15R0
>>396
>これって結構バグがあって、ごまかして使うようなものですか?

ごまかして使うものではないし、バグではない。
>>1のリンク先を熟読するなり、ググるなりして使い方を覚えるべし。

>#Del::
>ControlSend,,,{F12}{F12},ahk_class Notepad
>return
>
>にするとうまくいくとか、なんか思うように動かない

PCスペックや動いているソフトの負荷等でキー入力が無視されたりする。
SetKeyDelay で間隔を変更するべし。
398名無しさん@お腹いっぱい。:2011/05/04(水) 16:43:52.23 ID:Yz/xd1m20

やっぱごまかして使うんや
399名無しさん@お腹いっぱい。:2011/05/04(水) 16:51:53.07 ID:2CoZki3o0
>>397
ありがとう

#Del::
ControlSend,,home,ahk_class Notepad
return

で、文字検索窓が開いて、omeが入力される理由がわからない?なぜなの?
400名無しさん@お腹いっぱい。:2011/05/04(水) 17:00:17.91 ID:2CoZki3o0
どのウィンドウにフォーカスがあるかによって挙動が違うし、バックグラウンドにあっても入力されるあぷりもあるし、
されないアプリもあるようだ

NANJOYという補助入力アプリでもあったけど、ウィンドウ送信機能というのは完全には機能させることは難しい
のかな
401名無しさん@お腹いっぱい。:2011/05/04(水) 17:23:03.27 ID:jD4AzRoV0
AHKが、そんなに歯抜けなコマンドしか出せないツールだったら、
ここまで息が続いてるはずがないでしょ。

1000分の1秒を争って、notepadを制御する必要性があるならそれなりに仕上げる必要がある。
ないなら、適当にウェイトを入れて作れば動作する。

どんなアプリを制御するにも、適度にウェイトを入れる必要はある。
どれくらい入れるかは、AHKじゃなくてスクリプト制作者が決める。

それさえやれば、どんなアプリでも確実に動作する。

どうやって決めるかって? 通信プロトコルや、人間のコミュ力と同じだ。
相手の会話スピードや、理解力にあわせて会話しないと、会話そのものが成立しない。

相手がコマンドを受け取る能力がどれくらいあるかを、最初に適性として調べた上で、コマンドを投げる。
そのウェイトを入れる操作を「ごまかす」としてどうしても定義したいのであれば、ごまかしは必要。
402名無しさん@お腹いっぱい。:2011/05/04(水) 17:32:41.29 ID:2CoZki3o0
ControlSendを使って
フォーカスのないJane Styleのレスウィンドウを開くということができないかやってるんだが、無理っぽい
フォーカスがあれば機能するが、ないと動かず
レス窓に文字列を入力するスクリプトも試してみたが、全く動かなかった

Notepadみたいな行儀のよいアプリは問題ないが、行儀の悪いのはダメってことか
NANJOYでも必ずしも100%動かなかったし、Jane Styleが悪いんでしょうねぇ
403名無しさん@お腹いっぱい。:2011/05/04(水) 17:36:34.98 ID:2CoZki3o0
てすとしてたのは、こんな感じ
F12でレス窓が開くようJane Styleに設定してます

SetKeyDelay, 100,10

#m::
DetectHiddenWindows,On
ControlSend,,{F12},ahk_class TMainWnd
return

#n::
DetectHiddenWindows,On
ControlSendRaw,,aaa,ahk_class TWriteForm
return

#Del::
DetectHiddenWindows,On
ControlSend,,home,ahk_class Notepad
return
404名無しさん@お腹いっぱい。:2011/05/04(水) 19:57:28.01 ID:Yz/xd1m20
スクリプト晒しスレとかなんか無いの?
405名無しさん@お腹いっぱい。:2011/05/04(水) 20:09:20.50 ID:2CoZki3o0
ウィンドウ送信はダメと諦めて、ウィンドウアクティベート後キー送信でごまかした
406名無しさん@お腹いっぱい。:2011/05/04(水) 20:44:03.82 ID:zrGksKAN0
ていうか バックグラウンドで動かす前提なわけ?
そうでないなら WinActivate なり ControlFocus なりしてからSendしたほうが確実だと思うが

あとどうしても ControlSend使いたいなら Classより hWnd取得のほうが動く可能性は上がる
407名無しさん@お腹いっぱい。:2011/05/04(水) 21:37:28.56 ID:2CoZki3o0
>>406
バックグラウンドで動かす前提ではないが、NANJOYというプログラムの手法をコピーしようとした
WinActivate→Sendでもいけた(NANJOYにはこの方法がなかった)ので、そうした
だいたいやりたいことができるようになりました
dクス
408名無しさん@お腹いっぱい。:2011/05/05(木) 01:39:45.26 ID:Tl03Jbq80
>>404
ここがそう
>>1にアップローダがあるので、晒すなら一旦上げてからここに説明を添えて書き込むと吉
409名無しさん@お腹いっぱい。:2011/05/05(木) 23:06:48.28 ID:fbJHLtWd0
色々試してみて、結局このソフトってアドホックにウェイトを入れたり動くコマンドを探してごまかしながら
使う類のものであると結論
まぁ、大概のマクロソフトってそういうところがあるからしょうがないか

それにしても、ウィンドウ取得とか、対象アプリによってうまくいったりいかなかったり、コマンドによって
フォーカスが意図せず移ったり移らなかったり、裏で何が起こっているのかよくわからなくて、結局ロジック
では攻めきれない
意図したように動かない場合は、代替手法を次々と試していって、動くのを探すと言った使い方にしか
ならないね
410名無しさん@お腹いっぱい。:2011/05/05(木) 23:47:58.20 ID:RHSBhBLV0
>>409
???
要約すると、私には技術がありません。
Autohotkeyをまったく理解できませんでした。
ってことか?
411名無しさん@お腹いっぱい。:2011/05/06(金) 00:09:08.57 ID:ZQix5+Mk0
>>410
要約すると、
「思うような物が作れなくてムカついた。
AHKの愛好家の何人かをイヤな気分にさせたくなった」
じゃないかな。
412名無しさん@お腹いっぱい。:2011/05/06(金) 00:18:06.13 ID:GLR94QQ00
余所のアプリの操作なんぞは、別プロセスなんだし、作者も作成ツールも違う。
女も同じ口説くのと同じように、手を変え品を買えてアプローチせにゃならんのは当然。

最近だと FireFox4 が子ウィンドウ無しになったりして、ますますAHKで操作し辛い、とか。
413名無しさん@お腹いっぱい。:2011/05/06(金) 00:30:17.27 ID:zveiHpXp0
>>412
Firefoxでどのような操作を行ないたいかにもよるけど、
Vimperatorと組み合わせると良いんじゃないかと。
Flashの操作は難しいけど、プラグインも使えば大概の動作がキーボードで処理できるようになるので。
414名無しさん@お腹いっぱい。:2011/05/06(金) 03:17:36.33 ID:qrA6gzZF0
>>410
まるで、AutoHotkeyの神みたいな口ぶりじゃないか
ゴミカスは死ねよ
415名無しさん@お腹いっぱい。:2011/05/06(金) 03:19:04.98 ID:qrA6gzZF0
>>411
頭おかしいんじゃネェかお前ら
416名無しさん@お腹いっぱい。:2011/05/06(金) 03:23:50.43 ID:2S7sNW7h0
自己紹介乙としか言いようがない極めて典型的アホレス
417名無しさん@お腹いっぱい。:2011/05/06(金) 03:25:15.68 ID:qrA6gzZF0
>>412
まったくその通りだと思うぜ
AutoHotKeyのプロセスと対象アプリの動作は、全く非同期なので、どうやってタイミングをとるかが難しい
意図しているのと違う順序で物事が起こったりして動かないのだが、どういう順序で起こっているかを
知る効率の良い方法がないので、一発で動くことはほとんど無い
なんとかタイミングを変えようとするのだが、結局長いsleepとかを装入するぐらいしか解決法がないことが
多い
418名無しさん@お腹いっぱい。:2011/05/06(金) 03:25:38.47 ID:qrA6gzZF0
>>416
自己紹介乙w
419名無しさん@お腹いっぱい。:2011/05/06(金) 04:11:08.28 ID:Ptsquefy0
完璧、完全主義者だねえ。・・・ハゲそうなタイプ
420名無しさん@お腹いっぱい。:2011/05/06(金) 04:49:07.43 ID:5gQGqT9W0
なるほど、全てのアプリケーションが外部から干渉されることを想定して設計していれば
問題ないってことか、素晴らしいね
オレはそんなシステム怖くて使えないけどね
421名無しさん@お腹いっぱい。:2011/05/06(金) 07:01:47.63 ID:E5qzpsBK0
>>409, 412, 417
少なくとも俺にとってはこれらは真実
ウインドウがアクティブになっててもキー入力は暫く受け付けなかったり、そんなのザラ
422名無しさん@お腹いっぱい。:2011/05/06(金) 09:10:26.21 ID:EHznuTYH0
だから何
423名無しさん@お腹いっぱい。:2011/05/06(金) 09:16:48.05 ID:OoM4VZSH0
GW真っ盛りってことですよ
424名無しさん@お腹いっぱい。:2011/05/06(金) 11:40:57.97 ID:hG+iqpqD0
menuコマンドで作ったメニューの大きさって指定できませんか?
425名無しさん@お腹いっぱい。:2011/05/06(金) 12:22:37.58 ID:oJluPN/z0
>>417
外部干渉を考えてないアプリを無理矢理制御しようってんだから当然の事だと思うが
やってみるまで分からなかったのか?
プログラムって書き手の意図を汲んで自動的によきにはからってくれるものではないんですよ?
426名無しさん@お腹いっぱい。:2011/05/06(金) 12:29:17.44 ID:OYZPA2nm0
uze-
427名無しさん@お腹いっぱい。:2011/05/06(金) 14:22:30.26 ID:yffq+CgQ0
こんなんだから日本じゃ廃れる一方なんだよ
428名無しさん@お腹いっぱい。:2011/05/06(金) 21:53:43.61 ID:Jl8+gXGS0
>>424
autohotkey_lなら、メニューに任意の画像を指定することで、
項目のサイズが自動的に伸縮すると思う
429名無しさん@お腹いっぱい。:2011/05/06(金) 21:58:29.90 ID:FWiQAM3b0
menuの行ごとの文字列の色を変更できればなあ・・・
430名無しさん@お腹いっぱい。:2011/05/06(金) 23:12:31.12 ID:9cK1Xfe10
menuに縦セパレータを入れて二段メニューにできればなあ…
431名無しさん@お腹いっぱい。:2011/05/06(金) 23:41:15.60 ID:+TpG+iTf0
age
432名無しさん@お腹いっぱい。:2011/05/06(金) 23:41:28.34 ID:o+GCaUnq0
AU3_Spy.exeや窓コンデでまったく表示できないアプリがあります。
どうやって取得できるようになりますか?無理ですか?
433名無しさん@お腹いっぱい。:2011/05/06(金) 23:55:24.58 ID:PEicS9I90
Winspectorを使うんだ!!
434名無しさん@お腹いっぱい。:2011/05/06(金) 23:55:53.01 ID:trq6dD1j0
>>428
へー知りませんでした
L使いなのであとで試してみますm(_ _)m
435名無しさん@お腹いっぱい。:2011/05/08(日) 13:48:11.84 ID:ReI+Pgjk0
>>425
わかってたよ
436名無しさん@お腹いっぱい。:2011/05/08(日) 22:44:51.79 ID:j8xIqPmb0
前スレにあったやつ参考にして2chの特定板のスレタイ検索しようと思ってるんだけど
うまくいかない
Loop, Read, TargetWord.txt{
 WordArray.Insert(A_LoopReadLine)
}
で検索したいタイトルの一部を一行に一つずつ(語ろう とか)かいたテキストからArrayに格納して

Loop, % b.MaxIndex() + 1 {
 If ( (v := b[A_Index-1]) == 0x0A ) {
  NumPut(0, buff, idx, "UChar")
  for index, W_element in WordArray{
   If RegExMatch(StrGet(&buff, "CP932"), "(?P<DatNum>\d+).dat<>(?P<name>" %W_element% "+)\((?P<res>\d+)\)", $)
    MsgBox, % "DatNum`t" $DatNum "`nタイトル`t" $name "`nRes`t" $res
;    Break
;    idx := 0
   }
   idx++
  } else {
  NumPut(b[A_Index-1], buff, idx, "UChar")
  idx++
 }
}
引っかかったスレの記録とかは後回しにして
こうやってるんだけどどこがおかしい?
437名無しさん@お腹いっぱい。:2011/05/09(月) 00:35:01.92 ID:mzGufvXa0
>>436
b := Array()
Loop,Read,TargetWord.txt
{
 b.Insert(A_LoopReadLine)
}
438名無しさん@お腹いっぱい。:2011/05/09(月) 00:38:16.49 ID:mzGufvXa0
Loop,% b.MaxIndex() {
 buff := b[A_Index]
 If RegExMatch(buff,"^(?P<DatNum>\d+)\.dat<>(?P<name>.+?)\((?P<res>\d+)\)$",$) {
  MsgBox,% "DatNum`t" $DatNum "`nタイトル`t" $name "`nRes`t" $res
 }
}
439名無しさん@お腹いっぱい。:2011/05/09(月) 22:16:54.89 ID:1/rFgTn80
vista でスタートボタンって消せる?
440名無しさん@お腹いっぱい。:2011/05/09(月) 22:28:10.01 ID:xBUBKK610
>>438
検索元文字列が無くなる?と思ったけど一応試したら
>If RegExMatch(buff,"^(?P<DatNum>\d+)\.dat<>(?P<name>.+?)\((?P<res>\d+)\)$",$) {
で実行したときにエラーでた

RegExMatchのPattern部分に変数ってねじ込めないの?
441名無しさん@お腹いっぱい。:2011/05/09(月) 22:58:51.93 ID:mzGufvXa0
>>440
すまん。>>436の6行目理解してなかった。
それなら正規表現に検索文字列は入れないでMsgBoxの部分で
InStr($name, W_element)でチェックするほうがいいんじゃないか?
442名無しさん@お腹いっぱい。:2011/05/10(火) 01:27:06.78 ID:CZWR9MZB0
443名無しさん@お腹いっぱい。:2011/05/10(火) 01:30:35.56 ID:XZ4O9vC50
ものすごい単純な質問で申し訳無いですが
無変換とシフトキーの組み合わせで特定のキーを割り当てるときはこういう感じでいいんですよね?


vk1Dsc07B & shift::[

ブラケットキーを割り当てて使おうとしているのですがうまくいきません。
これを書き加えると
Error Invalid hotkey とでます。
つかっているキーボードなどで&が使えなかったりするのでしょうか?
444名無しさん@お腹いっぱい。:2011/05/10(火) 01:40:17.16 ID:vF6wL5fo0
>>443
+vk1Dsc07B::Send,[
445名無しさん@お腹いっぱい。:2011/05/10(火) 01:47:07.38 ID:XZ4O9vC50
>>444
動きました。非常に助かりました。
一時間近く何が間違ってるのか理由を探してグーグル検索してました。。

shiftと無変換の組み合わせをググッていたら
vk1Dsc07B & shiftという記述を使っているような記事がヒットしたのですが
これは間違っているのでしょうか?
446名無しさん@お腹いっぱい。:2011/05/10(火) 04:56:35.20 ID:XZ4O9vC50
すいません。もう一つ質問お願いします。
無変換キーを押すとaキーを押し、その後に左マウスボタンをダブルクリックするという動作をさせたいのですが、
以下のコマンドだとキーを設定しているアプリの全く関係ないコマンドが実行されてしまいます。

vk1Csc079::send a , Click 2

このキーではどこがまずいでしょうか?

ちなみにやりたいことは無変換キーを押すとaキーを押し現在選択されている
ツールからaキーに割り当てられているツールに切り替え
aキーに割り当てられたツールでダブルクリックをすると使えるショートカットを起動させたいのです。
447名無しさん@お腹いっぱい。:2011/05/10(火) 04:57:18.20 ID:XZ4O9vC50
このキー操作を割当てたいのは無変換キーではなく変換キーでした。すいません。
448名無しさん@お腹いっぱい。:2011/05/10(火) 06:02:46.49 ID:XZ4O9vC50
>>446>>447
ですが自己解決しましました。
Sleepをいれればよかったんですね。
お騒がせしました。ありがとうございました。
449名無しさん@お腹いっぱい。:2011/05/10(火) 06:07:28.65 ID:XZ4O9vC50
というかダブルクリックの指定がそのまま文字入力になっていたのが原因でした。
Sleepとかあんまり関係ないですね。
450名無しさん@お腹いっぱい。:2011/05/10(火) 17:11:01.17 ID:RlN679Lp0
AHK からコンピューターをロックさせるとき、"Send, #l" とやってもできるのですが、
Win キーがオンのままロックされてしまって好ましくありません。
どなたかこれを回避する方法についてアドバイスいただけませんか?
SendMessage 等が使えそうなのですが、DllCall 同様理解するのが難しいです…。
451名無しさん@お腹いっぱい。:2011/05/10(火) 17:35:13.13 ID:2dNpcCkA0
DllCall("LockWorkStation")
でいいんじゃねーの?
452名無しさん@お腹いっぱい。:2011/05/10(火) 20:40:39.32 ID:c7c+qZrei
win7だとキー送信ですら拾ってくれないし
DllCallしかないわな
453名無しさん@お腹いっぱい。:2011/05/10(火) 21:02:39.94 ID:1C76+ovm0
>>451 おおすごい! そんな方法があるんですね!! 感動しました。
454名無しさん@お腹いっぱい。:2011/05/10(火) 21:03:26.54 ID:1C76+ovm0
有難うございました (お礼書き忘れました)。
455名無しさん@お腹いっぱい。:2011/05/10(火) 21:05:51.29 ID:RRslZ5ox0
どういたしまして
456名無しさん@お腹いっぱい。:2011/05/10(火) 21:08:05.38 ID:MBXFWrdz0
あちゃー・・・Firefoxを3から4にアップデートしたら、ウインドウタイトルが独自形式になってしまった。
アクティブウインドウがFirefoxかどうかを判別して、いろいろ処理するコードが全部使えなくなった。

4の画面はこんな感じ
http://aquapple.com/wp-content/uploads/2010/05/1005142112.jpg

[1]
WinGetTitle, wT, A
ifinstring,wT,- Mozilla Firefox
 {
 いろいろ
 }

[2]
#IfWinActive ahk_class MozillaUIWindowClass
キー定義
#IfWinActive


この2つで、wTにFirefoxが含まれていたら云々って分岐をしていたのだけど、
1も2も稼働せず。

こういうタイトルを名乗らないソフトの場合は、どうすりゃいいですか?
457名無しさん@お腹いっぱい。:2011/05/10(火) 21:18:43.10 ID:QYeedmRh0
firefoxのメニューバーを表示する
458名無しさん@お腹いっぱい。:2011/05/10(火) 21:21:52.16 ID:g1r3hl280
タイトル表示させる火狐拡張があったような気がしたが
この場合関係無いか
459名無しさん@お腹いっぱい。:2011/05/10(火) 21:47:02.11 ID:gnXGCNER0
タイトル取れるがなあ。うちの環境では。
Firefox 4のahk_classはMozillaWindowClassに変わった。
460名無しさん@お腹いっぱい。:2011/05/10(火) 22:01:47.30 ID:Ko7TLBSG0
ウチでもタイトルとれる
ってか、ウィンドウクラスが MozillaUIWindowClass なのって FireFox や Thunderbird くらいだし
タイトル文字列は誤爆がありうるし、(2)の方法でやるほうが、至極まっとうなやり方だよ。
461名無しさん@お腹いっぱい。:2011/05/11(水) 16:50:41.79 ID:ng9orduD0
>>441
それでうまくいった
ありがとう
462名無しさん@お腹いっぱい。:2011/05/11(水) 21:59:11.28 ID:2G+kmokA0
ペンタブの右クリックやり難いので、ahkで無変換キーに右クリックを当ててるんだが
photoshop cs5では上手く動作しない時があって1晩どうしようか悩んでたんだが、
仮想キーコード使うとダメみたいでスキャンコードのみにしたらちゃんと動いた

vk1d::rbutton ;何故か何回か使うと反応したりしなくなったりする
vk1dsc07b::rbutton ;これもダメ
sc07b::rbutton ;スキャンコードのみだと安定動作

無変換キーってやっぱ扱いがちょっと違うのかな
GetKeyboardStateで見た感じ、無変換キー押すとvk1d以外に
vkf0, vkf2〜vkf6までトグルっぽい動作してるみたいだし

WinXP SP3 ahkバージョン:1.0.48.5
です。
ahk_Lの最新バージョンやxp以外でどうなるかは分からないですけど。一応参考までに。
463名無しさん@お腹いっぱい。:2011/05/12(木) 23:44:58.67 ID:72F6B26S0
今現在、window7 のエクスプローラーのフォルダ表示方法を変えるショートカットを作ってます
自分の場合、フォルダ表示は詳細表示(D)と特大アイコン(X)の表示しか使わないのでその二つを無変換キーで動かそうとしています。

#IfWinActive ahk_class CabinetWClass
vk1Dsc07B::
send,!v
send,d
return
#IfWinActive

#IfWinActive ahk_class CabinetWClass
+vk1Dsc07B::
send,!v
send,x
return
#IfWinActive

こういう感じにalt+v でエクスプローラーの表示メニューを出してそのまま表示方法を切り替える、力技のキー操作で動かすやり方しか思い浮かばなかったのですが
もっと他にスマートな方法はありますかね?もっと効率が良い方法がありましたら教えてください。Autohotkeyを使わなくてもできるようでしたらそれでもいいです。
それとできれば無変換はctrl+cの動作のためにシングルクリックの動作は残しておきたいのですが、無変換ダブルクリックで詳細表示、無変換トリプルクリックで特大アイコン表示としたいのですが
クリック数で特定のキー操作をさせることは可能なのでしょうか?やり方がありましたらそちらの方法も教えてください。
よろしくお願いします。
464名無しさん@お腹いっぱい。:2011/05/13(金) 00:27:00.58 ID:sHvuj4Bz0
後半のみ

「KeyCount() 」で過去ログ検索。

あるいは、

#UseHook
F1::
 F1_Count++
 SetTimer, F1_Command, -300
 Return
F1_Command:
 If (F1_Count = 1)
  MsgBox, シングル
 Else If (F1_Count = 2)
  MsgBox, twice
 Else If (F1_Count >= 3)
  MsgBox, 三回以上!
 F1_Count=0
 Return
465名無しさん@お腹いっぱい。:2011/05/13(金) 03:13:39.14 ID:h4KqeM1l0
Winhideで隠したいくつのウィンドウをWinshowで一気にShowすることってできませんか?
一つ一つをShowすることはできたんですが・・
なにも書かないと 直前のウィンドウを選択するみたいでうまくいきません
466名無しさん@お腹いっぱい。:2011/05/13(金) 04:51:02.29 ID:8SK51Kaz0
GroupAdd使うとか?
467名無しさん@お腹いっぱい。:2011/05/13(金) 08:02:50.37 ID:/rwVFW220
>>464
どうもです。こういう感じに記述したらきちんと動きました。
無変換よりF1のほうがいいですね。ありがとうございました。

#IfWinActive ahk_class CabinetWClass
#UseHook
F1::
F1_Count++
SetTimer,F1_Command, -300
Return
F1_Command:
If (F1_Count = 1)
send,!v+x
Else If (F1_Count = 2)
send,!v+d
Else If (F1_Count = 3)
send,!v+r+{Enter}
Else If (F1_Count >= 4)
{
send,!v
send,a
}
F1_Count=0
Return
#IfWinActive
468名無しさん@お腹いっぱい。:2011/05/13(金) 08:58:33.05 ID:Hk55/BTm0
>>465
GroupAdd、正規表現、配列のループでできる

; 配列のループ処理
For k,v in ["ahk_class クラス1", "ahk_class クラス2", "ahk_class クラス3"]
WinShow, %v%
469名無しさん@お腹いっぱい。:2011/05/13(金) 09:22:26.24 ID:/rwVFW220
#IfWinActive, ahk_group Copy_and_Paste
470名無しさん@お腹いっぱい。:2011/05/13(金) 09:23:13.50 ID:/rwVFW220
誤爆ですすいません
471名無しさん@お腹いっぱい。:2011/05/15(日) 21:16:29.22 ID:hue7Uzbk0
AHKでGUI作ってるんだけど、リストビューの幅を取得する方法ってないかな?
幅の指定は LV_Modify でできるけど取得する関数が見当たらない
472名無しさん@お腹いっぱい。:2011/05/15(日) 21:20:28.58 ID:hue7Uzbk0
間違えた LV_ModifyCol だった
473名無しさん@お腹いっぱい。:2011/05/15(日) 22:54:01.98 ID:hue7Uzbk0
ごめん、自己解決。SendMessageでできた
474名無しさん@お腹いっぱい。:2011/05/18(水) 06:24:07.80 ID:cwIoNbhK0
スレチになるかもしれませんが、AHKで
タスクトレイに常駐しているEvernoteを終了する方法はないでしょうか?

今、
run C:\TrayCommand\traycmd.exe /R /K=UE C:\Evernote3.5\Evernote.exe
run C:\TrayCommand\traycmd.exe /R /K=UE C:\Evernote3.5\EvernoteTray.exe
としているのですが、ノーリアクションです。

このTrayCommandに拘らないので、EvernoteをAHKから終了する方法を教えてください
475名無しさん@お腹いっぱい。:2011/05/18(水) 06:26:47.15 ID:mtWnFqyp0
evernoteつかってないからわかんないけど、wincloseじゃダメなの?
476名無しさん@お腹いっぱい。:2011/05/18(水) 06:38:38.88 ID:cwIoNbhK0
タスクバーにevernoteがなくても、タスクトレイに常駐しているのです。(メインウインドウをとじてもタスクトレイにいる。)
AHK詳しくないのですが、それだとwincloseではタスクトレイのソフトを終了できないですよね?
Process, close プロセス名でちょこっとやったのですが無理でした。(これは中途半端なので余地はまだまだあるのですがわかりません)
477名無しさん@お腹いっぱい。:2011/05/18(水) 06:55:03.60 ID:rzgdwodX0
TrayCommandはAHK非経由では動いてんの?
プロンプトやバッチからj実行して試してみた?

wincloseつかうなら DetectHiddenWindows, On にしてみ
478名無しさん@お腹いっぱい。:2011/05/18(水) 16:11:23.83 ID:ss71f63x0
タスクトレイにいるバックグラウンドタスクはコントロールできないかもね
できる鉄板があれば知りたいが
479名無しさん@お腹いっぱい。:2011/05/18(水) 16:22:01.33 ID:cwIoNbhK0
いままでタスクトレイのアイコン関係はAHK経由でTrayCommandで全部やっていました(少ないけど成功していました。います)。
EvernoteはTrayCommandでは無理かもしれませんね。

プロンプトやパッチというのはわからないので^^;、実行していません。
DetectHiddenWindows, Onを、スクリプトのautosection(?)に書きましたが無理でした。

まぁ手で一個ぐらいやればいいんでしょうが気になるので。
480名無しさん@お腹いっぱい。:2011/05/18(水) 17:12:47.54 ID:ss71f63x0
Process, Exist, PID-or-Name
でプロセスIDを探し、
Process, Close, PID-or-Name
で該当プロセスをクローズする

じゃダメかな?
481名無しさん@お腹いっぱい。:2011/05/18(水) 17:18:27.02 ID:ss71f63x0
#c::
Process, Exist, EvernoteTray.exe
Process, Close, %ErrorLevel%
return

で一応死んでくれたよ
482名無しさん@お腹いっぱい。:2011/05/18(水) 17:21:27.33 ID:mtWnFqyp0
このスレでよくある話だけど、なんのために「Evernoteを終了」させたいのか
が抜けてる。これを書くと、違った視点で問題解決方法が見つかることが多いのだが。
483名無しさん@お腹いっぱい。:2011/05/19(木) 07:52:04.79 ID:OtH7ohA80
PC買い換えて64bitにしたらちゃんと動かなくなったスクリプト多数で
関係なさそうなものまで動かなくなるし
原因突き止めて直すのがめんどくさすぎる・・・
484名無しさん@お腹いっぱい。:2011/05/19(木) 09:28:49.49 ID:O/UKtCEE0
開発時は動いていたのに、使っている内に微妙に動作が変わる場合がある
スクリプトリセットかけて治る物ならいいが、改善しない場合もある
そういう性質の物なんだろうが、なかなかスッキリしない
485名無しさん@お腹いっぱい。:2011/05/19(木) 10:55:35.18 ID:fIjeDx8W0
AHKは、機嫌の良否があるね。

5スレくらい前だと思うけど、XPのPCを数日以上使うと、スクリプトの動作速度が異常に遅くなり、
スクリプトを再起動しても直らず、OSを再起動しないと回復しないって症状が話題に出てたはず。

俺はその当時、Pen4を使ってたので、その症状がでたときの影響が大きくて悩んだ。
いまはマルチコアPCにして、その症状が出てるかどうかすら判別できないほど快適になって、
悩みも消えてしまった。
486名無しさん@お腹いっぱい。:2011/05/19(木) 17:05:24.83 ID:h7mLc6w40
>>483
カスタマイズ好きにはそういう制限が非常に面倒くさくて困るね。
7にするにしても64bit版は選ばないほうがいいのかな。
メモリも4Gまで不要な使い方しかしないなら割り切ったほうがいいのかな。
487名無しさん@お腹いっぱい。:2011/05/19(木) 19:33:39.96 ID:JWQLhFNBi
家はXPx86で会社だとWin7x64
常駐系スクリプトは容易に動かないけどx86版でコンパイル済みのは
結構動いちゃうという罠

DllCallとかVarSetcapacityとかこってりしているけど
それなりに動作するから不思議

新機能の COM とかで複数エクセルを集計するのとかの
書き捨てスクリプトはx64でも無問題なんだけどな
488名無しさん@お腹いっぱい。:2011/05/19(木) 20:36:18.14 ID:sbYvm1m5P
Ctrl押しっぱなしになる不具合が最近おきない。
治ったの?
489名無しさん@お腹いっぱい。:2011/05/19(木) 20:55:15.77 ID:aoFJgv/k0
>>481
ありがとうございます。それで成功しました。助かりました。
Process, close, EvernoteTray.exe
とはしたことがあったのですが、成功せず、後ろのNameをいろいろ変えていました。
この掲示版でおしえてばかりしていますが、ほんと教えてくれる方いなければ
こんな便利なソフト使えませんでした。

evernoteの終了の目的は、ゲームをする際に余分に起動しているソフトをまとめて終了する
あるいは戻すためでした。
Evernoteは神ソフトだとおもっているのでこのスレでも沢山の方がつかっていると思っていました。

64bitのwindows7やめとこう。リスク高いね
490名無しさん@お腹いっぱい。:2011/05/19(木) 21:49:11.95 ID:zw5p93r60
>>489
よかったね
491名無しさん@お腹いっぱい。:2011/05/19(木) 21:52:08.26 ID:zw5p93r60
Process, close, EvernoteTray.exe



Process, Exist, EvernoteTray.exe
Process, Close, %ErrorLevel%

で何が違うのか?よくわからないところだ
492名無しさん@お腹いっぱい。:2011/05/24(火) 19:04:12.51 ID:Rotz7FeU0
1つの厄介なキーをWindows上で粘着しないでください
493名無しさん@お腹いっぱい。:2011/05/25(水) 05:10:32.89 ID:BN2s9W0l0
>>492
Write it in English
494名無しさん@お腹いっぱい。:2011/05/26(木) 09:45:39.13 ID:Wgk//lNe0
>>488
うちもいつのまにか直っていた
リピートなんかでフックに割り込まれるのもなくなった
XP Home SP3
495名無しさん@お腹いっぱい。:2011/05/26(木) 20:21:46.94 ID:Wu5p74c40
AHKで作ったGUIリストビューの行を
交互に色分けしたいのですが
やっぱWindowsAPI勉強しないとダメですか?
496名無しさん@お腹いっぱい。:2011/05/26(木) 23:50:43.68 ID:RoYVCk8li
現状その機能はないし、開発ベクトルもそっちに向いてないし
そうなるね
497名無しさん@お腹いっぱい。:2011/05/26(木) 23:57:40.82 ID:79EzEBJO0
凝ったGUI作るならC#とか習った方がいいんじゃないかな。タダでできるよ
498名無しさん@お腹いっぱい。:2011/05/27(金) 09:16:31.63 ID:YPJ0DkxE0
2010からLiveアカウント必須になったしなんだかなーって思うけどね
499名無しさん@お腹いっぱい。:2011/05/27(金) 09:36:43.91 ID:cxMJGo9H0
    〃〃∩  _, ,_
     ⊂⌒( `Д´) < ヤダヤダ!API勉強するのめんどいから
       `ヽ_つ__つ        AHK使ってるのに
              ジタバタ
      _, ,_
     (`Д´ ∩ < 今更コンパイラ言語勉強するのもヤダヤダ
     ⊂   (
       ヽ∩ つ  ジタバタ
         〃〃

       ∩  _, ,_
     ⊂⌒(  ゚∀゚) < ・・・と思ってたらこんなん見つけた
       `ヽ_つ ⊂ノ


Listview colors for individual lines
http://www.autohotkey.com/forum/topic9266.html
500名無しさん@お腹いっぱい。:2011/05/27(金) 09:42:28.66 ID:iPZLdD0o0
C#でINIファイルにデータセットするダイアログ作って
AHKから呼び出すって程度なら
半日くらいのお勉強でできそうではある。
501名無しさん@お腹いっぱい。:2011/05/30(月) 00:21:20.42 ID:KH3VV7hU0
Compile_AHK II - for those who compile!
http://www.autohotkey.com/forum/topic22975.html

このスクリプトを使ってexe化したら、設定を書き出したiniができたのですが、
このiniを利用してスクリプトをコマンドラインからexe化できないものでしょうか?
毎回右クリックからexe化するのは手間がかかるので。
502名無しさん@お腹いっぱい。:2011/05/30(月) 03:25:39.94 ID:uWPbd16O0
>>501
試してないけど
Compile_AHK.exe /auto path\to\script.ahk

The first of two Parameters has to be:
/auto to Compile with existing settings from the last compilation
/nogui to Compile with existing settings and no warnings
The second Parameter has to be the full path of a script.
503名無しさん@お腹いっぱい。:2011/05/30(月) 09:07:29.65 ID:ryZW2KN10
コンパイルしたexeを見つけるとウィルスソフトが激怒するのは何とかならないのでしょうか
504名無しさん@お腹いっぱい。:2011/05/30(月) 09:59:48.73 ID:hMI+7/pS0
UPXをOFFにしてもダメ?
505名無しさん@お腹いっぱい。:2011/05/30(月) 17:18:31.67 ID:Qms/HVgs0
配布されているスクリプトをAutHotKey.iniに組み込んでまとめる方法はどんなものがありますか?

こちらのようにAutoHotKeyの便利なスクリプトが配布されていることがたまにありますが

Windows7のショートカットを真似するようなスクリプトです
Windows 7 Shortcuts Enables the Best Win7 Shortcuts in XP or Vista - Lifehacker
ttp://lifehacker.com/5133039/windows-7-shortcuts-enables-the-best-win7-shortcuts-in-xp-or-vista
ttp://cache.gawker.com/assets/images/lifehacker/2009/02/Windows_7_Shortcuts_0.4_02.zip

このスクリプトをダウンロードして既存のスクリプトに組み込もうとAutHotKey.iniに
#include Windows 7 0.4.ahk
を書き足したのですが、エラーは起きないものWindows 7 0.4.ahkで書かれているショートカットやメニューなどの機能が働いてくれません。
Windows 7 0.4.ahk単体を直接AutoHotKeyで実行したところ無事に動いてくれます。
できれば、プロセスをまとめたいのですが、上手く組み込む方法ないでしょうか

>>503-504
UPX付きでコンパイルすると高確率でアンチウイルスが怒りますね
506名無しさん@お腹いっぱい。:2011/05/30(月) 17:25:12.00 ID:Qms/HVgs0
過去ログの http://pc12.2ch.net/test/read.cgi/software/1265518996/562- に#includeをどうすればいいのかあった
#includeされる側のreturnされているのを外せばいいのか
関数にまとめて呼び出せるようにしたほうがいいかもしれんけど
507名無しさん@お腹いっぱい。:2011/05/30(月) 18:43:01.97 ID:L+QyaXp90
Auto-executeセクションについて勉強しなはれ
508名無しさん@お腹いっぱい。:2011/06/07(火) 16:45:11.38 ID:oRehokKf0
ある業務アプリにデータを入力するときに、量が多すぎるのでエクセルにデータを
まとめてAutoHotkeyで業務アプリにデータを自動で入れていきたいのですが効率が
悪くて悩んでます

エクセルの指定セルの値をコピーして、ある業務アプリの入力欄にペーストしていく
スクリプトを作りたいのですがうまくいきません。
たとえば、エクセルのA1からC10まで以下の様な感じにデータが入っている場合

  A    B    C
1 種類  数量  価格
2 りんご  10  100
3 みかん 20  300
4 バナナ  5   50
 ---以下省略---

509508:2011/06/07(火) 16:47:28.07 ID:oRehokKf0
続き

現状の流れだと無理やり
1 エクセルをアクティブにする
2 A1のセルをコピーする
3 業務アプリをアクティブにする
4 マウスカーソルをペーストしたい座標(入力欄)に移動する
5 値をペースト
6 1に戻り、A2のセルをコピー(セルを一つずつ移動させていく)
7 また指定アプリをアクティブにして別の指定項目に移動させてペースト

と繰り返す流れなのですが、うまく動かないし、流れを見てのとおり効率が悪いです
A列からC列のセルを範囲指定してクリップボードにコピーし、指定アプリを
アクティブにして、タブで区切られているであろうクリップボードの内容を順番に
ペーストしていきたいのですが、難しすぎて分かりません。

何かいいアイデアや参考になるスクリプトのサンプルがあれば教えて頂けないで
しょうか?
510名無しさん@お腹いっぱい。:2011/06/07(火) 17:48:03.20 ID:Xqqe5vgz0
for文で回して、そのつど座標をずらしてコピーペーストするのが一番簡単だろうけど、

俺だったら、エクセルのデータをまず全部抜き取って、セルごとに変数で保管して、
そのあと業務アプリにまとめて貼る方式にする。

サンプルとかいらないほど基本的な構文で出来るはず。
511名無しさん@お腹いっぱい。:2011/06/07(火) 17:49:09.14 ID:Xqqe5vgz0
forじゃねえや。loopだ
512508:2011/06/07(火) 18:15:59.01 ID:oRehokKf0
まだ、AHKに触りだして一月も経っていないので、処理はなんとなくイメージできる
のですが、具体的な構文がよく分からないんです。

>俺だったら、エクセルのデータをまず全部抜き取って、セルごとに変数で保管して、
>そのあと業務アプリにまとめて貼る方式にする。

自分も入力したいエクセルデータをまとめて抜き取ってから、業務アプリに切替えて
入力すべき座標に入力すべくデータをペーストしていくのが効率がいいと考えては
いるのですが・・・

AHKでエクセルを操作したり、エクセルデータの扱い方が分かりません。
513名無しさん@お腹いっぱい。:2011/06/07(火) 19:23:26.31 ID:DOPWU0C30
プログラムからのエクセル操作はCOM経由でできるはずだぞ
「AutoHotkey COM Excel」でググルといくつかでてくる
それよりも手動でエクセルのデータをcsvで保存して、それをAHKで読み込んだらいいと思う
難しいならいきなり自動化せずに、まずは簡単なところからいきましょう
csvやタブ区切りの処理「AutoHotkey csv」でググればいい
英語での検索を恐れないといいよ。公式のサイトのフォーラムで同じようなことをしている人が引っかかるし。
514名無しさん@お腹いっぱい。:2011/06/07(火) 19:45:47.94 ID:b6rXGL8a0
Loop,PARSEで改行分けて、StringSplitでタブ分けるならこんな感じ
A1からC2をエクセルでコピーすると、以下のような文字列になるから
「A1\tA2\r\nB1\tB2\r\nC1\tC2」

Loop, parse, clipboard, `n, `r
StringSplit, g%A_Index%r, A_LoopField, %A_Tab%
MsgBox,% g1r1 A_Tab g1r2 "`n" g2r1 A_Tab g2r2 "`n" g3r1 A_Tab g3r2


とりあえずエクセルで縦3横2コピーしてから上3行実行してみれ
んでリファレンスよく読んでがんばれ
515名無しさん@お腹いっぱい。:2011/06/07(火) 20:58:26.23 ID:nnT5Hpis0
昔似たようなことを Excel→Accessフォーム間でやってたような

皆が言ってるように一括でデータ抽出するほうがいいと思うが
Excel上の操作が不可欠なところはAHKでやろうとせずExcel側のマクロ使ったほうが確実かも
516名無しさん@お腹いっぱい。:2011/06/07(火) 22:23:43.74 ID:AVe7TOvp0
ADO 使えばいいんでわないだろうか
517508:2011/06/07(火) 23:25:10.17 ID:oRehokKf0
みなさんレスありがとうございます

まずは>>514のコードすらよく分からないので、>>513のキーワードで
ググリながらコードを解析しつつ勉強してきます。

VBなら多少できるのですが、AHKの独自の構文にまだ慣れていません。
IF文もVBとちょっと違うので、入れ子とかうまく使えなかったりするレベルなので

また何か分からなかったら質問させてください
518名無しさん@お腹いっぱい。:2011/06/07(火) 23:44:47.06 ID:1einNjsl0
Esc & i::Send,{Down}
というマップがあるとき
shift, esc, i で Send, +{Down} になるようにしたいんですが
一番上の命令を書き換えないと無理でしょうか?
519名無しさん@お腹いっぱい。:2011/06/07(火) 23:45:42.72 ID:AVe7TOvp0
VBスクリプト書けるなら、AHKとコラボするとずっと楽だよ
このスレや過去ログを ScriptControl で検索するといい
520名無しさん@お腹いっぱい。:2011/06/07(火) 23:50:02.25 ID:AVe7TOvp0
>>518
Esc & i::Send, {Blind}{Down}
521名無しさん@お腹いっぱい。:2011/06/08(水) 01:44:24.38 ID:ewCEIaPR0
そうだね
VB、VBスクリプトどっちでもいいけど?そちらに慣れているなら、
VBからAutoHotKeyを使うとか、文法がしっかりして機能が似ているAutoItを使うのがいいかも知れないな
522名無しさん@お腹いっぱい。:2011/06/08(水) 22:51:40.89 ID:2BxwT9Gg0
キーフックを動的に設定する方法が思いつかないので質問します。
外部ファイルを読み込んで、それを元にキーフックと処理を設定できないでしょうか?
たとえば、外部ファイルに
f->send rr
d->msgbox ee
と書くと
f::send rr
d::msgbox ee
として動作するようにしたいです
fやdはautohotkeyで設定できるものなら何でも許容させたいのですが。
523名無しさん@お腹いっぱい。:2011/06/08(水) 23:08:27.55 ID:wgxm9R500
ホットキーの動的割り当ては Hotkeyコマンド
Sendとかmsgboxとかは1コマンドづつ関数でラップして動的関数で適当に飛ばすとか

もしくは外部ファイルをAHKのコマンドルールに置換したtmp.ahk吐き出して実行するスクリプトとか
(例でいうと -> を :: にするようなの)
524名無しさん@お腹いっぱい。:2011/06/08(水) 23:26:09.23 ID:lTbkeIb40
msgboxとか入れたいなら
ahkファイルを出力しちゃうのが早いだろうね
んで#includeするとかrunするとか
525名無しさん@お腹いっぱい。:2011/06/08(水) 23:45:55.22 ID:qN4bLpE2i
まぁ、パースして一時ファイルに吐き出すのが確実だわな
パース結果が正しいかどうかの検証もできるし

どうしても一時ファイルが嫌なら、Autohotkey.dll 使って、
AHK の中に AHK もう一個立ち上げるっつー方法もあるが
526名無しさん@お腹いっぱい。:2011/06/09(木) 00:53:12.81 ID:aPg0hWMp0
>>523-525
一時ファイルを作成するのですか
思いつきませんでした。
autohotkey.dllの採用は見送り、一時ファイルで対処したいと思います
ありがとうございます
527名無しさん@お腹いっぱい。:2011/06/10(金) 15:01:13.48 ID:JO3Wub6T0
clipsaved := clipboard
Loop, Read, Urlmemo.txt
{
 if(%A_LoopReadLine%==%clipsaved%)
  {
   MsgBox, すでに追加済みです。
   return
  }
 }
FileAppend, %clipsaved%, Urlmemo.txt

1行1URLのテキストにクリップボードにあるURLを追記していきたいんだけど
if(%A_LoopReadLine%==%clipsaved%)
でillegalcharacterがあるっていうエラーが出る
たぶんURLの/か.だと思うんだけどどうしたらいいかな?
528名無しさん@お腹いっぱい。:2011/06/10(金) 15:41:16.35 ID:U041KPqV0
俺も似たようなことをやってるけど、loop,readは使わず

 Loop, Read, Urlmemo.txt
 ↓
 fileread,data,Urlmemo.txt

loop,parse,data,`n,`r`n
{
 %A_LoopReadLine%
 ↓
 %A_LoopField%
}

これでやってるけど、とくに問題は起きてないな
あとこの方法だと、テキストファイル全体に対してifinstringや正規表現の検索が一度で出来て便利。
529名無しさん@お腹いっぱい。:2011/06/10(金) 15:55:38.28 ID:jm8xWEgD0
>>527
そういう時はまず /や.のないテキスト用意して実行してみ
やってみりゃわかるがそれでもエラーは出る、問題は別の所

> if(%A_LoopReadLine%==%clipsaved%)
()とるか %%とるか する。

ファイルの中身が "hoge"
クリップボードが "hage" だと仮定して
この文ではhogeとhageの文字列比較ではなく、変数hogeと変数hageの比較をしていることになる
それと、 == で比較すると厳密な比較になって大文字小文字違いでも弾かれる
文字列比較なら Instr() か StringGetPos使うほうがいいと思う

ついでに FileAppendは行単位で追加されるわけじゃないから任意に改行入れてやる必要がある
530名無しさん@お腹いっぱい。:2011/06/10(金) 16:39:37.43 ID:JO3Wub6T0
>>528
教えてくれたのでもエラーでたけど
%で括ってるのをとったらうまくいった
ありがとう

逆に追加じゃ無くて削除したかったら
fileread,data,Urlmemo.txt
RegExReplace(data, %clipboard%`r`n ,"")
しかない?
531名無しさん@お腹いっぱい。:2011/06/10(金) 16:42:25.85 ID:JO3Wub6T0
>>529
%とったらうまくいった
詳しく教えてくれてありがとう
532名無しさん@お腹いっぱい。:2011/06/11(土) 15:06:10.85 ID:L0Xz6V2Y0
Windows 7でタスクバー中クリックで閉じるをやるにはどうすればいい?
LButton送信、待機、ウィンドウを閉じるだとなんか不安なんだが。。
533名無しさん@お腹いっぱい。:2011/06/11(土) 19:59:33.89 ID:oaIwotta0
>>508
つーかさ、ExcelのVBA使って、業務アプリに直接入力した方が遙かに早くね?

業務アプリの入力ボックスのハンドル取得して、SendMessageでポポポポーンと
534名無しさん@お腹いっぱい。:2011/06/11(土) 20:00:31.18 ID:XAB5SrUZ0
Windows7のエクスプローラにPostMessage(WM_Command)が効かない(他のWinOSでは効く)
本家で同じような質問してるやつがいるけどレスが無い
環境のせいのような気もするしどうしたものか
535名無しさん@お腹いっぱい。:2011/06/11(土) 20:01:34.52 ID:nlQnFY2b0
>>532
左クリック送ってアクティブ化
アクティブウィンドウを取得
WinClose の流れでいいんでないの
536名無しさん@お腹いっぱい。:2011/06/11(土) 20:44:11.82 ID:wNvu3ISK0
>>534
Windows7のエクスプローラ(つーかVista以降だけど)は、コマンドを受けるのが
トップレベルウィンドウ(CabinetWClass)じゃなくてその子の
ShellTabWindowClassクラスのウィンドウになっている。

親からクラス名でウィンドウハンドル探せばいけるだろ
537名無しさん@お腹いっぱい。:2011/06/11(土) 21:04:09.95 ID:XAB5SrUZ0
>>536
そっちでやってんだけど効かないんだよな
なんか見落としがあるのかなあ
538名無しさん@お腹いっぱい。:2011/06/11(土) 21:19:45.95 ID:XAB5SrUZ0
すまん、レス書いた途端単純ミスに気づいた。すまぬw
539名無しさん@お腹いっぱい。:2011/06/12(日) 00:20:16.80 ID:UkKSSyyqP
; マウスポインタの左上座標が含まれるモニタのワークエリアを取得する・取得に成功したらTrueを返す
GetCurrentMonitorWorkArea(ByRef _mLeft, ByRef _mTop, ByRef _mRight, ByRef _mBottom){
  CoordMode, Mouse, Screen
  MouseGetPos, x, y
  SysGet, mCount, MonitorCount
  Loop, %mCount%
  {
    SysGet, m, MonitorWorkArea, %A_Index%
    if(mLeft <= x && x < mRight && mTop <= y && y < mBottom){
      _mLeft := mLeft
      _mTop := mTop
      _mRight := mRight
      _mBottom := mBottom
ココ→   return True
    }
  }
  return False
}

ココ→の場所で
「Return's parameter should be blank except inside a function.」
と出てしまうのですが、どういう意味でしょうか?
ほぼ1年ぶりにAHK_L本体を更新したらそれまでは問題なかったのに上のエラーを吐くようになりました
540539:2011/06/12(日) 00:26:45.37 ID:UkKSSyyqP
同じスクリプトをUTF-8で保存しなおしたらもとに戻りました
なんでだろう
541名無しさん@お腹いっぱい。:2011/06/12(日) 00:49:29.52 ID:bcr96gD90
無変換キーにスペースキーを割り当てる記述はこれでいいと思うんですが

vk1Dsc07B::send, {Space}

この書き方だとnotepadやエクスプローラーやブラウザなどではきちんとスペースキーがおされたことになるのですが
ペイントソフト全般(フォトショップ、イラストレーター、Saiなど)ではSpaceキーのショートカットで
使うハンドツール(手のひらツール)が機能しないのですが何か書き足りないのでしょうか?
542名無しさん@お腹いっぱい。:2011/06/12(日) 00:59:30.97 ID:bcr96gD90
>>541
もう少し補足しますと
一応Spaceキー自体は入力されてるようなんですが
無変換キーを押しっぱなしにしても、スペースキーが連打されてるようになってるみたいです。
無変換キーを押しっぱなしにしたらスペースキーが押しっぱなしになっているようにするスクリプトの書き方みたいなものが必要だったりするのでしょうか?
543名無しさん@お腹いっぱい。:2011/06/12(日) 01:10:16.97 ID:znhZxXKI0
リマップはどう?
vk1Dsc07B::Space
544名無しさん@お腹いっぱい。:2011/06/12(日) 01:21:53.38 ID:bcr96gD90
>>543
動きましたありがとうございます。

けれど問題があって、自力で解決しようと思って質問に書かなかったんですが
自分が本来やりたかったのが

無変換キーにスペースキーとシフトキー同時押し
エスケープキーにスペースキーとシフトキー同時押しで左マウスボタンダブルクリック

という動作でして、リマップだとこういったキーの組み合わせができないみたいですね。
ただちょっと調べたところ以下の書き方で機能しました。お手数かけました。

vk1Dsc07B::
SendInput {Space down}
SendInput {Shift down}
keywait, vk1Dsc07B
SendInput {Space up}
SendInput {Shift up}
return


esc::
SendInput {Space down}
SendInput {Shift down}
SendInput {Lbutton 2}
keywait, esc
SendInput {Space up}
SendInput {Shift up}
return
545名無しさん@お腹いっぱい。:2011/06/12(日) 09:56:42.55 ID:wlhLBn5v0
押下と押下解除はイベント分けられるよ

vk1Dsc07B::send, {Space down}
vk1Dsc07B up ::send, {Space up}
546名無しさん@お腹いっぱい。:2011/06/12(日) 15:04:19.19 ID:y46RR7aZ0
半年前の日付はどうやって取得すれば良いんでしょう?
例えば今日の日付 (2011/06/12) に対して 2011/01/12 を返す、というものです。
AHK の質問というよりアルゴリズムの問題なのですけど、ここ数日難儀しています。
宜しくお願いします。
547名無しさん@お腹いっぱい。:2011/06/12(日) 15:32:51.32 ID:iG+1mXT/0
今のAutoHotKey_Lってデフォで標準入出力扱えたりする?
クリップボードの内容にPerlワンライナーで処理させるGUIアプリ作りたいんだが。
548名無しさん@お腹いっぱい。:2011/06/12(日) 15:57:12.65 ID:spOIPxtM0
>>546
Envadd,YYYYMMDDHH24MISS形式が入ってる変数名,% -365/2,days
何日かズレるかも
549名無しさん@お腹いっぱい。:2011/06/12(日) 18:13:10.17 ID:VD1LELo30
>>546
俺は日付、時間計算ならUNIX時間に変換した方がメンテ楽だった。
182日前を計算したいならこんなの。

;現在時刻をUNIX時間に変換
T = %A_Now%
T -= 1970,s
;現在のUNIX時間から182日前を計算
six += T - 15724800
;182日前のUNIX時間をYYYYMMDDHH24MISS形式に
S = 1970
S += six,s
;YYYYMMDDHH24MISS形式を2011/01/12等に
FormatTime, TimeString, %S%, yyyy/MM/dd
550546:2011/06/12(日) 21:32:08.37 ID:iQaCZCeR0
>>548,549 助言ありがとうございました。
お二人のレスみてたらこんなのを思いつき、目的を果たすことができました。

Msgbox, % PreviousMonth(A_Now, 6) A_Day
PreviousMonth(date, value)
{
Loop, % value
{
date := SubStr(date, 1, 6) "01"
date += -1, D
}
Return, % SubStr(date, 1, 6)
}

しかも今日の半年前は 2011/01/12 でなくて 2010/12/12 でした…。
551名無しさん@お腹いっぱい。:2011/06/12(日) 21:38:28.24 ID:YVcORIIG0
質問です。OSが64bitか32bitか、判別する関数なり方法はありますか?

ifexist,C:\Program Files (x86)
msgbox,64bit
else
msgbox,32bit

じゃ不確実ですかね?
552名無しさん@お腹いっぱい。:2011/06/12(日) 21:50:15.81 ID:QNJ2wNVA0
A_PtrSize ポインタの占めるバイト数を格納。32ビットでは4、64ビットでは8となる。
https://sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/index
とか?
553名無しさん@お腹いっぱい。:2011/06/12(日) 21:55:53.21 ID:1Byg1OQO0
それだと AHK x86 @ Win x64 で 4bytes(32bits) になるような
妥協的だが、AHKだけで判断するなら >>551 でよさそうな感じ
554名無しさん@お腹いっぱい。:2011/06/12(日) 23:46:23.10 ID:YVcORIIG0
>>552-553
thxです。
とりいそぎ、最初に書いた原始的な方法で分岐させることにします。
555名無しさん@お腹いっぱい。:2011/06/13(月) 00:19:16.47 ID:L/WK0a/S0
>>550
すげえw強引すぎてちょっと感動したw
文字連結と引き算の順番を整えればもっと簡単に
年月日が分かれてないならRegExMatchとかで分けないとだめだけど


kyou := A_YYYY A_MM A_DD
mukasi := A_MM > 6 ? (A_YYYY A_MM) -6 A_DD : (A_YYYY -1 A_MM) +12-6 A_DD
MsgBox,% kyou "`n" mukasi
556名無しさん@お腹いっぱい。:2011/06/13(月) 01:22:03.24 ID:ntDlo9QJ0
常に最前面はできたんですが常に最背面ってAHKでできますかね?
公式のフォーラムとかをみてもそれらしいスクリプトが見つけられませんでした。
特定のアプリが事あるごとに最前面にでてきて邪魔なので制御したいんですが無理でしょうか?
557名無しさん@お腹いっぱい。:2011/06/13(月) 01:28:07.50 ID:aoKmuV6+0
Windowsにそういう機能はがないからしゃーない

DllCall で デストップの子ウィンドウにしちまうって手も無くはないが
558名無しさん@お腹いっぱい。:2011/06/13(月) 01:31:11.81 ID:ntDlo9QJ0
>>557
そうですか。
デスクトップの小ウィンドウというのがどういう機能が想像できませんが
やることはこのスクリプトと似たようなことですかね?
それらしい解決策がRajatというユーザーが公開していたこれしかなかったんですが使い方がわからずです。
http://www.autohotkey.com/forum/viewtopic.php?t=4098
559名無しさん@お腹いっぱい。:2011/06/13(月) 01:54:25.51 ID:lGcx/G4J0
原始的な方法として、ループ回してそのウィンドウが前に出てきたら直前のウィンドウを前に出し直す、って方法はあるだろうけどね
560名無しさん@お腹いっぱい。:2011/06/13(月) 03:58:58.18 ID:6Oe/Afel0
俺も>>556と同じことをやりたいんだよなぁ。
デスクトップの最背面に、スクリプトやPCの動作状況を表示させたい。

LinuxでいうConkyみたいな。このスクショの右にあるテキスト。
http://kasshi.no-blog.jp/photos/uncategorized/2009/02/23/conky.jpg

こんな感じのテキストを常に最背面に置きたいけど、現状は

Gui, +ToolWindow -Caption

でウインドウを枠なし属性で透明にして表示させて、手動で他のウインドウを
手前に出しまくって、人力で背面化させてる。何かうまいやりかたないかな。
561名無しさん@お腹いっぱい。:2011/06/13(月) 04:03:18.90 ID:6Oe/Afel0
・・・と、同じことをやりたいと思ってたら違うようだな。
おれがやりたいのは、AHKで生成したGUIの最背面配置だった。

>>556
>特定のアプリが事あるごとに最前面にでてきて邪魔

これは、ifwinactiveで検出して、速攻でWinMinimizeさせたら解決するんじゃ?
562名無しさん@お腹いっぱい。:2011/06/13(月) 05:18:14.94 ID:nMmyHBWI0
>>550
月末考慮してないけどいいのか?
563名無しさん@お腹いっぱい。:2011/06/13(月) 07:46:18.79 ID:deQXPhtz0
>>560
winset,bottom
564546:2011/06/13(月) 13:50:13.09 ID:kIU82ML30
>>555 それもスマートでいいですね。
>>562 該当日なしでも良いので、>>550 で大丈夫です。
565546:2011/06/13(月) 14:53:54.09 ID:kIU82ML30
結局 >>555 を採用させていただきました。ありがとうございました。
566名無しさん@お腹いっぱい。:2011/06/14(火) 17:14:27.93 ID:7lkHPkXr0
>>563
ありがとう、それで出来ました。
567名無しさん@お腹いっぱい。:2011/06/17(金) 14:28:11.02 ID:LzNS2WPL0
>>560
DllCall("SetParent", "uint", WinExist(), "uint", Window_ID)
これでahk_class Progman(背景ウインドウ)の配下にしてしまえばおk
戻す時はWindow_IDを空にすること
BBLeanの場合は確かahk_class BackgroundWindowClassでよかった気がする

ところで、流行らせるページの「タスクトレイに最小化」って、
AHK_Lの方でUTF-8に変換してから使ってみたんだけど、
どう足掻いてもTeraPadでは正常に動作しないみたい
しかもツールチップには頭文字しか表示されないし・・・・

誰かAPIとかDLLに詳しい人が、組み込み易い修正版出してくれないかな


568名無しさん@お腹いっぱい。:2011/06/17(金) 17:14:23.81 ID:mHvLVeVH0
組込み向けにコード整理だけして放置した奴ならあった。見やすくなってるかは微妙
ttp://www6.atwiki.jp/eamat/pub/others/MinimizeToTray_Mod.zip
※UTF-8変換でAHK_Lでも動いたけどツールチップ化けはそのまま
NOTIFYICONDATA 構造体のcbSize/szTipあたりをどうにかすればいいのかな
(AHK_L使いじゃないのでよく分からない、自力でどうにかして下さい)

ちなみにTeraPad格納はうちではオリジナルで問題なく動作したよ
WinXP SP3
AHK_L unicode 1.0.48.5
TeraPad 1.0.8
MinimizeToTray.ahk (original→UTF-8コード変換)
569名無しさん@お腹いっぱい。:2011/06/17(金) 18:20:17.91 ID:p2+4hcXIP
サイズ
size := 4    ;DWORD cbSize
+ A_PtrSize  ;HWND hWnd
+ 4       ;UINT uID
+ 4       ;UINT uFlags
+ 4       ;UINT uCallbackMessage
+ A_PtrSize  ;HICON hIcon
+ ( A_IsUnicode ? 2 : 1 ) * 64  ;TCHAR szTip[64]

NumPutとかで使ったアドレス
cbSize    &NOTIFYICONDATA
hWnd    &NOTIFYICONDATA + A_PtrSize == 8 ? 8 : 4
uID      &NOTIFYICONDATA + A_PtrSize == 8 ? 16 : 8
uFlags    &NOTIFYICONDATA + A_PtrSize == 8 ? 20 : 12
uCallback  &NOTIFYICONDATA + A_PtrSize == 8 ? 24 : 16
hIcon     &NOTIFYICONDATA + A_PtrSize == 8 ? 32 : 20
szTip     &NOTIFYICONDATA + A_PtrSize == 8 ? 40 : 24

ShellNotifyIconはこれで動いてた
今はめんどくさいからAHKのトレイアイコン使ってるけど
570名無しさん@お腹いっぱい。:2011/06/18(土) 23:11:55.45 ID:uDFD+7HP0
autohotkey version2 のスレッドがautohotkey forumで頻繁に上がってくるけど
使っている人は居る?使い心地を聞きたい
571567:2011/06/19(日) 08:01:39.49 ID:b/JQmRst0
>>568
290行目のSubStr()直前にあるStrをAstrに書き換えたら、
ツールチップ化けが解消して完璧な動作になりました
eamat.さんに心からトンクス
572名無しさん@お腹いっぱい。:2011/06/19(日) 14:20:58.39 ID:ZT5dzhZF0
すいません 質問させてください
KeyWaitを使って複数のキーのキーリピートを防止させてるのですが
KeyWaitを使ってるキーを複数同時に押した際
最後に押したキーを押しっぱなしのままですと 先に押したキーが反応しなくなってしまうのですが

そうさせないには >>177 の後者の方法を取るしかないのでしょうか
573名無しさん@お腹いっぱい。:2011/06/19(日) 17:34:59.28 ID:KyOXBe3K0
Windows 7 x64で、まともに動くWheelRedirectあるの?
AutoHotKeyに限らず、大抵32bitしか対応していないか、特定のコントロールクラスでスクロールできなくなる。
574名無しさん@お腹いっぱい。:2011/06/22(水) 14:55:55.50 ID:Lv2Dk4440
>>573
使ったことないけどかざぐるマウスの64bitは?
575名無しさん@お腹いっぱい。:2011/06/23(木) 05:45:33.56 ID:nTwduIvB0
>>573
管理者権限で実行してる?
576名無しさん@お腹いっぱい。:2011/06/23(木) 05:55:12.43 ID:2GIkvB3D0
ControlSend使ってるんだけど ひらがなカタカナを修飾キーに使った場合で {PGUP} {PGDN} を使ったとき
例えば
vkF2sc070 & r::
ControlSend ,,{PGUP},ahk_id %controlHWND%
return
みたいにしたとき
ひらがなカタカナキーが押しっぱなし状態になるんだけど 俺だけ‥?
577名無しさん@お腹いっぱい。:2011/06/23(木) 06:08:55.74 ID:nTwduIvB0
578名無しさん@お腹いっぱい。:2011/06/23(木) 12:11:22.60 ID:G8MMkic20
>>576
vkF4はどうかな?
579名無しさん@お腹いっぱい。:2011/06/23(木) 12:22:36.94 ID:aKKI32AJ0
AutoHotkey.dllを使う場合はどうやってマクロを実行したらよいのですか?
コマンドラインからAutoHotkey.dll macro.ahkで実行しても動きません
580名無しさん@お腹いっぱい。:2011/06/23(木) 12:30:00.86 ID:G8MMkic20
>>578
あ、半角全角キーと勘違いした上に
これはこれで動作が良く解らんな・・w
半角全角キー押したあとはカタカナひらがなとか無変換キーでも反応してしまうみたいだ
581名無しさん@お腹いっぱい。:2011/06/25(土) 12:49:38.24 ID:r2T8qdJT0
win7 SP1 64bitでAHK_L最新版をUnicode 64bitで使用しています。
AHK_LではHotstringで直接日本語に置換できるそうですが
うまくできません。。。
::,::,
のように,半角カンマを全角カンマに置換したいのですが,
半角カンマを入力すると半角スペースに置換されてしまいます。
全角カンマではなく,「テスト」など他の文字列に置換しようとしても同様でした。
どうすればよいのでしょうか?

582名無しさん@お腹いっぱい。:2011/06/25(土) 12:58:42.98 ID:k8p5c6DT0
>>581
スクリプトをUTF-8で保存
583名無しさん@お腹いっぱい。:2011/06/25(土) 13:30:14.17 ID:r2T8qdJT0
>>582
メモ帳でUTF-8で保存したり,SciTEでUTF-8 with BOMで保存した上で
再度実行してみましたがダメでした・・・
584名無しさん@お腹いっぱい。:2011/06/25(土) 13:37:28.44 ID:eqFQI6Ru0
このスレの暗黙のルール

 ダメといってるスクリプトを丸上げして見ろ

これで修正不能だった例を見たことがない
585名無しさん@お腹いっぱい。:2011/06/25(土) 13:46:07.30 ID:r2T8qdJT0
何度もすみません・・・
以下のようなスクリプトです。

::,::,

Alt::
~LWin::
~RWin::
LWin Up::
RWin Up::
#m::
return
586名無しさん@お腹いっぱい。:2011/06/25(土) 16:12:12.42 ID:mNHG8SeT0
カオス
587名無しさん@お腹いっぱい。:2011/06/25(土) 16:20:02.78 ID:r2T8qdJT0
すみません,どうやらGoogle IMEを使っているのが原因のようでした。
MS IMEに切り替えたところ,正常に変換されました。
お騒がせしました・・・
588名無しさん@お腹いっぱい。:2011/06/29(水) 10:19:52.39 ID:sIKO+QmW0
何故AutoHotkeyは日本では流行ってるんだ?
世界のトレンドではautoitのほうがダントツなのに
589名無しさん@お腹いっぱい。:2011/06/29(水) 11:56:37.18 ID:G0jvLt4a0
590名無しさん@お腹いっぱい。:2011/06/29(水) 11:59:19.91 ID:Ppi3D8jU0
こんなソフトありませんかスレでやたらAutoHotKeyで出来るとかAHK使えとか
宣伝?されてたからじゃね?
オレもそれで知ったし、はじめに知ったのがAHKで、AutoItなんて知りもしなかった
591名無しさん@お腹いっぱい。:2011/06/29(水) 12:05:32.05 ID:tpURdQmh0
AHKってautoitのパクリって歴史もあったんだぜ
はじめautoitはオープンソースだったからソースコードも公開されてたから
AHKかautoitのバージョンが上がるごとにコードをパクって来た
そのくせにautoitを批判してきたの
それに頭が来たautoit開発者がオープンソースを取りやめてクローズにしてしまった
そういう歴史から俺はautoitを使ってる
592名無しさん@お腹いっぱい。:2011/06/29(水) 12:06:25.11 ID:tpURdQmh0
×AHK か autoitのバージョンが上がるごとにコードをパクって来た
○AHK が autoitのバージョンが上がるごとにコードをパクって来た
593名無しさん@お腹いっぱい。:2011/06/29(水) 16:07:29.87 ID:jMoG9nQA0
だよな、俺もパクリってのが許せなくてAHK使ってる
594名無しさん@お腹いっぱい。:2011/06/29(水) 16:08:06.66 ID:uZCZ9wHI0
パクリが許せないのにAHK使ってる
日本語でw
595名無しさん@お腹いっぱい。:2011/06/29(水) 16:13:53.30 ID:wAqaC39iP
>>591
そんなに宣伝したきゃ
「autoitを流行らせるページ」
みたいなサイトでも作ったら?
596名無しさん@お腹いっぱい。:2011/06/29(水) 19:23:05.66 ID:XCNFcZWd0
AutoItの何がいかんて、キーカスタマイズがとんでもなく面倒なこと
大したことない処理なのに全部関数化せんといかんのはだるすぎる
さらに、AHKとは違ってWin+LみたいなWindowsが使うキーに関しては
ユーザー定義関数を設定できない
597名無しさん@お腹いっぱい。:2011/06/30(木) 03:24:12.13 ID:0M1kWwD90
あるADVでホイールでログめくる機能がないから
WheelDown::Enter
で割り当てたんだけど、なぜかそのADV上でだけ効果がでない
どうして?
598名無しさん@お腹いっぱい。:2011/06/30(木) 06:07:43.09 ID:h36nyXLK0
>>597
WheelDown::
send, {enter down}
sleep, 50
send, {enter up}
return

これでも動かない場合は sleep を多めに設定(100〜200ms程度)するといいかも。
599名無しさん@お腹いっぱい。:2011/07/03(日) 10:04:28.21 ID:xNucwPNC0
AutoHotkey_L (UNICODE)を使っているのですがsendで送信した文字列が指定したとおりになりません。
例えば
!a::send, aあa ;ALT & aで「aあa」を送信
の場合
文字列は「aあa」となるはずなのですが
文字列送信前に
IMEがOFFの時は「aああ」となり
IMEがONの時は「あああ」となります。
また文字列送信前にIMEがON・OFFどちらの場合でも、文字列送信後、
入力が確定されていない状態(文字列の下に点線がある状態)で処理を終え
IMEはONになります。
文字列を指定したとおり送信し、入力が確定された状態で処理を終え、
IMEの状態は文字列送信前と同じ状態にするにはどうすればよいでしょうか?
600名無しさん@お腹いっぱい。:2011/07/03(日) 14:32:08.12 ID:+K7NI7+M0
>>599
!a::
clipboardbackup = %clipboardall%
clipboard = aあa
clipwait, 0.5
send, ^v
clipboard = %clipboardbackup%
return
601名無しさん@お腹いっぱい。:2011/07/03(日) 16:09:37.61 ID:xNucwPNC0
>>600
ありがとうございます!
clipboardを使う方が目的に合ってました。
602名無しさん@お腹いっぱい。:2011/07/03(日) 18:35:01.90 ID:5v+F20bz0
おしえてください。
peercastをみるためのソフト、pcmpが前画面になったときにクラス名が変わるので
それを指定してキーバインドを変更していたら、そのソフト以外にもそのバインドが適用されてしまいます。
どうやれば回避できるのでしょうか?次のようにしています。
windos7 x64 Autohotkey_L です。
#IfWinActive, ahk_class WMPTransition
ENTER::Send, !{Enter}
return
#IfWinActive
603名無しさん@お腹いっぱい。:2011/07/03(日) 19:14:18.18 ID:+K7NI7+M0
>>602
pcmpの設定でプレイヤーをWMP以外に変更するとか。
例えばwmpc(Windows Media Player Classic)。
604名無しさん@お腹いっぱい。:2011/07/04(月) 12:29:52.38 ID:INyS5o6E0

GoogleIMEで、長文変換のときに、CtrlプラスNを押すと次の文節に行ってくれるのですが、
windows7にしたらAutohotkeyでこれが動かなくなりました。
自分の手でCtrlプラスNを押すとちゃんとできます。

vk1Dsc07B & n:: Send,^{n}

これじゃダメなんでしょうか?
605名無しさん@お腹いっぱい。:2011/07/05(火) 15:39:59.23 ID:J5eau6BM0
vk1Dsc07B & n:: Send, ^n
これでいいはず
606名無しさん@お腹いっぱい。:2011/07/05(火) 19:38:00.21 ID:sIV8AxFS0
>>605
レスありがとうございます。やはり無理でした。なぜだろう。
vk1Dsc07B & nをおしてもふつうにnを押したのと同じ状況になって
全文確定になって、未確定のnが末尾にでるだけ。

ふつうに手でCTRL n おしたら、ちゃんと先頭文節のみ確定してくれるのに。
607名無しさん@お腹いっぱい。:2011/07/05(火) 20:11:04.22 ID:sIV8AxFS0
こうやって並べて記述してるんですが、なぜだか、無変換+Nだけ動かない
ほかはちゃんと動いてくれます。無変換+Nもwindows7にするまではちゃんと動いてたし。
7 x64のAutohotkey使ってるのに
;; 無変換 + X = 切り取り
vk1Dsc07B & X:: Send,{Shift down}{Delete}{Shift up}
;; 無変換 + C = コピー
vk1Dsc07B & C:: Send,{Ctrl down}{Insert}{Ctrl up}
;; 無変換 + V = 貼り付け
vk1Dsc07B & V:: Send,{Shift down}{Insert}{Shift up}

;; 無変換 + P = Del

vk1Dsc07B & P:: Send,{Blind}{Del}
;; 無変換 + H= BS
vk1Dsc07B & H:: Send,{Blind}{BS}

;; 無変換 + M = Enter
vk1Dsc07B & M:: Send,{Blind}{ENTER}
;; 無変換 + N = 次の文節に。今の文節を確定
vk1Dsc07B & n:: Send, ^n
608名無しさん@お腹いっぱい。:2011/07/05(火) 22:20:10.26 ID:sIV8AxFS0
PCゲームで、リマップをAHKで使っているのですが、無変換と変換キーに違うキーを割り当てると、
ゲームをはじめてしばらくは動いてくれるのですが、気づくと、無変換と変換キーの割り当てだけ
無効化されます。それらのキーを押してもキーを何も押下してくれません。
AutoHotKeyを再起動してもそれ無効の状況は変わらないのですが、
ゲームを再起動すると、最初の設定通りうごいてくれます。

windows7 x64 です。キーボードは2種類ためしました。
609名無しさん@お腹いっぱい。:2011/07/06(水) 05:37:28.35 ID:FQF+IMzQ0
>>608
>>240-242 が参考になるんじゃないかな
610名無しさん@お腹いっぱい。:2011/07/06(水) 05:47:23.21 ID:LubtNpsO0
>>607
例えば
無変換 + 何か = Ctrl+I(カナ変換) みたいなのはちゃんと動く?
611名無しさん@お腹いっぱい。:2011/07/06(水) 20:55:05.87 ID:p0Cu5MLc0
>>609
ありがとうございます。
ちょっと自分のケースとは違うみたいですね。
#IfWinactiveで指定したキーバインドはほとんど全部動くのですが、
無変換と変換キーに割り当てたバインドだけ一定時間後死にます。
(ゲーム上のみ)

>>610
vk1Dsc07B & 3:: Send,^i
でやってみましたがちゃんと動きました。

なにかインストールするときなど、windows7のデフォのフォルダ指定のウインドウでは
AHKで指定したバインドが動かなかったり、特定のアプリでは動かなかったり、
windows7にAHKはXP同様対応してると思ってましたが間違いだったのかな。
x64がまずいのかな。(それ用のAHKはインストした)
XPのときはこんなことなかった。
612名無しさん@お腹いっぱい。:2011/07/06(水) 21:21:39.74 ID:9oNR7k0U0
このスレだけでもx64で検索するとトラブルだらけなのに、
OSが64だからAHKも64にしなきゃって理由はどこにあるの?

ふつうに32bit版を使えばいいのに。
613名無しさん@お腹いっぱい。:2011/07/07(木) 00:02:10.40 ID:uLKm4Rnm0
611じゃないけど、例えばDllCall使って対象アプリのフルパスを取得したりする時、
x64だと対象アプリが32bitでも64bitでも両方取得可能だけど、
x86だと対象が64bitの場合は取得できないとか
614名無しさん@お腹いっぱい。:2011/07/07(木) 16:24:09.02 ID:kv65EU2Y0
すみません、質問させて下さい

↓のような感じで
ファイル名を現在のクリップボードに置き換えるスクリプトを書いてみたのですが
ファイルパスに半角スペースが含まれているとうまく動作しません
(例えばパスが「D:\Program Files\〜」の場合、「D:\PROGRA~1\〜」のようになってしまいます)
うまく動作させるにはどのようにすればよいでしょうか


hoge = %1%

hoge2 := RegExReplace( hoge, "x)^(.+\\)(?:[^\\]+)((?:\.[0-9a-zA-Z]{2,4})?\.[0-9a-zA-Z]{2,3})$", "$1", 1)

hoge3 := RegExReplace( hoge, "x)^(.+\\)(?:[^\\]+)((?:\.[0-9a-zA-Z]{2,4})?\.[0-9a-zA-Z]{2,3})$", "$2", 1)

FileMove, %hoge%, %hoge2%%ClipBoard%%hoge3%


※winXP SP3 でAHK_Lを使用
615名無しさん@お腹いっぱい。:2011/07/07(木) 16:32:45.38 ID:+Mx8XmUh0
hoge2 := RegExReplace( hoge, "x)^(.+\\)(?:[^\\]+)((?:\.[0-9a-zA-Z]{2,4})?\.[0-9a-zA-Z]{2,3})$", "$1", 1)
hoge3 := RegExReplace( hoge, "x)^(.+\\)(?:[^\\]+)((?:\.[0-9a-zA-Z]{2,4})?\.[0-9a-zA-Z]{2,3})$", "$2", 1)

これは何の意味があるの?
splitpathじゃダメなの?
616名無しさん@お腹いっぱい。:2011/07/07(木) 21:30:58.64 ID:EIIqCchV0
>>614
たぶん、これでいいはず

hoge = %1%
Loop, %hoge%, 1
MsgBox, %A_LoopFileShortPath%
617名無しさん@お腹いっぱい。:2011/07/08(金) 19:16:50.55 ID:CUQg7el30
WinHttp.WinHttpRequest.5.1をつかって
req.Openかreq.Sendでサーバー名またはアドレスは〜とかタイムアウトで
エラーダイアログがだらだらと出ることがある。
なので失敗したら失敗しましたとかだしてbreakしたい。
つまりはデフォルトのスクリプト実行を続けますか?って聞かれるダイアログじゃ無くて
エラー原因を表示してそれ以降の処理をbreak・飛ばしてスクリプトの実行は継続っていう風にしたい。
原因を表示できなくとも処理をbreakしたい。
そのためにerr:=req.Openとか書いてみたけど成功時の戻り値らしいs_OKも入らない
どうやったら良い?
618名無しさん@お腹いっぱい。:2011/07/08(金) 20:38:21.83 ID:XGtBnDbl0
ダイアログはComObjErrで消せる。エラー値はA_LastErrorで
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/commands/ComObjError.htm
619名無しさん@お腹いっぱい。:2011/07/09(土) 12:56:25.36 ID:p39hk6N20
>>615
> これは何の意味があるの?
RegExReplaceでファイル名前のパスと拡張子部分をhoge2,3に格納しています
> splitpathじゃダメなの?
自分の知ってるコマンドだけで書いてるので…
そのコマンドは知らなかったのでちょっと調べてみます

>>616
やり方が悪かったのかわかりませんが
うまくいきませんでした
620614=619:2011/07/09(土) 13:43:59.17 ID:p39hk6N20
いろいろ試してみた結果
うまくいかない原因はファイルを渡すやり方にあったようです

それまでスクリプトのショートカットにファイルをドロップしていたのですが
これだと>>614のスクリプト、SplitPathを使って書いたスクリプトの
どちらでも半角スペースを含んだパスが正常に取得できず
スクリプトを右クリックメニューから実行するやり方に変えたところ
どちらも動作するようになりました

ただ、できればドロップでファイルを渡したいのですが
これはAHKの仕様的に難しいのでしょうか?
621名無しさん@お腹いっぱい。:2011/07/09(土) 14:38:40.05 ID:Nv44iZo20
>>620
ロングファイルネームを取得したいって事でいいんだよね?
だったら、>>616のA_LoopFileShortPathをA_LoopFileLongPathしてみ。
622616:2011/07/09(土) 19:38:17.42 ID:KpJxy9qU0
>>621
間違ってショートネームのやつにしてた、指摘thx
623名無しさん@お腹いっぱい。:2011/07/12(火) 01:00:46.72 ID:QCN3thDR0
TABもスペースも多用しているテキストファイルで文字列を抽出したい場合どうすればいい?
hogehogeをA_SPACEに置き換えてからStringSplitで抽出しようとしても
誤爆が多すぎて使いものにならない。
624名無しさん@お腹いっぱい。:2011/07/12(火) 01:09:06.41 ID:eZ0pQ0Sc0
例を出さなきゃわからんよ
625名無しさん@お腹いっぱい。:2011/07/12(火) 01:24:33.33 ID:QCN3thDR0
例えばAHKLのlicense.txtから"we "の単語を抽出したい場合、
StringReplace, inputfile,inputfile,we , %A_SPACE%,ALL
StringSplit, word_array,inputfile,%A_SPACE%, .
で分離抽出するよね。
でも、license.txtには空白が多いから、誤爆が大量に発生する。
まあこのファイルだとTABに置き換えればいいんだけど、
TABも大量にあるファイルだと文字列を抽出する方法がなくて困ってる。
626名無しさん@お腹いっぱい。:2011/07/12(火) 01:35:42.52 ID:eZ0pQ0Sc0
せっかく元の情報で「we 」で識別できていたのを、なぜ%A_SPACE%で置換して、
本物の関係ないスペースと見分けをつけにくくしてるのか、
全くやってる意味がわからないんだけど。

誤爆するのが当たり前というか
自分から進んで誤爆させる方法に加工してるだけじゃん。
627名無しさん@お腹いっぱい。:2011/07/12(火) 02:11:15.18 ID:QCN3thDR0
位置情報抽出したい
628名無しさん@お腹いっぱい。:2011/07/12(火) 06:07:56.89 ID:2gOop+In0
ときめき抽出したい
629名無しさん@お腹いっぱい。:2011/07/12(火) 09:54:10.86 ID:XezACDyC0
よくわからんが
InStr()
SubStr()
RegExMatch()
RegExReplace()
あたりじゃだめなのか?

あとどうしてもStringSplit使いたいなら事前にSpaceとTabを置換しときゃいいんじゃないの?
`a とかテキストで使わないエスケープシーケンスなら他の文字とも被らないだろ
630名無しさん@お腹いっぱい。:2011/07/12(火) 14:36:36.46 ID:ZLMrVYVM0
他のソフトが標準出力に出力するのですが
(たとえばdirコマンド)
これをautohotkeyの処理内で取得し、それを基に処理することは可能でしょうか?
こんな感じで動作させたいです

; get_standard_output の引数はコマンド
; 結果をaに入れる
a:=get_standard_output("dir /b")
631名無しさん@お腹いっぱい。:2011/07/12(火) 21:06:29.08 ID:eW/S3oh70
[第4放し]
G=X1B__
Default=Send,^x

[第4ホイール上]
G=X1B_WU_
Default=if(!MG_Hold()){
Send,{Alt Down}+{Tab}
}else{
Send,{Alt Up}
}

[第4ホイール下]
G=X1B_WD_
Default=if(!MG_Hold()){
Send,{Alt Down}{Tab}
}else{
Send,{Alt Up}
}

Mousegesture.ahkで↑このように設定してるとホイール操作で第4の押し放しまで実行してしまい
Ctrl+Alt+Xと出力されて上手くAlt+Tabが出来ないんですが
何か上手く両立させる方法ないですか?
632名無しさん@お腹いっぱい。:2011/07/12(火) 21:32:55.47 ID:7CjId4290
>>631
フラグで分岐させてみては

[第4放し]
G=X1B__
Default=if(!X1BWFlug)
Send,^x
X1BWFlug=0

[第4ホイール上]
G=X1B_WU_
Default=X1BWFlug=1
if(!MG_Hold()){
Send,{Alt Down}+{Tab}
}else{
Send,{Alt Up}
}

[第4ホイール下]
G=X1B_WD_
Default=X1BWFlug=1
if(!MG_Hold()){
Send,{Alt Down}{Tab}
}else{
Send,{Alt Up}
633名無しさん@お腹いっぱい。:2011/07/12(火) 21:40:11.54 ID:eW/S3oh70
>>632
望み通りの動作ができました。ありがとうございます。
634名無しさん@お腹いっぱい。:2011/07/12(火) 21:51:36.48 ID:7CjId4290
>>630
「autohotkey doscommand」でぐぐったら、こんなのがヒットした
http://www.autohotkey.com/forum/topic25482.html
635名無しさん@お腹いっぱい。:2011/07/13(水) 19:52:16.96 ID:3BVqH7/R0
http://hibari.2ch.net/test/read.cgi/software/1280482227/11

前スレだとテンプレに標準入出力は入ってたんだけど、
今スレはテンプレに入ってないね、よく見ると…
>>630には、それぐらいはまずテンプレ嫁って思ってたよ
636名無しさん@お腹いっぱい。:2011/07/14(木) 00:32:51.62 ID:+M1XGiOr0
>>618
なぜかたまに処理の中に入っちゃうけど
やりたいことは出来ました
ありがとうございます
637名無しさん@お腹いっぱい。:2011/07/14(木) 06:21:44.96 ID:ceTMlK590
OS windows7 x64の環境なのですが、それでAutoHotKeyのx86やx64をインストールしても
AutoHotKeyが動かない場面が多々あるんですが・・・・。みなさんどうですか?

あふ やsakuraエディタがアクティブだったりすると、AutoHotKeyが動作しない。(これらに#IfWinActive使ってない)
windows7のファイル保存の段になったら出現する保存先ウインドウなどもアクティブだと動かなくなる。
特定のゲーム、Call of duty をしていると、いきなり無変換にAutoHotKeyで割り当てた機能が動かなくなる。

windows7でてから結構たつのに、もう対応してくれないのかな。
最後の更新が去年の10月だったっけ。

のどか以外でAutoHotKeyみたいなソフトでwindows7でちゃんと動くのないのでしょうか?
おしえてください
638名無しさん@お腹いっぱい。:2011/07/14(木) 06:25:21.12 ID:f0tcnmMo0
>>611と同じ人?

多々〜 とか
〜だったり とか

愚痴ってばかりでなく、問題を切り分けしないと、前に進むことは出来ない。
639名無しさん@お腹いっぱい。:2011/07/14(木) 23:18:45.11 ID:pbAp90oS0
win7 x64だがまともに動いているぞ
アンケートをとるときは大抵自分がおかしいものだ
640名無しさん@お腹いっぱい。:2011/07/14(木) 23:49:10.91 ID:Y+G1acJ9P
x64で64bit版入れて使ってるけど普通に動作してる
サクラエディタもMouseGesture.ahk認識してる
641名無しさん@お腹いっぱい。:2011/07/15(金) 08:19:47.89 ID:8T2vb5gg0
次のようなことをするにはどうすればいいかわかりますでしょうか?
aキーとbキーを押し下げている間、マウスの左ボタンを押し下げて
押し下げたaキーとbキーを離したら、押し下げたマウスの左ボタンを離す。

↓をどう組み合わせるのかわかりません。
a & b::Click, left, D, X, Y
a & b::Click, left, U, X, Y
642名無しさん@お腹いっぱい。:2011/07/15(金) 09:14:26.09 ID:SOsBccQH0
a & b up::Click, left, U, X, Y
643名無しさん@お腹いっぱい。:2011/07/15(金) 10:39:52.99 ID:rHj9GLjh0
a & b::
Send, {LButton Down}
KeyWait, a
Send, {LButton Up}
return
644名無しさん@お腹いっぱい。:2011/07/15(金) 23:18:23.85 ID:/MXBF2+U0
>>639
>>640
うそだぁ〜。もうちょっとやめてくださいよ。
さすがにwindows7の保存先ダイアログじゃAHKうごかないでしょ?
sakuraエディタはいろんなバージョンがあるから、一概にいえないけど。

windows7 x64にしてからしばらくしてから気づいて、
一度再インストールしたあとすぐに症状を確認できたのに。
もう何ヶ月かは再インストールしたくない。

.ahkの記述の仕方がおかしいと思ってトリミングまでしたのに。
おかしいところがあるとすれば、.ahkの記述なのかな、やっぱり。

先に希望があるとみるか、おれはもともとおかしいので望みがないとみるか。
これからもずっと使っていきたいのに
645名無しさん@お腹いっぱい。:2011/07/16(土) 00:09:55.48 ID:7s8jkKKN0
女『車のエンジンがかからないの…』
男『あらら?バッテリーかな?ライトは点く?』
女『昨日まではちゃんと動いてたのに。なんでいきなり動かなくなっちゃうんだろう。』
男『トラブルって怖いよね。で、バッテリーかどうか知りたいんだけどライトは点く?』
女『今日は○○まで行かなきゃならないから車使えないと困るのに』
男『それは困ったね。どう?ライトは点く?』
女『前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。』
男『…ライトは点く?点かない?』
女『○時に約束だからまだ時間あるけどこのままじゃ困る。』
男『そうだね。で、ライトはどうかな?点くかな?』
女『え?ごめんよく聞こえなかった』
男『あ、えーと、、ライトは点くかな?』
女『何で?』                    ← ID:/MXBF2+U0 は、いまここらへん
646名無しさん@お腹いっぱい。:2011/07/16(土) 00:15:33.93 ID:nfDH8Z4C0
的確過ぎて吹けない
647名無しさん@お腹いっぱい。:2011/07/16(土) 01:14:51.55 ID:lbchGYfz0
なるほど、女の子か
納得した
648名無しさん@お腹いっぱい。:2011/07/16(土) 19:23:48.27 ID:JgF1QZgk0
男やさしいなw
649名無しさん@お腹いっぱい。:2011/07/16(土) 20:28:54.43 ID:tPZk5u9j0
このコピペ見るたびに思うんだけど
女が聞きたい言葉は症状の解決法じゃなくて
俺が車で迎えに行ってやるよ、だよね・・・
650名無しさん@お腹いっぱい。:2011/07/16(土) 20:41:32.14 ID:aSLfTL9L0
女『車のエンジンがかからないの…』
男『あらら、大変だね。見に行ってあげようか?』
女『ほんと?ありがとう。お礼にセックスさせてあげるわ』
男『ハハハ、いいってことよ。20分くらいで着くから待っててね』

という簡易版もあるが、これはまさに>>649の言ってる解決方法だな
651名無しさん@お腹いっぱい。:2011/07/17(日) 02:11:05.06 ID:O3QmusFu0
どなたか あふafxw の使用者いませんか?

あふがアクティブだと、ほんとにAutoHotKeyが動かない。
#IfWinActive, ahk_class TAfxWForm
で個別に設定しても無理。

おたすけを 
652名無しさん@お腹いっぱい。:2011/07/17(日) 05:08:13.19 ID:Ue5UmtiH0
管理者権限で実行する
653名無しさん@お腹いっぱい。:2011/07/17(日) 10:40:49.62 ID:Y6SpDpjp0
Win7 Ultimate x64 だけど スタートアップ用スクリプトで、常駐させたいのを
 Run, *RunAs %target_script%
として起動してる。AHKL v1.1.00.00 x64版。

これだと管理者権限の窓でもなんら問題なく動く。
654名無しさん@お腹いっぱい。:2011/07/17(日) 14:24:08.56 ID:iSyDhAKL0
AHKで、Windowに水平・垂直スクロールバーがついているかどうか
確認する手段はありますか?
655名無しさん@お腹いっぱい。:2011/07/17(日) 23:37:07.16 ID:Y6SpDpjp0
限定的だが、WindowsAPIで取得できる
WinGet, 〜, Style で対象ウィンドウにスクロールバーが付いているかどうかは確認可能。
ただ、限定的なのは、スクロールバーの実装方法ってソフトによってかなり違う。

メモ帳のスクロールバーが最も基本的なタイプだけど、今時のやつほどそういうスタイルのは少ない。
オフィスは独自のスクロールバー持ってるし、
Firefox, Chrome, Java製 などクロスプラットフォームのソフトだとほぼ無理

ってことで、汎用的な答えは出せないんで、>>4 にもあるが
> また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
656名無しさん@お腹いっぱい。:2011/07/18(月) 08:42:49.39 ID:7KSoefVi0
日記

windows7 x64でAutoHotKeyが動かないとき

・ソフトのインストールのときのディレクトリ指定のウインドウ
・あふw(x86のユニコードバージョン。ANSI verは動く)
・サクラエディタ(ユニコードバージョン)

・3D FPSゲーム call of duty 4(x86) の無変換キーへのバインド(突然利かなくなる)

ユニコードバージョンはダメなんか。
657名無しさん@お腹いっぱい。:2011/07/18(月) 09:12:39.72 ID:V7v8iDSa0
で、ライトは点いたのか?
658名無しさん@お腹いっぱい。:2011/07/18(月) 12:20:16.81 ID:m+xUCz2A0
AutoHotkey_L 1.1.00.01 - July 17, 2011

Fixed: Modifier keys weren't auto-released when sending special chars.
Fixed: Scancode/modifier-key mapping conflicts such as sc1xx vs ^sc0xx.
Fixed: $ and #UseHook had no effect if used only on the second or subsequent instance(s) of a hotkey.
Fixed: Potential crash when returning a value from a __Delete meta-function.
Fixed: "Uninitialized variable" warnings were triggered by the debugger.
Changed: base.Method() no longer triggers a default meta-function or a warning.
Changed: Gui +(Ex)Style no longer hides/shows the Gui.
Changed the debugger to report type="undefined" for uninitialized variables.
Added check to avoid incorrectly sending keystrokes for characters which actually require the "hankoku" key.
Added support for integers as class variable names.
Added "Static" keyword for declaring class variables.

Use of the var keyword in class definitions to declare static class variables should be avoided, as a future version (probably the next release) will repurpose it for declaring instance variables.
There are some cases where behaviour won't be adversely affected; in other cases, scripts should be updated to use the static keyword.

クラス変数が次のリリースで実装されるのかね
659名無しさん@お腹いっぱい。:2011/07/18(月) 16:53:56.89 ID:5eGiOpm80
hankoku ←なにこれ
660名無しさん@お腹いっぱい。:2011/07/18(月) 19:01:53.69 ID:fjspZDRL0
typoだろ気にすんなよ
661名無しさん@お腹いっぱい。:2011/07/19(火) 00:45:01.64 ID:MnandR2a0
aaa := A_Now

中略

bbb := A_Now



変数aaaとbbbを使ってaaaからbbbまでどのくらい時間が経過したかを
〇〇年〇〇ヶ月〇〇日〇〇時間〇〇分〇〇秒のフォーマットで求めたいのですが
どうやれば良いでしょうか?よろしくお願いします。
662名無しさん@お腹いっぱい。:2011/07/19(火) 01:01:53.23 ID:JUNv1MVEP
ttp://sites.google.com/site/autohotkeyjp/reference/Variables
A_TickCount / OSが起動してからの経過時間(ミリ秒)
これ使うといい
663名無しさん@お腹いっぱい。:2011/07/19(火) 01:16:17.16 ID:4HY6RSna0
日記

Windows 7 の ユーザーアカウント制御で、AutoHotKeyがきかない。
無変換+Jに←を割り当ててるが動かない。

ID Managerで一切動かない。
664名無しさん@お腹いっぱい。:2011/07/19(火) 08:26:04.90 ID:ZXQD1WU/0
日記

前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。
665名無しさん@お腹いっぱい。:2011/07/19(火) 12:36:48.01 ID:cMqcxwtO0
autohotkey_lのデバッグ機能は
emacsやxyzzyで使えないのでしょうか?
msgboxデバッグには疲れてしまいました。。

>>663
>無変換+Jに←を割り当ててるが動かない。
動かないのは、設定ミスでは?
sc07b & j::send,{left}

>ID Managerで一切動かない。
動くよ@win xp 32 bit
666名無しさん@お腹いっぱい。:2011/07/19(火) 21:30:15.73 ID:4HY6RSna0
>>665
レスありがとうございます!

たしかに記述ミスかもしれません。665さんが示してくれたスクリプト
で、あふのユニコードバージョン上で動かすことができました!。
さすがにプログラム起動のときのユーザーアカウント制御のはいorいいえ
は、左にあるはいにフォーカスをもっていくことができませんでしたが。
ID ManagerというソフトでもAHKは動きませんでした。

いままで使用していた無変換をモディファイアにした矢印キーは
vk1Dsc07B & j:: Send,{Blind}{Left}
でした。

まだいろいろ試みていませんが、いままで動かなかったと思うところで
sc07b &を使うことで動く場面がたくさん増えたように思います。
前進できました。ありがとうございます。
667名無しさん@お腹いっぱい。:2011/07/19(火) 23:36:14.55 ID:R/ktbPyT0
ウィンドウを自動で非表示(削除)にできると聞いて誘導されてきました。
ちょっと調べたところ

Winwait,ウィンドウ名
Winhide,ウィンドウ名

これでウィンドウが現れたら非表示に出来るみたいですが一瞬ウィンドウが画面に写って
から非表示にされてるみたいです。もちろんこれでも満足なのですが画面に映る前に
Autohotkeyがウィンドウを認識して、ユーザが意識することなく非表示にするようなことはできませんか?
668名無しさん@お腹いっぱい。:2011/07/19(火) 23:45:25.06 ID:D2sGkxWY0
>>667
>■質問に際して
>OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
>また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
>
669名無しさん@お腹いっぱい。:2011/07/20(水) 02:06:09.35 ID:Okli+VYH0
日記)
windows7 x64でGoogle日本語入力をお使いのみなさん
sc07b & n::Send, ^{n} あるいは
sc07b & n::Send, ^n 
してみてください。動きません。
Ctrl + N だとちゃんと変換中の前文節確定します。
670名無しさん@お腹いっぱい。:2011/07/20(水) 07:04:25.19 ID:Bb1hKbPa0
■回答できるレベルの人へお願い■

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

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

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

いつまでもこんなクズにつきあう必要はない。
汎用性のないコードでスレが汚されるのは、結果的に良質な情報が
埋もれる原因になって迷惑だし、横から見ていても参考にならないし、
なによりも見ていて不快でしかない。
671名無しさん@お腹いっぱい。:2011/07/20(水) 08:27:27.03 ID:MJAi9JtQ0
オッスオッス
672名無しさん@お腹いっぱい。:2011/07/20(水) 08:30:20.75 ID:vwgKMm040
じゃあ見るのやめろよカス
673名無しさん@お腹いっぱい。:2011/07/20(水) 11:18:30.12 ID:WlYT7br70
当人が「独り言」って宣言してるレスなんぞ、読まずに全スルーでおk


こういうスレの私物化はウザくてしょうがないが
この手のヴァカは言っても絶対やめないからな、飽きるの待つしかない
NG wordにでもぶちこんどくといいよ
674名無しさん@お腹いっぱい。:2011/07/21(木) 00:32:08.02 ID:oZBVPGCL0
vk1Dsc07B & j:: Send

sc07b & j::Send

って違うのですか?無変換キーをモディファイアキーに使うときは
後者にしなければいけないのですか?(後者だと自分の環境で動作が
かなり安定した感じがします)

前者はAutohotkeyを流行らせるページの無変換を使い倒すスレで知って
そのまま使っていたのですが、新verのAHKになって書き方もかわったのですか?

だとすればその周辺事項も知りたいのですが、どっかに書いてあるところありますか?
675名無しさん@お腹いっぱい。:2011/07/21(木) 01:46:43.74 ID:CQ0vHj5w0
676名無しさん@お腹いっぱい。:2011/07/21(木) 20:03:52.35 ID:QDyk5YgV0
Win7でVersion 1.0.48.05を使ってます。
スペースバーを長押し動作だけに限定するスクリプトって作れますでしょうか?
フォトショップのスペースバーのショートカット動作が短く押すのと、長押しの二種類ありまして
長押しのほうしか使わないので、押し間違えで起動してしまう短く押す方のショートカットを無効にしたいのです。
677名無しさん@お腹いっぱい。:2011/07/21(木) 22:12:19.88 ID:nSp3ZG2K0
そういや前スレまでテンプレにあった、Ctrlとか押しっぱなしの時にアラート出せるやつはもう使えないのな。
地味に便利だったんだけどなぁ
678名無しさん@お腹いっぱい。:2011/07/21(木) 22:40:06.38 ID:oZBVPGCL0
>>675
vkXXscYYYは仮想キーコード且つスキャンコードの特定

>(スキャンコードは NT系のみ)

スキャンコードは07Bでした。どうしてwindows7では
両方の指定はだめなんだろう。
ありがとうございました。
679名無しさん@お腹いっぱい。:2011/07/22(金) 06:36:58.41 ID:oL5hJpkh0
>>676
フォトショのショートカットカスタマイズで無効に出来ないのかな?
680名無しさん@お腹いっぱい。:2011/07/22(金) 07:56:43.43 ID:t702ka+Q0
>>679
これができないんです。非常に不便です。

なんとかかんとか検索してスクリプトを書いてみましたがこれだとうまく動きませんでした
#ifWinActive ahk_class Photoshop と記述してあると動きませんがこれがなければ動きます。
原因はなんでしょうか?この動作はPhotoshopに限定しておきたいのですが。


#ifWinActive ahk_class Photoshop
Space::
KeyWait, Space, T0.8
if ErrorLevel
{
send,!{space}
}
else
{
}
keywait, Space
return
681名無しさん@お腹いっぱい。:2011/07/22(金) 10:28:28.28 ID:/+Dv88Rx0
フォトショのバージョンは?
CS5だったらタブ分割時にクラス名変わってたりするよ

SetTitleMatchMode ,RegEx
#IfWinActive ahk_class (Photoshop|PSDocC|OWL.DocumentWindow)
とかやってもダメ?

ちなみに殺したいチョン押しSpaceって何の機能?
うちでは押下時間に関わらず 手のひらツールの挙動しかしないけど
682名無しさん@お腹いっぱい。:2011/07/22(金) 10:47:43.61 ID:t702ka+Q0
>>681
SetTitleMatchMode ,RegEx
#IfWinActive ahk_class (Photoshop|PSDocC|OWL.DocumentWindow)
Space::
KeyWait, Space, T0.8
if ErrorLevel
{
send,!{space}
}
else
{
}
keywait, Space
return

こうですね。こうしてしまうとこのスクリプト自体無効になってしまいました。
バージョンはCS5のエクステンデッドです。エクステンデッドにあるアニメーションのタイムラインウィンドウを表示させて
レイヤーの表示時間をいじるとスペースキーチョイ押しがアニメクリップの再生停止になります。
683名無しさん@お腹いっぱい。:2011/07/25(月) 10:16:07.74 ID:q3wRbQNI0
emeditor用のスニペットってない?
684名無しさん@お腹いっぱい。:2011/07/25(月) 14:14:12.88 ID:nDBdBsvj0
AutoHotkey.ahkとAutorun.ahkとの違いってある?
前者はAutoHotkeyを起動すると実行されるスタートアップだけど
後者の使い道がよくわからん
685名無しさん@お腹いっぱい。:2011/07/26(火) 05:44:43.57 ID:iOs+30oa0
流行らせるページのホイールリダイレクトのスクリプトを使わせてもらってるんですが、
FirefoxやThunderbird、OpenOffice(Calc)だと効かないのはなぜなんでしょうか?
とりあえず、それらがアクティブの時のみ、ホイールアップダウンを
普通にsendする形で凌いでいるんですが・・・
*WheelDown::
If Redirect_cancel()
{
Send, {WheelDown}
return
}
(以下流行らせるページのリダイレクトスクリプトまま)

Redirect_cancel(){ ;除外条件を指定(除外…1(真) 適用…0(偽))
IfWinActive, OpenOffice.org Calc ahk_class SALFRAME ;OpenOffice/Calc
return 1
IfWinActive, Mozilla Firefox ahk_class MozillaWindowClass ;Firefox
return 1
return 0

あと、OS起動直後にそれらのソフト上でホイールを使うと
「XX hotkeys have been received in the last XXXXms.」のメッセージが出てしまいます。
>>6の解決法を用いても改善できないようなのですが、AHKのスクリプトをリロードすることで
その後メッセージは出なくなります。(起動直後のみ出る)

使ってるOSはWindows7(646bit) SP1、FirefoxやOpenofficeは最新バージョンです。
同じスクリプトをXP(32bit)で試してみたら「XX hotkeys have〜」のメッセージは出ませんでした。
改善方法がありましたらご教示願えませんでしょうか。
686名無しさん@お腹いっぱい。:2011/07/26(火) 09:38:26.23 ID:16Y0QPvH0
mozillaとかのマルチプラットフォーム系のアプリは独自UIで制御してるのか
マウス直下のctrlに投げるだけじゃうまく動かない場合が多い
ctrl抽出とスクロール制御は↓この辺りが参考になると思う

TrackWheel
http://sites.google.com/site/agkh6mze/trackwheel
WheelScroll.ahk
http://www6.atwiki.jp/eamat/pub/MyScript/WheelScroll20090722.zip


> XX hotkeys have been received in the last XXXXms.
高速ホイール対応のマウスだとHotkey割込みが半端無く発生するのでそのせいと思われる
#HotkeyInterval と #MaxHotkeysPerInterval の値を調整する
最適値は環境依存で変わりそうだがググれば例は出てくると思う
687名無しさん@お腹いっぱい。:2011/07/26(火) 10:16:19.47 ID:B69TpIvt0
Filedeleteとかのファイルパターンを正規表現で指定したいんですが
なにかいい方法ありませかね?
688名無しさん@お腹いっぱい。:2011/07/26(火) 11:40:15.68 ID:iOs+30oa0
>>686
ありがとうございます! 試してみます〜
689名無しさん@お腹いっぱい。:2011/07/27(水) 09:02:51.21 ID:Z1vviDQt0
>>687
Loop, C:\*.*
{
regex := "SYS$"
If ( RegExMatch( A_LoopFileFullPath, regex ) )
msgbox, %A_LoopFileFullPath%
}

690名無しさん@お腹いっぱい。:2011/07/27(水) 11:13:55.68 ID:hUI96TSh0
>>689
なるほど
ありがとうございます!
691名無しさん@お腹いっぱい。:2011/07/30(土) 10:59:47.53 ID:4JyQaPX90
windows7 x64にて、
プログラムの実行ファイルのプロパティ→管理者として実行にチェックが入っていると
そのプログラムがアクティブになると、どうしてAutoHotKeyのキーバインドが
一切効かなくなるのでしょうか? おしえてください。

他の方は管理者として実行にチェックが入っていたとしても
そのプログラム上でAutoHotKeyがふつうどおり動くのでしょうか?
692名無しさん@お腹いっぱい。:2011/07/30(土) 11:35:19.77 ID:t2/xFfn+0
>>691
そりゃー管理者権限で動いているソフトが権限のないソフトに勝手に操作されたらマズイしな。
AHKのキーバインドだと、ユーザの意思で操作してると感じるだろうけど、
OSから見たら、権限のないソフトから不正なキー信号が送られてるのと変わらないし。
693名無しさん@お腹いっぱい。:2011/07/30(土) 11:49:12.42 ID:oTMmrKcS0
横からすんません。
てことは、AHKも管理者権限で実行しているならOKってことになるんですかね?
694名無しさん@お腹いっぱい。:2011/07/30(土) 12:02:34.06 ID:pEexWyLZ0
そらそうよ
695名無しさん@お腹いっぱい。:2011/07/30(土) 12:39:42.76 ID:9FWbu6j80
ただしそれはそれで色々面倒だぞ
696名無しさん@お腹いっぱい。:2011/07/30(土) 12:58:05.23 ID:mA+Fc+u70
そういう余計な心配やトラブルが嫌でUAC完全オフで使ってる俺はダメ人間なのかな

結局、情報なんて抜かれるときにはどんな手を使ってでも抜かれるし、
関係ないデータ領域を巻き添えにして壊れるような市販ソフトなんて一度も出会ったことないし、
データドライブの意図的なファイル削除だったらUACありで一般権限でもできてしまうし、
システムドライブが破壊されたら再インストールすればすむことだし、
そう考えるとUACって意味ないなぁ という結論になった。
697名無しさん@お腹いっぱい。:2011/07/30(土) 14:44:00.00 ID:4JyQaPX90
>>692
レスありがとう。

>管理者権限で動いているソフトが権限のないソフトに勝手に操作されたらマズイしな。

なるほど。そう言われるとそうですね。理屈がわかった気がします。

でも、キー入力を間で入れ替えてるだけだから、キー入力"だけ"だったら
管理者権限のソフト自体になんか悪さしうる影響を与えるっての前段階
のような気がして、関係ないレベルなんじゃないかと素人は思ったりするわけで。
そもそもwindows7の管理者権限とかUAC(?)ってのがわかってませんが。

ぼくもUAC無効にしてみようかな。
ためになりました。
698名無しさん@お腹いっぱい。:2011/07/30(土) 19:35:25.63 ID:EhGTU5QS0
そういうことが解からんレベルの人は無効にしちゃいかんと思うの
699名無しさん@お腹いっぱい。:2011/07/30(土) 22:05:43.70 ID:Od2W6QsW0
 Array := Object()
 count=0
 Loop, Read, result.txt
 {
  Array.Insert(A_LoopReadLine)
  count++
 }
 if(count>50){
  countTemp=count-50
  Loop %countTemp%{
   Array.Remove(A_Index)
  }
  fileon=result.txt
  file :=FileOpen(fileon,"w")
  file.write(Array)
  file.close()
 }
あるファイルの行数が51行になったら一行目を消す といった動作を望んでいたのですが
file.writeでは配列は書き込めないようなのでどうしたらいいですか?
700名無しさん@お腹いっぱい。:2011/07/31(日) 01:46:08.79 ID:XarfFdt50
For k, v in Array
file.Write(v)
701名無しさん@お腹いっぱい。:2011/07/31(日) 10:08:51.16 ID:XarfFdt50
AutoHotkey_L 1.1.01.00 - July 30, 2011
http://www.autohotkey.com/forum/topic74771.html
702名無しさん@お腹いっぱい。:2011/07/31(日) 16:09:15.13 ID:N8TtRrTd0
AHKLでTextファイルを読み込んでメッセージボックスで表示させようとしてるんだけど、
文字化けしてしまう。
スクリプト、TextどちらもUTF-8で保存して、後発薬って漢字だけなんで
ダメ文字使ってるわけでもない。

いじりはじめたばかりなんだがどうすればいい?
703名無しさん@お腹いっぱい。:2011/07/31(日) 17:38:03.44 ID:tn4Iinkk0
文字化けしないのでお前の問題
704名無しさん@お腹いっぱい。:2011/07/31(日) 18:06:41.08 ID:focMT41D0
>>700
全てが1行になってしまいましたが
file.Write( v "`r`n")
とすることで望む動作になりました
ありがとうございます
705名無しさん@お腹いっぱい。:2011/07/31(日) 18:32:31.42 ID:XarfFdt50
改行付きなら file.WriteLine()

>>702
テキストファイルの読み込み時に、コードページを指定しないとだめ。日本語環境のデフォはCP932
(BOMが付いてれば省略してもいい)
706名無しさん@お腹いっぱい。:2011/07/31(日) 19:04:27.60 ID:N8TtRrTd0
>>705
レスありがとうございます。
いろいろぐぐっているのですが、Filereadでコードを指定する方法が分かりません。
他のコマンドでも見つかりませんでした。
ぐぐっても古いテンプレの微修正版があるだけで、読み込んだテキストファイルの
文字コードを指定する方法は見つかりませんでした。
707名無しさん@お腹いっぱい。:2011/07/31(日) 19:20:47.39 ID:OgtwjFzS0
>>706
FileEncoding [, Encoding]
Sets the default encoding for FileRead, FileReadLine, Loop Read, FileAppend, and FileOpen.
ググるより前に標準のHelp見たほうが早いと思う。
FileReadのページからも辿れた。
708名無しさん@お腹いっぱい。:2011/07/31(日) 19:54:05.98 ID:N8TtRrTd0
>>707
ありがとうございました。
709名無しさん@お腹いっぱい。:2011/07/31(日) 20:27:44.01 ID:ht3+YAjM0
>>701
>Off-topic: Don't ask about v2. It'll be updated in the next couple days.
英語が苦手なんだけど、これって、数日後にv2が来るってことかな
710名無しさん@お腹いっぱい。:2011/07/31(日) 21:37:09.17 ID:VnVW/JRt0
ウィンドウのタイトルバーをマウス拡張ボタンでクリックするとキーを送るようにしてるんですが、
このコマンドだと一度ウィンドウをアクティブにしないと、タイトルバーをクリックすることができないんですが、
このウィンドウをアクティブにする動作を省略することはできるんでしょうか?
スクリプトはこんな感じです。

~XButton2::
CoordMode, Mouse, Window
MouseGetPos, ClickX, ClickY, WindowUnderMouseID
WinGetPos, x, y, w, h, ahk_id %WindowUnderMouseID%

  if ( ClickX < w and ClickY < 24 and ClickY > 0 and ClickX > 0)
{
WinActivate, ahk_id %WindowUnderMouseID%
send, #a
Return
}
else

Return
711名無しさん@お腹いっぱい。:2011/07/31(日) 21:56:30.76 ID:MOpunGSJ0
v2でたら文法とかもすっきりするんだろうか・・・
712名無しさん@お腹いっぱい。:2011/07/31(日) 22:21:49.27 ID:TtxcY3ql0
713名無しさん@お腹いっぱい。:2011/07/31(日) 22:40:52.93 ID:N8TtRrTd0
>>707
FileReadの前にFileEncoding,CP932入れたのですが、変わりませんでした。

FileEncoding,CP932
FileRead,inpfile,Z:\hoge.htm
StringSplit, wd_sec,inpfile,", .
MsgBox,3, %wd_sec2% and %wd_sec3% and %wd_sec4% and %wd_sec5%

and %wd_sec6% and %wd_sec7% and %wd_sec8%

これだけのコードなのですが。
714名無しさん@お腹いっぱい。:2011/07/31(日) 22:49:46.67 ID:ht3+YAjM0
>>712
ありがとう
見てみたけど
>Removed SplashTextOn/Off, Progress and SplashImage.
>Removed IfMsgBox.
なかなか思い切った更新だね
715名無しさん@お腹いっぱい。:2011/07/31(日) 22:51:51.69 ID:arqoo84b0
IfMsgBox,no
return

とか、しょっちゅう使ってるけど、俺のスクリプトこれからは全部だめじゃんw
なんでなくしたんだろうか。
716名無しさん@お腹いっぱい。:2011/07/31(日) 23:10:34.10 ID:CxsnFfvH0
Mousegesture.ahkの互換は絶望的?
717名無しさん@お腹いっぱい。:2011/07/31(日) 23:20:05.16 ID:2s+l3hq30
>>713
>>702でUTF-8って言ってるのになんでCP932指定してるの?
718名無しさん@お腹いっぱい。:2011/07/31(日) 23:39:00.68 ID:N8TtRrTd0
>>717
吊ってきますorz
719名無しさん@お腹いっぱい。:2011/07/31(日) 23:45:29.37 ID:ht3+YAjM0
>>715
あれ、そうなるとifmsgboxの代替として何を使えばいいんだろうか
720名無しさん@お腹いっぱい。:2011/07/31(日) 23:52:57.72 ID:TtxcY3ql0
>>719
スレ見るとわかるんだがA_MsgBoxResultがかわりに追加されてる。

2系は当分アルファだろうけど仮に1系にA_MsgBoxResultが
バックポートされたら対応しとけばいいんじゃないか。
いろいろ変わるらしいから
古いスクリプトはv1のexeを使うのが現実的かもしれないけど。
721名無しさん@お腹いっぱい。:2011/08/01(月) 00:11:16.04 ID:LMBaog1m0
ブラウザのOperaの右クリックとホイールアップダウン使うショートカットを別のものに上書きしたんですがl
このスクリプトを使っていると通常の右クリックが使えなくなってしまいました。

#ifWinActive ahk_class OperaWindowClass
RButton & WheelDown::send, ^{WheelDown}

#ifWinActive ahk_class OperaWindowClass
RButton & WheelUp::send, ^{WheelUp}

右クリックを右クリックとして動作させるにはどうしたらいいでしょうか?
ちなみに

#ifWinActive ahk_class OperaWindowClass
Rbutton::send, {Rbutton}

これを追加したところ今度はOpera標準のマウスジェスチャーが使えなくなってしまいました。
解決策が分かる方イましたらご回答お願いします。
722名無しさん@お腹いっぱい。:2011/08/01(月) 00:44:13.00 ID:gGF/O2NG0
>>720
あ、ほんとだw
すぐ下に書いてありましたね
すまん
723名無しさん@お腹いっぱい。:2011/08/01(月) 22:01:29.12 ID:huEJ3r5x0
>>661
これと同じ事なのですがOSの終了起動をまたいでを想定しているので
A_TickCountは使えません。
tNow -= 1970,s
tOld -= 1970,s
six += tNow - tOld
S = 1970
S += six,s
FormatTime, TS, %S%, HH時間mm分ss秒
等やっているのですが明らかに10時間以上経過しているのに
1時間52分09秒などと計算されてしまいます。
tNow、tOldはYYYYMMDDHH24MISS形式の値です。
どう書き換えたら良いですか?
724名無しさん@お腹いっぱい。:2011/08/02(火) 12:26:40.31 ID:JQYB5pyo0
>>723
>six += tNow - tOld
うっかりミスだと思うけど、代入の間違いだね。sixがグローバル or スタティック変数なら += は不味い
それと24時間を越えるとHoursがオーバーフローするから、別途日数を用意した方が良いと思う

tNow -= tOld, d
result := tNow . "日" . TS
725名無しさん@お腹いっぱい。:2011/08/02(火) 20:22:03.30 ID:GMiXDYZA0
>>721
押下後そのまま離したときは右クリ
押下後ホイール操作したときはSend
押下後マウスを移動したときはドラッグ

それぞれの場合で分岐させたり、その他工夫する
RButton関係はこのスレだけでもかなり例が出てるから自分に合ってるものをどうぞ


>>723
日付時刻型にフォーマットしたいという意図は分かるが、
tNowとtOldの差が10時間としたら
S += six,s で算出されるのは、1970年01月01日10時00分00秒

差を出したいなら
RegExMatch( tNow, "(?P<Year>\d{4})(?P<Mon>\d{2})(?P<Day>\d{2})(?P<Hour>\d{2})(?P<Min>\d{2})(?P<Sec>\d{2})", Now )
でtNowとtOldをそれぞれ分解して場合分けしながら(2,4,6,9,11月)足し引きする

日単位まででいいなら算出した差six(単位:秒)を
「//やMod()」使って日・時・分・秒に分ける方がかなり楽
「tOldから10時間以上経過してたら〜〜」ならこれだけでいい
If( six/3600 > 10 )
726名無しさん@お腹いっぱい。:2011/08/02(火) 21:35:37.72 ID:8FvI0v/E0
>>724
いろいろやっていたらOldはGMT時間、NowはJST時間で時差の補正を
していなかったためという事に気付きました。
他の部分でOldも9時間足してJSTにしていると思い込んでいたため
変数の中身をきちんと確認していませんでした。
どうもすみませんでした。

>>725
とりあえず解決はしましたが教えていただいた方法も試してみます。
ありがとうございました。
727名無しさん@お腹いっぱい。:2011/08/03(水) 02:21:19.94 ID:4T1fNQZW0
New simple dota hotkey
http://www.autohotkey.com/forum/topic74881.html

なんか怪しいスクリプトっぽいのですが、
こういうautohotkey製のプログラムをデコンパイルするにはどうすればいいのでしょうか?
728名無しさん@お腹いっぱい。:2011/08/03(水) 06:59:02.01 ID:oFfNacgR0
Exe2Ahk.exe
729名無しさん@お腹いっぱい。:2011/08/04(木) 06:15:43.02 ID:OybPTCpF0
AutoHotKey.ahkのなかでテキストで開いたとして、
書くとしたら先頭に書かなければいけないコマンド群ってどこのHPをみればわかりますか?
GroupAddはスクリプトの先頭に書かないといけないんですよね?
教えてください
730名無しさん@お腹いっぱい。:2011/08/04(木) 09:35:45.05 ID:KjQVvQaS0
んー?なにがしたいんだ?
731名無しさん@お腹いっぱい。:2011/08/04(木) 10:13:42.93 ID:5shDBSkd0
732名無しさん@お腹いっぱい。:2011/08/04(木) 12:51:55.27 ID:OybPTCpF0
>>731
すいません。丁寧にありがとうございます。

しかし示していただいたコレ読んでも
ほとんど理解できない。groupaddないし。
キーワードが分かったのでそれてがかりに検索して理解できるように取り組んでみます。
733名無しさん@お腹いっぱい。:2011/08/04(木) 13:32:50.93 ID:9fhW0+7x0
典型的な夏休みのゆとりだな。このあと逆ギレになると予想する。
734名無しさん@お腹いっぱい。:2011/08/04(木) 14:00:14.21 ID:5shDBSkd0
要はスクリプト全部に適応させたいモノは最初に書いとけってだけだよ
そこに書いてあってもイベント発生後の直前指定で構わない場合もあるし
自分が使わないものを羅列したって意味はない
730の言うとおり、自分が何をしたいのかを把握するのが第一
735名無しさん@お腹いっぱい。:2011/08/04(木) 14:14:00.16 ID:wDIgkqoV0
Fnキーの組み合わせでボリュームコントロールや輝度調整ができますが、
ボリュームコントロールはVolume_Downでできますが、輝度調整に当たるキーはないのでしょうか?
ちなみに、ショートカットキーはFn+F1です。
736名無しさん@お腹いっぱい。:2011/08/04(木) 19:10:52.96 ID:g3S9MU/20
>>725
ちょっとためしてみます。どうも。
737名無しさん@お腹いっぱい。:2011/08/05(金) 11:47:45.77 ID:zdszzInP0
コミックスタジオというソフトで、ショートカットキーを2度素早く押すと
ツールパレットウィンドウが開くという仕様があり、
このパレットを常々消しておきたい自分は以下のようなスクリプトを組んだのですが
b:DoubleCheck()
DoubleCheck(){ ;二度押し抑制関数
 if ( A_PriorHotkey = A_ThisHotkey
 and A_TimeSincePriorHotkey < 500 )
  return
 else
  send, %A_ThisHotkey%
 return
 }
時々誤動作すると思ったら、b→Lクリック→bを素早く押すことでも反応してしまうということがわかりました。
何かうまい修正の仕方はないものでしょうか?
738名無しさん@お腹いっぱい。:2011/08/05(金) 13:03:01.17 ID:Cw1VQaMD0
組み込み変数使わないで、該当キーの前回の押下時間を自分で記録してやりゃいいだけかと。
739名無しさん@お腹いっぱい。:2011/08/05(金) 13:18:00.75 ID:rqa6WHPr0
A_TickCountでも使えばいいんでない
b::
latest := A_TickCount
If ((latest - last) > 500 || !last)
 Send,% A_ThisHotkey
last := latest
Return
740名無しさん@お腹いっぱい。:2011/08/05(金) 14:23:41.90 ID:zdszzInP0
>>739
うまくいきました、ありがとうございます!
741名無しさん@お腹いっぱい。:2011/08/05(金) 18:15:23.42 ID:NoNn2czO0
AutoHotKeyを初めて導入しました。
MouseGesture.ahkを起動したところMG_Edit.ahkで

>Error at line 79
>
>The following variable name contains an illegal character:
>"WS""
>
>The program will exit.

とエラーが出てしまいます(「OK」を押しても続けて同じエラーが出ます)
どうしたら改善できるでしょうか?
どうかアドバイスをお願い致します。

WinXPsp3

79 WS:=AddCustomTemplateSub("","ウィンドウ状態","WS")
742名無しさん@お腹いっぱい。:2011/08/05(金) 18:42:29.67 ID:Cw1VQaMD0
>>4 の中段
743名無しさん@お腹いっぱい。:2011/08/05(金) 21:30:32.58 ID:hErndaGB0
AutoHotkey_Lを導入すればいいということでしょうか?
「旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない」ということなので、本家を導入したのですが・・・
744名無しさん@お腹いっぱい。:2011/08/05(金) 22:00:41.20 ID:SJWPbhL50
えーと今は本家のバージョン番号をAHKLが受け継いだんじゃなかったっけ?
AHKLになる前の本家を使えばいいのかな?
745名無しさん@お腹いっぱい。:2011/08/06(土) 01:28:58.36 ID:ENyc1c/m0
>>685にも出ているようですが、非アクティブのFirefox4/5をwheeldown,up送信してスクロールってどうすれば良いのでしょうか?
Windows7x64なのが関係してるのか>>686のスクリプトもTrackWheelはデバッグモードにしてもツールチップが出ず、
WheelScrollは加速しないしAlt+スクロールじゃないとスクロールしなくなったりです。
746名無しさん@お腹いっぱい。:2011/08/06(土) 14:20:22.47 ID:FVzOBLyR0
Firefox4以降から仕様が変わっただけ。OS関係ない。
classNN はまったく取れないので、メッセージはウィンドウ自体に送れってこと。
TrackWheelなどのツールだと classNN していなしで、親ウィンドウクラスだけ指定すりゃ動く
747名無しさん@お腹いっぱい。:2011/08/06(土) 17:51:26.51 ID:lDxrs02b0
TrackWheelで便乗質問、作者さんまだ見てらっしゃるといいんですが
TW発動時にShiftやCtrlを押してると変な挙動をすることがあります

TW_ScrollDispattcher() の中
>if (keys && !(option & 0x100))
>  ruleY := "Wheel",lineY:=(lineY>0) ? 1 : (lineY<0) ? -1 : 0
(optionはダミー変数で、Shit/Ctrl押下時は常に ruleYの書換が行われているようです)

旧バージョンを遡ってみたところ v5では[Shift]+[Ctrl]で発動
v6_rcでは TW.iniの Option項目を参照しているようです
具体的に何のためのコードなのかが、iniやreadmeを見てもわからないのですが
丸ごとコメントで無効してしてしまっても問題ないものでしょうか?

XP SP3 / AHK ver.1.0.48.05
748名無しさん@お腹いっぱい。:2011/08/09(火) 14:04:57.16 ID:Mp67kO8X0
ウィンドウのタイトルバーの高さを取得する方法はあるでしょうか?
749名無しさん@お腹いっぱい。:2011/08/09(火) 14:20:12.04 ID:+erVsKQ40
OSとかアプリとか、なぜ具体的に書かないのか
750名無しさん@お腹いっぱい。:2011/08/09(火) 14:58:49.40 ID:iDz800JG0
751名無しさん@お腹いっぱい。:2011/08/09(火) 17:13:32.38 ID:Mp67kO8X0
>>750
できました。
ありがとうございます。

javaで言う所のHashMapみたいな、キー = 値 でデータを管理する機能はあるでしょうか?
752名無しさん@お腹いっぱい。:2011/08/09(火) 18:14:19.06 ID:rGMPYmoU0
なんで公式のドキュメント読まないの?
http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/Objects.htm
753名無しさん@お腹いっぱい。:2011/08/09(火) 18:59:17.16 ID:Mp67kO8X0
>>752
すみません。
日本語のサイトしか見ていなかったです。

オブジェクトたるものがあるのですね。

上のほうでも書かれていた以下を実行すると「Error: Call to nonexistent function.

Specifically:」がでます。
「Object()」は各自が定義するものなのでしょうか?

AutoHotkey.chmで「Object」で検索しても見つかりませんでした。

TargetWindow := Object()
TargetWindow.Insert("ahk_class 特定のウィンドウクラス1")
TargetWindow.Insert("ahk_class 特定のウィンドウクラス2")
TargetWindow.Insert("ahk_class 特定のウィンドウクラス3")
754名無しさん@お腹いっぱい。:2011/08/09(火) 19:29:57.19 ID:rGMPYmoU0
オブジェクトはAutoHotkey_Lで追加された機能ね。詳しくは>>1>>4-5
755名無しさん@お腹いっぱい。:2011/08/09(火) 20:50:23.95 ID:Mp67kO8X0
>>754
ありがとうございます。

MAPみたいなものを考え、以下の2通りでキーでセット、取得を試みましたがダメでした。
サイトにInsertはあったのですが、取得がありませんでした。
以下の方法で行けると思ったのですが…

============================================================
Map := Object()

Map.Insert(%index%, %Width%)
Value := Map.item(%index%)
ToolTip, %Value%
============================================================

============================================================
Map := Object()

Map.Insert(%index%, %Width%)
Value := Map.item[%index%]
ToolTip, %Value%
============================================================
756名無しさん@お腹いっぱい。:2011/08/09(火) 21:26:47.42 ID:fHSlhZjEP
>>755
Width = 640
index = 35
Map := Object()
Map.Insert(index, Width)
Value := Map[index]
MsgBox, %Value%

Insertのとこ引数を%width%とするとAHKは変数widthじゃなくてwidthを展開して変数640の中身を見に行ってしまい当然中身は無
あとMap.item[xxx]じゃなくてMap[xxx]
757名無しさん@お腹いっぱい。:2011/08/10(水) 14:23:00.09 ID:kI0YEaRx0
ShorterLauncherみたいに、コンテキストメニューに縦セパレータ入れて二列メニューにすることってできない?
メニューに項目追加していくと、すぐ縦長になって視認性悪くなるんだけど
758名無しさん@お腹いっぱい。:2011/08/10(水) 14:30:39.35 ID:wcGh0jjL0
>>756 ありがとうございます。ウィンドウ右クリックでタイトルバーのみ表示、通常表示のトグルをさせたいのですが、Mapの取り出しでどうしても前回の値が取れません。
「Map := Object()」をグルーバル変数的に考えてるのですが、コールバックごとにクリアされるのでしょうか?
Map := Object()
~RButton::
CoordMode,Mouse,Screen
MouseGetPos, xpos, ypos, win
WinGetActiveStats, Title, Width, Height, X, Y
SysGet, TitleHeight, 4
if ((xpos >= X && xpos <= (X+Width)) && (ypos >= Y && ypos <= (Y+TitleHeight)) ) {

MouseGetPos, ,, win
WinGet, index, ID, ahk_id %win%
Value := Map[index]
;初回は空だから0をセット
if var is not integer
Value = 0

;ウィンドウが開いているとき
if (Value == 0) {
Map.Insert(index, Height)
WinMove, ahk_id %win%, , X, Y, Width, TitleHeight
;ウィンドウが閉じているとき
} else {
WinMove, ahk_id %win%, , X, Y, Width, Value
Map.Insert(index, 0)
}
}
CoordMode,Mouse,Relative
return
}
CoordMode,Mouse,Relative
return
759名無しさん@お腹いっぱい。:2011/08/10(水) 15:22:44.25 ID:G6AZQfQw0
>if var is not integer
varではなくValue。値自体は取れてるはず
760名無しさん@お腹いっぱい。:2011/08/10(水) 15:43:21.55 ID:4xgHQFKY0
>>758
なんでMouseGetPosを2回?
最後のCoordMode,Mouse,Relativeもわざわざいらないし

>WinGet, index, ID, ahk_id %win%
これなんか意味わからん

タイトルバーにクリックしたかの判定はこれが安定的
MouseGetPos, PosX, PosY, hWnd
SendMessage, 0x84,, (PosX & 0xFFFF) | (PosY & 0xFFFF) << 16,, ahk_id %hWnd%
If ErrorLevel in 2,3,8,9,20,21
761名無しさん@お腹いっぱい。:2011/08/10(水) 16:33:08.29 ID:wcGh0jjL0
>>759
>>760
ありがとうございます。

var → Valueに変えたけどダメでした。

以下のコードに変更したのですが、やはりマップから値が取れないようです。

MsgBox %index% %Value% %Height%   ※『0x20268 0 225』が出力
Map.Insert(index, Height)
MsgBox %index% %Value% %Height%   ※『0x20268 0 225』が出力
Value := Map[index]
MsgBox %index% %Value% %Height%   ※『0x20268 225』が出力

キーの「0x20268」が悪いのですかね…
Versionはv1.1.02.00です。
762名無しさん@お腹いっぱい。:2011/08/10(水) 17:59:17.06 ID:G6AZQfQw0
Mapオブジェクトは、ちゃんとAuto-execセクション内で作成されているのか?
キーは16進数でもなんら問題ない
#y::
Map := Object()
idx := 0x20268
Map.Insert(idx, 225)
MsgBox,% Map[idx]
Return
763名無しさん@お腹いっぱい。:2011/08/10(水) 23:32:05.81 ID:r7m54bKE0
まぁ、ぬるぽでしょうな。AHKじゃエラー(例外)は起きないけど。

いろいろなところから呼び出されるんなら、初期化はきちんとしないと。
シングルトンのように扱いたいなら、関数内の static オブジェクトにしちまうと楽。

Map() {
 static obj:={}
 return obj
}

; 変態のようだが以下のような文法でアクセスすりゃ、一時変数も不要
Map().foo := "bar"
MsgBox, % Map().foo
764名無しさん@お腹いっぱい。:2011/08/11(木) 10:57:18.63 ID:vekHVVDj0
マウスの押し下げじゃなくてリリースにマッピングさせることは可能ですか?

MButton::
これだと押し下げでイベント発生
765名無しさん@お腹いっぱい。:2011/08/11(木) 11:33:42.86 ID:aoIN8pFT0
766名無しさん@お腹いっぱい。:2011/08/11(木) 11:46:03.37 ID:vekHVVDj0
>>765
ありがとうございます。
そしてすみません。完全に見落としてましたm(__ _)m
767名無しさん@お腹いっぱい。:2011/08/11(木) 13:44:29.32 ID:vekHVVDj0
>>758
そのやり方だとitunesとかIPメッセンジャーをタイトルバーだけにできないよ
AutoHotKeyでそれができるかは分からないけど、FileBox eXtenderを使うのも一つの手かと
768名無しさん@お腹いっぱい。:2011/08/11(木) 14:56:37.65 ID:kpbuCW2Z0
>>767
横からすまんが、
WinMoveの代わりにWinSet, Regionを使ったらそれっぽく見せかけられるはず
769名無しさん@お腹いっぱい。:2011/08/12(金) 11:13:56.43 ID:YG6Ecp+J0
Windows7の64ビットで SoundSet -5 でマスタボリュームが変更できない。
AutoHotKeyは64ビットのユニコード版です。
同じ現象の人いますか?
770名無しさん@お腹いっぱい。:2011/08/12(金) 11:24:22.68 ID:Ar58P8530
>>769
Send,{Volume_Up} , Send,{Volume_Down} , Send,{Volume_Mute} で
とりあえず音量は変えられる。

771名無しさん@お腹いっぱい。:2011/08/12(金) 11:57:40.30 ID:YG6Ecp+J0
>>770
その手があったか…
助かりました。

話が変わりますが以下で悩んでおります。

============================================================

Firefoxのタイトルバーにマウスイベントを設定しています
Firefoxのマウスジェスチャーも有効にしたいので”~RButton::”を使ってます
この状態で共演は可能でした。

ところがタイトルバークリックでイベントも投げるので右クリックメニューが出ます。
出したくなかったので「RButton::」に変えて、タイトルバー以外ではSend, {RButton}を出すようにしました。

タイトルバーでメニューは出なくなりましたが、今度はマウスジェスチャーが効きません。マウスダウンではなくマウスクリックのイベントを送っているので、同然ジェスチャーが効かなくなります。

マウスジェスチャーも効き、タイトルバーでメニューを出さな方法はあるでしょうか?
ちなみにかざぐるマウスでは可能でした。
どのようにやっているのかわわかりませんが、AutoHotKeyで可能なものでしょうか?
772名無しさん@お腹いっぱい。:2011/08/12(金) 15:25:33.09 ID:Ar58P8530
>>771
AutoHotKeyでやったことはないけどマウ筋を使っていたときは
最初に「ESC」を送って消していた記憶がある。
773名無しさん@お腹いっぱい。:2011/08/12(金) 22:00:48.51 ID:lSbX88q10
774名無しさん@お腹いっぱい。:2011/08/16(火) 17:13:19.41 ID:53aGvmQL0
複数プロセス起動で別々のスクリプトを読み込ましていますが
今のところ問題なく動作してます。
そもそもこのソフトは複数プロセスに対応している仕様でしょうか?
775名無しさん@お腹いっぱい。:2011/08/17(水) 03:00:53.26 ID:lYmGIxYN0
テキストファイルの内容を0バイトにしたい場合
type nulで上書き出力する以外に方法はありますか?
776名無しさん@お腹いっぱい。:2011/08/17(水) 07:01:27.43 ID:ReOTj/Rh0
>>774
複数スクリプトの読み込み・実行は特に問題ない。

が、キーやマウスなど乗っ取り対象がひとつの場合、起動順などで挙動が変わることはままある。

>>775
FileOpen で新規作成モード
777名無しさん@お腹いっぱい。:2011/08/18(木) 12:02:23.57 ID:KsB4dxKS0
Vanisher.exeというソフトみたいなことをスクリプトで実現できるものでしょうか?
778名無しさん@お腹いっぱい。:2011/08/18(木) 12:28:28.39 ID:PjWPzrTDi
ファイル名を書くだけより、
機能をかいつまんで書いた方がいろいろな意見を
聞ける可能性が高まると思う。
779名無しさん@お腹いっぱい。:2011/08/18(木) 16:34:54.66 ID:KsB4dxKS0
>>777
すみません。

例えば最大化しているウィンドウが複数あった場合、
画面の左半分にデスクトップが現れて、そこでは通常のデスクトップ操作ができるソフトです。

要は半画面分のアプリケーションエリアが魔法のように消えて、左半分の操作はデスクトップへのオペレーションになるイメージです。
これがWindows7で使えないので自作しようと思いまして。

アプリがどうやっているのか不思議ですが、
780名無しさん@お腹いっぱい。:2011/08/18(木) 17:34:18.67 ID:t4XvuLQu0
Winset,Region でできる
781名無しさん@お腹いっぱい。:2011/08/18(木) 19:21:02.05 ID:oDI8opAl0
何個か前のスレでまさにそれ用の関数書いてた人が居た気がする
782名無しさん@お腹いっぱい。:2011/08/18(木) 22:57:18.65 ID:WG8LcAGW0
特定範囲にかかってるウィンドウをまとめて別の場所に移動するってこと?
それとも絶対領域ってツールみたいに最大化しても特定領域にはかからないようにするってこと?

前者だったらマルチモニタでモニタ1から2へのスクリプトとかよく使ってるな。
783名無しさん@お腹いっぱい。:2011/08/18(木) 23:19:53.21 ID:t4XvuLQu0
ウィンドウに穴あけてデスクトップアクセスしたいって意味かと思ったが

TrackWheelの人が公開してる
http://sites.google.com/site/agkh6mze/scripts

自分はマウスに追従して小穴が移動するようにして使ってるけど
画面半分ばっさり空けるってのも潔いかも知れんね
784名無しさん@お腹いっぱい。:2011/08/19(金) 23:56:33.79 ID:kkegT2tK0
Windows7、AutoHotkey_L(Ansi32Bit)のWinGetって使えなくなってる?
785名無しさん@お腹いっぱい。:2011/08/20(土) 00:55:24.53 ID:etXPyQcq0
ごめん、問題なかった
786名無しさん@お腹いっぱい。:2011/08/20(土) 04:35:31.02 ID:ZoL9k9G40
Filebox Extender や Direct Folderという、Windowsエウスプローラー拡張アプリには
Click Switchというものがあります。それは、アプリケーションの、開く、や、保存する、のダイアログボックスが表示された状態で
エクスプローラーで開いているフォルダの空欄をクリックすると、ダイアログボックスのアドレスがクリックしたフォルダのアドレスに移動するというものです。
たとえば、IEで特定の画像を保存しようと、名前を付けて保存をする、でダイアログボックス表示させて、Dドライブの"画像保存"という名前のフォルダを開いてそのフォルダの空欄をクリック
すると、ダイアログボックスの保存先が画像保存フォルダになるという感じです。

この機能をAutohotkeyで実行できるスクリプトを探しているのですが、まったくみつかりません。
https://www.donationcoder.com/forum/index.php?topic=22305.0
このフォーラムのものを使ってみたりしましたがWindows7では動きませんでした。
こういうことができるスクリプトの存在を知っていましたら教えて下さい。よろしくお願いします。
787名無しさん@お腹いっぱい。:2011/08/20(土) 04:52:33.32 ID:ZoL9k9G40
>>786
Direct Foldersでした
788名無しさん@お腹いっぱい。:2011/08/20(土) 14:25:49.80 ID:8zzSVbLT0
OSが何だかわからんので何とも言えんが
DialogHandlerに投げるのが楽なんでないか

一から作るならDialogSetterのソースが参考になりそうと思ったが
今はもう公開されてないんだな
789名無しさん@お腹いっぱい。:2011/08/20(土) 14:31:13.83 ID:8zzSVbLT0
すまん Win7なのね
DialogHandlerはVista対応までみたいだね
790名無しさん@お腹いっぱい。:2011/08/22(月) 19:35:06.31 ID:5dZ5uUB40
>>788
VISTAまでならダメそうですね どうも
791名無しさん@お腹いっぱい。:2011/08/23(火) 06:42:17.41 ID:D2CLqgem0
スクリプトファイルのショートカットを作ってそちらから実行した時に
.ahkではなく.lnkのほうの名前やパスを取得することはできますか?
792名無しさん@お腹いっぱい。:2011/08/23(火) 07:13:59.20 ID:2qVW3jV00
>>790
Vistaまでサポートしてたんなら7でも動く可能性あるんじゃね?
程良く枯れたツールは不具合無いかぎり更新しないもんだよ
793名無しさん@お腹いっぱい。:2011/08/23(火) 17:21:59.44 ID:qWHrImhI0
~LButton::とLButton Up::って共存できます?
~LButton::が効いてくれません。
794名無しさん@お腹いっぱい。:2011/08/23(火) 17:23:07.47 ID:qWHrImhI0
>>793
なんかわかった!
~LButton & RButton::があると~LButton::が動作しない…
795名無しさん@お腹いっぱい。:2011/08/23(火) 18:46:56.30 ID:IUTAG7Xk0
>>791
Windows側(というかエクスプローラ)で処理するから
原理的にどちらから起動されたかアプリから区別できない
796名無しさん@お腹いっぱい。:2011/08/23(火) 20:11:47.35 ID:qWHrImhI0
再生、再生の停止命令をSendで送ることは可能ですか?
797名無しさん@お腹いっぱい。:2011/08/23(火) 20:50:23.03 ID:dKDKgWqf0
>■質問に際して
>OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
>また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
798名無しさん@お腹いっぱい。:2011/08/24(水) 01:15:46.15 ID:yHYn0gHP0
>>795
やっぱり無理か
でもincludeのみ記述したものをショートカット代わりにすることで解決したからおk
799名無しさん@お腹いっぱい。:2011/08/24(水) 10:26:35.42 ID:J0cTymOp0
あるファイラーでファイルをダブルクリックして実行した場合、そのファイルのパスを取得することはできるでしょうか?
ダブルクリックの割り込みを設定したところでそこで何ができるかで行き詰ってしまいました。
800名無しさん@お腹いっぱい。:2011/08/24(水) 10:54:11.41 ID:Bl2tUZI70
>>799
29 :名無しさん@お腹いっぱい。[sage]:2009/09/28(月) 12:53:08 ID:osZ+Tna60
エクスプローラでファイルのパス名を取得してクリップボードに入れたいのですが、
タイトルバーにパス名 の設定にしてそこから…以外に、取得する方法ってあるんでしょうか?
Window Spyで >>>>( TitleMatchMode=slow Visible Text )<<<< に
表示されてるトコあたりからゲットできればいい気がするんですが…
30 :名無しさん@お腹いっぱい。[sage]:2009/09/28(月) 13:16:45 ID:Couq7dy70
>>29
エクスプローラの選択ファイルで何かするときは
Ctrl+Cしたファイル情報を文字列化するのが便利

send, ^c
sleep, 200
clipboard := clipboard . ""
31 :名無しさん@お腹いっぱい。[sage]:2009/09/28(月) 14:01:34 ID:B+JRl/yG0
ClipWait使おうぜ…

#NoTrayIcon
#NoEnv
Clipboard=
Send, ^c
ClipWait
Clipboard=%Clipboard%
32 :名無しさん@お腹いっぱい。[sage]:2009/09/28(月) 15:37:25 ID:aEZJxxhv0
>>31
ClipWaitなら一応待機時間付けといた方が良い。
無選択でコピーしようとしたときにいつまでも待機しちゃうから。
33 :名無しさん@お腹いっぱい。[sage]:2009/09/28(月) 16:16:38 ID:JNXFXCDoP
>>29
ShellFolder() : エクスプローラのPathおよび選択ファイルを取得
 ttp://www.autohotkey.com/forum/topic20701.html
801名無しさん@お腹いっぱい。:2011/08/25(木) 10:10:46.92 ID:kZsa3dQo0
チルトホイールの割り当てできますか?
802名無しさん@お腹いっぱい。:2011/08/25(木) 10:59:45.71 ID:fO+WQQSz0
Vista以降なら可
803名無しさん@お腹いっぱい。:2011/08/25(木) 11:02:47.22 ID:glyzDOv30
マウスドライバで
チルトにF13キー割り当てればXpでもできるよ。
804名無しさん@お腹いっぱい。:2011/08/26(金) 14:41:02.91 ID:S+B5Zwzg0
マウスホイールでマウス下のコントロールをアクティブにしてスクロールさせるという、マウスジェスチャーでよくあるようなものを自作したんですけど、
Jane Style(ClassNN: TMDITextView2)がうまく動作しません。
アクティブにはなりますが、スクロールを送ることが出来ず、他の画面がスクロールしてしまいます。
どうすればJane Styleもコントロールできるでしょうか。

WheelUp::
CoordMode,Mouse,Screen
MouseGetPos, xpos, ypos, win, control, 1
IfWinNotActive, ahk_id %win%
{
WinActivate , ahk_id %win%
}
ControlClick, %control%, ahk_id %win%, , WheelUp

return
805名無しさん@お腹いっぱい。:2011/08/26(金) 17:33:44.57 ID:jFJHp1zc0
確かTrackWheelのiniにStyle用の設定が入っていたはず
806名無しさん@お腹いっぱい。:2011/08/26(金) 18:42:55.68 ID:S+B5Zwzg0
モニターの電源OFFやスクリーンセーバーを起動させる方法は用意されているでしょうか
807名無しさん@お腹いっぱい。:2011/08/27(土) 13:26:18.99 ID:aKurZGr30
ListHotKeysで出てくる情報みたいなものを
ahkスクリプトで扱える状態で得る方法ってありますか?
808名無しさん@お腹いっぱい。:2011/08/27(土) 18:47:24.16 ID:UhKCQNOi0
ListHotkeys しかないんじゃないかな

ListHotkeys
WinWait, ahk_class AutoHotkey
WinGetText, text
WinHide
MsgBox, % text
809名無しさん@お腹いっぱい。:2011/08/28(日) 15:45:00.39 ID:9xSpfmVq0
やっぱり無理ですか。

いま存在しているホットキーの一覧を
ポップアップメニューで表示できたら便利かなと思ったんですが。
ホットキー登録を自作関数でやらないといけないのかな
810名無しさん@お腹いっぱい。:2011/08/29(月) 03:21:17.62 ID:lIBxjbis0
お尋ねします
マウスのクリック操作を、指定した時間だけ無効にするには
どの様にしたらよろしいのでしょうか?
よろしくお願いします
811名無しさん@お腹いっぱい。:2011/08/29(月) 07:40:32.87 ID:CglKuD430
#If のちょ〜基本的な使い方ってところかぬ

#If (MouseDisabeld)
*LButton::
*RButton::
*MButton::
*XButton1::
*XButton2::
 Return
#If

DisableMouse:
 MouseDisabled:=True
 SetTimer, EnableMouse, -時間を指定(ms) ; 負数で指定する(=1度のみ)
 Return

EnableMouse:
 MouseDisabled:=
 Return
812名無しさん@お腹いっぱい。:2011/08/29(月) 08:55:29.31 ID:TNup1KLy0
HotKey, *LButton, DoNothing, Off
return

Ins::
 If !(isDisableLButton)
  DisableLButton(5)
 return

DisableLButton(time)
{
 isDisableLButton := True
 HotKey, *LButton, On
 Sleep, 1000 * time
 HotKey, *LButton, Off
 isDisableLButton := False
}

DoNothing:
 return
813名無しさん@お腹いっぱい。:2011/08/29(月) 11:20:37.30 ID:4RnFTlRs0
814名無しさん@お腹いっぱい。:2011/08/29(月) 13:21:23.34 ID:lIBxjbis0
>>811>>812
本当に有難う御座います
815名無しさん@お腹いっぱい。:2011/08/29(月) 16:53:05.54 ID:0vLEb6Eh0
>>806
復帰なら、暗くなった状態でmousemoveで適当に動かせば、復帰する。
入る方法は、わからんなあ。
816名無しさん@お腹いっぱい。:2011/08/29(月) 17:39:36.56 ID:gmJe4YZc0
>>806
モニターオフ
SendMessage, 0x112, 0xF170, 2,,ahk_id 0xFFFF
817名無しさん@お腹いっぱい。:2011/08/29(月) 18:25:54.89 ID:GERL07WY0
>>806
http://ahk.xrea.jp/commands/PostMessage.html
の Example(s) のところにその2つの方法が書いてある
818名無しさん@お腹いっぱい。:2011/08/29(月) 22:21:41.97 ID:dgD36LBI0
How to install ZeniSynth - ZeniSynth - SourceForge.JP
http://sourceforge.jp/projects/zenisynth/howto/install

このるkbdzsjpn.dllというものを使えば
autohotkeyでcapslockの押上が検出できない問題が解決しそう

できればレジストリや既存のファイルを変更しない方法があればベストだろうけれど
819名無しさん@お腹いっぱい。:2011/08/29(月) 22:31:45.07 ID:iyQwrqGI0
ウィンドウのゲームをする時にマウスがはみ出さないように↓のを使っているのですが、
ウィンドウ右上の閉じるボタン等を押してしまうことがたまにあります。
これを防ぐ方法が何かあればお願いします。

RWin::^^

^^::
MouseGetPos, , , WindowUM,
WinActivate, ahk_id %WindowUM%
Confine := !Confine
WinGetPos, VarX, VarY, Width, Height, A
VarX2 := VarX + Width
VarY2 := VarY + Height
ClipCursor( Confine, VarX, VarY, VarX2, VarY2)
Return

ClipCursor( Confine=True, x1=0 , y1=0, x2=1, y2=1 ) {
VarSetCapacity(R,16,0), NumPut(x1,&R+0),NumPut(y1,&R+4),NumPut(x2,&R+8),NumPut(y2,&R+12)
Return Confine ? DllCall( "ClipCursor", UInt,&R ) : DllCall( "ClipCursor" )
}
820名無しさん@お腹いっぱい。:2011/08/30(火) 06:40:14.97 ID:1G+xTSv/0
>>819
そういうコード書けるなら一言だけ
LButton 押下時にWN_NCHITTEST で HTCLOSE( = 20)かどうかをチェキ
821名無しさん@お腹いっぱい。:2011/08/30(火) 12:09:04.61 ID:+GO827wc0
>>820
これ自分で書いたわけじゃないんです すみません書き忘れていました
どこかのフォーラム?から持ってきたんだと思います かなり前のことなので・・・
閉じるボタンを認識させるかを見張ればいいんですね ちょっと勉強してみます
閉じるボタン等の範囲を除外させるといいのかなと思っていましたが、そちらのほうが汎用性がありそうですね ありがとうございます
822名無しさん@お腹いっぱい。:2011/08/30(火) 19:50:49.15 ID:VgZMFkFA0
>>821
カーソルを制限する範囲からタイトルバー部分を除外するだけじゃだめぽい?
ClipCursor( Confine, VarX, VarY, VarX2, VarY2)

ClipCursor( Confine, VarX, VarY + 20, VarX2, VarY2)

タイトルバーの太さによって数値は変更必要かもしれんけど
823名無しさん@お腹いっぱい。:2011/08/30(火) 20:50:12.59 ID:rb9Bu5Ty0
>>819
Windowの枠を隠すのは駄目なんですかね?


+F11::

WinGet Style, Style, A
if(Style & 0xC40000) {
WinSet, Style, -0xC40000, A
} else {
WinSet, Style, +0xC40000, A
}
return
824名無しさん@お腹いっぱい。:2011/08/30(火) 21:48:42.53 ID:+GO827wc0
>>822
カーソル制限範囲を変えようと検索しながら色々いじってみたんですけど、狭くならないんですよね
いじり方が悪いんでしょうけど、このコードの意味をちゃんとわかってないんで差し当たりお手上げでした
指摘されたところ変えても変わらかったです

>>823
枠を消すのはいい案ですね 他の時にも使えそうですし
実際使ってみて、閉じる無効化と比較してみようと思います ありがとうございました
825名無しさん@お腹いっぱい。:2011/08/30(火) 22:09:50.00 ID:QGvOaunK0
DragDrop.ahkをincludeして、
DropFiles(WinExist("A"), "c:\aaa.txt")
としても何も起きないんですが、何が悪いんでしょうか。

環境はWindows7のAutoHotkey_L 1.1.03です
826名無しさん@お腹いっぱい。:2011/08/31(水) 11:07:59.43 ID:sljEi+KM0
"a"ボタンを押したとき"b1秒放置c"という入力にすることはautohotkeyでできますか?
a::
b
c
こんな感じだとは思うのですが。
827名無しさん@お腹いっぱい。:2011/08/31(水) 11:16:56.16 ID:oIYvKmxK0
a::
send,b
sleep,1000
send,c
return
828名無しさん@お腹いっぱい。:2011/08/31(水) 11:18:32.95 ID:sljEi+KM0
ありがとうございます!
829名無しさん@お腹いっぱい。:2011/09/01(木) 03:31:12.17 ID:9vw5zzU00
特定のウィンドウかダイアログが一定時間アクティブにならなかったら〜
っていう処理を考えてアクティブになったときの時間を記録し
あとはProcessed内で現在時間と比較し処理するっていう風にしたいんだけど
#Persistent
time=
windowFlag=0
settimer,Inter,1000
return

Inter:
WinGetTitle, wT, A
ifinstring,wT,ウィンドウ タイトル
{
time= %A_Now%
windowFlag=1
}
if(windowFlag==1){
Processed(time)
}
return
なにかうまくいかない
どこを書き換えるべき?
830名無しさん@お腹いっぱい。:2011/09/01(木) 03:45:34.80 ID:IJ2XRCgL0
>一定時間アクティブにならなかったら

は、どこにあるの?
関数の中?

関数に飛ぶ前にフィルタしたほうがいい気がする。

一定期間アクティブになったら〜〜 ならかんたんだけど、
アクティブにならなかったら、の場合、いつの時点から何秒間アクティブにならなかったら
フラグを発動させるかを判別する必要がある。

つまり、アクティブにならなくなったとみなす開始地点を記録する必要がある。
もっとパラメータを増やさなきゃならんな。
831名無しさん@お腹いっぱい。:2011/09/01(木) 03:47:33.46 ID:qREnlERX0
ダブルクリックでマウスカーソルの非表示と表示の切り替えは出来るのでしょうか?
よろしくお願いします
832名無しさん@お腹いっぱい。:2011/09/01(木) 04:25:37.37 ID:qEchvg1g0
>>674でも質問させてもらったのですがもう一度聞かせてください。

windows7 x64にて無変換を違うキーに割り当てる場合
仮想キーコード且つスキャンコードで指定すると
どうして一部のアプリケーションで不具合がでるのでしょうか?
教えてください。スキャンコードのみの指定とどう違うのでしょうか?

(不具合というのは無変換を押下してもなにもキー反応がでなくなる。)
スキャンコードのみで指定している現在ではこの不具合の症状が出ない。

自分のキーヒストリーをみた結果です。いたって普通に見えます。
http://rghost.net/20054311/image.png
よろしくお願いします
833名無しさん@お腹いっぱい。:2011/09/01(木) 07:14:25.24 ID:TO7tfjjy0
管理者権限で動く窓を操作したいなら、管理者で実行だぜ

ってか、「一部のアプリケーション」と情報を隠蔽するから解決が遅れてるんだよ。
834名無しさん@お腹いっぱい。:2011/09/01(木) 13:34:24.37 ID:9vw5zzU00
>>830
ifinstring,wT,ウィンドウ タイトル
でアクティブになったときの時間をtimeに入れ、
そのときに一度はアクティブになった事があるってことを示すのにwindowFlagを1にして
Processed(time)内でif(現在時間-time)>30みたいな感じに比較してる。

持続してアクティブになっているならtimeがA_Nowによって更新され続けて
関数に入っても現在時刻との差がほぼ無いから一定時間非アクティブならの処理は発動せず。
非アクティブになったらtimeが更新されないから現在時刻との差が広がっていって
一定時間非アクティブならの処理は発動
みたいに考えてたんだけどこれじゃ無理?
835名無しさん@お腹いっぱい。:2011/09/01(木) 14:34:17.48 ID:IJ2XRCgL0
>>834
なんかコードの可読性が悪くなってない?
Processed(time)の中で、処理するしないの条件を分岐する必要はあるの?

判別の材料としてA_NOWを使うなら、関数に飛ぶ前に判別したほうが
関数に飛ぶ前の条件と、関数でやる仕事とが明確化されて、わかりやすいかと思うが。

あと、具体的にどこでおかしくなってるのか、msgboxとかで調べてみなよ。
上の人とは違うが、これも具体例がないから、なにが原因で動かないのか、
第三者にはわからない。

単にWindowtitleがコロコロ変わって、アクティブになったフラグが立ってないだけの可能性だってあるし、
それがわかるのはあんたしか居ないわけで。
836名無しさん@お腹いっぱい。:2011/09/01(木) 14:34:37.77 ID:Dzg/dGOa0
それでも上手くやりゃできるけど、もっと単純にやればいい

SetTimer, kanshi, 100

kanshi:
  IfWinActive
   StackTime := 0
  StackTime += 100
  If( StackTime >= 30*1000 ) ;30秒以上非アクティブのとき〜
   「一定時間非アクティブならの処理」
Return
837名無しさん@お腹いっぱい。:2011/09/01(木) 14:40:23.21 ID:Dzg/dGOa0
なんか馬鹿だった。この型でA_Now使うべきだね
838名無しさん@お腹いっぱい。:2011/09/01(木) 15:11:07.12 ID:lVw3Zoyk0
WinWaitActive / WinWaitNotActive
じゃだめなのか?
839名無しさん@お腹いっぱい。:2011/09/01(木) 15:15:20.95 ID:IJ2XRCgL0
>>838
今回の用途では、その2つは何の意味もないよ。
840名無しさん@お腹いっぱい。:2011/09/01(木) 15:37:36.77 ID:lVw3Zoyk0
>>839
↓こういうことじゃないの?俺の読解力無いだけかな。
#Persistent

GuiName:="AhkTestGui"
Gui,+LastFound
Gui,show,w200 h200
WinSetTitle,,,%GuiName%
SetTimer,kansi,-1
return

kansi:
Loop {
WinWaitNotActive,%GuiName%
WinWaitActive,%GuiName%,,3
if(ErrorLevel){
msgbox,非アクティブになって3秒経過
WinWaitActive,%GuiName%
}
}
return

GuiClose:
ExitApp
841名無しさん@お腹いっぱい。:2011/09/01(木) 17:47:07.43 ID:9vw5zzU00
>>835
Processedは元は特定の時間(time)から現在の時間までの経過時間を
mm分ss秒みたいに表示するためので
それを流用しようとして差が一定以上だったらという条件を書き足してこんなんになってます。

windowFlagが0のままというかifinstring,wT,ウィンドウ タイトル を通ってない?
ウィンドウタイトルは固定ものですが指定の仕方が悪い?
半角スペースと全角文字(test テスト! みたいなもの)があるので
""でくくっても、括らなくてもどちらも通っていないような感じ
window spyで確認できるタイトルも指定しているのと同一だけど通らないようで。

>>835-840に提示されたものも試してみます。
ありがとうございます。
842名無しさん@お腹いっぱい。:2011/09/01(木) 18:38:22.10 ID:11dXB04t0
行き詰まりました、お助けを
ahk_classで特定ウインドウを取得して、ある操作をしたいのですが
クラス名が日本語で物凄く長いので、Autohotkeyが反応しません。
念の為、バイナリエディタでその実行ファイルのクラス名の書き換えをして
Autohotkeyが反応した事は確認しました。
何かいい方法は無いでしょうか?よろしくお願いします。
843名無しさん@お腹いっぱい。:2011/09/01(木) 19:50:19.21 ID:EsVjY8eC0
>>831
自プロセスならShowCursor使えばおk
他のプロセスならAttachThreadInputしないとダメ
844842:2011/09/01(木) 20:00:00.26 ID:qREnlERX0
どうやら駄目文字があるみたいですね
http://vipprog.net/wiki/AutoHotKey.html#oc2f06dc
何とか解決できました。
845名無しさん@お腹いっぱい。:2011/09/01(木) 22:00:02.06 ID:qEchvg1g0
>>833
>管理者権限で動く窓を操作したいなら、管理者で実行だぜ

これ最近知りました。知りませんでした。
教えて頂きました。
>隠蔽するから

隠蔽してなくて3D FPSゲームです。
このゲームだけのことじゃなくて一般的なこととして
どうして仮想キーコードとスキャンコードの両方で
ホットキー設定するとおかしくなって、スキャンコードのみだと
ちゃんと動くことの理由が知りたいです。
Appskeyとかにも割り当てしたいので
今後また出くわすかもしれないので。
846名無しさん@お腹いっぱい。:2011/09/01(木) 22:20:14.26 ID:+VUyuyU40
> 隠蔽してなくて3D FPSゲームです。
まだ隠蔽してるってw
847名無しさん@お腹いっぱい。:2011/09/01(木) 22:58:50.78 ID:nC+gIEfG0
一般的なこととしておかしくなったりしない
848名無しさん@お腹いっぱい。:2011/09/01(木) 23:07:29.06 ID:mOcBwKtM0
情報を小出しにする馬鹿
849名無しさん@お腹いっぱい。:2011/09/01(木) 23:16:41.16 ID:APeDBOfB0
また日記の人が来てるのか
850名無しさん@お腹いっぱい。:2011/09/01(木) 23:42:23.39 ID:QGIadtz70
>>674
AHKの前のVerでは動いてたのに・・・

ってくだりを見ると、日記の人でビンゴっぽいな
まずは車のライトをつけてみないと解決しないのに。
851名無しさん@お腹いっぱい。:2011/09/02(金) 00:04:57.84 ID:3GqjVthw0
エラーは例外であって一般的に起こるエラーなどそうないのです
すべての事例は個別に対処されるしかないのです
852名無しさん@お腹いっぱい。:2011/09/02(金) 07:54:22.03 ID:jlXtZcTT0
ゲームソフトの類は内部をかなりチューンしてるものが多いみたいだし
キーカスタマイズ系のソフトがまともに動かないって話はよく聞くが。
少なくとも「一般的なこと」として対処できる代物ではないんでないの

つか7でもx64でもAHK_Lでもないから知らんけど個の環境依存の可能性はどうなの?
複数PCで検証した様子もなくAHK側の不具合もしくは仕様変更と決めつけてるのが気になるんだが
853名無しさん@お腹いっぱい。:2011/09/02(金) 13:58:17.05 ID:vFxxFdFx0
すみません、教えてください
WinWait,ahk_class xxxxで、複数のウインドウを一つのスクリプトで監視したいのですが
そのような事は可能でしょうか?
854名無しさん@お腹いっぱい。:2011/09/02(金) 14:09:39.88 ID:xqdKDOi/0
>>853
ahk_group
855名無しさん@お腹いっぱい。:2011/09/02(金) 14:47:38.46 ID:vFxxFdFx0
>>854
素晴らしい!本当に出来ました!有難う御座います!!
856名無しさん@お腹いっぱい。:2011/09/02(金) 15:40:58.18 ID:BLzah4ts0
任意のアプリケーションが起動している場合、スクリーンセーバを起動させない、ということをAutoHotKeyで実現できますか?
857名無しさん@お腹いっぱい。:2011/09/02(金) 15:49:33.28 ID:BLzah4ts0
>>856
後出しですみませんが、マウス、キーをタイマーで動かすことはなしで、でお願いします。
858名無しさん@お腹いっぱい。:2011/09/02(金) 16:38:33.47 ID:iPltOTex0
スクリーンセーバなんて長いこと使ってないな…
859名無しさん@お腹いっぱい。:2011/09/02(金) 18:47:09.65 ID:lUfQ88wm0
Windows7でモニターの全域を使用して、フルスクリーン表示がしたく
完全にタスクバーを隠すスクリプトを探しています。
幾つか試したものは、どれもトグル動作するものでした。
出来ればそれをバッチに組み込み、読み込みと同時にAHKがアンロード出来るようにしたいと思っています。
何か良い策はありませんでしょうか?お願いします。
860名無しさん@お腹いっぱい。:2011/09/02(金) 21:59:42.96 ID:YcXoDkwl0
MouseMove, MouseMove, PixelGetColor

3つの関数を利用して
アクティブウィンドウの
画面変化を検出して
マウスを操作しているのですが、

アクティブでない場合は
どのような方法をとればよいのでしょうか?
861名無しさん@お腹いっぱい。:2011/09/02(金) 22:01:10.09 ID:YcXoDkwl0
>>860
ちなみに非アクティブのまま
操作したいのです。
862名無しさん@お腹いっぱい。:2011/09/02(金) 22:18:04.75 ID:ZtTKikko0
画面変化を検出するのに、なぜmousemoveが必要なの?
ここでアドバイスをもらいたければ、やりたいことを隠さず全部書かなきゃダメ。
863名無しさん@お腹いっぱい。:2011/09/02(金) 22:34:20.21 ID:qH/ycp++0
>>860
CoordModeというコマンドを使うと、PixelGetColorのxyの基準を
アクティブウインドウの左上からスクリーンの左上へと変更できる。

CoordMode, Pixel, Screen
wingetpos, winX, winY, ,, ahk_class Notepad
pixelX := winX + 100
pixelY := winY + 100
PixelGetColor, color, %pixelX%, %pixelY%
864名無しさん@お腹いっぱい。:2011/09/03(土) 09:28:56.67 ID:q6Nt0LIM0
レスどうもです。

>>862
画面変化はPixelGetColorで検出してます。
マウス操作はMouseMoveとMouseClickです。

(おっとMouseMoveがダブってた。)

>>863
非アクティブのままイケるかな?試してみます。
>>861
865名無しさん@お腹いっぱい。:2011/09/03(土) 21:08:00.84 ID:XzSQzvS50
ショートカット1度目でON、2度目でOFFにする方法のご指導お願いします
初心者です。15分でホットキーを押すタイマーを作っています
Alt + Ctrl + upを1回押すことで15分後にWIN+xをSendすることはできました
15分経過前にもう一度Alt + Ctrl + upを押すことでキャンセルできるようにしようと思い、
if を使って改造してみたのですが、いまいち上手くいきませんでした
どう書けばいいか、よろしくお願いします

!^UP::
SetTimer, Alart1 , -900000
Return
Alart1:
 Send, #x
Return
866名無しさん@お腹いっぱい。:2011/09/03(土) 21:56:46.78 ID:Au4nZbLt0
>>865
alert1Status := 0 ; 初期状態off

!^UP::
 alert1Status := !alert1Status ; on/off反転
 if (alert1Status) { ; onになるならセット
  SetTimer, Alert1, -900000
 } else { ; offならキャンセル
  SetTimer, Alert1, Off
 }
 Return

Alert1:
 Send, #x
 Return
867名無しさん@お腹いっぱい。:2011/09/03(土) 22:06:25.15 ID:xnhP2JN70
>>865-866
常駐させて何度もタイマー起動するなら15分経過後にフラグリセットしたほうがいいかも?

Alert1:
 Send, #x
 alert1Status =
 Return
868名無しさん@お腹いっぱい。:2011/09/03(土) 22:16:58.74 ID:XzSQzvS50
>>866>>867
そうすればいいんですね!上手くいきました
これでパワーナップが捗りそうです ありがとうございました
869名無しさん@お腹いっぱい。:2011/09/04(日) 01:03:04.18 ID:tMBTqOPS0
指定したウインドウを、アス比固定で最大化って出来ますか?
870名無しさん@お腹いっぱい。:2011/09/04(日) 07:49:50.49 ID:kj/zgyTq0
既存のものでいいんですが、Windows7で動く
選択したファイルをひとつ上の階層に移動するようなスクリプトってありませんでしょうか?
例えばAフォルダの中にBフォルダがあるとして、そのBフォルダの中にあるaファイルをAフォルダに移動する、という動作です。
871名無しさん@お腹いっぱい。:2011/09/04(日) 08:05:23.82 ID:l7HFrHLU0
ファイルaを一つ上に移動するだけならアホみたいに簡単に作れるよ。
でもそんなもの作っても意味ないよね。マウスでつかんで移動した方が早いし。

じゃあどういうものを作ってどう使いたいのかって話だが
それがさっぱりわからんのではどうにもならんよ。
872名無しさん@お腹いっぱい。:2011/09/04(日) 08:31:30.02 ID:d5jgh3W80
>それがさっぱりわからんのではどうにもならんよ。
小学生からやり直したら
873名無しさん@お腹いっぱい。:2011/09/04(日) 08:45:08.71 ID:FoladoNj0
>>870

起動引数(%1%)として、ファイル(フォルダ)パスを受けるスクリプトで、
その引数を フォルダ と ファイル名 に分割し(SplitPath)、
フォルダを一階層あげた(SplitPath)ところに移動(FileMove)するスクリプトを作る。

そのスクリプトに Drag&Dropしてうまく動作するようになったら
ショートカットを SendTo にいれる。

あとは右クリックして「送る」メニューの一覧から選ぶ
874名無しさん@お腹いっぱい。:2011/09/04(日) 12:33:34.30 ID:JCm7o3dr0
モニター間のウィンドウの移動が上手くいかない… 誰かください
875名無しさん@お腹いっぱい。:2011/09/04(日) 16:29:21.94 ID:Hg55bR1k0
親フォルダに送るスクリプト
オレも使ってるけど結構便利だよ
あとはフォルダの中身を全部吸い出すスクリプト
こっちはAHKでは中身を一つずつ処理するはめになるから一括処理できるWSHでやってる
ユニコードに対応してるしAHKでやれればいいんだけど中身が多いと処理時間的にだいぶ差が出る
876名無しさん@お腹いっぱい。:2011/09/04(日) 17:36:25.75 ID:makiU2oB0
ahk_class JUCE_123456789のような数字部分が毎回変化するクラス名なんですが

SetTitleMatchMode, RegEx
#IfWinActive, ahk_class ^JUCE

正規表現を使えばこれで動くと思ったのですが上手く行きません。
間違えを指摘してくれると助かります。
877名無しさん@お腹いっぱい。:2011/09/04(日) 17:49:33.07 ID:XqNyOBAc0
#IfWinActive, ahk_class ^JUCE_.*
#IfWinActive, ahk_class ^JUCE_\d+
#IfWinActive, ahk_class ^JUCE_[0-9]+
のどれかを使う
878名無しさん@お腹いっぱい。:2011/09/04(日) 18:21:13.92 ID:makiU2oB0
ありがとうございます。でもまだ上手くいってなかったりします。。

過去ログでクラス名がahk_class Afx:400000:8:10011:0:xxxxxxxx の場合

SetTitleMatchMode, RegEx
#IfWinActive, Paintgraphic2 ahk_class Afx:400000:8:10011:0:.*
return

で動いたとありましたので、変化部分は.*にすれば動くような感じですが
タイトル部分も必須なんですかね、なんか凡ミスの悪寒もするので出直します。
879名無しさん@お腹いっぱい。:2011/09/04(日) 18:27:23.45 ID:makiU2oB0
その後、WinTitleのほうで正規表現を使ったら動作しました。
ソフトによってはクラス名だけの指定だけだと動かないのかも
880名無しさん@お腹いっぱい。:2011/09/04(日) 20:39:56.11 ID:kj/zgyTq0
>>873
レスどうもです。なんとかけそうです。
ただ右クリックメニューからでないと起動できないので動作がもたつきます。
ポップアップ表示を省略して一気にショートカット起動することはできないんでしょうか?

>>875
そのスクリプトはどういうものなのでしょうか?差し支えなければ教えて下さい。
881名無しさん@お腹いっぱい。:2011/09/04(日) 23:20:25.34 ID:OHj6NBfd0
ほらな
どういう使い方したいのか最初にはっきりさせないから二度手間、三度手間になる
882名無しさん@お腹いっぱい。:2011/09/05(月) 00:18:57.72 ID:qpazpkCr0
11まで増えてた

● 分からない理由 ●
1. 過去ログを読まない。
2. 読んでても肝心な所が見えてない。
3. 検索能力が低い。
4. そもそも検索する気がない。
5. 類推という概念がない。
6. それ以前に普通に頭が悪い。

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

>>880
>ポップアップ表示を省略して一気にショートカット起動することはできないんでしょうか?
スクリプトの起動方法はAHKと直接関係ない。自分の好きな方法で起動すればいい
そこもAHKでやりたいなら親スプリクトからホットキートリガで起動するなりすりゃいいだろ
選択したファイルのパスは一旦クリップボードに入れて取り出せば?

>そのスクリプトはどういうものなのでしょうか?
前半のこと聞いてんなら873が上で説明してるから省略してんだろ
後半のこと聞いてんならWSHはスレ違いここで聞くな
884名無しさん@お腹いっぱい。:2011/09/05(月) 02:34:14.88 ID:MZHJmeHd0
thinkpad の中ボタンとトラックポイント同時押しで
スクロール(トラポへの力でアナログな速度変化)

を再現したいんですが中ボタンのないなノートのトラックポイントキーボードで
可能でしょうか?
885名無しさん@お腹いっぱい。:2011/09/05(月) 02:38:20.29 ID:hXTvwKZm0
>>884
trackwheel.ahk
886名無しさん@お腹いっぱい。:2011/09/06(火) 20:05:36.14 ID:8ZoR6qHf0
すみません教えてください
>>9の1 Hour SoftwareのGhoster(Ghoster.ahk)が気に入ったので
手を加えてAutoHotkey.ahkに組み込もうとしてるんですがどうにも上手くいきません

↓AutoHotkey.ahkからホットキーで呼び出し
 ^#g::
 #Include %A_ScriptDir%\Ghoster2.ahk
 return

↓Ghoster.ahkに手を加えた部分
 (Ghoster.ahkの先頭)
 Hotkey, ^#q, EXIT ;終了用のホットキーを指定
 (中略)
 EXIT:
 Menu, Tray, DeleteAll ;タスクトレイのメニューをリセット
 Menu, Tray, Standard ;標準のタスクトレイメニューを追加
 Hotkey, ^#q, Off ;終了用のホットキーを削除
 WinActivate, ahk_class Shell_TrayWnd
 WinWaitActive, ahk_class Shell_TrayWnd, , 1
 Gosub, DESTROY
 WinActivate, ahk_id %oldid%
 Exit ;ExitAppのままだとAutoHotkey.ahkごと終了してしまうのでExitに変更

こんな感じで動くことは動くのですが、なぜかホットキーが二回目以降は効かなくなります
^#g→スクリプト起動成功→^#q→スクリプト終了成功→^#g→スクリプト起動失敗、という感じです
AutoHotKey_Lを再起動(AutoHotkey.ahkをリロード?)するとまた一回目だけは成功します
887名無しさん@お腹いっぱい。:2011/09/06(火) 20:08:58.39 ID:8ZoR6qHf0
Ghoster.ahkの部分をAutoHotkey.ahkにコピーして関数化して呼び出したり
GoSubで直接ラベルに飛んだりしてみましたが結果は同じでした

今は最後のExitをReloadに変えて
AutoHotkey.ahkをリロードするようにしていますが
別の対処法がありましたら教えてください

AutoHotkey_Lのv1.1.03をVistaSP2の32bitで使用しています
888名無しさん@お腹いっぱい。:2011/09/06(火) 21:48:00.81 ID:xudFuMDh0
Ghosterがどういうスクリプトか見ずに書くけど
根本的にいろいろと理解できてない予感

終了用のホットキーだけ加えたGhosterをIncludeじゃなくてrunで呼び出したら?
AHK関連付けされてなければ実行ファイルにしてからね。
889名無しさん@お腹いっぱい。:2011/09/06(火) 21:56:37.29 ID:ZJG0yRo10
#Include はAutoexecuteセクションに書かないとダメ
ホットキーで呼び出したいなら組込みじゃなく

^#g::
 Run,%A_ScriptDir%\Ghoster2.ahk
 return

とかにしたら?
890名無しさん@お腹いっぱい。:2011/09/06(火) 21:56:50.29 ID:ZJG0yRo10
おっと被った
891名無しさん@お腹いっぱい。:2011/09/06(火) 22:17:15.64 ID:AiXHDIv20
EXITラベルの中でExitしてもEXITラベルが終了して戻ってくるだけで
依然^#gホットキーの中にいるのではないかね
892名無しさん@お腹いっぱい。:2011/09/06(火) 22:33:49.50 ID:MjGAx67z0
教えて下さい。
複数のスクリプトが起動している場合
特定のスクリプトをコマンドラインから終了させる事って出来ますでしょうか?
よろしくお願いします。
893名無しさん@お腹いっぱい。:2011/09/06(火) 23:23:59.17 ID:YWxsfvhL0
ビルトインでそういう機能は無い。

が、Hiddenのメイン窓(ahk_class AutoHotkey)を探してタイトル見れば
パスがあるので、閉じてやれば決め撃ちで終了させることは可能。

その処理をAHKでやらせるなら、
 DetectHiddenWindows, On
 ; SetTitleMatchMode 1 とか 2 とか RegEx とか必要なら
 WinClose スクリプトパス ahk_class AutoHotkey
で実現可。
894名無しさん@お腹いっぱい。:2011/09/06(火) 23:51:03.77 ID:8ZoR6qHf0
>>888-891
関連付けはしてなかったのでAhk2Exe.exeでコンパイルして上手く行きました

もともとGhoster.exeはGhoster.ahkの作者の人が既に作ったものがあったのですが
トレイアイコンを増やしたくなかったのでGhoster.ahkをAutoHotkey.ahkに組み込めないか四苦八苦してました
コンパイル前に終了用のホットキーと#NoTrayIconを付け加えて
トレイメニュー関係を削除することで希望通りの動作になりました
ありがとうございます
895名無しさん@お腹いっぱい。:2011/09/07(水) 03:43:23.48 ID:R4QmVSBz0
>>893
ヤクザさんバッチリ出来ました!
有難う御座いました!
896名無しさん@お腹いっぱい。:2011/09/07(水) 11:52:08.29 ID:bkh133sW0
PCでテレビを見ているものですが、専用のリモコンがあって10秒早送りや倍速生成ボタンがあり
その同じ動作をAutoHotKeyから制御したいと考えています。

Media_Play_PauseやMedia_NextはAutoHotKeyで用意されていますが、目的のキーがないので
リモコンキーを押した時テレビアプリに送られるコマンド?を見つけて、SendMessageでその命令投げたいと考えていますが、
目的の命令が何のコマンドを送っているかを調べる方法はあるでしょうか?
897名無しさん@お腹いっぱい。:2011/09/07(水) 11:59:40.74 ID:VLb9PJqY0
キーボード操作を受け付けないなら
マウスの移動とクリックでやるしかないんじゃないの
898名無しさん@お腹いっぱい。:2011/09/07(水) 13:49:18.57 ID:bkh133sW0
>>897
実は現在それで対応しているのである程度満足しているのですが、左クリックしてのメニュー表示がやたら遅いソフトなので
その工程を省いて直命令でクールに制御したいと思いまして。
899名無しさん@お腹いっぱい。:2011/09/07(水) 16:04:40.48 ID:gwiiqlI/0
>左クリックしてのメニュー表示がやたら遅いソフトなので

なんで具体的に書かないんだろうか。
うちと同じアプリを使ってたらそのまま提示できたのに。
900名無しさん@お腹いっぱい。:2011/09/07(水) 17:18:18.99 ID:bkh133sW0
>>899
すみません。
Sonyの GIGA pocket digital です。
Windows7の64bitOSです。
901名無しさん@お腹いっぱい。:2011/09/07(水) 22:29:21.79 ID:5N2y7pN+0
デュアルモニタ環境下でアプリケーションをRunで起動させたときに、
セカンダリか、プライマリモニター、どちらかで起動するかを指定する場合、どうしたらいいんでしょうか
902894:2011/09/08(木) 08:22:19.95 ID:gOr4MxiD0
>>894に追記
run, %A_ScriptDir%\AutoHotkey.exe Ghoster2.ahk
でも上手く行きました
結果は変わらないようだしEXE化するより小まめな修正がしやすいです
903名無しさん@お腹いっぱい。:2011/09/08(木) 09:25:43.82 ID:Cvt03NVh0
includeの使い方が悪いみたいに言ってるのはデタラメだぞ
ちょっと書き換えてやれば当初の通りのやり方もできる
904名無しさん@お腹いっぱい。:2011/09/08(木) 10:57:56.52 ID:xvhlTVam0
視認性の面から言うならホットキー指定の中にIncludeというのはあまりいただけないというか
できるからって人に薦めるような内容ではないような
905名無しさん@お腹いっぱい。:2011/09/08(木) 16:20:03.54 ID:PNOqcmO40
AutoHotkeyの書式をコマンド排除して関数式にするとかいってたのどうなったの?
906名無しさん@お腹いっぱい。:2011/09/08(木) 16:29:53.88 ID:MMKLJ/Gx0
>>905
誰が言ってたの?
907名無しさん@お腹いっぱい。:2011/09/08(木) 17:14:36.49 ID:0a7T55L70
>>905
v2 はコマンドの一部が関数に移行するんじゃなかったっけ?
うろ覚えだけど、たしかそんな事が書いてあった気がする
908名無しさん@お腹いっぱい。:2011/09/09(金) 11:46:54.87 ID:3ny+J0F+0
ThumbRemapを64bitで動くようにする方法ってもう判明してるかな?
とりあえずSynaptics。
909名無しさん@お腹いっぱい。:2011/09/10(土) 03:09:15.96 ID:X0IUZeQB0
ウインドウが最前面にきてしまい、マウスカーソルすら見えなくなる場合
マウスカーソルを最前面にする事って出来ますか?
910名無しさん@お腹いっぱい。:2011/09/10(土) 07:38:19.33 ID:SXQnHj7f0
マウスカーソルのレイヤーって最善面ウィンドウよりさらに前面なはずだが。

ってかその最前面ウィンドウがマウスカーソル非表示状態なんでないのかね。
911名無しさん@お腹いっぱい。:2011/09/10(土) 07:48:24.13 ID:GDdUtHns0
動画とかゲームとか全画面にしてるとマウスカーソル操作してないとき自動的に消す機能あるの多いからそれで消えてるんじゃね
912名無しさん@お腹いっぱい。:2011/09/11(日) 00:12:51.24 ID:JFxVnFLf0
ahk_classで、指定したウインドウに対して
マウスクリックを受け付けなくする事は可能でしょうか?
よろしくお願いします
913名無しさん@お腹いっぱい。:2011/09/11(日) 01:07:14.46 ID:DhAe5QOY0
まず、ゲームなどDirectInput使ってるなら無理な可能性が高いと断っておく

そういう特殊例でなければ、余裕でできる
914名無しさん@お腹いっぱい。:2011/09/12(月) 09:12:21.11 ID:CbbSGGwc0
>>5にあるひらがなをF13にする要領で右側のWinキーをF13にしたいのですが
それにあたってwindows7の64bitではとある障害があり、加えて僕の希望があるので出来ません。
どなたか知恵をください。

邪魔する障害というのが、
・ChangekeyやKeyswapという変更ソフトが「管理者として実行」しなければ動かない
 →よってAutoHotKeyによるF13へのリマップが上のソフト上では無効化されるため
  F13を読みこませることができない。ということです。

加えて僕のやりたい希望というのが
・右WindowsキーをF13にしたい。
  ---右Windowsキー+Lによる画面のロックを無効化させたい
というものです。

教えてください。よろしくお願いします。
915名無しさん@お腹いっぱい。:2011/09/12(月) 09:16:56.29 ID:CbbSGGwc0
上の書き込みですが、ぐぐったら
トップにそれらしい解決法がありました。。。
いまからやってみます。お騒がせしました。
916名無しさん@お腹いっぱい。:2011/09/12(月) 13:58:46.46 ID:uCgB2Cmo0
任意のキーを押した時に、押した時間や離した時間は無関係に
10msだけ送信したとか、そう言った動作は実現出来るでしょうか?
917名無しさん@お腹いっぱい。:2011/09/12(月) 20:24:56.53 ID:JvdLSFZQ0
$a::
setkeydelay,,10
send,a
keywait,a
return

とか?
918名無しさん@お腹いっぱい。:2011/09/12(月) 20:36:41.31 ID:KEE+j/Tr0
>>914
勘違いしてるんでわないだろうか

レジストリのキーボードリマップ方式は、OSの設定書き換えなだけで、常駐ソフトは要らない。
設定ソフトを使うと楽なんで紹介されているだけで、RegEdit で手でやっても同じ結果を得られる。

したがって、設定後はレジストリに通りにリマップをOSがやるので管理者権限は不要。
919名無しさん@お腹いっぱい。:2011/09/13(火) 01:26:59.15 ID:PeABMgzG0
>>917
凄い!バッチリ出来ました!
有難う御座いました。
920名無しさん@お腹いっぱい。:2011/09/13(火) 07:59:45.22 ID:3lgt2te80
1.1.04.00 - September 11, 2011
This release contains a number of potentially script-breaking changes.
Added exception handling support: try/catch/throw and Exception().
Added StdOut mode for #Warn.
Added Gui +HwndVARNAME option.
Added Gui, New [, Options, Title].
Added automatic support for keyboard accelerators such as Ctrl+O in Gui menus.
Changed handling of #Include <Lib> when the /iLib command-line switch is present to resolve a problem with Ahk2Exe.
Changed GuiControl to retain the Progress control's current value when its style is changed.
Changed GuiControl and GuiControlGet to allow a HWND to be passed in the ControlID parameter.
Removed the 1GB limit from FileRead.
Improved error detection:
* Hotkey, If, Expression, where Expression does not match an existing #If expression, is caught at load-time when possible.
* Hotkey, IfSomething, where Something is invalid, is caught at load-time.
* Class definitions with missing braces are detected as errors.
* If a function call is used on the first line of a class definition, it is now correctly treated as an error.
* GroupAdd now shows an error message when the group name is blank, instead of silently exiting the thread.
* Removed some redundant "unset var" warnings which appeared when using the OutputDebug or StdOut warning modes.
* If an unrecognized option is used with Gui, Gui Show, Gui New or GuiControl, an error message is shown and the thread exits unless try is used.
 This validation is not done at load-time due to complexity (it is common for the option parameters to contain variable references).
* RegRead, RegWrite and RegDelete now set A_LastError to the result of the operating system's GetLastError() function.
* +LastFoundExist is now treated as an error if it is combined with another option (+LastFound should be used in that case).
Fixed a bug affecting recursive variadic functions.
921名無しさん@お腹いっぱい。:2011/09/13(火) 08:02:13.81 ID:3lgt2te80
try〜catch〜throw って。まぁ ErrorLevel よりは楽にはなるところはあるんだろうけど。

なんか、普通の汎用言語に強力なホットキー機能をつけたほうがいい気がしてきた。
922名無しさん@お腹いっぱい。:2011/09/13(火) 10:33:25.41 ID:amoqStMv0
特定のキーを押したらそれ以外のキー入力を受け付けなくする方法ってありますかね?
Photoshopのバーズアイビューという機能がスペースバーと別のキーを間違って押してしまうと暴発するのでなんとかしたいのです。
スペースバーはよく使うキーなので、スペースバーを押したら他のキー入力を受け付けなくするというようにしたいです。
923名無しさん@お腹いっぱい。:2011/09/13(火) 10:34:16.12 ID:P45HXSod0
ver2まだかよ
924名無しさん@お腹いっぱい。:2011/09/13(火) 12:20:31.07 ID:QWsR2cMj0
>>921
それがver2なんじゃね

>>922
#IFとかでがんばれば可能。希望とは違うが簡易で
Space::Return
Space Up::Send,{Space}
925名無しさん@お腹いっぱい。:2011/09/13(火) 12:23:46.12 ID:QWsR2cMj0
動くけど訂正
$Space::Return
$Space Up::Send,{Space}
926名無しさん@お腹いっぱい。:2011/09/13(火) 21:20:54.66 ID:qK/Sj/hX0
スクリプトでc言語のマクロのようなマクロを使えますか?
#define M1 1200


x:= M1
y:= M1+M1



x:=1200
y:=1200+1200

のように解釈したいのです
927名無しさん@お腹いっぱい。:2011/09/13(火) 21:38:14.18 ID:UjAeCjau0
>>926
そのままできるじゃん。
何が疑問なんだか、さっぱり意味がわからない。
928名無しさん@お腹いっぱい。:2011/09/13(火) 23:30:23.35 ID:HIFk2Joh0
>>920
>Fixed a bug affecting recursive variadic functions.
これってどういうこと?

>>926
できないと思う
というか、必要な場面がなさそう
929名無しさん@お腹いっぱい。:2011/09/14(水) 00:34:46.39 ID:gTDANU0X0
Cのマクロは変態なんでそこまで色々できなくてもいいが、定数定義は欲しいな

てか、

>>927 できる→グローバル変数定義して参照すりゃ意味は同じ
>>928 できない→マクロとか定数定義のような機構はない

って違う観点なんで両方正しい。


>>928
リリース情報は "bug" がリンクになってるぜよ。
ttp://www.autohotkey.com/forum/topic76133.html
930名無しさん@お腹いっぱい。:2011/09/14(水) 00:44:13.07 ID:WIbHFV7c0
>>929
thanks!
931名無しさん@お腹いっぱい。:2011/09/14(水) 00:50:34.08 ID:zsypTUED0
>>924
>>925
できるんですね。ちょっと試してみます。どうもでした。
932名無しさん@お腹いっぱい。:2011/09/14(水) 11:00:28.59 ID:18wkYJTM0
マウスのマッピングに;全体と個別のマッピングを使用していますが、
Firefoxがアクティブな場合、;全体のマッピングも有効にしたいと考えていますがそんなことは可能でしょうか?

;全体のマッピング
MBUTTON::
 任意の処理

;Firefoxのマッピング
#IfWinActive, ahk_class MozillaUIWindowClass
 MBUTTON::
  任意の処理

#IfWinActive
933名無しさん@お腹いっぱい。:2011/09/14(水) 11:10:17.33 ID:Iy+7iol+0
;全体のマッピング
MBUTTON::
 右を向く

;Firefoxのマッピング
#IfWinActive, ahk_class MozillaUIWindowClass
 MBUTTON::
  左を向く

#IfWinActive


両方有効にしたらどっちを向けばいいですか?
934名無しさん@お腹いっぱい。:2011/09/14(水) 20:12:16.51 ID:dxx7jnOd0
>>932
全体とFirefoxの任意の処理が同一処理であるなら
FireFoxのマッピングの Mbutton:: は不要
935名無しさん@お腹いっぱい。:2011/09/14(水) 20:15:48.26 ID:xUSa9Gmv0
具体的にやりたいこと書いたほうがよさげ
936名無しさん@お腹いっぱい。:2011/09/14(水) 23:34:27.93 ID:gTDANU0X0
やりたい設定のマトリックス書いて集合の和や補集合考える
で、#IfWinNot〜も使う
937名無しさん@お腹いっぱい。:2011/09/15(木) 17:55:31.71 ID:fEx08PuP0
DVDバックアップソフトの処理が終わるまでスクリーンセーバ起動及びモニタ電源OFFをさせたくないのですが
何かいいやりかたはあるでしょうか?

個のソフトバックアップが終了すると終了しましたダイアログが出るので、
1分おきのタイマー処理で指定のダイアログが「IfWinExist」でないなら、MouseMoveというしょぼい処理をしています。
938名無しさん@お腹いっぱい。:2011/09/15(木) 19:17:24.40 ID:fEx08PuP0
WinSet, Bottom, , AしただけではActiveになったままですが、最小化や非表示はしないで非アクティブにするにはどうすればよいでしょうか?
939名無しさん@お腹いっぱい。:2011/09/15(木) 19:56:51.68 ID:Mkdkqag+0
>>938
デスクトップ or タスクバー をアクティブにする
940名無しさん@お腹いっぱい。:2011/09/15(木) 20:06:25.21 ID:fEx08PuP0
>>939
なるほど、そんな技が。
ありがとうございます。
941名無しさん@お腹いっぱい。:2011/09/15(木) 22:36:04.61 ID:RfOhuWVX0
特定のスクリプトだけキーボード配列のハード層に近いリマップをしたいんですが
$を使うのでしょうか?今一つわかりません

script1
a::a
s::o

script2
o::2
s::3

とあったときscript1最下層に来るようにするには
$をうまく使うのでしょうか?
942名無しさん@お腹いっぱい。:2011/09/15(木) 22:45:41.38 ID:s3oqIGJg0
わかりにくくてすいません

キーボードのqwerty->dvorak配列の
スクリプト1と
その他のスクリプト2−3を同時起動しているとき
スクリプト1で実質ハードウェアで配列を変更したのと同じ作用にすることは
$を使えば可能なのでしょうか?
943名無しさん@お腹いっぱい。:2011/09/15(木) 22:48:41.77 ID:qoFWOSaQ0
1.1.04.01 - September 15, 2011

Fixed FileRemoveDir setting ErrorLevel incorrectly.
944名無しさん@お腹いっぱい。:2011/09/16(金) 01:40:47.31 ID:maP3ZTsj0
>>941-942
**凄く適当だけど**

[キーボード]
  ↓
[ドライバ]
  ↓
〜〜〜〜
  ↓@
[システム] ←☆
  ↓A
  ↓
[アクティブウィンドウ]

AHKのキー定義方法は上記の@かAで、キーを拾ったら☆のところで別キーを吐き出すことで
キーアサインを変えてる。で、それぞれ特色は以下:

 @ キーフック(k-hook)
  多重に掛けることができる。後からフックしたやつほど先に処理ができる
 A OSへのホットキー登録(reg)
  OSが管理するホットキー機能を使う。別アプリとかで宣言されてたら使えない。

つーことで、@でベース作って、Aで味付けってことになるが、問題がある。

リマップ( a::b )はフックなんで、☆で吐いてるのを拾えないし、同一キーへの多段設定は
後からやったやつのみ有効になるので >>941 の例は破綻。

script2でリマップをやめて [ o::Send,2 ] みたくすりゃ何とかなるかもしれんけど
Aで設定できない場合@に自動で切り替わるんで、すべてがうまくいくとは限らない。

確実にやりたいなら〜〜〜のところで動作するレジストリいじるのがいいと思う。 >>5 の下段
945名無しさん@お腹いっぱい。:2011/09/16(金) 09:37:15.37 ID:2zvrmLBr0
Fn+F5を他のキーに割り当てたいのですがどうすればいいですか?
見たところマニュアルにFnキーの記述がありませんでした。
946名無しさん@お腹いっぱい。:2011/09/16(金) 10:47:46.10 ID:2zvrmLBr0
#IfWinActiveはホットキーの定義にしか使えないですが、OnClipboardChangeみたいにウィンドウがアクティブになった時にサブルーチンをコールバックすることはできないものでしょうか?
やはり地道にループで常時監視するやり方しか無いのでしょうか?
947名無しさん@お腹いっぱい。:2011/09/16(金) 11:38:32.59 ID:RzsuRQdG0
948名無しさん@お腹いっぱい。:2011/09/16(金) 12:25:52.03 ID:2zvrmLBr0
>>947
できました。
すごい、こんな合わせ技が、しかもAutoHotKeyだけで完結できた。
ありがとうございます。
949名無しさん@お腹いっぱい。:2011/09/16(金) 13:44:41.88 ID:HU1lbVZ90
>>944
reieditで
google IMEの KBDJPN.DLL→KBDDV.DLL
いじって出来ました
>>945
fnは無理だったような…
950名無しさん@お腹いっぱい。:2011/09/16(金) 14:29:45.41 ID:2zvrmLBr0
>>949
Fnはダメですか…
なんか対応するキーがハードウェアに直結するようなものばっかりだから難しいのかなと思ってました。
マウス操作でFn+F5をコントロールしてモニター明るさを調整したかったんです。

DLighter.exeというソフトで明るさを変えられるのですが「Fn+F5」とは違いソフトウェアで制御しているので、なんか変な明るさになっちゃうのが難点で…

Windowsのイベントにでもあればなんとかなるかもしれないかな…
951名無しさん@お腹いっぱい。:2011/09/16(金) 15:00:51.19 ID:RzsuRQdG0
>>950
http://www.autohotkey.com/forum/topic73513.html
輝度の取得方法はあった。
WmiMonitorBrightnessMethodsでセット出来るらしいけど、WMIとかワカンネ。

http://edgylogic.com/projects/display-brightness-vista-gadget/
ここのコンソールアプリを使うのが簡単だと思うけど。
952949:2011/09/16(金) 20:28:05.19 ID:lZtIw/Y80
Alt+`
で日本語入力と直接入力が切り替わらなくなって
偉い難儀しましたが
たまたま見つけたスキャンコードをSendしてどうにかなりました
私の環境ではsc219でした

regeditでgoogle 日本語入力とdvorakの両立を企てる人は参考にしてください
953名無しさん@お腹いっぱい。:2011/09/16(金) 22:11:31.43 ID:t9sRtH2T0
EpgDataCap_Bonの画面の無効や削除ボタンを押したいです。
9系だとButton番号を取得できたのですが、10系になって取得できなくなりました。
どうすればボタンの番号を取得したり押せるようになりますか?
コアな質問ですみません。
954949:2011/09/16(金) 22:46:03.34 ID:4br0nXP10
ノートのUSキーボードで英語OS
ためしにアルファベットのscの出力の動作をためそうと
どっかのページから拾ってきたものをSendしたら
たまたまAlt+` が再現できたという次第です
 
955名無しさん@お腹いっぱい。:2011/09/17(土) 15:54:43.97 ID:9NovKKPf0
autohotkey定番のこのスクリプト
(変換キー+Mで、Firefoxが起動してなければ起動を。起動していたらFirefoxウインドウを最前面に)
ってやつが、Windows7 64bit、autohotkey.exeバージョン1.1.3.0で実行すると
すでに起動していたFirefoxが最前面に来る+常にFirefoxが新ウインドウで起動
の両方が起こってしまうんだけど、
妥当な処理にするためにはどう書き換えればいいんだろ?

vk1Csc079 & m::
Process,Exist,firefox.exe
If ErrorLevel<>0 ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
else ;起動していなかった場合
Run,firefox
return
956名無しさん@お腹いっぱい。:2011/09/17(土) 16:21:59.82 ID:+XO8s+3Q0
いつ定番になったんだろうか
957名無しさん@お腹いっぱい。:2011/09/17(土) 16:29:26.40 ID:YHtm6ZTQ0
Firefoxなんてそれ自体が排他制御やってるんだからそのまま起動でいいんじゃね

あるいはとりあえずこれでしのぐとか。
自分はいつもこれだけどたまーに誤動作するけど気にしないw
IfWinExist,Calc
{
WinActivate
}
else
{
Run,Calc.lnk
}
958名無しさん@お腹いっぱい。:2011/09/17(土) 16:46:08.06 ID:9NovKKPf0
>>957
なるほど、それもシンプルでいいかも。
サンクス。

Firefox以外にもいろいろショートカット作ってて、あくまで一例
959名無しさん@お腹いっぱい。:2011/09/18(日) 11:27:17.53 ID:4KJMnPCr0
つーか7 64bitはシフトJISがだめになってるのか。
>>955をUTF8で保存すると普通に問題なく動く。
960名無しさん@お腹いっぱい。:2011/09/18(日) 11:56:54.55 ID:IPJoTUNH0
組み合わせキーの二つ目に何が押されたか取得する良い方法はないでしょうか?
自分で思いつくのは↓くらいです。。

Ctrl::
KeyWait, foo,L T3
tooltip, %foo%が押されました
Send ^%foo%
return
961名無しさん@お腹いっぱい。:2011/09/18(日) 12:06:43.56 ID:ALm+HAW10
別にダメではない 。
x64版はユニコード版でデフォルトでUTF-8として読もうとしてるだけ。
スクリプトの文字コードの自動判定機構はないので、起動オプション /CP932 を指定すりゃシフトJISで読む。
962名無しさん@お腹いっぱい。:2011/09/19(月) 12:41:04.90 ID:xnu8/hiX0
Win7でApatch起動
RunAsで管理者権限が拒否されて起動できない
963名無しさん@お腹いっぱい。:2011/09/19(月) 15:53:57.85 ID:uEGiJ2dZ0
>>962
アカウントにパスワードを設定していない場合はパスワードを設定する、
もしくはApatchの実行ファイルを右クリック→プロパティ→互換性(タブ)
→「管理者としてこのプログラムを実行する」を有効にして適用
964名無しさん@お腹いっぱい。:2011/09/19(月) 16:18:17.40 ID:etd0+fIuP
Windows標準の「名前を付けて保存」ダイアログで
開いているフォルダをAHKで制御できないでしょうか?

やりたいことは、名前を付けて保存でフォルダの選択に
外部ツール(fenrirなど)を用いたいということです

ControlSendなどで制御しようにもアプリケーションによってクラスが変わるらしく…
なにか良いアイディアはないでしょうか
965名無しさん@お腹いっぱい。:2011/09/19(月) 16:33:09.12 ID:TqmcQwli0
>>964
>788
966名無しさん@お腹いっぱい。:2011/09/19(月) 18:28:17.70 ID:xnu8/hiX0
>>963

>アカウントにパスワードを設定していない場合はパスワードを設定する、
パスワードを設定しても弾かれる

>→「管理者としてこのプログラムを実行する」を有効にして適用
これだとRunAsは関係なくなる
RunAsで設定すれば右クリックの管理者として実行と同じと思ってたが違うのか
967名無しさん@お腹いっぱい。:2011/09/20(火) 09:42:47.17 ID:fTxNe1fd0
XButton1 & LButton
みたいに戻るキー+左クリックに別の機能を割り当てたいんだけど、
この記述方法では、Xbutton1単体で押した場合の機能が殺されてるみたい。

これを殺さずに、単体でXbutton1押した場合の動作をちゃんと「戻る」にするにはどうすればいいんだっけ?
968名無しさん@お腹いっぱい。:2011/09/20(火) 10:37:47.42 ID:fTxNe1fd0
自己解決?

Xbutton1 up::send,{xbutton1}
を別で設定すればいけそうかな?
969名無しさん@お腹いっぱい。:2011/09/20(火) 10:46:41.26 ID:NyaPSUyt0
チルダ付ける。
~XButton1 & LButton::
970名無しさん@お腹いっぱい。:2011/09/20(火) 11:12:42.94 ID:fTxNe1fd0
>>969
それもやってみたんだ。
そうしたら、Xutton1 & Lbuttonで設定した機能と、戻るコマンドも一緒に実行されてしまうんだ。
それぞれの機能はそれぞれで実行されて欲しいから、それは嬉しくないなぁ・・・と。
971名無しさん@お腹いっぱい。:2011/09/21(水) 13:17:06.40 ID:UgFH3yez0
iTunesなどにWinMenuSelectItemって動作しますか?
Firefox(3.6)も動作しないのですが、メモ帳は動作します。

#IfWinActive, ^iTunes$
a::
WinMenuSelectItem, ^iTunes$, , &1, &1
return
#IfWinActive


最小化はされていないので、使える条件はクリアし得ると思うのですが。
972名無しさん@お腹いっぱい。:2011/09/21(水) 14:12:10.72 ID:Obt0+ITH0
>>971
「など」と書いたら答えなんぞ出せなくなるぞ

WinMenuSelectItem は昔ながらの標準メニューにだけ効果があるので、
自前描画系のものはほぼ全てNG。

一応、判断としては以下のスクリプト動かせば分かるはず。

Pause::
MouseGetPos,,, hwnd
ptrType := (A_PtrSize > 0) ? "Ptr" : "UINT"
Tooltip, % "標準メニュー" . (DllCall("GetMenu", ptrType, hwnd, ptrType) ? "あり" : "なし")
Return
973名無しさん@お腹いっぱい。:2011/09/21(水) 14:42:44.95 ID:Ht6H4SXN0
そろそろ次スレの季節
974名無しさん@お腹いっぱい。:2011/09/21(水) 14:50:29.28 ID:UgFH3yez0
>>972
ありがとうございます。
なるほど、標準メニューと言っても見分けがつきづらいですね。
Resource Hackerでも確認できました。


今時のソフトはほとんどが標準じゃないのですね…
調べてみてびっくりしました。

エディター系しか使えない…、残念。
クールじゃないですが、ショートカットキーで何とか対応するようにします。
975名無しさん@お腹いっぱい。:2011/09/22(木) 18:46:16.04 ID:oDOlKfqo0
iTunesの早送りのCtrl+Alt+→で
 Send, ^!{Right}
を実行しても無視されます。

他のウィンドウはこの辺の組み合わせは問題ないのですが…
976名無しさん@お腹いっぱい。:2011/09/23(金) 07:32:38.74 ID:SkvlKqk80
http://hibari.2ch.net/test/read.cgi/software/1280482227/330-332
DragDrop/DropFilesで右D&Dを行わせるにあたってお知恵を拝借させてください。
安直にWM_DROPFILES前にWM_RBUTTONUPを差し込む他に必要な処理はありますか?
977名無しさん@お腹いっぱい。:2011/09/24(土) 12:59:53.76 ID:ulNGbHRB0
Windows7の64bitでタスクマネージャやWindowsサービスの画面がアクティブになっている状態で
ランチャー呼び出しのショートカットキーを送っても反応がありません。

上記がアクティブ中にキーボードから同じショートカットキーを送ると動作しますが、AutoHotKeyからだと動作しません。
タスクマネージャやWindowsサービスの画面以外がアクティブの場合は動作します。

AutoHotKeyでショートカットを送る前に、一度デスクトップをアクティブにしてからキーを送ると正しく動作します。

ダメ
Send, #{F12}

うまく動作
WinActivate , Program Manager
Send, #{F12}

タスクマネージャやWindowsサービスの横取り?しているのかわかりませんが、これはなぜでしょうか?
ちなみにかざぐるマウスの画面下をアクティブにする動作も、タスクマネージャやWindowsサービスがアクティブだとカーソル下のアプリがアクティブになりません。
978名無しさん@お腹いっぱい。:2011/09/24(土) 15:01:21.63 ID:JzSv3qYm0
スクリプトを管理者権限で動かしてみてダメならもう一度報告汁
979名無しさん@お腹いっぱい。:2011/09/26(月) 12:58:56.63 ID:CSCk8rBZ0
>>978
C:\Program Filesにインストールできるユーザなので、管理者権限だと思います。
Windows7の64bitのタスクマネージャで全プロセスを表示ボタンを押すとAlt-Tabの動作もおかしいです。
しかもAutoHotKey起動していない時でも。
なんかこのタスクマネージャが明らかにおかしい…
980名無しさん@お腹いっぱい。:2011/09/26(月) 18:41:47.28 ID:HjyQvQrz0
ユーザーアカウントが管理者権限であっても
スクリプトは管理者権限で動いてない。
Autohotkeyスクリプトを全て終了させ、
AutoHotkey.exeを右クリックしてプロパティを開き、
「互換性」タブにある「管理者としてこのプログラムを実行」にチェック入れて「適用」、
もしくはスクリプトをAhk2Exe.exeでコンパイル(exe化)して↑と同様に
「管理者としてこのプログラムを実行」にチェック入れて「適用」し、
(他にも管理者として実行する方法がある)
スクリプトを実行する。
981名無しさん@お腹いっぱい。:2011/09/27(火) 00:55:40.63 ID:vPSLAqi30
>>980
ありがとうございます。出来ました。
でも全く理解出来ないです。なんでこんなことに…


しかもマウ筋とかざぐるマウスを併用しているのですが、こちらにも権限を与えないとダメですね。
権限がある方だけ実行される…

ん〜あ〜チョーめんどくさいWindows7!

どうもありがとうございました。
982名無しさん@お腹いっぱい。:2011/09/27(火) 10:16:18.36 ID:BXbl5yU90
画面の四隅の縁に赤線をつけて、画面の輪郭を際だたせることはできますか?
983名無しさん@お腹いっぱい。:2011/09/27(火) 21:04:41.32 ID:6NUid3Hd0
OSの設定でやったほうがいいんでないのかね。
984名無しさん@お腹いっぱい。:2011/09/27(火) 22:07:39.96 ID:41pxA6iq0
950でも980でもいいから次スレよろしく
立てられないのなら代行頼んできてね
985名無しさん@お腹いっぱい。:2011/09/28(水) 09:30:27.87 ID:9lfGaIOv0
>>983
色付けを動的にしたくて、かざぐるマウスの全面表示した場合にわかりやすいように枠を付ける機能にほれてしまって。
986名無しさん@お腹いっぱい。:2011/09/28(水) 12:41:07.91 ID:R0Kv1NtK0
せっかく次スレ立てたなら重複しないように貼ろうぜ

AutoHotkey スレッド part13
http://hibari.2ch.net/test/read.cgi/software/1317156599/
987名無しさん@お腹いっぱい。:2011/09/28(水) 18:51:13.12 ID:9lfGaIOv0
テキストボックスに値をセットする場合は ControlSetText, Edit11, %A_Now% のように「Edit」+番号で対応できましたが、
ボタンクリックで「ControlClick, Button1, A」や「ControlClick, 追加, A」を実行しても、左上から見て最初にある「追加」ボタンが押せませんでした。
ちなみに「ControlClick, Add, A」もダメでした。

左上から見て最初にある「追加」ボタンを押すにはどうすればよろしいでしょうか?
988名無しさん@お腹いっぱい。:2011/09/28(水) 19:13:34.94 ID:hycmOHZn0
>>986
ごめんなさい
こっちにスレ建てレスするのを忘れてそのまま出社してもうた
989名無しさん@お腹いっぱい。:2011/09/29(木) 18:33:36.89 ID:jrWRjZh30
うめ
990名無しさん@お腹いっぱい。:2011/09/30(金) 18:15:25.50 ID:K1IEae8s0
うめ
991名無しさん@お腹いっぱい。
#ume