soukouさん、teruさん
横から口出し、申し訳ありません。
「スクリプトの機能が使えない」
viewtopic.php?f=70&t=2977&start=0のトピックに書き込みをしたAO_o10yanと申します。
あちらのトピックでSendAMFFO.vbsについて書いた、フォーカスの件は試して
いただけたでしょうか。
私の推測では、スクリプト起動時にフォーカスが何処にあるかで、キーを送る動作に
違いがあると思います。
サイドバーの「お気に入り」や「設定>スクリプト」から実行する際は
メニューバーにフォーカスが無い為、先ずAltキーを送ってメニューバーにフォーカスを
当ててからAMFFOを送るのが正解だと思います。
しかし、メニューバー上の「お気に入り」や「ツール>スクリプト」から実行する場合は、
既にフォーカスが当っているのでAltキーを送る必要がない。
逆にAltキーを送る事でフォーカスが外れてしまうと思います。
さてリンクバーですが、これはちょっと特別なようです。
メニューバーが表示されている状態で、リンクバーからスクリプトを実行する際は、
一旦メニューバーにフォーカスを当てる為にAltキーを送りますが、続けてAMFFOを
送ると正常に動作しないようです。
但し、メニューバーが非表示の状態で実行した際はAltキーに続けてAMFFOを送っても
動作します。
このリンクバーでの挙動の違いを吸収する為には、
WSHShell.SendKeys("%") 'キーを送る
WSHShell.SendKeys("AMFFO") 'キーを送る
の様にAltキーとAMFFOを別にして送る方がSendKeysの誤爆が無いと思われます。
この書式で、サイドバーの「お気に入り」や「設定>スクリプト」からの実行と
リンクバーからの実行ができると思います。
では、メニューバー上の「お気に入り」や「ツール>スクリプト」から実行する場合は
どうでしょう。
Lunascape上の何処にフォーカスが当っているかをスクリプトから知る事ができれば、
送るキーを変更できますが、私にはフォーカスを知る手段がわかりません。
考えられるのは、サイドバーやリンクバーから実行するスクリプトとメニューバーから
実行するスクリプトを分けて使うことです。
但し、以下のスクリプトの様に強引にフォーカスを奪っておいて、実行することは
可能だと思います。
'旧形式のスクリプト
Option Explicit
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
MsgBox("一旦このダイアログにフォーカスを移動させて" & chr(13) & "% と AMFFO のキーを送る")
WSHShell.SendKeys("%") 'キーを送る
WSHShell.SendKeys("AMFFO") 'キーを送る
動作環境
Lunascape Core Version 6.0.2.20465 / Unicode
Operating System Version 5.0.2195
Internet Explorer Version 6.0.2800.1106
最後に
BackUpFavoriteYMD.vbsではSendKeysを使っていないので、フォーカスは関係なく使えるはずです。