InFiles are used to generate user input to automate operations. The ZealOS tour is done with an InFile. It is akin to a Unix pipe because StdOut of one gets chained into StdIn of another. When an InFile runs, a child task is Spawn()ed which intercepts real user input and generates fake input. InFiles are ZealC programs run by the child whose stdout goes to the parent's input buffer. Message() can be included in an InFile to send special keys or mouse cmds to the parent. While an InFile is running, the normal input gets diverted to the InFile task and can be filtered and sent back to the parent task. Unless you are driving functions which prompt for data, you can probably use an #include file in place of an InFile. See ::/Demo/InFile/InDir.IN. Note: In("") can be used if all you need is to send ASCII characters. It differs from InStr(). You'll probably use In() a lot and not InStr(). With In(), for example, you can place answers to the prompts for recompiling the Kernel module during BootHDIns().