簡體   English   中英

如何確定.Net DLL是否用於GUI應用程序或Web服務?

[英]How to deterimine whether .Net DLL is used in a GUI app or web service?

如何在.Net DLL中確定它是在Windows GUI應用程序還是Web服務中運行? 我有一個低級別的類,它在兩個應用程序之間共享,並且需要在Web服務中使用時禁用消息框。

Windows應用程序有200多個解決方案,我無法重新考慮現有代碼。 Web服務需要重用一些功能,我正在尋找快速修復。

只是一條通用建議,您的低級類可能不應該使用消息框本身,但應該允許中間(更接近接口)類來處理您可能需要消息框的情況。

如果你這樣做,那么你只需要為網絡使用不同於桌面的更高級別的類,並且每個類都有適合其上下文的通知工具。

如果它在Web上下文中運行,則HttpContext.Current將不為null。

您可以使用Environment.UserInteractive屬性。

UserInteractive屬性為Windows進程或IIS等服務報告錯誤,該服務在沒有用戶界面的情況下運行。 如果此屬性為false,則不顯示模式對話框或消息框,因為沒有用戶可以與之交互的圖形用戶界面。

我知道你無法做到這一點,但是......你也可能想要考慮你的應用程序設計。

我不知道這是否有效,但可能會有效。 使用這些Win32調用:

GetModuleFileNameEx獲取dll的exe並保存以供以后比較。
EnumWindows獲得所有頂級窗口。
GetWindowModuleFileName將窗口句柄從EnumWindows轉換為模塊名稱。

如果你可以在GetWindowModuleFileName的結果中找到你自己的exe,那么你的dll就在GUI應用程序中運行。

暫無
暫無

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

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