HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0116
ひこひこインターネットエクスプローラーを終了させるには8未解決


ひこひこ

リンク

2008/1/16(Wed) 19:36:41|NO.13098

インターネットエクスプローラーをHSPの方から起動させたり、
終了させたりしようとしています。起動はexecを使うとして、
終了はどのようにしたらよいか分かりません。どなたか教えて
もらえませんか。



この記事に返信する


KENTA

リンク

2008/1/16(Wed) 22:27:19|NO.13106

IEの起動や終了をするには、COMオブジェクトを使用すればできます。

URL="http://www.yahoo.co.jp" //表示するサイト screen 0,640,480 button gosub "起動",*exec_ button gosub "終了",*exit stop *exec_ if exec0!0 :return //起動していれば処理しない exec0=1 //IEオブジェクト作成 newcom objIE, "InternetExplorer.Application" objIE("Silent") = 1 objIE("Visible") = 1 objIE->"Navigate" URL //サイトを表示 return *exit if exec0!1 :return //起動していなければ処理しない exec0=0 objIE->"Quit" delcom objIE //COMオブジェクト廃棄 return



ひこひこ

リンク

2008/1/17(Thu) 22:17:05|NO.13110

KENTAさんありがとうございました。示していただいたスクリプトで、
思っていた通りのことができました。ところが、スクリプトを理解し
ないままいじっているうちに、次のようなことになってしまいました。
すみませんが、対処の仕方を教えていただけませんか。
1、起動ボタンを押すと、ヤフーの画面と接続中の画面の2つが起動する。
2、終了ボタンを押すと、接続中の画面だけが終了し、ヤフーの画面は残る。
3、2の代わりに、接続中の画面を画面右上の×で終了させ、ヤフーの画面を
  終了ボタンで終了させようとすると、エラー30(無効な名前がパラメー
  ターに指定してあります)がでる。
自分ではどうする事も出来ないので、助けていただけませんか。



KENTA

リンク

2008/1/17(Thu) 23:07:00|NO.13113

>1、起動ボタンを押すと、ヤフーの画面と接続中の画面の2つが起動する。
newcom命令でオブジェクト型変数のobjIEを再び作成し直してしまうので、
もうひとつ作成されたIEが開いてしまうのです。

>2、終了ボタンを押すと、接続中の画面だけが終了し、ヤフーの画面は残る。
遠隔操作をしているだけなので終了するには、
HSPの方から終了の命令を送らなければ、終了できません。

onexit *owari
を最初の行に追加して、

*owari gosub *exit //起動していれば、終了する end
を最後の行に追加してみてください。

>3、2の代わりに、接続中の画面を画面右上の×で終了させ、ヤフーの画面を
>  終了ボタンで終了させようとすると、エラー30(無効な名前がパラメー
>  ターに指定してあります)がでる。
遠隔操作しているIEが終了している状態で終了の命令を送っても、
その命令は失敗してしまうのでエラーが出るのです。



KENTA

リンク

2008/1/17(Thu) 23:40:11|NO.13114

すいません。
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



a

リンク

2008/1/17(Thu) 23:42:23|NO.13115

KENTAさんのにちょっと付け足し版

#include "user32.as" //↑ IsWindowを利用するため URL="http://www.yahoo.co.jp" //表示するサイト screen 0,640,480 button gosub "IE起動",*exec_ button gosub "IE終了",*exit onexit *owari stop *exec_ if exec0!0 :return //起動していれば処理しない exec0=1 //IEオブジェクト作成 newcom objIE, "InternetExplorer.Application" hwndIE = objIE("HWND") //開いたIEのウインドウハンドルを記憶しておく objIE("Silent") = 1 objIE("Visible") = 1 objIE->"Navigate" URL //サイトを表示 return *exit if exec0!1 :return //起動していなければ処理しない IsWindow hwndIE //開いたIEのウインドウが、まだ存在してるか? if stat : objIE->"Quit" //もし存在してればIEを終了させる delcom objIE //COMオブジェクト廃棄 exec0=0 return *owari gosub *exit //起動していれば、終了する end



ひこひこ

リンク

2008/1/18(Fri) 00:31:08|NO.13117

KENTAさん、aさん、お手数をおかけしまして、申し訳ありません。
ただ、KENTAさんの新しいスクリプトでは、接続中の真っ白な画面も
ヤフーの画面もどちらも終了できませんでした。
また、aさんのスクリプトでは接続中の画面しか終了できませんでした。
ところで、今使っているパソコンはVISTAですが、もう一台のXPで試し
たら、画面が2つ起動することはありませんでした。これはOSの違いな
のか、私がスクリプトを理解せずにVISTAのほうに間違ったことをした
ためなのか分かりません。このように考えること自体見当はずれかもし
れませんが、未だ解決していないので、ご教示お願いします。
(記憶がはっきりしないのですが、KENTAさんのスクリプトをVISTAで
初めて実行したときは画面は1つしか起動しなかったような気もします
が・・・、はっきりとは思い出せません。)



KENTA

リンク

2008/1/18(Fri) 16:08:01|NO.13121

>これはOSの違いなのか、私がスクリプトを理解せずにVISTAのほうに
>間違ったことをしたためなのか分かりません。
XPとVISTAの環境の違いで、動作が変わるものもあります。
私のOSはXPなので、私の書き込んだスクリプトはXPでは正常に動作しますが、
VISTAで正常に動作するかは分かりません。
ですので、私の書き込んだスクリプトはXPで実行してみることをお勧めします。

Windows Vista対応についての情報 :http://hsp.tv/make/vista.html



a

リンク

2008/1/18(Fri) 22:32:54|NO.13134

自分の所はXP+IE6です。
OSじゃなく、IE7がタブブラウザになったからみたいだね。
http://www.happy2-island.com/vbs/cafe02/capter00711.shtml
に、IE7用の方法みつけた。
起動処理だけ、IE6以下とIE7以上で、少しだけ異なるものにしないといけないみたい。

HSP上からIEのバージョン調べる簡単な方法ないものかな?
強引な方法なら・・・でもセキュリティーの厳しいVistaで動くか?
ん〜〜、Vistaもってねえー orz



ONION software Copyright 1997-2021(c) All rights reserved.