![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows SDK/API
文章平均质量分 57
liangpei2008
22
展开
-
Windows消息【一】 消息队列
消息队列看了MSDN后,以下是我个人的理解!消息能够被分为「队列化消息」和「非队列化消息」。队列化消息是指当程序发生某事件时,由Windows主动捕获并把消息放入系统消息队列中,而程序在运行时会初始化一个消息泵,该消息泵用于抽取系统消息队列中的与之相关的消息,并把之分发到相应窗口函数上!非队列化消息不走消息泵,而是直接分发到相应的窗口函数上! 队列化消息基本上是使用者原创 2009-04-25 07:40:00 · 725 阅读 · 0 评论 -
捕获线程异常
相关背景:我们在做桌面级小程序时,一般的结构是:设计业务对象做工作线程写界面 工作线程主要把业务对象给封装起来,处理时避免前台界面停止响应的情况。但有时业务对象会有异常,需要反应到前台界面上,这时,我们需要捕获一下线程的异常type TTrdExceptionDemo=class(TThread) private FExcepti原创 2010-01-27 14:42:00 · 1048 阅读 · 0 评论 -
线程【六】线程安全退出
问题1:一般来说,要让你的线程能够尽快终止,必须在Execute方法中在较短的时间内不断地检查Terminated标志,以便能及时地退出。这是设计线程代码的一个很重要的原则!在这种情况下使用上述思路一般不会出什么问题!type TThread1 = class(TThread) private procedure Test(); protected p原创 2009-04-25 10:16:00 · 822 阅读 · 2 评论 -
不使用代理类直接调用Webservice
问题背景:以前做过一个模块,该模块功能为信息收集,即获取N个站点的订单。因为每个站点都使用不同的Webservice,所以使得整个模块很乱,加了N多代理类!问题:有没有可能不用代理类直接调用Webservice呢?解决方法:有的,这里有一个办法。打开http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.a原创 2010-04-23 23:56:00 · 2851 阅读 · 0 评论 -
Delphi7调用WebService的注意事项
最近经常看到有朋友问,为何我在调用.NET或JAVA的Webservice时,遇到传递参数的函数总出问题?如果传string类型的参数则会出ESOAPDomConvertError 异常,如果传int等类型则会为0! 解决办法:在用wsdl importer工具生成的代理类中初始化区域插入一条语句:InvRegistry.RegisterInvokeOptions(TypeIn原创 2009-05-06 21:22:00 · 3471 阅读 · 0 评论 -
线程的常见问题
主窗体 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,LongWaitTrd;type TForm1 = class(TForm) btnSetTask原创 2009-04-25 20:51:00 · 503 阅读 · 0 评论 -
线程【一】基础知识
线程调度宏观并行,微观串行(默认为单核)! 系统中同时存在很多线程,有系统线程,也有自己进程和其它进程的线程,都是由系统统一调度,当某个线程获得CPU时间片后才会真正执行。程序在创建线程后,如果没有执行Sleep、Wait等函数主动放弃时间片(多长时间内不参与时间片竞争),则该线程会继续执行,所以对于单核系统,可以说线程创建后不是立即开始执行的,对于多核系统,则有可能同一进程的多个线程在不原创 2009-04-25 21:53:00 · 606 阅读 · 0 评论 -
如何获取外网IP
此内容摘自zuobaoquan的技术共享贴~http://topic.csdn.net/u/20090426/17/895a522b-3ca9-4b7b-baac-2f1b6f5c561a.html //原理为向whatismyip发送一次GET请求,whatismyip网站返回IP内容!//也可以自己做一个aspx页面,其内用Request.UserHostAddress来获取远端连原创 2009-04-27 13:36:00 · 3723 阅读 · 0 评论 -
线程【五】VCL下的线程类
在这里把网友常常搞不清楚的属性作用列出来:一、FreeOnTerminate用于表明线程执行完毕后是自动释放还是保留,默认为False二、Terminate该过程只是简单地设置线程类的Terminated标志,并不是真正的释放,这一点要格外注意!三、Synchronize该函数是同步方法,如果线程中有操作UI的语句时,需要把UI操作写成过程(无参数过程),放到该方法中!//原创 2009-04-25 20:05:00 · 488 阅读 · 0 评论 -
线程【四】线程内定时器
在消息队列部分,我们已经知道消息泵是以线程为单位进行分离的!换句话说,有N个程序,都产生了相关事件,在系统消息队列中会根据线程来区分,当线程的消息泵从系统消息队列抽取消息时,会挑属于自己线程的消息。当我们创建一个工程时,IDE环境已经为我们生成了主线程的代码以及消息泵,而当我们自己创建一个Worker线程时,默认是没有消息泵的,如果想要在线程内接收消息,需要添加消息泵!消息泵的结原创 2009-04-25 20:02:00 · 1950 阅读 · 0 评论 -
线程内定时器2
需求:由于某种原因,需要根据管理员设定的时间定时关闭服务器上的COM+程序以及Windows Service程序。任务:任务就是做一个Windows Service,这个Service要有一个配置窗体(该窗体可通过HotKey呼出窗体或在服务启动时把配置窗体放到系统托盘中),用于管理员配置所要关闭的服务条目以及关闭时间。关键点:1.要设置允许服务与桌面进行交互2.定时(不想原创 2009-06-19 14:31:00 · 1263 阅读 · 0 评论 -
Delphi跨进程访问DBGRID
此文是根据伴水老大的实例做的小修改!以下是个人见解,如有错误请指正:) 要想跨进程访问DBGRID,貌似只能用HOOK,写一个DLL想办法注入到目标进程。注入成功后,使DLL与目标进程在同一进程空间中(其内有一些细节问题,请参见代码),这时可以访问目标进程的VCL组件。并把VCL组件的数据通过进程通信的方式发给Sniffer进程。 如何进行注入? 可以安原创 2010-01-11 22:59:00 · 4951 阅读 · 3 评论 -
Windows 消息【二】窗口函数
前一篇文章讲到非队列消息会直接把消息Dispatch到窗口函数上,窗口函数长什么样?//就是一个大case分支//要想拦截消息,override窗口函数是一个办法!procedure TCustomForm.WndProc(var Message: TMessage);var FocusHandle: HWND; SaveIndex: Integer; Menu原创 2009-04-25 08:56:00 · 701 阅读 · 0 评论 -
注册系统热键
这里介绍一下使用API函数创建系统热键!主要实现单个热键与复合热键的注册! unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm)原创 2009-04-25 19:38:00 · 672 阅读 · 0 评论 -
获取系统输入闲置时间
delphi编写指定时间不动鼠标将系统锁定/以及在不动的情况下隐藏鼠标 3秒种不动鼠标键盘看看效果。GetLastInputInfo:获取闲置时间;ShowCursor:设置鼠标状态; unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,原创 2009-04-25 19:30:00 · 1175 阅读 · 0 评论 -
[Windows Hook] 屏蔽键盘按键
以前一直以为全局钩子必须在DLL中创建,查了一下MSDN才发现,有4种钩子是在当前线程的上下文中创建即有全局钩子效果的!其中包括鼠标低级钩子与键盘低级钩子!为调这个,死了3次机......//该例程为在系统级屏蔽一些系统键、如WIN、TAB、CAP、POWER、SLEEP、HOME等!//屏蔽组合键下面例程不适用!(比如CTRL+ESC需要在钩子函数中用(p.vkCode = VK_ESC原创 2009-04-26 08:55:00 · 2620 阅读 · 0 评论 -
关于WaitForSingleObject
//这种情况一般用于2进程间有依附关系,类似于Form的ShowModal//但它的作用不仅仅在进程等待,我们常常用它来做线程同步 //该函数的功能为一直在等待Notepad执行,直到Notepad关闭为止function WinExecAndWait32(APath: PChar; ACmdShow: Integer; ATimeout: Longword): Integer;原创 2009-04-29 16:54:00 · 1870 阅读 · 2 评论 -
Win32进程布局图
Win32进程布局图(转Seamour),个人认为画得不错,故转贴加收藏!原创 2009-05-12 12:52:00 · 729 阅读 · 0 评论 -
写一个服务程序的模板
//这个服务程序模板的作用是每隔一定的时间做一定事件处理。有时会在服务中创建一个窗体,来实现与窗体的交互(一般都是添写配置信息),这里需要注意一下:与窗体交互一定要把服务的InterActive属性设置为True; //unit UntService;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, C原创 2009-10-22 07:40:00 · 1553 阅读 · 4 评论 -
如何判断软件的闲置时间
//GetLastInputInfo是检测系统输入的,应用到某个程序中不合适!此问题有二种解法来监控输入消息:1.用线程级HOOK,钩上MOUSEHOOK与KEYBOARDHOOK2.在Application.OnMessage中做处理显然,用第2种方法比较方便!众所周知,键盘与鼠标消息都是队列消息,需要经过消息队列后经过一些处理,再发往各个WNDPROC。基于这个原理,我们可原创 2009-10-24 18:54:00 · 1127 阅读 · 0 评论 -
监控文件夹功能实现例程
这个监控文件夹变化的程序,项目中已经使用3年多了,比较稳定,请放心使用!Demo下载原创 2010-03-19 09:37:00 · 830 阅读 · 0 评论 -
线程【二】线程同步
我一般都用CreateEvent来实现线程同步!内容明天写!原创 2009-04-25 20:47:00 · 437 阅读 · 1 评论