Welcome 微信登录

首页 / 软件开发 / Delphi

多线程编程(16) - 多线程同步之WaitableTimer(等待定时器对象)[续二]

多线程编程(16) - 多线程同步之WaitableTimer(等待定时器对象)[续二]

多线程编程(16) - 多线程同步之WaitableTimer(等待定时器对象)[续二]2009-12-08 博客园 万一想过没有? WaitableTimer 是在 "定时等待", 前面例子中的 WaitForSingleObject 等待函数 "也在等待", 这就 "双重等待" 了, 这不好, 太浪费资源.其实作为同步工具, 前面的几种方法(事件、信号、临界区)基本够用了; WaitableT...
多线程编程(17) - 多线程同步之WaitableTimer(等待定时器对象)[续三]

多线程编程(17) - 多线程同步之WaitableTimer(等待定时器对象)[续三]

多线程编程(17) - 多线程同步之WaitableTimer(等待定时器对象)[续三]2009-12-08 博客园 万一根据 WaitableTimer 的主要功用, 现在再把它放在 "线程同步" 的话题中讨论有点不合适了, 就要结束它.//重新看看那个 APC 回调函数的格式:procedure TimerAPCProc( lpArgToCompletionRoutine: Pointer; dwTimerLowValue, dwT...
WinAPI:钩子回调函数之CBTProc

WinAPI:钩子回调函数之CBTProc

WinAPI:钩子回调函数之CBTProc2009-12-10 博客园 万一该函数在窗口被激活、创建、销毁、最大化、最小化、移动、改变大小等动作前;完成一条系统命令前;从系统消息队列中移去一个鼠标或键盘消息前;与系统消息同步前;被调用!CBTProc( nCode: Integer; {要处理的消息类型, 见下表} wParam: WPARAM; {消息对应的参数, 见下表} lParam: LPARAM {消息对应的参数, 见下表}): LRESULT;...
多线程编程(18) - 再从一个小例子出发

多线程编程(18) - 再从一个小例子出发

多线程编程(18) - 再从一个小例子出发2009-12-10 博客园 万一前面的例子都是让若干线程做同样的事情, 下面这个例子中的三个线程将分别在三个画板上随机画不同颜色的椭圆.接下来的很多事情我想要基于这个例子来做.本例效果图:代码文件:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, St...
多线程编程(19) - 不使用同步工具,手动协调线程依次执行

多线程编程(19) - 不使用同步工具,手动协调线程依次执行

多线程编程(19) - 不使用同步工具,手动协调线程依次执行2009-12-10 博客园 万一在前面例子的基础上, 探讨新问题.假如我们想让几个线程(例子中是 3 个)依次执行, 我们可以使用临界区、信号、互斥等手段;但下面第一个例子什么同步工具都没用, 也达到了目的; 方法是: 让前一个线程在结束前顺便启动下一个线程.第二个例子使用了互斥对象配合 WaitForSingleObject 函数, 也达到相似的目的.效果图(两个例子的效果图差不多, 但第二个...
使用钩子函数[1]

使用钩子函数[1]

使用钩子函数[1]2009-12-10 博客园 万一目前对钩子的理解:譬如我们用鼠标在某个窗口上双击了一次, 或者给某个窗口输入了一个字母 A;首先发现这些事件的不是窗口, 而是系统!然后系统告诉窗口: 喂! 你让人点了, 并且是连续点了两鼠标, 你准备怎么办?或者是系统告诉窗口: 喂! 有人向你家里扔砖头了, 不信你看看, 那块砖头是 A.这时窗口的对有些事件会忽略、对有些事件会做出反应:譬如, 可能对鼠标单击事件忽略, 窗口想: 你单击我不要紧, 累死...
使用钩子函数[3] - 建立一个全局的鼠标钩子

使用钩子函数[3] - 建立一个全局的鼠标钩子

使用钩子函数[3] - 建立一个全局的鼠标钩子2009-12-10 博客园 万一分两步:一、建立 DLL, 并在 DLL 实现钩子的设置、释放和钩子函数;二、再建一个工程调用测试.第一步: 做 DLL先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了):library Project1;usesSysUtils,Classes;{$R *.res}beginend.//把工程保存为 MyHook.dpr, 并实现如下:library MyHook;...
使用钩子函数[4] - 钩子链和CallNextHookEx的返回值

使用钩子函数[4] - 钩子链和CallNextHookEx的返回值

使用钩子函数[4] - 钩子链和CallNextHookEx的返回值2009-12-10 博客园 万一SetWindowsHookEx 函数的第一个参数表示钩子类型, 共有 14 种选择, 前面我们已经用过两种:WH_KEYBOARD、WH_MOUSE.系统会为每一种类型的钩子建立一个表(那就是 14 个表), 譬如某个应用程序启动了键盘钩子, 我们自己的程序也启动了键盘钩子, 同样是键盘钩子就会进入同一个表. 这个表(可能不止一个, 可能还会有鼠标钩子等...
使用钩子函数[5] - 数据传递

使用钩子函数[5] - 数据传递

使用钩子函数[5] - 数据传递2009-12-10 博客园 万一前言: 博友 "鹏" 来信探讨关于钩子的问题, 核心困难是: dll 中的数据如何传递出来. 在接下来的两个例子中探讨这个问题.本例建立一个全局的鼠标钩子, 然后把鼠标的相关信息通过一个自定义的 GetInfo 函数传递给调用钩子的程序.为了方便测试, 提供一个源码下载吧: http://files.cnblogs.com/del/MouseHook_1.rar本例效果图...
使用钩子函数[6] - 数据传递

使用钩子函数[6] - 数据传递

使用钩子函数[6] - 数据传递2009-12-10 博客园 万一上一个例子是从 DLL 中接受数据, 那怎么给 DLL 传递数据呢? 还有, 在接受数据时, 让 Timer 一直在那扫描也不是个好办法呀. 本例解决了这些问题(但不知解决了博友 "鹏" 的问题没有?).为了方便测试, 提供一个源码下载吧: http://files.cnblogs.com/del/MouseHook_2.rar本例效果图(和上一例是一样的):DLL 文件...
为钩子的下一步学习补课:如何提取32位中的某一位

为钩子的下一步学习补课:如何提取32位中的某一位

为钩子的下一步学习补课:如何提取32位中的某一位2009-12-10 博客园 万一Integer 类型是 32 位的, 有 4 个字节, 现在我们需要能够提取出其 32 位中的某一位.但 Delphi 最小的整数类型也是一个字节(8位)的: Byte(无符号)、Shortint(有符号).要不先从提取一个字节开始:vari: Integer;b: Byte;begini := MaxInt; {Integer 的最大值}ShowMessage(IntToS...
怎样发布基于MS SQL Server的程序

怎样发布基于MS SQL Server的程序

怎样发布基于MS SQL Server的程序2009-12-10很多朋友在编写完成基于SQLServer的程序后对发布程序感到头疼,因为仅仅发布应用程序和BDE是不够的,必须要安装SQLServer Client软件,难道还要提供一张SQLServer的光盘?下面jojo为大家介绍一个解决之道:1.准备一份Install Shield Express,最好是2.01以上的版本,在Delphi的安装盘上有一个专用版本也可以用,按照制作一般程序安装盘的方法建立...
用Delphi的QReport部件生成报表

用Delphi的QReport部件生成报表

用Delphi的QReport部件生成报表2010-01-27用户在使用数据库应用程序时经常要生成报表,利用Delphi 4的QReport部件,可以帮助我们快速方便地生成报表。这里以一个设备管理报表为例说明如何用QReport部件与Query部件设计从多个数据表中生成报表。一、所用数据库这里用到三个Foxpro数据表,DLBMK(设备大类编码)、SBXHK(设备型号及配置)、BMSBK(设备所在部门),存放在D:SB目录下。其库结构如下:(一) DLBM...
<< 21 22 23 24 25 26 27 28 29 30 >>