小李子

小小的蜗牛,慢慢的爬。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年3月28日

摘要: 从Dll中导出类,想必大家首先想到的是使用bpl包。这种方式有一个不好,那就是使用者必须清楚这个包中含有那些类,也就是说必须知道类的名字——这在一定意义上是个限制,试想一种情况,使用者定义了一个底层的抽象类(abstract class),然后在此基础上定义了许多应用类(concrete class),那么,对于使用者来说,他希望在不知道具体有哪些类的情况下能使用这些类——这么说似乎有些玄,但实际情况确实如此,因为定义抽象类的时候并不能预料到以后会有多少个具体类——那么这样的需求,要靠什么样的技术来实现呢? 其实实现的技术的难度并不大——作者在此将自己实践的经验献给大家,算作抛砖引玉,希望能. 阅读全文

posted @ 2012-03-28 15:34 ljl_falcon 阅读(283) 评论(0) 推荐(0)

摘要: 项目中用到一个功能,Win7下超级管理员创建普通权限任务.试了几种办法,例如获取资源管理器的Token,然后以这个Token用CreateProcessWithTokenW创建任务。这样做是可以的.但是如果当前没有资源管理器或者其他普通权限的任务怎么办?CreateToken自己构造一个Token也可以,但是那些参数看了就头大.试了一下以超级用户方式启动任务管理器用菜单中的运行,居然是默认创建普通权限任务,有一个复选项是以超级用户权限启动任务.用WINDBG跟踪了一下.发现任务管理器调用的是WdcRunTaskAsInteractiveUser这个函数.函数位域wdc.dll中.函数的形式分析 阅读全文

posted @ 2012-03-28 11:44 ljl_falcon 阅读(679) 评论(0) 推荐(0)

摘要: 昨天要用到磁性窗口,就是两个窗口离得近到一个距离就吸附到一起.拖动主窗口,吸附窗体一块运动.到网上搜了一下,基本没见到可以使用的.有个东东,还是收费的.没办法自己写了一个.用法很简单,把你的窗口都改成从这个继承即可生效.例如type TForm3 = class(TCustomMagnetForm) private { Private declarations } public { Public declarations } end;var Form3: TForm3;不多说了,上代码{ ***************************************************** 阅读全文

posted @ 2012-03-28 11:42 ljl_falcon 阅读(588) 评论(0) 推荐(0)

摘要: 一个灵巧的Delphi多播实现方案.必须是支持泛型的Delphi版本.也就是Delphi2009以后.强烈建议用DelphiXE.用法就是例如写一个Class指定一个Event,触发的时候会通知多个Method.和.NET的多播事件机制是一样的.用法例如:type TFakeButton = class(TButton) private FMultiCast_OnClik : TMulticastEvent<TNotifyEvent>; public constructor Create(AOwnder : TComponent);override; destructor Dest 阅读全文

posted @ 2012-03-28 11:40 ljl_falcon 阅读(284) 评论(0) 推荐(0)

摘要: 好久没来博客了.就凑合着添加一些东西吧.把最近开发的顺带的东西放出来因为开发要用到GDIPlus,在网上收集到了毛泽发封装的GDIPlus源代码.封装的非常好.为了和.NET进一步接近,把他们都改成接口模式的.能够实现垃圾回收.在毛泽发的GDIPlus基础上把所有的GDIPlus对象都变成接口方式,生存期自动管理.可以像C#一样用完不管释放.另外本开发包适用于Delphi5-Delphi2009中的任意版本.包括Delphi5和Delphi2009正在上传到盒子上面.上传成功的话我贴出链接.盒子太慢了.上传到了CSDN上.http://download.csdn.net/source/7656 阅读全文

posted @ 2012-03-28 11:30 ljl_falcon 阅读(349) 评论(0) 推荐(0)

摘要: 构造一个通用的回调Thunk.(把回调函数指向对象的方法)最近又看到了VCL代码中的MakeObjectInstance函数,实际上是一段WndProc的Thunk代码.再一次感叹VCL设计之精巧,效率之高.不喜欢MFC的消息映射方式,MFC的消息映射虽然好理解,但是是采用查表方式效率实在是太低了.VCL的MakeObjectInstance可以说是VCL Windows系统的灵魂所在,效率极高.不禁想可不可以实现一个通用的回调函数Thunk呢,可以把所有回调函数都变成对象的方法.但是MakeObjectInstance实际上是为WndProc特化的.分析一下回调函数1.回调函数不过是一个函数 阅读全文

posted @ 2012-03-28 11:20 ljl_falcon 阅读(247) 评论(0) 推荐(0)

摘要: 在about.com上看到一个简单好用的配置类,通过它可以很方便的保存、读取程序的配置信息。(来源:http://delphi.about.com/od/windowsshellapi/a/reader-writer.htm)unit uSettings;interfaceuses Classes;{$M+}type TCustomSettings = class public procedure LoadFromStream(const Stream: TStream); procedure LoadFromFile(const FileName: string); procedure... 阅读全文

posted @ 2012-03-28 09:50 ljl_falcon 阅读(306) 评论(0) 推荐(0)

摘要: 有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉。对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中)。一个插件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力。例如,Photoshop本身并不具备进行大量的图像处理功能。插件的加入使其获得了产生诸如模糊、斑点,以及其他所有风格的奇怪效果,而其中任何一项功能都不是父应用程序自身所具有的。对于图像处理程序来说这很不错,可是为什么要花偌大的力气去完成支持插件的商业应用程序呢?假设,我们举个例子,你的应用程序要产生一些报表。你的客户肯定会一直要求更新或者增加新的报表。你 阅读全文

posted @ 2012-03-28 09:09 ljl_falcon 阅读(321) 评论(0) 推荐(0)