instead of addressing IO directly, use signals.
for example nobody can know what those IOs really are:
WAIT FOR $IN[666]
$OUT[777]=TRUE
that is not very readable and in case of a problem or porting code to another robot, it would be painful to maintain since available/mapped IO may be different and one would need to go through dozens of files to make changes, for example replace input 666 with input 333 etc.
it is MUCH better to declare signals such as:
SIGNAL iPartPresent $IN[666]
SIGNAL oGripperClose $OUT[777]
and then use them all programs. This makes programs MUCH more readable - including displayed WAIT messages:
WAIT FOR iPartPresent
oGripperClose = TRUE
And if you need to do some changes, you do not need to modify actual programs, all the code remains the same - you can just change one line in declarations by replacing 666 with 333 and you are done!
now if you want to run programs in OfficeLite there is no need for butchering all the programs to replace inputs and outputs with suitable substitutes. it is enough to do a search/replace and 10 seconds later 100s of IOs are remapped to something that you can control in OL. All changes are in just one file - where the declarations are. Programs remain the same. Example
DECL BOOL iPartPresent = FALSE ; $IN[666]
DECL BOOL oGripperClose = FALSE ; $OUT[777]
and now your OfficeLite is ready to run everything but since there are no pesky inputs to mess with, you can control the values of declared variables through either built in Variable Overview or an external application. if that external application can access variables in PLC, your simulation setup prep work is done - it is time to have some fun.
the part that would not work exactly like that are couple of handshake signals used in EXT mode.
Starting programming from scratch is usually difficult and takes time. and broke students may not be rich but they have plenty of time... 
when working with Windows API to enslave some application, key is finding the correct info (handle etc.). there is tons of things that Windows reports and there are functions to get or set pretty much anything. AutoIt has own spy tool but there are others. Here is an example of old one but very nice one called Show Window. IT displays info of the object that is under the mouse cursor (no clicking needed). Note that it sniffs out caption, size etc from just about anything. This is needed to know what to look for when writing own programs and to verify that your code is doing what is supposed to do.