I couldn't find an example for using trials in the API (I'm using C++ on a Mac). Also, it seems to me that I need two sets of product data - one for the normal licence and one for the review licence. Can you suggest how I might achieve this ?
Since you've set the trial length to 0 you can just send the prospective customers a trial extension then they can enter that somewhere in your app and your app can call ExtendTrial(). This is probably the easiest way to do things. This way the potential customer will still be in "trial mode".
I can explain another option where you use a regular product key with a feature value that you can set to separate "trial licenses" from "regular licenses". Tell me if you want me to explain this.
Slightly unrelated, I have a suggestion: it seems to me that TurboActivate stores the number of grace days and/or trial days remaining somewhere safe. Why not also store the number of days since the last IsGenuine check ? It would save us from having to handle that; e.g. TURBOACTIVATE_API HRESULT DaysSinceGenuineVerified(STRCTYPE versionGUID);
We're adding something like this to TurboActivate 3.0 coming in about a week.