スクリプト質問スレッド
- 1 :管理人 ★:04/09/21 20:01 ID:???
- 質問が多いので独立させます
状況や実現したいことは出来るだけ具体的に書いてください。
スクリプトがうまく動かないなどの問題の場合、問題のあるスクリプトの内容や
エラーメッセージの内容を併記してください。
- 31 :unnamed.ahk:04/12/05 00:41 ID:???
- $つける
- 32 :24:04/12/05 01:11 ID:zgpq/qbk
- $i::Send,c
$c::Send,j
で出来ました。ありがとうございます。
基本から躓きまくってるけど、やりがいあるね。
- 33 :unnamed.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回目と同じ検索文字列で検索してします。
どうすれば、よいのでしょうか?
どなたかご教授ください。
- 34 :unnamed.ahk:04/12/05 04:02 ID:???
- 環境ぐらい書け
うちではならなかった
- 35 :unnamed.ahk:04/12/05 06:27 ID:???
- Send,^c のあと ClipWait入れてみたらどうだろう
と、テストもしないで言ってみる。
- 36 :unnamed.ahk:04/12/05 13:28 ID:???
- >>34
環境は
WinxpPRO
CPU pen4-3.2
メモリ-512
です。
>>35
変わりません・・・
「AutoScriptWriter.exe」で作ったものを
saveすればよろしいのですよね?
- 37 :unnamed.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
でどう? もしクリップボードが書き換わってるのに検索文字列が変わらないのなら
起動パラメータを疑ってみる。起動していない状態からと起動中で動作が変わったりしない?
自分プニル使いじゃないのでよく知らんのだけど
- 38 :unnamed.ahk:05/01/10 22:17 ID:4NzjcJDI
- 先輩方に質問です
マウスの操作のみのブロックは出来ませんでしょうか?
手元のタッチパッドに触れて知らぬ間に段落がかわってたりするので
文章入力中のマウス移動をブロックしたいのです
BlockInputだとキーボードまでロックされてしまいます
- 39 :unnamed.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にならないのな。ちょっと使いにくい気がするんだが...。
- 40 :38:05/01/11 22:05 ID:???
- お返事ありがとうございます。動作確認いたしました
うまいこと動いております
マウス移動も抑制できればなおいいのですが。。
今思いついたのですが、デバイスマネージャから
マウスドライバを無効にすればいいですね
今手作業でやってみましたがうまくいきましたので
なんとか自動で出来るスクリプトを作ってみます
根本的に出来るのかどうかがわかりませんが。。
- 41 :unnamed.ahk:05/01/15 17:54 ID:???
- 投稿スレの34です
36さん返答ありがとうございました
投稿スレの34です
%%のなかに%%を使う方法がやっとわかりました
10個あったサブルーチンも一個になり全体で500kバイトほど減らせました
組み込み変数にこんな便利なものがあったのは知りませんでした
- 42 :namazu: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以降は、この新スタイルに移行しろ、ということでしょうか。
ちょっと困っちゃいますね。
- 43 :unnamed.ahk:05/01/16 06:28 ID:???
- >>42
%test%とinuの間のスペースなくせば2回目以降もokなのと、
AutoTrim, off入れれば、スペース入れてても問題ないんで、バグっぽいね。
・・・ってことで、本家に報告ガンガレ!
でもこれって、AHKver1.0.25より前なら大丈夫だったのかな?
実は前からAutoTrimにはちょっと不安があったんだよなぁ・・・
- 44 :namazu:05/01/16 16:03 ID:???
- >>43
AHKver1.0.24以前なら、問題ありませんでした。
そういうことで、本家のForumのBug Reportに報告しておきました。
スペースをなくすとOKという情報はありがとうございました。
とりあえず、それでしのいでおこうと思います。
- 45 :unnamed.ahk:05/01/16 23:26 ID:???
- ダブルクリックとトリプルクリックで違う動作をさせるにはどうすればいいでしょうか?
トリプルクリック事態は出来るのですが、その前にダブルクリックが動作してしまいます
指定時間に何回キーが押されたかカウントできればいけそうなのですが。。
a::
Input , OutputVar, t0.5
if OutputVar=a
msgbox,2
if OutputVar=aa
msgbox,3
return
(常駐してキーボードが効かなくなるので注意して下さい)
通常キーならこんなんで出来るのに、マウスボタンやCTRLでは出来ないのです
- 46 :namazu:05/01/17 00:32 ID:???
- >>44
作者のChrisさんがバグを解決してくれたようです。
>>43さんが指摘される通り、AutoTrim周りのバグだったようです。
バージョンは1.0.25のままですが、現在のDownloadのページは、日付が1/16になっており、
現在のAHK本体を落としてinstallすれば、>>42の問題はでません。
よかったよかった。AHKのバグ出しに貢献できて光栄であります。
- 47 :unnamed.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氏は対応早いな。
- 48 :unnamed.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
私はこう書いてるのですが、これはイレギュラーなんでしょうか?
- 49 :unnamed.ahk:05/01/19 01:41 ID:???
- >>48
この2例だと、どっちもエラーは起こらないし、特におかしいところはないと思う。
あえてつっこむなら、最初の例の方はカッコ { } なしでもokってのと、
『空だよ』じゃなくて、『1以外だよ』・・・まぁそんなことは分かってると思うがw
おそらくカッコの付け方の問題のような気がするんだけど、よく失敗するっていうのが
どういう失敗だか分からないんで、なんとも説明のしようがない。失敗例を説明してくれ。
- 50 :unnamed.ahk:05/01/19 08:02 ID:???
- >>48
上下共同じ動作を期待しているのならNGだと思う
下の例、else書かなかったら Not時の条件とは見なされないでそ
a=1のときだけ{ }内を処理し、その下はaの中がどうだろうと必ず実行される
- 51 :unnamed.ahk:05/01/19 08:04 ID:???
- スマン{ }内のreturn見落としてた orz
- 52 :48:05/01/19 18:40 ID:???
- >>49
>>50
失敗例としましては、キーアサインを変更中、leftなんかはやたらifwinactiveが並びます。
こういうときはelseがどこにかかるかわけわからなくなってエラーとなります
無理にelse使う必要がなければ、なるたけ使わない方向で行こうと思います
返答ありがとうございました
- 53 :namazu: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回...いくらでもできます。
- 54 :unnamed.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
↑が帰ってくる。 比較の = と == って同じじゃないのかな
- 55 :54:05/01/20 21:43 ID:???
- 質問スレで質問する口調じゃないですねすみません
つかぶっちゃけ誤爆した。2ちゃんに書込むつもりだったのに… orz
ちなみにバージョンは 1.0.25.05
- 56 :unnamed.ahk:05/01/20 22:26 ID:???
- >>54
式の比較は比較式を()で囲みやがれ
それじゃ「var2」変数と「= 0x00000011」の比較になるだろうが
- 57 :unnamed.ahk:05/01/20 22:53 ID:???
- >>56
すんません完全に失念してました。
if (var2 == 0x00000011)
    ans2 = true
で true返ってきました。ありがとうございます。
- 58 :unnamed.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進数も小数の計算もあんまり使わないんでよく分からないんだけど、
そっちの方が便利ってことなのかね?まぁ、使ってないだけに特別困ってるわけじゃないんだけど。
- 59 :unnamed.ahk:05/01/23 18:02 ID:???
- スキャンコード無しで仮想キーのみ発生させる10keyパッドで、
スキャンコードも含めてキーストロークを発生させるために使っています。
vk61sc04F::Send,{Numpad1}
これが、できません。
同じキーへのSendができないのはどうにもならないものでしょうか。
現状このように代用してしのいでいます。
vk61sc04F::Send,{NumpadEnd}
- 60 :unnamed.ahk:05/01/23 21:01 ID:???
- だから環境を書けっつーに
どうできないのか知らんが、ループに陥るってなら
$vk61sc04F::Send,{Numpad1}
でやってみたら?
- 61 :unnamed.ahk:05/01/23 21:36 ID:???
- なるほど、ループになるから禁止されてるみたいですね。
おかげさまで無事設定できました。ありがとう。
- 62 :unnamed.ahk:05/01/27 11:27 ID:ylUkJylc
- if ( hoge )
{
〜
}
else if ( hage )
{
〜
}
else
{
〜
}
って他の言語と等価?なんか怪しい。書き方が悪いのかもしれないけど。
RegExp, OutputVar, InputVar, pattern [, option] が欲しい…
- 63 :unnamed.ahk:05/01/27 19:43 ID:???
- 他の言語云々いうほど色々言語使えるわけじゃないけど、AutoHotkeyの場合、
If ( hoge ) は、hogeが数値として0(0.00や0x00などを含む)の場合と、
null(空)の場合以外はtrueだったと思うんで、
If ( hoge<>0 && hoge<>"" )と同じ意味になるかと。
RegExは確かに欲しいね。ワイルドカード云々って話が本家フォーラムで出てるんで、
しょぼいRegExpコマンドにならないかそれが心配。
- 64 :unnamed.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
- 65 :unnamed.ahk:05/01/30 03:26 ID:???
- メニュー表示中は制御が完全にAutohotkey側に取られてしまって
項目選択かキャンセルするまで戻ってこないみたい。
将来的にはこの辺も弄れるようになると嬉しいんだけどな
Shorter LauncherみたいにShift,Ctrl押下中は別動作ってのをやりたいし
アイコンとかも表示したかったり…GUI使えって話になりそうだけど
- 66 :64:05/01/30 22:00 ID:???
- >>65
お返事ありがとうございます。現状では無理っぽいのかな。
別スクリプトでキー操作だけ担当させればなんとか動いたけどもあまりにスマートじゃないんで、GUIで作り直してしまいました
メニューのほうが見た目がスッキリしてて好きなんだけどなぁ
- 67 :unnamed.ahk:05/01/30 23:38 ID:+266I1kg
- >>65
キーフック入れて、 GetKeyState でキー押下状態取得して分岐すればいいんじゃないの?
デフォで色々出来るようになると、コマンド数が大変なことになりそうな言語仕様なのが怖い。
VBScript, JScript(DMonkey含む), perl(script)等、色々スクリプト触れてきたけど、
AHKはユーザが自動or半自動でやりたいことを割合簡単に実現できるって点でかなり優秀かとおもう。
JScriptはブラウザと連携したり、ActiveX呼び出しでかなり色々出来るけど、
テキストストリーム開いてって読んで書いてって思った以上にめんどいし、
perlは強力な正規表現とテキスト処理が簡単なのが魅力だけど、GUI操作は…
やっぱ正規表現は欲しいなぁ。 [ ] 内のテキストを得るサブルーチンとかいちいち作るのが面倒だ。
(´-`).。oO(Janeで書き込めないのが不便だなぁ
- 68 :unnamed.ahk:05/01/31 00:03 ID:???
- 書き込めるよ
- 69 :unnamed.ahk:05/01/31 00:26 ID:???
- >>67
本当だ、メニュー選択後のGetKeyStateは有効だね
Shoterの "Shift押下中はメニュー消さないで実行"をまねしようとして挫折したんだけど
通常はアプリ起動して、Ctrl押下時はそのフォルダを開く…みたいな動作ならOKみたい。
- 70 :unnamed.ahk:05/01/31 00:27 ID:???
- >(´-`).。oO(Janeで書き込めないのが不便だなぁ
外部板登録汁
- 71 :unnamed.ahk:05/02/06 18:04 ID:dRQ1z0Do
- デバッグがしんどいんでOutputDebugString
使いたいんですけど何か方法はありませんか?
- 72 :unnamed.ahk:05/02/06 18:26 ID:???
- >>71
AutoHotkey.exeのソースに手を加えてChrisたんに送る
- 73 :unnamed.ahk:05/03/04 15:56 ID:7rPnHNyg
- Guiコマンドなんですけど
DropDownList ComboBox ListBox で |を含む項目を作る方法って
何かありますでしょうか?
関係あるかわかんないけど環境はNT系です
- 74 :unnamed.ahk:05/03/04 21:07 ID:2ACWIJok
- ` でエスケープ
- 75 :73: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とかを指定しとけばテキスト扱うのには困らないし。
- 76 :unnamed.ahk:05/03/04 23:04 ID:2ACWIJok
- ホンマや。すまん分からんわ。
- 77 :73: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
- 78 :unnamed.ahk:05/03/25 04:03 ID:HxERFtyU
- AltTabの機能をSuspend時にも有効にしたいのですが、
何か良い方法はありませんか?他の機能であれば、Suspend,Permit 書いとけば大丈夫なんですが、
AltTabは無理でした。
- 79 :unnamed.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
- 80 :78:05/03/26 01:26 ID:ws3lbNbI
- 親指ひゅんQというプログラムでNicola入力してるんですが、
IMEのON/OFFを検知した後、
OFFならDvorakで英字入力、ONならそのキー自身を送信するようにしてたんですが、
ホットキーを2個くらい定義したら日本語入力は意図しない変な文字(全角*とか色々)が出力されるんです。
そこで仕方なく一部キーをSuspendしてたらAltTabは使えなかった。
というわけで、皆さんが苦労しているIMEのON/OFFを検知プログラムアップしときますね。
ただし、Cでコンパイルした外部ファイルですが。
>>79 スクリプトありがとうございます。試してみます。
- 81 :unnamed.ahk:05/04/03 14:39 ID:???
- ブラウザの終了を監視し
終了と同時にあるアプリケーションを一緒に終了したいのですが
どうやればいいのでしょうか?
- 82 :unnamed.ahk:05/04/03 17:42 ID:???
- Process
- 83 :unnamed.ahk:05/04/03 17:50 ID:???
- ブラウザがMDIかSDIかで監視の方法は変わるし
連動アプリがタスクトレイ収納型かどうかで終了のさせ方も変わる。
要は環境書かなきゃ答えようがない
- 84 :unnamed.ahk:05/04/03 19:08 ID:???
- >>82
出来ました。
ありがとうございました。
- 85 :unnamed.ahk:05/04/09 15:26 ID:???
- このソフトは、DirectInputアプリ(ゲーム)にて、
マウスの拡張ボタン(4、5ボタン目)を認識させられますか?
X Wheel NTが仕様上駄目なので、こちらはどうなのでしょうか。
あと、アプリ毎に設定変更も可能でしょうか。
- 86 :unnamed.ahk:05/04/09 15:38 ID:uuYWhC6A
- 色々ためした結果、確証はないけど駄目っぽい気がする。モノにもよるけど。
キーボードはいけるけど、MouseとJoystickはなんか挙動がおかしい感じ。
ホットキーに割り当ててマクロ的な動作させる分には問題ないんだけどね。
他の人フォロー、ツッコミよろ。
- 87 :unnamed.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
- 88 :unnamed.ahk:05/04/25 15:42 ID:???
- >>87
$がなければ動きましたよ
- 89 :unnamed.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
- 90 :unnamed.ahk:05/04/25 22:20 ID:???
- >>89
何らかの日本語入力方法のようにみえるなぁ。
窓使いの憂鬱でkeymap使ったほうが良さそうな感じ。
- 91 :unnamed.ahk:05/04/26 00:19 ID:ws3lbNbI
- 窓使いの憂鬱は出先のPCで気軽に使えないというのが気になる。
hishiと組み合わせて目的は達成してるけど、常駐ソフト減らしたいので何とかAutoHotKeyのみで出来ないものか
- 92 :unnamed.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で出来るはずだろうと、意地になってしまったよ。
- 93 :unnamed.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
- 94 :unnamed.ahk:05/04/27 16:06 ID:???
- if ( 式 ) の場合、%〜%のようにしなくても変数展開は行われる。
- 95 :unnamed.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 ( 式 ) の場合、%〜%のようにしなくても変数展開は行われる。
結論、もうちょっとマニュアルを読んだ方がいい。
- 96 :unnamed.ahk:05/04/27 16:33 ID:???
- あぁ、まだあるな
8. var := 式 の場合、%〜%のようには基本的にしなくていい。(変数展開が分かってるなら別)
- 97 :unnamed.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でもいるよ、多分
- 99 :93,97:05/04/28 03:18 ID:???
- >>98
レスありがとうです、スクリプト参考にさせてもらいます。
iniファイルの下の方に書いてやってたのですが
どうやらiniファイルの書く位置を変えて一番上に移したら、あっさり動いてくれました。
ahkにして#Includeで呼び出す場合も、上にコマンドが何も無い場所に置かないと動いてくれませんでした。
それによる他のHotkeyなどのコマンドへの影響は無いのですが、
SetTimerを使う場合は上に置かないと動かないという様な仕様でもあるのでしょうか?
それとも単純に私の書いたスクリプトの書式がおかしいからでしょうか。
あと#Persistentはahk単体で動かした場合以外は無くても動くみたいです
- 100 :unnamed.ahk:05/04/28 07:54 ID:???
- http://lukewarm.s101.xrea.com/Scripts.htm の
スクリプトの起動とAuto-executeセクションの項を嫁
今サイト見直して思ったんだけど上のページ
関数とかの説明追加でAuto-execute後ろのほうに来てるから
確かに見つけにくくなってるね
でも>95でも書いててくれてるんだけど
- 101 :89:05/04/28 17:16 ID:rR3b5PsE
- >>92
ありがとうございます。確かに出来ました。
キーを増やしていろいろ試してみます。
#UseHook On なんて使ったこと無かったよ
- 102 :unnamed.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
- 103 :unnamed.ahk:05/05/17 19:43 ID:???
- >>102
Intで0を送ればいいんじゃない
- 104 :102:05/05/17 20:45 ID:???
- >>103
lpClassName = 0 てのはやってみたんだけど、型をIntにするのは気がつかなかった orz
↓で無事取得できました。ありがとうございます。
hChildWnd := DllCall("FindWindowEx","UInt",pwhd,"Uint",0,"Int",0,"Int",0,"UInt")
- 105 :unnamed.ahk:05/05/18 13:02 ID:???
- Runでプロセスを起動するときの引数に,を使用したいのですが、
,はRunコマンドで引数の区切りをして使用されている為使用できません。
これを回避する方法はありますか?
やりたいこと
#z::Run,D:\ddwin.exe 1,2,3,4,5
- 106 :unnamed.ahk:05/05/18 14:20 ID:???
- エスケープ
- 107 :105:05/05/19 00:39 ID:/Keiu9rM
- 自己解決
tmpZ_Arg = 1,2,3,4,5
#z::Run,D:\ddwin.exe %tmpZ_Arg%
これでいけました^^
- 108 :unnamed.ahk:05/05/19 01:35 ID:???
- >>107
まぁそういう方法もあるけど、>106はおまいさんに対する回答だと思うのだが。
具体的に書くと
#z::Run,D:\ddwin.exe 1`,2`,3`,4`,5
- 109 :105:05/05/19 10:56 ID:LObLxA/Y
- >>108
なんと!!そうだったんですか。気が付きませんでした。
106さんありがとう
- 110 :unnamed.ahk:05/05/20 14:53 ID:???
- マウスカーソルのアイコンを変えたいんだけど、autohotkeytから出来ます?
特定のアプリ上ででは無く、コントロールパネルの
マウスのプロパティから変えた時と同じように、完全に変えたいんだけど
ちなみにOSはXP
- 111 :110: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)
}
- 112 :unnamed.ahk:05/06/15 02:10 ID:io2Wdpo6
- 初めまして
便利なソフトを紹介して下さってありがとうございます。
日本語リファレンスを多読させてもらってます。
一つ疑問なのですが
/* */
msgbox ,test
皆さんの環境ではこのスクリプトを作ったらmsgboxが出てきますか?
私の環境では何も実行されません。
どうも、/*コメントが上手くコンパイルされてない気がします。
私だけでしょうか? ちなみに、XPで秀丸エディターです。
既出ならば、スレ汚しスイマセン
- 113 :112:05/06/15 02:19 ID:io2Wdpo6
- ついでに
string = abcdefg /* 初期化 */
などのように変数に値を代入し、それについてコメントを記入すると
string の値が abcdefg /* 初期化 */ になってしまいます。
- 114 :unnamed.ahk:05/06/15 06:28 ID:0VbSCvr6
- /* */については挙動が微妙だから;を使ったほうが無難…
- 115 :unnamed.ahk:05/06/16 10:32 ID:???
- /* comment */ とかだと確かにおかしくなる。どうやら /* と */ がそれぞれ行頭にないと
(つまり複数行コメンじゃないと)認識くれないみたい。
/*
memo
memomemo
*/
↑のような書き方ならOK
一時的にスキップしたいソースをコメントするときは便利なんだがな
- 116 :112:05/06/17 00:36 ID:F9sdiZr2
- >>115
その書き方だと大丈夫だとは気づきませんでした〜
- 117 :unnamed.ahk:05/06/17 14:10 ID:???
- >>115
ほうほう、なるほどね。
- 118 :unnamed.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%
}
上記のような定義の仕方ではエラーになります。
これだと配列が無いことが非常に不便な気がします。
- 119 :unnamed.ahk:05/06/21 00:34 ID:???
- globalをデフォルトにする
- 120 :118:05/06/21 21:16 ID:m1a3+TY2
- な〜るほど、頭イイ!!
ってか、この場合オレが悪いねw
サンクスです >119
- 121 :unnamed.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のみ描画を更新することはできないでしょうか?
- 122 :121:05/07/06 07:22 ID:JI6Rnr8w
- 自レス
GuiControlでなんとかできそうですね・・・
スレ汚し すいません
- 123 :unnamed.ahk:05/09/12 18:38 ID:lSWi5zg+
- ホットキーを押すたびに上の二つのウィンドウが交互にアクティ
ベイトされるようなスクリプトを組みたいのですが、アクティブ
ウィンドウのすぐ下のウィンドウタイトルをGetする方法が判り
ません。最初、
WinGetTitle, OmoteWin, A
WinGetTitle, 2BanmeWin, [なんでもHITする文字列], ,%OmoteWin%
のようにすればいいのかと思ったんですが、WinGetTitleはワイルド
カードが使えないのですね。アクティブウィンドウをWinMinimumize
してもフォーカスは移動しないみたいだし。
なんか別のやり方があるのですかね?>有識者各位
- 124 :unnamed.ahk:05/09/12 21:10 ID:w9uN3O4I
- ・・・うわわ、ごめん!よく考えたら目的のためにはALT+TAB発行
すれば良いだけだった(大恥)
でも、まあもし判ったら上もヨロシクお願いします。
- 125 :unnamed.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
}
}
}
- 126 :unnamed.ahk:05/09/13 02:27 ID:???
- >>125 に追記
IE統合シェル(2K, XPでデフォルト)使ってるなら除外クラスはもっとありそう。
ReBarとか
- 127 :unnamed.ahk:05/09/14 13:49 ID:mNImviZM
- 回答ありがとうございます・・なるほど、WinGet, 〜, Listで
全ウィンドウのハンドルが取得できるのですね。
他の機能を利用する場合も応用できそうな機能ですね。
- 128 :unnamed.ahk:06/01/31 18:52 ID:OL7m/gtM
- キーボード自体無効ってできますか?
- 129 :unnamed.ahk:06/02/01 18:27 ID:???
- 特殊なキーでなければ殆どのキーを無効には出来る。
全部といわれると・・・キーボードによるかな。
BlockInputとかじゃマウスも使えなくなるから困るだろうし。
いずれにしてもCtrl+Alt+Delは無効にはならないよ
当たり前だけど。
あと、多分キーボードだけ無効にするコマンドは見あたらないので、
めんどくさいかも。
キーボードの掃除とかの為にキーボード無効にするソフトとか
あるはずだからそっち使った方がいいと思う。
- 130 :unnamed.ahk:06/02/01 18:31 ID:???
- キーボードだけフックした上で、スクリプトをハングアップさせてキーボードフックをせき止めてやれば、全てのキーボードが働かなくなるかも?
- 131 :unnamed.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
85KB
0ch BBS 2005-10-08