Cara menggunakan Visual C# untuk menutup aplikasi lain

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

Pada Halaman ini

RINGKASAN

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

Diskusi tentang pemrograman logika

Menyatakan variabel

Beberapa variabel harus didefinisikan. Karena variabel-variabel ini digunakan dalam beberapa metode, mereka harus didefinisikan di luar dari setiap prosedur jadi bahwa mereka tetap dalam lingkup. Pertama variabel adalah sebuah array yang memegang obyek yang dikembalikan oleh proses GetProcessByName metode, dan variabel string yang digunakan untuk menyimpan nama proses procName:
private Process[] processes;
private string procName = "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 melalui Untuk...Setiap blok:
ListViewItem itemAdd ; 
ListView1.Items.Clear();
processes = Process.GetProcessesByName(procName);
foreach (Process proc in processes)
    {
        itemAdd = ListView1.Items.Add(proc.MainWindowTitle);
        itemAdd.SubItems.Add(proc.Id.ToString());
    }
				

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:
try
{         
	int procID=System.Convert.ToInt32(ListView1.SelectedItems[0].SubItems[1].Text);
	Process tempProc=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();
}
				

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
{
	foreach (Process proc in processes)
	{
		proc.CloseMainWindow();
		proc.WaitForExit();
	}
	buildList();
}
catch (System.NullReferenceException)
{
	MessageBox.Show("No instances of Notepad running.");
}
				

Langkah-langkah untuk membangun sampel

  1. Mulai Visual C# Windows aplikasi baru dalam Visual Studio .NET.
  2. Bentuk standar, Form1.cs, klik kanan dan pilih Lihat kode.
  3. Mengganti kode yang ada di dalam jendela kode dengan berikut:
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Diagnostics;
    
    namespace closeApplication_cs
    {
    	/// <summary>
    	/// Summary description for Form1.
    	/// </summary>
    	public class Form1 : System.Windows.Forms.Form
    	{
    		internal System.Windows.Forms.Button btnCloseAll;
    		internal System.Windows.Forms.ColumnHeader ColumnHeader2;
    		internal System.Windows.Forms.ColumnHeader ColumnHeader1;
    		internal System.Windows.Forms.Button btnLaunch1;
    		internal System.Windows.Forms.ListView ListView1;
    		internal System.Windows.Forms.Button btnClose1;
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		private System.ComponentModel.Container components = null;
    
    		private Process[] processes;
    		private string procName = "Notepad";
    		private string specialFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.System);
    
    		public Form1()
    		{
    			// 
    			// Required for Windows Form Designer support.
    			// 
    			InitializeComponent();
    			// 
    			// To do: Add any constructor code after the InitializeComponent call.
    			// 
    		}
    
    		/// <summary>
    		/// Clean up any resources that are being used.
    		/// </summary>
    		protected override void Dispose( bool disposing )
    		{
    			if( disposing )
    			{
    				if (components != null) 
    				{
    					components.Dispose();
    				}
    			}
    			base.Dispose( disposing );
    		}
    
        #region Windows Form Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{
    			this.btnClose1 = new System.Windows.Forms.Button();
    			this.ColumnHeader2 = new System.Windows.Forms.ColumnHeader();
    			this.ColumnHeader1 = new System.Windows.Forms.ColumnHeader();
    			this.btnCloseAll = new System.Windows.Forms.Button();
    			this.btnLaunch1 = new System.Windows.Forms.Button();
    			this.ListView1 = new System.Windows.Forms.ListView();
    			this.SuspendLayout();
    			// 
    			// btnClose1
    			// 
    			this.btnClose1.Location = new System.Drawing.Point(160, 176);
    			this.btnClose1.Name = "btnClose1";
    			this.btnClose1.Size = new System.Drawing.Size(112, 32);
    			this.btnClose1.TabIndex = 4;
    			this.btnClose1.Text = "Close Selected Process";
    			this.btnClose1.Click += new System.EventHandler(this.btnClose1_Click);
    			// 
    			// ColumnHeader2
    			// 
    			this.ColumnHeader2.Text = "Process ID";
    			this.ColumnHeader2.Width = 85;
    			// 
    			// ColumnHeader1
    			// 
    			this.ColumnHeader1.Text = "Window Title";
    			this.ColumnHeader1.Width = 160;
    			// 
    			// btnCloseAll
    			// 
    			this.btnCloseAll.Location = new System.Drawing.Point(160, 216);
    			this.btnCloseAll.Name = "btnCloseAll";
    			this.btnCloseAll.Size = new System.Drawing.Size(112, 32);
    			this.btnCloseAll.TabIndex = 3;
    			this.btnCloseAll.Text = "Close All Processes";
    			this.btnCloseAll.Click += new System.EventHandler(this.btnCloseAll_Click);
    			// 
    			// btnLaunch1
    			// 
    			this.btnLaunch1.Location = new System.Drawing.Point(32, 176);
    			this.btnLaunch1.Name = "btnLaunch1";
    			this.btnLaunch1.Size = new System.Drawing.Size(112, 72);
    			this.btnLaunch1.TabIndex = 1;
    			this.btnLaunch1.Text = "Start Notepad";
    			this.btnLaunch1.Click += new System.EventHandler(this.btnLaunch1_Click);
    			// 
    			// ListView1
    			// 
    			this.ListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
    																																								this.ColumnHeader1,
    																																								this.ColumnHeader2});
    			this.ListView1.Location = new System.Drawing.Point(22, 8);
    			this.ListView1.MultiSelect = false;
    			this.ListView1.Name = "ListView1";
    			this.ListView1.Size = new System.Drawing.Size(250, 152);
    			this.ListView1.TabIndex = 7;
    			this.ListView1.View = System.Windows.Forms.View.Details;
    			// 
    			// Form1
    			// 
    			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    			this.ClientSize = new System.Drawing.Size(292, 266);
    			this.Controls.AddRange(new System.Windows.Forms.Control[] {
    																																	this.btnCloseAll,
    																																	this.btnLaunch1,
    																																	this.ListView1,
    																																	this.btnClose1});
    			this.Name = "Form1";
    			this.Text = "Process Example";
    			this.Closing += new System.ComponentModel.CancelEventHandler(this.closing);
    			this.Load += new System.EventHandler(this.Form1_Load);
    			this.ResumeLayout(false);
    
    		}
        #endregion
      
    		[STAThread]
    		static void Main() 
    		{
    			Application.Run(new Form1());
    		}
      
    		private void buildList()
    		{
    			ListViewItem itemAdd ; 
    			ListView1.Items.Clear();
    			processes = Process.GetProcessesByName(procName);
    			foreach (Process proc in processes)
    			{
    				itemAdd = ListView1.Items.Add(proc.MainWindowTitle);
    				itemAdd.SubItems.Add(proc.Id.ToString());
    			}
    		}
    
    		private void btnLaunch1_Click(object sender, System.EventArgs e)
    		{
    			ProcessStartInfo p = new ProcessStartInfo();
    			p.FileName = specialFolder + @"\eula.txt";
    			p.WindowStyle = ProcessWindowStyle.Minimized ;
    			Process proc =Process.Start(p);
    			proc.WaitForInputIdle();
    			buildList();
    		}
    		private void Form1_Load(object sender, System.EventArgs e)
    		{
          
    		}
    
    		private void btnClose1_Click(object sender, System.EventArgs e)
    		{
    			try
    			{         
    				int procID=System.Convert.ToInt32(ListView1.SelectedItems[0].SubItems[1].Text);
    				Process tempProc=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();
    			}
    		}
    
    		private void btnCloseAll_Click(object sender, System.EventArgs e)
    		{
    			try
    			{
    				foreach (Process proc in processes)
    				{
    					proc.CloseMainWindow();
    					proc.WaitForExit();
    				}
    				buildList();
    			}
    			catch (System.NullReferenceException)
    			{
    				MessageBox.Show("No instances of Notepad running.");
    			}
    		}
    
    		private void closing(object sender, System.ComponentModel.CancelEventArgs e)
    		{
    			//Make sure that you do not leave any instances running.
    			if (processes != null && processes.Length!=0)
    				this.btnCloseAll_Click(this,e);
    		}
    	}
    } 
    						
    Catatan Kode harus berubah dalam Visual Studio 2005. Untuk informasi lebih lanjut, kunjungi Website MSDN berikut:
    Secara default, bila Anda membuat proyek Windows Forms, Visual C# menambahkan salah satu bentuk proyek yang dinamai Form1. Dua file yang mewakili bentuk yang disebut Form1.cs dan Form1.designer.cs. Anda menulis kode dalam Form1.cs. Form1.designer.cs file adalah di mana Windows Forms Designer menulis kode sumber yang mengimplementasikan semua tindakan Anda untuk menjalankan dengan menyeret kontrol dari Toolbox.

    Catatan Dianjurkan bahwa Anda runtuh daerah bernamaKode 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
(http://MSDN.Microsoft.com/Library/en-US/ cpref/html/frlrfSystemDiagnosticsProcessClassTopic.asp)

Properti

ID Artikel: 305603 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005
Kata kunci: 
kbdiagnostics kbhowtomaster kbsample kbmt KB305603 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:305603

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