1 :名無しさん@お腹いっぱい。2011/01/31(月) 12:57:08 ID:qh3anlvR0
■配布元
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/ ?ttp://pc7.2ch.net/test/read.cgi/software/1129836713/
?ttp://pc11.2ch.net/test/read.cgi/software/1157043396/ ?ttp://pc11.2ch.net/test/read.cgi/software/1184556627/
?ttp://pc11.2ch.net/test/read.cgi/software/1201502896/ ?ttp://pc11.2ch.net/test/read.cgi/software/1219130051/
?ttp://pc12.2ch.net/test/read.cgi/software/1230694774/ ?ttp://pc12.2ch.net/test/read.cgi/software/1243005818/
?ttp://pc12.2ch.net/test/read.cgi/software/1253888736/ ?ttp://pc12.2ch.net/test/read.cgi/software/1265518996/
?ttp://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/
12 :名無しさん@お腹いっぱい。2011/01/31(月) 20:25:23 ID:FtjP7Jza0
>>1
乙乙。これなら無印と L の違いが上手く判断できると思います。
174 :名無しさん@お腹いっぱい。2011/02/25(金) 02:35:51.58 ID:lLyutHO80
ここはおまえの日記帳じゃry
それにおまえには問題解決力もあるだろ?
>>1のリファレンス読めばすぐ解決するさ
#IfWinActiceとか#If(ahk_専用)あたりだ
ahkでキー操作以外に何ができるかもよく分かるだろう
397 :名無しさん@お腹いっぱい。2011/05/04(水) 15:39:17.63 ID:BzvCY15R0
>>396
>これって結構バグがあって、ごまかして使うようなものですか?

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

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

PCスペックや動いているソフトの負荷等でキー入力が無視されたりする。
SetKeyDelay で間隔を変更するべし。
399 :名無しさん@お腹いっぱい。2011/05/04(水) 16:51:53.07 ID:2CoZki3o0
>>397
ありがとう

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

で、文字検索窓が開いて、omeが入力される理由がわからない?なぜなの?
408 :名無しさん@お腹いっぱい。2011/05/05(木) 01:39:45.26 ID:Tl03Jbq80
>>404
ここがそう
>>1にアップローダがあるので、晒すなら一旦上げてからここに説明を添えて書き込むと吉
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の仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
655 :名無しさん@お腹いっぱい。2011/07/17(日) 23:37:07.16 ID:Y6SpDpjp0
限定的だが、WindowsAPIで取得できる
WinGet, 〜, Style で対象ウィンドウにスクロールバーが付いているかどうかは確認可能。
ただ、限定的なのは、スクロールバーの実装方法ってソフトによってかなり違う。

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

ってことで、汎用的な答えは出せないんで、>>4 にもあるが
> また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
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 )を解除する。
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ビット版を強く推奨。
具体的にはどういう制約があるの?
577 :名無しさん@お腹いっぱい。2011/06/23(木) 06:08:55.74 ID:nTwduIvB0
>>576
>>5
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ではできない。
149 :名無しさん@お腹いっぱい。2011/02/22(火) 23:36:22.08 ID:njCiDHjY0
AHKで発行したキーを、AHKのホットキーラベルが拾えるのはキーボードを使ったホットキーだけ、
しかもフックを使っていないのに限る。(>>6 QA4)
マウスボタンは常にフックなので無理ということ。

やりたい処理を関数化してあるんだから、横着しないで #m を複数定義してやりゃいいだけじゃないの?
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〜」のメッセージは出ませんでした。
改善方法がありましたらご教示願えませんでしょうか。
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のようにインライン化しているアプリでは無理)
99 :名無しさん@お腹いっぱい。2011/02/16(水) 13:52:36 ID:eWIHoRs+0
フック使ってる? (>>7参照)
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 ポップアップメニューの情報を得る
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
19 :名無しさん@お腹いっぱい。2011/02/01(火) 16:13:51 ID:smBNCy3p0
>>16
ありがとうございます。
前スレのとあわせてうまくできました。

Last-ModifiedはGMTで取得されますが
DATEオブジェクトのtolocalestringが使えればJSTに変換できると思い
ComObjCreateでDATEオブジェクトを作れるCOMを探したのですが見つかりませんでした。
Last-Modifiedをまとまりごとに分割してIFで細々と変えていくしかないのでしょうか?
17 :名無しさん@お腹いっぱい。2011/02/01(火) 07:25:20 ID:jvUN4Mm90
AHKL用MouseGesture.ahk、64bitOS対応版うp頼む
21 :名無しさん@お腹いっぱい。2011/02/01(火) 22:15:23 ID:CYZNwIDL0
>>17
文字コード変えて、2バイト文字のエスケープを取り除いて、DllCallの所直せばおk。

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

ってやると一瞬出てるけど消せるんで、起動時に一階だけ我慢すればあとは出さないで済むって感じにできる。
200 :名無しさん@お腹いっぱい。2011/02/26(土) 17:54:16.33 ID:lLtS88dm0
>>198
ありがとうございます、
やっぱり基本的に非表示は無理でしたか。
常駐させる使い方はしてないので素直にDllCallにしておきます。
今後他で常駐させる必要が出てきた場合には参考にさせて頂きます。
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とかなしで呼ぶとシステムが勝手に判断してくれるっしょ
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

33 :名無しさん@お腹いっぱい。2011/02/02(水) 22:20:10 ID:NtXMhpNM0
これから先は人に見せるスクリプトを作るときは
初回起動時にOSとかAHKのバージョンを確認してiniにでも書き込んで
で、それを元に動作を分岐するようにでもした方がいいのかな?
動作確認等がすごい面倒そうだけどorz
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がアクティブでない場合に置き換えちまえばいいかと。
49 :名無しさん@お腹いっぱい。2011/02/04(金) 22:41:47 ID:eSBIkihs0
>>37
その手がありましたか。ありがとうございます。
38 :名無しさん@お腹いっぱい。2011/02/04(金) 07:58:11 ID:dvswQKUi0
スクリプト終了時に、特定のアプリケーションを同時に終了させるにはどうすれば良いのでしょうか?
OnExitを使うのはわかるのですが、アプリケーションを終了させる方法がわからなくて困っています。
39 :名無しさん@お腹いっぱい。2011/02/04(金) 08:13:41 ID:i1PposY90
Send, !{F4}
WinClose
Process, Close
40 :382011/02/04(金) 09:29:55 ID:dvswQKUi0
>>39
色々試してみたのですが、どうもうまくいきません。
具体的には、foobar2000を終了させたいのですが、


SetTitleMatchMode, 2

OnExit, Owari
return

Owari:
WinClose, foobar2000
ExitApp

としてみたのですが、ダメでした。
稚拙な質問で申し訳ないです。
42 :名無しさん@お腹いっぱい。2011/02/04(金) 12:55:32 ID:V86xJa080
>>40
"owari"って関数をDetectHiddenWindowsでかこってみ?
43 :名無しさん@お腹いっぱい。2011/02/04(金) 15:14:57 ID:nFODjuPJ0
マウ筋の「ホイールでマウス直下にフォーカスして前面にもってきてスクロール」って機能は実現できませんかね?
WhellRedirectは「スクロールするけど前面に来ないしフォーカスも奪わない」なんで
44 :382011/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だった・・・。
スレ汚しすみませんでした。
草生やしまくってごめんなさい(´;ω;`)
52 :名無しさん@お腹いっぱい。2011/02/06(日) 13:00:07 ID:9uX7zjkx0
>>47
53 :名無しさん@お腹いっぱい。2011/02/06(日) 13:03:28 ID:9uX7zjkx0
誤爆した。
>>47
ちょっと待て。
それ3キーできてるんじゃないの?
48 :名無しさん@お腹いっぱい。2011/02/04(金) 17:53:44 ID:gkNWDpA90
foobarの人、もう解決してるみたいだけど
コマンドラインから /exit で終了させる手もあるでよ
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
55 :名無しさん@お腹いっぱい。2011/02/07(月) 01:01:10 ID:nuKPQbue0
>>51
うまくいきいました。ありがとう
54 :名無しさん@お腹いっぱい。2011/02/06(日) 17:44:38 ID:7zwNXcTv0
キー連打系のおすすめ設定教えてくれ。
無変換キー2連打とかいろいろ使い道あると思うんだが。。
56 :名無しさん@お腹いっぱい。2011/02/07(月) 10:51:55 ID:xIfdXMSN0
XButton1とLButton同時押しをMButtonとRButtonの同時押しに割り当てるにはどうしたらいいの
なんか右クリメニューが出てくる
57 :名無しさん@お腹いっぱい。2011/02/07(月) 11:46:47 ID:5pl4UUav0
>>56
どう書いたの?
59 :名無しさん@お腹いっぱい。2011/02/07(月) 14:40:45 ID:GKkVS+sl0
>>56みたいな文章書いてる時点で十分恥ずかしいのになw
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してもメニューが出るものも依然として多い。

従ってコンビネーションで使う場合でメニューを完全に出さなくする汎用的な方法はなく、
対象別の処理分岐を行ったり、何らかの割り切りをしたりする必要がある。
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あったらドラッグの誤爆防げるんだね
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とは盲点でした。マイナス値指定でこんな制御できるんですね。
やりたかった事がこの機能なんでドンピシャでした。サンキューです!
68 :名無しさん@お腹いっぱい。2011/02/09(水) 03:21:15 ID:e0+dVN3e0
セキュリティソフトの設定とかじゃないの?
69 :382011/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
を試してみてはどうか
71 :382011/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とかで
タイトルマッチでスクリプト自身が一致して本命には処理が回らない
76 :名無しさん@お腹いっぱい。2011/02/09(水) 23:37:48 ID:OiSdYAZE0
自分用のスクリプトでコンパイルする必要ってあるの?
77 :名無しさん@お腹いっぱい。2011/02/09(水) 23:51:07 ID:e0+dVN3e0
>>76
基本必要ないと思う。
でも、たとえば、もうメンテの必要性のないスクリプトであれば
コンパイルしてしまえば、AHKのバージョン気にしないですむというメリットはあるかも
79 :名無しさん@お腹いっぱい。2011/02/11(金) 23:01:47 ID:Yok/jE4L0
ControlGetText でいけそうに見えなくも無い


>>76
ahkプロセスをタスクマネージャから消したいときに
複数あってもコンパイルしてあれば名前で分かる
メインの常駐のだけはexe化してある
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で取り出す方法はないでしょうか。
81 :名無しさん@お腹いっぱい。2011/02/13(日) 09:58:09 ID:6AvuwheK0
起点ってなんぞや?
画面の端にくっつけたいのなら、画面全体の縦横サイズを表す組み込み変数があるんで、
そいつを使って計算すりゃいい。
83 :名無しさん@お腹いっぱい。2011/02/13(日) 10:45:01 ID:6AvuwheK0
どっちにしろ画面サイズからウィンドウサイズ引けばいいだけかと。
紙に図を書けば小学生でも分かるっしょ。

ただし、右下角はタスクバーやサイドバーなどがあるとウィンドウの領域が変わるんで、
 SysGet, Monitor, MonitorWorkArea, 1
でウィンドウ描画領域として使える領域の左上(MonitorLeft , MonitorTop) と右下(MonitorRight , MonitorBottom)を得てから
計算してやる必要がある。
84 :802011/02/13(日) 11:44:25 ID:4uNgI/Xl0
>>83
どもです。
がんばってみます( ^ω^)
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
93 :名無しさん@お腹いっぱい。2011/02/14(月) 15:57:53 ID:eyP5++8F0
>>91
ありがとうございます、やっとできましたっ

そういうことだったのかー、勉強になりました
95 :名無しさん@お腹いっぱい。2011/02/15(火) 19:00:18 ID:XPg+HvFIP
FileMoveDirコマンドでフォルダを移動させてから
そのフォルダに対して処理を行いたいのですが
移動が完了したかを判定する方法はあるでしょうか
(ErrorLevelで移動の完了を判定してくれるでしょうか?)
96 :名無しさん@お腹いっぱい。2011/02/15(火) 19:11:22 ID:yZcLp3z60
過去スレにもあったけどWin7でAeroを有効にするとPixelGetColorが檄遅になるなあ
何気に不便だこれは
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キーと同じような感じのエラーなのかな。
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(^)になる
107 :名無しさん@お腹いっぱい。2011/02/16(水) 23:39:48 ID:5HamAol10
>>103
ありがとうございました
104 :952011/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
オペレーションが完了するまで次のコマンドの処理には入らないよ
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
これのオブジェクト指向のサンプルがいくつか書いてある日本語サイトありまっか?
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に割り当てられるよ
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
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のアクションで
先程割り当てたショートカットを送る

これで出来る気がするけど…
133 :名無しさん@お腹いっぱい。2011/02/19(土) 18:55:06 ID:A1X39um80
>>132
129で言ってるのは、FireGesturesが自前で実装してるポップアップだと思うから
FireGestures自身がその機能を自分で呼び出すか、
>>131の様に自前で同等の処理を準備してやるかしないとダメじゃない?
AppsKeyをsendしても標準のコンテクストメニューしか利用できないと思う
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を使って横取りして取得して無効化することってできないかな?
132 :名無しさん@お腹いっぱい。2011/02/19(土) 18:42:01 ID:vzYpb0xH0
コンテキストメニューが出ていいなら、ジェスチャ認識後のアクションに
 Send, {AppsKey}s
とか
 Send, {AppsKey}{Down 2}{Enter}
とかで代用できそうだけどな。
134 :名無しさん@お腹いっぱい。2011/02/19(土) 19:24:40 ID:vzYpb0xH0
挙げられた例を見ると通常のコンテキストメニューでもある項目だったんでな
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用ではなかったのが原因でした。通常版を使っていた
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
148 :名無しさん@お腹いっぱい。2011/02/22(火) 23:30:33.04 ID:HCowCsFx0
#IfWinActive, Firefox
#m::
~LButton & RButton::FirefoxMenu()
#IfWinActive, Jane Style
#m::
~LButton & RButton::JaneMenu()
単にこれじゃダメなのか?
150 :名無しさん@お腹いっぱい。2011/02/23(水) 01:13:53.43 ID:0baHJf8l0
>>148-149
レスthx.

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

>>148氏の方法は初見で、色々応用効きそうなので使わせてもらいます
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() にしないと。
165 :名無しさん@お腹いっぱい。2011/02/24(木) 06:50:01.35 ID:Ify1/SzO0
>>153 ありがとうございました。大変参考になりました。
結局このようにやって、うまくいきました。

str := file.Read()
file.Length := 0
file.Write("new contents")
file.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
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コンビネーションのホットキーや駄目キーでのホットキーが出来そうな
こと書いてあるんだけど・・・。
156 :名無しさん@お腹いっぱい。2011/02/23(水) 19:19:01.78 ID:MG3kuiSG0
Autohotkeyでmypaintというお絵かきソフトを起動させて
そこにショートカットキーを送るものを作りましたが
mypaintを起動後、
普通にmypaintから「開く」の操作で画像を開くと
ショートカットキーを受け取ってくれますが
mypaintに画像ファイルをドラッグ&ドロップさせると
Autohotkeyからのショートカットキーが送れなくなりました。
これはどうすればいいのでしょうか???

160 :1562011/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で書いた通りにやると対象がきっちり絞り込まれて動くようになる、と。
164 :名無しさん@お腹いっぱい。2011/02/23(水) 23:54:12.72 ID:MG3kuiSG0
>>161
そうです、同じ人物です。
解説ありがとうございます。
何でこうなのかよく分からなかったのでたすかりました!
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(押しっぱなしで) ` を押す、
という挙動にしたいです。
166 :名無しさん@お腹いっぱい。2011/02/25(金) 01:26:23.93 ID:MU+gEzNn0
質問です
後方一致(部分一致で問題ないと思います)で
ウィンドウを指定するにはどうしたらいいですか?
SetTitleMatchMode, 2
をどこに書けばいいんですか??

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

Spacekey:
 WinActivate, ahk_group honyarara
 ここ
 Return
175 :名無しさん@お腹いっぱい。2011/02/25(金) 03:38:10.89 ID:lpL9oMBM0
質問させてください。
キーリピートを無視したい場合どうすればいいのでしょうか。
キーを押下した時にだけ操作が発生し、押し続けている間は何も起きないようにしたいです。
Numpad0 up::
の要領で
Numpad0 down::
とやってみたのですがダメでした。
初回KeyDownにのみ呼応する方法、よろしくお願いします。
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
572 :名無しさん@お腹いっぱい。2011/06/19(日) 14:20:58.39 ID:ZT5dzhZF0
すいません 質問させてください
KeyWaitを使って複数のキーのキーリピートを防止させてるのですが
KeyWaitを使ってるキーを複数同時に押した際
最後に押したキーを押しっぱなしのままですと 先に押したキーが反応しなくなってしまうのですが

そうさせないには >>177 の後者の方法を取るしかないのでしょうか
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
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:=

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.
}
187 :名無しさん@お腹いっぱい。2011/02/25(金) 23:53:35.06 ID:r6PtuCBx0
>>185
有難うございます!無事できました!
Ctrlと無変換の押し順序関係なく行けます。
助かりました。

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

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

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

有難う御座いました。ほんと助かります。
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
295 :2882011/04/09(土) 23:41:25.90 ID:oiIbw9PJ0
>>294
動きました。なぜ動かなかったのか謎です。
トリプルのやり方参考になりました。ありがとうございます。
178 :名無しさん@お腹いっぱい。2011/02/25(金) 20:32:12.48 ID:MU+gEzNn0
Autohotkey_Lですが
MouseGetPos, mX , mY, OutputVarWin, OutputVarControl ,AltMethod
Msgbox %OutputVarWin%
とやったら全角の日本語のウィンドウのタイトルじゃなくて
0x10a22とでました。
全角の日本語のウィンドウのタイトルはどうやったらでますか?
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 を使ってタイトルを別途取得。
182 :1782011/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)

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

ダミーのテキストファイルを経由してやりとりすることをまず考えましたが
autohotkeyと外部アプリ間で直接やりとりできれば効率的だと思いましたので
189 :1862011/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
を書けばいいのでは?
192 :名無しさん@お腹いっぱい。2011/02/26(土) 01:15:00.10 ID:FB63iWjs0
>>190
アドヴァイス有難うございます
でもじつはまだループにすら入ってなかったですOTL
194 :名無しさん@お腹いっぱい。2011/02/26(土) 01:52:37.63 ID:FB63iWjs0
>193
解説有難うございます。
じっくり読んでみます。
もしかして・・・ループにすら入って無かったのは
MouseGetPosはクリックしたら発動なのに
左クリックがスペースに置きかえられているから
MouseGetPosが発動しないというオチなのかああああ

195 :名無しさん@お腹いっぱい。2011/02/26(土) 02:39:35.45 ID:9t4kRLPO0
まったく的外れ。オチも何もない、調べるところはちゃんと調べれ。それだけ。
203 :名無しさん@お腹いっぱい。2011/02/26(土) 20:29:39.24 ID:L2Mgage90
あ、違った。もっとヒドいか。

Tenohira:
 WinActivate, ahk_group mypaint
 sw = 1
 If sw = 1
  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
でいいんでしょうか?動作したのでいいんだと思うのですが、自信がなくて聞いてみました。。
あと、ウィンドウズで、フォルダの中の、選択したファイルだけを移動したいのですが、どういうコマンドを使うのでしょうか?
全部選ぶっていうコマンドが * アスタリスクで指定できることはわかったのですが、 指定したファイルだけを移動っていうのがわからなくて。
216 :名無しさん@お腹いっぱい。2011/02/27(日) 09:01:20.28 ID:EaDNfPFc0
>>209
あってるよ。
ファイルの指定の仕方は、ファイルパスをそのまま書くだけでいい。
複数指定したいなら、面倒でもその分だけコマンドを並べてやる必要がある。
234 :名無しさん@お腹いっぱい。2011/03/01(火) 00:32:01.16 ID:BFiuYPb80
>>216 ありがとうございます。まるでわからないことだらけですが少しづつ消化していきたいなとおもいます。
またわからないときは質問させていただきたいとおもいmす。
211 :名無しさん@お腹いっぱい。2011/02/27(日) 03:52:13.37 ID:rqgddGb60
ID:/UT/Z5GV0
どうしてスクリプトなんか書こうと思ったの?
212 :ID:/UT/Z5GV02011/02/27(日) 04:16:59.18 ID:/UT/Z5GV0
>>211
話が長くなるけど
もともとMyPaintという
好きなお絵かきソフトがあって
それの独自形式のファイルを
フォトショップのPSDファイルに変換したくなって、
半年ぐらい頑張ってなんとか変換ソフト作ったんです。

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

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

人に手取り足取りやり方を教えるのは
自分でとっとと仕事しちゃうより難しいんだよ。
214 :ID:/UT/Z5GV02011/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 とかと同じプリプロセッサみたいなもんだと分かりそうなもんだが。
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みたいなやつの略語かと一瞬考えちまった。
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をリロードするようにすればいけるかもしれない。
609 :名無しさん@お腹いっぱい。2011/07/06(水) 05:37:28.35 ID:FQF+IMzQ0
>>608
>>240-242 が参考になるんじゃないかな
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
247 :名無しさん@お腹いっぱい。2011/03/12(土) 20:00:44.78 ID:Ak6gUs++0
で、>>243 は直ってるな
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以降の問題か〜。とりあえずバグ報告してみた。
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 で
256 :名無しさん@お腹いっぱい。2011/03/23(水) 22:45:15.68 ID:FBmOIZD/0
>>251のクラッシュ条件はtoo large to recycleか。
つかupdateが21日って、あと2日ずれてれば助かったのかー。

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


しかし>>249も当たり前に修正してくるあたり俺にとって神対応すぎる
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
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
おお、そうやるんですね。ちゃんと動きました。
ありがとうございました。
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
こんな感じでやってみたのですが、終了してくれたりしてくれなかったり、起動してくれたりしてくれなかったりします。
どこか間違っているところはありますか?
259 :名無しさん@お腹いっぱい。2011/03/27(日) 21:24:44.38 ID:pqJTURrX0
>>257
終了または起動したかをチェックするようにしてみては?
261 :名無しさん@お腹いっぱい。2011/03/28(月) 20:34:22.76 ID:B2O82ufB0
>>259
停止できないプロセスがあったり、
設定したホットキーが間違ってたりしてたようでした
そのアイディアももらいます
ありがとう
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
}
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修正に期待すっかな。レス?


ところで最近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

チラ裏ですまんが、意外と快適なので載せとく
287 :名無しさん@お腹いっぱい。2011/04/09(土) 00:32:09.91 ID:g5zpVbxD0
>>262だが、新しいバージョンアップ(1.0.97.1)で拡張ボタンの不具合が改善されてた
304 :名無しさん@お腹いっぱい。2011/04/14(木) 16:57:54.22 ID:GIR2nL+K0
>>287だが、やっぱり拡張ボタンの不具合なおってなかったorz
今後修正されるかどうか怪しいんで、とりあえずドライバで拡張ボタン1をファンクションキーに割り当てることで回避することに

これで配列とオブジェクトが楽に使える
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」のそれぞれのキーが送られてしまいます。
つまり
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

にするとうまくいくとか、なんか思うように動かない
266 :2652011/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} の省略形。
269 :2652011/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
285 :名無しさん@お腹いっぱい。2011/04/08(金) 22:06:37.91 ID:NT03AE5h0
>>270の新バージョンは
大まかには以前と何が変わったの?

それと、昨日も更新したみたい
>v2.0-a002-30017e5 is now available. The changes are:
272 :名無しさん@お腹いっぱい。2011/04/05(火) 14:55:37.83 ID:ZrHi0O170
'=' を '`=' にしないと動かないよ><
他にも hoge = %hoge1%%hoge2% とかも 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をつかって、
文章に対してなにをしたいの?

識別範囲を狭めればいいだけな気がするが。
279 :名無しさん@お腹いっぱい。2011/04/07(木) 01:03:36.35 ID:DrQN0H3g0
>>278
おお、なるほど。そう発想すれば良いんですね。確かに、数字のX座標は固定されているみたいなので、
この方法で出来そうな気がします。>>278さんのレスを見て、やっと>>276さんのレスの最後の行の意味
が分かりました!

ちょっとやってみます。ありがとうございました!
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の間で「 [例] 」 の画像を調べて、あったらクリックしてやる。
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
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


見た目はかわいいけどお値段が・・・
286 :名無しさん@お腹いっぱい。2011/04/08(金) 23:19:19.79 ID:Ie+ctjmt0
>>284
キーバインドできるデバイスならフットスイッチ、ゲーム用リモコンとかおすすめ
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
290 :2882011/04/09(土) 20:14:30.47 ID:oiIbw9PJ0
>>289
あれれ。もうちょっと調べてみます。報告ありがとうございます。
291 :2882011/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
コンビネーションキーの仕様を確認すること。
指定できるキーは二つのみ
293 :2882011/04/09(土) 22:41:36.98 ID:oiIbw9PJ0
>>292
確認しました。では、こういう状況でAlt+Shift+Tabを指定するにはどうしたら良いのですか?
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
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を利用して望み通りの動作ができました。
298 :名無しさん@お腹いっぱい。2011/04/10(日) 23:57:34.78 ID:FiSRnkAl0
俺はRunでこれ呼んでる
http://maglog.jp/mos-privpro/Article10569.html
301 :名無しさん@お腹いっぱい。2011/04/12(火) 21:58:39.21 ID:IyViwyyr0
どこでも使える。Dropboxを持ち歩く「DropboxPortableAHK」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
http://www.moongift.jp/r/2011/03/20110323-4/
303 :名無しさん@お腹いっぱい。2011/04/13(水) 13:02:19.68 ID:lsUbZIUk0
>>301
ソース見せてほしいな。これみたいに一時的にレジストリ登録してる、というわけではない模様
http://www.autohotkey.com/forum/topic32097.html

レジストリ使うアプリを、レジストリいじらずにポータブル化ってどうやってんだろ?
305 :名無しさん@お腹いっぱい。2011/04/14(木) 22:11:09.26 ID:ibW9/4u00
>>301
AHKとDropboxがどうつながるのかサッパリ分からない。
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で定期バックアップまで手を出してしまった。
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
310 :名無しさん@お腹いっぱい。2011/04/15(金) 18:20:49.77 ID:e6jN9mcS0
いいんじゃね
まあC#とかPythonとかで作ったほうが楽だろうけど
312 :名無しさん@お腹いっぱい。2011/04/16(土) 03:09:11.87 ID:zNdGP3WN0
すみません 流れを読まず質問です
FileAppendで追記する対象ファイルの文字コードはUTF-8が最適ですか?
314 :名無しさん@お腹いっぱい。2011/04/16(土) 10:22:39.27 ID:eNGMx+hq0
>>310
自分もWeb以外はAHKしか使ったことないんだけど、勉強のためにC#、Python辺りでコーディングすると効率良い所とか教えてほしい
体感で構いませんから

>>312
追記する対象ファイルの文字コードは既に決まってるのでは?
新たに作るならUTF-8が無難かも。一部古いエディタは文字化け起こすけど
313 :名無しさん@お腹いっぱい。2011/04/16(土) 10:07:07.50 ID:KlvlrhqW0
答えなんぞ無いわな。

普通は追記元と同じにすると思うが。
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
>>315
SendMessage,0x112,0xF170,2,,Program Manager
http://sites.google.com/site/autohotkeyjp/reference/commands/PostMessage
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引いてプロセス殺す。
321 :名無しさん@お腹いっぱい。2011/04/18(月) 12:14:22.71 ID:GcLEPxSn0
海外ではautoitのほうがユーザー層多いように見えるんだけど日本で何でahkが流行ってるの?
http://www.google.co.jp/trends?q=autoit%2CAutoHotkey
589 :名無しさん@お腹いっぱい。2011/06/29(水) 11:56:37.18 ID:G0jvLt4a0
>>321-326
322 :名無しさん@お腹いっぱい。2011/04/18(月) 12:23:27.57 ID:UV4hVtwe0
右も左もわからない時代に、はやらせるページの人がサンプルを交えて解説してくれたからだと思う。
AHKは、ホットキー以外にバッチ+αの作業を行う場合に小回りが利いていろいろ便利。
324 :名無しさん@お腹いっぱい。2011/04/18(月) 22:30:12.37 ID:OjG1lJMz0
>>322
autoitとautohotkeyでは、できることはほぼ一緒だけど、記法が大きくことなっている(autohotkeyはたしかautoitベースだったが)と思っていたけど
autohotkeyでしか出来ないことがあるのか
なるほど
323 :名無しさん@お腹いっぱい。2011/04/18(月) 12:54:21.42 ID:Y0rkTdj60
ver.104805をXPsp3で使ってるよ
たまーにAHKがフリーズしてタスクマネージャとかtaskkillでもAHKを終了できなくなるんだけど
理由分かる人いる?
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は高速化にかなりリソース割いてる)
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()に割り当てる

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
おぉ、上手くいった! ?です。
しかし最前面かどうか、のスタイルだと思ったのにこんな使い方もできるのか
これからは、めぼしいスタイルはとりあえず試してみることにするよ。ありがとう
341 :名無しさん@お腹いっぱい。2011/04/24(日) 19:00:56.30 ID:FryVW6CP0
AHKで作ったEXEは
すぐにそれがAHKで作られた物とバレてしまいますか?
342 :名無しさん@お腹いっぱい。2011/04/24(日) 19:44:10.93 ID:S0rpdq4t0
アイコン変えたりファイルバージョンとか書き換えれば、素人には分からん。
AHK使いにはすぐバレる
344 :名無しさん@お腹いっぱい。2011/04/26(火) 14:18:51.81 ID:uQ++AcLe0
Winwaitみたいに基本的には待機の状態でAウィンドウが存在しなくなったらラベルA
Bウィンドウが表示されたらラベルBへ飛ばすことってタイマー使わずにできませんか?
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 あたりがスルーされてた。
まぁ、機能導入時の暫定仕様だったからしょうがないが、つい最近まで動いててすっかり直すの忘れてたわ
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の問題だとは思いますがこれを消す方法ありませんか?
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()
352 :名無しさん@お腹いっぱい。2011/04/28(木) 13:02:02.78 ID:Z/mmlfD40
スマートな方法じゃなくていいのなら
マウスカーソルをタスクトレイの辺りで左右に動かすスクリプトが
ここの過去ログやフォーラムにあったはず
354 :3522011/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だけ使ってます
361 :名無しさん@お腹いっぱい。2011/04/29(金) 10:12:54.22 ID:8Mo9So2I0
>>356
ありますよ
それを作るのがAHKなんだがら
がんばれ
358 :名無しさん@お腹いっぱい。2011/04/29(金) 09:34:13.57 ID:djhm7bQN0
色々あるが教えて君のために列挙は勘弁
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
359 :名無しさん@お腹いっぱい。2011/04/29(金) 09:44:09.39 ID:Rt1TlOdq0
テキストボックスに日本語を自動入力させたいんですが
^vでクリップボードから送る意外になにか方法ありませんか?
362 :名無しさん@お腹いっぱい。2011/04/29(金) 13:36:25.33 ID:z2YgJn+E0
>>359
ControlSetText
360 :名無しさん@お腹いっぱい。2011/04/29(金) 10:06:57.50 ID:djhm7bQN0
エディットボックス互換限定でいいなら
Control, EditPaste, String

S-JIS限定なら全角をコード化してSendで送る(SendConv でググレ)
UNICODE版で使えるかは知らん
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 から操作する
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
とかで判定できるかと思いましたが、どうも違うようです。
現在は次善策として特定プロセスにフォーカスが渡ったら…という形にしていますが
穴があるのでなんとかしたいです。
372 : 忍法帖【Lv=4,xxxP】 2011/05/01(日) 22:51:01.46 ID:tV5sS4MQ0
今からAutoHotkeyを導入したい人はどれを入れればいいのかな?
あと英語分からないよー
375 :名無しさん@お腹いっぱい。2011/05/01(日) 23:23:25.29 ID:KA0pi79N0
64bitアプリをフックできなかんべ
376 :名無しさん@お腹いっぱい。2011/05/01(日) 23:34:39.09 ID:RoOATStI0
>>375
なるほど
そういえばそうだね
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)
こっちだけ
390 :名無しさん@お腹いっぱい。2011/05/03(火) 02:59:05.79 ID:Pk5quyRC0
>>379-380
サンクス。関数名を文字列でコールする正式な手法を実装したってとこかな
今までオブジェクトに入れて呼び出してたけど、こっちに鞍替えしてみる
381 :名無しさん@お腹いっぱい。2011/05/02(月) 23:32:35.17 ID:VH6dTxcW0
機能追加はもういいから、クソみたいな構文を何とかしてくれ
384 :名無しさん@お腹いっぱい。2011/05/03(火) 00:11:58.75 ID:hejL9KmO0
まぁ、マニアックな方向の拡張の様な気もするし、
文法をガラリと変えるための基盤作りの様な気もする。

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

クソ文法でない、汎用処理系になればなるほど、言語仕様を覚える比率が高くなって、
スクリプトいじっているうちに「俺何したいんだっけ?」ってなる。
387 :名無しさん@お腹いっぱい。2011/05/03(火) 00:17:57.63 ID:MysEWyeX0
>>384
出来ることが同程度の言語なら、統一性のある文法のほうが学習コストは下がるよ
lisp並の高機能にしたいなら話は別だが
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
問題となるコードを貼ってみて。
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
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が悪いんでしょうねぇ
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にはこの方法がなかった)ので、そうした
だいたいやりたいことができるようになりました
?クス
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の愛好家の何人かをイヤな気分にさせたくなった」
じゃないかな。
414 :名無しさん@お腹いっぱい。2011/05/06(金) 03:17:36.33 ID:qrA6gzZF0
>>410
まるで、AutoHotkeyの神みたいな口ぶりじゃないか
ゴミカスは死ねよ
415 :名無しさん@お腹いっぱい。2011/05/06(金) 03:19:04.98 ID:qrA6gzZF0
>>411
頭おかしいんじゃネェかお前ら
421 :名無しさん@お腹いっぱい。2011/05/06(金) 07:01:47.63 ID:E5qzpsBK0
>>409, 412, 417
少なくとも俺にとってはこれらは真実
ウインドウがアクティブになっててもキー入力は暫く受け付けなかったり、そんなのザラ
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の操作は難しいけど、プラグインも使えば大概の動作がキーボードで処理できるようになるので。
417 :名無しさん@お腹いっぱい。2011/05/06(金) 03:25:15.68 ID:qrA6gzZF0
>>412
まったくその通りだと思うぜ
AutoHotKeyのプロセスと対象アプリの動作は、全く非同期なので、どうやってタイミングをとるかが難しい
意図しているのと違う順序で物事が起こったりして動かないのだが、どういう順序で起こっているかを
知る効率の良い方法がないので、一発で動くことはほとんど無い
なんとかタイミングを変えようとするのだが、結局長いsleepとかを装入するぐらいしか解決法がないことが
多い
425 :名無しさん@お腹いっぱい。2011/05/06(金) 12:22:37.58 ID:oJluPN/z0
>>417
外部干渉を考えてないアプリを無理矢理制御しようってんだから当然の事だと思うが
やってみるまで分からなかったのか?
プログラムって書き手の意図を汲んで自動的によきにはからってくれるものではないんですよ?
435 :名無しさん@お腹いっぱい。2011/05/08(日) 13:48:11.84 ID:ReI+Pgjk0
>>425
わかってたよ
416 :名無しさん@お腹いっぱい。2011/05/06(金) 03:23:50.43 ID:2S7sNW7h0
自己紹介乙としか言いようがない極めて典型的アホレス
418 :名無しさん@お腹いっぱい。2011/05/06(金) 03:25:38.47 ID:qrA6gzZF0
>>416
自己紹介乙w
420 :名無しさん@お腹いっぱい。2011/05/06(金) 04:49:07.43 ID:5gQGqT9W0
なるほど、全てのアプリケーションが外部から干渉されることを想定して設計していれば
問題ないってことか、素晴らしいね
オレはそんなシステム怖くて使えないけどね
424 :名無しさん@お腹いっぱい。2011/05/06(金) 11:40:57.97 ID:hG+iqpqD0
menuコマンドで作ったメニューの大きさって指定できませんか?
428 :名無しさん@お腹いっぱい。2011/05/06(金) 21:53:43.61 ID:Jl8+gXGS0
>>424
autohotkey_lなら、メニューに任意の画像を指定することで、
項目のサイズが自動的に伸縮すると思う
434 :名無しさん@お腹いっぱい。2011/05/06(金) 23:55:53.01 ID:trq6dD1j0
>>428
へー知りませんでした
L使いなのであとで試してみますm(_ _)m
430 :名無しさん@お腹いっぱい。2011/05/06(金) 23:12:31.12 ID:9cK1Xfe10
menuに縦セパレータを入れて二段メニューにできればなあ…
432 :名無しさん@お腹いっぱい。2011/05/06(金) 23:41:28.34 ID:o+GCaUnq0
AU3_Spy.exeや窓コンデでまったく表示できないアプリがあります。
どうやって取得できるようになりますか?無理ですか?
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)
}
441 :名無しさん@お腹いっぱい。2011/05/09(月) 22:58:51.93 ID:mzGufvXa0
>>440
すまん。>>436の6行目理解してなかった。
それなら正規表現に検索文字列は入れないでMsgBoxの部分で
InStr($name, W_element)でチェックするほうがいいんじゃないか?
461 :名無しさん@お腹いっぱい。2011/05/11(水) 16:50:41.79 ID:ng9orduD0
>>441
それでうまくいった
ありがとう
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
 }
}
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部分に変数ってねじ込めないの?
439 :名無しさん@お腹いっぱい。2011/05/09(月) 22:16:54.89 ID:1/rFgTn80
vista でスタートボタンって消せる?
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")
でいいんじゃねーの?
453 :名無しさん@お腹いっぱい。2011/05/10(火) 21:02:39.94 ID:1C76+ovm0
>>451 おおすごい! そんな方法があるんですね!! 感動しました。
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も稼働せず。

こういうタイトルを名乗らないソフトの場合は、どうすりゃいいですか?
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)の方法でやるほうが、至極まっとうなやり方だよ。
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
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
465 :名無しさん@お腹いっぱい。2011/05/13(金) 03:13:39.14 ID:h4KqeM1l0
Winhideで隠したいくつのウィンドウをWinshowで一気にShowすることってできませんか?
一つ一つをShowすることはできたんですが・・
なにも書かないと 直前のウィンドウを選択するみたいでうまくいきません
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%
471 :名無しさん@お腹いっぱい。2011/05/15(日) 21:16:29.22 ID:hue7Uzbk0
AHKでGUI作ってるんだけど、リストビューの幅を取得する方法ってないかな?
幅の指定は LV_Modify でできるけど取得する関数が見当たらない
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から終了する方法を教えてください
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

で一応死んでくれたよ
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
よかったね
482 :名無しさん@お腹いっぱい。2011/05/18(水) 17:21:27.33 ID:mtWnFqyp0
このスレでよくある話だけど、なんのために「Evernoteを終了」させたいのか
が抜けてる。これを書くと、違った視点で問題解決方法が見つかることが多いのだが。
483 :名無しさん@お腹いっぱい。2011/05/19(木) 07:52:04.79 ID:OtH7ohA80
PC買い換えて64bitにしたらちゃんと動かなくなったスクリプト多数で
関係なさそうなものまで動かなくなるし
原因突き止めて直すのがめんどくさすぎる・・・
486 :名無しさん@お腹いっぱい。2011/05/19(木) 17:05:24.83 ID:h7mLc6w40
>>483
カスタマイズ好きにはそういう制限が非常に面倒くさくて困るね。
7にするにしても64bit版は選ばないほうがいいのかな。
メモリも4Gまで不要な使い方しかしないなら割り切ったほうがいいのかな。
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にして、その症状が出てるかどうかすら判別できないほど快適になって、
悩みも消えてしまった。
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押しっぱなしになる不具合が最近おきない。
治ったの?
494 :名無しさん@お腹いっぱい。2011/05/26(木) 09:45:39.13 ID:Wgk//lNe0
>>488
うちもいつのまにか直っていた
リピートなんかでフックに割り込まれるのもなくなった
XP Home SP3
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
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アカウント必須になったしなんだかなーって思うけどね
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を見つけるとウィルスソフトが激怒するのは何とかならないのでしょうか
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されているのを外せばいいのか
関数にまとめて呼び出せるようにしたほうがいいかもしれんけど
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
 ---以下省略---

533 :名無しさん@お腹いっぱい。2011/06/11(土) 19:59:33.89 ID:oaIwotta0
>>508
つーかさ、ExcelのVBA使って、業務アプリに直接入力した方が遙かに早くね?

業務アプリの入力ボックスのハンドル取得して、SendMessageでポポポポーンと
509 :5082011/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文で回して、そのつど座標をずらしてコピーペーストするのが一番簡単だろうけど、

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

サンプルとかいらないほど基本的な構文で出来るはず。
512 :5082011/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」でググればいい
英語での検索を恐れないといいよ。公式のサイトのフォーラムで同じようなことをしている人が引っかかるし。
517 :5082011/06/07(火) 23:25:10.17 ID:oRehokKf0
みなさんレスありがとうございます

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

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

また何か分からなかったら質問させてください
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側のマクロ使ったほうが確実かも
518 :名無しさん@お腹いっぱい。2011/06/07(火) 23:44:47.06 ID:1einNjsl0
Esc & i::Send,{Down}
というマップがあるとき
shift, esc, i で Send, +{Down} になるようにしたいんですが
一番上の命令を書き換えないと無理でしょうか?
520 :名無しさん@お腹いっぱい。2011/06/07(火) 23:50:02.25 ID:AVe7TOvp0
>>518
Esc & i::Send, {Blind}{Down}
519 :名無しさん@お腹いっぱい。2011/06/07(火) 23:45:42.72 ID:AVe7TOvp0
VBスクリプト書けるなら、AHKとコラボするとずっと楽だよ
このスレや過去ログを ScriptControl で検索するといい
521 :名無しさん@お腹いっぱい。2011/06/08(水) 01:44:24.38 ID:ewCEIaPR0
そうだね
VB、VBスクリプトどっちでもいいけど?そちらに慣れているなら、
VBからAutoHotKeyを使うとか、文法がしっかりして機能が似ているAutoItを使うのがいいかも知れないな
523 :名無しさん@お腹いっぱい。2011/06/08(水) 23:08:27.55 ID:wgxm9R500
ホットキーの動的割り当ては Hotkeyコマンド
Sendとかmsgboxとかは1コマンドづつ関数でラップして動的関数で適当に飛ばすとか

もしくは外部ファイルをAHKのコマンドルールに置換したtmp.ahk吐き出して実行するスクリプトとか
(例でいうと -> を :: にするようなの)
526 :名無しさん@お腹いっぱい。2011/06/09(木) 00:53:12.81 ID:aPg0hWMp0
>>523-525
一時ファイルを作成するのですか
思いつきませんでした。
autohotkey.dllの採用は見送り、一時ファイルで対処したいと思います
ありがとうございます
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 もう一個立ち上げるっつー方法もあるが
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の/か.だと思うんだけどどうしたらいいかな?
529 :名無しさん@お腹いっぱい。2011/06/10(金) 15:55:38.28 ID:jm8xWEgD0
>>527
そういう時はまず /や.のないテキスト用意して実行してみ
やってみりゃわかるがそれでもエラーは出る、問題は別の所

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

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

ついでに FileAppendは行単位で追加されるわけじゃないから任意に改行入れてやる必要がある
531 :名無しさん@お腹いっぱい。2011/06/10(金) 16:42:25.85 ID:JO3Wub6T0
>>529
%とったらうまくいった
詳しく教えてくれてありがとう
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や正規表現の検索が一度で出来て便利。
530 :名無しさん@お腹いっぱい。2011/06/10(金) 16:39:37.43 ID:JO3Wub6T0
>>528
教えてくれたのでもエラーでたけど
%で括ってるのをとったらうまくいった
ありがとう

逆に追加じゃ無くて削除したかったら
fileread,data,Urlmemo.txt
RegExReplace(data, %clipboard%`r`n ,"")
しかない?
532 :名無しさん@お腹いっぱい。2011/06/11(土) 15:06:10.85 ID:L0Xz6V2Y0
Windows 7でタスクバー中クリックで閉じるをやるにはどうすればいい?
LButton送信、待機、ウィンドウを閉じるだとなんか不安なんだが。。
535 :名無しさん@お腹いっぱい。2011/06/11(土) 20:01:34.52 ID:nlQnFY2b0
>>532
左クリック送ってアクティブ化
アクティブウィンドウを取得
WinClose の流れでいいんでないの
534 :名無しさん@お腹いっぱい。2011/06/11(土) 20:00:31.18 ID:XAB5SrUZ0
Windows7のエクスプローラにPostMessage(WM_Command)が効かない(他のWinOSでは効く)
本家で同じような質問してるやつがいるけどレスが無い
環境のせいのような気もするしどうしたものか
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
そっちでやってんだけど効かないんだよな
なんか見落としがあるのかなあ
540 :5392011/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
546 :名無しさん@お腹いっぱい。2011/06/12(日) 15:04:19.19 ID:y46RR7aZ0
半年前の日付はどうやって取得すれば良いんでしょう?
例えば今日の日付 (2011/06/12) に対して 2011/01/12 を返す、というものです。
AHK の質問というよりアルゴリズムの問題なのですけど、ここ数日難儀しています。
宜しくお願いします。
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
550 :5462011/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 でした…。
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
562 :名無しさん@お腹いっぱい。2011/06/13(月) 05:18:14.94 ID:nMmyHBWI0
>>550
月末考慮してないけどいいのか?
564 :5462011/06/13(月) 13:50:13.09 ID:kIU82ML30
>>555 それもスマートでいいですね。
>>562 該当日なしでも良いので、>>550 で大丈夫です。
565 :5462011/06/13(月) 14:53:54.09 ID:kIU82ML30
結局 >>555 を採用させていただきました。ありがとうございました。
547 :名無しさん@お腹いっぱい。2011/06/12(日) 15:32:51.32 ID:iG+1mXT/0
今のAutoHotKey_Lってデフォで標準入出力扱えたりする?
クリップボードの内容にPerlワンライナーで処理させるGUIアプリ作りたいんだが。
551 :名無しさん@お腹いっぱい。2011/06/12(日) 21:38:28.24 ID:YVcORIIG0
質問です。OSが64bitか32bitか、判別する関数なり方法はありますか?

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

じゃ不確実ですかね?
553 :名無しさん@お腹いっぱい。2011/06/12(日) 21:55:53.21 ID:1Byg1OQO0
それだと AHK x86 @ Win x64 で 4bytes(32bits) になるような
妥協的だが、AHKだけで判断するなら >>551 でよさそうな感じ
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
とか?
554 :名無しさん@お腹いっぱい。2011/06/12(日) 23:46:23.10 ID:YVcORIIG0
>>552-553
thxです。
とりいそぎ、最初に書いた原始的な方法で分岐させることにします。
556 :名無しさん@お腹いっぱい。2011/06/13(月) 01:22:03.24 ID:ntDlo9QJ0
常に最前面はできたんですが常に最背面ってAHKでできますかね?
公式のフォーラムとかをみてもそれらしいスクリプトが見つけられませんでした。
特定のアプリが事あるごとに最前面にでてきて邪魔なので制御したいんですが無理でしょうか?
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させたら解決するんじゃ?
563 :名無しさん@お腹いっぱい。2011/06/13(月) 07:46:18.79 ID:deQXPhtz0
>>560
winset,bottom
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に詳しい人が、組み込み易い修正版出してくれないかな


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
原始的な方法として、ループ回してそのウィンドウが前に出てきたら直前のウィンドウを前に出し直す、って方法はあるだろうけどね
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コード変換)
571 :5672011/06/19(日) 08:01:39.49 ID:b/JQmRst0
>>568
290行目のSubStr()直前にあるStrをAstrに書き換えたら、
ツールチップ化けが解消して完璧な動作になりました
eamat.さんに心からトンクス
570 :名無しさん@お腹いっぱい。2011/06/18(土) 23:11:55.45 ID:uDFD+7HP0
autohotkey version2 のスレッドがautohotkey forumで頻繁に上がってくるけど
使っている人は居る?使い心地を聞きたい
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
みたいにしたとき
ひらがなカタカナキーが押しっぱなし状態になるんだけど 俺だけ‥?
578 :名無しさん@お腹いっぱい。2011/06/23(木) 12:11:22.60 ID:G8MMkic20
>>576
vkF4はどうかな?
580 :名無しさん@お腹いっぱい。2011/06/23(木) 12:30:00.86 ID:G8MMkic20
>>578
あ、半角全角キーと勘違いした上に
これはこれで動作が良く解らんな・・w
半角全角キー押したあとはカタカナひらがなとか無変換キーでも反応してしまうみたいだ
579 :名無しさん@お腹いっぱい。2011/06/23(木) 12:22:36.94 ID:aKKI32AJ0
AutoHotkey.dllを使う場合はどうやってマクロを実行したらよいのですか?
コマンドラインからAutoHotkey.dll macro.ahkで実行しても動きません
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
このスレの暗黙のルール

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

これで修正不能だった例を見たことがない
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のほうがダントツなのに
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を使ってる
595 :名無しさん@お腹いっぱい。2011/06/29(水) 16:13:53.30 ID:wAqaC39iP
>>591
そんなに宣伝したきゃ
「autoitを流行らせるページ」
みたいなサイトでも作ったら?
592 :名無しさん@お腹いっぱい。2011/06/29(水) 12:06:25.11 ID:tpURdQmh0
×AHK か autoitのバージョンが上がるごとにコードをパクって来た
○AHK が 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)。
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
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のときはこんなことなかった。
638 :名無しさん@お腹いっぱい。2011/07/14(木) 06:25:21.12 ID:f0tcnmMo0
>>611と同じ人?

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

愚痴ってばかりでなく、問題を切り分けしないと、前に進むことは出来ない。
608 :名無しさん@お腹いっぱい。2011/07/05(火) 22:20:10.26 ID:sIV8AxFS0
PCゲームで、リマップをAHKで使っているのですが、無変換と変換キーに違うキーを割り当てると、
ゲームをはじめてしばらくは動いてくれるのですが、気づくと、無変換と変換キーの割り当てだけ
無効化されます。それらのキーを押してもキーを何も押下してくれません。
AutoHotKeyを再起動してもそれ無効の状況は変わらないのですが、
ゲームを再起動すると、最初の設定通りうごいてくれます。

windows7 x64 です。キーボードは2種類ためしました。
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を使用
616 :名無しさん@お腹いっぱい。2011/07/07(木) 21:30:58.64 ID:EIIqCchV0
>>614
たぶん、これでいいはず

hoge = %1%
Loop, %hoge%, 1
MsgBox, %A_LoopFileShortPath%
619 :名無しさん@お腹いっぱい。2011/07/09(土) 12:56:25.36 ID:p39hk6N20
>>615
> これは何の意味があるの?
RegExReplaceでファイル名前のパスと拡張子部分をhoge2,3に格納しています
> splitpathじゃダメなの?
自分の知ってるコマンドだけで書いてるので…
そのコマンドは知らなかったのでちょっと調べてみます

>>616
やり方が悪かったのかわかりませんが
うまくいきませんでした
620 :614=6192011/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してみ。
622 :6162011/07/09(土) 19:38:17.42 ID:KpJxy9qU0
>>621
間違ってショートネームのやつにしてた、指摘thx
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じゃダメなの?
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
636 :名無しさん@お腹いっぱい。2011/07/14(木) 00:32:51.62 ID:+M1XGiOr0
>>618
なぜかたまに処理の中に入っちゃうけど
やりたいことは出来ました
ありがとうございます
623 :名無しさん@お腹いっぱい。2011/07/12(火) 01:00:46.72 ID:QCN3thDR0
TABもスペースも多用しているテキストファイルで文字列を抽出したい場合どうすればいい?
hogehogeをA_SPACEに置き換えてからStringSplitで抽出しようとしても
誤爆が多すぎて使いものにならない。
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%で置換して、
本物の関係ないスペースと見分けをつけにくくしてるのか、
全くやってる意味がわからないんだけど。

誤爆するのが当たり前というか
自分から進んで誤爆させる方法に加工してるだけじゃん。
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")
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には、それぐらいはまずテンプレ嫁って思ってたよ
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
望み通りの動作ができました。ありがとうございます。
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でちゃんと動くのないのでしょうか?
おしえてください
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認識してる
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 は、いまここらへん
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
で個別に設定しても無理。

おたすけを 
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に水平・垂直スクロールバーがついているかどうか
確認する手段はありますか?
656 :名無しさん@お腹いっぱい。2011/07/18(月) 08:42:49.39 ID:7KSoefVi0
日記

windows7 x64でAutoHotKeyが動かないとき

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

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

ユニコードバージョンはダメなんか。
661 :名無しさん@お腹いっぱい。2011/07/19(火) 00:45:01.64 ID:MnandR2a0
aaa := A_Now

中略

bbb := A_Now



変数aaaとbbbを使ってaaaからbbbまでどのくらい時間が経過したかを
〇〇年〇〇ヶ月〇〇日〇〇時間〇〇分〇〇秒のフォーマットで求めたいのですが
どうやれば良いでしょうか?よろしくお願いします。
663 :名無しさん@お腹いっぱい。2011/07/19(火) 01:16:17.16 ID:4HY6RSna0
日記

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

ID Managerで一切動かない。
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 &を使うことで動く場面がたくさん増えたように思います。
前進できました。ありがとうございます。
664 :名無しさん@お腹いっぱい。2011/07/19(火) 08:26:04.90 ID:ZXQD1WU/0
日記

前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。
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のバージョンを明記すること。
>また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
>
670 :名無しさん@お腹いっぱい。2011/07/20(水) 07:04:25.19 ID:Bb1hKbPa0
■回答できるレベルの人へお願い■

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

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

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

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


こういうスレの私物化はウザくてしょうがないが
この手のヴァカは言っても絶対やめないからな、飽きるの待つしかない
NG wordにでもぶちこんどくといいよ
675 :名無しさん@お腹いっぱい。2011/07/21(木) 01:46:43.74 ID:CQ0vHj5w0
678 :名無しさん@お腹いっぱい。2011/07/21(木) 22:40:06.38 ID:oZBVPGCL0
>>675
vkXXscYYYは仮想キーコード且つスキャンコードの特定

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

スキャンコードは07Bでした。どうしてwindows7では
両方の指定はだめなんだろう。
ありがとうございました。
676 :名無しさん@お腹いっぱい。2011/07/21(木) 20:03:52.35 ID:QDyk5YgV0
Win7でVersion 1.0.48.05を使ってます。
スペースバーを長押し動作だけに限定するスクリプトって作れますでしょうか?
フォトショップのスペースバーのショートカット動作が短く押すのと、長押しの二種類ありまして
長押しのほうしか使わないので、押し間違えで起動してしまう短く押す方のショートカットを無効にしたいのです。
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
677 :名無しさん@お腹いっぱい。2011/07/21(木) 22:12:19.88 ID:nSp3ZG2K0
そういや前スレまでテンプレにあった、Ctrlとか押しっぱなしの時にアラート出せるやつはもう使えないのな。
地味に便利だったんだけどなぁ
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のエクステンデッドです。エクステンデッドにあるアニメーションのタイムラインウィンドウを表示させて
レイヤーの表示時間をいじるとスペースキーチョイ押しがアニメクリップの再生停止になります。
684 :名無しさん@お腹いっぱい。2011/07/25(月) 14:14:12.88 ID:nDBdBsvj0
AutoHotkey.ahkとAutorun.ahkとの違いってある?
前者はAutoHotkeyを起動すると実行されるスタートアップだけど
後者の使い道がよくわからん
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 の値を調整する
最適値は環境依存で変わりそうだがググれば例は出てくると思う
688 :名無しさん@お腹いっぱい。2011/07/26(火) 11:40:15.68 ID:iOs+30oa0
>>686
ありがとうございます! 試してみます〜
687 :名無しさん@お腹いっぱい。2011/07/26(火) 10:16:19.47 ID:B69TpIvt0
Filedeleteとかのファイルパターンを正規表現で指定したいんですが
なにかいい方法ありませかね?
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から見たら、権限のないソフトから不正なキー信号が送られてるのと変わらないし。
697 :名無しさん@お腹いっぱい。2011/07/30(土) 14:44:00.00 ID:4JyQaPX90
>>692
レスありがとう。

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

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

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

ぼくもUAC無効にしてみようかな。
ためになりました。
693 :名無しさん@お腹いっぱい。2011/07/30(土) 11:49:12.42 ID:oTMmrKcS0
横からすんません。
てことは、AHKも管理者権限で実行しているならOKってことになるんですかね?
696 :名無しさん@お腹いっぱい。2011/07/30(土) 12:58:05.23 ID:mA+Fc+u70
そういう余計な心配やトラブルが嫌でUAC完全オフで使ってる俺はダメ人間なのかな

結局、情報なんて抜かれるときにはどんな手を使ってでも抜かれるし、
関係ないデータ領域を巻き添えにして壊れるような市販ソフトなんて一度も出会ったことないし、
データドライブの意図的なファイル削除だったら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では配列は書き込めないようなのでどうしたらいいですか?

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006