すいません。
1と3の対処法を書いていませんでした。
>1、起動ボタンを押すと、ヤフーの画面と接続中の画面の2つが起動する。
objIEがCOMオブジェクト型変数かどうかで判断するならば
元のスクリプトに
//IEオブジェクト作成
newcom objIE, "InternetExplorer.Application"
objIE("Silent") = 1
objIE("Visible") = 1
objIE->"Navigate" URL //サイトを表示
を
if vartype(objIE)!6 {
//IEオブジェクト作成
newcom objIE, "InternetExplorer.Application"
objIE("Silent") = 1
objIE("Visible") = 1
objIE->"Navigate" URL //サイトを表示
}
に変更して
delcom objIE //COMオブジェクト廃棄
の下に
objIE=0 //変数を整数に戻す
を追加してみてください
>3、2の代わりに、接続中の画面を画面右上の×で終了させ、ヤフーの画面を
> 終了ボタンで終了させようとすると、エラー30(無効な名前がパラメー
> ターに指定してあります)がでる。
ここではAPIのFindWindowを使って、遠隔操作しているIEがあるかどうか判断して
確認したほうが早いようです。
//1、2、3の問題をを修正したのスクリプト
#uselib "user32"
#cfunc FindWindow "FindWindowA" var,int
IEClass="IEFrame"
onexit *owari
URL="http://www.yahoo.co.jp" //表示するサイト
screen 0,640,480
button gosub "起動",*exec_
button gosub "終了",*exit
stop
*exec_
if vartype(objIE)!6 { //1の問題修正
//IEオブジェクト作成
newcom objIE, "InternetExplorer.Application"
IEhwnd=FindWindow(IEClass,0) //起動したIEのハンドルを取得
objIE("Silent") = 1
objIE("Visible") = 1
objIE->"Navigate" URL //サイトを表示
}
return
*exit
IEhwnds=FindWindow(IEClass,0)
if vartype(objIE)=6 & IEhwnds=IEhwnd { //3の問題修正
objIE->"Quit"
}
if vartype(objIE)=6 {
delcom objIE //COMオブジェクト廃棄
objIE=0 //変数を整数に戻す
}
return
*owari //2の問題修正
gosub *exit //起動していれば、終了する
end