2017-11-06 3 views
0

Ich überprüfe Wortprozessinstanzen, ich habe mehr als eine Instanz der Wortinstanz geöffnet, aber es gibt nur die erste Instanz von word und return process zurück.Count 1, Wenn ich Notepad als Prozess verwende, funktioniert es, aber mit winword hat es nicht funktioniert.Prozess-API gibt nicht alle Instanzen eines ms-Wortprozesses zurück

For Each a In p 
    If Not pName.Equals("") And I <= p.Count Then 
     Console.WriteLine(a) 
     Console.WriteLine(p.Count) 
     pName = p(I).MainWindowTitle.ToString 
     File.WriteLine("Word Process Name : {0} is started on time {1}", pName, p(I).StartTime) 
     fullPath = Path.GetFullPath(pName) 
     File.WriteLine("Path Of the file is : {0}", fullPath(0)) 
    End If 
Next 
+0

Der Code, den Sie veröffentlicht haben, scheint Dateien auf der Festplatte aufzulisten. Sie möchten die aktuell laufenden Wortprozesse sehen? Werfen Sie einen Blick auf diese https://stackoverflow.com/questions/11055147/how-do-i-get-list-of-process-names-running-in-vb-net – pmcilreavy

+1

FYI Windows und Prozesse sind nicht das Gleiche . Word konnte (und normalerweise) mehrere Dokumentfenster im selben Prozess ausführen. –

+2

Sie haben nicht mehr als 1 Instanz von Word geöffnet. Etwas, das Sie im Task-Manager auf der Registerkarte Prozesse sehen können. Word ist ein Einzelinstanzprogramm, es ist zu groß. Wenn Sie es also erneut starten, ruft die zweite Instanz die erste Instanz auf, um das Dokument zu öffnen. Und es hört auf. –

Antwort

1

Ich habe gelöst Dieses Problem mit Word.Application API können Sie hinzufügen Formular Referenz hinzufügen.

Dim wordApp As Microsoft.Office.Interop.Word.Application 
wordApp = Marshal.GetActiveObject("Word.Application") 
For Each f In wordApp.Documents 
      pName = Path.GetFileName(f.FullName).ToString() 
      pPath = f.Path.ToString() 
      File.WriteLine("Word Process Name : {0} ", pName) 
      File.WriteLine("File Path is: {0} ", pPath) 
      File.WriteLine("File Starting Time is {0}", pTime)         
Next 
Verwandte Themen