I'm making a shortcut tool for vista and know how to make my program load Yahoo! or MSN, But the question i have is if the person has not saved Yahoo! or MSN to there C drive this wont work

Dim oPro As New Process
        With oPro
            .StartInfo.UseShellExecute = True
            .StartInfo.FileName = "C:\Program Files\Yahoo!\Messenger\YahooMessenger.exe"
            .Start()
        End With

What would be the best way to code it so that it will find Yahoo! or MSN no matter where it is saved?

Also i cant find a way to code a key to open the basic windows games (on individual buttons) I.E Clicking one button opens Freecell another button opens Solitaire.

You can probably poke in the registry for Yahoo and MSN. I found this key for msn messenger: HKLM\Software\Microsoft\MessengerService\InstallationDirectory I am sure there must be something similar for Yahoo.

As for the keyboard trapping, I don't know how you would do that without dropping out of managed code and surfing the Windows API (which I am ok with but I was bottle-fed with VB6). I believe the function you'd want is GetKeyboardState() (documented at http://msdn.microsoft.com/en-us/library/ms646299.aspx).