我一直在努力解决这个问题。我需要运行公司应用程序的不同设备。它是使用.NET CF 1.1编写的。两者都有自己的托管dll,需要调用才能从枪上取下序列号。
我还没有找到一种安全的方法来呼叫一个,如果它失败了,继续打电话给下一个。异常总是发生在我的应用程序之外,无法捕获,从而导致我的应用程序崩溃。
这些dll会随我的软件一起复制,因此我无法对设备进行文件检查。
你们有什么想法可以让我在没有硬崩溃的情况下识别出另一台设备而让我在没有问题的情况下调用相应的dll吗?
我是直接使用引用的dll,以及通过反射(一个dll我需要一个MethodInfo.invoke,另一个只是一个字段值)。
感谢任何和所有帮助。谢谢!
答案 0 :(得分:1)
使用SPI_GETOEMINFO调用SystemParametersInfo以查看OEM是否提供了一些您可以查找的特定于平台的字符串。一些OEM也有自己的平台名称的特定注册表项,因此您可以使用远程注册表查看器查找它,然后如果找到它,则打开它。
修改强>
有一个例子,用于检测条码扫描器制造商,on MSDN。
答案 1 :(得分:0)
使用反射的更多工作表明我可以正确捕获异常并且它不会使应用程序崩溃。我的解决方案是根据资源管理器向我展示的内容使用反射公开属性或方法,并使用System.Reflection库中的各种方法获取或设置值。