So this week Ive been play with System.Diagnositics and System.Reflection... fun stuff... lots of potential but Im having some problems doing what I want to do. Using System.Diagnostics.Process I can open, run, and close another program; but otherwise pretty useless - can really do anything with the program once its open other than check to see if its still open and/or close it. Using System.Reflection I can get all the member, methods, properties, values (well the values is being a pain but anyway) and expose the functionality of another program and by using InvokeMember can even get the start up form to display, but doesnt do anything unless I constantly invoke the Refresh member but its more like Im painting rather that starting a process as I do with StartProcess even though Im using the CreateInstance binding flag. Anyway the whole point is Im trying to control another program with my program without using such primative methods as SendKeys which youre really doing things blindly; whereas if I could determine the value of lables and buttons Id know what screen I am on and be able to invoke methods and members correctly rather than hoping that the user hasnt closed the other program and that Im on the right screen and that Ive tabbed the right number of times...etc.... follow what Im trying to do? Theres a lot of theory behind the Reflection and Process classes and the documentation is lengthy but not the best... so advise, hints, tricks, etc would be helpful.