Check out this answer from a previous thread;
http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=137&HOID=5065000000050000007BDD0000&HTHREAD=000056699&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0
Giving each instance different start paramters is just a matter of making a functional global that holds the startup parameters (e.g. as a flattened string) and allows the new VIs to search for the data that belongs to them...I make a copy of the VI, insert the data for that instance into a 2D string array; in the first column I put the name of the new instance, in the second column a flattened version of the inut parameters..the first thing the instances do when they are run is to call the functional global with their name as input and search as the chosen functio
n...the global finds the row contining the name and sends out the parameters...It can then either erase the entry for that VI immediately, or you can let the instance send a delete command when the instance terminates instead...if you want access to the startup parameters other places as well as long as the instances exist... Using a flattened representation is off course not necessary.
You can use VI server to set controls when you run the new instance, but that functionality is not supported in built applications...hence the use of a functional global instead...