posted on Monday, October 29, 2007 7:10 PM |

Why did I create a delayed startup program?  After I saw all the stuff my manager had booting up on his computer, I thought this may be useful.  His computer really wasn't terribly usable for a good 10 minutes after a reboot so I decided to spend a few minutes and create him a nice program while I'm at a .Net User Group meeting (they had free food and it was 1 floor up in my building).  My theory is most of the programs in your startup folder aren't actually needed asap.  I don't need OneNote open right away, I don't need a bunch of other stuff right away.  The nice thing is now I can have Visual Studio, Outlook, IE, and a few other programs I run everyday not impact me restarting my computer's bootup time since they'll do a gradual loading sequence.

Why isn't there an application to do the configuration file?  Because I'd hope someone could decipher 3 lines of XML.

Here is the source code (and the .zip file) and the installer

Source Code:

[STAThread]
static void Main()
{
    string startupPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
    string delayedStartupFolder = GetSetting("DelayedStartupFolderName", "Delayed Startup");

    int TimeDelayBeforeStartingSeconds = GetSetting("TimeDelayBeforeStartingSeconds", 10);
    int TimeDelayPerProcesssSeconds = GetSetting("TimeDelayPerProcesssSeconds", 5);

    DirectoryInfo di = new DirectoryInfo(startupPath);

    Thread.Sleep(TimeDelayBeforeStartingSeconds * 1000);
    string delayedFolder = Path.Combine(di.Parent.FullName, delayedStartupFolder);
    if (Directory.Exists(delayedFolder))
    {
        di = new DirectoryInfo(delayedFolder);

        FileInfo[] files = di.GetFiles();
        foreach (FileInfo file in files)
        {
            if (file.Extension.ToLower() != ".ini")
            {
                Process.Start(file.FullName);
                Thread.Sleep(TimeDelayPerProcesssSeconds * 1000);
            }
        }
    }
}

private static int GetSetting(string key, int defaultValue)
{
    int.TryParse(ConfigurationManager.AppSettings[key], out defaultValue);

    return defaultValue;
}

private static string GetSetting(string key, string defaultValue)
{
    return ConfigurationManager.AppSettings[key] ?? defaultValue;
}

App.Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="DelayedStartupFolderName" value="Delayed Startup"/>
        <add key="TimeDelayBeforeStartingSeconds" value="10"/>
        <add key="TimeDelayPerProcesssSeconds" value="5"/>
    </appSettings>
</configuration>
Tags [ General ]

Your Comments.

No comments posted yet.

Post Comment
Title *
Name *
Email
Url
Comment *  
Please add 7 and 4 and type the answer here: