Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Ako používať jazyka Visual Basic.NET alebo Visual Basic 2005 zatvorte inej aplikácie

DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:305602
Pre Microsoft Visual C++.NET verzie tohto článok, pozri 307395.
Pre Microsoft Visual C#.NET verzie tohto článok, pozri 305603.
Pre Microsoft Visual Basic 6.0 verziu tohto článok, pozri 176391.


V TEJTO ÚLOHE


SUHRN
Tento článok popisuje zatvorte žiadosť v rámci žiadosti. To tiež popisuje zatvorte určitej inštancie iná aplikácia, ako napríklad Poznámkový blok, ak viac ako jedna inštancia aplikácia je spustená.

back to the top

Diskusiu o programovaní logika

Deklarovať premenné

Niekoľko premenných je potrebné definovať. Pretože tieto premenné sú použité pri viacerých metód, mali by sa definovať mimo akéhokoľvek postupu tak aby zostali v rozsahu. V proc premenná drží odkaz na objekt jednotlivých procesu a procesy je to pole, že vlastní proces objekty, ktoré vrátia The GetProcessByName metóda:
Private proc As ProcessPrivate processes() As ProcessPrivate procName As String = "notepad"				

Zoznam inštancií žiadosti získať

Nasledujúci kód zahŕňa funkciu (nazýva buildList vzorka) sa volá každý čas novú inštanciu programu Poznámkový blok je vytvorený. Táto vzorka ukladá informácie procesu v ListView kontroly; kód na vyplnenie ListView kontrola je zahrnutý len súlad s úplné vzorka. Najdôležitejšou časťou tohto kódexu je volanie GetProcessByName metóda Proces trieda. Táto metóda vráti Proces objekty, ktoré možno iterated nad pomocou Pre...Každý zablokovať, takto:
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				

Zatvorte určitej inštancie žiadosť

Keď sú spustené viaceré inštancie žiadosti a chcete zavrieť jedna inštancia, musia rozlišovať medzi týmito procesmi. V po použití vzorky Identifikácia Vlastnosť Proces objekt povedať vzdialené procesy. V Identifikácia Vlastnosť a MainWindowTitle Vlastnosť (iného majetku Proces objekt) sú uložené v ListView kontrola. Kód získava tovar, ktorý je aktuálne vybratá v The ListView kontrolu, získa odkazom na proces pomocou GetProcessById metóda Proces triedy a zavrie, ktoré spracovávajú volaním CloseMainWindow metóda, takto:
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				

Zatvorte všetky inštancie žiadosti

Zatvoriť všetky inštancie konkrétneho uplatňovania je relatívne jednoduché. Môžete chodiť array, ktorý vráti GetProcessByName metóda a hovor CloseMainWindow metóda na každom spracovať objekt, takto:
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

Kroky na vybudovanie vzorky

  1. Začať novú aplikáciu Visual Basic Windows v vizuálnej Štúdio.ČISTÁ alebo Visual Studio 2005.
  2. Kliknite pravým tlačidlom predvolená forme, Form1.vb, a vyberte Zobraziť kód.
  3. Nahradiť kódom, ktorý je v okne kód s po:
    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					
    Poznámka: Musíte zmeniť kód v jazyku Visual Basic 2005. Predvolene Visual Základné vytvorí dva súbory pre projekt, keď vytvárate formuláre systému Windows projekt. Ak formulár nazýva Form1, sú dva súbory, ktoré predstavujú formu pomenované Form1.vb a Form1.Designer.vb. Môžete napísať kód v súbore Form1.vb. Windows Forms Designer píše kód v súbore Form1.Designer.vb. V Windows Forms Designer používa čiastočné kľúčové slovo rozdeliť vykonávanie Form1 do dvoch samostatných súborov. Toto správanie zabraňuje dizajnér vygenerované kód z sú roztrúsené s váš kód.

    Ďalšie informácie o nové vylepšenia jazyka jazyka Visual Basic 2005, navštívte nasledujúce Webová lokalita Microsoft Developer Network (MSDN): Ďalšie informácie o čiastočné tried a formuláre systému Windows Dizajnér, navštívte nasledovnej webovej lokalite MSDN: Poznámka: Odporúča sa, že môžete zbaliť región, ktorý je označený ako Návrhár formulára Windows generované kód.
  4. Spustenie aplikácie.
  5. Kliknite na položku Spustite program Poznámkový blok raz alebo viackrát.
  6. Kliknite na inštanciu programu Poznámkový blok v ListView kontrolné okno a vyberte Zatvorte proces. Týmto sa zavrie konkrétnej inštancii programu Poznámkový blok, ktorý ste vybrali. Môžete tiež vybrať Zatvorte všetky procesy Zavrite všetky spustené inštancie programu Poznámkový blok.

Poznámky

Táto vzorka používa Identifikácia Vlastnosť Proces Trieda rozlišovať medzi inštancie žiadosti. V Identifikácia Vlastnosť je dobrým kandidátom na túto úlohu, pretože všetky procesu Identifikátory sú jedinečné. To isté platí o WindowHandle vlastníctva, takže môžete použiť aj WindowHandle Vlastnosť Proces objekt rozlišovať medzi inštancie žiadosti.

Ostatné vlastnosti môžu byť tiež použité aj keď sú menej vhodná na úlohu. Napríklad, ak neviete proces ID konkrétny proces alebo mať rukoväť v hlavnom okne, môžete použiť MainWindowTitle Vlastnosť pomôcť identifikovať správne stupňa. V MainWindowTitle vlastnosť nemusí byť unikátne, ale môže pomôcť izolovať po¾adovanú aplikáciu.

Vzorka sa vloží tento článok používa Windows žiadosti a zamestnáva CloseMainWindow metóda na Zatvoriť aplikáciu. CloseMainWindow nepracuje s aplikáciou systému Windows. Ak uplatňovanie že sa pokúšate zatvorte nemá okna (napríklad konzolu uplatňovanie), musíte použiť Zabiť metóda na Zatvoriť aplikáciu.

back to the top

ODKAZY

Ďalšie informácie nájdete v časti Microsoft Developer Webová lokalita spoločnosti Network (MSDN): back to the top

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 305602 – Posledná kontrola: 10/31/2011 09:53:00 – Revízia: 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 KbMtsk
Pripomienky
ms.js">