スクリプトについての質問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つは動きませんでした。
以上、報告です。


[ ]