2017-11-06 7 views
0

ワードプロセスインスタンスをチェックしていますが、ワードインスタンスのインスタンスを複数開いていますが、ワードの最初のインスタンスのみを返してprocessを返します。私はメモ帳をプロセスとして使用すると動作しますが、winwordでは動作しませんでした。プロセスAPIがmsワードプロセスのすべてのインスタンスを返していません

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

あなたが投稿したコードは、ディスク上のファイルをリストするようです。あなたは現在実行中のワードプロセスを見たいですか?これを見てくださいhttps://stackoverflow.com/questions/11055147/how-do-i-get-list-of-process-names-running-in-vb-net – pmcilreavy

+1

FYIのウィンドウとプロセスは同じものではありません。 Wordは、同じプロセスで複数のドキュメントウィンドウを実行できます(通常は実行します)。 –

+2

Wordのインスタンスを2つ以上開いていません。 [タスクマネージャ]の[プロセス]タブに表示されるものです。 Wordは単一のインスタンスプログラムですが、大きすぎます。だから、もう一度始めてみると、2番目のインスタンスがドキュメントを開くように最初のインスタンスに要求するだけです。そしてそれは終わる。 –

答えて

1

私はこの問題を解決しました。Word.Application APIでこの問題を解決しました。フォーム参照の追加を追加できます。

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 
関連する問題