Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để sử dụng Visual Basic.NET hoặc Visual Basic 2005 để đóng một ứng dụng khác

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:305602
Đối với một Microsoft Visual C++.NET Phiên bản này viết, xem 307395.
Đối với một Microsoft Visual C#.NET Phiên bản này viết, xem 305603.
Đối với một phiên bản Microsoft Visual Basic 6.0 này viết, xem 176391.


TRONG NHIỆM VỤ NÀY


TÓM TẮT
Bài viết này mô tả cách để đóng một ứng dụng từ trong ứng dụng. Nó cũng mô tả làm thế nào để đóng một trường hợp cụ thể của một ứng dụng khác, chẳng hạn như Notepad, nếu nhiều hơn một ví dụ của các ứng dụng đang chạy.

back to the top

Thảo luận về lập trình Logic

Khai báo các biến

Nhiều biến cần phải được định nghĩa. Bởi vì các biến này là được sử dụng trong nhiều phương pháp, họ nên được định nghĩa bên ngoài của bất kỳ thủ tục như vậy rằng họ vẫn còn trong phạm vi. Các proc biến giữ một tham chiếu đến một đối tượng quá trình cá nhân, và quy trình là một mảng chứa các đối tượng quá trình đó được trả về bởi các GetProcessByName phương pháp:
Private proc As ProcessPrivate processes() As ProcessPrivate procName As String = "notepad"				

Có được một danh sách các trường hợp ứng dụng

Đoạn mã sau này bao gồm một chức năng (được gọi là buildList trong mẫu) mà được gọi là mỗi thời gian một trường hợp mới của Notepad được tạo ra. Mẫu này lưu các xử lý thông tin trong một ListView kiểm soát; mã để cư trú các ListView điều khiển được bao gồm chỉ cho nhất quán với hoàn toàn mẫu. Các phần quan trọng nhất của mã này là các cuộc gọi đến các GetProcessByName phương pháp của các Quá trình lớp học. Phương pháp này trả về một mảng của Quá trình các đối tượng, mà có thể được iterated hơn bằng cách sử dụng một Cho...Mỗi chặn, như sau:
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				

Đóng một trường hợp cụ thể của một ứng dụng

Khi nhiều trường hợp của một ứng dụng đang chạy, và bạn muốn đóng một ví dụ, bạn phải phân biệt giữa những quy trình. Các sau mẫu sử dụng các ID tài sản của các Quá trình đối tượng cho biết các quá trình ngoài. Các ID bất động sản và các MainWindowTitle bất động sản (bất động sản khác của các Quá trình đối tượng) được lưu trữ trong các ListView kiểm soát. Mã lấy được khoản mục hiện đang được chọn trong các ListView kiểm soát, lấy được một tham chiếu đến quá trình bằng cách sử dụng các GetProcessById phương pháp của các Quá trình lớp học, và đóng cửa quá trình bằng cách gọi các CloseMainWindow phương pháp, như sau:
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				

Đóng tất cả trường hợp của một ứng dụng

Đóng tất cả các trường hợp của một ứng dụng cụ thể là tương đối đơn giản. Bạn có thể đi bộ xe được trả về bởi các GetProcessByName phương pháp và các cuộc gọi các CloseMainWindow phương pháp trên mỗi quá trình đối tượng, như sau:
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

Các bước để xây dựng các mẫu

  1. Bắt đầu một ứng dụng Visual Basic Windows mới trong Visual Phòng thu.NET hay trong Visual Studio 2005.
  2. Nhấp chuột phải vào hình thức mặc định, Form1.vb, và chọn Xem mã.
  3. Thay thế mã trong cửa sổ mã với các sau:
    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					
    Lưu ý Bạn phải thay đổi mã trong Visual Basic 2005. Theo mặc định, trực quan Cơ bản tạo ra hai tập tin cho dự án khi bạn tạo một hình thức Windows dự án. Nếu mẫu được đặt theo tên Form1, hai tập tin mà đại diện cho các hình thức là được đặt tên theo Form1.vb và Form1.Designer.vb. Bạn viết mã trong tập tin Form1.vb. Các nhà thiết kế các hình thức Windows viết mã trong tập tin Form1.Designer.vb. Các Windows Forms nhà thiết kế sử dụng các từ khóa một phần phân chia thực hiện Form1 thành hai tập tin riêng biệt. Hành vi này ngăn không cho các nhà thiết kế tạo ra Mã từ đang được xen kẽ với mã của bạn.

    Để biết thêm về cải tiến Visual Basic 2005 ngôn ngữ mới, truy cập vào sau đây Trang Web Microsoft Developer Network (MSDN): Để biết thêm về các lớp học phần và các hình thức Windows Nhà thiết kế, truy cập vào MSDN Web site sau: Lưu ý Đó là khuyến cáo rằng bạn thu hẹp vùng được dán nhãn Windows mẫu thiết kế được tạo ra mã.
  4. Chạy các ứng dụng.
  5. Nhấp vào Bắt đầu Notepad một hay nhiều lần.
  6. Nhấp vào một thể hiện của Notepad trong các ListView cửa sổ điều khiển và chọn Đóng tiến trình. Điều này đóng cửa trường hợp cụ thể của Notepad mà bạn đã chọn. Bạn cũng có thể chọn Đóng tất cả quá trình để đóng tất cả các trường hợp chạy của Notepad.

Ghi chú

Mẫu này sử dụng các ID tài sản của các Quá trình lớp học để phân biệt giữa các trường hợp của các ứng dụng. Các ID bất động sản là một ứng cử viên tốt cho nhiệm vụ này bởi vì tất cả các xử lý ID là duy nhất. Đúng của các WindowHandle bất động sản, do đó, bạn cũng có thể sử dụng các WindowHandle tài sản của một Quá trình đối tượng để phân biệt giữa các trường hợp của các ứng dụng.

Các tài sản khác cũng có thể được sử dụng, mặc dù chúng là ít hơn rất phù hợp với nhiệm vụ. Ví dụ, nếu bạn không biết quá trình ID của một quá trình cụ thể hoặc đã xử lý của cửa sổ chính, bạn có thể sử dụng các MainWindowTitle bất động sản để giúp xác định ví dụ thích hợp. Các MainWindowTitle bất động sản có thể không duy nhất, nhưng nó có thể giúp bạn để cô lập các ứng dụng mong muốn.

Các mẫu trong bài viết này sử dụng một cửa sổ ứng dụng và sử dụng các CloseMainWindow phương pháp để đóng ứng dụng. CloseMainWindow không làm việc với một không cửa sổ ứng dụng. Nếu ứng dụng bạn đang cố gắng để đóng không có một cửa sổ (ví dụ, một bàn điều khiển ứng dụng), bạn phải sử dụng các Giết chết phương pháp để đóng ứng dụng.

back to the top

TÀI LIỆU THAM KHẢO

Để biết thêm chi tiết, xem các nhà phát triển Microsoft sau đây Trang Web mạng (MSDN): back to the top

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 305602 - Xem lại Lần cuối: 08/27/2011 23:00:00 - Bản sửa đổi: 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 KbMtvi
Phản hồi