Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leuts ich habe mal wieder eines meiner Probleme mit einer Officeanwendung 2003 ... :eek

Ich nutze Visualstudio 2008 und möchte hier in einem "Webbrowserdialog" einige Dokumente anzeigen lassen. das funktioniert ganz vorzüglich, bis dann mal wieder irgendwann WinWord mal wieder einen Dokument "z.B. Test.doc" nicht richtig schließt und dann mein ganzes Programm abstürzt, weil nach Fehlermeldung "Ein noch aktiver Prozess" die weitere Arbeit blockiert. Ich habe schon das Internet durchforstet aber nichts brauchbares gefunden.

Ich vermute das der Garbage Collector nicht richtig arbeit und das Finally somit nicht abgeschlossen wird. Dadurch wird meine Datei zwar geschlossen aber WinWord bleibt geöffnet. Sobald dann eine neue Datei geöffnet werden soll, dann stürzt wieder alles ab. Ich kann dann über den Taskmanager die Anwendung manuell beenden. Dann funktioniert es mal wieder... aber nur ein paar Mal.

Hat jemand Erfahrungen wie man MIttels einer Anwendung aus VB.net 2008 heraus vielleicht Prozesse oder Anwendungen beenden kann.

Bearbeitet von PowerLooser

Kenne mich in vb nicht so gut aus, aber kannst du den GarbageCollector selbst aktivieren?

Java biete die Möglichkeit, wenngleich auch hier das eher dem Zufall überlassen ist, ob der GC sich dem "Müll" annimmt.

1. Weg:


Word.Application oWord = null;

oWord = (Word.Application)Marshal.GetActiveObject("Word.Application");

oWord.Quit();

für diesen code mußt du allerdings die Interop.Word.dll einbinden, und Quit erwartet Parameter. 2. Weg:

Process[] pSearch = Process.GetProcessesByName("WINWORD");

foreach (Process p in pSearch)

{

    if (p is Process)

       p.Kill();

}

  • 2 Wochen später...

Ist das Problem inzwischen gelöst? Genau dieses habe ich auch.

Über jede Info hierzu sehr dankbar.

2. Weg:


Process[] pSearch = Process.GetProcessesByName("WINWORD");

foreach (Process p in pSearch)

{

    if (p is Process)

       p.Kill();

}

Habe zwar keine bessere Lösung aber ^^ diesen Weg halte ich für gefährlich denn er killt dir JEDEN Winword- Prozess auch den wenn du noch nebenbei ein anderes Dokument offen hast.

mfg Hans-Jörg

Vielen Dank für die Info,

der Kill funktioniert schon, er killt auch andere Jobs des Words.

Da ich in meiner Anwendung ca 7000 Docs bearbeiten wollte und somit entsprechende Kill-Anforderungen abgeschickt habe war meine Windows-Installation nicht mehr zu gebrauchen.

Es lief nichts mehr.

Das Problem wird wohl irgendwo in der Nähe des Garbage-Collectors liegen.

Auch reagiert WinXP ganz anders als Vista.

Gruß

Vielen Dank für die Info,

der Kill funktioniert schon, er killt auch andere Jobs des Words.

Da ich in meiner Anwendung ca 7000 Docs bearbeiten wollte und somit entsprechende Kill-Anforderungen abgeschickt habe war meine Windows-Installation nicht mehr zu gebrauchen.

Es lief nichts mehr.

Das Problem wird wohl irgendwo in der Nähe des Garbage-Collectors liegen.

Auch reagiert WinXP ganz anders als Vista.

Gruß

Hallo Saba1001

Ich habe das Problem auf meie Weise ersteinmal gelöst. :-)

Da ich meine Dokumente heraus im eigenen Browser laden lasse, wird zu jedem Documet ein eigener Process gestartet. Hierbei war das Problem stets, dass es zu keinem Finally kam und mein System schneller war, als "Winword" selber. Die internen Processe von "Winword" waren noch nicht abgeschlossen und es kam daher zur Fehlermeldung. Also lasse ich mir jeweils die Dateiendungen meiner Dateien bestimmen und lasse dazu wenn das System hängt einfach den Prozess killen. Ich habe dem Rechner einfach noch eine kurze Auszeit verpaßt und schon hat es funktioniert.


Imports System.Threading


private sub Datei_killen()

        Dim Dateiname, Endung


        ' Hier kann deine Datei als Variable ausgegeben werden

        Dateiname = "Testdokument.doc"

        Endung = Mid(Dateiname, InStrRev(Dateiname, "."))



        If Endung = ".doc" Then

            Dim name As String = "Winword"

            Dim procs As Process() = Process.GetProcessesByName(name)

            For Each p As Process In procs

                'If p.MainWindowTitle = String.Empty Then

                p.CloseMainWindow()

                p.Kill()

                GoTo gekillt

                'End If

            Next

        End If

        If Endung = ".xls" Then

            Dim name As String = "Excel"

            Dim procs As Process() = Process.GetProcessesByName(name)

            For Each p As Process In procs

                'If p.MainWindowTitle = String.Empty Then

                p.CloseMainWindow()

                p.Kill()

                GoTo gekillt

                'End If

            Next

        End If

        ' weitere Dokumentenendungen selber anfügen


gekillt:


        Dim i as Integer=0


        Do While i < 3

            Thread.Sleep(2000)

            i = i + 1

        Loop

end sub


Bei mir hat es bisher prima funktioniert. Versuch macht klug. Du mußt nur die entsprechenden Endungen deiner Dateien festlegen, die mit in der Routine behandelt werden sollen. :old

Bearbeitet von PowerLooser

Thx geht natürlich noch an HJST1979 und 0815FIA für eure schnellen Anworten. Konnte leider nicht eher den Dank verschicken! :e@sy

np :)

ich würde noch .xlsx und .docx dazunehmen, damit das auch für 2007er docs funktioniert.

Guter Gedanke .. man weiß ja nie! :floet:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.