HOW TO:判断主程序是Windows应用程序还是控制台应用程序

本文介绍了如何通过TypeHelper类判断调用DLL的主程序是Windows应用程序还是控制台应用程序。主要依据ApplicationBase、ConsoleApplicationBase和WindowsFormsApplicationBase进行判断,并提供了测试示例,展示了不同情况下应用类型的体现。MyApplicationBase类在特定场景下可以用于决定信息输出方式,例如控制台程序输出到控制台,WinForm程序以Form形式显示。
摘要由CSDN通过智能技术生成

Author:水如烟  

这里用到TypeHelper类 。

我们知道,桌面应用程序一般有两种类型,一是Windows应用程序,二是控制台应用程序。
如何判断调用自己所在Dll的主程序是Windows还是控制台应用程序呢?

解决这个问题,基点是ApplicationBaseConsoleApplicationBaseWindowsFormsApplicationBase
攻击的地方,当然是Application了。

我也曾想到能否从Thread.CurrentContext,Thread.CurrentThread,AppDomain.CurrentDomain来切入,不过没有去看。现在想“当然”的Application,有点武断,况且,Application源于System.Windows.Forms空间,用它来判断ConsoleApplicationBase,总觉得有些刺。

据自己的测试,主程序的有三种体现方式,如下:

Public     Enum    ApplicationType 
        WindowsForms   
' 这是Form启动的Windows应用程序 
        ConsoleForms      ' 这是Main启动且含代码Application.Run(New   Form)的控制台应用程序 
        Console                 ' 这是Main启动无窗体的控制台应用程序,就算是Form.ShowDialog也列于此项 
End     Enum  

MyApplicationBase.vb

Imports  Microsoft.VisualBasic.ApplicationServices

Namespace  LzmTW.uSystem.uForms

    
Public   Class  MyApplicationBase

        
' System.Windows.Forms.Application+ThreadContext
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值