Cara menggunakan Visual Basic.NET atau Visual Basic 2005 untuk menutup aplikasi lain

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 305602 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menjelaskan cara untuk menutup aplikasi dari dalam aplikasi. Ini juga menjelaskan bagaimana menutup contoh khusus dari aplikasi lain, seperti Notepad, jika lebih dari satu contoh dari aplikasi berjalan.

Diskusi tentang pemrograman logika

Menyatakan variabel

Beberapa variabel perlu didefinisikan. Karena variabel-variabel ini digunakan dalam beberapa metode, mereka harus didefinisikan di luar dari setiap prosedur jadi bahwa mereka tetap dalam lingkup. The proc variabel memegang referensi ke objek proses individu, dan proses adalah sebuah array yang memegang objek proses yang dikembalikan oleh The GetProcessByName metode:
Private proc As Process
Private processes() As Process
Private procName As String = "notepad"
				

Mendapatkan daftar contoh aplikasi

Kode berikut terdiri dari fungsi (disebut buildList dalam sampel) yang disebut masing-masing waktu contoh baru dari Notepad dibuat. Sampel ini menyimpan informasi proses di ListView kontrol; kode untuk mengisi ListView kontrol disertakan hanya untuk konsistensi dengan lengkap sampel. Yang paling penting bagian dari kode ini adalah panggilan untuk GetProcessByName metode Proses kelas. Metode ini mengembalikan array Proses benda-benda, yang dapat mengulangi oleh menggunakan Untuk...Setiap blok, sebagai berikut:
Dim itemAdd As ListViewItem
ListView1.Items.Clear()

processes = Process.GetProcessesByName(procName)

For Each proc In processes
    itemAdd = ListView1.Items.Add(proc.MainWindowTitle)
    itemAdd.SubItems.Add(proc.Id.ToString)
Next
				

Menutup contoh khusus aplikasi

Ketika beberapa contoh dari aplikasi berjalan, dan Anda ingin menutup satu contoh, Anda harus membedakan antara proses-proses tersebut. The mengikuti contoh menggunakan Id properti Proses objek untuk memberitahu proses terpisah. The Id properti dan MainWindowTitle properti (properti lain dari Proses objek) disimpan dalam ListView kontrol. Kode memperoleh item yang dipilih dalam The ListView kontrol, mendapatkan referensi untuk proses dengan menggunakan GetProcessById metode Proses kelas, dan menutup yang memproses dengan menelepon CloseMainWindow metode, sebagai berikut:
Try
    Dim procID As Integer = _  
     System.Convert.ToInt32(ListView1.SelectedItems(0).SubItems(1).Text)
    Dim tempProc As Process = Process.GetProcessById(procID)
    tempProc.CloseMainWindow()
    tempProc.WaitForExit()
    buildList()
Catch
    MessageBox.Show("Please select a process in the ListView before clicking this button." + _
      " Or the Process may have been closed by somebody.")
    buildList()
End Try
				

Tutup semua contoh dari aplikasi

Menutup semua contoh dari aplikasi tertentu adalah relatif langsung. Anda dapat berjalan array yang dikembalikan oleh GetProcessByName metode dan panggilan CloseMainWindow metode pada setiap proses objek, sebagai berikut:
Try
  For Each proc In processes
    proc.CloseMainWindow()
    proc.WaitForExit()
  Next
  buildList()
Catch ex As System.NullReferenceException
  MessageBox.Show("No instances of Notepad running.")      
End Try
				

Langkah-langkah untuk membangun sampel

  1. Mulai Visual Basic Windows aplikasi baru di Visual Studio.NET atau dalam Visual Studio 2005.
  2. Bentuk standar, Form1.vb, klik kanan dan pilih Lihat kode.
  3. Mengganti kode yang ada di dalam jendela kode dengan berikut:
    Option Strict On
    Option Explicit On 
    
    Public Class Form1
      Inherits System.Windows.Forms.Form
    
    #Region " Windows Form Designer generated code "
    
      Public Sub New()
        MyBase.New()
    
        'This call is required by the Windows Form Designer.
        InitializeComponent()
    
        'Add any initialization after the InitializeComponent() call.
    
      End Sub
    
      'Form overrides dispose to clean up the component list.
      Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
          If Not (components Is Nothing) Then
            components.Dispose()
          End If
        End If
        MyBase.Dispose(disposing)
      End Sub
      Friend WithEvents btnLaunch1 As System.Windows.Forms.Button
      Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
      Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
      Friend WithEvents ListView1 As System.Windows.Forms.ListView
      Friend WithEvents btnCloseAll As System.Windows.Forms.Button
      Friend WithEvents btnClose1 As System.Windows.Forms.Button
    
      'Required by the Windows Form Designer.
      Private components As System.ComponentModel.Container
    
      'NOTE: The following procedure is required by the Windows Form Designer
      'It can be modified by using the Windows Form Designer.  
      'Do not modify it by using the code editor.
      <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.btnClose1 = New System.Windows.Forms.Button()
        Me.ListView1 = New System.Windows.Forms.ListView()
        Me.ColumnHeader1 = New System.Windows.Forms.ColumnHeader()
        Me.ColumnHeader2 = New System.Windows.Forms.ColumnHeader()
        Me.btnCloseAll = New System.Windows.Forms.Button()
        Me.btnLaunch1 = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        '
        'btnClose1
        '
        Me.btnClose1.Location = New System.Drawing.Point(160, 176)
        Me.btnClose1.Name = "btnClose1"
        Me.btnClose1.Size = New System.Drawing.Size(112, 32)
        Me.btnClose1.TabIndex = 4
        Me.btnClose1.Text = "Close Selected Process"
        '
        'ListView1
        '
        Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2})
        Me.ListView1.Location = New System.Drawing.Point(22, 8)
        Me.ListView1.MultiSelect = False
        Me.ListView1.Name = "ListView1"
        Me.ListView1.Size = New System.Drawing.Size(250, 152)
        Me.ListView1.TabIndex = 7
        Me.ListView1.View = System.Windows.Forms.View.Details
        '
        'ColumnHeader1
        '
        Me.ColumnHeader1.Text = "Window Title"
        Me.ColumnHeader1.Width = 160
        '
        'ColumnHeader2
        '
        Me.ColumnHeader2.Text = "Process ID"
        Me.ColumnHeader2.Width = 85
        '
        'btnCloseAll
        '
        Me.btnCloseAll.Location = New System.Drawing.Point(160, 216)
        Me.btnCloseAll.Name = "btnCloseAll"
        Me.btnCloseAll.Size = New System.Drawing.Size(112, 32)
        Me.btnCloseAll.TabIndex = 3
        Me.btnCloseAll.Text = "Close All Processes"
        '
        'btnLaunch1
        '
        Me.btnLaunch1.Location = New System.Drawing.Point(32, 176)
        Me.btnLaunch1.Name = "btnLaunch1"
        Me.btnLaunch1.Size = New System.Drawing.Size(112, 72)
        Me.btnLaunch1.TabIndex = 1
        Me.btnLaunch1.Text = "Start Notepad"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListView1, Me.btnClose1, Me.btnCloseAll, Me.btnLaunch1})
        Me.Name = "Form1"
        Me.Text = "Process Example"
        Me.ResumeLayout(False)
    
      End Sub
    
    #End Region
    
      Private procName As String = "notepad"
      Private proc As Process
      Private processes() As Process
      Private specialFolder As String = System.Environment.GetFolderPath(Environment.SpecialFolder.System)
    
      Private Sub buildList()
        'this sub populates the listview control with the instances of 'procName'
        'that are currently running.
        Dim itemAdd As ListViewItem
        ListView1.Items.Clear()
    
        processes = Process.GetProcessesByName(procName)
    
        For Each proc In processes
          itemAdd = ListView1.Items.Add(proc.MainWindowTitle)
          itemAdd.SubItems.Add(proc.Id.ToString)
        Next
    
      End Sub
    
    
      Private Sub btnLaunch1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLaunch1.Click
        'Launch notepad and open the end user license agreement.
        Dim pInfo As New ProcessStartInfo()
        pInfo.FileName = specialFolder & "\eula.txt"
        pInfo.WindowStyle = ProcessWindowStyle.Minimized
        Dim p As Process = Process.Start(pInfo)
        p.WaitForInputIdle()
        buildList()
      End Sub
    
    
      Private Sub btnClose1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose1.Click
        'Close one of the instances of notepad based on the selected item in the ListView.
        'There are several ways to identify a process. For example,
        'you can use the mainwindowtitle, windowhandle, or processname, depending  
        'on your needs. The process ID is used here because there may be several
        'windows open with the same title.
        Try
          Dim procID As Integer = System.Convert.ToInt32(ListView1.SelectedItems(0).SubItems(1).Text)
          Dim tempProc As Process = Process.GetProcessById(procID)
          tempProc.CloseMainWindow()
          tempProc.WaitForExit()
          buildList()
        Catch
          MessageBox.Show("Please select a process in the ListView before clicking this button." + _
          " Or the Process may have been closed by somebody.")
          buildList()
        End Try
      End Sub
    
      Private Sub btnCloseAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseAll.Click
        'Walk the process array and close all processes.
        Try
          For Each proc In processes
            proc.CloseMainWindow()
            proc.WaitForExit()
          Next
          buildList()
        Catch ex As System.NullReferenceException
          MessageBox.Show("No instances of Notepad running.")      
        End Try
      End Sub
    
      Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        'Make sure that you do not leave any instances running.
        If Not (processes Is Nothing) Then
          If (processes.Length <> 0) Then
            Me.btnCloseAll_Click(Me, e)
          End If
        End If
      End Sub
    
    End Class
    					
    Catatan Anda harus mengubah kode pada Visual Basic 2005. Secara default, Visual Dasar menciptakan dua file untuk proyek ketika Anda membuat Windows Forms proyek. Jika bentuk bernama Form1, kedua file yang mewakili bentuk yang bernama Form1.vb dan Form1.Designer.vb. Anda menulis kode dalam Form1.vb file. Windows Forms Designer menulis kode dalam Form1.Designer.vb file. The Windows Forms Designer menggunakan kata kunci parsial untuk membagi pelaksanaan Form1 menjadi dua file terpisah. Perilaku ini mencegah desainer yang dihasilkan kode dari yang diselingi dengan kode Anda.

    Untuk informasi lebih lanjut tentang baru Visual Basic 2005 bahasa tambahan, kunjungi berikut Situs Web Microsoft Developer Network (MSDN):
    .aspx http://MSDN.Microsoft.com/en-us/library/ms379584 (VS.80)
    Untuk informasi lebih lanjut tentang kelas parsial dan Windows Forms Desainer, kunjungi Website MSDN berikut:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
    Catatan Dianjurkan bahwa Anda runtuh daerah yang diberi label Kode Windows Form Designer dihasilkan.
  4. Menjalankan aplikasi.
  5. Klik Jalankan Notepad satu atau lebih kali.
  6. Klik contoh Notepad di ListView jendela kontrol dan pilih Tutup proses. Ini menutup contoh khusus dari Notepad yang Anda pilih. Anda juga dapat memilih Tutup semua proses Tutup semua contoh menjalankan Notepad.

Catatan

Sampel ini menggunakan Id properti Proses kelas untuk membedakan antara contoh dari aplikasi. The Id properti adalah calon yang baik untuk tugas ini karena semua proses ID unik. Hal yang sama dari WindowHandle properti, sehingga Anda juga dapat menggunakan WindowHandle properti Proses objek untuk membedakan antara contoh dari aplikasi.

Properti lainnya juga dapat digunakan, meskipun mereka kurang cocok untuk tugas. Sebagai contoh, jika Anda tidak tahu proses ID proses tertentu atau memiliki pegangan jendela utama, Anda dapat menggunakan MainWindowTitle properti untuk membantu mengidentifikasi contoh yang tepat. The MainWindowTitle properti mungkin tidak unik, tetapi dapat membantu Anda untuk mengisolasi aplikasi yang diinginkan.

Contoh dalam artikel ini menggunakan Windows aplikasi dan mempekerjakan CloseMainWindow metode untuk menutup aplikasi. CloseMainWindow tidak bekerja dengan aplikasi non-Windows. Jika aplikasi bahwa Anda sedang berusaha untuk menutup tidak memiliki jendela (misalnya, konsol aplikasi), Anda harus menggunakan Membunuh metode untuk menutup aplikasi.

REFERENSI

Untuk selengkapnya, lihat Microsoft berikut pengembang Situs Web Network (MSDN):
Proses kelas
.aspx http://MSDN.Microsoft.com/en-us/library/System.Diagnostics.process (VS.71)

Properti

ID Artikel: 305602 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB305602 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:305602

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com