Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

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

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
Untuk Microsoft Visual C++.NET versi ini Pasal, lihat 307395.
Untuk Microsoft Visual C#.NET versi ini Pasal, lihat 305603.
Untuk versi Microsoft Visual Basic 6.0 ini Pasal, lihat 176391.


DALAM TUGAS 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.

back to the top

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 ProcessPrivate processes() As ProcessPrivate 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 ListViewItemListView1.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				
back to the top

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 OnOption 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 SubEnd 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): Untuk informasi lebih lanjut tentang kelas parsial dan Windows Forms Desainer, kunjungi Website MSDN berikut: 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.

back to the top

REFERENSI

Untuk selengkapnya, lihat Microsoft berikut pengembang Situs Web Network (MSDN): back to the top

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 305602 - Tinjauan Terakhir: 09/24/2011 16:01:00 - Revisi: 2.0

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB305602 KbMtid
Tanggapan
ipt"> Asimov.clickstreamTracker.init();