أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية استخدام Visual Basic .NET أو Visual Basic 2005 إغلاق تطبيق آخر

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية305602
للحصول على إصدار Microsoft Visual C++ .NET من هذه المقالة، راجع 307395.
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 305603.
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 176391.


في هذه المهمة


الموجز
توضح هذه المقالة كيفية إغلاق تطبيق من ضمن تطبيق. كما يصف أيضاً كيفية إغلاق مثيل معين من تطبيق آخر، مثل "المفكرة" ، إذا كان أكثر من مثيل التطبيق قيد التشغيل.

back to the top

مناقشة المنطق البرمجة

تقوم بتعريف متغيرات

يلزم متغيرات عدة يتم تعريفه. لأنه يتم استخدام هذه المتغيرات في أساليب متعددة, فإنها يجب أن يتم تعريف خارج أي إجراء بحيث تظل في النطاق. متغير proc تحتوي على مرجع إلى كائن عملية فردية و العمليات عبارة عن صفيف تتضمن كائنات العملية التي يتم إرجاعها بواسطة الأسلوب GetProcessByName:
Private proc As ProcessPrivate processes() As ProcessPrivate procName As String = "notepad"				

للحصول على قائمة مثيلات التطبيق

تشمل التعليمات البرمجية التالية دالة (تسمى buildList في النموذج) التي تسمى كل مرة يتم إنشاء مثيل جديد من المفكرة. هذا النموذج بتخزين معلومات عملية في عنصر تحكم ListView; الرمز لملء عنصر تحكم ListView يتم تضمين فقط من أجل التناسق مع نموذج كامل. الجزء الأكثر أهمية من هذه التعليمة البرمجية هو استدعاء الأسلوب GetProcessByName الفئة العملية. هذا الأسلوب بإرجاع صفيف من الكائنات معالجة يمكن iterated عن طريق استخدام بالنسبة... كل حظر ، كما يلي:
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				

إغلاق مثيل معين من تطبيق

عند تشغيل مثيلات متعددة من تطبيق ما تريد إغلاق مثيل واحد "، يجب أن للتمييز بين هذه العمليات. يستخدم نموذج التالي خاصية معرف كائن العملية لمعرفة العمليات عن بعضها البعض. يتم تخزين الخاصية معرف والخاصية MainWindowTitle (خاصية آخر كائن العملية) في عنصر تحكم ListView. حصول التعليمة البرمجية على العنصر الذي المحدد حالياً في عنصر تحكم ListView يحصل على مرجع إلى العملية بواسطة استخدام الأسلوب GetProcessById فئة معالجة ويغلق تلك العملية بواسطة استدعاء الأسلوب CloseMainWindow كما يلي:
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				

قم بإغلاق كافة مثيلات تطبيق

إغلاق كافة مثيلات تطبيق معين مباشرة نسبياً. يمكن تقود الصفيف التي تم إرجاعها بواسطة الأسلوب GetProcessByName استدعاء الأسلوب CloseMainWindow على كل كائن العملية كما يلي:
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

الخطوات التالية لإنشاء في نموذج

  1. بدء تشغيل تطبيق Windows Visual Basic جديد في Visual Studio .NET أو في Visual Studio 2005.
  2. انقر بزر الماوس الأيمن فوق النموذج الافتراضي Form1.vb ، ثم حدد عرض التعليمات البرمجية.
  3. استبدال الرمز في إطار التعليمات البرمجية التالية:
    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					
    ملاحظة أنه يجب تغيير التعليمات البرمجية في Visual Basic 2005. بشكل افتراضي، يُنشئ Visual Basic ملفين المشروع عند إنشاء نماذج Windows المشروع. إذا تم تسمية النموذج Form1, يتم تسمية الملفين التي تمثل النموذج Form1.vb و Form1.Designer.vb. كتابة التعليمات البرمجية في ملف Form1.vb. مصمم نماذج Windows بكتابة التعليمة البرمجية في ملف Form1.Designer.vb. مصمم نماذج Windows يستخدم الكلمة الأساسية الجزئية لتقسيم تطبيق Form1 إلى ملفين منفصلة. يمنع هذا السلوك في التعليمات البرمجية التي تم إنشاؤها مصمم من يتم interspersed مع التعليمات البرمجية الخاصة بك.

    لمزيد من المعلومات حول تحسينات اللغة 2005 Visual Basic الجديدة قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب: للحصول على مزيد من المعلومات حول فئات جزئية "و" نماذج Windows مصمم ، قم بزيارة موقع MSDN التالي: ملاحظة من المستحسن طي المنطقة الذي يسمى مصمم النموذج Windows إنشاء التعليمات البرمجية.
  4. قم بتشغيل التطبيق.
  5. انقر فوق ابدأ المفكرة مرة واحدة أو أكثر.
  6. انقر فوق مثيل المفكرة في إطار عنصر تحكم ListView وحدد عملية إغلاق. يتم إغلاق المثيل المحدد المفكرة التي حددتها. يمكنك أيضاً تحديد إغلاق كافة العمليات لإغلاق كافة مثيلات المفكرة قيد التشغيل.

الملاحظات

يستخدم هذا النموذج خاصية معرف فئة معالجة للتمييز بين مثيلات التطبيق. تعتبر الخاصية معرف مرشح جيد لهذه المهمة بسبب معالجة كافة معرفات فريدة. ونفس الشيء صحيح الخاصية WindowHandle بحيث يمكنك أيضاً استخدام الخاصية WindowHandle كائن العملية للتمييز بين مثيلات التطبيق.

يمكن استخدام خصائص أخرى على الرغم من أن تكون أقل well-suited إلى المهمة. على سبيل المثال، في حالة عدم تعرف معرّف العملية للعملية معين أو وجود مقبض الإطار الرئيسي لبرنامج ، يمكنك استخدام الخاصية MainWindowTitle للمساعدة في التعرف على مثيل المناسبة. قد لا تكون الخاصية MainWindowTitle فريد ولكن فإنه يمكن أن تساعدك عزل التطبيق المطلوب.

النموذج في هذه المقالة يستخدم Windows التطبيق و يستخدم أسلوب CloseMainWindow إغلاق التطبيق. لا يعمل CloseMainWindow مع تطبيق غير Windows. إذا لم يكن التطبيق الذي تحاول إغلاق إطار (على سبيل المثال، تطبيق وحدة تحكم) ، يجب استخدام أسلوب إنهاء لإغلاق التطبيق.

back to the top

مراجع

لمزيد من المعلومات، راجع التالي المطور Microsoft Network (MSDN) موقع ويب: back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 305602 - آخر مراجعة: 03/29/2007 08:56:06 - المراجعة: 2.7

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

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB305602 KbMtar
تعليقات
>/html>>ipt" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >}}" href="" ng-click="setLanguage(language);" class="ng-binding" id="language-es-py">Paraguay - Español
Venezuela - Español
did=1&t=">050&did=1&t=">mp;t=">1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("