繁体   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