Execute program if it is not running already
<?xml version="1.0" encoding="utf-8"?> <xsharper xmlns="http://www.xsharper.com/schemas/1.0"> <versionInfo title="RunIfNot" value="Run a program if a certain top-level window does not exist." Version="0.1.0.0" Copyright="(C) 2009 DeltaX Inc." /> <usage options="ifNoArguments | default" /> <param name="process-name" required="true">Process name, w/o .exe. For example, 'explorer'</param> <param name="title-wildcard" required="true">Wildcard to match window title (if starts with ^ - treat as regex)</param> <param name="command-line" required="true" count="multiple" last="true">Command line to execute if the window is not found</param> <header> using System.Runtime.InteropServices; using System.Diagnostics; static class Native { [DllImport("user32.dll", SetLastError = true)] public static extern bool BringWindowToTop(IntPtr hWnd); [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetForegroundWindow(IntPtr hWnd); } </header> <code> XS.StringFilter sf=new XS.StringFilter(c.GetStr("title-wildcard")); foreach (Process p in Process.GetProcessesByName(c.GetStr("process-name"))) { if (sf.IsMatch(p.MainWindowTitle)) { Native.SetForegroundWindow(p.MainWindowHandle); Native.BringWindowToTop(p.MainWindowHandle); return 0; } } </code> <shell mode="shellExecute" wait="false"><param>${command-line}</param></shell> </xsharper>