2012-03-01 21 views
5

Tôi muốn ứng dụng Word của tôi đến Foreground khi tự động hoàn tất.Làm cách nào để lấy Id Hwnd/Process cho một ứng dụng Word, và thiết lập như Foreground Window

Tương đương trong Excel là thẳng về phía trước - các đối tượng Excel Ứng dụng có một tài sản .Hwnd mà bạn có thể sử dụng kết hợp với các API Windows:

SetForegroundWindow((IntPtr)excelApp.Hwnd); 

Tuy nhiên các ứng dụng Word không có một tài sản .Hwnd .

Tôi đã cố gắng sử dụng Khởi động() theo thứ tự này:

wordDoc.Activate(); 
wordApp.Activate(); 

nhưng điều này không hoạt động.

Tôi đã xem xét quá trình tìm kiếm bằng tên ứng dụng, nhưng có thể có nhiều hơn một bản sao của Word đang chạy.

Cảm ơn

Joe

+0

Cũng có một bài đăng trên SO mô tả nó. http://stackoverflow.com/questions/814936/get-pid-from-word-applicationclass –

+1

Cảm ơn Greco - Tôi đã nhìn thấy bài đăng đó, tôi đã hy vọng giữ mã trên cao xuống .. –

Trả lời

4

Bạn có thể cần phải lặp các processArray ngoài đầu tiên. Với từ 2010 chỉ có một WinWord hiển thị trong trình quản lý tác vụ cho dù có bao nhiêu phiên bản được mở.

 System.Diagnostics.Process[] processArray = System.Diagnostics.Process.GetProcessesByName("WinWord"); 
     System.Diagnostics.Process word = processArray[0]; 
     SetForegroundWindow(word.MainWindowHandle); 
+0

+1 để biết thông tin, nhưng Tôi phải xen vào: đó là chắc chắn không đúng về Word 2010+ chỉ bao giờ sinh sản một "WinWord" quá trình - chỉ cần gọi "ứng dụng mới (...)" hai lần là tất cả phải mất. – BrainSlugs83

Các vấn đề liên quan