摘要: 初始在DLL中调用窗口直接使用Screen.ActiveForm然后show.效果:窗口出现立刻关闭,并提示错误.网上搜索结果:在Delphi中调用窗体有两种方式:模态调用与非模态调用。对应的方法是ShowModal与Show在调用之前,首先需要了解一个事实:主程序的Application与DLL的Application实际上是两个不同的东西。这就是说,直接使用DLL自身的Application变量肯定得不到预期的结果。解决的方法有两个:⑴ 主程序的Application句柄传递给DLL,并覆盖之。⑵ 主程序的Application直接传递给DLL,并覆盖之。同理,也可以把主程序的Screen 阅读全文
posted @ 2012-12-16 20:56 fred_rk 阅读(427) 评论(0) 推荐(0)
摘要: DLL中的函数返回string类型,在Delphi中动态调用时可以得到正确结果,在关闭程序是提示错误:Invalid pointer operation在网上搜索了一圈,均指向内存泄露,以及下面的解决方法: Windows中如果一个动态库导出函数以参数形式传递或者返回了一个长字符串或者 动态数组(无论是直接传递还是包含在一个对象中),那么动态库以及其调用程序都必须得引用ShareMem单元。同样,如果程序或者库通过New或者 GetMem申请了内存,并且该内存在另一个模块中通过Dispose或FreeMem释放,也得这么做。务必把ShareMem放在程序或者库所有引用 单元之首。 Shar.. 阅读全文
posted @ 2012-12-16 20:36 fred_rk 阅读(945) 评论(0) 推荐(0)
摘要: 1、根据ClassName 'Ports' 找出相应的GUID。2、根据GUID找到已安装设备的信息。3、枚举设备集中的设备信息。4、打开设备的注册表项特定的配置信息。5、根据返回的注册表项查找‘PortName’对应的串口号。//Delphi 7中枚举系统串口function EnumSystemSerial: TStringList; stdcall;var Key: HKEY; GUID: TGUID; Buffer: PChar; Index: Integer; Judge: Boolean; BufferType: DWORD; RequiredSize: DWORD 阅读全文
posted @ 2012-10-31 18:34 fred_rk 阅读(1561) 评论(0) 推荐(0)
摘要: SetupDiClassNameFromGuid 通过设备类名得到设备类型的GUID函数定义BOOL SetupDiClassNameFromGuid( PGUID ClassGuid, PCHAR ClassName, DWORD ClassNameSize, PDWORD RequiredSize )函数参数PGUID ClassGuid 提供一个指向GUID的指针给Class Name检索。PCHAR ClassName ... 阅读全文
posted @ 2012-10-27 23:20 fred_rk 阅读(959) 评论(0) 推荐(0)
摘要: SetupDiGetClassDevs获取一个指定类别或全部类别的所有已安装设备的信息函数定义HDEVINFO SetupDiGetClassDevs( PGUID ClassGuid, PCHAR Enumerator, HWND hwndParent, DWORD Flags )函数参数PGUID ClassGuid 在创建设备列表的时候提供一个指向GUID的指针。如果设定了标志DIGCF_ALLCLASSES,则这个参数可以忽略,且列... 阅读全文
posted @ 2012-10-19 19:10 fred_rk 阅读(3000) 评论(0) 推荐(0)