A有一个C#类,简化了全局热键的处理。
该类使用Win32-API函数RegisterHotKey()
来注册热键。
根据MSDN,此函数需要ID值在0x0000到0xBFFF范围内
从应用程序调用时,ID值在0xC000到0xFFFF范围内
从共享DLL调用。 GlobalAddAtom()
可用于在运行时获取ID
在DLL中。
要隐藏与类用户的区别,类本身应该决定哪个 注册热键时使用ID范围。好吧,要做到这一点,班级必须 能够检测其代码是在应用程序内还是在应用程序内运行 共享DLL。
但是怎么做?什么是最好的C#/ .NET方式呢?
答案 0 :(得分:3)
试试这个:
bool isDll = this.GetType().Assembly.EntryPoint == null;
MSDN:
“属性值MethodInfo对象 这代表了入口点 这个集会。如果没有入口点 发现(例如,组件是一个 DLL),一个空引用(Nothing in 返回Visual Basic)。 “
答案 1 :(得分:3)
答案 2 :(得分:1)
完成菲利普回答:
您需要获取调用函数的程序集的引用,因此代码应如下所示:
Assembly assembly = Assembly.GetCallingAssembly();
Boolean isDll = assembly.EntryPoint == null;
希望这有帮助。
Ricardo Lacerda Castelo Branco