簡體   English   中英

確定是否從基於Windows的應用程序中調用類庫

[英]Determine whether the class library is called from a windows based application

這是基於C#的。 我在一個圖書館中,我想具體了解它是否從基於Windows的應用程序中調用

我進行了很多搜索,但發現的只是代碼,以了解是否從控制台應用程序調用了它。 我只想知道它是否從基於Windows的應用程序中調用

請幫忙

如果您想知道該應用程序是作為服務運行還是作為系統應用程序運行,因此無法顯示對話,請測試Environment.UserInteractive的狀態。

沒有簡單的方法來確定應用程序是Windows還是基於cmd的應用程序。 例如,我可能會構建一個基於Winforms的應用程序,該應用程序不會創建窗口,而是通過不打開窗口而作為命令行樣式的應用程序運行。

兩種(不一定可靠)測試它是否為基於Windows的應用程序的方法是測試Application.OpenForms(如果包含表單,則為Windows應用程序)或Environment.GetCommandLineArgs()(如果args為0,則假定它為Windows。應用)。

如果您絕對需要知道該應用程序是控制台還是Windows,那么您需要走出托管代碼領域,並開始使用非托管C ++代碼深入研究exe文件。 exe文件的PE標頭中的兩個字節之間只有一個字節的差異:Windows應用程序的子系統設置為2,cmd應用程序的子系統設置為3。 如果您確實要執行此操作,請參閱http://msdn.microsoft.com/zh-cn/library/ms809762.aspxhttp://support.microsoft.com/kb/90493/zh-cn了解詳細信息。

暫無
暫無

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

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