tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^13: WebBrowserコントロールによるWebページにつきまして
投稿日: 2018/02/16(Fri) 06:56
投稿者susu
魔界の仮面弁士 様

返答をして頂きまして、ありがとうございました。

>> 終了時には作成した名前("Project1.exe")を削除したいと思っています。

>何故削除したいのでしょうか?
はい、
レジストリ内容の変更をしたくなかったからです。
使う時に追加して終了時に削除しますとレジストリは変更されないと思い安心ができるからです。
それが削除にしたかった理由です。

>FEATURE_BROWSER_EMULATION は、起動時に読み込まれる設定なのですから、
>起動する前には既にレジストリに書き込んだ状態でなければなりません。

Private Sub Form_Load()

   Dim regKey As String
 @レジストリに書き込みます。                      
   regKey = "HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\"
     ・
     ・
End Sub

実行ファイルが起動しますとLoadを行ってレジストリに書き込んだ状態になります。
      
FORM1にありますボタンをクリックしてFORM2を開きます。

FORM2にWebBrowser1を設けFORM2のボタンでAアプリ(WebBrowserコントロール)を起動します。

FORM2の終了ボタンでFORM2を閉じてアプリも終了します。

FORM1を閉じたときにレジストリに書き込んだ追加を削除します。

>再起動、ということは、そのアプリは一旦終了してしまうわけですから、
>そこで削除してしまうのは都合が悪いと思うのですが。
不具合の発生が高まるのではないかと感じることができました。

>どうしても動的に生成・削除したいのであれば、レジストリを操作するアプリと
>そこから呼び出されるアプリを別の exe に分けてしまうのはどうでしょう。
はい、安全も考えアプリを別の exe に分ける方法は良いと思いました。
>ただしいずれの方法を使うにしても、アプリ起動中に強制終了した場合に
>レジストリが削除されずに残ってしまうことを許容できるのかどうか、とか、
>Project1.exe が複数起動された場合にどのように振舞うのか、といった点について
>しっかりと検討しておかねばならないでしょう。
はい、アプリ起動中に強制終了がありますと複数起動など考え付かない事が一番心配になります。

>> 既に同名で作成されていた場合は削除しないように考えています。
>起動時に RegRead しておけば、そのエントリが起動前に作成済みかどうかを調べられますね。
>作成済みで無かった場合には、終了時に削除する必要が無いと判断することが出来そうです。

>とはいえそれを実現するには、今回述べた「再起動」の判定仕様を設計することが先決ですね。
はい、「再起動」を考えますと色々な問題に対応しなければならないことを考えさせられました。
「再起動」につきましては、本当に難しいです。

>> Call DeleteSetting(" ", " ", "Project1.exe")
>> 終了時の"  "に何を記述すれば分かりませんでした。
はい、今回、分りました。

>DeleteSetting は SaveSetting で書き込まれたエントリーのために使われるものです。
>今回は RegWrite メソッドで書き込んでいるのですから、DeleteSetting は無関係です。
はい、今回、分りました。

>DeleteSetting / SaveSetting / GetSetting / GetAllSettings によって
>アクセスされるレジストリエントリーは、
> HKEY_CURRENT_USER\Software\VB and VBA Program Settings\
>の配下に限定されます。今回の用途には使えません。
はい、分りました。Call DeleteSetting・・

>今回のケースでは、
> CreateObject("WScript.Shell").RegDelete "HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION\Project1.exe"
>を用いて削除します。
はい、分りました。ありがとうございした。

>ただし先にも述べたとおり、この手のレジストリ設定は、本来は
>そのアプリケーションのインストーラーによって制御されるべきです。

>もしくは該当のアプリケーションに対して、設定画面を設けるようにし、
>その中でレジストリの編集や削除を実施するようにします。
はい、分りました。一番、安全、安心と感じました。
VB6の実行ファイルにレジストリ設定画面を設けますと@、A、「再起動」、「再起動」
の判定仕様を設計、
>アプリ起動中に強制終了した場合に
>レジストリが削除されずに残ってしまうことを許容できるのかどうか、とか、
>Project1.exe が複数起動された場合にどのように振舞うのか、といった点について
>しっかりと検討しておかねばならないでしょう。
などの必要がなくなります。間違っていなければ、設定画面を設けて、アプリを別の exe に分
けますとインストーラーにる制御になると思われましたので、この方法で行いたいと思います。

>No.16395
>詳細は下記をご覧ください。
 https://msdn.microsoft.com/library/ee330730.aspx#browser_emulation
IEのバージョン応じた値が設定できるようになりました。ありがとうございました。

キー名の日本語は見た事がありませんが、実際にキー名を"Project1.exe"から"テスト.exe"の日本語で
行いましたが問題なく動作しました。日本語にすることで何か問題があるのか疑問に思いました。

レジストリに関しては、色々なご指摘をしてもらうことで慎重に考えなければならない事を学びました。
使用する場合ば、少しでも安全、安心な方法として設定画面を設ける方法に決めました。
本当にありがとうございました。心より感謝申し上げます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。