⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 srvices.cs

📁 本文我将向你展示一些技巧
💻 CS
📖 第 1 页 / 共 2 页
字号:

			if (rbClicked.Text == "&Current Machine")
				booleanFlag = false;

			//toggle controls
			labelIP.Visible = booleanFlag;
			textIP.Visible = booleanFlag;
			labelUserID.Visible = booleanFlag;
			textUserID.Visible = booleanFlag;
			labelPassword.Visible = booleanFlag;
			textPassword.Visible = booleanFlag;

		}

		/// <summary>
		/// buttonRefresh click event allow user to refresh service list view
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void buttonRefresh_Click(object sender, System.EventArgs e)
		{
			//call refresh function
			this.Refresh();
		}

		/// <summary>
		/// List view mouse down event to built context menu dynamically 
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void listViewServices_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			System.Windows.Forms.ListView listViewObject = (System.Windows.Forms.ListView) sender;
			ContextMenu mnuContextMenu = new ContextMenu();
			MenuItem menuItem = new MenuItem();
			ManagementObjectCollection queryCollection;

			//check if right button
			if (e.Button == System.Windows.Forms.MouseButtons.Right) 
			{
				//get service name
				ServiceName = listViewObject.GetItemAt(e.X, e.Y).Text;
				//set list view item
				ServiceItem = listViewObject.GetItemAt(e.X,e.Y);

				//create popup menu
				listViewObject.ContextMenu = mnuContextMenu;
  				try
				{
					//get specific service object
					queryCollection = getServiceCollection("SELECT * FROM Win32_Service Where Name = '" + ServiceName + "'");
					foreach ( ManagementObject mo in queryCollection)
					{
						//create menu depending on service state
						if (mo["Started"].Equals(true))
						{
							menuItem.Text = "Stop";
							//set action property
							ServiceAction = "StopService";
						}
						else
						{
							menuItem.Text = "Start";
							ServiceAction = "StartService";
						}
						mnuContextMenu.MenuItems.Add(menuItem);

						// Add functionality to the menu items using the Click event. 
						menuItem.Click  += new System.EventHandler(this.menuItem_Click);
					}
				}
				catch (Exception e1)
				{
					MessageBox.Show("Error: " + e1);
				}
			}
		}

		/// <summary>
		/// List view context menu click event to invoke start/stop service
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void menuItem_Click(object sender, System.EventArgs e)
		{   
			ManagementObjectCollection queryCollection;
			ListViewItem lvItem;

			//Set up a handler for the asynchronous callback
			ManagementOperationObserver observer = new ManagementOperationObserver(); 
			completionHandler.MyHandler completionHandlerObj = new completionHandler.MyHandler(); 
			observer.ObjectReady += new ObjectReadyEventHandler(completionHandlerObj.Done);

			//get specific service object
			queryCollection = getServiceCollection("Select * from Win32_Service Where Name = '" + ServiceName + "'");

			//Status
			updateStatus("Starting/Stopping service...");
			
			foreach ( ManagementObject mo in queryCollection)
			{
				//start or stop service
				mo.InvokeMethod(observer, ServiceAction, null);
			}
			
			//wait until invoke method is complete or 5 sec timeout
			int intCount = 0;
			while (!completionHandlerObj.IsComplete) 
			{ 
				if (intCount > 10)
				{
					MessageBox.Show("Terminate process timed out.", "Terminate Process Status");
					break;
				}
				//wait 1/2 sec.
				System.Threading.Thread.Sleep(500); 
				
				//increment counter
				intCount++;
			} 

			//see if call was successful.
			if (completionHandlerObj.ReturnObject.Properties["returnValue"].Value.ToString() == "0")
			{ 
				//succeeded
				lvItem = ServiceItem;

				if (ServiceAction == "StartService")
					lvItem.SubItems[2].Text = "Started";
				else
					lvItem.SubItems[2].Text = "Stop";
			}
			else
			{
				//error message
				string stringAction;

				if (ServiceAction == "StartService")
					stringAction = "start";
				else
					stringAction = "stop";

				MessageBox.Show("Failed to " + stringAction + " service " + ServiceName + ".", "Start/Stop Service Failure");
			}

			//clean-up objects
			ServiceName = "";
			ServiceAction = "";
			ServiceItem = null;

			//Status
			updateStatus("Ready");
			this.Update();
		}

		/// <summary>
		/// Get computer service collection
		/// </summary>
		/// <param name="stringQuery"></param>
		/// <returns>queryCollection</returns>
		private ManagementObjectCollection getServiceCollection(string stringQuery)
		{
			ManagementObjectSearcher query;
			ManagementObjectCollection queryCollection = null;
			System.Management.ObjectQuery oq;
			string stringMachineName = "";

			//Connect to the remote computer
			ConnectionOptions co = new ConnectionOptions();

			if (radioMachine.Checked == true)
			{
				stringMachineName = "localhost";
			}
			else
			{
				stringMachineName = textIP.Text;
			}

			if (stringMachineName.Trim().Length == 0)
			{
				MessageBox.Show("Must enter machine IP address or name.");
				return null;
			}

			//get user and password
			if (textUserID.Text.Trim().Length   > 0)
			{
				co.Username = textUserID.Text;
				co.Password = textPassword.Text;
			}

			//Point to machine
			System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\" + stringMachineName + "\\root\\cimv2", co);      

			//Status
			updateStatus("Getting Services Information");

			//Query remote computer across the connection
			oq = new System.Management.ObjectQuery(stringQuery);
			query = new ManagementObjectSearcher(ms,oq);

			try
			{
				queryCollection = query.Get();
			}
			catch (Exception e1)
			{
				MessageBox.Show("Error: " + e1);
			}


			//Status
			updateStatus("Ready");
			this.Update();

			return queryCollection;

		}


		/// <summary>
		/// Get/Set service name
		/// </summary>
		/// <returns>stringServiceName</returns>
		private string ServiceName
		{
			get
			{
				return stringServiceName;
			}

			set
			{
				stringServiceName = value;
			}
		}


		/// <summary>
		/// Get/Set invoke service action
		/// </summary>
		/// <returns>stringServiceAction</returns>
		private string ServiceAction
		{
			get
			{
				return stringServiceAction;
			}
			set
			{
				stringServiceAction = value;
			}
		}


		/// <summary>
		/// Get/Set list view item object
		/// </summary>
		/// <returns>listViewServiceItem</returns>
		private ListViewItem ServiceItem
		{
			get
			{
				return listViewServiceItem;
			}
			set 
			{
				listViewServiceItem = value;
			}
		}

		/// <summary>
		/// Public Refresh method 
		/// </summary>
		public override void Refresh()
		{
			// Init list view
			InitListView();

			getServices();

			boolLoaded = true;
		}

		/// <summary>
		/// GetLoaded check if control was loaded before 
		/// </summary>
		/// <returns></returns>
		public bool Loaded
		{
			get
			{
				//true if control already loaded else false.
				return boolLoaded;
			}
			
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -