This particular prompt is generated using a GetOption object.
Something like this should do it:
var pointType = PointType.Point;
var gt = new GetOption();
gt.SetCommandPrompt("Grasshopper Point type");
gt.SetDefaultString(nameof(pointType));
gt.AcceptNothing(true);
var opt0 = gt.AddOption(nameof(PointType.Coordinate));
var opt1 = gt.AddOption(nameof(PointType.Point));
var opt2 = gt.AddOption(nameof(PointType.Curve));
var res = gt.Get();
if (res == GetResult.Option)
{
if (gt.Option().Index == opt0)
pointType = PointType.Coordinate;
else if (gt.Option().Index == opt1)
pointType = PointType.Point;
else if (gt.Option().Index == opt2)
pointType = PointType.Curve;
}
There is no programmatic way to stop a running Rhino command. About the best you can do, in the case you describe, is to send a “!” character to Rhino using RhinoApp.SendKeystrokes, just like you’d do if you were writing a button macro.