private void rescan() { PSWindows ps = new PSWindows(); if (!ps.scan()) { MessageBox.Show("There was an error scanning the processes.", "Scan processes", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { lvProcessWindows.Groups.Clear(); lvProcessWindows.BeginUpdate(); foreach (string key in ps.mProcesses.Keys) { if (mExistingProcesses.ContainsKey(key)) { continue; } ListViewGroup grp = lvProcessWindows.Groups.Add(key, key); grp.Tag = ps.mProcesses[key]; } lvProcessWindows.EndUpdate(); } }
public bool scan() { try { mProcesses.Clear(); Process[] processes = Process.GetProcesses(); //Pre create the classes //we only consider processes with a window foreach (Process process in processes) { if (!mProcesses.ContainsKey(process.ProcessName) && !string.IsNullOrEmpty(process.MainWindowTitle)) { mProcesses[process.ProcessName] = new PSProcess(process.ProcessName, false); } } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); return(false); } return(true); }
private void tmrWindowCheck_Tick(object sender, EventArgs e) { tmrWindowCheck.Enabled = false; try { //get the foreground window int fgWindow = GetForegroundWindow(); //get the process for this window int processID = 0; GetWindowThreadProcessId(fgWindow, ref processID); bool checkChange = false; Process process = Process.GetProcessById(processID); Console.Write("[{0}] ", process.ProcessName); if (mProcesses.ContainsKey(process.ProcessName) && m_currForegroundProcess != process.ProcessName) { checkChange = true; Console.WriteLine("FG WINDOW: Check change"); } //set to default printer only if current foreground process is not the one with the focus, in which case we have //a program that is not mapped if (!checkChange && m_currForegroundProcess != process.ProcessName) { //set system default printer SetDefaultPrinter(mProcesses.mSysDefPrinter); } m_currForegroundProcess = process.ProcessName; //do we need to change the printer? if (checkChange) { if (mProcesses[process.ProcessName].MappedPrinter.Length > 0) { //Do we have a general printer mapped for this process? SetDefaultPrinter(mProcesses[process.ProcessName].MappedPrinter); } else { //Use the system default SetDefaultPrinter(mProcesses.mSysDefPrinter); } } } catch (Exception ex) { //exceptions can occur } tmrWindowCheck.Enabled = true; }
private void toolStripButtonSaveNClose_Click(object sender, EventArgs e) { lvProcessWindows.Enabled = false; foreach (ListViewGroup process in lvProcessWindows.Groups) { foreach (ListViewItem window in process.Items) { if (window.SubItems.Count > 2) { PSProcess psprocess = (PSProcess)process.Tag; if (!mProcesses.ContainsKey(psprocess.ProcessName)) { mProcesses.Add(psprocess.ProcessName, psprocess); } } } } this.DialogResult = DialogResult.OK; this.Close(); }