api
文章平均质量分 80
裸奔的蜗牛
知其然,更要知其所以然。
展开
-
查找进程
function FindProcess(AFileName: string): boolean; var hSnapshot: THandle;//用于获得进程列表 lppe: TProcessEntry32;//用于查找进程 Found: Boolean;//用于判断进程遍历是否完成 KillHandle: THandle;//用于杀死进程 begin Res转载 2007-07-20 08:54:00 · 794 阅读 · 0 评论 -
Windows API一日一练(37)MoveWindow函数
当你设计一个对话框的窗口时,就需要布局好所有按钮、文本显示框等等,由于每个按钮都是一个窗口,那么就需要移动这些窗口到合适的位置,这时就需要使用到MoveWindow函数。或者当你的界面需要动态地修改按钮位置,比如窗口放大了,按钮就需要跟着移动,否则按钮还在原来的位置,放大也不会移动按钮的位置,这时也需要使用MoveWindow函数重新设置按钮的位置。只要你想移动窗口,就可以考虑使用这个函数来实现。转载 2007-09-27 15:49:00 · 607 阅读 · 0 评论 -
Windows API一日一练(36)SetWindowText函数
在开发软件里,有时候需要改变窗口上标题的文字。比如按钮上的文字,为了适应多国语言的显示,就需要改变它显示的内容。这时就需要使用SetWindowText函数来改它的内容。下面的例子就实现改变按钮的标题。 函数SetWindowText声明如下:WINUSERAPIBOOLWINAPISetWindowTextA( __in HWND hWnd, __in转载 2007-09-27 15:51:00 · 553 阅读 · 0 评论 -
Windows API一日一练(33)ExtCreatePen函数
使用前面介绍的CreatePen函数来画大于1的直线时,会发现直线两端全是圆角的,有时候需要画得有角,那么这样的函数就不满足需求了,这时就需要使用另一个API函数ExtCreatePen来创建合适的画笔。ExtCreatePen函数可以创建几何画笔,还可以创建装饰用的画笔,装饰的画笔是用来画一些图案使用的,这样就需要快速的算法来实现,显示比几何的画笔在速度上快很多。比如你在画GPS地图时,当需要装转载 2007-09-27 16:01:00 · 590 阅读 · 0 评论 -
Windows API一日一练(25)CreateSolidBrush函数
当你看到Windows显示的按钮时,背景颜色是灰色的。当你看到缺省的窗口背景时,它是白色的。当你的老板需要你创建一个黑色背景的按钮时,你会怎么样做呢?其实在Windows里先用API函数CreateSolidBrush创建画刷,然后调用FillRect函数来填充背景。这样来,不管你需要什么样的背景,都随心所欲了吧。现在先来搞懂CreateSolidBrush函数,下次再来练习FillRect。转载 2007-09-27 16:18:00 · 636 阅读 · 0 评论 -
Windows API一日一练(44)wsprintf函数
接着上面,再继续实现更加强大的线程类。从上面的C++类里可以看到,要在静态函数里使用类的成员就需要获取this指针,也就是通过CreateThread函数里把类的this指针传送进来的,这样在函数ThreadProc里的参数lpParameter就是this指针了。因此把参数lpParameter转换为CThread类指针,这样就可以使用类的成员。在这个例子里使用wsprintf函数来格式化线程I转载 2007-09-27 15:34:00 · 466 阅读 · 0 评论 -
Windows API一日一练(39)AnimateWindow函数
当你开发一款年轻人使用的软件时,肯定想用一点动感的特性来吸引他们。比如QQ软件就有这个特性,当你把它放到桌面边上时,就会自动隐藏起来,当你的鼠标放到那里时,就会自动慢慢移动出来,副有动感的特性,肯定让年轻人喜欢上它的。还有当你开发软件时,想先动态地显示公司的商标,或者公司的宣传材料时,就会使用到闪屏的效果。其实这两个特性都可以使用API函数AnimateWindow来实现的,下面就来介绍怎么使用它转载 2007-09-27 15:45:00 · 923 阅读 · 1 评论 -
Windows API一日一练(35)OutputDebugString函数
在软件的开发过程里,大部份时间是在做什么呢?其实是在调试代码,毕竟人类的思维方式是从简单到复杂的过程,自然的认知过程也是从简单到复杂。因此,开发软件时,第一个版本总是先写简单的,然后慢慢地添加出错处理上去,也把一些没有想到的情况添加进去,那些没有想到的错误,就叫做BUG。要根除一个软件里的BUG,是一件不容易的事情,不但要对这个软件流程比较熟悉,还要对这个软件的目标比较了解,还需要对这个开发平台了转载 2007-09-27 15:56:00 · 507 阅读 · 0 评论 -
Windows API一日一练(34)GetSysColor函数
当你需要自己显示一个与众不同的按钮时,就需要使用下面的方法来创建。当然这里也是综合地使用前面学习过的知识进行一次综合的练习。演示怎么样使用众多的API函数,这里还可以学会使用GetSysColor函数来获取系统的颜色。WINUSERAPIDWORDWINAPIGetSysColor( __in int nIndex);nIndex是系统定义的颜色索引值。 调用转载 2007-09-27 15:59:00 · 533 阅读 · 0 评论 -
Delphi多线程编程中的技巧
(1)创建线程 MsgThread := TMsgThread.Create(False) ; //创建并执行线程 MsgThread := TMsgThread.Create(True) ; //创建线程后挂起 constructor Create(CreateSuspended: Boolean); 中的参数CreateSuspended表示创建后是否挂起线程。 (2)设置线程里没有设置循环执转载 2007-10-29 16:51:00 · 958 阅读 · 0 评论 -
串口通信中用到的api函数
1.CreateFile 打开串口函数2.SetUpComm 缓冲去配置函数3.GetCommStat 获取串口当前配置函数4.SetCommStat 配置串口函数5.GetCommProperties 获取串口属性函数6.BuildCommDCB DCB填充函数7.BuildCommDCBAndTimeOuts原创 2007-10-30 09:50:00 · 1210 阅读 · 0 评论 -
api串口通信实例
我这里有一个示例程序,功能不是很强,但是学习串口API编程还是可以的: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialog转载 2007-10-15 17:56:00 · 3523 阅读 · 0 评论 -
DELPHI串口编程剖析
DELPHI串口编程剖析 1第一章 背景知识 31. 概述 32. 什么是接口? 33. 接口分类. 34. 为什么需要I/O接口? 35. I/O接口的功能 46. I/O接口的通信方式 57. I/O接口的分类 58. 串口的分类 89. 串口通信分类 1110. 奇偶校验 12第二章 串口通信编程简介 131. 串口的通信编程流程 132. Unix平台下对串口进行开发的方法 133. Wi转载 2007-10-12 11:11:00 · 5145 阅读 · 0 评论 -
Windows API一日一练(40)CreateRectRgn和CombineRgn函数
创新是永恒的追求。当大家习惯Windows的界面时,又想自己开发的软件耳目一新的感觉,那么就得要改变窗口的形状,比如心形的窗口,总之是不规则的窗口。这时就需要使用到叫做区域的技术。区域就是把不同的形状的图形进行组合,然后可以填充它,或者在它那里显示。比如MSN左边的TAB按钮,应就是区域的运用就可以实现它了。 函数CreateRectRgn声明如下:WINGDIAPI HRGN转载 2007-09-27 15:43:00 · 456 阅读 · 0 评论 -
Windows API一日一练(41)FindWindowEx函数
当你想控制一个现有的窗口程序时,就需要获取那个程序的窗口句柄。比如有一些黑客软件需要查找到窗口,然后修改窗口的标题。在外挂流行的今天,惊奇地发现它们也可以修改输入窗口的文字。这其中,就需要使用到FindWindowEx函数来定位窗口。下面就来使用这个函数来实现控制Windows里带的计算器程序。打开计算器程序,最小化在状态下面,运行本例子,点击创建按钮后,就可以点按钮,就会把计算器显示在最前面。转载 2007-09-27 15:40:00 · 429 阅读 · 0 评论 -
Windows API一日一练(42)CreateThread函数
随着时代的发展,计算机技术发展得很快。CPU已经从单核心到多核心的转变,也就是一个CPU里具备了同时做多件事情的能力,而不是过去的分时复用了,而是实实在在地做多件事情。因此,开发软件也进入了一个新时代,就是多线程软件的开发时代。如何合理地分配多个线程同时运行,是提高软件效率的关键因素了。比如像网络游戏的客户端里,就可以使用一个线程不断地更新游戏的界面,分配另外一个线程不断地发送和接收网络的数据,这转载 2007-09-27 15:38:00 · 471 阅读 · 0 评论 -
socket
unit MScktComp; interface uses SysUtils, Windows, Messages, Classes, WinSock, SyncObjs;const CM_SOCKETMESSAGE = WM_USER + $0001; CM_DEFERFREE = WM_US转载 2007-07-19 18:01:00 · 1252 阅读 · 0 评论 -
线程间通信
线程分为用户界面线程(UI线程)和工作者线程,UI线程有自己的窗口,而工作者线程通常在后台工作,不能直接接收用户的命令。工作者线程可以通过PostThreadMessage()函数向一个已知ID的线程发消息传递消息,另一个线程通过GetMessage()接收消息。 BOOL PostThreadMessage ( DWORD idThread,转载 2007-07-20 10:15:00 · 801 阅读 · 0 评论 -
API来实现对INI文件的读写
些天见有个网友问怎么用API来实现对INI文件的读写,这个问题我也早就想实现一下,可一直没有做,现在终于又多了一个理由来研究它了用API写INI文件的函数有BOOL WritePrivateProfileString( LPCTSTR lpAppName, // 节名 LPCTSTR lpKeyName, // 键名 LPCTSTR lpString, // 添加的字符串转载 2007-08-20 17:22:00 · 621 阅读 · 0 评论 -
Windows API一日一练(45)CreateEvent和SetEvent函数
当你创建一个线程时,其实那个线程是一个循环,不像上面那样只运行一次的。这样就带来了一个问题,在那个死循环里要找到合适的条件退出那个死循环,那么是怎么样实现它的呢?在Windows里往往是采用事件的方式,当然还可以采用其它的方式。在这里先介绍采用事件的方式来通知从线程运行函数退出来,它的实现原理是这样,在那个死循环里不断地使用WaitForSingleObject函数来检查事件是否满足,如果满足就退转载 2007-09-27 15:31:00 · 515 阅读 · 0 评论 -
Windows API一日一练(38)SetWindowPos函数
有一天,用户突然对我说,你这个窗口能不能放到最顶端,这样操作和打开文件就很不方便了。这个功能就需要改变窗口的属性了。比如大家使用QQ时,就有一个功能,设置QQ的窗口在最顶端,不管你选择了什么窗口,QQ的界面永远都在最前面。又像FlashGet的状态查看窗口,一直保持在窗口的最前端,让你看到当前下载的流量程况。现在股票那么火爆,很多人一边工作,一边查看股票,如果错失了机会,又少了很多钱的啊!面对这样转载 2007-09-27 15:47:00 · 543 阅读 · 0 评论 -
Windows API一日一练(32)CreatePen函数
画画是讲究色彩与线条,不同的地方是采用不同的画笔。上面显示直线,都是采用设备缺省的画笔来画直线。现在就来介绍怎么样创建自己的画笔,比如设置画笔的颜色,画笔的大小。像Windows按钮显示为3D的形状,其实就是用两种颜色画笔分别画相应的线,就生成按钮。而创建画笔就需要使用到CreatePen函数。 函数CreatePen声明如下:WINGDIAPI HPEN WINAPI Crea转载 2007-09-27 16:02:00 · 593 阅读 · 0 评论 -
Windows API一日一练(31)MoveToEx和LineTo函数
现在的世界流行图形界面,而不是文字,因此在软件开发里,肯定需要画图的,比如简单地画线,画一些比较特别的图形。比如让你画一个走动的时钟,就需要不断地画秒针、分针等等。MoveToEx是用来移动当前画笔的位置,LineTo是用来画直线的函数,其实在计算机图形里的直线显示是使用光栅图形学里的原理。 函数MoveToEx和LineTo声明如下:WINGDIAPI BOOL WINAPI Mov转载 2007-09-27 16:04:00 · 689 阅读 · 0 评论 -
Windows API一日一练(30)GetTextMetrics函数
在做报表里,经常要把输出的内容进行错落有致的排列,让用户看起来更加舒服。比如使用标题的字体输出后,再使用其小号的字体进行输出。这样就需要知道每种字体的高度,才让两行文字输出不重叠在一起,就需要计算每种字体的高度。这时就需使用GetTextMetrics函数来获取字体的高度。 函数GetTextMetrics声明如下: #ifndef NOTEXTMETRIC WINGDIA转载 2007-09-27 16:06:00 · 516 阅读 · 0 评论 -
Windows API一日一练(28)CreateFont函数
文字的出现历史可以追溯到甲骨文的使用,直到今天使用的宋体文字。在软件开发里,经常遇到是跨国语言的使用,由于世界在变平,全球在变小,交通运输非常发达,由我所在的深圳,向东坐飞机12个小时就可以到达伦敦,向西坐飞机12小时就可以到达美国,可算得上朝发夕至。比如像炒外汇的人,一天可以不用睡觉都在工作着,比如早上炒东京的汇市,下午就可以炒伦敦的,晚上就可以炒纽约的了。软件的开发,也在全球化,比如昨晚在美国转载 2007-09-27 16:12:00 · 514 阅读 · 0 评论 -
Windows API一日一练(43)WaitForSingleObject函数
上面已经介绍怎么样创建一个简单的线程,在那里就需要使用函数WaitForSingleObject,它是用来做什么的呢?其实它是用来实现等待线程结束的,它的机理是这样的,通知Windows操作系统,现在我进入睡眼状态,当我关注的对象条件是否满足,如果满足了就吵醒我。在那里关注的对象是线程是否退出,这是一个条件测试。如果不等待线程关闭,就去删除线程的资源,就会出错的。使用前面的线程是简单一些,但它不合转载 2007-09-27 15:36:00 · 483 阅读 · 0 评论 -
Windows API一日一练(29)SelectObject和DeleteObject函数
Windows显示设备的属性,共有下面几种:位图、画刷、字体、画笔、区域。如果要设置它们到当前设备里,就需要使用SelectObject函数,比如上面介绍的字体设置,就会用到这个函数。当你创建一个位图时,这时Windows就会在内存里分配一块内存空间,用来保存位图的数据。当你创建字体时,也会分配一块内存空间保存字体。如果程序只是分配,而不去删除,就会造成内存使用越来越多,最后导到Windows这幢转载 2007-09-27 16:08:00 · 448 阅读 · 0 评论 -
Windows API一日一练(27)SetBkMode函数
上面已经介绍输出红色的字符串时,发现背景的黑色也变成白色了,这样的输出是破坏背景的。那需要使用什么方法来保持背景不变,而又能输出红色的字符串呢?比如按钮的文字颜色是黑色的,而背景是灰色的。这就需要使用SetBkMode函数来设置DrawText函数的输出方式,显示设备共有两种输出方式:OPAQUE和TRANSPARENT。OPAQUE的方式是用当前背景的画刷的颜色输出显示文字的背景,而TRANSP转载 2007-09-27 16:15:00 · 672 阅读 · 0 评论 -
实战DeviceIoControl 之一:通过API访问设备驱动程序 - bhw98的专栏 - CSDNBlog
导读: Q在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢? A在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问—获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。 De原创 2008-09-27 09:16:00 · 542 阅读 · 0 评论