上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
摘要: 转自:http://www.cnblogs.com/manors/archive/2010/05/17/COM_Initialize_STA_MTA.html 调用任何COM组件之前,你必须首先初始化COM套件环境,即调用CoInitialize或CoInitializeEx。COM套件环境在线程 的生存周期内有效,线程退出前需要调用CoUninitialize释放COM套件。所谓COM套件,实际上是微软为了方便大家理解而起的一个名字,不过个人认为改名词很难理解。COM套件只指COM组件运行时的环境,其中包括 COM组件的数据、变量、线程调度方式。COM套件分为两种模式,单线程套件(STA)和 阅读全文
posted @ 2011-11-11 00:48 Handll 阅读(1171) 评论(0) 推荐(0) 编辑
摘要: procedure VariantToStream (const v : OleVariant; Stream : TMemoryStream); var p : pointer; begin Stream.Position := 0; Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound (v, 1) + 1; p := VarArrayLock (v); Stream.Write (p^, Stream.Size); VarArrayUnlock (v); Stream.Position := 0; en... 阅读全文
posted @ 2011-11-11 00:47 Handll 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 为何要使用 Aarry of Const呢?由于 Aarry of Const是一种优化过的变体数组,我们让她来做传入参数,相当灵活和方便。 试想一下,如果三层客户端接口为:OpenQuery([ParamName1,ParamValue1,ParamName2......]),客户端 接口函数会显得非常简洁和一目了然,可以接受动态的参数名和参数值。当然,在传入参数,你还可以使用TParams做传入参数,处理起来也是很灵活和方 便。但我个人不太喜欢创建对象方式的传入参数。你还可以用字符串做传入参数,然后再解析,这种方式不是很严谨,而且敲代码的人会很累和容易导致人为录入错 误。 对比Aa... 阅读全文
posted @ 2011-11-11 00:47 Handll 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin Socket 通信在Windows 中是排队的形式由操作系统处理,而且接收方和发送方相互协同工作,否则就会造成数据丢失。因此,不能用类似于for 语句的循环来实现对多组数据的发送,更不能用循环语句来接收数据。比如,你可以用for 语句来实型若干文件的复制,这很普遍也很正常,但在 Socket编程以及大多数网络应用编程中都是行不通的,因为网络通信的基本方式是请求和应答。另外,和所有的通信编程一样,Socket编程也遵循数据 分包传送这一基本规则。也就是说,在 Socket编程中,每次发送和接收一个包,以保证数据传输的安全性和稳定性,同时也不至于过多地占用系统资源。... 阅读全文
posted @ 2011-11-11 00:47 Handll 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin Delphi 7中带有两套TCP Socket组件:Indy Socket组件(IdTCPClient和IdTCPServer)和Delphi原生的TCP Socket组件(ClientSocket和ServerSocket)。 但是,Borland已宣称ClientSocket和ServerSocket组件即将被废弃,建议用相应的Indy组件来代替。因此,笔者使用了 Indy。本文在对Indy进行简要介绍的基础上,创建了一组简单的TCP Socket数据传输应用来演示了Indy的使用方法。 开放源代码的Internet组件集——Int... 阅读全文
posted @ 2011-11-11 00:46 Handll 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin { windows似乎只提供了一种启动进程的方法:即必须从一个可执行文件中加载并启动。 而下面这段代码就是提供一种可以直接从内存中启动一个exe的变通办法。 用途嘛, 也许可以用来保护你的exe,你可以对要保护的 exe 进行任意切分、加密、存储, 只要运行时能将exe的内容正确拼接到一块内存中,就可以直接从内存中启动,而不必不安全地去 生成一个临时文件再从临时文件启动进程。另外这段代码也提供了一种自己写exe外壳的简单途径, 如果能配合其它各种外壳技术就更好地保护你的exe文件。 原理很简单:就是“借尸还魂”,启动一个僵尸进程(NT下可以是自身程序启动的另一个进程.. 阅读全文
posted @ 2011-11-11 00:45 Handll 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin “回调机制”是window 在执行某个API函数的过程中,调用指定的一个函数(回调函数)。 比如:你 有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好 了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回 叫,手机是我通知你的手段,它就是回叫函数,也叫回调函数(Callback Function)。 简单说就是,由程序员编写的,给windows系统(API)调用的函数。 也就是说,函数.. 阅读全文
posted @ 2011-11-10 20:59 Handll 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin unit PE; interface uses windows; function MemExecute(const ABuffer; Len: Integer; CmdParam: string; var ProcessId: Cardinal): Cardinal; implementation type TImageSectionHeaders = array[0..0] of TImageSectionHeader; PImageSectionHeaders = ^TImageSectionHeaders; { 计算对齐后的大小 } function Get.. 阅读全文
posted @ 2011-11-10 20:58 Handll 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 最终编辑 e__jin 在Windows系统中,勾子(hook)是一种特殊的消息处理机制。勾 子可以监视系统或进程中的各种事件消息, 截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的勾子,监视系统中特定事件的发生,完成特定的功能, 比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用勾子可以实现许多特殊而有用的功能。 勾子的类型 ----1. 按事件分类,有如下的几种常用类型 ----(1) 键盘勾子和低级键盘勾子可以监视各种键盘消息(WH_KEYBOARD)。 ----(2) 鼠标勾子和低级鼠标勾子可以监视各种鼠... 阅读全文
posted @ 2011-11-10 20:58 Handll 阅读(306) 评论(0) 推荐(0) 编辑
摘要: Delphi内存管理与内存泄漏探析 杨继宏,龚 晖,李 治 摘 要:综述了Delphi环境下动态内存分配与释放的方法,分析了内存泄漏的可能原因,并列举了开发“智能型远程作业系统”过程中出现的有关内存泄漏的几个实例。 关键词:内存分配;内存释放;内存泄漏;智能型远程作业系统 1 引 言 Delphi是Borland公司的划时代之作,以其功能强大且易学 好用而受到广大程序员的青睐。关于Delphi的文章很多,大多数是讨论其生产的高效率、各种应用的快速实现,却忽视了一个基本却非常重要的问题内存动态 分配与安全释放。Delphi应用程序开发的许多问题是由不正确的内... 阅读全文
posted @ 2011-11-10 20:56 Handll 阅读(438) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页