Problem mit Interop-Service und OneNote

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Dideldum.

    Problem mit Interop-Service und OneNote

    Neu

    Hi Ihr,

    Ich bin eben dabei, in meinem Proggi Bilder in OneNote einfügen zu lassen.
    Hierbei habe ich aber ein Problem:

    Im Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim oneNoteApp As Microsoft.Office.Interop.OneNote.Application = Nothing
    2. Dim oneNoteProcesses() As Process = Process.GetProcessesByName("ONENOTE")
    3. If oneNoteProcesses.Length > 0 Then
    4. ' Eine laufende Instanz von OneNote wurde gefunden
    5. Try
    6. oneNoteApp = CType(Marshal.GetActiveObject("OneNote.Application"), Microsoft.Office.Interop.OneNote.Application)
    7. Catch ex As Exception
    8. ' Fehler beim bestehende Anwendung holen
    9. MainForm.Current?.Ausgabe_ICENachricht(My.Resources.ICE_Common_ICEFehler, String.Format(My.Resources.ICE_Common_Fehler_OneNote_LaufendeInstanzKannNichtZugewiesenWerden, ex.Message))
    10. Return
    11. End Try
    12. Else
    13. ' OneNote ist nicht gestartet
    14. Try
    15. Process.Start(AppPath)
    16. Catch ex As Exception
    17. ' Fehler beim OneNote-Anwendung starten
    18. MainForm.Current?.Ausgabe_ICENachricht(My.Resources.ICE_Common_ICEFehler, String.Format(My.Resources.ICE_Common_Fehler_OneNote_KannNichtGestartetWerden, AppPath, ex.Message))
    19. Return
    20. End Try
    21. Try
    22. MainForm.Delay(1)
    23. oneNoteApp = New Microsoft.Office.Interop.OneNote.Application()
    24. Catch ex As Exception
    25. ' Fehler beim bestehende Anwendung holen
    26. MainForm.Current?.Ausgabe_ICENachricht(My.Resources.ICE_Common_ICEFehler, String.Format(My.Resources.ICE_Common_Fehler_OneNote_LaufendeInstanzKannNichtZugewiesenWerden, ex.Message))
    27. Return
    28. End Try
    29. End If


    wird geprüft, ob OneNote bereits läuft.

    Wenn ja, dann soll die laufende Anwendung der Variablen "OneNoteApp" zugewiesen werden.
    Wenn nein, wird OneNote gestartet und die nun laufende Anwendung der Variablen "OneNoteApp" zugewiesen.

    Leider fällt der Code, wenn OneNote bereits läuft und damit die laufende Anwendung der Variablen "OneNoteApp" zugewiesen werden soll, dabei in die Exception.
    oneNoteApp = CType(Marshal.GetActiveObject("OneNote.Application"), Microsoft.Office.Interop.OneNote.Application)

    Ist OneNote nicht bereits gestartet, werden die Bilder in der aktuellen Selektion und Seite an Caret-Position ins OneNote eingefügt.

    Nur, wenn OneNote bereits läuft, kann ich keine Bilder einfügen - bzw. nur dann, wenn ich stattdessen eine weitere OneNote-Instanz starte.
    Aber ich will die Bilder ja in der aktiven OneNote-Anwendung eingefügt haben.

    Die Fehlermeldung teilt mir mit:
    "Vorgang nicht verfügbar. (Ausnahme von HRESULT: 0x800401E3 (MK_E_Unavailable))"
    Was will mir das sagen und warum?

    Bei meinen anderen Modulen Word, Excel, Outlook und Powerpoint funktioniert das mit dem Bilder einfügen - nur eben nicht bei OneNote.

    Kann mir da vielleicht einer von Euch hilfreich vom Schlauch helfen?
    Irgendwie muss ich da drauf stehen.

    Beste Grüsse

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Dideldum“ ()

    Neu

    Komisch...

    so funktioniert es:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Sub InsertFileIntoOneNote(objekt As String, AppPath As String, index As Integer)
    2. ' OneNote-Anwendung starten oder bestehende Anwendung holen
    3. Dim OneNoteProcess As String = GetProcessNameByPath(AppPath)
    4. Dim oneNoteApp As Microsoft.Office.Interop.OneNote.Application = Nothing
    5. oneNoteApp = TryGetRunningOneNoteInstance()
    6. If oneNoteApp Is Nothing Then
    7. Try
    8. Process.Start(AppPath)
    9. Threading.Thread.Sleep(2000)
    10. oneNoteApp = New Microsoft.Office.Interop.OneNote.Application()
    11. Catch ex As Exception
    12. MainForm.Current?.Ausgabe_ICENachricht(My.Resources.ICE_Common_ICEFehler, String.Format(My.Resources.ICE_Common_Fehler_Anwendung_KannNichtGestartetWerden, "OneNote", AppPath, ex.Message))
    13. Return
    14. End Try
    15. End If
    16. ...
    17. end sub
    18. Private Function TryGetRunningOneNoteInstance() As Microsoft.Office.Interop.OneNote.Application
    19. Try
    20. ' Überprüfen, ob eine OneNote-Instanz läuft
    21. Dim processes As Process() = Process.GetProcessesByName("ONENOTE")
    22. If processes.Length > 0 Then
    23. Return New Microsoft.Office.Interop.OneNote.Application()
    24. End If
    25. Catch ex As Exception
    26. ' Fehlerbehandlung
    27. End Try
    28. Return Nothing
    29. End Function