2017-11-02 4 views
1

Ich versuche Wort Dateipfad zu lesen, aber es gibt mir den falschen Weg in vb.net und ich bin mit Path.getfullpathGet Ausführen von Instanzen von Word-Datei

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

Es sieht aus wie Ihre Frage meist Code ist, fügen Sie bitte einige Kommentare. – fmgonzalez

+1

'Path.GetFullPath()' kann nicht einfach magisch den Pfad nach dem suchen, was auch immer Sie ihm übergeben. Es wird lediglich sichergestellt, dass Sie keine relativen Pfade haben, dh 'Hello.txt' würde' C: \ Programme (x86) \ yourApp \ Hello.txt' werden, wenn das Arbeitsverzeichnis Ihrer Anwendung 'C: \ Programme (x86) \ yourApp'. –

+1

Mögliches Duplikat von [C#: Wie bekomme ich den vollständigen Pfad des laufenden Prozesses?] (Https://stackoverflow.com/questions/5497064/c-how-to-get-the-full-path-of-running-process) –

Antwort

1

Sie können Sie auch Microsoft.Office.Interop.Word Bibliothek

Dim wordApp As Microsoft.Office.Interop.Word.Application 
wordApp = Marshal.GetActiveObject("Word.Application") 
FileTxt = My.Computer.FileSystem.OpenTextFileWriter("E:\txt.txt", True) 
For Each f In wordApp.Documents 
     pName = Path.GetFileName(f.FullName).ToString() 
     pPath = f.Path.ToString() 
     FileTxt.WriteLine("Word Process Name : {0} ", pName) 
     FileTxt.WriteLine("Path of File : {0} " , pPath) 
Next 
0

wenn Sie verwenden für jeden Schleife vermeiden Sie, p (I) anstelle von "a" zu tun. Dadurch kehrt all Wort Prozess offen

Dim p() As Process = System.Diagnostics.Process.GetProcessesByName("winword") 
     Dim List As New List(Of String) 
     Dim cList As New List(Of Int32) 
     Dim I As Int32 = 0 
     If p.Count > 0 Then 
      For Each a In p 
       Dim fullpath As String = "" 
       Console.WriteLine(a) 
       Console.WriteLine(p.Count) 
       Console.WriteLine("Word Process Name : {0} is started on time {1}", a.MainWindowTitle, a.StartTime.ToString) 
       fullpath = Path.GetDirectoryName(a.MainModule.FileName) 
       Console.WriteLine("Path Of the file is : {0}", fullpath) 
       cList.Add(I) 
       I += 1 
       List.Add(a.MainWindowTitle) 
      Next 
     Else 
      'Word not open 
     End If 

man so etwas können Sie die Datei in Ihrem System zu finden, aber dies könnte eine Weile dauern.

For Each foundFile As String In My.Computer.FileSystem.GetFiles(
    My.Computer.FileSystem.SpecialDirectories.MyDocuments, 
    Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, a.MainWindowTitle) 

    msgbox(foundFile) 
Next 
+0

Es erhält diesen Pfad C: \ Programme (x86) \ Microsoft Office \ Office16, wo meine Datei in diesem Pfad "C: \ Benutzer \ The Networks \ Desktop \ About New.docx" –

+0

gibt es den Prozess. Verwenden Sie a.MainWindowTitle, um den Dateinamen zu öffnen, aber dies gibt Ihnen nicht den Pfad dieser Datei. – Chillzy

+0

Liebe die Lösung, die Sie zur Verfügung gestellt haben, ist nur Zugriff auf den Ordner MyDocuments, während ich auf den ganzen PC zugreifen möchte. –

Verwandte Themen