Maybe many of you out there in Developer Land are already aware of this, but I need to point out that you can indeed shell, sleep, and SendKeys using the new fancy C# and .NET Framework. You see, a few months ago, I needed to come up with a quick and dirty demo of a Windows application. Then I came up with the brilliant notion of shelling to it, then sending keystrokes to it to demo the app. I wondered, can you still peform this most crude form of application interoperability with the most elegant C# and .NET?

The answer is a big YES! Check this C# code out:

using System;
using System.Collections.Generic;
using System.Text;

using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //"shell" to open WordPad
            Process myProcess = new Process();
            myProcess.StartInfo.FileName = @"wordpad.exe";
            myProcess.StartInfo.Verb = "Open";
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            myProcess.Start();
            //pause for 1/2 second
            Thread.Sleep(500);
            //open the Format dialog
            SendKeys.SendWait("%OF");
            //set the font size, then ENTER
            SendKeys.SendWait("{TAB}{TAB}48~");
            //type some text
            SendKeys.SendWait("Hello world");
        }
    }
}

The above code is a console EXE program that brings up WordPad, then types a big "Hello World", with a 0.5 second sleep in between to give WordPad time to open. I love this code -- it is SO old school. It warms my heart that you can still stoop to this level. I hope you enjoy it as much as I.

For a list of all of the SendKeys codes, see the following page in MSDN online:

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsSendKeysClassTopic.asp

Happy coding!

- Eric