Пример #1
0
        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();
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        //  プロセスイベント発生時
        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.
 }
Пример #5
0
 private void Global_HardwareChangeDetected(object sender, System.Management.EventArrivedEventArgs e)
 {
     checkForDevices();
 }
Пример #6
0
 void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e)
 {
     MessageBox.Show((string)e.NewEvent["ProcessName"]);
 }