簡體   English   中英

COM MFC應用程序不顯示窗口

[英]COM MFC application don't show window

我有一個具有ATL支持的MFC應用程序,其想法是當有人創建在mfc應用程序中聲明的接口實例時,此實例創建並顯示一個窗口。

如果com客戶端是cmd.exe,則一切正常,我制作了一個快速的com客戶端,該實例是該接口的實例,並且當出現這些實例時,窗口將根據需要顯示。

但是,如果此實例化是在另一個com對象(例如atl服務器對象(服務))中完成的,則不會顯示該窗口。 請注意,mfc進程是在DcomLaunch進程下創建的,但沒有顯示任何窗口。 一切正常,但窗口未顯示在桌面上。

兩個問題:

1)為什么在這種情況下我的窗口沒有顯示?

2)當我使用控制台應用程序創建相同的界面時,只會創建mfc應用程序的一個進程,而不會啟動多少個控制台應用程序,並且如果服務嘗試實例化多個對象,則將創建多個mfc進程創建! 這是為什么,我如何避免這種情況。 如何使第一個mfc進程始終與響應客戶端呼叫的進程相同?

(我認為這都是由於安全設置而引起的...但是我已經嘗試過更改某些內容而已...)

謝謝

no野

通常,服務無法創建窗口。 在Vista之前,您可以通過給定服務屬性的“登錄”標簽上的“允許服務與桌面進行交互”復選框來使服務與桌面進行交互(例如,打開窗口)。 如果您的目標是Vista,則不能選擇此選項。

但是,鑒於這是您要處理的DcomLaunch服務,您顯然不想這樣做。

即使是您自己提供的服務,您寫的大多數人也會出於某些原因(不分先后)建議您不要這樣做:

  • 創建的用戶界面只能在會話0中訪問
  • 創建窗口會在您的(可能)特權進程中創建攻擊服務,因為用戶運行的任何其他進程都可以與該服務的窗口進行交互。

同樣,由於以上內容僅適用於Vista之前的版本,並且仍然是一個壞主意,因此,要公開UI的服務通常被接受的“最佳實踐”是擁有一個單獨的應用程序,其中包含與用戶設備進行通信的UI您選擇使用的任何IPC機制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM