Hvordan identificerer jeg en process utvetydigt?
Jeg er ved at lave noget simpel automation af et 3d modelleringsprogram der hedder Rhino3D. Jeg har brug for at kunne starte programmet, få adgang til dets script-interface og for at min applikation får besked, hvis programmet lukkes.Jeg bruger følgende kode til at starte programmet, og give mig en reference til programmets script-interface:
Rhino4.Application oRhino = (Rhino4.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Rhino4.Application"));
if (oRhino != null)
{
RhinoScript4.IRhinoScript oRhinoScript;
System.Threading.Thread.Sleep(500);
oRhinoScript = (RhinoScript4.IRhinoScript)oRhino.GetScriptObject();
oRhinoScript.DocumentModified(false);
string str = "_-Open " + fileName;
oRhinoScript.Command(str, 1);
oRhino.Visible = 1;
_oRhinoScript = oRhinoScript;
connectionOpen = true;
}
Problemet er at jeg intet handle eller andet får ud af dette, så hvis jeg vil have fat i programmet jeg har startet og sikre mig, at jeg får besked, hvis det bliver lukket, så bliver jeg nødt til at bruge Process class'en.
Process[] pr = Process.GetProcessesByName("Rhino4");
for (int i = 0; i < pr.Length; i++)
{
pr[i].EnableRaisingEvents = true;
pr[i].Exited += new EventHandler(caseInfoMenu_Exited);
connectionOpen = false;
}
Problemet er at brugeren nemt kan have flere udgaver af Rhino4 åben. Og at filer med samme navn godt kan være åben flere gange, så jeg skal bruge et unikt id jeg kan identificere det program jeg åbnede. Nogen idéer?
Mvh
Thomas