Seth1988 Geschrieben 21. Juli 2009 Geschrieben 21. Juli 2009 (bearbeitet) Hallo, ich habe folgendes Problem: Ich müsste einen Text aus der Zwischenablage in den Editor des Visual Studio einfügen, und zwar an der aktuellen Position des Cursors. Das mit der Zwischenablage war kein Problem, die hab ich jetzt in einem String gespeichert. Aber ich finde keine Möglichkeit, auf den Editor zuzugreifen. Durch google hab ich nur ein Beispiel in VB gefunden, dass über activeDocument funktioniert, aber sowas hab ich in C# nicht gefunden. Wäre für jede Hilfe dankbar. Bearbeitet 21. Juli 2009 von Seth1988 Zitieren
El Ninjo Geschrieben 24. Juli 2009 Geschrieben 24. Juli 2009 Schreib das Beispiel doch in C# um... Zitieren
Seth1988 Geschrieben 27. Juli 2009 Autor Geschrieben 27. Juli 2009 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? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.