C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: InternetExplorerを強制終了させたい


(過去ログ 61 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■35067 / inTopicNo.1)  InternetExplorerを強制終了させたい
  
□投稿者/ W (1回)-(2009/04/18(Sat) 17:15:50)

分類:[VB.NET/VB2005 以降] 

開発環境:VS2008 .NETFramework3.5 言語:VB.NET

たとえばButton1を押した後にInternetExplorerを強制終了(タスクマネージャで言うプロセスの終了)をさせたいのですが
                    p = System.Diagnostics.Process.GetProcessById("IEXPLORE")
                    p.Kill()
とやっても終了しないどころか後のコードも実行されなくなってしまいます。
どのようにしたら強制終了出来るのでしょうか?ご指導よろしくお願いします。

引用返信 編集キー/
■35068 / inTopicNo.2)  Re[1]: InternetExplorerを強制終了させたい
□投稿者/ 魔界の仮面弁士 (1048回)-(2009/04/18(Sat) 18:37:59)
2009/04/18(Sat) 18:47:47 編集(投稿者)
No35067 (W さん) に返信
> たとえばButton1を押した後にInternetExplorerを強制終了(タスクマネージャで言うプロセスの終了)をさせたいのですが

フォームに、ListBox と Button を貼っておいてください。


Option Strict On
Imports Item = System.Collections.Generic.KeyValuePair(Of Object, String)
Imports System.Runtime.InteropServices
Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        If ListBox1.SelectedIndex > 0 Then
            CloseIE(ListBox1.SelectedIndex)
        End If
    End Sub

    Private Sub CloseIE(ByVal index As Integer)
        Dim item As Item = DirectCast(ListBox1.Items(index), Item)
        Dim internetExplorer As Object = item.Key
        Dim LocationURL As String = CallByName(internetExplorer, "LocationURL", vbGet).ToString()
        Dim locationName As String = item.Value
        Dim message As String = "ブラウザを閉じますか?" & vbCrLf & locationName & vbCrLf & LocationURL
        If MessageBox.Show(message, "IE終了", MessageBoxButtons.YesNo, MessageBoxIcon.Question) _
                = System.Windows.Forms.DialogResult.Yes Then
            ListBox1.Items.RemoveAt(index)
            CallByName(internetExplorer, "Quit", vbMethod)
            Marshal.ReleaseComObject(internetExplorer)
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Dim shellWindows As Object = Activator.CreateInstance( _
            Type.GetTypeFromCLSID(New Guid("{9BA05972-F6A8-11CF-A442-00A0C90A8F39}")))
        Dim cnt As Integer = CInt(CallByName(shellWindows, "Count", vbGet))

        ListBox1.BeginUpdate()
        For c As Integer = 0 To cnt - 1
            Dim internetExplorer As Object = CallByName(shellWindows, "Item", vbMethod, c)
            Dim doc As Object = CallByName(internetExplorer, "Document", vbGet)
            Dim docType As String = TypeName(doc)
            Marshal.ReleaseComObject(doc)
            If docType Like "*HTMLDocument*" Then
                Dim locationName As String = CallByName(internetExplorer, "LocationName", vbGet).ToString()
                ListBox1.Items.Add(New Item(internetExplorer, locationName))
            Else
                Marshal.ReleaseComObject(internetExplorer)
            End If
        Next
        Marshal.ReleaseComObject(shellWindows)
        ListBox1.DisplayMember = "Value"
        ListBox1.EndUpdate()
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing
        For Each listItem As Item In ListBox1.Items
            Marshal.ReleaseComObject(listItem.Key)
        Next
        ListBox1.Items.Clear()
    End Sub
End Class

引用返信 編集キー/
■35235 / inTopicNo.3)  Re[2]: InternetExplorerを強制終了させたい
□投稿者/ W (2回)-(2009/04/22(Wed) 17:36:22)
回答ありがとうございます。
返信遅くなってすみません。

> フォームに、ListBox と Button を貼っておいてください。
イベントで発生させたいのでボタンなど配置したくないのですが...。
(自分専用のランチャーみたいなものを作ってます)
引用返信 編集キー/
■35242 / inTopicNo.4)  Re[3]: InternetExplorerを強制終了させたい
□投稿者/ aetos (134回)-(2009/04/22(Wed) 18:16:33)
aetos さんの Web サイト
No35235 (W さん) に返信
> 回答ありがとうございます。
> 返信遅くなってすみません。
>
>>フォームに、ListBox と Button を貼っておいてください。
> イベントで発生させたいのでボタンなど配置したくないのですが...。
> (自分専用のランチャーみたいなものを作ってます)

このサンプルのキモ、すなわち、実際に IE を終了させているのはコードのどの部分なのかを探しましょう。
その部分だけをうまく、あなたが用意したイベントの中に応用(応用=そのまんまコピペじゃないですよ)すればいいでしょう。
引用返信 編集キー/
■35243 / inTopicNo.5)  Re[1]: InternetExplorerを強制終了させたい
□投稿者/ Jitta on the way (304回)-(2009/04/22(Wed) 19:08:58)
No35067 (W さん) に返信

IE8 だと、プロセスが複数あり、大元を殺さないと復活しますが、その辺はどの様にお考えでしょう?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -