Ich habe jetzt mal mit ein paar Kollegen gesprochen und bin inzwischen soweit, das ich auf den Editor zugreifen kann, und zwar über TextSelection. Allerdings stürzt das Programm beim Ausführen mit einem HRESULT ab, den ich auch nach Stunden Internetrecherge nicht auflösen konnte. Das war der Code:
EnvDTE80.DTE2 dte2;
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.9.0");
Window activeWindow = dte2.ActiveWindow;
Document activeDoc = activeWindow.Document;
EditPoint MeinEditPoint = null;
TextDocument textdocument = (EnvDTE.TextDocument)dte2.ActiveDocument.Object("textdocument");
TextSelection textselection = textdocument.Selection;
MeinEditPoint = textdocument.StartPoint.CreateEditPoint();
MeinEditPoint = textselection.AnchorPoint.CreateEditPoint();
MeinEditPoint.MoveToPoint(textselection.ActivePoint);
MeinEditPoint.Insert("Test");
Die letzte Zeile mit dem Insert Befehl hat den HRESULT geworfen, da konnte mir dann auch kein Kollege oder Google mehr weiterhelfen, daher habe ich das Programm umgebaut, wenn mir jetzt trotzdem jemand helfen könnte, wär es auch kein Problem, wieder den alten Code zu benutzen.
ÃŽch habe jetzt versucht, einfach die Tasenkombination Strg+V zu simulieren, hier der Code:
IDataObject zwischenablage = Clipboard.GetDataObject();
zwischenablage.SetData(txt_dbText.Text);
SendKeys.SendWait("^+{v}");
Testweise hab ich die Funktion direkt Ausführen lassen, wenn man den Butten des AddIn in der Toolbar drückt, da hat sie wunderbar funktioniert.
Allerdings muss ich nun vorher eine Form aufrufen, in der man sich den Text aus einer Datenbank holt, alles kein Problem, lad ich dann in die Zwischenablage, allerdings ist der Caret dann nicht mehr im Editor und der Text kann nicht eingefügt werden.
Kann ich irgendwie den Focus/Caret wieder auf den Code-Editor kriegen?