delphi dll中使用临界区的问题

honeycat205 2009-01-04 12:08:22
我的项目是使用delphi的dll库封装一个串口函数包,界面程序(也是delphi编写)调用我的dll库,对硬件设备进行操作。
dll中我新建一个点名的线程,主要负责自动通过串口对硬件设备进行点名,因为要和其他功能函数(也通过串口)同步,使用了
临界区,大概的代码如下:

var
lockSpace:TCriticalSection;//全局临界区对象

//初始化dll全局变量函数
begin
lockSpace := TCriticalSection.Create;//临界区对象的创建
end;

//新建点名线程的execute,其中使用了临界区,QueryLoopInfo等函数通过串口和下位通讯!!!!!
Procedure TCallingTThread.Execute;
Label NEXTLOOP;
var
address:byte;
i:integer;
p_Loop:PLoopInfo;
begin
if (not assigned(LoopList)) or (LoopList.Count=0) then runTThread:=false;//如果回路链表未初始化并赋值,退出线程
CoInitialize(nil);
//循环点设备
i:=0;
while runTThread do
begin
lockSpace.Enter;//进入临界区
if i = Looplist.Count then i:=0;//链表结尾,重新开始
p_Loop:=Looplist.Items[i]; //获取设备信息记录
FillChar(RGlobalBuf,Sizeof(RGlobalBuf),0);//清空收发全局变量
address:=strtoint(p_Loop.Loopid);

if p_Loop.ShieldFlag then goto NEXTLOOP;

case address of
1..80:QueryLoopInfo(p_Loop);//发送串口命令!!!!!
81:QueryIndicatorLight(p_Loop));//发送串口命令
82..85:QueryPrediction(p_Loop));//发送串口命令
end;

if p_Loop.QueryLoopFault then
begin
QueryLoopFault(p_Loop));//发送串口命令
p_Loop.QueryLoopFault:=false;
end
else
RLoopState.LoopStateInfo[address].FaultList:=[];

// if RLoopState.LoopStateInfo[address].FaultList <> [] then
ComOperation.ResumeAlarm(address); //故障回复判断,并修改故障记录的故障回复时间
if p_Loop.QueryLightFlag then
begin
QueryLoopLight(p_Loop);
p_Loop.QueryLightFlag:=false;
end;

NEXTLOOP:
lockSpace.Leave;//离开临界区
inc(i);
SleepEx(2,TRUE);
end;
CoUninitialize();
end;

//主机下载指示灯盘,返回值:其他-通讯成功,返回标识码 2-命令发送失败 3-命令接收失败 4-无此回路地址
//界面程序调用的dll功能函数,也通过串口对设备进行操作,同样使用了临界区!!!!
function SetIndicatorLight(const Loopaddress:string;const data:array of byte):integer;
var
i,j:integer;
p_Loop:PLoopInfo;
begin
// lockSpace.Enter;//进入临界区

p_Loop:=ComOperation.QueryLoopList(Loopaddress);//查询回路节点信息
if p_Loop= nil then
begin
// lockSpace.Leave;//离开临界区
result:=4;
exit;
end;

lockSpace.Enter;//进入临界区

j:=length(data);
with RGlobalBuf do
begin
//数据赋值
writeLen:=j+8;
factWriteLen:=0;
readLen:=0;
factReadLen:=0;

sData[0]:=strtoint(Loopaddress);
sData[1]:=170;
sData[2]:=85;
sData[3]:=byte((j+1) shr 8);
sData[4]:=byte(j+1);
sData[5]:=112;
for i:=0 to j-1 do sData[6+i]:=data[i];
ComOperation.ComEfficacity(true,sData[j+6],sData[j+7]);
end;

//数据处理
result:=DealInceptData.DealSetIndicatorLight(ComOperation.OrderSendFunction(p_Loop.LoopComHandle));//发送串口命令
lockSpace.Leave;//离开临界区
end;

我的目地是同一时间只用一个dll中的功能函数对串口操作收发命令,可执行结果还是出现了串口数据乱码!请大家指点一下我的思路对不,有何改进意见?
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZuoBaoquan 2009-01-05
  • 打赏
  • 举报
回复
谢谢!
kv2002 2009-01-05
  • 打赏
  • 举报
回复
JF
honeycat205 2009-01-05
  • 打赏
  • 举报
回复
问题找到,不是临界区的问题,结贴,准备使用临界区的同仁放心大胆的用吧!结贴
honeycat205 2009-01-04
  • 打赏
  • 举报
回复
以上代码临界区好像没起作用!!痛苦中~~~谁来救救我!!!
基础篇:Delphi深度编程技术 第1章 理解Windows消息 1.1 消息概述 1.2 Windows消息工作机理 1.3 Delphi的VCL消息系统处理原理 1.4 发送消息 1.4.1 Perform() 1.4.2 SendMessage()和PostNessage() 1.4.3 消息的发送 1.5 消息处理 1.6 消息过滤 第2章 进程与线程 2.1 进程与线程 2.1.1 进程概述 2.1.2 进程的直接创建 2.1.3 列举系统打开的进程 2.1.4 线程概述 2.2 进程间通讯(IPC) 2.2.1 利用WM_COPYDATA消息实现进程间通讯 2.2.2 利用内存映射文件实现进程间通讯 2.3 TThread对象 2.3.1 线程的创建 2.3.2 线程的挂起和恢复 2.3.3 线程的终止 2.3.4 与VCL同步 2.4 线程同步 2.4.1 临界区(CriticalSection) 2.4.2 互斥(Mutex) 2.4.3 信号量(Semaphore) 2.5 进程的优先级别 2.5.1 进程的优先级类 2.5.2 相对优先级 2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件编辑器 3.3.1 组件的属性编辑器 3.3.2 组件的组件编辑器 3.3.3 带有属性编辑器和组件编辑器的自定义组件实例 3.4 创建对话框组件 第4章 文件操作 4.1 文件的基本操作 4.1.1 文本文件 4.1.2 有类型文件 4.1.3 INI文件 4.1.4 无类型文件 4.1.5 文件的复制 4.2 内存映射文件 4.2.1 内存映射文件的应甩 4.2.2 映射文件的使用 4.3 内存映射文件的应用 第5章 创建DLL应用程序 5.1 DLL概述 5.2 DLL的创建 5.2.1 DLL项目文件 5.2.2 Exports关键字的使用 5.2.3 DLL的变量 5.2.4 DLL实例:动态DLL的窗体 5.3 DLL的调用 5.3.1 静态调用 5.3.2 动态调用 5.4 DLL的入口函数和出口函数 5.4.1 进程/线程的初始化和例程的终止 5.4.2 DLL入口/出口示例 5.5 利用DLL创建插件程序 5.5.1 插件程序的设计思想 5.5.2 插件应用程序的创建 5.5.3 创建调用插件程序的主程序 第6章 两层数据库应用程序 6.1 关系型数据库 6.1.1 关系型数据库概述 6.1.2 结构化查询语言(SQL) 6.2 数据库的连接 6.2.1 基于BDE的数据库连接 6.2.2 基于0DBC的数据库连接 6.2.3 基于AD0的数据库连接技术 6.3 TSession元件 6.4 1 DahBase组件 6.4.1 TDataBase组件的使用 6.4.2 用配置文件动态设置BDE 6.5 数据访问组件 6.5.1 TTable组件 6.5.2 TQuery组件 6.5.3 TStoredProc过程 6.6 数据感知组件 6.7 事务 第7章 多层数据库应用程序 7.1 一个简单的多层应用系统 7.1.1 服务器端应用程序的建立 7.1.2 客户端应用程序的建立 7.2 多层应用系统处理数据的原理 7.2.1 多层应用系统的结构 7.2.2 存取数据的运作原理 7.2.3 更新数据的运作原理 7.3 容错处理和负载平衡 7.4 Active Form 第8章 Socket编程 8.1 WinSock基础 8.1.1 TCP、UDP和IP协议 8.1.2 套接字(Socket) 8.1.3 客户/服务器模式 8.1.4 面向连接的协议套接字的调用 8.1.5 面向无连接协议的套接字的调用 8.2 利用Winsock API实现Socket编程 8.2.1 常用WinSockAPI函数 8.2.2 利用WinSockAPI实现Socket编程 8.3 利用组件实现Socket编程 8.3.1 TClientSocket组件 8.3.2 TServerSocket组件 8.3.3 远程抓屏示例 8.4 通讯间件的制作 8.4.1 磁盘队列的实现 8.4.2 客户端和服务器端发送接收磁盘队列数据的套接字的建立 8.4.3 间件的简单应用 第9章 串口编程 9.1 串口通信的基础知识 9.1.1 同步通信和异步通信 9.1.2 波特率和数据传输率 9.2 串口通信API 9.2.1 DCB数据结构 9.2.2 与串口通信相关的函数 9.3 利用API函数创建串口通信示例 9.3.1 发送数据部分设计(向串口写数据) 9.3.2 数据部分设计(从串口读数据) 9.3.3 程序的具体设计和实现 9.4 利用SPC0MM组件实现串口通信编程 9.4.1 SPCOMM组件的安装 9.4.2 SPCOMM组件的属性、方法和事件 9.4.3 利用SPCOMM通讯组件实现串口通讯的实例 应用篇:物资管理信息系统项目应用开发 第10章 物资管理信息系统概述及其总体框架设计 10.1 系统总体结构设计 10.2 物资管理信息系统需求定义和业务流程图 10.2.1 仓储管理 10.2.2 计划管理 10.2.3 合同管理 10.2.4 物资管理系统的业务流程 第11章 物资管理信息系统后台数据库设计 11.1 关系型数据库概述 11.1.1 关系型数据库 11.1.2 物资管理信息系统数据库的建立 11.2 物资管理信息系统数据结构的设计 11.2.1 权限管理数据结构的设计 11.2.2 仓储管理数据结构的设计 11.2.3 计划管理数据结构的设计 11.2.4 合同管理数据结构的设计 11.2.5 基础设置数据结构的设计 第12章 应用服务器的实现 12.1 创建应用服务器的实例 12.2 状态区编程 12.3 动态数据库的连接 12.4 远程数据模块的建立 第13章 客户端应用程序的设计 13.1 客户端应用程序系统流程和系统功能 13.1.1 系统流程 13.1.2 系统功能 13.2 构建客户端应用程序框架 第14章 动态连接应用服务器的实现 第15章 通用权限管理模块的设计 15.1 系统登录的设计 15.2 权限设计表数据的维护 第16章 通用查询和报表组件的制作 16.1 通用查询组件的创建 16.2 通用报表模块的制作 第17章 通用基础数据维护模块的设计 17.1 界面设计 17.2 代码实现 17.2.1 以目录树的格式显示部门档案数据 17.2.2 利用目录树导航数据 17.2.3 利用目录树操作数据 17.2.4 按表格的标题排序 17.2.5 打印部门档案 第18章 物资管理信息系统业务操作模块的设计 18.1 数据表的设置 18.2 收料单据主表显示区 18.3 具体的材料明细表显示区 18.4 数据操作区 第19章 综台查询模块的设计 19.1 数据源的设置 19.2 窗体样式设计 19.3 代码实现 19.3.1 查询数据 19.3.2 打印数据 19.3.3 全部浏览
Delphi 深度编程及其项目应用开发》 作 者: 李存斌 汪兵 编著 丛书名: 万水软件项目应用与实例开发丛书 出版社: 国水利水电出版社 出 版: 2002-9----------简 介 本书是在总结作者多年Delphi开发经验的基础上编著而成。 全书分为基础篇和应用篇。基础篇结合示例论述了Delphi的深度编程技术,其包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;应用篇结合物资管理信息系统项目应用开发技术和经验,详细阐述了一般管理信息系统软件通用模块的开发,其包括10章,分别为:物资管理信息系统概述及其总体框架设计、物资管理信息系统后台数据库设计、应用服务器的实现、客户端应用程序的设计、动态连接应用服务器的实现、通用权限管理模块的设计、通用查询组件和报表模块的制作、通用基础数据维护模块的设计、物资管理信息系统业务操作模块的设计、综合查询模块的设计。读者在具有一定Delphi知识的基础上,通过本书的学习,可快速提高Delphi的编程能力和实际开发水平。 本书适用于具有初步编程能力的读者,也可作为高校高年级学生毕业设计的指导书。国水利水电出版社网站(www.waterpub.com.cn)上包括了书示例和较为完整的物资管理信息系统的源代码文件,为读者的学习提供方便,同时也为相关软件开发人员的实际应用开发提供捷径和参考。 ----------目 录 丛书前言 前言 基础篇:Delphi深度编程技术 第1章 理解Windows消息 1.1 消息概述 1.2 Windows消息工作机理 1.3 Delphi的VCL消息系统处理原理 1.4 发送消息 1.4.1 Perform() 1.4.2 SendMessage()和PostNessage() 1.4.3 消息的发送 1.5 消息处理 1.6 消息过滤 第2章 进程与线程 2.1 进程与线程 2.1.1 进程概述 2.1.2 进程的直接创建 2.1.3 列举系统打开的进程 2.1.4 线程概述 2.2 进程间通讯(IPC) 2.2.1 利用WM_COPYDATA消息实现进程间通讯 2.2.2 利用内存映射文件实现进程间通讯 2.3 TThread对象 2.3.1 线程的创建 2.3.2 线程的挂起和恢复 2.3.3 线程的终止 2.3.4 与VCL同步 2.4 线程同步 2.4.1 临界区(CriticalSection) 2.4.2 互斥(Mutex) 2.4.3 信号量(Semaphore) 2.5 进程的优先级别 2.5.1 进程的优先级类 2.5.2 相对优先级 2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件编辑器 3.3.1 组件的属性编辑器 3.3.2 组件的组件编辑器 3.3.3 带有属性编辑器和组件编辑器的自定义组件实例 3.4 创建对话框组件 第4章 文件操作 4.1 文件的基本操作 4.1.1 文本文件 4.1.2 有类型文件 4.1.3 INI文件 4.1.4 无类型文件 4.1.5 文件的复制 4.2 内存映射文件 4.2.1 内存映射文件的应甩 4.2.2 映射文件的使用 4.3 内存映射文件的应用 第5章 创建DLL应用程序 5.1 DLL概述 5.2 DLL的创建 5.2.1 DLL项目文件 5.2.2 Exports关键字的使用 5.2.3 DLL的变量 5.2.4 DLL实例:动态DLL的窗体 5.3 DLL的调用 5.3.1 静态调用 5.3.2 动态调用 5.4 DLL的入口函数和出口函数 5.4.1 进程/线程的初始化和例程的终止 5.4.2 DLL入口/出口示例 5.5 利用DLL创建插件程序 5.5.1 插件程序的设计思想 5.5.2 插件应用程序的创建 5.5.3 创建调用插件程序的主程序 第6章 两层数据库应用程序 6.1 关系型数据库 6.1.1 关系型数据库概述 6.1.2 结构化查询语言(SQL) 6.2 数据库的连接 6.2.1 基于BDE的数据库连接 6.2.2 基于0DBC的数据库连接 6.2.3 基于AD0的数据库连接技术 6.3 TSession元件 6.4 1 DahBase组件 6.4.1 TDataBase组件的使用 6.4.2 用配置文件动态设置BDE 6.5 数据访问组件 6.5.1 TTable组件 6.5.2 TQuery组件 6.5.3 TStoredProc过程 6.6 数据感知组件 6.7 事务 第7章 多层数据库应用程序 7.1 一个简单的多层应用系统 7.1.1 服务器端应用程序的建立 7.1.2 客户端应用程序的建立 7.2 多层应用系统处理数据的原理 7.2.1 多层应用系统的结构 7.2.2 存取数据的运作原理 7.2.3 更新数据的运作原理 7.3 容错处理和负载平衡 7.4 Active Form 第8章 Socket编程 8.1 WinSock基础 8.1.1 TCP、UDP和IP协议 8.1.2 套接字(Socket) 8.1.3 客户/服务器模式 8.1.4 面向连接的协议套接字的调用 8.1.5 面向无连接协议的套接字的调用 8.2 利用Winsock API实现Socket编程 8.2.1 常用WinSockAPI函数 8.2.2 利用WinSockAPI实现Socket编程 8.3 利用组件实现Socket编程 8.3.1 TClientSocket组件 8.3.2 TServerSocket组件 8.3.3 远程抓屏示例 8.4 通讯间件的制作 8.4.1 磁盘队列的实现 8.4.2 客户端和服务器端发送接收磁盘队列数据的套接字的建立 8.4.3 间件的简单应用 第9章 串口编程 9.1 串口通信的基础知识 9.1.1 同步通信和异步通信 9.1.2 波特率和数据传输率 9.2 串口通信API 9.2.1 DCB数据结构 9.2.2 与串口通信相关的函数 9.3 利用API函数创建串口通信示例 9.3.1 发送数据部分设计(向串口写数据) 9.3.2 数据部分设计(从串口读数据) 9.3.3 程序的具体设计和实现 9.4 利用SPC0MM组件实现串口通信编程 9.4.1 SPCOMM组件的安装 9.4.2 SPCOMM组件的属性、方法和事件 9.4.3 利用SPCOMM通讯组件实现串口通讯的实例 应用篇:物资管理信息系统项目应用开发 第10章 物资管理信息系统概述及其总体框架设计 10.1 系统总体结构设计 10.2 物资管理信息系统需求定义和业务流程图 10.2.1 仓储管理 10.2.2 计划管理 10.2.3 合同管理 10.2.4 物资管理系统的业务流程 第11章 物资管理信息系统后台数据库设计 11.1 关系型数据库概述 11.1.1 关系型数据库 11.1.2 物资管理信息系统数据库的建立 11.2 物资管理信息系统数据结构的设计 11.2.1 权限管理数据结构的设计 11.2.2 仓储管理数据结构的设计 11.2.3 计划管理数据结构的设计 11.2.4 合同管理数据结构的设计 11.2.5 基础设置数据结构的设计 第12章 应用服务器的实现 12.1 创建应用服务器的实例 12.2 状态区编程 12.3 动态数据库的连接 12.4 远程数据模块的建立 第13章 客户端应用程序的设计 13.1 客户端应用程序系统流程和系统功能 13.1.1 系统流程 13.1.2 系统功能 13.2 构建客户端应用程序框架 第14章 动态连接应用服务器的实现 第15章 通用权限管理模块的设计 15.1 系统登录的设计 15.2 权限设计表数据的维护 第16章 通用查询和报表组件的制作 16.1 通用查询组件的创建 16.2 通用报表模块的制作 第17章 通用基础数据维护模块的设计 17.1 界面设计 17.2 代码实现 17.2.1 以目录树的格式显示部门档案数据 17.2.2 利用目录树导航数据 17.2.3 利用目录树操作数据 17.2.4 按表格的标题排序 17.2.5 打印部门档案 第18章 物资管理信息系统业务操作模块的设计 18.1 数据表的设置 18.2 收料单据主表显示区 18.3 具体的材料明细表显示区 18.4 数据操作区 第19章 综台查询模块的设计 19.1 数据源的设置 19.2 窗体样式设计 19.3 代码实现 19.3.1 查询数据 19.3.2 打印数据 19.3.3 全部浏览----------
本书以详尽资料和大量的范例深入讨论了有关32位Windows编程的高级问题,包括进程和线程的管理、Win32的内存管理、消息处理、动态链接库、文件系统和设备输入输出、结构化异常处理、Unicode等,并重点讨论了Windows 95和Windows NT在实现上的不同之处,其包含了大量的编程技巧。 本书可供高等院校计算机专业的师生和广大的计算机编程人员使用。----------《Windows高级编程指南(第三版)》 原书: Advanced Windows (3rd Ed) 作者: Jeffrey Richter 译者: 王书洪 刘光明---------- 抽空将书的C程序用PASCAL写了一遍, 由于水平所限, 可能存在错误, 仅供参考! 感谢网友chinesexing提供PDF电子书! 感谢老朋友savetime兄提供附书代码! 刘麻子 于 05年7月7号----------附上代码列表: CopyData -- 利用WM_COPYDATA跨进程传递数据 VMStat -- 显示虚拟内存状态 VMAlloc -- 使用虚拟内存 (保留、提交、回收、释放) VMMap -- 遍历VMMap.exe进程的虚拟内存空间 DIPS & -- 进入Explorer.exe进程以操作桌面项目 DIPSLib SysInfo -- 显示系统相关信息 MMFShare -- 利用内存映射共享数据 FileRev -- 利用内存映射处理文件 Counter -- 纤程例子 (后台纤程以低优先级作运算) DiskInfo -- 显示本地逻辑驱动器信息 MultInst -- 使用EXE带有共享属性的PE节存储数据 TInjLib & -- 远程线程装载指定DLL到指定进程空间 ImgWalk LISLab -- 实验"局部输入状态" (Local Input State) TLSStat -- 在EXE模块使用静态TLS TLSDyn & -- 在DLL模块使用动态TLS SomeLib ModUse & -- 使用DLL带有共享属性的PE节存储数据 Module DocStats -- 利用事件对象使多个线程协同工作 (统计文档) Mutexes -- 利用互斥对象使(计算/显示)两个线程同步 DirWalk -- 遍历DirWalk.exe所在磁盘目录树 FileChng -- 监视目录变化 CritSecs -- 利用临界区对象使(计算/显示)两个线程同步 SprMrkt -- 利用互斥对象和信号量对象控制"超市"运转 SEHSum -- 利用SEH机制, 修复堆栈溢出 SEHTerm -- 演示SEH终止处理和异常抛出 SEHExcpt -- 利用SEH机制, 稀疏提交数组内存 SEHSoft -- 抛出自定义异常通知程序清零记录 Bucket -- SWMRG复合同步对象 (单写入/多读取) AlertIO -- 利用"回调通知"进行文件拷贝 (异步&分块) IOCmpPrt -- 利用"完成端口"进行文件拷贝 (异步&分块)
第9章 Windows相关技术 337 9.1 磁盘信息 338 0520 获取驱动器的卷标 338 0521 检测软驱是否有软盘 339 0522 判断是否插入存储器 339 0523 判断光驱是否有光盘 339 0524 判断驱动器类型 340 0525 获取磁盘序列号 341 0526 获取磁盘空间信息 342 9.2 磁盘操作 343 0527 格式化磁盘 343 0528 关闭磁盘共享 343 0529 设置磁盘卷标 343 0530 磁盘碎片整理 344 0531 从FAT32转换为NTFS 344 0532 隐藏磁盘分区 345 0533 显示被隐藏的磁盘分区 345 0534 如何更改分区号 346 0535 如何监视硬盘 346 9.3 系统控制与调用 347 0536 调用外部程序的方法 347 0537 调用创建快捷方式向导 348 0538 访问启动控制面板的各项 348 0539 控制光驱的弹开与关闭 349 0540 实现关闭、重启和注销计算机 349 0541 关闭和打开显示器 350 0542 打开和关闭屏幕保护 350 0543 关闭当前输入法 350 0544 程序发出提示音 351 0545 列举系统的可执行文件 351 9.4 应用程序操作 352 0546 如何确定应用程序没有响应 352 0547 检索任务管理器的任务列表 353 0548 判断某个程序是否运行 353 0549 设计具有插件功能的应用程序 355 0550 怎样在程序执行DOS命令 359 0551 修改其他进程窗口的标题 359 0552 如何设计换肤程序 360 0553 PE档案格式分析 364 0554 修改应用程序图标 365 0555 列举应用程序使用dll文件 368 0556 调用具有命令行参数的应用程序 369 0557 在程序调用一个子进程直到其结束 371 0558 提取并保存应用程序图标 371 9.5 系统工具 373 0559 为程序添加快捷方式 373 0560 用列表显示系统正在运行的程序 375 0561 如何获得毫秒级时间 376 0562 注册和卸载组件 376 0563 清空回收站 377 0564 如何在程序显示文件属性对话框 377 9.6 桌面相关 377 0565 隐藏和显示桌面文件 377 0566 隐藏和显示开始按钮 378 0567 隐藏和显示Windows任务栏 378 0568 判断屏幕保护程序是否在运行 379 0569 判断系统是否使用大字体 379 0570 获取任务栏属性 379 0571 获取任务栏窗口句柄 379 0572 隐藏任务栏时钟 380 0573 改变桌面背景颜色 380 0574 获取桌面列表视图句柄 380 9.7 系统信息 380 0575 获取CPU ID值 380 0576 获取CPU时钟频率 381 0577 获得Windows和System的路径 381 0578 获取特殊文件夹路径 382 0579 检测系统启动模式 382 0580 判断操作系统类型 383 0581 获取当前系统的运行时间 383 0582 如何获取Windows 2000系统启动时间 384 0583 获取处理器信息 385 0584 通过内存映射实现传送数据 385 0585 检测是否安装声卡 387 0586 获取当前用户名 387 0587 获取系统环境变量 387 0588 修改计算机名称 388 0589 获取当前屏幕颜色质量 388 0590 获得当前屏幕的分辨率 388 9.8 进程与线程 389 0591 如何使用TLS 389 0592 创建线程 389 0593 创建用户界面线程 390 0594 终止线程的方法 390 0595 使进程处于睡眠状态 391 0596 启动记事本并控制其关闭 391 0597 创建闪屏线程 392 0598 利用互斥对象实现线程同步 393 0599 利用临界区实现线程同步 395 0600 利用事件对象实现线程同步 396 0601 用信号量实现线程同步 398 0602 挂起系统 399 0603 调用记事本程序并暂停其运行 399 0604 等待打开的记事本程序关闭 400 0605 禁止程序重复运行 400 0606 在Visual C++与Delphi间实现对象共享 401 9.9 消息 402 0607 如何自定义消息 402 0608 如何向Windows注册消息 402 0609 PostMessage和SendMessage函数的区别 402 0610 利用WM_COPYDATA消息实现进程间数据传递 403 9.10 剪贴板 404 0611 列举剪贴板数据类型 404 0612 监视剪贴板复制过的内容 405 0613 通过剪贴板传递全局数据 406 9.11 鼠标键盘 407 0614 交换鼠标左右键 407 0615 设置鼠标双击的时间间隔 407 0616 获得鼠标键数 407 0617 获取鼠标下窗体句柄 407 0618 模拟鼠标单击按钮 409 0619 在程序添加快捷键 410 0620 在对话框使用加速键 411 0621 处理鼠标滚轮消息 411 0622 获取键盘按键 412 0623 获取键盘类型及功能号 412 0624 控制键盘指示灯 413 9.12 动态链接库与钩子 414 0625 从动态库获取位图资源 414 0626 屏蔽键盘POWER键 415 0627 屏蔽键盘WIN键 415 0628 禁止使用 Alt+F4 键来关闭窗体 416 0629 枚举模块的所有图标 417 0630 使用模块对话框资源 418 0631 替换应用程序对话框资源 419 0632 可导出的动态链接库函数 420 0633 动态链接库动态加载 420

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧