public void DeviceRemovedHandler(object sender, System.Management.EventArrivedEventArgs e) { System.Management.ManagementEventWatcher removal = (System.Management.ManagementEventWatcher)sender; var targetInstanceData = e.NewEvent.Properties["TargetInstance"]; var targetInstanceObject = (System.Management.ManagementBaseObject)targetInstanceData.Value; foreach (var prop in targetInstanceObject.Properties) { if (prop.Name == "PNPDeviceID") { var pnpDeviceId = targetInstanceObject["PNPDeviceID"].ToString(); if (pnpDeviceId.Contains("USB\\VID_0483&PID_5740")) { var deviceId = targetInstanceObject["DeviceID"].ToString(); if (portExtender_.CheckDeviceRemoved()) { removal.Stop(); portExtender_.CloseDevice(); DeviceRemovedStatusUpdate(); } } return; } } removal.WaitForNextEvent(); }
private void CheckingBlackListEvent(object sender, System.Management.EventArrivedEventArgs e) { var prcessName = (string)e.NewEvent["ProcessName"]; if (this.blackDict == null) { this.LoadWasteTimeProcess(); } if (this.blackDict.ContainsKey(prcessName)) { this.ChooseByYourSelf(KillProcessByName, ShowMessages.是否要关闭这个邪恶的进程, blackDict[prcessName].ProcessName); } }
// プロセスイベント発生時 void Event_Arrived(object sender, System.Management.EventArrivedEventArgs e) { var risedProcessName = e.NewEvent.Properties["ProcessName"].Value; // 発生したプロセス名が、設定Jsonで指定された中に存在するかチェック foreach (uWinJson.Setting setting in this.uJson.json.Settings) { if (setting.ProcessName is null) { continue; } if (risedProcessName.Equals(setting.ProcessName)) { // 該当プロセスを取得 Process risedProcess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(risedProcessName.ToString()))[0]; IntPtr hWnd = risedProcess.MainWindowHandle; // 該当プロセスのウィンドウが表示されるまで待機 while (!uWindow.IsWindowisible(hWnd)) { hWnd = risedProcess.MainWindowHandle; // 何故か取得し直さないとうまくいかなかったので再取得。詳細は未検証。 // TODO: 無限ループするので回数指定して抜けた方がいい } // 該当プロセスのウィンドウを移動する int ScreenWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; int ScreenHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height; int WindowWidth, WindowHeight; uWindow.GetWindowSize(hWnd, out WindowWidth, out WindowHeight); int offsetX = 0; if (!(setting.Place is null)) { offsetX = setting.Place.ToLower().Equals(uWinJson.Place.Right.ToLower()) ? ScreenWidth / 2 : 0; } uWindow.SetWindowPos(hWnd, (ScreenWidth / 2 - WindowWidth) / 2 + offsetX, (ScreenHeight - WindowHeight) / 2, WindowWidth, WindowHeight); } } }
/// <summary> /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void HandleEvent(object sender, System.Management.EventArrivedEventArgs e) { System.Console.WriteLine("Received an event."); // RegistryKeyChangeEvent occurs here; do something. }
private void Global_HardwareChangeDetected(object sender, System.Management.EventArrivedEventArgs e) { checkForDevices(); }
void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e) { MessageBox.Show((string)e.NewEvent["ProcessName"]); }