スクリプトについての質問
No.03488
Suezo
さん 12/10/23 11:08
スクリプトについて教えてください。
「SendKeys メソッド」が使えれば便利だなと思いテストしていますが、
思ったように動作しません。
サンプル:タブ1〜3で先頭行を表示
set wsh = CreateObject("Wscript.Shell")
for i = 1 to 3
a = CStr(i)
Command "タブ"+a
wsh.SendKeys("{HOME}")
next
上記スクリプトだと、タブ3(最後の1回)でしか 先頭行に移動しません。
何か間違っているでしょうか?
ちなみに SendKeys の前後に sleep(3000) とか入れてみたけれど変わりませんでした。
アドバイスお願いします。
[
△
]
RE:03488 スクリプトについての質問
No.03490
秀丸担当
さん 12/10/23 11:57
>上記スクリプトだと、タブ3(最後の1回)でしか 先頭行に移動しません。
>何か間違っているでしょうか?
>ちなみに SendKeys の前後に sleep(3000) とか入れてみたけれど変わりませんでし
>た。
試してみたところでは、Wscript.ShellのSendKeysを使うとメッセージキューに
溜まるだけになってしまい、スクリプトが終わった後にキューに溜まっていたも
のがまとめて実行されるという感じになるようです。
今回のケースに限って言えば、
Command "先頭にスクロール"
というようにするといいと思います。
[
△
]
RE:03490 スクリプトについての質問
No.03492
Suezo
さん 12/10/23 17:12
>試してみたところでは、Wscript.ShellのSendKeysを使うとメッセージキューに
>溜まるだけになってしまい、スクリプトが終わった後にキューに溜まっていたも
>のがまとめて実行されるという感じになるようです。
了解しました。そのままでは駄目みたいですね。
で発想を変えて逆のことをしてみました。
通常のVBスクリプトで Wscript.CreateObject("Wscript.Shell") を使い、
使用するコマンドは全てキー割り当てして、SendKeys で記述し、
リンクバーに登録するときに「script:」を付けずにそのまま登録
したら動作しました。(下記)
set wsh1 = Wscript.CreateObject("Wscript.Shell")
wsh1.SendKeys("^1") 'タブ1表示
for i = 1 to 40
wsh1.SendKeys("{HOME}") '先頭へ
wsh1.SendKeys("^r") '次のタブのキー割り当て
next
wsh1.SendKeys("^1") 'タブ1に戻る
ちなみにこちらの方がタブ切替時のもたつきがなくスピードがかなり速かったです。
あと、これがやりたかったのは別のキーカスタマイズソフトで変更した
キー割り当ても動くんじゃないかなと思ったからで、2つ試してみたところ、
1つは動いて1つは動きませんでした。
以上、報告です。
[
△
]