I can see two ways to get something similar to what you want. First approach is using memory reading as Draggo suggested, and maybe send by a TCP packet to remote host. Depending of what you need, it can delay too much.
Second option is to manually control the lights using an InSim application, that trigger some bool var in the same moment you send the green light packet to host.
You can get the total time with IS_LAP packet:
struct IS_LAP // LAP time
{
byte Size; // 20
byte Type; // ISP_LAP
byte ReqI; // 0
byte PLID; // player's unique id
unsigned LTime; // lap time (ms)
unsigned ETime; // total time (ms)
word LapsDone; // laps completed
word Flags; // player flags
byte Sp0;
byte Penalty; // current penalty value (see below)
byte NumStops; // number of pit stops
byte Sp3;
};
I think ETime is what you want. If you get the time from any player on track during race start, and as soon it goes above 0ms, then you have a green light.