XREA.COM Logo XREA.COM Ad

スクリプト質問スレッド

1管理人 ★:04/09/21 20:01 ID:???
質問が多いので独立させます

状況や実現したいことは出来るだけ具体的に書いてください。

スクリプトがうまく動かないなどの問題の場合、問題のあるスクリプトの内容や
エラーメッセージの内容を併記してください。
2unnamed.ahk:04/09/21 22:38 ID:tI023S++
こんにちは。
もしご存じでしたらぜひ教えてください。
Inputコマンドにおいて、2つ目以降に押したキーに
修飾キーをつけることは可能なのでしょうか?

というのは、貴サイトで紹介されている
^c::
Input,InputChar,C I L1 T2,{Esc},x,s
if ErrorLevel=Match
{
if InputChar=x
Send,!{F4}
のような書き方だと、Ctrl+Cを行った後で
Ctrlを離してからXを押さないとコマンドとして認識されませんよね。
これをCtrlを離さずにXを押しても認識されるようにしたいのです。
実現させるためには2番目以降のキーとして^xのような指定ができれば
いいかと思ったのですが……。
3unnamed.ahk:04/09/22 00:40 ID:???
Inputでは修飾キー付きの操作は取得できないようです
なぜか最初の一回だけCtrl押しっぱなしでも動作するようですね……
4unnamed.ahk:04/09/22 01:51 ID:7pmeomzo
やはりそうですか。
私はメニューバーの操作をいつも修飾キー押しっぱなしで
やっているので、これができれば例えばAlt+F→Sを強引に
Alt+F→Aに置き換えるなどの使い方ができるかなと思ったのですが、
その使い方はあきらめてほかの操作にしてみます。
ご回答ありがとうございました!
5unnamed.ahk:04/09/26 18:34 ID:itM+1YLk
CapsLock押下でCtrlを送信させたいのですがCapsLockの押下解除が
認知できず煮詰まってます。(Win XP SP1 Home / FMV Loox T90D)

$sc03A:: ; FMV LOOX T90D スキャンコード(CapsLockラベルでは何故か効かないので)
send,{CtrlDown}
Loop ; ←ここから抜けて来られなくなる
{
st = U ; buf init
GetKeyState,st,sc03A,P
if ErrorLevel <> 0 ,Break ; Error break(効果無し)
if st <> D, Break
Sleep,10
}
send,{CtrlUp}
retuen

#InstallKeybdHookのみ記述の.ahkを作りKeyHistoryを調べましたが
押下中 F0 03A d の表記がリピートされ、押下解除でdは止まりますが
解除後もuのイベントは発生しないままでした。
上のコーディングだと押下解除後もGetKeyStateは D or d を返してきて、
どうにも解除情報が得られない状態です。
また、Loop{ ~ }を、KeyWait,sc03A に変えても同様な結果です。
(上のソースには入れ込んでいませんが、特定のアプリ(xyzzy)のみに
限定適用させたいのでレジ弄って CtrlとCapsを入換えとかは使えませんのです)

そもそもCapsLock::での表記が効かないのでマシン固有の問題かとも
思ってるのですが、何か少しでもヒントがありましたらお願いいたします。
6unnamed.ahk:04/09/26 18:56 ID:???
>>5
CapsLock<-->Ctrl入れ替えについてはいろいろ試してみましたが、どうにもうまくいかないようです。
Lock系キーだけで発生する問題のようです。

レジストリの変更が可能なら、CapsLockをあまり使わないキーに変えて、xyzzyならCtrl、
他のアプリならCapsLockを送信するようにすれば代用できるんじゃないでしょうか。
7unnamed.ahk:04/09/27 22:47 ID:???
>>6
レスありがとうございます。むー、やはりAutoHotkey自体の制限なんですか。
Lock系の3個であの後試してみたところ

       LOOX    職場のNT4マシン
CapsLock  ×         ×
ScrollLock ..○         ○
NumLock  .×         ○

という感じでした。NumはKeyhistoryでは uも来るのにLOOXでは
押下解除が取れないという…
結構環境で大きく左右されるソフトなのかも

尚、教えていただいた方法については、LOOXはサブノートゆえ
存在しないキー(RWin,RAlt)がありますので、その辺のキーと入換え
ちゃえば行けそうな感じですね。
キー入換えはOS再起動が必要なので今すぐは試せないのですが
後日試してみますです。

ありがとうございました。
8unnamed.ahk:04/09/28 00:30 ID:???
うちはScrollLockもだめだった
やっぱり環境依存?
9unnamed.ahk:04/09/28 11:24 ID:???
IfInStringを使って分岐させようとしているんですが
UTF-8の日本語を扱うことってできないんですかね?
Loop,READで読み込んでMsgboxに試しに表示させてみると化け化けだったので
これじゃダメかなーって思ってるんですが。

もし解決法とかあれば教えて貰えると助かります。
10unnamed.ahk:04/09/28 17:34 ID:???
>>9
分岐自体はできると思いますが、MsgBoxはSJIS専用なので化けます
11unnamed.ahk:04/09/28 22:53 ID:???
>10
なるほど、ありがとうございました。
125:04/10/04 02:37 ID:???
5でつ、遅レスですが>6で教えていただいた方法で試してみました。
KeyCtrlで CapsLock <- RWin割り付け、再起動
CapsLock押下で [Win]キー動作するのを確認後、以下入れ込み
↓でできたです。改めてアドバイスありがとうございました。

;;; xyzzyでは、CapsをCtrlがわりに
$RWIN::
IfWinActive,%A_Space%- xyzzy
{
Send,{CtrlDown}
Keywait,RWIN
Send,{CtrlUp}
}
return

;;; Shift+Capsで Capsトグル(xyzzy以外)
$+RWIN::
IfWinNotActive,%A_Space%- xyzzy
{
GetKeyState,st,CapsLock,T
If st = D
SetCapsLockState,OFF
else
SetCapsLockState,ON
}
return

Version 1.0.20 (9/30)で動作確認
Capsトグルは Send,{CapsLock}で行けるかと思ったけどだめみたい

>8
環境依存っていうかまだまだ発展途上なのかなぁ
職場のNTではRCTRLなどの右側のキーは、~付けると何故か押下解除を
待たず、何度もホットキー呼び出してループしてしまう(Ver 1.0.19)

うちのXPはVer 1.0.20入れてから挙動が変だ
#r::Reload で win+R長押しするとAutoHotkeyが大量に重複起動しまつ(つд`)
13unnamed.ahk:04/10/05 23:27 ID:5lWD+b0M
--- shortcut.ahk ---
If %0% = 0, exit
SplitPath, 1, FileName
FileCreateShortcut, %1%, C:\%FileName% へのショートカット.lnk
----------------------
↑のスクリプトにファイルをドラッグさせて、
そのファイルのショートカットを作成させようと思うんだけど
ファイル名が長いとファイルネームが省略される。これをなんとかしたいんだけど、
仕様(コマンドライン引数がロングファイルネーム形式に対応してない)っぽいんで無理かな?
14unnamed.ahk:04/10/06 00:28 ID:???
どんなファイル名か
15namazu:04/10/20 09:18 ID:6Uscnojs
はじめまして。
AutoHotkeyで、日本語IMEのON状態を検出することは可能でしょうか?
IfWinActiveみたいな方法で。
IMEの文節調節のキー(^l,^k)を、Left,Rightに乗っ取っているのですが、
IMEがONの時は、Left,Rightじゃなくて、そのまま(^l,^k)渡したいのです。
なにか、いい方法はありませんか?
16unnamed.ahk:04/10/20 12:55 ID:???
>>15
IMEの状態はImm系のAPIで取得できるはずですが、
AutoHotkeyではAPIは使えないので難しいと思います。
IMEの変換中かどうかの判定であれば、以下のようなスクリプトで無理やり実現できました。

F1::
WinGet,p1,PID,A
WinGet, ids,list,ahk_class imejpstcnv81
Loop, %ids%
{
StringTrimRight, this_id, ids%a_index%, 0
WinGet,p2,PID, ahk_id %this_id%
If p1=%p2%
{
ToolTip,true
return
}
}
ToolTip,false
return
17namazu:04/10/21 10:30 ID:Zz21bNVE
unnamed.ahkさん、お答えありがとうございました。
しかし、結論からいいますと、私の環境では、うまくいきません。

本スクリプトの要旨は、
1)漢字変換中は、"imejpstcnv81"というクラスを持つウインドウ(のハンドル)が
複数現れる。
2)そのウインドウのプロセスIDが、現在ActiveなウインドウのプロセスIDと同一
だったら、漢字変換中である。

ということだと思います。しかし、私の環境では、1)が、どうも検出できないよ
うです。つまり、
"WinGet, ids,list,ahk_class imejpstcnv81"
これの、idsが、IMEを立ち上げて漢字変換を行っても、常に0だということです。

"imejpstcnv81"というのは、IMEのバージョンによって異なるような値でしょう
か?私の環境での"imejpstcnv81"はなにかというのを確認する手段はありますで
しょうか?

申し訳ありません、教えていただければ助かります。
18unnamed.ahk:04/10/21 22:00 ID:???
管理人さんのマウスジェスチャスプリクトを拝見させてもらいましたが
#UseHook、#InstallMouseHookともに指定していない状態で、
各マウスホットキーラベル先頭に$も付けていませんが問題なく動いてますよね
マウスベントの場合、
WheelUp::Send,{WheelUp}
みたいな書き方しても再帰イベントは発生しないってことなんでしょうか?
もしそうであれば↓みたいな記述ができるのでコードがすっきりするんですけど

WheelUp::
WheelDown::
If 何か判定
{
   特別な処理
}
else Send,{%A_ThisHotkey%}
return


>>17
横レス失礼
「私の環境では上手くいきません」と書かれていますが、その環境を説明しないのでは
識者の方もアドバイスしずらいと思いますよ。
OSバージョン、使用IMEの種類(ATOKとかMS-IME2002等)
AutoHotkeyのバージョン、特定のアプリ上でのみ動作させたいのか
(もしならそのアプリ名)Win全てに共通するのか、等
関連しそうな事柄は書いたほうが良いと思います。

"imejpstcnv81"はIMEのクラスなんじゃないですかね、よくわかんないけど
19unnamed.ahk:04/10/21 23:10 ID:???
マウスホットキーは元から全部Hookだったような
20unnamed.ahk:04/10/21 23:34 ID:s3/QTe8M
>>17
DetectHiddenWindows, On 忘れてるだけ・・・ってことはないよね?
他人の(今回の場合は16氏)のスクリプトをそのままコピペで使うんじゃなくて、
自分の環境等に合わせて多少変えないとだめかも。
ちなみにウチのIMEのclassは、imejpstmain81になってる
21namazu:04/10/22 03:12 ID:mAAAbC2I
皆さんありがとうございました。解決しました!
(unnamed.ahkは、「名無しさん」だったんですね。失礼しました)

私の環境では、"imejpstcnv9"でした。全部のWindowのクラス名の中に、"ime"が入
ってるやつを列挙してみたら、見つかりました。これで教えて頂いたスクリプト
を実行してみると、無事、IMEのON/OFFが検出できました。
(遅ればせながら、私の環境は、Windows2000 SP4、Microsoft IME2003です)

ただし、IEの、HTMLファイルの中の入力フォームでは、検出できませんでした。
URLを入れるところでは検出できるので、HTMLファイルを表示している所は、別
プロセスなのかもしれません。

あと、
>>20
DetectHiddenWindows, On 忘れてるだけ・・・ってことはないよね?

すみません、忘れてました!ただ、これは、必要ないみたいです。これをやらな
いでも、"ahk_class imejpstcnv9"で、ウインドウハンドルがとれました。

皆さんのおかげで、とても快適な環境を手にすることができました。
本当にありがとうございました。あと、AutoHotkeyというすばらしいソフトを作
ってくれた作者さんにも、感謝感激です。
2220:04/10/22 14:04 ID:???
>>21
解決おめでとう。
けどウチだと、DetectHiddenWindows, On なしじゃIMEのCLASS取得できないや。
AutoHotkeyってそういうとこ、環境(?)に左右されやすいのかなぁ?
最近2000からXPに移ったんだけど、一部のスクリプトの挙動がおかしくなったし。

ウィンドウの情報を取得するスクリプトあぷろだにあげてみますた。
http://lukewarm.s41.xrea.com/AutoHotkey/up/file/002.zip
2318:04/10/22 16:57 ID:???
>>19
レスどうもです。自分で試した範囲ではOKぽかったんだけど環境依存とか
あるとアレなので質問してみました。$省略しても平気そうですね。
#InstallMouseHookはマウスホットキーがない場合でもフックするって意味なのかな。

>>22
試してみますた、うちのIME Classはどうも WXGIME らしい、分かりやすいこと(^^;
xyzzyはやはり取れなかった。Winspecterでも駄目だったのでまぁ諦めてるけど
24unnamed.ahk:04/12/04 16:38 ID:icBeYTdM
はじめまして!質問します。
無変換を押しながらaを押すと、Escを発動させる
などという処理は可能でしょうか?できればサンプル記述お願いします。
25unnamed.ahk:04/12/04 17:34 ID:???
OSくらい書け
2624:04/12/04 19:42 ID:icBeYTdM
WindowsXP Pro SP2です。
AutoHotKeyは 1.0.23 (現時点での最新)です。
loop文?みたいなのを使用して監視して処理するのかまたは
Ctrlキーみたいに簡単な記述でできるのでしょうか?
27unnamed.ahk:04/12/04 20:05 ID:???
vk1Dsc07B & a::Send,{Esc}
2824:04/12/04 20:41 ID:sGPTSJAs
>>27
できました。ありがとうございます。
29unnamed.ahk:04/12/04 22:58 ID:???
スレ趣向とは関係ないけど>24がどういうシチュエーションでそれを使うのかが気になる
…キーボードがバカになってESCキーが使えなくなったのかな?
3024:04/12/05 00:38 ID:???
最近KeyExtentionを導入したのですが、これだと半角/全角とTabキーを別のキーに設定できなくて。
(デフォルトでしか使ってないから知らないだけかもしれんが)。

ちなみに、普段は親指ひゅんQを使ってます。

親指ひゅんQも長く使ってきて不満が出てきたし、これを機会に1つに統一しようかと思って。
あとは昔Dvorak配列練習してたのを思い出したんで、英語はDvorak,日本語は親指シフト、その他よく押すキーは変換キー + 押しやすいキー
の最強環境を構築するつもりです。Alt + Shiftの言語切り替えは遅いしね。

XPになってからコントロールパネルの詳細テキストサービスoFFにしないとWebの入力フォームでは普通のかな入力になるんで困ってて。
でもoffにするとIMEバーをタスクバーに入れられなくなし、XPのVisualスタイルでもなぜかIMEバーだけクラシック。これはXP SP2 で修正されているかと思っていたが、直ってなかった。
そうするとnamazuさんの質問に参考にすることになりそう

ちなみに今は、iをcに割り当て、cをjに割り当てるとiを押したときにjが出力されるんで、
回避方法を考えているんですが、試行錯誤中です。どうすればいいですか?
31unnamed.ahk:04/12/05 00:41 ID:???
$つける
3224:04/12/05 01:11 ID:zgpq/qbk
$i::Send,c
$c::Send,j

で出来ました。ありがとうございます。
基本から躓きまくってるけど、やりがいあるね。
33unnamed.ahk:04/12/05 03:02 ID:???
!a::
Send,^c
Run,C:\Program Files\Sleipnir\Sleipnir.exe http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=%Clipboard%&btnG=Google+%8C%9F%8D%F5&lr
Return

のようにしてALT+Aで文字列を選択したものをググルようにしたのですが、
1回目はうまく出来るのですが、2回目以降、いくらやっても1回目と同じ検索文字列で検索してします。
どうすれば、よいのでしょうか?
どなたかご教授ください。
34unnamed.ahk:04/12/05 04:02 ID:???
環境ぐらい書け
うちではならなかった
35unnamed.ahk:04/12/05 06:27 ID:???
Send,^c のあと ClipWait入れてみたらどうだろう
と、テストもしないで言ってみる。
36unnamed.ahk:04/12/05 13:28 ID:???
>>34
環境は
WinxpPRO
CPU pen4-3.2
メモリ-512
です。
>>35
変わりません・・・
「AutoScriptWriter.exe」で作ったものを
saveすればよろしいのですよね?
37unnamed.ahk:04/12/05 22:01 ID:???
ここでAutoScriptWriterについての話題は見たことないし、普通は自分でスクリプト書いてると思うが
!a::
Clipboard=
ClipWait,0.5
Send,^c
ClipWait,0.5
Msgbox,%Clipboard% ; ※クリップボード内容確認用
If ErrorLevel = 0
{
Run,C:\Program Files\Sleipnir\Sleipnir.exe http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=%Clipboard%&btnG=Google+%8C%9F%8D%F5&lr
}
Return

でどう? もしクリップボードが書き換わってるのに検索文字列が変わらないのなら
起動パラメータを疑ってみる。起動していない状態からと起動中で動作が変わったりしない?
自分プニル使いじゃないのでよく知らんのだけど
38unnamed.ahk:05/01/10 22:17 ID:4NzjcJDI
先輩方に質問です
マウスの操作のみのブロックは出来ませんでしょうか?
手元のタッチパッドに触れて知らぬ間に段落がかわってたりするので
文章入力中のマウス移動をブロックしたいのです
BlockInputだとキーボードまでロックされてしまいます
39unnamed.ahk:05/01/11 21:42 ID:???
タッチパッドってノートパソコンなんかについてるやつだっけか?
↓みたいにやってみたんだけどどうよ?

Hotkey, LButton, off
Hotkey, RButton, off
Hotkey, MButton, off


~Ctrl::
If A_PriorHotkey <> ~Ctrl
Return
If A_TimeSincePriorHotkey > 500
Return

Input, InputKey, T0.5 V, {LCtrl}{RCtrl}
If ErrorLevel Not Contains Control
Return

If TouchPad <> off
{
Hotkey, LButton, on
Hotkey, RButton, on
Hotkey, MButton, on
TouchPad = off
}
Else
{
Hotkey, LButton, off
Hotkey, RButton, off
Hotkey, MButton, off
TouchPad =
}
Return

LButton::
RButton::
MButton::
Return

^Esc::ExitApp

Ctrlキーをトリプルクリックで、マウスのボタン有効/無効トグル

Ctrlトリプルクリックじゃなくしたい場合は、
~Ctrl:: から If TouchPad がある行の前まで削除して好きなキーで書き直せばok
If TouchPad の行の前に有効/無効が変化したってことを表すように
Msgboxかなんかで知らせるか、音鳴らしたりすれば使いやすいかも。

Hotkeyコマンドって初めに使うときは、ラベル指定でonになるのに、
offにした後だとラベル指定でonにならないのな。ちょっと使いにくい気がするんだが...。
4038:05/01/11 22:05 ID:???
お返事ありがとうございます。動作確認いたしました
うまいこと動いております
マウス移動も抑制できればなおいいのですが。。
今思いついたのですが、デバイスマネージャから
マウスドライバを無効にすればいいですね
今手作業でやってみましたがうまくいきましたので
なんとか自動で出来るスクリプトを作ってみます
根本的に出来るのかどうかがわかりませんが。。
41unnamed.ahk:05/01/15 17:54 ID:???
投稿スレの34です
36さん返答ありがとうございました
投稿スレの34です
%%のなかに%%を使う方法がやっとわかりました
10個あったサブルーチンも一個になり全体で500kバイトほど減らせました
組み込み変数にこんな便利なものがあったのは知りませんでした
42namazu:05/01/16 00:16 ID:???
AutoHotkey 1.0.25(XP SP2)で、
以下のようなスクリプトをAutoHotkey.iniに書いてF1を押しますと、

F1::
test =
test = %test% inu
test = %test% saru
MsgBox, %test%
return

当然ながら、表示は、"inu saru"なんだけど、もう一度F1を
おしてみると、なぜか"inu"になってしまいます。これって
AutoHotkeyのバグじゃないですかね?

下記のように書くと、何度やっても"inu saru"なので、

F2::
test =
test := test " inu"
test := test " saru"
MsgBox, %test%
return

1.0.25以降は、この新スタイルに移行しろ、ということでしょうか。
ちょっと困っちゃいますね。
43unnamed.ahk:05/01/16 06:28 ID:???
>>42
%test%とinuの間のスペースなくせば2回目以降もokなのと、
AutoTrim, off入れれば、スペース入れてても問題ないんで、バグっぽいね。
・・・ってことで、本家に報告ガンガレ!
でもこれって、AHKver1.0.25より前なら大丈夫だったのかな?
実は前からAutoTrimにはちょっと不安があったんだよなぁ・・・
44namazu:05/01/16 16:03 ID:???
>>43
AHKver1.0.24以前なら、問題ありませんでした。
そういうことで、本家のForumのBug Reportに報告しておきました。
スペースをなくすとOKという情報はありがとうございました。
とりあえず、それでしのいでおこうと思います。
45unnamed.ahk:05/01/16 23:26 ID:???
ダブルクリックとトリプルクリックで違う動作をさせるにはどうすればいいでしょうか?
トリプルクリック事態は出来るのですが、その前にダブルクリックが動作してしまいます
指定時間に何回キーが押されたかカウントできればいけそうなのですが。。
a::
Input , OutputVar, t0.5
if OutputVar=a
msgbox,2
if OutputVar=aa
msgbox,3
return
(常駐してキーボードが効かなくなるので注意して下さい)
通常キーならこんなんで出来るのに、マウスボタンやCTRLでは出来ないのです
46namazu:05/01/17 00:32 ID:???
>>44
作者のChrisさんがバグを解決してくれたようです。
>>43さんが指摘される通り、AutoTrim周りのバグだったようです。
バージョンは1.0.25のままですが、現在のDownloadのページは、日付が1/16になっており、
現在のAHK本体を落としてinstallすれば、>>42の問題はでません。
よかったよかった。AHKのバグ出しに貢献できて光栄であります。
47unnamed.ahk:05/01/17 18:02 ID:???
>>45
あんまり見栄えのする書き方じゃないけど、一応↓ので出来ると思う。

LButton::
If A_PriorHotkey <> LButton
{
LClick = 1
Return
}
If A_TimeSincePriorHotkey > 300
{
LClick = 1
Return
}
LClick ++
If LClick = 2
SetTimer, DoubleClickCheck, 10
Else If LClick = 3
{
SetTimer, DoubleClickCheck, off
MsgBox, 3 Click
LClick = 0
}
Return

DoubleClickCheck:
If A_TimeSinceThisHotkey < 300
Return
SetTimer, DoubleClickCheck, off
Msgbox, 2 Click
LClick = 0
Return

^ESC::ExitApp

とりあえず問題なく動いたけど、LClick >= 4を書いた方が安心かも。
ダブルクリックの判定は余裕だから、トリプルでも楽だと思ってたんだけど、
見づらいし、応用のききにくい書き方になってしまった。
だれかもっといい方法あったら教えてくれぃ。

>>46
本家書き込み乙。
それにしても、Chris氏は対応早いな。
48unnamed.ahk:05/01/18 23:54 ID:???
スクリプトの書き方で質問です。ifを良く使いますがelseがうまくつかえません

if a=1
{
msgbox,1だよ
}
else
msgbox,空だよ
return

と書くのが普通かと思いますが、ifが重なったりloopが入ったりするとelseのとこでよく失敗します

if a=1
{
msgbox,1だよ
return
}
msgbox,空だよ
return

私はこう書いてるのですが、これはイレギュラーなんでしょうか?
49unnamed.ahk:05/01/19 01:41 ID:???
>>48
この2例だと、どっちもエラーは起こらないし、特におかしいところはないと思う。
あえてつっこむなら、最初の例の方はカッコ { } なしでもokってのと、
『空だよ』じゃなくて、『1以外だよ』・・・まぁそんなことは分かってると思うがw
おそらくカッコの付け方の問題のような気がするんだけど、よく失敗するっていうのが
どういう失敗だか分からないんで、なんとも説明のしようがない。失敗例を説明してくれ。
50unnamed.ahk:05/01/19 08:02 ID:???
>>48
上下共同じ動作を期待しているのならNGだと思う
下の例、else書かなかったら Not時の条件とは見なされないでそ

a=1のときだけ{ }内を処理し、その下はaの中がどうだろうと必ず実行される
51unnamed.ahk:05/01/19 08:04 ID:???
スマン{ }内のreturn見落としてた orz
5248:05/01/19 18:40 ID:???
>>49
>>50
失敗例としましては、キーアサインを変更中、leftなんかはやたらifwinactiveが並びます。
こういうときはelseがどこにかかるかわけわからなくなってエラーとなります
無理にelse使う必要がなければ、なるたけ使わない方向で行こうと思います
返答ありがとうございました
53namazu:05/01/19 21:58 ID:???
遅いレスになりましたが、トリプルクリックの話です。
>>47
時間を見るのはタイマーだけでいいかな?と思い、以下のように
してみました。少しシンプルになったかと思いますが、どうでしょう?

LButton::
 LB_cnt += 1
 SetTimer, LB_TimeOut, 300

 if LB_cnt = 1 ; 最初(シングル)
 {
  ;シングルクリック
 }

 if LB_cnt = 4 ; 最後(クアッド)
 {
  MsgBox, クアッドクリック
 }

return

LB_TimeOut:
 SetTimer, LB_TimeOut, Off

 if LB_cnt = 2 ; 真ん中1(ダブル)
 {
  MsgBox, ダブルクリック
 }

 if LB_cnt = 3 ; 真ん中2(トリプル)
 {
  MsgBox, トリプルクリック
 }

 LB_cnt = 0
return

サンプルとして、4回で最後にしていますが、もちろん、
5回、6回...いくらでもできます。
54unnamed.ahk:05/01/20 20:01 ID:???
Transformわかりにくいのでビット演算子を使いたいのだが、いまいちようわからん…

var1 = 0x00000001
var2 := var1 | 0x00000010
if var2 = 0x00000011
    ans = true
else
    ans = false

if var2 == 0x00000011
    ans2 = true
else
    ans2 = false
msgbox, var1=%var1% var2=%var2% ans=%ans% ans2=%ans2%


var1=0x00000001 var2=0x00000011 ans=true ans2=true
期待した答えは↑だったんだけど

var1=0x00000001 var2=17 ans=true ans2=false
↑が帰ってくる。 比較の = と == って同じじゃないのかな
5554:05/01/20 21:43 ID:???
質問スレで質問する口調じゃないですねすみません
つかぶっちゃけ誤爆した。2ちゃんに書込むつもりだったのに… orz
ちなみにバージョンは 1.0.25.05
56unnamed.ahk:05/01/20 22:26 ID:???
>>54
式の比較は比較式を()で囲みやがれ
それじゃ「var2」変数と「= 0x00000011」の比較になるだろうが
57unnamed.ahk:05/01/20 22:53 ID:???
>>56
すんません完全に失念してました。

if (var2 == 0x00000011)
    ans2 = true

で true返ってきました。ありがとうございます。
58unnamed.ahk:05/01/21 22:58 ID:???
>>53
自分が書いた>>47よりシンプル&分かりやすくなってていいね。
マルチプル(2回以上の)クリック時に、シングルクリックを発生させたくない場合でも、
シングルの判定と処理をSettimerの方に移すだけでいいんで、応用もききやすそう。
その場合は、最も頻繁に使うであろうシングルクリックもタイムアウトを待つことになっちゃうけど、
LButton・RButtonのメインボタン以外で使うことにすればいいし、
タイムアウト時間を変更したりすればそんなに気にならないと思うし。

>>54
Var2の値は16進で返ってこないのね。SetFormat使えばいいだけなんだけど、
桁数合わせるのが面倒なんで、SetFormat, Floatみたいに
桁数揃える命令も追加されたら便利かも。あと、

Var := 0.2 + 0.3
Msgbox, %Var%

を実行させると、0.500000って出るんだけど、両方とも小数点以下の桁数同じなんだし、
こういう場合に自動で桁数揃えてくれるような設定が出来ればいいと思うんだが。
16進数も小数の計算もあんまり使わないんでよく分からないんだけど、
そっちの方が便利ってことなのかね?まぁ、使ってないだけに特別困ってるわけじゃないんだけど。
59unnamed.ahk:05/01/23 18:02 ID:???
スキャンコード無しで仮想キーのみ発生させる10keyパッドで、
スキャンコードも含めてキーストロークを発生させるために使っています。

vk61sc04F::Send,{Numpad1}

これが、できません。
同じキーへのSendができないのはどうにもならないものでしょうか。

現状このように代用してしのいでいます。
vk61sc04F::Send,{NumpadEnd}
60unnamed.ahk:05/01/23 21:01 ID:???
だから環境を書けっつーに
どうできないのか知らんが、ループに陥るってなら

$vk61sc04F::Send,{Numpad1}
でやってみたら?
61unnamed.ahk:05/01/23 21:36 ID:???
なるほど、ループになるから禁止されてるみたいですね。
おかげさまで無事設定できました。ありがとう。
62unnamed.ahk:05/01/27 11:27 ID:ylUkJylc
if ( hoge )
{
 〜
}
else if ( hage )
{
 〜
}
else
{
 〜
}
って他の言語と等価?なんか怪しい。書き方が悪いのかもしれないけど。

RegExp, OutputVar, InputVar, pattern [, option] が欲しい…
63unnamed.ahk:05/01/27 19:43 ID:???
他の言語云々いうほど色々言語使えるわけじゃないけど、AutoHotkeyの場合、
If ( hoge ) は、hogeが数値として0(0.00や0x00などを含む)の場合と、
null(空)の場合以外はtrueだったと思うんで、
If ( hoge<>0 && hoge<>"" )と同じ意味になるかと。

RegExは確かに欲しいね。ワイルドカード云々って話が本家フォーラムで出てるんで、
しょぼいRegExpコマンドにならないかそれが心配。
64unnamed.ahk:05/01/29 22:57 ID:???
メニューを使ったスクリプトを作ってるんですが、メニュー表示中にはホットキーを拾ってくれないので困ってます
メニュー表示中に割り込む方法を教えてください
Thread, Priorityコマンドあたりを試してみましたがやはりうまくいきません
下の場合、leftでTEST1表示。rightでTEST2表示という風にメニューのページを切り替えたいのですがTEST2が出てきません
ESCを手動で押してやるとTEST2、TEST1を切り替えできます
何か解決法がありましたらよろしくお願いします

Menu, MenuName1, add, TEST1,test
Menu, MenuName2, add, TEST2,test
return

left::
send,{esc}
Menu, MenuName1,show
return

right::
send,{esc}
Menu, MenuName2,show
return

test:
return
65unnamed.ahk:05/01/30 03:26 ID:???
メニュー表示中は制御が完全にAutohotkey側に取られてしまって
項目選択かキャンセルするまで戻ってこないみたい。

将来的にはこの辺も弄れるようになると嬉しいんだけどな
Shorter LauncherみたいにShift,Ctrl押下中は別動作ってのをやりたいし
アイコンとかも表示したかったり…GUI使えって話になりそうだけど
6664:05/01/30 22:00 ID:???
>>65
お返事ありがとうございます。現状では無理っぽいのかな。
別スクリプトでキー操作だけ担当させればなんとか動いたけどもあまりにスマートじゃないんで、GUIで作り直してしまいました
メニューのほうが見た目がスッキリしてて好きなんだけどなぁ
67unnamed.ahk:05/01/30 23:38 ID:+266I1kg
>>65
キーフック入れて、 GetKeyState でキー押下状態取得して分岐すればいいんじゃないの?
デフォで色々出来るようになると、コマンド数が大変なことになりそうな言語仕様なのが怖い。

VBScript, JScript(DMonkey含む), perl(script)等、色々スクリプト触れてきたけど、
AHKはユーザが自動or半自動でやりたいことを割合簡単に実現できるって点でかなり優秀かとおもう。

JScriptはブラウザと連携したり、ActiveX呼び出しでかなり色々出来るけど、
テキストストリーム開いてって読んで書いてって思った以上にめんどいし、
perlは強力な正規表現とテキスト処理が簡単なのが魅力だけど、GUI操作は…

やっぱ正規表現は欲しいなぁ。 [ ] 内のテキストを得るサブルーチンとかいちいち作るのが面倒だ。

(´-`).。oO(Janeで書き込めないのが不便だなぁ
68unnamed.ahk:05/01/31 00:03 ID:???
書き込めるよ
69unnamed.ahk:05/01/31 00:26 ID:???
>>67
本当だ、メニュー選択後のGetKeyStateは有効だね
Shoterの "Shift押下中はメニュー消さないで実行"をまねしようとして挫折したんだけど
通常はアプリ起動して、Ctrl押下時はそのフォルダを開く…みたいな動作ならOKみたい。
70unnamed.ahk:05/01/31 00:27 ID:???
>(´-`).。oO(Janeで書き込めないのが不便だなぁ
外部板登録汁
71unnamed.ahk:05/02/06 18:04 ID:dRQ1z0Do
デバッグがしんどいんでOutputDebugString
使いたいんですけど何か方法はありませんか?
72unnamed.ahk:05/02/06 18:26 ID:???
>>71
AutoHotkey.exeのソースに手を加えてChrisたんに送る
73unnamed.ahk:05/03/04 15:56 ID:7rPnHNyg
Guiコマンドなんですけど
DropDownList ComboBox ListBox で |を含む項目を作る方法って
何かありますでしょうか?
関係あるかわかんないけど環境はNT系です
74unnamed.ahk:05/03/04 21:07 ID:2ACWIJok
` でエスケープ
7573:05/03/04 21:59 ID:???
えっと後出しですみませんが、それは事前に試してみてまして、
どうもダメなようなんです。 Autohotkey Version 1.0.29.00

Gui,Add,ListBox ,,aaa|bbb`|ccc|ddd|ee
Gui,Show
return

GuiEscape:
ExitApp

Loop,Parseみたい区切り文字を指定できるといいんですけどね
`aとかを指定しとけばテキスト扱うのには困らないし。
76unnamed.ahk:05/03/04 23:04 ID:2ACWIJok
ホンマや。すまん分からんわ。
7773:05/03/09 22:42 ID:???
レス遅れてすみません。本家で聞いてみたところ ToDoになってるみたいです。
現状ではControl Addで対応可能みたいです。

Gui,Add,ListBox
Gui,Show

data="aaa","bb|b","ccc","ddd"
Loop,Parse,data,CSV
  Control,Add,%A_LoopField% ,ListBox1,ahk_class AutoHotkeyGUI

return

GuiEscape:
ExitApp
78unnamed.ahk:05/03/25 04:03 ID:HxERFtyU
AltTabの機能をSuspend時にも有効にしたいのですが、
何か良い方法はありませんか?他の機能であれば、Suspend,Permit 書いとけば大丈夫なんですが、
AltTabは無理でした。
79unnamed.ahk:05/03/25 05:44 ID:???
Suspendの状態でホットキーを使いたいという意図がよくわからん
何かの制御中に割込まれたくないのなら スレッド制御するとか
ホットキーラベルの頭に$つけるとかで回避できたりしないか?

どうしても一時的に一部のホットキーを一括で無効にしたいなら ↓のような
サブルーチ作ってGosubしたらどうか

hotkey_Toggle:
  if hotkey_t_flg <> 1
  {
     hotkey_t_flg = 1
     Gosub,hotkey_Enabled
  }
  else
  {
     hotkey_t_flg = 0
     Gosub,hotkey_Disabled
  }
return

hotkey_Enabled:
  Hotkey,key名,ON
  Hotkey,key名,ON
   :
  Hotkey,key名,ON
  Hotkey,key名,ON
return

hotkey_Disabled:
  Hotkey,key名,OFF
   :
return
8078:05/03/26 01:26 ID:ws3lbNbI
親指ひゅんQというプログラムでNicola入力してるんですが、
IMEのON/OFFを検知した後、
OFFならDvorakで英字入力、ONならそのキー自身を送信するようにしてたんですが、
ホットキーを2個くらい定義したら日本語入力は意図しない変な文字(全角*とか色々)が出力されるんです。
そこで仕方なく一部キーをSuspendしてたらAltTabは使えなかった。

というわけで、皆さんが苦労しているIMEのON/OFFを検知プログラムアップしときますね。
ただし、Cでコンパイルした外部ファイルですが。
>>79 スクリプトありがとうございます。試してみます。
81unnamed.ahk:05/04/03 14:39 ID:???
ブラウザの終了を監視し
終了と同時にあるアプリケーションを一緒に終了したいのですが
どうやればいいのでしょうか?
82unnamed.ahk:05/04/03 17:42 ID:???
Process
83unnamed.ahk:05/04/03 17:50 ID:???
ブラウザがMDIかSDIかで監視の方法は変わるし
連動アプリがタスクトレイ収納型かどうかで終了のさせ方も変わる。
要は環境書かなきゃ答えようがない
84unnamed.ahk:05/04/03 19:08 ID:???
>>82
出来ました。
ありがとうございました。
85unnamed.ahk:05/04/09 15:26 ID:???
このソフトは、DirectInputアプリ(ゲーム)にて、
マウスの拡張ボタン(4、5ボタン目)を認識させられますか?
X Wheel NTが仕様上駄目なので、こちらはどうなのでしょうか。
あと、アプリ毎に設定変更も可能でしょうか。
86unnamed.ahk:05/04/09 15:38 ID:uuYWhC6A
色々ためした結果、確証はないけど駄目っぽい気がする。モノにもよるけど。
キーボードはいけるけど、MouseとJoystickはなんか挙動がおかしい感じ。
ホットキーに割り当ててマクロ的な動作させる分には問題ないんだけどね。

他の人フォロー、ツッコミよろ。
87unnamed.ahk:05/04/25 04:30 ID:HxERFtyU
qと入力したときはa,
dqと入力したときはzを出力したい場合、どのように記述すればよいですか?
以下では駄目でした。

$q::
Send,a
Return

$d::
Input, UserInput, V T1 L1 C, {Enter}{Esc}, q
If UserInput = q
Send, {BS}z

Return
88unnamed.ahk:05/04/25 15:42 ID:???
>>87
$がなければ動きましたよ
89unnamed.ahk:05/04/25 20:08 ID:HxERFtyU
>>88 87の例ではそれで出来ますね。
書き込み用にかなり削ったものだったのでそれでも大丈夫だったようです。
もう少し増やした以下の例ではだめでした。実際はもっと多いです。
qと入力したときはso,wと入力したときはko,sと入力したときはka,
dqと入力したときはmya,dwと入力したときはgya,
dsと入力したときはpi,dpと入力したときはwo,を出力したい場合、どのように記述すればよいですか?
以下では駄目でした。

q::
Send,so
Return

w::
Send,ko
Return

s::
Send,ka
Return

d::
Input, UserInput, V T1 L1 C, {Enter}{Esc}, q,w,s,k,o,m,g,y,a,p,i
If UserInput = q
Send, {BS}myo
Else If UserInput = w
Send, {BS}gya
Else If UserInput = s
Send, {BS}pi
Else If UserInput = p
Send, {BS}wo

Return
90unnamed.ahk:05/04/25 22:20 ID:???
>>89
何らかの日本語入力方法のようにみえるなぁ。
窓使いの憂鬱でkeymap使ったほうが良さそうな感じ。
91unnamed.ahk:05/04/26 00:19 ID:ws3lbNbI
窓使いの憂鬱は出先のPCで気軽に使えないというのが気になる。
hishiと組み合わせて目的は達成してるけど、常駐ソフト減らしたいので何とかAutoHotKeyのみで出来ないものか
92unnamed.ahk:05/04/27 13:42 ID:???
#UseHook On
InputLock = 0
!#S::Suspend, On

q::
    if InputLock = 0
        Send,so
    else
        Send,q
Return

w::
    if InputLock = 0
        Send,ko
    else
        Send,w
Return

s::
    if InputLock = 0
        Send,ka
    else
        Send,s
Return

d::
InputLock = 1
Input, UserInput, L1 C, {Esc}, q,w,s,k,o,m,g,y,a,p,i
    If UserInput = q
        Send, myo
    If UserInput = w
        Send, gya
    If UserInput = s
        Send, pi
    If UserInput = p
        Send, wo
InputLock = 0
return

>>89できたぞよ。結構手こずったぜ。これぐらいはAHKで出来るはずだろうと、意地になってしまったよ。
93unnamed.ahk:05/04/27 16:00 ID:???
どうもはじめまして、スクリプト投稿スレの15さんのがバージョンの違いのせいか
動いてくれず、15さんのを参考に同じ動作をするように作ってみたのですが
なかなか動いてくれません。OSはXP SP2でAutoHotKey.iniに直接書いてます。
根本的なとこから間違っているのでしょうか、間違いを指摘してくださいお願いします。

SetTimer,OverWindowCheck,1000

OverWindowCheck:
WinGet,winstatus,MinMax,A
if (winstatus == 0)

WinGetPos,win_x,win_y,win_width,,A

r_limit := 1024 - 35
l_limit := -%win_width% + 100
t_limit := 30
b_limit := 768 - 10

if (%r_limit% <= %win_x%) WinMove, A,, %r_limit% ; 右
if (%l_limit% >= %win_x%) WinMove, A,, %l_limit% ; 左
if (%t_limit% >= %win_y%) WinMove, A,,, %t_limit% ; 上
if (%b_limit% <= %win_y%) WinMove, A,,, %b_limit% ; 下

return
94unnamed.ahk:05/04/27 16:06 ID:???
if ( 式 ) の場合、%〜%のようにしなくても変数展開は行われる。
95unnamed.ahk:05/04/27 16:28 ID:???
うげ、途中で投稿しちまった
なんかよく見ると色々ツッコミ所があるから箇条書きにするか。

1. AutoExcuteブロックがどこまでか分からない。 -> return をSetTImerのあとに入れる
2. SetTimerで常駐させるなら #Persistent を先頭に入れて常駐させることを明示
3. 1と2の結果により、先頭から順にサブルーチンラベルもそのままに実行してスクリプトは終了する
4. If コマンドに引き続き同じ行に真になったときの処理を書くときは、 「,」で区切る
5. If(〜)が真のとき実行されるのは次の1コマンドもしくは1ブロック
 つまり、 「if (winstatus == 0)」の所は真偽判定して結局何もしていない
6. 下4つのIfの所は、x, yそれぞれ1つめの条件が真になれば、
  もう一つは条件判定する必要がないので2,4番目は else if がいい。
7. if ( 式 ) の場合、%〜%のようにしなくても変数展開は行われる。

結論、もうちょっとマニュアルを読んだ方がいい。
96unnamed.ahk:05/04/27 16:33 ID:???
あぁ、まだあるな
8. var := 式 の場合、%〜%のようには基本的にしなくていい。(変数展開が分かってるなら別)
97unnamed.ahk:05/04/27 19:55 ID:???
いきなり4方向じゃなく、まず上下動くようにしようと思います。

SetTimer,OverWindowCheck,2000
return

OverWindowCheck:
WinGet,winstatus,MinMax,A
if(winstatus == 0)
{
WinGetPos,,win_y,,,A

t_limit=30
b_limit=A_ScreenHeight - 10

if(t_limit > win_y) ; 上
{
WinMove, A,,, %t_limit%
}
else if(b_limit < win_y) ; 下
{
WinMove, A,,, %b_limit%
}
}
return

#Persistentはahkじゃなく、iniファイルに書けば必要ないんですよね。
指摘された事を一応考慮したつもりなのですが、動作させるにはあと何が必要でしょうか。
また、投稿スレの>>15さんのが動かないのは正常ですか?
98投稿スレ15:05/04/27 22:36 ID:???
>>97
>また、投稿スレの>>15さんのが動かないのは正常ですか?
Ver.1.0.25で若干仕様変更があったので今のahkバージョンだと動作しないです。
投稿スレにも貼ったけど、修正してマルチモニタで動作確認済みのものを
あぷろだの方に上げたので良かったら、ドゾ
ttp://lukewarm.s101.xrea.com/up/file/023.zip

>#Persistentはahkじゃなく、iniファイルに書けば必要ないんですよね。
ホットキーの指定がない場合はiniでもいるよ、多分
9993,97:05/04/28 03:18 ID:???
>>98
レスありがとうです、スクリプト参考にさせてもらいます。

iniファイルの下の方に書いてやってたのですが
どうやらiniファイルの書く位置を変えて一番上に移したら、あっさり動いてくれました。
ahkにして#Includeで呼び出す場合も、上にコマンドが何も無い場所に置かないと動いてくれませんでした。
それによる他のHotkeyなどのコマンドへの影響は無いのですが、
SetTimerを使う場合は上に置かないと動かないという様な仕様でもあるのでしょうか?
それとも単純に私の書いたスクリプトの書式がおかしいからでしょうか。

あと#Persistentはahk単体で動かした場合以外は無くても動くみたいです
100unnamed.ahk:05/04/28 07:54 ID:???
http://lukewarm.s101.xrea.com/Scripts.htm
スクリプトの起動とAuto-executeセクションの項を嫁

今サイト見直して思ったんだけど上のページ
関数とかの説明追加でAuto-execute後ろのほうに来てるから
確かに見つけにくくなってるね
でも>95でも書いててくれてるんだけど
10189:05/04/28 17:16 ID:rR3b5PsE
>>92
ありがとうございます。確かに出来ました。
キーを増やしていろいろ試してみます。
#UseHook On なんて使ったこと無かったよ
102unnamed.ahk:05/05/17 19:13 ID:xFRY65zw
うーん、lpStringにNull値を設定して上位に渡すにはどうすれば良いのでしょうか
VBだと空変数を渡すと、クラスもタイトルも見ないで Zオーダートップの
コントロールをかえしてくれるんだけど...
ttp://www.geocities.jp/winapi_database/Window/Change/FindWindow.html
ttp://www.geocities.jp/winapi_database/Window/Change/FindWindowEx.html

#7::
WinGet,hParentWnd,ID,A
lpClassName =
lpWindowName =
max1:=VarSetCapacity(lpClassName,0)
max2:=VarSetCapacity(lpWindowName,0)

hChildWnd := DllCall("FindWindowEx","UInt",pwhd,"Uint",0,"Str",lpClassName,"Str",lpWindowName,"UInt")

msgbox,%hChildWnd%
return
103unnamed.ahk:05/05/17 19:43 ID:???
>>102
Intで0を送ればいいんじゃない
104102:05/05/17 20:45 ID:???
>>103
lpClassName = 0 てのはやってみたんだけど、型をIntにするのは気がつかなかった orz
↓で無事取得できました。ありがとうございます。
hChildWnd := DllCall("FindWindowEx","UInt",pwhd,"Uint",0,"Int",0,"Int",0,"UInt")
105unnamed.ahk:05/05/18 13:02 ID:???
Runでプロセスを起動するときの引数に,を使用したいのですが、
,はRunコマンドで引数の区切りをして使用されている為使用できません。
これを回避する方法はありますか?

やりたいこと
#z::Run,D:\ddwin.exe 1,2,3,4,5
106unnamed.ahk:05/05/18 14:20 ID:???
エスケープ
107105:05/05/19 00:39 ID:/Keiu9rM
自己解決

tmpZ_Arg = 1,2,3,4,5
#z::Run,D:\ddwin.exe %tmpZ_Arg%

これでいけました^^
108unnamed.ahk:05/05/19 01:35 ID:???
>>107
まぁそういう方法もあるけど、>106はおまいさんに対する回答だと思うのだが。

具体的に書くと
#z::Run,D:\ddwin.exe 1`,2`,3`,4`,5
109105:05/05/19 10:56 ID:LObLxA/Y
>>108
なんと!!そうだったんですか。気が付きませんでした。
106さんありがとう
110unnamed.ahk:05/05/20 14:53 ID:???
マウスカーソルのアイコンを変えたいんだけど、autohotkeytから出来ます?
特定のアプリ上ででは無く、コントロールパネルの
マウスのプロパティから変えた時と同じように、完全に変えたいんだけど
ちなみにOSはXP
111110:05/05/22 01:30 ID:hYT0tsys
質問は2chのスレで解決しました(マルチじゃないyo)
一応教えてもらったのを貼ります

#1::  SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoge.cur"),32512)
#2::  SetSystemCursor(LoadCursorFromFile("C:\WINDOWS\Cursors\hoga.cur"),32512)

LoadCursorFromFile(lpFileName)
{ ; カーソルファイルからマウスカーソルを作成する
  return DllCall("LoadCursorFromFile",Str, lpFileName, Int)
}
SetSystemCursor(hCur,id)
{ ;システムカーソルを変更する
  return DllCall("SetSystemCursor", Uint,hCur, Int,id ,Int)
}
112unnamed.ahk:05/06/15 02:10 ID:io2Wdpo6
初めまして

便利なソフトを紹介して下さってありがとうございます。
日本語リファレンスを多読させてもらってます。

一つ疑問なのですが

/* */
msgbox ,test

皆さんの環境ではこのスクリプトを作ったらmsgboxが出てきますか?
私の環境では何も実行されません。
どうも、/*コメントが上手くコンパイルされてない気がします。

私だけでしょうか? ちなみに、XPで秀丸エディターです。
既出ならば、スレ汚しスイマセン
113112:05/06/15 02:19 ID:io2Wdpo6
ついでに

string = abcdefg /* 初期化 */

などのように変数に値を代入し、それについてコメントを記入すると
string の値が abcdefg /* 初期化 */ になってしまいます。
114unnamed.ahk:05/06/15 06:28 ID:0VbSCvr6
/* */については挙動が微妙だから;を使ったほうが無難…
115unnamed.ahk:05/06/16 10:32 ID:???
/* comment */ とかだと確かにおかしくなる。どうやら /* と */ がそれぞれ行頭にないと
(つまり複数行コメンじゃないと)認識くれないみたい。
/*
memo
memomemo
*/
↑のような書き方ならOK
一時的にスキップしたいソースをコメントするときは便利なんだがな
116112:05/06/17 00:36 ID:F9sdiZr2
>>115
その書き方だと大丈夫だとは気づきませんでした〜
117unnamed.ahk:05/06/17 14:10 ID:???
>>115
ほうほう、なるほどね。
118unnamed.ahk:05/06/20 23:42 ID:mN9IbqMI
ローカル関数内から
複数のグローバル変数 string1 〜 string20
にアクセスしたいときは

global string1,string2 ・・・ ,string20

の様に全ての変数名を羅列して定義するしかないのでしょうか

Loop 20
{
global string%a_index%
}

もしくは

Loop 20
{
temp = string%a_index%
global %temp%
}

上記のような定義の仕方ではエラーになります。
これだと配列が無いことが非常に不便な気がします。
119unnamed.ahk:05/06/21 00:34 ID:???
globalをデフォルトにする
120118:05/06/21 21:16 ID:m1a3+TY2
な〜るほど、頭イイ!!
ってか、この場合オレが悪いねw
サンクスです >119
121unnamed.ahk:05/07/06 05:53 ID:JI6Rnr8w
一度表示したコントロールをその部分だけ再描画するにはどうしたらいいのでしょうか?
例えば、2個エディットボックスを配置して、エディット1に入力が行われたら、その内容を
エディット2にも表示させる、と言った場合です。
この場合、
エディット1のgオプションでGUI, Submitを行い
エディット1のvオプションで入力値を取得し
エディット2のtext引数に代入し
エディット2のみを再描画して表示し直したい
のですがGUI, Submitした時点でウインドウ全体が消去されてしまいます。その後、GUI, Show
で再表示すると入力値をエディット2に反映させることはできるのですが、ウインドウを消去
しないでエディット2のみ描画を更新することはできないでしょうか?
122121:05/07/06 07:22 ID:JI6Rnr8w
自レス
GuiControlでなんとかできそうですね・・・
スレ汚し すいません
123unnamed.ahk:05/09/12 18:38 ID:lSWi5zg+
ホットキーを押すたびに上の二つのウィンドウが交互にアクティ
ベイトされるようなスクリプトを組みたいのですが、アクティブ
ウィンドウのすぐ下のウィンドウタイトルをGetする方法が判り
ません。最初、
WinGetTitle, OmoteWin, A
WinGetTitle, 2BanmeWin, [なんでもHITする文字列], ,%OmoteWin%
のようにすればいいのかと思ったんですが、WinGetTitleはワイルド
カードが使えないのですね。アクティブウィンドウをWinMinimumize
してもフォーカスは移動しないみたいだし。
なんか別のやり方があるのですかね?>有識者各位
124unnamed.ahk:05/09/12 21:10 ID:w9uN3O4I
・・・うわわ、ごめん!よく考えたら目的のためにはALT+TAB発行
すれば良いだけだった(大恥)

でも、まあもし判ったら上もヨロシクお願いします。
125unnamed.ahk:05/09/13 02:21 ID:???
>>123
F12::SimpleTaskChange()

SimpleTaskChange()
{
    WinGet, activePId, PId, A
    WinGet, List, List
    Loop, %List%
    {
        hwnd := List%A_Index%
        WinGet, pId, PID, ahk_id %hwnd%
        if(pId == activePId)
            continue
        WinGetClass, className, ahk_id %hwnd%
        ; 除外クラス名の追加は、下行のコメントを外してクラス名を参照すると楽
        ; tooltip, [%className%]
        If className contains Shell_TrayWnd,CTipWnd,Indicator,Progman,tooltip
            continue
        Else
        {
            WinActivate, ahk_id %hwnd%
            break
        }
    }
}
126unnamed.ahk:05/09/13 02:27 ID:???
>>125 に追記
IE統合シェル(2K, XPでデフォルト)使ってるなら除外クラスはもっとありそう。
ReBarとか
127unnamed.ahk:05/09/14 13:49 ID:mNImviZM
回答ありがとうございます・・なるほど、WinGet, 〜, Listで
全ウィンドウのハンドルが取得できるのですね。
他の機能を利用する場合も応用できそうな機能ですね。
128unnamed.ahk:06/01/31 18:52 ID:OL7m/gtM
キーボード自体無効ってできますか?
129unnamed.ahk:06/02/01 18:27 ID:???
特殊なキーでなければ殆どのキーを無効には出来る。
全部といわれると・・・キーボードによるかな。
BlockInputとかじゃマウスも使えなくなるから困るだろうし。
いずれにしてもCtrl+Alt+Delは無効にはならないよ
当たり前だけど。

あと、多分キーボードだけ無効にするコマンドは見あたらないので、
めんどくさいかも。

キーボードの掃除とかの為にキーボード無効にするソフトとか
あるはずだからそっち使った方がいいと思う。
130unnamed.ahk:06/02/01 18:31 ID:???
キーボードだけフックした上で、スクリプトをハングアップさせてキーボードフックをせき止めてやれば、全てのキーボードが働かなくなるかも?
131unnamed.ahk:06/05/14 11:46 ID:qGfRlSJ6
[一]ホットキー[Alt & N]でメモ帳起動
[二]ホットキー[Alt & N(2回押し)]でC:\メモ帳.txtを起動するようにすべく

管理人さんの「Ctrl key double tap」を参考にスクリプト書いてみましたが
これだと[一]は問題ないのですけど
[二]でメモ帳起動とメモ帳.txt起動がダブルで実行されてしまいます。
どうすれば[Alt & N(2回押し)]だけに特定のコマンドを割り当てる事ができるのでしょうか?
WinXP HOME SP2です

LAlt & n::
if A_TickCount < %ctrldouble%
{
IfWinExist, メモ帳.txt
        {
        WinActivate
        }
    else
        {
        Run, Notepad.exe C:\メモ帳.txt
        }
ctrldouble=0
}
else
{
ctrldouble=%A_TickCount%
ctrldouble+=400
IfWinExist,ahk_class Notepad
        {
        WinActivate
        }
    else
        {
        Run, Notepad.exe
        }
}
return
132unnamed.ahk:06/05/14 16:54 ID:???
別の所で聞いてみましたので131は取り消させて頂きます。
スレ汚しすみません。
133unnamed.ahk:06/05/21 18:34 ID:???
SpaceにEnterを、SにSpaceを割り当て
SでEnterの動作にならないようにし、
ホットキーで切り替えというスクリプトを
教えて頂けないでしょうか?
134unnamed.ahk:06/05/21 19:10 ID:???
>>133
Win+1でオンオフ切り替え

#1::
    IfEqual, key, 1
    {
        key = 0
        ToolTip, Off
    }
    Else
    {
        key = 1
        ToolTip, On
    }
    Sleep, 500
    ToolTip
return
$Space::
    IfEqual, key, 1, Send, {Enter}
    Else, Send, {Space}
return
$S::
    IfEqual, key, 1, Send, {Space}
    Else, Send, s
return
135133:06/05/21 19:14 ID:???
>>134
ありがとうございます。
思い通りの動作です。
136unnamed.ahk:06/05/22 00:22 ID:xo0ZTrUo
これから試しに使ってみようと考えている者です。

単純な質問ですみませんが、ファンクション・キーの割り当て
はどのように記述するのでしょうか。 教えてください。
([Ctrl]+[Fn]でログ整理をやりたい)
137unnamed.ahk:06/05/22 00:46 ID:???
>>136
[Fn]ってノートパソコンとかの隅っこに付いてるキーのことを言ってる?
それともF1〜F12キーのことを言ってる?
前者なら不可能。
後者なら例えば下のような感じ。
これはCtrl+F1でアクティブウィンドウを最前面化したり解除したりする場合の表記。
^F1::
    WinGetClass, cls, A
    WinSet, AlwaysOnTop, TOGGLE, ahk_class %cls%
return
138136:06/05/22 16:01 ID:xo0ZTrUo
>>137
レス有難う御座います。m(__)m

説明が足らない様で、すみませんでした。
後者の[F1]〜[F12]の方です。
何種類かのサーバー・フィルターを稼動しているので
キー毎にそれぞれのログ整理が出来そうです。

有難うございます。
139unnamed.ahk:06/06/15 11:19 ID:Baf4XcN+
「タイトルバーをホイールクリック」でそのウインドウを閉じるようにしたいのですが
タイトルバーを指定する方法がわかりません。
ご教授お願いできますでしょうか。
140unnamed.ahk:06/06/15 12:29 ID:???
>>139
この辺はどうか。
ttp://d.hatena.ne.jp/eamat/20060123
141unnamed.ahk:06/06/15 13:17 ID:???
すばやいレスありがとうございます。
見てみます。
142unnamed.ahk:06/06/15 14:59 ID:???
MyScriptsにある
143unnamed.ahk:06/06/17 00:31 ID:???
MyScriptsにあるホイールリダイレクトを使用するとTerapadでマウスホイールが効かなくなるのですが、何か対処法はないでしょうか?
144unnamed.ahk:06/06/17 01:20 ID:???
VxEditorを使う
145unnamed.ahk:06/06/17 01:44 ID:???
#IfWinNotActiveを使う
146unnamed.ahk:06/06/17 07:36 ID:???
>>144-145
ありがとうございます。
ちょっと頑張ってみます
147unnamed.ahk:06/06/17 08:30 ID:???
http://lukewarm.s101.xrea.com/test/read.cgi/bbs/1146398137/11
148y^z:06/06/28 12:49 ID:4gWNrfB6
クリップボード内の式を計算して答えをクリップボードに戻す事は出来ますか?
理想はテキストを選択→ホットキー→計算して→貼り付け…です。
149unnamed.ahk:06/06/28 13:43 ID:???
できる
150unnamed.ahk:06/07/11 20:36 ID:???
全てのウィンドウの最小化と復元を
一つのキーで行うにはどうすればいいでしょうか?
151unnamed.ahk:06/07/11 21:40 ID:???
WinMinimizeAll / WinMinimizeAllUndo
152unnamed.ahk:06/07/11 21:48 ID:???
適当なキーにWIN+Dを割り当てたらOKじゃね?
153unnamed.ahk:06/07/12 08:09 ID:???
>>151
それはもう試してはみたけど
良く分からなかった。

>>152
それは盲点だった。
試してみます。
154153:06/07/12 10:07 ID:???
結局出来なかった。
>>134のと組み合わせて、
$Z::
IfEqual, key, 1, WinMinimizeAll
else, send, z
{
keywait, z
WinMinimizeAllUndo
}
return
ここまでは出来たけど進まない
誰かご教授を!
155unnamed.ahk:06/07/12 15:35 ID:???
アルファベットキーに直接割り当てるのは強引だと思う
修飾キーと組み合わせるか、使わないファンクションあたりでやってみれ
F12::
if (key == 1)
{
    WinMinimizeAll
    key = 1
}
else
{
    WinMinimizeAllUndo
    key = 0
}
あるいは
F12::Send,#d


あと、慣れないうちは行数減らすより分かりやすいコードを書くようにしたほうがいいよ
if (key == 1)
    WinMinimizeAll
else
    send, z

; そうすると↓以下を { }でくくってる意味がないことがわかるでしょ
{
    keywait, z
    WinMinimizeAllUndo
}
156unnamed.ahk:06/07/23 04:09 ID:/sjOsA3M
AutoHotkeyを使い始めてまだ1週間の初心者です。
管理人さんのScript「トレイアイコン一覧からの操作」を
大変便利に使わせていただいてます。
私はタスクトレイのシングルクリックで大半の用が足りるので、
シングルクリックを「Enter」キーに割り当てる程度のScriptの改造は
なんとか自分でできました。
が、ここで欲が出てきまして。
ふだん白い背景に黒い文字のエディタを最大化して作業しているので、
トレイアイコンの一覧が、白地に黒い文字だと見づらいときがあるのです。
リスト一覧を「黒い背景に白い文字」にする方法はないでしょうか。
Scriptの解説を読んだのですが、私にはまだ難しすぎて半分も理解できません。
どのように改造すればいいのか、アドバイスいただければ幸いです。
157unnamed.ahk:06/07/23 09:33 ID:???
Gui,Color
158156:06/07/23 10:57 ID:???
>157
ありがとうございます!
GUIの説明ページの見るべき場所がわかりました。
ついでにフォント名も変えたりして。

Gui,Color,1D3A3A,1D3A3A
Gui,Font,CFFFFFF s11,ARISAKA

に変更したら、ダークグリーンに白い文字のARISAKAになって、
見やすくなりました。
159unnamed.ahk:06/08/01 21:56 ID:p7wxrFMM
GuiのTabについてです
Gui,Addで追加後に、既存のタブの編集(タブ名の変更や削除)は可能なのでしょうか。

GuiControlの説明に、
>変更によってタブシートの数が減る場合、
とあるので削除は可能な感じはするのですが、設定項目がわかりません。
160unnamed.ahk:06/08/26 00:15 ID:lmyq5sls
このソフトウェアでマウスのサイドボタン(2つ)に
キーボードのキーをリマップすることができますか?
161unnamed.ahk:06/08/26 00:21 ID:???
>>160
できる
XButton1とXButton2に割り当てればおk
162unnamed.ahk:06/08/26 00:25 ID:lmyq5sls
>>161
ありがとうございます。
試してみます。
163unnamed.ahk:06/08/27 04:30 ID:XXQZjrJQ
ひとつのキーに、キーの押し下げ、押し下げ解除を割り付けたいのですがうまくいきません。
下のスクリプトだと押し下げることはできても、押し下げ解除が機能しません。

上手に押し下げ解除する方法はないでしょうか?

IfWinActive,ahk_class TTeraPadMainForm
{    
F11::
    GetKeyState, state, Shift
    if state = U
    Send,{Shift Down}

    else if state =D
    Send,{Shift Up}
return
}
exit
164unnamed.ahk:06/08/27 10:35 ID:???
コードから目的が読めない。何がやりたいか書いて
そのコードだと、↓のような動作になってる。
F11押下→Shift押し下げ / F11+Shift押下→Shift押し上げ

あと、IfWinActiveの使い方がおかしい。
判定文をホットキーの外に出したいなら #IfWinActive使わないと
165163.ahk:06/08/27 22:57 ID:???
>>164
レスありがとうございます。

やりたいのはスレイプニルのナビゲーションロックの改良です。
ようするに、検索結果等から、連続して新タブでページを開く機能の改良です。

上記を実行するためには、「ナビゲーションロック + shift押し下げ」
でリンクをクリックしなければなりません。

そこで F11 にナビゲーションロックを割り当て、
~F11:: から AHK でシフト押し下げと押し上げをきりかえれたらいいな、と思ったしだいです。
166unnamed.ahk:06/08/27 23:21 ID:???
スレイプニルなら、設定でナビゲートロック出来るぞ。
オプション>検索エンジンのとこ見てみ。右の方にナビゲートロックのチェックボックスあるで。
スレ違いスマソ
167unnamed.ahk:06/09/10 13:13 ID:Gs//q9kc
キーボードのzを押したらaとiがまったく同時に入力される(押される)ようにするには
どうすればいいですか
$b::send,{a}{i}とやっても出来ません、教えてください
168unnamed.ahk:06/09/11 18:40 ID:???
全くの同時なんてあり得ないだろうけど、Aを押し下げてからAを離す前にIを押せばいいんじゃないの
169unnamed.ahk:06/09/11 20:09 ID:KM/zI1NM
>>168
ありがとう
まったく同時に押したいからSetKeyDelay使ってこう書いてみたけど同時になってない
z::
send,a
SetKeyDelay, -1
send,i
return

-1はまったく間なしに実行と書いてあるから同時に行くと思ったんだけどなあ
さあどうしよう
170unnamed.ahk:06/09/11 23:10 ID:???
Sendの説明をよく読め
171unnamed.ahk:06/09/11 23:50 ID:???
完全同期でセーノで押してセーノで離さないといかんわけじゃなくて
両方のキーを同時に押されてる期間があればいいんだろ?
人間が手でキー叩くよりは誤差のない範囲で同時押しになると思うが

send,{a down}{i down}{a up}{i up}
172167:06/09/12 20:23 ID:W+XoG+FM
>>171
それも前試したけどやっぱりaが先に入るからだめだった
完全同時おしじゃないとだめだからやはり無理か
173unnamed.ahk:06/09/13 08:50 ID:???
完全同時押しなんて操作普通有り得ないだろ
一体何をしてるんだ?
174167:2006/09/16(土) 00:55:39
無理っぽい?
175unnamed.ahk:2006/09/16(土) 05:58:44
>>1
>状況や実現したいことは出来るだけ具体的に書いてください。
176見習い:2006/10/05(木) 07:01:59
あるテキストを入力したら、その内容を見やすく切り分けるというスクリプトを作っています。
自作関数"OK"をまとめる方法はないでしょうか。
入力するテキストは
アオキ|75|85
イヅマ|95|75
..
のような感じです。のちのちは20個ほど処理したいのですが、よろしくお願いします。
177見習い:2006/10/05(木) 07:03:12
Gui, Add, Edit, v1Name gOK W200 Section -Wrap
Gui, Add, Edit, v1Kokugo W30 ys+0 x+5 ReadOnly
Gui, Add, Edit, v1Sansu W30 ys+0 x+5 ReadOnly
Gui, Add, Edit, v2Name gOK W200 ys+20 xs+0 -Wrap
Gui, Add, Edit, v2Kokugo W30 ys+20 x+5 ReadOnly
Gui, Add, Edit, v2Sansu W30 ys+20 x+5 ReadOnly
Gui, Show
return

OK:
GUI, Submit, NoHide
StringSplit, Array, 1Name, |
IfInString, 1Name, |
{
GuiControl, , 1Kokugo, %Array2%
GuiControl, , 1Sansu , %Array3%
}
StringSplit, Array, 2Name, |
IfInString, 2Name, |
{
GuiControl, , 2Kokugo, %Array2%
GuiControl, , 2Sansu , %Array3%
}
return
178見習い:2006/10/07(土) 12:58:04
自己解決しました。
OK:
GUI, Submit, NoHide
Loop,2
{
x=%A_Index%
StringSplit, Array, %x%Name, |
IfInString, %x%Name, |
{
GuiControl, , %x%Number, %Array2%
GuiControl, , %x%Kokugo, %Array3%
GuiControl, , %x%Sansu , %Array4%
}
}
で出来ました。お騒がせしました。
179初心者1:2006/12/03(日) 11:43:28
先日、このソフトダウンロードしてみたんだけど、
無知な俺にはムズカシイ('A`)

一応、色々勉強しようかと思ってるんだが、

このソフトで、
「画面の1部分(常にある1箇所、1ドットでもおk)の色が変化(ある決まった色→ある決まった色)したら、キーを押す(ある決まったキー)」
みたいのは可能でしょうかね?

可能じゃなさそうなら、勉強するだけ無駄かもしれないから('A`)
180unnamed.ahk:2006/12/03(日) 18:45:09
http://lukewarm.s101.xrea.com/Examples.html
181179:2006/12/05(火) 17:23:31
↑ありがとです(´;ω;`)b
できるっぽいですね。

では、ちょっと色々試してみて、頑張ってみようと思います。

わからないことあったら、またお世話になると思いますがw
182誉レ:2006/12/12(火) 21:18:36
すみません、ミジンコ的な質問でスミマセン

xを押し続けるとと左クリックを繰り返し
xを離すと動作を終了するっていうのを作ったのですが

x::
Loop
{
if A_ThisHotkey = x ;
MouseClick, left
Continue
else ;
break
}

これだと、xを押した後永遠と左クリックを繰り返してしまいます。どのように変更したら良いでしょうか?
183unnamed.ahk:2006/12/13(水) 01:33:41
>>182
GetKeyState
184182:2006/12/14(木) 00:18:39
>>183
ありがとう、できるようになったよ!
もっと他のもできるよう更に勉強してきますorz
185unnamed.ahk:2006/12/17(日) 19:26:31
質問が2点あります。お解りでしたらアドバイスをお願いします。

1つ目ですが、変数に別の文字列変数の文字列を代入する際、代入する変数名が%%の参照を含む場合(b%A_Index%など)、
a=%b%A_Index%%というようには
書けないので一旦 c:=b%A_Index% としてから a=%c% としています。別の変数に退避せずに一文で代入をすませる方法は無いでしょうか?

2つ目ですが、Gui,Add,ListBoxにより作成したリストボックスの内容を更新することは可能でしょうか?
初期値として文字列変数の内容を渡していますが、GUI表示後にその文字列変数の内容を変更してもリストボックスには反映されません。
ControlSetTextを試してみましたが駄目なようです。
186185:2006/12/18(月) 03:12:16
すみません。1つ目の質問の方は解決しました。
しかも見直してみると質問内容がおかしかったです。本当にすみません。
やりたかったことは文字列変数単品の代入ではなく、
複数の文字列変数の内容もしくは任意の文字列を加えたものを変数に代入(文字連結)することでしたが、
.=での文字連結の項を見落としていたためやり方が分かりませんでした。
書きたかった質問は、
a=%b%%A_Index%%123%d%のようには書けないので、
c:=b%A_Index%, a=%c%123%d% という2文にしていますが、1文で書く事はできないでしょうか?という事で、
正解は a:=b%A_Index% "123" d と書けば良いという事でした。
187unnamed.ahk:2006/12/18(月) 03:34:02
>>185
GuiControl
188185:2006/12/18(月) 22:18:01
>>187
教えて頂いたGuiControlでうまくいきました。
ありがとうございます。
189unnamed.ahk:2006/12/27(水) 12:19:57
システムモニタ用関数群を使わせていただいているのですが、

システム全体のCPU使用率 GetCPUState
プロセスごとのCPU使用率 GetProcessCPUState
の2つが動作しません。

sample.ahk だとCPU使用率のところはどちらも空欄になり
ProcessPerformanceMonitor.ahk だと0%のまま変化がありません。

AHKのバージョンは 1.0.46.03 から バージョンダウンして 1.0.41.02 まで試しましたが、どれもダメでした。
OSは2K SP4です。もしかしてXPじゃないと動かないのでしょうか?
190189:2007/01/23(火) 15:24:56
自己解決?しました。
GetSystemTimesとかってXP SP1以降じゃないと動かないみたいですね…
191unnamed.ahk:2007/04/13(金) 10:39:56
質問です
wsh(JavaScript)でいう
var objExec = objShell.Exec("c:\\Perl\\bin\\perl.exe hoge.pl");
objExec.StdOut.ReadLine();

みたいなことってできませんか?
StdOutからとってくるところ。
192191:2007/04/13(金) 10:47:53
My Scriptsにありましたね
失礼いたしました。
193unnamed.ahk:2007/06/21(木) 20:59:57
質問です。
某ネトゲの自動HP回復ツールを作りたいのですが
うまくいきません。

座標100,100にあるHPが赤色になったら
F1を押すという単純なスクリプトを組みたいのですが・・・。

UWSCが使えないネトゲなので困っています。
194unnamed.ahk:2007/06/21(木) 21:22:56
そういう怪しい物は、自分で作れる人だけが自己責任で作って使うものですよ
ローカルゲームならまだしも、ネトゲでは大抵不正行為扱いになるから(単純操作の自動化でも)
自分で勉強して不正行為を行うなら勝手にしろって感じだが、他人の手を借りて不正行為をしようとするな

では、さようなら
195unnamed.ahk:2007/06/26(火) 05:05:31
>>193
ヒント:
PixelGetColor
196b:2007/10/24(水) 22:48:32
「文字入力中の場合」を表す条件文はありますか?
同じホットキーだけど、文字入力中(文字入力欄
にカーソルがある時)とそうでない時では動作が
違う、などといった使い方をしたいです。
197unnamed.ahk:2007/10/25(木) 00:00:55
>>196
ControlGetFocusで現在フォーカスがあたっているのがエディットボックスならば文字入力中とする、
で良いんじゃなかろうか。
エディタ等だと入力欄のクラス名が違ってたりするので適宜設定する。
198unnamed.ahk:2007/10/26(金) 00:24:13
現在 sc07B & h::Send {Left} として
無変換+hで左カーソルに設定してるのですが
Shift+無変換+hでShift+左カーソルを実現する方法何かないでしょうか。
199unnamed.ahk:2007/10/26(金) 00:51:15
>>198
http://pc11.2ch.net/test/read.cgi/software/1184556627/5
200unnamed.ahk:2007/10/27(土) 00:10:29
>>199
ありがとうございます。リンク先にあるとおり
sc07B & h::Send {Blind}{Left}
で実現できました。
201unnamed.ahk:2007/10/29(月) 17:29:34
アプリケーションの種類によってコマンドから除外させたいのですがうまくいきません。
IfWinExist Exclude ahk_class 除外したいソフト
{
コマンド
}
現状では除外されず全てのソフトにコマンドが働いています。
除外したいソフト名だけを書き記し、かかれていないソフトでは適用する、
といった風にしたいのですが可能でしょうか?

また、条件で分岐するようにも書いてみました。
IfWinActive ahk_class 当初の除外ソフト
{
~RButton & XButton1::Send {PgUp}
~RButton & XButton2::Send {PgDn}
}
else
{
~RButton & XButton2::Send !{F4}
~RButton & XButton1::Send {Esc}
}
除外したソフトには別にコマンドを与える予定でしたので
こうなったのですが、入力が同じだとダメなようでうまくいきません。
解決法がお解りになるかた、アドバイスお願い致します。
長文、乱文失礼致しました。
202unnamed.ahk:2007/10/29(月) 21:05:31
>>201
http://lukewarm.s101.xrea.com/commands/_IfWinActive.html
203unnamed.ahk:2007/10/30(火) 00:32:49
>>202
#があるかないかで随分意味が違うんですね。
条件の優先順位で解決できました。(一応報告
ありがとうございました。m(_ _)m
204unnamed.ahk:2007/11/05(月) 15:03:23
Ctrlの二度押しで、スタートメニューを開きたいのですが、どうしたらよいでしょうか?
下記のスクリプトで、一見うまくいくのですが、使っているうちにマウスでのドラッグが
開始できなくなるなど、変な副作用が出ます。
ちなみにOSはVista Businessです。。

~LControl::
if (A_PriorHotkey = A_ThisHotKey and A_TimeSincePriorHotkey < 300)
Send,^{ESC}
KeyWait, LControl
return
205unnamed.ahk:2007/11/05(月) 23:43:34
Ctrlキーを重ねて送ってるのがまずいじゃね
普通にWINキーをおくったら?
206unnamed.ahk:2007/11/06(火) 08:35:20
むしろ Vistaが問題なのでは?
207unnamed.ahk:2007/11/06(火) 12:11:09
>>205
確かにCtrlは送る必要ないので、
Send,{Blind}{ESC}
にしたところうまくいきました!
WINキーは最初試したのですが、全くだめなのでCtrl+ESCにした次第です。
ありがとうございました。
208unnamed.ahk:2007/11/06(火) 22:00:44
再現率が低くなっただけで、ドラッグが開始できなくなるという現象は変わりませんでした。
ちなみに、その場合Ctrlを連打していると復旧します。
引き続き試行錯誤。。。
209unnamed.ahk:2007/11/06(火) 23:17:50
PresStart
ttp://www.tordex.com/tools/
ちょっと回りくどいけどw
スタートメニューを出してくれるソフトをはさむとか

Ctrlキーが押しっぱなしになってるんだと思うよ
ttp://pc11.2ch.net/test/read.cgi/software/1184556627/629
この関数を使ってみたら?
210unnamed.ahk:2007/11/07(水) 10:49:49
アドバイスを参考に、こうしました。
PostMessage, 0x0504, 0, 0,,ahk_class Shell_TrayWnd
これなら、副作用は起きないのでは無いかと思います。
ありがとうございました!
211unnamed.ahk:2007/11/14(水) 19:42:16
test
212unnamed.ahk:2007/11/14(水) 19:46:55
管理人さんのActivexスクリプトを使ってEXCELファイルを開きたいのですが、
操作サンプルやWEBのそれらしきページを参考に書いてみましたがうまくいきません。
EXCELは立ち上がるのですが、ファイルが開けません。
どこか勘違いしてるでしょうか?

#include *i %A_ScriptDir%\ActiveX.ahk
ActiveX()
ObjExcel:=CreateObject("Excel.Application")
pp(ObjExcel,"Visible","true")
Inv(Inv(ObjExcel, "Workbooks"), "Open", "C:\Hoge.xls")
213unnamed.ahk:2007/11/14(水) 20:08:22
MS Officeのライセンスを買ってくれたら検証してやってもいい
214unnamed.ahk:2007/11/25(日) 03:20:51
Windows Vista ホームプレミアムです。
サイドバーで気に入ったカレンダーがあって、
それは、クリックすると日めくりカレンダー風になったり普通のカレンダーになったり
その普通のやつの月をクリックすると上に2007と書いてあって、1〜12までの月が出るやつで、
そんな風に、クリックするたびに画像1になったり画像2になったりするスクリプトってないですか?
オンマウスじゃありません。
ブログで使うんです・・・function showimgとかいうやつを使いましたが
これだと一回しか切り替わりません。
215unnamed.ahk:2007/11/26(月) 12:48:45
素晴らしい誤爆力
216unnamed.ahk:2007/11/27(火) 10:11:33
管理人様に公開していただいているProcessMem.ahkを大変重宝させていただいております。
その中でreadProcMem(pid,addr,len)関数で文字列を取得する場合、lenに整数を指定してもエラーが出てました。

65行目の
size:=VarSetCapacity(s,len)+1

size:=VarSetCapacity(res,len)+1
とすることで取得が可能になりました。
217unnamed.ahk:2008/01/19(土) 00:36:45
始めましてAutoHotKey初心者です。
現在、UWSCで自動化している作業をよりGUIが豊富なAutoHotKeyに移植しています。
簡単にできそうなのですが、なかなかよいサンプルが見つからずに困っております。
OSはXP(できれば2000も)です。

【UWSCで行っている作業】
ローカルエリア接続に対して
・IPアドレスの設定
・サブネットマスクの設定
・デフォルトゲートウェイの設定
・プライマリDNSの設定
・セカンダリDNSの設定
・以下のDNSサフィックスを順にDNSサフィックスを4つ追加する ※

※以外はnetshコマンドの利用でいけそうなのですが、、、

UWSCではコンパネの「ネットワーク接続」の画面からコントロールのクリックやstrSendなどでゴリゴリ設定できたのですが
AutoHotKeyでも同様のことは可能なのでしょうか?

少々、コードが複雑でもAutoHotKeyで可能であれば実装するだけの価値は計り知れません。
どなたかご教授頂ければ嬉しいです。
218unnamed.ahk:2008/02/20(水) 17:45:05
すいません、管理人さんの「My Scripts」内の「システムモニタ用関数群」を使用しています。

このスクリプトが起動中に同じスクリプトを起動した時に終了させる記述はどのようにすればいいのでしょうか。
219unnamed.ahk:2008/02/21(木) 00:46:32
#SingleInstance
220unnamed.ahk:2008/02/21(木) 01:32:49
>>219さん
ありがとうございます。
試してみました。
これですと、同じスクリプトを起動した時に、新しいスクリプトの方が起動するかしないかを選択する奴のようです。

希望は、スクリプトを新たに起動した場合、起動している同スクリプトを終了させたいのです。
221unnamed.ahk:2008/03/09(日) 01:21:39
MouseGesture2を愛用しています。
気になった点をいくつか。

MG_Edit.ahkでの条件定義で「どれかに一致」しか選べないように思います。
ini書き換えで対処してもMG_Editで編集してしまうと「And=1」の行が削除されてしまうようです。

8方向モードの場合MG_Edit.ahkでの設定時にDir6:からDir9:までがずれて(6-9が5-8へ)設定されるようです。

アクティブウインドウを切り替えたときジェスチャーがアクティブなウィンドウではなく
アクティブだったウィンドウに送られることがあるようです。
MG_GetMousePosInfo()をMG_TriggerDown()、MG_TriggerUp()、MG_GetMousePosInfo()内に
適当に追加して対処しています。

ご確認いただければ幸いです。
222unnamed.ahk:2008/03/09(日) 01:24:46
訂正
× MG_GetMousePosInfo()内に
○ MG_ButtonPress()内に

失礼いたしました。
223unnamed.ahk:2008/03/13(木) 03:36:19
MouseGesture.ahkではアクティブウィンドウに関係なくジェスチャ開始時点でのカーソル下ウィンドウをターゲットとみなす仕様
224unnamed.ahk:2008/03/13(木) 22:17:11
確認をお願いした部分が完璧に修正されてました。感激です。
それ以上にさまざまな進化をしていて驚きです。
ありがとうございました。
225unnamed.ahk:2008/04/04(金) 12:45:08
shift押下でA
Shift離して、A,Aと打つようなスクリプトはどう書けばいいのでしょうか?
226unnamed.ahk:2008/04/14(月) 18:57:15
特定アプリの特定ボタンを押下できないようにしたい。
ボタンの特定までは出来たんだけど、無効化できないです。


~LButton::
~Space::
~Return::

winclass = #32770
ctrlclass = Button52

IfWinActive, ahk_class %winclass%
{
ControlGetFocus, OutputVar
if OutputVar = %ctrlclass%
{
msgbox, %OutputVar%
return
}
}
227unnamed.ahk:2008/04/15(火) 15:52:42
ボタンを無効化するコマンドあるべ?
228unnamed.ahk:2008/04/16(水) 00:58:51
Controlですね。ありがとうございます!

#Persistent
wintitle = hogewin
ctrlclass = ButtonTako
Control, Disable , , %ctrlclass%, %wintitle%
229unnamed.ahk:2008/05/07(水) 00:34:48
AutoHotkey始めて1週間ですが、
例えば、スクリプトに

a::b

とだけ書いて、Alt+aの操作をするとき(Alt押す→a押す→a放す→Alt放す)、
Altを放そうとするとなぜか直前か直後にCtrlダウンアップが割り込む。v1.0.47.06で確認。
(v1.0.39.00だとエラーでスクリプトを実行できない)

これはバグなのでしょうか?

WinXPHomeSP3RC1、AHKは1.0.47.06と1.0.39.00のzip版です。
230unnamed.ahk:2008/06/05(木) 19:13:10
トラックポイントのセンターボタンとHキーを同時押し→カーソル左
トラックポイントのセンターボタンとJキーを同時押し→カーソル下
トラックポイントのセンターボタンとKキーを同時押し→カーソル上
トラックポイントのセンターボタンとLキーを同時押し→カーソル右

ということをやりたくて、下記のようなスクリプトを書いてみたのですが

MButton & h::left
MButton & j::down
MButton & k::up
MButton & l::right

下記のようなエラーが出てしまいます。
Error at line 1.

Line Text: left
Error: This line does not contain a recognized action.

The program will exit.
AHKで実現する方法はないものでしょうか。
231unnamed.ahk:2008/06/05(木) 21:47:39
AutoHotkeyを流行らせるページ → リマップ のところに
略・・・また、「a & b」のようなコンビネーションキーも使用できない。 と書いてる
キーの置き換えのリマップではなく、同時押しの時に キーストロークを発生させる ならできるでしょう
232unnamed.ahk:2008/06/06(金) 21:21:50
>>231
これで上手くいきました。「キーストロークを発生させる」てこういうことなんですね。

MButton & h::Send, {left}
MButton & j::Send, {down}
MButton & k::Send, {up}
MButton & l::Send, {right}
このスクリプトを起動すると、センターボタンによる本来のスクロールが使えなくなってしまうのでこれの解消が次の課題になります。
やっぱりAHKって難しいですね・・・
233unnamed.ahk:2008/06/06(金) 21:33:18
頭に"~"をつければいいんですね。
~MButton & h::Send, {left}
~MButton & j::Send, {down}
~MButton & k::Send, {up}
~MButton & l::Send, {right}
さっきから自問自答してすいません。簡単な事なのになかなか分からないもどかしさと出来たうれしさというか…。
234unnamed.ahk:2008/06/17(火) 21:11:51
マウスジェスチャについての質問です。

ボタンを押している時間によって動作を変えるという事は可能でしょうか?
具体的には、

X1ボタン押下げ中
@0.5秒以内に左ジェスチャ
⇒ "Alt←" を送る
A0.5秒以内にジェスチャなし
⇒ "Ctrl" を送る(押しっぱなし)

即ち、指定の時間以内ならばジェスチャを発動し
その後は任意のキーを代替させたいのです。

お分かりの方がおられませんでしょうか?
235unnamed.ahk:2008/06/17(火) 22:44:47
>>234
ジェスチャとかやったことないですが思いついた方法2つ
スリープで0.5秒待機して前後のマウス位置を比較する方法か、セットタイマで短間隔でマウス位置比較する方法か
どっちも同じようなものだけど行数長いので質問に近い?セットタイマのほうだけ

X1ボタンダウン::
開始時のマウス位置取得、カウンタ0
セットタイマ0.1秒間隔(間隔と回数は適当に変える
りたーん

タイマのサブルーチン:
マウス位置取得
開始時とのマウス位置の比較(閾値や方向も考慮して、2回連続で左だったら・・等でもいいし
左に移動してれば、タイマストップ、"Alt←" を送る、フラグ0セット、りたーん
なんもなければ、カウンタ5回未満なら、カウンタ+1、りたーん
カウンタ5回以上なら、タイマストップ、"Ctrl"ダウン を送る、フラグ1セット、りたーん

X1ボタンアップ::
フラグ0なら、なにもしない、りたーん
フラグ1なら、 "Ctrl"アップ を送る、りたーん
236unnamed.ahk:2008/06/17(火) 23:51:36
MG_Timer()
237unnamed.ahk:2008/06/18(水) 22:12:21
>235

レスありがとうございます。
処理の方向性は理解できました。
ロジックを書けばなんでもできそうですね。
AHK初心者ですので指向錯誤しつつ実装してみます。
238unnamed.ahk:2008/08/19(火) 16:37:06
すみません。目下勉強中です。
ctrl+C(Copy)という機能を右shiftを押したら同じ操作にしたいのですが
RShift::^A
とだけ記述したahkファイルを作ってみましたがうまく行きません。
ひとつだけヒントとして教えていただければほかの機能も応用できるので教えていただけますか。
239unnamed.ahk:2008/08/19(火) 18:16:58
~Aじゃなくて^Cじゃないの?
240unnamed.ahk:2008/08/19(火) 20:12:20
まちがえました。COPYでなく全選択でした。(ctr+A)
241unnamed.ahk:2008/08/22(金) 03:58:59
RShift::^aでどうか
242unnamed.ahk:2008/08/24(日) 21:28:05
ありがとうございました。
小文字にするんですね。わかりました。
ほかの類似機能もいくつかつくってVistaで使ってみました。うまくゆきました。
感謝します。
これからみなさんの中でいろいろ学んでゆきたいと思います。よろしくお願いします。
243unnamed.ahk:2008/08/26(火) 21:38:05
キーリマップについて質問させて下さい。
カタカナ/ひらがなキーを右Windowsキーに置き替えたく、以下の様に設定していますが、うまくいきませ
ん。
●vkF2sc070::RWin
※"カタカナキー:vkF2sc070"はキーリストを参考
ちなみにAppsKeyを右Windowsキーに置きかえるのはうまくいきます。
●AppsKey::RWin
どなたか原因がおわかりになりませんでしょうか?
244unnamed.ahk:2008/08/27(水) 01:56:50
スタートメニューを表示させるのが目的じゃないなら動いているけど
245unnamed.ahk:2008/08/28(木) 00:01:37
>244
レスありがとうございます。
当方の環境では、Windowsキーが押しっぱなし
になり不安点な状態になります。
希望は通常のリマップなのですが、
根本的な問題があるのでしょうか?
246unnamed.ahk:2008/08/28(木) 07:21:07
ほんとだ押しっぱなしになる

~vkF2sc070::RWIN
vkF2sc070::Send,{RWIN}
vkF2sc070::Send,{RWINDOWN}{RWINUP}

とかいろいろ試したけどだめだった、原因はわからない
247unnamed.ahk:2008/08/31(日) 21:08:40
sc07B & m::send,{Blind}{Down}
sc07B & i::send,{Blind}{Up}
sc07B & j::send,{Blind}{Left}
sc07B & k::send,{Blind}{Right}
sc07B::Send,{sc07B}
といいますように、無変換キー+○○で、
ダイヤモンドキーを実装させています。

ここで、
無変換キー単打→無変換
無変換キー長押し→動作なし
というようにキーを割り当てられないでしょうか?
カーソルを動かそうと思ったけれどやっぱり止めた、
などと言うときに無変換キーが押されては不便ですので。
同時に、無変換キーはよく使いますので単純に無効にはしたくありません。

お力を貸していただけますと本当に助かります。
よろしくお願いします。
248unnamed.ahk:2008/11/16(日) 01:19:40
MauseGesture.ahkから流れてきました。

バックグラウンドのiTunesを操作したくてahkのスクリプトを書いてみようと思ったがうまくいかない。

!b::
DetectHiddenWindows,On
ControlSend,,right,ahk_class iTunes
return

管理人さんの使用例を参考に書いてみたけどダメみたい。
一応iTunesの「次の曲」をAlt→で動作させようとしてるんだけど、どこを治せばよいのでしょう。
249unnamed.ahk:2008/11/16(日) 14:41:12
まずはフォアグラウンドで Sendで操作できるか試してみ
ちなみに Alt→ は !{Right} な
250unnamed.ahk:2008/11/17(月) 23:33:12
#b::
Send,,+{Right},ahk_class iTunes
return

フォアグランドで試すってこういうことですよね。
で色々調べながらControlを抜いて上記にしてみたらアクティブになってるとき動作。
しかし、win+bで起こる動作も同時に発動。
これの殺し方は後で考えればいいということにして

#b::
DetectHiddenWindows,On
Send,,+{Right},ahk_class iTunes
return

あ、ちなみにAlt→じゃなくてShift→でした。
バックグラウンドのiTunesの曲を飛ばしたいだけなんです。

こうすると非アクティブの時でも動作同じように動作すると思ったけど全く動作せず…

便利そうだと思って飛びついたが難しい…。
何かヒントでもいただければ幸いです。
251unnamed.ahk:2008/11/17(月) 23:36:31
return

あ、ちなみにAlt→じゃなくてShift→でした。
バックグラウンドのiTunesの曲を飛ばしたいだけなんです。

こうすると非アクティブの時でも動作同じように動作すると思ったけど全く動作せず…

便利そうだと思って飛びついたが難しい…。
何かヒントでもいただければ幸いです。
252unnamed.ahk:2008/11/28(金) 20:01:59
>248
俺も素人なんだが、こう書いてみた。どうだろう?
ちなみに次の曲を指定するなら→キーだけでよくね?

IfWinExist, ahk_class iTunes
{
ControlGet, iTctl, hwnd, ,iTunesTrackList1
ControlSend, , +{right}, ahk_id %iTctl%
}
return
253unnamed.ahk:2008/12/01(月) 00:39:40
ありがとうございます!
できました!

DetectHiddenWindows,On
これは無くていいのですね…

AHK面白いけど難しいですね。
もう少し勉強してみます。
254unnamed.ahk:2009/04/05(日) 00:48:08
キーコードが別なのに機能が同じ動作のキーで誤作動してしまうバグと思われるものを発見しました。
具体例としてはテンキーの1はNumLockオフ時だとEndとして動作しますが、
メインのキーボードのEndとはキーコードが別です。
しかし、AutoHotKeyに割り当てるとキーコードで一つのキーのみに当てたはずの機能が
同じ意味のキーでも動いてしまいます。

Numlockオフ時のテンキー1のキーコードはvk23sc04Fで動作は"End"となります。
キーボードのEndキーのキーコードはvk23sc14Fです。
sc以降が若干違うので別のキーとして識別できると思ったのですが、同じと見なされている模様。

ちなみにNumLockオン時のテンキー1はvk61sc04Fとなります。

キーコードが同一でないにも関わらず動いてしまうのはバグでしょうか?仕様でしょうか?
255unnamed.ahk:2009/04/05(日) 00:49:44
省略されてるので省略部分の書き直し・・・

Numlockオフ時のテンキー1のキーコードはvk23sc04Fで動作は"End"となります。
キーボードのEndキーのキーコードはvk23sc14Fです。
sc以降が若干違うので別のキーとして識別できると思ったのですが、同じと見なされている模様。

ちなみにNumLockオン時のテンキー1はvk61sc04Fとなります。

キーコードが同一でないにも関わらず動いてしまうのはバグでしょうか?仕様でしょうか?
256unnamed.ahk:2009/05/25(月) 18:36:28
.NETFrameworkで作成されたアプリケーションのコンボボックスの選択値を取得する方法を知っている方がみえましたら教えてください。
ControlGet関数でChoiceを使用しても値を取得できません。
よろしくお願いします。
(管理人様へ:先日は、スレ違いで申し訳ありませんでした。)
257unnamed.ahk:2009/06/01(月) 16:22:39
AutoHotKeyで
Excelのメニューバーを操作する方法についてですが
方法、ヒント、類似物等ありましたらお願いします.
具体例:AutoHotKeyでExcelのメニューバーに独自で
    追加したメニュー(ズームイン(&+))を
    実行、クリックする
    以上です。
258unnamed.ahk:2009/06/01(月) 21:39:23
Send,!+
アクセラレータキー付けてんなら活用したらいいんじゃね
厳密に「クリック動作のエミュレート」がしたいなら
PixelSearch & MouseClick (ControlClick)

「Excelでやりたいこと」が具体的に決まってるなら素直にExcelマクロ使ったほういいとも思うが。
'例) ZoomInマクロ
Sub ZoomIN()
 On Error Resume Next
 ActiveWindow..Zoom = ActiveWindow..Zoom+25
End Sub
259unnamed.ahk:2009/06/01(月) 23:52:36
#257の者です。回答どうもです。
ズームイン(&+)のアクセラレータ(&+)ですが
当初「Alt + ;」で起動すると思ったのですが反応してくれません。
上記は特殊な組み合わせの様で押下してもスルーされますね。
現状、メニュー「ズームイン(&+)」に割当てているマクロは例)で記載されているもののとほぼ同じです。
アクセラレーター気を&L等の他の組み合わせにすれば普通に反応するのですが&+では駄目のようです.
こだわりがあり&+(Alt + ;)で何とか実現したいです。
260unnamed.ahk:2009/06/01(月) 23:54:49
レスにありました.
「PixelSearch & MouseClick (ControlClick)」を少し探ってみます。
※何かしら糸口があると願いつつ。
261unnamed.ahk:2009/06/02(火) 00:19:38
;で+出すにはShiftと同時押ししないとだめなんじゃん?
試してないけどテンキーの 「+」 のほうじゃないの
262unnamed.ahk:2009/06/02(火) 01:18:18
>;で+出すにはShiftと同時押ししないとだめなんじゃん?
そうだったんですね!!
記号の  "+"はShift + ;の同時押しで
テンキーの"+"が単独で押せるというわけなんですね。
Excelのメニュー「ズームイン(&+)」にビットマップの
イメージを付けてこれをPixelSearch()によって座標を
取得しこれをMouseClick()するという面倒な事を検討
していました。
とりあえず、レスの同時押しで運用していけそうです。
なので唐突ですがこれでクローズしたいと思います.
どうもです。
263unnamed.ahk:2009/06/02(火) 09:51:47
こっち人いないみたいなんで一応誘導貼っとく

AutoHotkey スレッド part8
http://pc12.2ch.net/test/read.cgi/software/1243005818/
264unnamed.ahk:2009/10/30(金) 10:41:58
SetWorkingDir, %A_ScriptDir%

p0 := "test.reg", p1 := "test.txt"
hModule := DllCall("LoadLibrary", str,"nkf32.dll")
DllCall("nkf32.dll\SetNkfOption", str,"-s")
;NkfFileConvert2(LPCSTR fInName,LPCSTR fOutName)
DllCall("nkf32.dll\NkfFileConvert2", str,p0, str,p1)
DllCall("FreeLibrary", UInt, hModule)

Unicodeで書かれた文書や文字列はnkfを使ってshift-jisに変換してからというのはググってわかったのですが
DllCallの使い方が下手なのかさっぱり機能しません。空のtest.txtができます。
間違いを指摘いただければありがたいです
265unnamed.ahk:2009/11/22(日) 08:08:17
スクリプト起動時に自動で初期化された変数が欲しいんですが
そんな変数はありますでしょうか?

#Persistent
SetTimer, Foo , -100
return

Foo:
Bar = 100
return

上記コードで一応できるかなと思ったんですが、実行してくれません。
SetTimerの間隔を正の値にし繰り返させても×でした。

よろしくお願いします。
85KB
名前: E-mail:
ファイル:
0ch BBS 2005-10-08