Just a thought, PJB... Since most printers include a software interface for setting it's myriad of options, could you not just shell that interface from your program?