月归档:2012年09月

关掉64位系统中32位程序的目录重定向

在64位Windows系统中运行的32位程序会被系统欺骗.

例如windows\system32的目录实际是windows\syswow64目录的映射.

program files实际是program files(x86)的映射.

注册表的hkey_local_machine\so[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

判断当前进程是否以管理员权限启动的

[code lang="delphi"]

uses
shlobj;
type
WELL_KNOWN_SID_TYPE = (
WinNullSid,
WinWorldSid,
WinLocalSid,
WinCreatorOwnerSid,
WinCreator[......]

全文阅读

发表在 Delphi, 未分类 | 2条评论

DelphiXE3的FireMonkey的体积我实在无语了.

建立一个空的FireMonkey的HD工程,就一个主窗口.

编译出来Debug版20MB多.Release版8MB多.

不知道功能和速度上怎么样.不然实在找不到亮点啊

发表在 Delphi, 未分类 | 留下评论

PNG分割

Delphi新版本虽然集成了PngImage但是分割复制什么的却非常难用.稍微封装了一下.可以把一张PNG横向分割成N张.透明通道什么的都可以保持不变.

[code lang="delphi"]
//2013.7.22代码做了改动,变成按行和列切割.CopyPng也做了处理,可以拷贝任意区域[......]

全文阅读

发表在 Delphi, 未分类 | 9条评论

C++的MemoryStream,和Delphi/BCB基本兼容

只有一个头文件.

[code lang="cpp"]

/*
CMemoryStream
学过Delphi和BCB的同学懂的.
只要引用这个头文件即可.
*/
#pragma once

#include <Windows.h>[......]

全文阅读

发表在 CPP, 未分类 | 留下评论

C++内存INI文件

这套代码适用于从服务器拉取INI,而不用保存到文件,而且是跨平台的.支持Unicode和Ansi.

而Windows 那套INI API先不说和平台绑死,他一定要访问文件的.

[code lang="cpp"]

/*
王锐.2012.8.31
*/

#pragma onc[......]

全文阅读

发表在 CPP, 未分类 | 留下评论

FireMonkey工程减肥

今天和同事在搞一个Delphi XE2的东东.结果发现FireMonkey编译出来的程序有8MB.即便采用了Release + WeakRTTI编译选项也3.5MB左右.

阅读了一下FireMonkey的源代码.发现FireMonkey耦合的非常紧密.

例如Forms单元,就实现了2D,[......]

全文阅读

发表在 Delphi, 未分类 | 2条评论

内存加载模块,支持32/64 DLL文件

http://blog.csdn.net/wr960204/article/details/2134157

上几天有人说找遍互联网也找不到内存加载模块能够成功加载DelphiXE2编译出来的的64位DLL的.

看了一下,其实DelphiXE2编译出来的DLL本身是没问题的,而是这些内存加[......]

全文阅读

发表在 Delphi, 未分类 | 16条评论

Win7下超级管理员创建普通权限任务

转自我的旧博客

已转至新的博客 http://www.raysoftware点击打开链接.cn/?p=49

项目中用到一个功能,Win7下超级管理员创建普通权限任务.

试了几种办法,例如获取资源管理器的Token,然后以这个Token用CreateProcessWithTokenW[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Delphi磁性窗口

转自我的旧博客

昨天要用到磁性窗口,就是两个窗口离得近到一个距离就吸附到一起.拖动主窗口,吸附窗体一块运动.

到网上搜了一下,基本没见到可以使用的.有个东东,还是收费的.没办法自己写了一个.

用法很简单,把你的窗口都改成从这个继承即可生效.例如

type
TForm[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

一个灵巧的Delphi多播实事件现方案.

转自我的旧博客

一个灵巧的Delphi多播实现方案.必须是支持泛型的Delphi版本.也就是Delphi2009以后.强烈建议用DelphiXE.

用法就是例如写一个Class指定一个Event,触发的时候会通知多个Method.和.NET的多播事件机制是一样的.

用法例如:[......]

全文阅读

发表在 Delphi, 未分类 | 8条评论

给Delphi的工具条按钮添加BTNS_WHOLEDROPDOWN风格

转自我的旧博客

工具条按钮的BTNS_WHOLEDROPDOWN风格是IE5以后就提供的.

Delphi早期版本估计是为了照顾兼容性工具条按钮是没有这个风格的.只有下面几种和系统风格对应的风格.

TToolButtonStyle = (tbsButton, tbsCheck[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

一个可以再WIN2000及以上操作系统使用的GetTickCount64

转自我的旧博客

以后尽量用Delphi/C++双代码写.

GetTickCount返回值是整数,这样的话最多49天多就会复位重新从0开始.Vista以后提供了GetTickCount64这个函数, 但是WindowsXP还是主流.在项目中为了处理这个,自己实现了一套办法.这个GetTic[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Delphi的Anymouse方法探秘

转自我的旧博客

这段时间换工作.加之身体不太好.总是感冒和喉咙发炎.就整天躺在家里等待面试电话.刚好有了点时间能看看Delphi的一些新东西

自从Delphi2009以后增加了一种匿名方法.

通过反汇编跟踪发现是编译器利用插入接口,类,对象来实现的.

Delphi2010刚好有R[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

一个最简单的Delphi2010的PNG异形窗口方法

转自我的旧博客

同事演示了一个.NET的的PNG异形窗口.挺漂亮.于是也想用Delphi显摆一个.

关于Delphi用PNG做异形窗口的资料有不少.都是用GDIPlus或者TPNGImage组件加载PNG图像做的.但是我很懒,不想引用的GDIPlus,也不想去找PNGImage下载.[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Windows CE,Windows Mobile在PC端的操作.

转自我的旧博客

上一段做WindowsCE上的工作.翻译,包装了微软的RAPI和dccManSink等.

可以感知嵌入社设备的插拔.可以操作嵌入式设备上的注册表.文件,数据库等等.

发出来算是给Delphi社区做个贡献

下面贴出的是三个单元的代码.也可以在CSDN下载.里面包含例[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Delphi2010的RTTI增强

转自我的旧博客

Delphi编译的文件体积增大了很多.很大一部分原因是因为Delphi2010默认提供了全信息的RTTI.

每一个数据类型都有全部运行时信息.例如可以在运行时获得结构体的成员以及成员类型等.

这个功能带来的方便就是我们可以写很多通用的序列化方法.也可以做一些类似OR的东[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Delphi2010中Windows7新的taskbar功能的使用

转自我的旧博客

Windows7正式版已经用了很久了.MSDN上面正式版Windows7已经发布很久了.
发现Windows7的TaskBar很漂亮.也有很多功能.例如IE下载的时候可以看到进度,可以叠加图标等等特效.
Delphi2010也发布很久了,Delphi2010号称支持Wind[......]

全文阅读

发表在 Delphi, 未分类 | 一条评论

再探Delphi2010 Class的构造和析构顺序.

转自我的旧博客

发了上一篇博客.盒子上有朋友认为Class的构造和析构延迟加载.是在Unit的初始化后调用的Class的构造.在Unit的反初始化前调用的Class的析构函数.

为了证明一下我又做了个试验

unit Unit2;

interface

Type[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

Delphi2010新发现-类的构造和析构函数功能

转自我的旧博客

Delphi2010发布了.

虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究.

今天有点时间试了一下新功能.

本来C#和Delphi.NET是支持类的构造函数/析构函数的(注意不是实例的构造[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

获取进程的命令行参数

转自我的旧博客

type

UNICODE_STRING = packed record

Length: Word;

MaximumLength: Word;

Buffer: PWideChar;

end;

PUNICODE_STRING = UNIC[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

集合和字符串的转换

转自我的旧博客

?在DFW上回答了一个问题.写了些代码.为了以后用贴到这里

uses
TypInfo;

type
TSetDemo = set of(S1, S2, S3, S4);

procedure StrToSet(TypeInfo: PTypeInfo;[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)

构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)

转自我的旧博客

构造一个通用的回调Thunk.(把回调函数指向对象的方法)
最近又看到了VCL代码中的MakeObjectInstance函数,实际上是一段WndProc的Thunk代码.再一次感叹VCL设计之精巧,[......]

全文阅读

发表在 Delphi, 未分类 | 2条评论

18位身份证号码的校验

转自我的旧博客
18位公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
组成:六位地址,八位生日,三位顺序码, 一位校验码。校验方法:
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和
Ai[......]

全文阅读

发表在 Delphi, 未分类 | 留下评论

像Delphi IDE一样运行时设计控件IDesignerNotify, IDesignerHook的实现

转自我的旧博客

前几日有个朋友问我Delphi的TCustomForm的Designer是怎么实现的.

以前研究过这个.于是花了一个上午写了代码给他.代码如下.

想要设计窗口的时候直接调用一下BeginDesign函数.结束设计调用一下EndDesign就行了.

2013[......]

全文阅读

发表在 未分类 | 3条评论

Delphi是最适合编写ShellCode的工具

本文是写给经常写ShellCode或者给PE文件添加代码的人的.
题目这样写有点不精确.不过Borland的编译器确实是算得上最适合编写ShellCode工具.
编写ShellCode的朋友们知道.字符串常量应该是处理起来非常麻烦.
例如:
调用GetProcAddress函数吧.参数有一个[......]

全文阅读

发表在 未分类 | 留下评论