delphi常用api函数

合集下载

Delphi 常用API 函数

Delphi 常用API 函数

1.Delphi 常用API 函数2.3.AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小4.AnyPopup 判断屏幕上是否存在任何弹出式窗口5.ArrangeIconicWindows 排列一个父窗口的最小化子窗口6.AttachThreadInput 连接线程输入函数7.BeginDeferWindowPos 启动构建一系列新窗口位置的过程8.BringWindowToTop 将指定的窗口带至窗口列表顶部9.CascadeWindows 以层叠方式排列窗口10.ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄11.12.ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标13.CloseWindow 最小化指定的窗口14.CopyRect 矩形内容复制15.DeferWindowPos 该函数为特定的窗口指定一个新窗口位置16.DestroyWindow 清除指定的窗口以及它的所有子窗口17.DrawAnimatedRects 描绘一系列动态矩形18.EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入19.EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态20.EnumChildWindows 为指定的父窗口枚举子窗口21.22.EnumThreadWindows 枚举与指定任务相关的窗口23.EnumWindows 枚举窗口列表中的所有父窗口24.EqualRect 判断两个矩形结构是否相同25.FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口26.FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口27.FlashWindow 闪烁显示指定窗口28.GetActiveWindow 获得活动窗口的句柄29.GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)30.GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息31.32.GetClassLong 取得窗口类的一个Long变量条目33.GetClassName 为指定的窗口取得类名34.GetClassWord 为窗口类取得一个整数变量35.GetClientRect 返回指定窗口客户区矩形的大小36.GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄37.GetFocus 获得拥有输入焦点的窗口的句柄38.GetForegroundWindow 获得前台窗口的句柄39.GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄40.GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息41.42.GetParent 判断指定窗口的父窗口43.GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄44.GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分45.GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系46.GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID47.GetWindowLong 从指定窗口的结构中取得信息48.GetWindowPlacement 获得指定窗口的状态及位置信息49.GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内50.51.GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容52.GetWindowTextLength 调查窗口标题文字或控件内容的长短53.GetWindowWord 获得指定窗口结构的信息54.InflateRect 增大或减小一个矩形的大小55.IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集56.InvalidateRect 屏蔽一个窗口客户区的全部或部分区域57.IsChild 判断一个窗口是否为另一窗口的子或隶属窗口58.59.IsIconic 判断窗口是否已最小化60.IsRectEmpty 判断一个矩形是否为空61.IsWindow 判断一个窗口句柄是否有效62.IsWindowEnabled 判断窗口是否处于活动状态63.IsWindowUnicode 判断一个窗口是否为Unicode窗口。

API菜单函数(delphi)

API菜单函数(delphi)
): Integer;{}
functionDestroyAcceleratorTable(
hAccel: HACCEL{}
): BOOL;{}
functionTranslateMDISysAccel(
hWndClient: HWND;{}
constlpMsg: TMsg{}
): BOOL;{}
): BOOL;{}
functionMenuItemFromPoint(
hWnd: HWND;{}
hMenu: HMENU;{}
ptScreen: TPoint{}
): BOOL;{}
functionIsMenu(
hMenu: HMENU{}
): BOOL;{}
WinAPI:快捷键函数汇总
functionLoadAccelerators(
hInstance: HINST;{}
lpTableName: PChar{}
): HACCEL;{}
functionCreateAcceleratorTable(
varAccel;{}
Count: Integer{}
): HACCEL;{}
functionCopyAcceleratorTable(
hMenu: HMENU{}
): BOOL;{}
functionChangeMenu(
hMenu: HMENU;{}
cmd: UINT;{}
lpszNewItem: PChar;{}
cmdInsert: UINT;{}
flags: UINT{}
): BOOL;{}
functionHiliteMenuItem(
lpNewItem: PChar{}

Delphi_Api函数大全

Delphi_Api函数大全
BroadcastSystemMessage GetMessagePos GetMessageTime PostMessage PostThreadMessage RegisterWindowMessage ReplyMessage SendMessage SendMessageCallback SendMessageTimeout SendNotifyMessage

llseek 设置文件中进行读写的当 前位置 LockFile 锁定文件的某一部分, 使其不与其他应用程序共享 LockFileEx 与LockFile相似,只 是它提供了更多的功能 lopen 以二进制模式打开指定的文 件 lread 将文件中的数据读入内存缓 冲区 lwrite 将数据从内存缓冲区写入 一个文件 LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件 LZCopy 复制一个文件 LZInit 这个函数用于初始化内部 缓冲区 LZOpenFile 该函数能执行大量不 同的文件处理,而且兼容于压缩文 件 LZRead 将数据从文件读入内存缓 冲区 LZSeek 设置一个文件中进行读写 的当前位置 MapViewOfFile 将一个文件映射对 象映射到当前应用程序的地址空间 MoveFile 移动文件 OpenFile 这个函数能执行大量不 同的文件操作 OpenFileMapping 打开一个现成的 文件映射对象 QueryDosDevice 在Windows NT 中,DOS设备名会映射成NT系统设 备名。该函数可判断当前的设备映 射情况 ReadFile 从文件中读出数据 ReadFileEx 与ReadFile相似,只 是它只能用于异步读操作,并包含 了一个完整的回调 RegCloseKey 关闭系统注册表中的 一个项(或键) RegConnectRegistry 访问远程系 统的部分注册表 RegCreateKey 在指定的项下创建 或打开一个项

delphi中ShellExecute使用详解

delphi中ShellExecute使用详解

delphi中ShellExecute使用详解delphi 有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。

1.CreateProcess因为使用复杂,比较少用。

2.WinExec主要运行EXE文件。

如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。

首先必须引用shellapi.pas单元:uses ShellAPI;1).标准用法ShellExecute函数原型及参数含义如下:function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;●hWnd:用于指定父窗口句柄。

当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。

例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。

●Operation:用于指定要进行的操作。

其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。

当参数设为nil时,表示执行默认操作“open”。

●FileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。

●Parameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。

●Directory:用于指定默认目录。

Delphi_Api函数

Delphi_Api函数

WNetAddConnectionWNetAddConnection2WNetAddConnection3WNetCancelConnectionWNetCancelConnection2WNetCloseEnumWNetConnectionDialogWNetDisconnectDialogWNetEnumResourceWNetGetConnectionWNetGetLastErrorWNetGetUniversalNameWNetGetUserWNetOpenEnumBroadcastSystemMessageGetMessagePosGetMessageTimePostMessagePostThreadMessageRegisterWindowMessageReplyMessageSendMessageSendMessageCallbackSendMessageTimeoutSendNotifyMessageCloseHandleCompareFileTimeCopyFileCreateDirectoryCreateFileCreateFileMappingDeleteFileDeviceIoControlDosDateTimeToFileTimeFileTimeToDosDateTimeFileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构FindClose 关闭由FindFirstFile函数创FindFirstFile 根据文件名查找文件FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘GetBinaryType 判断文件是否可以执行GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数GetCurrentDirectory 在一个缓冲区中装载当前目录GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息GetDriveType 判断一个磁盘驱动器的类型GetExpandedName 取得一个压缩文件的全名GetFileAttributes 判断指定文件的属性GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制GetFileSize 判断文件长度GetFileTime 取得指定文件的时间信息GetFileType 在给出文件句柄的前提下,判断文件类型GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲GetFullPathName 获取指定文件的完整路径名GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 GetOverlappedResult 判断一个重叠操作当前的状态GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 GetPrivateProfileString 为初始化文件中指定的条目取得字串GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表GetProfileString 为win.ini初始化文件中指定的条目取得字串GetShortPathName 获取指定文件的短路径名GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用GetTempPath 获取为临时文件指定的路径GetVolumeInformation 获取与一个磁盘卷有关的信息GetWindowsDirectory 获取Windows目录的完整路径名hread 参考lreadhwrite 参考lwrite函数lclose 关闭指定的文件lcreat 创建一个文件llseek 设置文件中进行读写的当前位置LockFile 锁定文件的某一部分,使其不与其他应用程序共享LockFileEx 与LockFile相似,只是它提供了更多的功能lopen 以二进制模式打开指定的文件lread 将文件中的数据读入内存缓冲区lwrite 将数据从内存缓冲区写入一个文件LZClose 关闭由LZOpenFile 或 LZInit函数打开的一个文件LZCopy 复制一个文件LZInit 这个函数用于初始化内部缓冲区LZOpenFile 该函数能执行大量不同的文件处理,而且兼容于压缩文件LZRead 将数据从文件读入内存缓冲区LZSeek 设置一个文件中进行读写的当前位置MapViewOfFile 将一个文件映射对象映射到当前应用程序的地址空间MoveFile 移动文件OpenFile 这个函数能执行大量不同的文件操作OpenFileMapping 打开一个现成的文件映射对象QueryDosDevice 在Windows NT中,DOS设备名会映射成NT系统设备名。

delphiAPI设备场景函数

delphiAPI设备场景函数
CombineRgn 将两个区域组合为一个新区域
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
CreateDC 为专门设备创建设备场景
CreateEllipticRgn 创建一个椭圆
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
ExtCreateRegion 根据世界转换修改区域
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区
FillRgn 用指定刷子填充指定区域
FrameRgn 用指定刷子围绕指定区域画一个外框
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
ModifyWorldTransform 根据指定的模式修改世界转换
OffsetClipRgn 按指定量平移设备场景剪裁区
OffsetRgn 按指定偏移量平移指定区域
OffsetViewportOrgEx 平移设备场景视口区域
OffsetWindowOrgEx 平移指定设备场景窗口起点
PaintRgn 用当前刷子背景色填充指定区域
PtInRegion 确定点是否在指定区域内
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
RectInRegion 确定矩形是否有部分在指定区域内
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)

API 图像函数(delphi)

API 图像函数(delphi)

WinAPI: ExtractIcon - 获取EXE、DLL 或ICO 文件中的图标//声明:ExtractIcon(hInst: HINST; {调用函数的程序实例}lpszExeFileName: PChar; {文件路径; 文件可以是 *.exe、*.dll、*.ico}nIconIndex: UINT {图标索引}): HICON; {返回图标句柄; 索引为 0 时返回第一个图标句柄; 索引为 #FFFFFFFF 时返回图标总数}//举例:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses ShellAPI; {ExtractIcon 在其中声明}procedure TForm1.Button1Click(Sender: TObject);varico: TIcon;i,count,x,y,w,h: Integer;FilePath: string;begin{随便找了个路径, 如果缺失会退出}FilePath := 'C:\Program Files\Macromedia\Fireworks 8\Fireworks.exe';if not FileExists(FilePath) then begin ShowMessage('文件不存在'); Exit; en d;ico := TIcon.Create;x := 10; y := 10; w := 0; h := 0;Repaint;{先算出文件内的图标总数}count := ExtractIcon(HInstance, PChar(FilePath), HICON(-1));for i := 0to count - 1dobegin{循环提取图标}ico.Handle := ExtractIcon(HInstance, PChar(FilePath), i);{画出图标}Canvas.Draw(x,y,ico);{下面只是调整显示位置}if w < ico.Width then w := ico.Width;if h < ico.Height then h := ico.Height;x := x + ico.Width + 10;if x >= ClientWidth - w thenbeginunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls;typeTForm1 = class(TForm)TrackBar1: TTrackBar;procedure FormCreate(Sender: TObject);procedure FormPaint(Sender: TObject);procedure TrackBar1Change(Sender: TObject);procedure FormDestroy(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varBit,BitBack: TBitmap;Transparency: Byte = 255; {透明度}procedure TForm1.FormCreate(Sender: TObject);begin{设定窗体背景}BitBack := TBitmap.Create;BitBack.LoadFromFile('c:\temp\Back.bmp');Brush.Bitmap := BitBack;{调入图片}Bit := TBitmap.Create;Bit.LoadFromFile('c:\temp\test.bmp');{给 TrackBar1 初始化}TrackBar1.Max := 255;TrackBar1.Min := 0;TrackBar1.ShowSelRange := False;TrackBar1.Position := TrackBar1.Max;end;procedure TForm1.FormPaint(Sender: TObject);varBlend: TBlendFunction; {定义 AlphaBlend 要使用的 TBlendFunction 结构}begin{给 TBlendFunction 结构赋值}Blend.BlendOp := AC_SRC_OVER;Blend.BlendFlags := 0;Blend.AlphaFormat := 0;Blend.SourceConstantAlpha := Transparency;Windows.AlphaBlend(Canvas.Handle, {因 VCL 有同名属性, 所以指定了是来自 Windows 单元}10,10,Bit.Width + 10,Bit.Height + 10,Bit.Canvas.Handle,0,0,Bit.Width,Bit.Height,Blend);end;Ellipse(MetaFileDC, 10, 10, 100, 60);HMetaFile := CloseEnhMetaFile(MetaFileDC);{在窗体上按原始大小绘制 EMF}PlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(10,10,100,60));DeleteObject(MetaFileDC);DeleteEnhMetaFile(HMetaFile);end;end.用GDI 操作EMF 文件[3]: GetEnhMetaFileunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);constPath = 'C:\Temp\MyMetaFile.emf'; {假定这个文件还在}TForm1 = class(TForm)Button1: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integ er);procedure FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varHMetaFile: HENHMETAFILE;f: Boolean;x1,y1: Integer;R: TRect;procedure TForm1.FormCreate(Sender: TObject);constPath = 'C:\Temp\MyMetaFile.emf';beginHMetaFile := GetEnhMetaFile(PChar(Path));end;procedure TForm1.FormDestroy(Sender: TObject);beginDeleteEnhMetaFile(HMetaFile);end;Left = 0Top = 0Caption = 'Form1'ClientHeight = 206ClientWidth = 339Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11 = 'Tahoma'Font.Style = []OldCreateOrder = FalsePosition = poDesktopCenterOnCreate = FormCreateOnDestroy = FormDestroyOnMouseDown = FormMouseDownOnMouseMove = FormMouseMoveOnMouseUp = FormMouseUpPixelsPerInch = 96TextHeight = 13object Button1: TButtonLeft = 256Top = 173Width = 75Height = 25Caption = 'Button1'TabOrder = 0OnClick = Button1Clickendend用GDI 操作EMF 文件[5]: GetEnhMetaFileDescription - 获取EMF 文件的说明文本再用CreateEnhMetaFile 函数建立EMF 文件时可以同时写入描述性说明;用GetEnhMetaFileDescription 函数可以读出EMF 文件的说明文本.本例给的说明文本非常简单, 不过标准的说明文本的格式应该是: 程序名#0文件标题#0#0unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varHMetaFile: HENHMETAFILE; {EMF 文件句柄}{建立带说明的 EMF 文件}procedure TForm1.FormCreate(Sender: TObject);constPath = 'C:\Temp\MyMeateFile.emf';Description = 'ABCDE'; {当作 EMF 文件的说明}varMetaFileDC: HDC;begin{建立并写入说明}MetaFileDC := CreateEnhMetaFile(0, PChar(Path), nil, PChar(Description)); {绘图}Rectangle(MetaFileDC, 11, 11, 111, 111);{结束编辑、保存文件, 并返回文件句柄}HMetaFile := CloseEnhMetaFile(MetaFileDC);{删除 DC}DeleteObject(MetaFileDC);end;{读取 EMF 文件的说明}procedure TForm1.Button1Click(Sender: TObject);varDescriptionSize: Integer; {说明段的大小}DescriptionBuf: PChar; {接受说明的内存指针}begin{获取大小}DescriptionSize := GetEnhMetaFileDescription(HMetaFile, 0, nil);{分配内存}GetMem(DescriptionBuf, DescriptionSize);{获取说明}GetEnhMetaFileDescription(HMetaFile, DescriptionSize, DescriptionBuf); {显示说明}ShowMessage(DescriptionBuf); {ABCDE}{释放内存}FreeMem(DescriptionBuf);end;{绘制在窗体}procedure TForm1.Button2Click(Sender: TObject);beginPlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(11,11,111,111));end;{删除 EMF 文件句柄}procedure TForm1.FormDestroy(Sender: TObject);beginDeleteEnhMetaFile(HMetaFile);end;end.用GDI 操作EMF 文件[6]: GetEnhMetaFileHeader - 获取EMF 的头文件//增强图元文件的头文件结构 TEnhMetaHeader:tagENHMETAHEADER = packed recordiType: DWORD; {记录类型}nSize: DWORD; {结构大小}rclBounds: TRect; {外接矩形(单位是像素)}rclFrame: TRect; {图片矩形(单位是 0.1 毫米)}dSignature: DWORD; {文件签名}nVersion: DWORD; {文件版本}nBytes: DWORD; {文件尺寸}nRecords: DWORD; {记录数}nHandles: Word; {句柄数}sReserved: Word; {保留}nDescription: DWORD; {说明文本的长度}offDescription: DWORD; {说明文本的偏移量}procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varHMetaFile: HENHMETAFILE; {EMF 文件句柄}{建立带说明的 EMF 文件}procedure TForm1.FormCreate(Sender: TObject);constPath = 'C:\Temp\MyMeateFile.emf';Description = 'ABCDE'; {当作 EMF 文件的说明}varMetaFileDC: HDC;begin{建立并写入说明}MetaFileDC := CreateEnhMetaFile(0, PChar(Path), nil, PChar(Description)); {绘图}Rectangle(MetaFileDC, 11, 11, 111, 111);{结束编辑、保存文件, 并返回文件句柄}HMetaFile := CloseEnhMetaFile(MetaFileDC);{删除 DC}DeleteObject(MetaFileDC);end;procedure TForm1.Button1Click(Sender: TObject);constn = #13#10;varMetaHeaderSize: Integer; {文件头大小}MetaHeader: PEnhMetaHeader; {文件头结构的指针}str: string;buf: array[Word] of Char;beginMetaHeaderSize := GetEnhMetaFileHeader(HMetaFile, 0, nil);GetMem(MetaHeader, MetaHeaderSize);GetEnhMetaFileHeader(HMetaFile, MetaHeaderSize, MetaHeader);str := 'iType: %d' + n +'nSize: %d' + n +'rclBounds: %d,%d,%d,%d' + n +'rclFrame: %d,%d,%d,%d' + n +'dSignature: %d' + n +'nVersion: %d' + n +'nBytes: %d' + n +'nRecords: %d' + n +'nHandles: %d' + n +//'sReserved: %d' + n +'nDescription: %d' + n +'offDescription: %d' + n +'nPalEntries: %d' + n +'szlDevice: %d,%d' + n +'szlMillimeters: %d,%d' + n +'cbPixelFormat: %d' + n +'offPixelFormat: %d' + n +'bOpenGL: %d';wvsprintf(buf, PChar(str), PChar(MetaHeader));ShowMessage(buf);FreeMem(MetaHeader);end;{绘制在窗体}procedure TForm1.Button2Click(Sender: TObject);beginPlayEnhMetaFile(Canvas.Handle, HMetaFile, Rect(11,11,111,111));end;{删除 EMF 文件句柄}procedure TForm1.FormDestroy(Sender: TObject);beginDeleteEnhMetaFile(HMetaFile);end;end.用GDI 操作EMF 文件[7]: EnumEnhMetaFile、PlayEnhMetaFileRecord - 枚举文件中的图形命令EnumEnhMetaFile(DC: HDC; {目标设备句柄; 如果回调函数不需要回放, 该参数为 0}Emf: HENHMETAFILE; {图元文件句柄}EnhMetaFunc: TFNEnhMFEnumProc; {回调函数指针; 回调函数格式见下}Data: Pointer; {自定义数据指针}const Rect: TRect {要输出的尺寸; 如果 DC=0 该参数会被忽略}): BOOL;//EnumEnhMetaFile 使用的回调函数格式及参数, PlayEnhMetaFileRecord 基本就是使用这些参数:function EnhMetaFunc(DisplaySurface: HDC; {目标设备句柄; 如果回调函数不需要回放, 该参数为 0}var MetafileTable: THandleTable; {句柄表数组指针, 数组包含 HGDIOBJ 对象(画var MetafileRecord: TEnhMetaRecord; {图元文件记录 TEnhMetaRecord 指针, TEnhM etaRecord 结构见下表}ObjectCount: Integer; {对象句柄数目, 即句柄表 MetafileTable 中图形对象的数目}var Data: Longint {自定义数据指针}): Integer; stdcall;//TEnhMetaRecord 结构:tagENHMETARECORD = packed recordiType: DWORD; {类型}nSize: DWORD; {尺寸}dParm: array[0..0] of DWORD; {参数数组}end;//TEnhMetaRecord.iType 的可能值:EMR_HEADER = 1;EMR_POLYBEZIER = 2;EMR_POLYGON = 3;EMR_POLYLINE = 4;EMR_POLYBEZIERTO = 5;EMR_POLYLINETO = 6;EMR_POLYPOLYLINE = 7;EMR_POLYPOLYGON = 8;EMR_SETWINDOWEXTEX = 9;EMR_SETWINDOWORGEX = 10;EMR_SETVIEWPORTEXTEX = 11;EMR_SETVIEWPORTORGEX = 12;EMR_SETBRUSHORGEX = 13;EMR_EOF = 14;EMR_SETPIXELV = 15;EMR_SETMAPPERFLAGS = $10;EMR_SETMAPMODE = 17;EMR_SETSTRETCHBLTMODE = 21; EMR_SETTEXTALIGN = 22; EMR_SETCOLORADJUSTMENT = 23; EMR_SETTEXTCOLOR = 24; EMR_SETBKCOLOR = 25; EMR_OFFSETCLIPRGN = 26; EMR_MOVETOEX = 27; EMR_SETMETARGN = 28; EMR_EXCLUDECLIPRECT = 29; EMR_INTERSECTCLIPRECT = 30; EMR_SCALEVIEWPORTEXTEX = 31; EMR_SCALEWINDOWEXTEX = 32; EMR_SAVEDC = 33; EMR_RESTOREDC = 34; EMR_SETWORLDTRANSFORM = 35; EMR_MODIFYWORLDTRANSFORM = 36; EMR_SELECTOBJECT = 37; EMR_CREATEPEN = 38; EMR_CREATEBRUSHINDIRECT = 39; EMR_DELETEOBJECT = 40; EMR_ANGLEARC = 41; EMR_ELLIPSE = 42; EMR_RECTANGLE = 43; EMR_ROUNDRECT = 44; EMR_ARC = 45; EMR_CHORD = 46; EMR_PIE = 47; EMR_SELECTPALETTE = 48; EMR_CREATEPALETTE = 49; EMR_SETPALETTEENTRIES = 50; EMR_RESIZEPALETTE = 51; EMR_REALIZEPALETTE = 52; EMR_EXTFLOODFILL = 53; EMR_LINETO = 54; EMR_ARCTO = 55;EMR_ENDPATH = 60; EMR_CLOSEFIGURE = 61; EMR_FILLPATH = 62; EMR_STROKEANDFILLPATH = 63; EMR_STROKEPATH = $40; EMR_FLATTENPATH = 65; EMR_WIDENPATH = 66; EMR_SELECTCLIPPATH = 67; EMR_ABORTPATH = 68; EMR_GDICOMMENT = 70; EMR_FILLRGN = 71; EMR_FRAMERGN = 72; EMR_INVERTRGN = 73; EMR_PAINTRGN = 74; EMR_EXTSELECTCLIPRGN = 75; EMR_BITBLT = 76; EMR_STRETCHBLT = 77; EMR_MASKBLT = 78; EMR_PLGBLT = 79; EMR_SETDIBITSTODEVICE = 80; EMR_STRETCHDIBITS = 81; EMR_EXTCREATEFONTINDIRECTW = 82; EMR_EXTTEXTOUTA = 83; EMR_EXTTEXTOUTW = 84; EMR_POLYBEZIER16 = 85; EMR_POLYGON16 = 86; EMR_POLYLINE16 = 87; EMR_POLYBEZIERTO16 = 88; EMR_POLYLINETO16 = 89; EMR_POLYPOLYLINE16 = 90; EMR_POLYPOLYGON16 = 91; EMR_POLYDRAW16 = 92; EMR_CREATEMONOBRUSH = 93; EMR_CREATEDIBPATTERNBRUSHPT = 94;varHMetaFile: HENHMETAFILE; {EMF 文件句柄}RadioGroupItemIndex: Integer = -1;//EnumEnhMetaFile 的回调函数function MyEnhMetaFunc(DisplaySurface: HDC; var MetafileTable: THandleTabl e;var MetafileRecord: TEnhMetaRecord; ObjectCount: Integer; var Data: Longin t): Integer; stdcall;varitype: Integer;begincase RadioGroupItemIndex of1: itype := EMR_RECTANGLE;2: itype := EMR_ELLIPSE;end;if MetafileRecord.iType = itype thenbeginPlayEnhMetaFileRecord(DisplaySurface, MetafileTable, MetafileRecord, Ob jectCount);Result := 1;end;end;procedure TForm1.FormCreate(Sender: TObject);varMetaFileDC: HDC;begin{文件建立在内存}MetaFileDC := CreateEnhMetaFile(0, nil, nil, nil);MoveToEx(MetaFileDC, 0, 0, nil);LineTo(MetaFileDC, 100, 100);{矩形}Rectangle(MetaFileDC, 10, 10, 30, 30);{椭圆}unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)ColorBox1: TColorBox;ColorBox2: TColorBox;ComboBox1: TComboBox;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure FormPaint(Sender: TObject);procedure ColorBox1Change(Sender: TObject);procedure ColorBox2Change(Sender: TObject);procedure ComboBox1Change(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varHMetaFile: HENHMETAFILE; {EMF 文件句柄}p: TPen;b: TBrush;//EnumEnhMetaFile 的回调函数function MyEnhMetaFunc(DisplaySurface: HDC; var MetafileTable: THandleTabl e;var MetafileRecord: TEnhMetaRecord; ObjectCount: Integer; var Data: Longin t): Integer; stdcall;begincase MetafileRecord.iType ofEMR_CREATEPEN: SelectObject(DisplaySurface, p.Handle);EMR_CREATEBRUSHINDIRECT: SelectObject(DisplaySurface, b.Handle);elsePlayEnhMetaFileRecord(DisplaySurface, MetafileTable, MetafileRecord, Ob jectCount);Result := 1;end;end;procedure TForm1.FormCreate(Sender: TObject);varMetaFileDC: HDC;begin{文件建立在内存}MetaFileDC := CreateEnhMetaFile(0, nil, nil, nil);p := TPen.Create;b := TBrush.Create;p.Color := clRed;b.Style := bsCross;b.Color := clSilver;SelectObject(MetaFileDC, p.Handle);SelectObject(MetaFileDC, b.Handle);MoveToEx(MetaFileDC, 0, 0, nil);LineTo(MetaFileDC, 80, 80);{矩形}Rectangle(MetaFileDC, 10, 10, 30, 50);{椭圆}Ellipse(MetaFileDC, 30, 30, 50, 70);HMetaFile := CloseEnhMetaFile(MetaFileDC);DeleteObject(MetaFileDC);maText :='bsSolid,bsClear,bsHorizontal,bsVertical,bsFDiagonal,bsBDiagonal,bsCros s,bsDiagCross';end;procedure TForm1.FormPaint(Sender: TObject);beginEnumEnhMetaFile(Canvas.Handle, HMetaFile, @MyEnhMetaFunc, nil, ClientRec t);end;procedure TForm1.ColorBox1Change(Sender: TObject);beginp.Color := ColorBox1.Selected;Repaint;end;procedure TForm1.ColorBox2Change(Sender: TObject);beginb.Color := ColorBox2.Selected;Repaint;end;procedure boBox1Change(Sender: TObject);beginb.Color := ColorBox2.Selected;case ComboBox1.ItemIndex of0: b.Style := bsSolid;1: b.Style := bsClear;2: b.Style := bsHorizontal;3: b.Style := bsVertical;4: b.Style := bsFDiagonal;5: b.Style := bsBDiagonal;6: b.Style := bsCross;Top = 16Width = 116Height = 22ItemHeight = 16TabOrder = 0OnChange = ColorBox1Changeendobject ColorBox2: TColorBoxLeft = 200Top = 44Width = 116Height = 22ItemHeight = 16TabOrder = 1OnChange = ColorBox2Changeendobject ComboBox1: TComboBoxLeft = 200Top = 72Width = 116Height = 21ItemHeight = 13TabOrder = 2Text = 'ComboBox1'OnChange = ComboBox1ChangeendendWinAPI: 测试BitBltBitBlt(DestDC: HDC; {目标 DC}X, Y, Width, Height: Integer; {目标位置与大小}SrcDC: HDC; {源 DC}XSrc, YSrc: Integer; {源起始位置}Rop: DWORD {光栅操作码, 也就是源像素与目标像素的混合方式}procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure FormPaint(Sender: TObject);procedure ListBox1Click(Sender: TObject); end;varForm1: TForm1;implementation{$R *.dfm}varbit1,bit2: TBitmap;cvs1,cvs2,cvs3: TCanvas;procedure TForm1.FormCreate(Sender: TObject); beginwith ListBox1.Items dobeginAdd('SRCCOPY ');Add('SRCPAINT ');Add('SRCAND ');Add('SRCINVERT ');Add('SRCERASE ');Add('NOTSRCCOPY ');Add('NOTSRCERASE');Add('MERGECOPY ');Add('MERGEPAINT ');Add('PATCOPY ');Add('PATPAINT ');Add('PATINVERT ');Add('DSTINVERT ');Add('BLACKNESS ');Add('WHITENESS ');end;Panel1.Caption := '';Panel2.Caption := '';Panel3.Caption := '';bit1 := TBitmap.Create;bit1.Width := Panel1.ClientWidth;bit1.Height := Panel1.ClientHeight;bit2 := TBitmap.Create;bit2.Width := Panel2.ClientWidth;bit2.Height := Panel2.ClientHeight;cvs1 := TCanvas.Create;cvs2 := TCanvas.Create;cvs3 := TCanvas.Create;cvs1.Handle := GetDC(Panel1.Handle);cvs2.Handle := GetDC(Panel2.Handle);cvs3.Handle := GetDC(Panel3.Handle);end;procedure TForm1.FormDestroy(Sender: TObject);beginbit1.Free;bit2.Free;cvs1.Free;cvs2.Free;cvs3.Free;end;procedure TForm1.FormPaint(Sender: TObject);constColorArr: array[0..5] of TColor = (clRed, clGreen, clBlue, clYellow, clFuc hsia, clPurple);varwi,hi: Integer;I: Integer;beginwi := bit1.Width div4;hi := bit1.Height div4;bit1.Canvas.Pen.Width := 10;for I := 1to3dobeginbit1.Canvas.Pen.Color := ColorArr[i-1];bit1.Canvas.MoveTo(wi*i, 0);bit1.Canvas.LineTo(wi*i, bit1.Height);bit1.Canvas.Pen.Color := ColorArr[i+2];bit1.Canvas.MoveTo(0, hi*i);bit1.Canvas.LineTo(bit1.Width, hi*i);end;bit2.Canvas.Pen.Width := 15;bit2.Canvas.Ellipse(15, 15, bit2.Width-15, bit2.Height-15);cvs1.Draw(0, 0, bit1);cvs2.Draw(0, 0, bit2);end;procedure TForm1.ListBox1Click(Sender: TObject);varRop: Cardinal;beginRepaint;Rop := SRCCOPY;case ListBox1.ItemIndex of0 : Rop := SRCCOPY ;1 : Rop := SRCPAINT ;2 : Rop := SRCAND ;3 : Rop := SRCINVERT ;4 : Rop := SRCERASE ;5 : Rop := NOTSRCCOPY ;6 : Rop := NOTSRCERASE;PixelsPerInch = 96TextHeight = 13object Panel1: TPanelLeft = 8Top = 8Width = 180Height = 140Caption = 'Panel1'TabOrder = 0endobject Panel2: TPanelLeft = 194Top = 8Width = 119Height = 105Caption = 'Panel2'TabOrder = 1endobject Panel3: TPanelLeft = 8Top = 154Width = 180Height = 140Caption = 'Panel3'TabOrder = 2endobject ListBox1: TListBox Left = 194Top = 119Width = 119Height = 176ItemHeight = 13TabOrder = 3OnClick = ListBox1Click endend。

API 硬件与系统函数(delphi)

API 硬件与系统函数(delphi)

//举例:vard: DWORD;begind := GetVersion;ShowMessage(IntToStr(d)); {170393861; 这是我现在使用的系统} end;WinAPI: GetVersionEx - 获取系统版本详细信息//声明:GetVersionEx(var lpVersionInformation: TOSVersionInfo {参数是一个结构} ): BOOL;//结构 TOSVersionInfo 是 _OSVERSIONINFOA 的重命名_OSVERSIONINFOA = recorddwOSVersionInfoSize: DWORD; {结构大小}dwMajorVersion: DWORD; {主编号}dwMinorVersion: DWORD; {次编号}dwBuildNumber: DWORD; {建立编号}dwPlatformId: DWORD; {作业平台}szCSDVersion: array[0..127] of AnsiChar; {更多说明}end;{另外参数4(作业平台)可能的取值是:VER_PLATFORM_WIN32s = 0;VER_PLATFORM_WIN32_WINDOWS = 1;VER_PLATFORM_WIN32_NT = 2;VER_PLATFORM_WIN32_CE = 3;MessageBeep(0);end;WinAPI: GetSystemInfo - 获取系统信息//声明:GetSystemInfo(var lpSystemInfo: TSystemInfo {});//TSystemInfo 是 _SYSTEM_INFO 结构的重定义:_SYSTEM_INFO = recordcase Integer of0: (dwOemId: DWORD); {返回计算机标识符, 已废弃}1: (wProcessorArchitecture: Word; {处理器的体系结构}wReserved: Word; {保留}dwPageSize: DWORD; {分页大小}lpMinimumApplicationAddress: Pointer;{最小寻址空间}lpMaximumApplicationAddress: Pointer;{最大寻址空间}dwActiveProcessorMask: DWORD; {处理器掩码; 0..31 表示不同的处理器} dwNumberOfProcessors: DWORD; {处理器数目}dwProcessorType: DWORD; {处理器类型}dwAllocationGranularity: DWORD; {虚拟内存空间的粒度}wProcessorLevel: Word; {处理器等级}wProcessorRevision: Word); {处理器版本}end;//举例:procedure TForm1.FormCreate(Sender: TObject);WinAPI: GetKeyboardType - 获取键盘的类型信息//声明:GetKeyboardType(nTypeFlag: Integer {0:键盘类型; 1:键盘子类型; 2:功能键数量}): Integer;//举例:procedure TForm1.FormCreate(Sender: TObject);vari: Integer;List: TStringList;beginList := TStringList.Create;List.Add('IBM PC/XT or compatible (83-key) keyboard');List.Add('Olivetti "ICO" (102-key) keyboard');List.Add('IBM PC/AT (84-key) or similar keyboard');List.Add('IBM enhanced (101/102-key) keyboard');List.Add('Nokia 1050 and similar keyboards');List.Add('Nokia 9140 and similar keyboards');List.Add('Japanese keyboard');i := GetKeyboardType(0);ShowMessage(List[i-1]); {我这里返回: IBM enhanced (101/102-key) keyboard}i := GetKeyboardType(1);ShowMessage(IntToStr(i)); {这是厂商自定义数据, 这里返回: 0}i := GetKeyboardType(2);ShowMessage(IntToStr(i)); {返回: 12; 就是指 F1..F12}List.Free;end;WinAPI: GetDiskFreeSpace - 获取磁盘组织与容量信息GetVolumeInformation(lpRootPathName: PChar; {磁盘驱动器代码字符串}lpVolumeNameBuffer: PChar; {磁盘驱动器卷标名称}nVolumeNameSize: DWORD; {磁盘驱动器卷标名称长度}lpVolumeSerialNumber: PDWORD; {磁盘驱动器卷标序列号}var lpMaximumComponentLength: DWORD; {系统允许的最大文件名长度} var lpFileSystemFlags: DWORD; {文件系统标识}lpFileSystemNameBuffer: PChar; {文件操作系统名称}nFileSystemNameSize: DWORD {文件操作系统名称长度}): BOOL;//举例:procedure TForm1.FormCreate(Sender: TObject);varRootPath: array[0..20] of Char;VolName: array[0..255] of Char;SerialNumber: DWORD;MaxCLength: DWORD;FileSysFlag: DWORD;FileSysName: array[0..255] of Char;beginRootPath := 'C:\';GetVolumeInformation(RootPath,VolName,255,@SerialNumber,MaxCLength,FileSysFlag,FileSysName,255);): BOOL;//SetSystemTime 设置的是格林尼治时间SetSystemTime(const lpSystemTime: TSystemTime {TSystemTime 结构} ): BOOL;//TSystemTime 是 _SYSTEMTIME 结构的重定义:_SYSTEMTIME = recordwYear: Word; {年}wMonth: Word; {月}wDayOfWeek: Word; {周}wDay: Word; {日}wHour: Word; {时}wMinute: Word; {分}wSecond: Word; {秒}wMilliseconds: Word; {毫秒}end;//举例:procedure TForm1.FormCreate(Sender: TObject);varT: TSystemTime;beginGetSystemTime(T);Memo1.Clear;with Memo1.Lines dobeginadd(Format('年: %d',[T.wYear]));add(Format('月: %d',[T.wMonth]));if b then QueryPerformanceCounter(n1) else beginQueryPerformanceCounter(n2);n := n2 - n1;end;if n<>0thenbeginQueryPerformanceFrequency(f);n := n*1000div f;Text := IntToStr(n) + ' ms';end else Text := '等待第二下...';end;WinAPI: SetTimer、KillTimer - 创建与移除高性能定时器//创建定时器函数的声明:SetTimer(hWnd: HWND; {与定时器相关联的窗口句柄}nIDEvent: UINT; {指定一个非 0 的定时器标识符}uElapse: UINT; {指定间隔时间, 单位是毫秒}lpTimerFunc: TFNTimerProc {每到时间后, 要调用的函数的指针} ): UINT; {返回定时器标识符; 失败返回 0}//移除定时器函数的声明:KillTimer(hWnd: HWND; {与定时器相关联的窗口句柄}uIDEvent: UINT {定时器标识符}): BOOL;//处理 WM_TIMER 消息的回调函数的格式:TimerProc(hWnd: HWND; {与定时器相关联的窗口句柄}SetTimer(Handle, 1, 10, @MyTimerProc); {每 1/100 秒调用一次 MyTimerProc} end;//删除定时器procedure TForm1.Button2Click(Sender: TObject);beginKillTimer(Handle, 1); {创建时指定的定时器标识是 1, 这里必须要一致}end;//如果回调过程是窗体类的一个方法, 需要这样:vari: Integer;//先定义回调函数procedure TForm1.MyTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DW ORD);beginText := IntToStr(i);Inc(i);end;//创建定时器procedure TForm1.Button1Click(Sender: TObject);beginSetTimer(Handle, 1, 10, @TForm1.MyTimerProc); {每 1/100 秒调用一次 MyTimerPr oc}end;SM_CXVSCROLL = 2; SM_CYHSCROLL = 3; SM_CYCAPTION = 4; SM_CXBORDER = 5; SM_CYBORDER = 6; SM_CXDLGFRAME = 7; SM_CYDLGFRAME = 8; SM_CYVTHUMB = 9; SM_CXHTHUMB = 10; SM_CXICON = 11; SM_CYICON = 12; SM_CXCURSOR = 13; SM_CYCURSOR = 14; SM_CYMENU = 15; SM_CXFULLSCREEN = $10; SM_CYFULLSCREEN = 17; SM_CYKANJIWINDOW = 18; SM_MOUSEPRESENT = 19; SM_CYVSCROLL = 20; SM_CXHSCROLL = 21; SM_DEBUG = 22; SM_SWAPBUTTON = 23; SM_RESERVED1 = 24; SM_RESERVED2 = 25; SM_RESERVED3 = 26; SM_RESERVED4 = 27; SM_CXMIN = 28; SM_CYMIN = 29; SM_CXSIZE = 30; SM_CYSIZE = 31; SM_CXFRAME = $20; SM_CYFRAME = 33; SM_CXMINTRACK = 34; SM_CYMINTRACK = 35; SM_CXDOUBLECLK = 36; SM_CYDOUBLECLK = 37; SM_CXICONSPACING = 38; SM_CYICONSPACING = 39;SM_MENUDROPALIGNMENT = 40; SM_PENWINDOWS = 41; SM_DBCSENABLED = 42; SM_CMOUSEBUTTONS = 43; SM_SECURE = 44; SM_CXEDGE = 45; SM_CYEDGE = 46; SM_CXMINSPACING = 47; SM_CYMINSPACING = 48; SM_CXSMICON = 49; SM_CYSMICON = 50; SM_CYSMCAPTION = 51; SM_CXSMSIZE = 52; SM_CYSMSIZE = 53; SM_CXMENUSIZE = 54; SM_CYMENUSIZE = 55; SM_ARRANGE = 56; SM_CXMINIMIZED = 57; SM_CYMINIMIZED = 58; SM_CXMAXTRACK = 59; SM_CYMAXTRACK = 60; SM_CXMAXIMIZED = 61; SM_CYMAXIMIZED = 62; SM_NETWORK = 63; SM_CLEANBOOT = 67; SM_CXDRAG = 68; SM_CYDRAG = 69; SM_SHOWSOUNDS = 70; SM_CXMENUCHECK = 71; SM_CYMENUCHECK = 72; SM_SLOWMACHINE = 73; SM_MIDEASTENABLED = 74; SM_MOUSEWHEELPRESENT = 75; SM_CMETRICS = 76; SM_XVIRTUALSCREEN = 76; SM_YVIRTUALSCREEN = 77; SM_CXVIRTUALSCREEN = 78; SM_CYVIRTUALSCREEN = 79;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);varmmW,mmH: Integer;pixW,pixH: Integer;pm: Double;begin{以毫米为单位获取屏幕尺寸}mmW := GetDeviceCaps(Canvas.Handle, HORZSIZE);mmH := GetDeviceCaps(Canvas.Handle, VERTSIZE);ShowMessageFmt('屏幕宽: %d 毫米; 屏幕高: %d 毫米', [mmW, mmH]); {屏幕宽: 320 毫米; 屏幕高: 240 毫米}{以像素为单位获取屏幕尺寸}pixW := GetDeviceCaps(Canvas.Handle, HORZRES);pixH := GetDeviceCaps(Canvas.Handle, VERTRES);ShowMessageFmt('屏幕宽: %d 像素; 屏幕高: %d 像素', [pixW, pixH]); {屏幕宽: 1024 像素; 屏幕高: 768 像素}{当前状态下, 1 毫米等于多少像素?}ShowMessage(FloatToStr(pixW / mmW)); {3.2}ShowMessage(FloatToStr(pixH / mmH)); {3.2}{一步获取}代码文件:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;procedure FormCreate(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses ShlObj; {SHGetSpecialFolderLocation、SHGetPathFromIDList 函数来自这个单元}{获取常用路径的函数}function GetPath(FID: Integer): string;varpidl: PItemIDList;path: array[0..MAX_PATH] of Char;beginSHGetSpecialFolderLocation(0, FID, pidl);SHGetPathFromIDList(pidl, path);Result := path;end;{测试时, 我把 SHGetSpecialFolderLocation 函数需要的参数定义成了一个常数数组} constarr: array[0..57] of Integer = (CSIDL_DESKTOP , { = $0000 }CSIDL_INTERNET , { = $0001 }CSIDL_PROGRAMS , { = $0002 }CSIDL_CONTROLS , { = $0003 }CSIDL_PRINTERS , { = $0004 }CSIDL_PERSONAL , { = $0005 }CSIDL_FAVORITES , { = $0006 }CSIDL_STARTUP , { = $0007 }CSIDL_RECENT , { = $0008 }CSIDL_SENDTO , { = $0009 }CSIDL_BITBUCKET , { = $000a }CSIDL_STARTMENU , { = $000b }CSIDL_MYDOCUMENTS , { = $000c }CSIDL_MYMUSIC , { = $000d }CSIDL_MYVIDEO , { = $000e }CSIDL_DESKTOPDIRECTORY , { = $0010 }CSIDL_DRIVES , { = $0011 }CSIDL_NETWORK , { = $0012 }CSIDL_NETHOOD , { = $0013 }CSIDL_FONTS , { = $0014 }CSIDL_TEMPLATES , { = $0015 }CSIDL_COMMON_STARTMENU , { = $0016 }CSIDL_COMMON_PROGRAMS , { = $0017 }CSIDL_COMMON_STARTUP , { = $0018 }CSIDL_COMMON_DESKTOPDIRECTORY , { = $0019 }CSIDL_APPDATA , { = $001a }CSIDL_PRINTHOOD , { = $001b }CSIDL_LOCAL_APPDATA , { = $001c }CSIDL_ALTSTARTUP , { = $001d }CSIDL_COMMON_ALTSTARTUP , { = $001e }CSIDL_COMMON_FAVORITES , { = $001f }CSIDL_INTERNET_CACHE , { = $0020 }CSIDL_COOKIES , { = $0021 }CSIDL_HISTORY , { = $0022 }CSIDL_COMMON_APPDATA , { = $0023 } CSIDL_WINDOWS , { = $0024 }CSIDL_SYSTEM , { = $0025 }CSIDL_PROGRAM_FILES , { = $0026 } CSIDL_MYPICTURES , { = $0027 }CSIDL_PROFILE , { = $0028 }CSIDL_SYSTEMX86 , { = $0029 }CSIDL_PROGRAM_FILESX86 , { = $002a } CSIDL_PROGRAM_FILES_COMMON , { = $002b } CSIDL_PROGRAM_FILES_COMMONX86 , { = $002c } CSIDL_COMMON_TEMPLATES , { = $002d } CSIDL_COMMON_DOCUMENTS , { = $002e } CSIDL_COMMON_ADMINTOOLS , { = $002f } CSIDL_ADMINTOOLS , { = $0030 }CSIDL_CONNECTIONS , { = $0031 }CSIDL_COMMON_MUSIC , { = $0035 }CSIDL_COMMON_PICTURES , { = $0036 } CSIDL_COMMON_VIDEO , { = $0037 }CSIDL_RESOURCES , { = $0038 }CSIDL_RESOURCES_LOCALIZED , { = $0039 } CSIDL_COMMON_OEM_LINKS , { = $003a } CSIDL_CDBURN_AREA , { = $003b }CSIDL_COMPUTERSNEARME , { = $003d } CSIDL_PROFILES { = $003e });{测试}procedure TForm1.FormCreate(Sender: TObject); vari: Integer;s: string;beginMemo1.Clear;for i := 0to Length(Arr) - 1dobegins := GetPath(Arr[i]);。

delphi的api函数解读

delphi的api函数解读

同福客栈's Archiver客栈› Delphi› delphi 的api函数查看完整版本: delphi 的api函数delphi 的api函数什么是API函数Win32 API即为Windows应用程序编程接口(Application ProgrammingInte**ce。

所有在Win32平台上运行的应用程序都可以调用这些函数。

早期的PC机内存非常少,Windows的设计者们不仅要把大量的代码和资源放入,而且还要留出足够的空间让应用程序运行,解决这种矛盾的方法就是通过让多个程序共享常用的代码来实现,这些被共享的代码就是今天所说的API函数。

随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用“所见即所得”的编程方式来开发具有精美用户界面和功能的应用程序。

这些可视化编程环境操作简便、界面友好,比如:Visual C++、Delphi和Visual Basic等。

在这些工具中提供了大量的控件,实现了API的部分功能,加速了Windows应用程序的开发。

但程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。

API函数的分类分类单元功能及库文件基本管理windows操作系统的基本功能,提供分配内存、管理任务、装入资源、文件操作等shell例程shellapiwin32提供的外壳例程,如加载其它程序、管理登录等mci接口mmsystem多媒体mci编程接口(winmm.dll注册表管理regstrwin32系统中注册表的管理消息传送接口mapi微软消息传送系统的编程接口(mapi32.dll winsocketwinsockwinsocket网络编程接口(wsock32.dll标准对话框comdlgwin32的标准对话框,如打开文件、打印等(comdlg32.dllactivexactivex对象连接与嵌入ole函数win32外壳扩展shlobj针对系统外壳的编程接口,对资源管理器的某些功能或对象进行扩展[[i] 本帖最后由libosong 于2007-10-12 21:23 编辑[/i]]API函数按不同功能被存放在不同的动态链接库文件中,这些动态链接库文件一般是以DLL为扩展名。

Delphi常用函数表

Delphi常用函数表

Delphi常⽤函数表 --2 EnumProps API 返回窗⼝属性表列EnumPropsEx API 返回窗⼝属性表列EnumResourceLanguages API 列出语⾔资源EnumResourceNames API 列出资源名称EnumResourceTypes API 列出资源类型EnumServicesStatus API 枚举SC管理器数据库中的服务EnumSystemCodePages API 枚举已安装的可⽤系统代码页EnumSystemLocales API 枚举已安装的系统局部EnumThreadWindows API 返回线索窗⼝EnumTimeFormats API 枚举本地指定时间格式EnumWindowStations APIEqualPrefixSid API 检查两个SLD前缀是否相等EqualRect API 确定两矩形是否相等待EqualRgn API ⽐较两区域是否相等EqualSid API 检查两SLD安全ID是否相等EraseTape API 删除磁带的指定段Escape API 允许访问设备EscapeCommFunction API 发送扩展COMM函数ExcludeClipRect API 改变剪裁区ExcludeUpdateRgn API 从剪裁区中排斥更新区域ExitProcess API 退出当前进程ExitThread API 退出当前线索ExitWindows API 关闭WINDOWSExitWindowsEx API 关闭WINDOWSExpandEnvironmentStrings API 扩充环境变量字符串ExtCreatePen API 建⽴逻辑画笔ExtCreateRegion API 从区域数据中建⽴⼀个区域ExtEscape API 允许访问私有设备ExtFloodFill API ⽤当前刷⼦填充区域ExtSelectClipRgn API 选择⼀块区域作为剪裁区ExtTextOut API 在矩形区域中输出⼀个字符串ExtractAssociatedIcon API 从⽂件或相关EXE中获取图标句柄ExtractIcon API 从可执⾏⽂件中返回图标句柄ExtractIconEx APIEditMask 属性编辑模式Enabled 属性是否使标签呈现打开状态EncodeDate 函数将年⽉⽇合成为⽇期格式EncodeTime 函数将时、分、秒、毫秒合成为时间格式EndMargin 属性末尾边缘Eof 函数对有类型或⽆类型⽂件测试是否到⽂件尾Eoln 函数返回⽂本⽂件的⾏结束状态Erase 命令删除外部⽂件ExceptAddr 函数返回引起当前意外的地址Exclude 函数从集合中删除⼀些元素ExceptObject 函数返回当前意外的索引Exit 命令⽴即从当前的语句块中退出Exp 函数指数函数ExpandFileName 函数返回包含绝对路径的字符串ExtendedSelect 属性是否允许存在选择模式,True时,MultiSelect才有意义ExtractFileDir 函数返回驱动器和路径ExtractFileExt 函数返回⽂件的后缀ExtractFileName 函数返回⽂件名ExtractFilePath 函数返回指定⽂件的路径===============================================FatalAppExit API 结束⼀个应⽤程序FatalExit API 向调试者返回控件FileTimeToDosDateTime API 将⽂件时间转换为MS-DOS⽇期FileTimeToLocalFileTime API 将UTC⽂件时间转换成本地⽂件时间FileTimeToSystemTime API 将64位时间转换为系统时间FillConsoleOutputAttribute API 将属性写⼊屏幕缓冲区FillConsoleOutputCharacter API 将字符写⼊屏幕缓冲区FillPath API 填充当前路径FillRect API ⽤指定刷⼦填充矩形区域FillRgn API ⽤刷⼦填充区域FindAtom API 从本地原⼦表中返回字符串原⼦FindClose API 关闭查找⽂件描述表FindCloseChangeNotification API 光闭⽂件或⽬录修改等待FindClosePrinterChangeNotification APIFindEnvironmentString APIFindExecutable API 返回可执⾏⽂件名及句柄FindFirstChangeNotification API 设置⽂件或⽬录修改等待FindFirstFile API 查找第⼀个匹配⽂件FindFirstFreeAce API 返回指向第⼀个空闲ACL字节的指针FindFirstPrinterChangeNotification APIFindNextChangeNotification API 请求对下⼀个⽂件或⽬录变化的通知FindNextFile API 查找下⼀个匹配⽂件FindNextPrinterChangeNotification APIFindResource API 在模块中寻找资源FindResourceEx API 在模块中寻找资源FindText API 建⽴查找⽂本对话框FindWindow API 返回⼀个与类和窗⼝名相关的窗⼝句柄FindWindowEx APIFixBrushOrgEx APIFlashWindow API 使窗⼝闪烁⼀次FlattenPath API 将弧变为线FloodFill API ⽤当前刷⼦填充区域FlushConsoleInputBuffer API 清除控制台输⼊缓冲区FlushFileBuffers API 清除⽂件缓冲区FlushInstructionCache API 填满指令缓冲区FlushViewOfFile API ⽤映像视图填充⽂件FoldString API 变换字符串FormatMessage API 格式化消息字符串FrameRect API ⽤指定刷⼦画⼀个窗⼝边框FrameRgn API 在区域四周画出边框FreeConsole API 释放控制台FreeDDElParam API 释放DDE消息IPARAM FreeEnvironmentStrings APIFreeLibrary API 卸载库模块FreeLibraryAndExitThread APIFreeResource APIFreeSid API 释放SIDFileAge 函数返回⽂件已存在的时间FileClose 命令关闭指定的⽂件FileCreate 命令⽤指定的⽂件名建⽴新⽂件FileDateToDateTime 函数将DOS的⽇期格式转换为DELPHI的⽇期格式FileExists 函数检查⽂件是否存在FileGatAttr 函数返回⽂件的属性FileGetDate 函数返回⽂件的DOS⽇期时间标记FileOpen 命令⽤指定的存取模式打开指定的⽂件FilePos 函数返回⽂件的当前指针位置FileRead 命令从指定的⽂件读取FileSearch 命令在⽬录中搜索指定的⽂件FileSeek 函数改变⽂件的指针FileSetAttr 函数设置⽂件属性FileSetDate 函数设置⽂件的DOS⽇期时间标记FileSize 函数返回当前⽂件的⼤⼩FileWrite 函数对指定的⽂件做写操作FillChar 函数⽤指定的值填充连续字节的数FindClose 命令终⽌FindFirst/FindNext序列FindFirst 命令对指定的⽂件名及属性搜索⽬录FindNext 命令返回与⽂件名及属性匹配的下⼀⼊⼝FloatToDecimal 函数将浮点数转换为⼗进制数FloatToStrF 函数将浮点数转换为字符串FloatToStr 函数将浮点数转换为字符串FloatToText 函数将给定的浮点数转换为⼗进制数FloatToTextFmt 函数将给定的浮点数转换为⼗进制数Flush 函数将缓冲区的内容刷新到输出的⽂本⽂件中FmtLoadStr 函数从程序的资源字符串表中装载字符串FmtStr 函数格式化⼀系列的参数,其结果以参数Result返回Font 属性设置字体Format 函数格式化⼀系列的参数并返回Pascal字符串FormatBuf 函数格式化⼀系列的参数FormatDateTime 函数⽤指定的格式来格式化⽇期和时间FormatFloat 函数指定浮点数格式Frac 函数返回参数的⼩数部分FreeMem 函数按给定⼤⼩释放动态变量所占的空间=============================================== GdiComment API 向增强型图元⽂件中加⼊注释GdiFlush API 使当前GDI闪烁GdiGetBatchLimit API 返回缓冲GDI函数数量GdiSetBatchLimit API 设置缓冲GDI函数数量GenerateConsoleCtrlEvent API 向控制台进程组发送信号GetACP API 获取ANSI系统代码页GetAce API 返回指向ACL中的ACE的指针GetAclInformation API 返回访问控件表信息GetActiveWindow API 返回活动窗⼝句柄GetArcDirection API 返回弧和矩形的绘画⽅向GetAspectRatioFilterEx API 返回当前ASPECT-RATIO过滤器GetAsyncKeyState API 确定键的状态GetAtomName API 返回本地原⼦字符串GetBinaryType API 确定⼆进制可执⾏⽂件类型GetBitmapBits API 将位图复制到缓冲区GetBitmapDimensionEx API 返回位图宽和⾼GetBkColor API 返回当前背景⾊GetBkMode API 返回背景模式GetBoundsRect API 返回当前相邻矩形GetBrushOrgEx APIGetCPInfo API 获取代码页信息GetCapture APIGetCaretBlinkTime API 返回脱字号闪烁时间GetCaretPos API 返回当前脱字号位置GetCharABCWidths API 返回字符宽度GetCharABCWidthsFloat API 返回字符宽度GetCharWidth API 返回字符宽度GetCharWidth32 API 返回字符宽度GetCharWidthFloat API 返回部分字符宽度GetCharacterPlacement API 获取字符串属性数据GetClassInfo API 返回窗⼝类信息GetClassLong API 返回窗⼝类数据GetClassName API 返回窗⼝类名称GetClassWord API 返回窗⼝类内存字GetClientRect API 返回窗⼝客户区坐标GetClipBox API 取剪裁区域框GetClipCursor API 返回限制光标的矩形的坐标GetClipRgn API 返回当前剪辑域GetClipboardData API 返回剪贴板数据的句柄GetClipboardFormatName API 返回登录的剪贴板格式名GetClipboardOwner API 返回剪贴板所有者窗⼝句柄GetClipboardViewer API 返回第⼀个剪贴板浏览窗⼝句柄GetColorAdjustment API 获取设备描述表调整值GetColorSpace API 获取指定⾊彩空间GetCommConfig APIGetCommMask API 返回COMM事件屏蔽GetCommModemStatus API 返回调制解调器控制登录值GetCommProperties API 返回COMM设备属性GetCommState API 返回COMM设备控制块GetCommTimeouts API 返回COMM设备超时特性值GetCommandLine API 返回指向命令⾏的指针GetCompressedFileSize APIGetComputerName API 取回当前计算机名GetConsoleCP API 为控制台输⼊获取代码页GetConsoleCursorInfo API 返回光标⼤⼩GetConsoleMode API 返回控制台输⼊输出模式GetConsoleOutputCP API 为控制台输出获取代码页GetConsoleScreenBufferInfo API 返回屏幕缓冲区信息GetConsoleTitle API 返回控制台窗⼝标题GetCurrencyFormat APIGetCurrentDirectory API 返回当前⽬录GetCurrentObject API 返回当前对象GetCurrentPositionEx API 返回逻辑单元位置GetCurrentProcess API 返回当前进程的句柄GetCurrentProcessId API 返回当前进程ID值GetCurrentThread API 返回当前线索的句柄GetCurrentThreadId API 返回当前线索ID值GetCursor API 返回当前光标的句柄GetCursorPos API 返回当前光标的位置GetDC API 返回窗⼝描述表句柄GetDCEx API 返回显⽰描述表的句柄GetDCOrgEx API 返回设备描述表的转换起点GetDIBColorTable APIGetDIBits API 将DIB位复制到缓冲区中GetDateFormat API 获取本地⽇期格式GetDefaultCommConfig APIGetDesktopWindow API 返回桌⾯窗⼝句柄GetDeviceCaps API 返回设备性能GetDeviceGammaRamp API 获取显⽰器的辉度系数GetDialogBaseUnits API 返回对话基础单元GetDiskFreeSpace API 返回空闲磁盘空间GetDlgCtrlID API 返回⼉⼦窗⼝的ID值GetDlgItem API 返回对话框控件句柄GetDlgItemInt API 将对话框⽂本转换为整数GetDlgItemText API 返回对话框控件⽂本GetDoubleClickTime API 返回⿏标双击时间GetDriveType API 返回指定驱动器类型GetDriverModuleHandle API 返回驱动程序模块例⼦句柄GetEnhMetaFile API 建⽴增强图元⽂件GetEnhMetaFileBits API 将增强图元⽂件值复制到缓冲区GetEnhMetaFileDescription API 返回增强图元⽂件的标题及建⽴者GetEnhMetaFileHeader API 返回增强图元⽂件头GetEnhMetaFilePaletteEntries API 返回增强图元⽂件调⾊板⼊⼝GetEnvironmentStrings API 返回指向环境块的指针GetEnvironmentVariable API 返回过程环境变量GetExitCodeProcess API 返回过程中断代码GetExitCodeThread API 返回线索中断代码GetExpandedName API 取压缩⽂件的原⽂件名GetFileAttributes API 返回⽂件属性GetFileInformationByHandle API 返回⽂件信息GetFileSecurity API 获取⽂件或⽬录安全信息GetFileSize API 返回指定⽂件⼤⼩GetFileTime API 返回⽂件64位时间GetFileTitle API 返回⽂件名GetFileType API 返回⽂件类型GetFileVersionInfo API 返回⽂件的版本信息GetFileVersionInfoSize API 返回可⽤版本信息⼤⼩GetFocus API 返回当前焦点窗⼝句柄GetFontData API 返回字体数据GetFontLanguageInfo API 获取字体显⽰描述表的信息GetForegroundWindow API 返回前景窗⼝句柄GetForm API 获取打印机窗⼝信息GetFullPathName API 返回⽂件的路径名GetGlyphOutline API 取回轮廓数据GetGraphicsMode API 取回指定DC的图形模式GetHandleInformation APIGetICMProfile API 返回设备场景的⾊彩映像GetIconInfo API 返回图标或光标信息GetInputState API 确定⿏标、键盘、定时器状态GetJob API 获取打印作业信息GetKBCodePage API 获取OEM系统代码页GetKernelObjectSecurity API 返回内核对象SD GetKerningPairs API 返回当前字体内核对GetKeyNameText API 返回代表键盘名字的字符串GetKeyState API 返回虚拟键的状态GetKeyboardLayout APIGetKeyboardLayoutList APIGetKeyboardLayoutName API 返回活动键盘版⾯名GetKeyboardState API 返回虚拟键盘状态GetKeyboardType API 返回键盘信息GetLargestConsoleWindowSize API 返回窗⼝尺⼨的最⼤可能性GetLastActivePopup API 确定最近的活动弹出式窗⼝GetLastError API 返回扩充出错代码GetLengthSid API 返回SID长度GetLocalTime API 返回本地时间和⽇期GetLocaleInfo API 从记录中获取本机信息GetLogColorSpace API 获取逻辑⾊彩空间的信息GetLogicalDriveStrings API 返回合法驱动器字符串GetLogicalDrives API 指定合法驱动器GetMailslotInfo API 返回信箱信息GetMapMode API 返回映像模式GetMenu API 返回指定窗⼝的菜单句柄GetMenuCheckMarkDimensions API 返回缺省复选标记位图尺⼨GetMenuContextHelpId APIGetMenuDefaultItem APIGetMenuItemCount API 返回菜单项数GetMenuItemID API 返回菜单项标识符GetMenuItemInfo APIGetMenuItemRect APIGetMenuState API 返回指定菜单项的菜单标记GetMenuString API 将菜单项字符串复制⼊缓冲区GetMessage API 从线索消息队列中返回⼀条消息GetMessageExtraInfo API 返回硬件消息的信息GetMessagePos API 返回最后消息的光标位置GetMessageTime API 返回最后消息的时间位置GetMetaFile API 建⽴WINDOWS图元⽂件GetMetaFileBitsEx API 将WINDOWS图元⽂件复制⼊缓冲区GetMetaRgn API 返回当前图元区域GetMiterLimit API 返回当前MITER-JOIN长度GetModuleFileName API 返回指定模块的路径GetModuleHandle API 返回指定模块的句柄GetNamedPipeHandleState API 返回命名管道句柄消息GetNamedPipeInfo API 返回命名管道句柄消息GetNearestColor API 返回最近的可⽤⾊彩GetNearestPaletteIndex API 返回最近的匹配⾊彩GetNextDlgGroupItem API 返回前或后⼀组控件的句柄GetNextDlgTabItem API 返回前或后⼀个WS_TABSTOP控件GetNextWindow API 返回前或后⼀窗⼝管理器窗⼝GetNumberFormat APIGetNumberOfConsoleInputEvents API 返回控制台队列事件数GetNumberOfConsoleMouseButtons API 返回⿏标按钮数GetNumberOfEventLogRecords API 获取事件记录中的记录数GetOEMCP API 获取OEM系统代码页GetObject API 返回对象信息GetObjectType API 返回对象类型GetObject API 返回对象信息GetObjectType API 返回对象类型GetOldestEventLogRecord API 返回最早的记录数GetOpenClipboardWindow API 返回打开CLIPBOARD的窗⼝句柄GetOpenFileName API 建⽴⽂件名对话框GetOutlineTextMetrics API 返回TRUETYPE字体的公制类型GetOverlappedResult API 返回最后重叠结果GetPaletteEntries API 返回调⾊板⼊⼝范围GetParent API 返回⽗⼝句柄GetPath API 返回路径中的所有直线和曲线GetPixel API 返回指定像素的RGB值GetPixelFormat APIGetPolyFillMode API 返回当前多边形填充模式GetPrintProcessorDirectory API 获取打印机驱动处理器路径GetPrinter API 获取打印机信息GetPrinterData API 获取打印机配置信息GetPrinterDriver API 获取打印机驱动程序信息GetPrinterDriverDirectory API 获取打印机驱动程序路径GetPriorityClass API 返回过程的优先级类GetPriorityClipboardFormat API 返回第⼀个CLIPBOARD格式GetPrivateObjectSecurity API 返回保护服务器对象SD GetPrivateProfileInt API 从私有⽂件中获取整数GetPrivateProfileSection API 返回私有键和值GetPrivateProfileString API 从私有⽂件中获取字符串GetProcAddress API 返回函数地址GetProcessAffinityMask API 获取任务可⽤的处理表列GetProcessHeap API 获取调⽤过程堆句柄GetProcessHeaps APIGetProcessShutdownParameters API 返回过程停⽌参数GetProcessTimes API 获取过程计时器GetProcessWindowStation API 返回过程窗⼝站句柄GetProcessWorkingSetSize APIGetProfileInt API 从WIN.INI中获取整数GetProfileSection API 从WIN.INI中返回关键字和值GetProfileString API 从WIN.INI中获取字符串GetProp API 从窗⼝属性表列中返回数据句柄GetQueueStatus API 确定消息队列内容GetQueuedCompletionStatus APIGetROP2 API 返回当前绘图模式GetRasterizerCaps API 返回系统TRUETYPE状态GetRegionData API 返回区域数据GetRgnBox API 返回区域边框矩形GetSaveFileName API 建⽴⽂件名保存对话框GetScrollInfo APIGetScrollPos API 返回滑块位置GetScrollRange API 返回滑块运动范围GetSecurityDescriptorControl API 取回SD校正及控制信息GetSecurityDescriptorDacl API 返回SD离散ACL GetSecurityDescriptorGroup API 返回SD个⼈组信息GetSecurityDescriptorLength API 返回SD长度GetSecurityDescriptorOwner API 返回SD所有⼈GetSecurityDescriptorSacl API 返回SD系统ACL GetServiceDisplayName API 获取服务显⽰名称GetServiceKeyName API 获取服务登录关键名称GetShortPathName API 返回⽂件短路径GetSidIdentifierAuthority API 返回ID字段地址GetSidLengthRequired API 返回所需SID长度GetSidSubAuthority API 返回次规范数组地址GetSidSubAuthorityCount API 返回次字段地址GetStartupInfo API 获取当前过程的启始信息GetStdHandle API 返回标准I/O句柄GetStockObject API 返回常⽤画笔、刷⼦或字段的句柄GetStretchBltMode API 返回位图拉伸模式GetStringTypeA API 获取ANSI字符串类型GetStringTypeEx APIGetStringTypeW API 获取UNICODE字符串类型GetSubMenu API 返回弹出式菜单句柄GetSysColor API 返回显⽰元素⾊彩GetSysColorBrush APIGetSystemDefaultLCID API 获取系统缺省本地ID GetSystemDefaultLangID API 获取系统缺省语⾔ID GetSystemDirectory API 返回WINDOWS系统⽬录路径GetSystemInfo API 返回系统信息GetSystemMenu API 访问系统菜单GetSystemMetrics API 返回系统公制GetSystemPaletteEntries API 返回系统调⾊板⼊⼝GetSystemPaletteUse API 确定使⽤整个系统调⾊板GetSystemPowerStatus API 获取系统AC或DC电源状态GetSystemTime API 返回系统时间和⽇期GetSystemTimeAdjustment APIGetTabbedTextExtent API 确定制表串⼤⼩GetTapeParameters API 返回磁带驱动器或介质信息GetTapePosition API 返回当前磁带位置GetTapeStatus API 返回磁带机状态GetTempFileName API 建⽴临时⽂件名GetTempPath API 返回临时⽂件路径GetTextAlign API 返回⽂本对齐标志GetTextCharacterExtra API 返回⽂本字符间隔GetTextCharset APIGetTextCharsetInfo API 返回当前字体设置信息GetTextColor API 返回当前⽂本⾊彩GetTextExtentExPoint API 返回⼦字符串长度数组GetTextExtentPoint API 返回字符串⼤⼩GetTextExtentPoint32 API 返回字符串⼤⼩GetTextFace API 返回当前字体的字样GetTextMetrics API 返回当前字体的公制GetThreadContext API 返回指定线索描述表GetThreadDesktop API 返回线索桌⾯句柄GetThreadLocale API 获取线索本地信息GetThreadPriority API 返回指定线索优先级GetThreadSelectorEntry API 返回线索描述⼊⼝GetThreadTimes API 返回线索计时信息GetTickCount API 返回WINDOWS运⾏时间GetTimeFormat API 获取本地指定的时间字符串GetTimeZoneInformation API 返回当前时区信息GetTokenInformation API 返回指定令牌信息GetTopWindow API 返回指定窗⼝的顶端⼉⼦句柄GetUpdateRect API 返回窗⼝更新区域⼤⼩GetUpdateRgn API 返回窗⼝更新区域⼤⼩GetUserDefaultLCID API 获取⽤户缺省本地ID GetUserDefaultLangID API 获取⽤户缺省语⾔ID GetUserName API 返回⽤户名GetUserObjectInformation APIGetUserObjectSecurity API 返回服务器对象SD信息GetVersion API 返回WINDOWS和操作系统版本GetVersionEx API 返回扩展操作系统版本信息GetViewportExtEx API 返回视窗宽度GetViewportOrgEx API 返回视⼝源GetVolumeInformation API 返回⽂件系统信息GetWinMetaFileBits API 返回WINDOWS格式的图元⽂件内容GetWindow API 返回指定窗⼝句柄GetWindowContextHelpId APIGetWindowDC API 返回窗⼝设备⼚描述表GetWindowExtEx API 返回窗⼝宽度GetWindowLong API 从附加窗⼝内存中返回长型数值GetWindowOrgEx API 返回窗⼝源GetWindowPlacement API 返回窗⼝显⽰状态及最⼩/最⼤位置GetWindowRect API 返回窗⼝坐标GetWindowRgn APIGetWindowText API 将窗⼝⼯具栏⽂本复制到缓冲区GetWindowTextLength API 返回窗⼝⼯具栏⽂本长度GetWindowThreadProcessId API 返回窗⼝线索及过程ID GetWindowWord API 从附加窗⼝内存中返回字值GetWindowsDirectory API 返回窗⼝WINDOWS⽬录GetWorldTransform API 返回当前变换式GlobalAddAtom API 在系统原⼦表中加⼊字符串GlobalAlloc API 在堆中分配内存GlobalCompact APIGlobalDeleteAtom API 从系统原⼦表中删除原⼦GlobalFindAtom API 从全局原⼦表中返回字符串原⼦GlobalFix APIGlobalFlags API 返回全局内存块信息GlobalFree API 释放全局内存块GlobalGetAtomName API 返回全局原⼦字符串GlobalHandle API 将全局指针转换为句柄GlobalLock API 锁定内存对象并返回⼀个指针GlobalMemoryStatus API 检查内存状态GlobalReAlloc API 修改全局内存块⼤⼩/属性GlobalSize API 返回全局内存块⼤⼩GlobalUnWire APIGlobalUnfix APIGlobalUnlock API 开锁全局内存块GlobalWire APIGrayString API 在指定位置画灰⾊⽂本GetDir 返回指定驱动器的当前⽬录GetHeapStatus 返回内存管理器的当前状态GetMem 建⽴⼀指定⼤⼩的动态变量,并将指针指向该处GetMemoryManager 返回内存管理器的⼊⼝点Glyph 函数按钮上的图象。

API 窗口函数(delphi)

API 窗口函数(delphi)

varh: HWND; {把句柄定义成全局变量以避免重复}{准备工作}procedure TForm1.FormCreate(Sender: TObject); beginMemo1.Align := alLeft;Memo1.ScrollBars := ssBoth;Timer1.Enabled := False;Timer1.Interval := 100;end;{启动与停止}procedure TForm1.Button1Click(Sender: TObject); beginTimer1.Enabled := not Timer1.Enabled;case Timer1.Enabled ofTrue : Text := '开始截获';False: Text := '停止截获';end;Memo1.Clear;end;{定时获取}procedure TForm1.Timer1Timer(Sender: TObject); varp: array[0..254] of Char;beginif h <> GetForegroundWindow thenbeginh := GetForegroundWindow;GetWindowText(h, p, 255);if p <> ''then Memo1.Lines.Add(p);{设定计算器的 Alpha 透明}procedure TForm1.Button1Click(Sender: TObject);varh: HWND;FormStyle: Integer;beginh := FindWindow('SciCalc', nil);FormStyle := GetWindowLong(Handle, GWL_EXSTYLE);SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);SetLayeredWindowAttributes(h, 0, 128, LWA_ALPHA);end;{设定计算器中的白色透明}procedure TForm1.Button2Click(Sender: TObject);varh: HWND;FormStyle: Integer;beginh := FindWindow('SciCalc', nil);FormStyle := GetWindowLong(Handle, GWL_EXSTYLE);SetWindowLong(h, GWL_EXSTYLE, FormStyle or WS_EX_LAYERED);SetLayeredWindowAttributes(h, clWhite, 255, LWA_COLORKEY);end;end.获取窗口矩形的四种方法: GetClientRect、ClientRect、GetWindowRect、Boun dsRect其中GetClientRect、ClientRect 获取的是窗口的客户区矩形;GetWindowRect、BoundsRect 是获取窗口矩形;另外, 还有一个Windows.GetClientRect(使用方法同GetWindowRect, 它们都是API 函数), 这里使用的GetClientRect 是Forms.GetClientRect.procedure TForm1.FormPaint(Sender: TObject); conststr = 'L:%d; T:%d; R:%d; B:%d - ';varR1,R2,R3,R4: TRect;buf: array[Byte] of Char;x,y,h: Integer;beginR1 := GetClientRect;R2 := Self.ClientRect;GetWindowRect(Handle, R3);R4 := Self.BoundsRect;x := 10;y := 10;h := 10;Randomize;Canvas.Font.Color := Random($FFFFFF);wvsprintf(buf, str + 'GetClientRect', @R1);Canvas.TextOut(x, y, buf);y := y + h + Canvas.TextHeight(buf);wvsprintf(buf, str + 'Self.ClientRect', @R2); Canvas.TextOut(x, y, buf);y := y + h + Canvas.TextHeight(buf);Canvas.Font.Color := Random($FFFFFF);wvsprintf(buf, str + 'GetWindowRect', @R3);Canvas.TextOut(x, y, buf);y := y + h + Canvas.TextHeight(buf);wvsprintf(buf, str + 'Self.BoundsRect', @R4); Canvas.TextOut(x, y, buf);end;procedure TForm1.FormResize(Sender: TObject);。

delphi函数

delphi函数

Random(n)——取值范围为n, 即函数返回0至n-1之间的随机数.Randomize 过程----- 用它来重置随机数发生器.生成一个随机数.New(p)-----重新生成一个p(地址,动态分配内存.Dispose----例程释放你动态分配的内存。

Nil----表示空(指针).CheckBox1----选择框.ADD---表示加入. Listbox1.Items.Add(……….)Canvas----画板。

Canvas.Pen.Color---画板笔的颜色。

MessageDlg----对话框。

Dialog 对话RepeatK:=J MOD I;J:=I;I:=K;UNTIL I=0;(求最小公倍数)EOF(文件)(END OF FILE 是否到文件未)Listbox.items.count (表示列表框中的数量)Uppercase() 转化成大写Break 强制退出循环,continue 强制缩短循环,程序不往下进行,而是继续循环. EXIT 从当前代码块退出,如果代码块是主程序,则终止该程序,如果是函数或过程则立即退出该函数或过程. Halt 强制终止程序,语法格式为:procedure halt[(终止码:integer)];其中终止码可以省略runerrer 停止程序执行,并产生错误代码, 其语法为:procedure[(出错码:不byte)].Type TForm1{类的名称} = class(TForm{类的祖先,没有可以不写})Button1: TButton;{类的成员包括下面}btnchange: TButton;ListBox1: TListBox;有些是文本和数据输入的途径。

它们是Label(标签)、Edit(文本编辑)、MaskEdit(格式编辑)、Memo(备注)、List Box(列表框)、Combo Box(组合框)(一)控件与消息函数1、语法:AnyPopup: BOOL;单元:windows.pas(该单元DELPHI会自行在USES里加上,下同)作用:判断屏幕上是否存在任何弹出式窗口返回值:BOOL,如存在弹出式菜单,则返回T RUE注解:对该函数来说,弹出式菜单包含所有可见的包容顶级窗口,无论弹出式还是重叠窗口示例:procedure TForm1.Button1Click(Sender: TObject);beginif (AnyPopup) thenLabel1.Caption:=‘Pop-ups found: TRUE'elseLabel1.Caption:=‘Pop-ups found: FALSE';end;2、语法:EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;单元:windows.pas作用:指定的窗口里允许或禁止所有鼠标及键盘输入返回值:BOOL,如果返回真,WINDOWS已经禁止,否则返回假示例:procedure TForm1.Button1Click(Sender: TObject);beginif (IsWindowEnabled(Edit1.Handle)) thenbeginEnableWindow(Edit1.Handle,FALSE);Button1.Caption:=‘Enable Window';Edit1.Text:=‘This window is disabled';endelsebeginEnableWindow(Edit1.Handle,TRUE);Button1.Caption:=‘Disable Window';Edit1.Text:=‘This window is enabled';end;end;3、语法:FlashWindow(hWnd: HWND; bInvert: BOOL): BOOL;单元:windows.pas作用:闪烁显示指定窗口。

API绘图函数 Delphi

API绘图函数 Delphi
DrawFrameControl 描绘一个标准控件
DrawState 为一幅图象或绘图操作应用各式各样的效果
Ellipse 描绘一个椭圆,由指定的矩形围绕
EndPath 停止定义一个路径
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点
GetCurrentObject 获得指定类型的当前选定对象
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)
CreateEnhMetaFile 创建一个增强型的图元文件设备场景
CreateHatchBrush 创建带有阴影图案的一个刷子
CreateMetaFile 创建一个图元文件设备场景
DeleteMetaFile 删除指定的图元文件
DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放
DrawEdge 用指定的样式描绘一个矩形的边框
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序
DrawFocusRect 画一个焦点矩形
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子

Delphi API函数大全

Delphi API函数大全
GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值
GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表
GetProfileString 为win.ini初始化文件中指定的条目取得字串
GetShortPathName 获取指定文件的短路径名
GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
GetTempPath 获取为临时文件指定的路径
GetVolumeInformation 获取与一个磁盘卷有关的信息
PostMessage 将一条消息投递到指定窗口的消息队列
PostThreadMessage 将一条消息投递给应用程序
RegisterWindowMessage 获取分配给一个字串标识符的消息编号
ReplyMessage 答复一个消息
SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制
GetFileSize 判断文件长度
GetFileTime 取得指定文件的时间信息
GetFileType 在给出文件句柄的前提下,判断文件类型
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
RegLoadKey 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
RegNotifyCha供一种通知机制
RegOpenKey 打开一个现有的注册表项

API 进程与线程函数(delphi)

API 进程与线程函数(delphi)

WinAPI: WinExec - 运行外部程序//声明WinExec(lpCmdLine: LPCSTR; {文件名和参数; 如没指定路径会按以下顺序查找: 程序目录/当前目录/S ystem32/Windows/PATH环境变量}uCmdShow: UINT {启动选项}): UINT;//返回值:大于31{调用成功}等于0{内存不足}ERROR_FILE_NOT_FOUND = 2; {文件名错误}ERROR_PATH_NOT_FOUND = 3; {路径名错误}ERROR_BAD_FORMAT = 11; {EXE 文件无效}//uCmdShow 参数可选值:SW_HIDE = 0; {隐藏, 并且任务栏也没有最小化图标}SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}SW_NORMAL = 1; {同 SW_SHOWNORMAL}SW_SHOWMINIMIZED = 2; {最小化, 激活}SW_SHOWMAXIMIZED = 3; {最大化, 激活}SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}SW_SHOW = 5; {同 SW_SHOWNORMAL}SW_MINIMIZE = 6; {最小化, 不激活}SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}SE_ERR_SHARE = 26; {发生共享错误}SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效}SE_ERR_DDETIMEOUT = 28; {超时}SE_ERR_DDEFAIL = 29; {DDE 事务失败}SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务} SE_ERR_NOASSOC = 31; {没有相关联的应用程序}//ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}SW_NORMAL = 1; {同 SW_SHOWNORMAL}SW_SHOWMINIMIZED = 2; {最小化, 激活}SW_SHOWMAXIMIZED = 3; {最大化, 激活}SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}SW_SHOW = 5; {同 SW_SHOWNORMAL}SW_MINIMIZE = 6; {最小化, 不激活}SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}SW_RESTORE = 9; {同 SW_SHOWNORMAL}SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}SW_MAX = 10; {同 SW_SHOWNORMAL}//举例说明更多问题(别忘了 uses ShellAPI;):procedure TForm1.FormCreate(Sender: TObject);beginStringGrid1.Cells[0,0] := '当前线程虚拟句柄: ';StringGrid1.Cells[0,1] := '当前线程 ID: ';StringGrid1.Cells[0,2] := '当前进程虚拟句柄: ';StringGrid1.Cells[0,3] := '当前进程 ID: ';StringGrid1.Cells[1,0] := IntToStr(GetCurrentThread);StringGrid1.Cells[1,1] := IntToStr(GetCurrentThreadID);StringGrid1.Cells[1,2] := IntToStr(GetCurrentProcess);StringGrid1.Cells[1,3] := IntToStr(GetCurrentProcessId);{下面是显示格式的调整}StringGrid1.Align := alClient;StringGrid1.FixedRows := 0;StringGrid1.RowCount := 4;StringGrid1.ColCount := 2;StringGrid1.ColWidths[0] := StringGrid1.Canvas.TextWidth(StringGrid1.Cell s[0,0]) + 4;StringGrid1.ColWidths[1] := StringGrid1.Canvas.TextWidth(StringGrid1.Cell s[0,1]) + 4;end;end.//效果图:GetWindowThreadProcessId(Handle, @c);ShowMessage(IntToStr(c)); {2792; 随机的}{在本例中相同于 GetCurrentProcessID 的结果}c := GetCurrentProcessID;ShowMessage(IntToStr(c)); {2792}c := GetWindowThreadProcessId(Handle, nil);ShowMessage(IntToStr(c)); {2748}{在本例中相同于 GetCurrentThreadID 的结果}c := GetCurrentThreadID;ShowMessage(IntToStr(c)); {2748}end;end.WinAPI: OpenProcess、GetExitCodeProcess、TerminateProcess (测试强制关闭OICQ)//声明:{返回进程的句柄}OpenProcess(dwDesiredAccess: DWORD; {访问选项}bInheritHandle: BOOL; {能否继承; True 表示能用 CreateProcess 继承句柄创建新进程}dwProcessId: DWORD {指定进程 ID}): THandle; {成功会返回进程句柄; 失败返回 0}//dwDesiredAccess 可选值:PROCESS_TERMINATE = $0001; {允许 TerminateProcess 使用进程句柄来关闭进程}PROCESS_CREATE_THREAD = $0002; {允许 CreateRemoteThread 使用进程句柄来创建线程}PROCESS_VM_OPERATION = $0008; {允许 VirtualProtectEx 使用进程句柄来改变进程的虚拟内存}PROCESS_VM_READ = $0010; {允许 ReadProcessMemory 使用进程句柄从进程的虚拟内存中读取数据}PROCESS_VM_WRITE = $0020; {允许 WriteProcessMemory 使用进程句柄向进程的虚拟内存中写入数据}PROCESS_DUP_HANDLE = $0040; {允许 DuplicateHandle 把进程句柄当作源句柄或目标句柄进行复制}PROCESS_CREATE_PROCESS = $0080; {默认值}PROCESS_SET_QUOTA = $0100; {允许 SetProcessWorkingSetSize 使用进程句柄来来设置虚拟内存的上限值}PROCESS_SET_INFORMATION = $0200; {允许 SetPriorityClass 使用进程句柄来设置进程优先级}PROCESS_QUERY_INFORMATION = $0400; {允许 GetExitCodeProcess 或 GetPriorityCl ass 通过进程句柄读取进程信息}SYNCHRONIZE = $00100000; {允许任何等待的函数使用进程句柄}PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or$FFF); {允许所有权限}{获取指定进程的退出码}GetExitCodeProcess(提示: #32770 是提前知道的类名, 获取方法可参见:/del/archive/2008/03/09/1097942.htmlGetWindowThreadProcessId函数请参见: /del/archive/2008/03/10/1098475.html//能不能获取记事本的句柄?varh: Cardinal;beginh := GetModuleHandle('notepad.exe');ShowMessage(IntToStr(h)); {0; 失败}{因为当前进程和记事本的进程是相互独立的; }{如果用能够冲破进程、面向全局的 dll 应该可以.}end;WinAPI: GetModuleFileName、GetModuleHandleunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses PsAPI; {GetModuleFileNameEx 函数需要它}{根据窗口句柄获取所在程序路径的函数}function GetProcessExePath(h: HWND): string;varpid: Cardinal;pHandle: THandle;buf: array[0..MAX_PATH] of Char;begin{先获取进程 ID}GetWindowThreadProcessId(h, @pid);{再获取进程句柄}pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid); {获取进程路径}GetModuleFileNameEx(pHandle, 0, buf, Length(buf));CloseHandle(pHandle);Result := buf;end;{测试当前程序}procedure TForm1.Button1Click(Sender: TObject);varpath: string;beginpath := GetProcessExePath(Handle);ShowMessage(path);end;{测试记事本 - 需要随便打开一个记事本}procedure TForm1.Button2Click(Sender: TObject);varwh: HWND;path: string;。

DELPHI中使用API函数详解

DELPHI中使用API函数详解

DELPHI中使用API函数详解在Delphi中,可以使用API函数来实现一些特定的功能或操作,这些API函数可以直接调用Windows操作系统提供的功能。

本文将详细介绍如何在Delphi中使用API函数。

在Delphi中,可以使用以下方法来调用API函数:1. 声明API函数:首先需要在Delphi中声明API函数,可以在程序中的任何地方声明。

声明API函数的语法如下:```delphifunction 函数名(参数列表): 返回值类型; stdcall; external '库名.dll';```其中,函数名是API函数的名称,参数列表包含了API函数需要接收的参数,返回值类型是API函数的返回值类型,stdcall表示使用标准调用规范,external后面的字符串表示API函数所在的动态链接库文件。

例如,要声明一个在user32.dll库中的MessageBox函数,可以写成以下代码:```delphifunction MessageBox(hWnd: HWND; lpText: LPCWSTR; lpCaption: LPCWSTR; uType: UINT): Integer; stdcall; external 'user32.dll';```2.调用API函数:声明完API函数后,就可以在程序中直接调用了。

调用API函数的方法与调用普通函数类似,只需传递相应的参数即可。

例如,使用之前声明的MessageBox函数来显示一个消息框,可以写成以下代码:```delphibeginMessageBox(0, 'Hello World', '提示', MB_OK);end;```上述代码中,第一个参数0表示消息框的父窗口句柄,'Hello World'表示要显示的消息文本,'提示'表示消息框的标题,MB_OK表示消息框的样式。

怎样在DELPHI中使用API函数

怎样在DELPHI中使用API函数

怎样在DELPHI中使用API函数在Delphi中,可以使用API函数实现许多功能,例如文件操作、窗口管理、注册表操作、网络通信等。

以下是一些常见的示例:1.文件操作:在Delphi中,使用API函数可以执行各种文件操作,例如创建、移动、复制和删除文件。

以下是一个创建文件的示例代码:```pascalprocedure CreateFileExample;varhFile: THandle;beginhFile := CreateFile('C:\example.txt', GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);if hFile <> INVALID_HANDLE_VALUE thenbegin//文件创建成功,执行其他操作...CloseHandle(hFile);end;end;```2.窗口管理:使用API函数可以管理窗口,例如最大化、最小化、激活和关闭窗口。

以下是一个最大化窗口的示例代码:```pascalprocedure MaximizeWindowExample(hWnd: HWND);beginShowWindow(hWnd, SW_MAXIMIZE);end;```3.注册表操作:API函数可以用于读取和写入注册表项。

以下是一个读取注册表项的示例代码:```pascalprocedure ReadRegistryExample;varhKey: HKEY;RegValue: DWORD;beginif RegOpenKeyEx(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows', 0, KEY_READ, hKey) = ERROR_SUCCESS thenbeginbegin//注册表项读取成功,执行其他操作...end;RegCloseKey(hKey);end;end;```4.网络通信:API函数可以用于建立和管理网络连接,例如连接到远程服务器、发送和接收网络数据等。

Delphi调用API函数操作串口

Delphi调用API函数操作串口

再贴上一段用API操作串口的代码,还是API好,一目了然,呵呵。

unit main;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Memo1: TMemo;Memo2: TMemo;Label1: TLabel;Label2: TLabel;RadioGroup1: TRadioGroup;Button3: TButton;Button4: TButton;procedure Button1Click(Sender: TObject);procedure OpenSerialPort;procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;hSerialPort:Cardinal;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginOpenSerialPort;end;procedure tform1.OpenSerialPort;varcc:TCommConfig;Temp:string;beginTemp:='Com'+inttostr(RadioGroup1.ItemIndex+1); hSerialPort:=CreateFile(PChar(Temp),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);if (hSerialPort=invalid_handle_value) thenbeginMessageBox(0,'打开串口失败','',MB_OK);Exit;end;GetCommState(hSerialPort,cc.dcb);cc.dcb.BaudRate:=CBR_9600;cc.dcb.ByteSize:=8;cc.dcb.Parity:=NOPARITY;cc.dcb.StopBits:=ONESTOPBIT;if not SetCommState(hSerialPort,cc.dcb) thenbeginShowMessage('不能设置串口');CloseHandle(hSerialPort);Exit;endelseShowMessage('打开,并设置成功!');end;procedure TForm1.Button2Click(Sender: TObject);beginif hSerialPort<>0 then CloseHandle(hSerialPort);Exit;end;procedure TForm1.Button3Click(Sender: TObject);vartemp:string;lw:LongWord;beginif hSerialPort=0 then Exit;temp:=Memo1.Text;WriteFile(hSerialPort,PChar(temp)^,Length(temp),lw,nil); end;procedure TForm1.Button4Click(Sender: TObject);vartempString:string;inBuff:array[0..2047]of Char;bytesRead,dwError:LongWord;cs:TComStat;beginClearCommError(hSerialPort,dwError,@cs);if cs.cbInQue>SizeOf(inBuff)thenbeginPurgeComm(hSerialPort,PURGE_RXCLEAR);Exit;end;ReadFile(hSerialPort,inBuff,cs.cbInQue,bytesRead,nil); tempString:=Copy(inBuff,1,cs.cbInQue);Memo2.Text:=tempString;end;end.测试软件代码下载:/onews.asp?/123.html。

Delphi常用应用函数

Delphi常用应用函数
begin
ShowMessage(ExtractFileDir(Application.Exename));
// ie: c:\temp
ShowMessage(ExtractFilePath(Application.Exename));
// ie: c:\temp\
end;
相同点: 如果执行文件在根目录下(如:C:\SAMPLE.EXE)的话, 两者的传回值相同, 且最后一个字符都是"/"。 使用GetFileVersionInfo 得到版本信息的例子
end; 得到执行程序的目录
SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 用哪一个?没有太大的关系。
不过有以下的差别: ExtractFilePath 传回值的最後一个字元是反斜杠"/"。
procedure TForm1.Button1Click(Sender: TObject);
if FileExists(sFileName) then
Memo1.Lines.LoadFromFile(sFileName)
else
Application.MessageBox('找不到指定的档案', '讯息', 48);
end;
end;
关闭Windows
控制WINDOWS的开关:如关闭WINDOWS,重新启动WINDOWS等, ExitWindowsEx(UINT uFlags,DWORD dwReserved);是实现这一功能的API函数
var aa:pchar;
begin
GetTempPath(20,aa); file://返回路径名
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi 常用API 函数[delphi] view plaincopyDelphi 常用API 函数AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小AnyPopup 判断屏幕上是否存在任何弹出式窗口ArrangeIconicWindows 排列一个父窗口的最小化子窗口AttachThreadInput 连接线程输入函数BeginDeferWindowPos 启动构建一系列新窗口位置的过程BringWindowToTop 将指定的窗口带至窗口列表顶部CascadeWindows 以层叠方式排列窗口ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标CloseWindow 最小化指定的窗口CopyRect 矩形内容复制DeferWindowPos 该函数为特定的窗口指定一个新窗口位置DestroyWindow 清除指定的窗口以及它的所有子窗口DrawAnimatedRects 描绘一系列动态矩形EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态EnumChildWindows 为指定的父窗口枚举子窗口EnumThreadWindows 枚举与指定任务相关的窗口EnumWindows 枚举窗口列表中的所有父窗口EqualRect判断两个矩形结构是否相同FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口FlashWindow 闪烁显示指定窗口GetActiveWindow 获得活动窗口的句柄GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息GetClassLong 取得窗口类的一个Long变量条目GetClassName 为指定的窗口取得类名GetClassWord 为窗口类取得一个整数变量GetClientRect 返回指定窗口客户区矩形的大小GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄GetFocus 获得拥有输入焦点的窗口的句柄GetForegroundWindow 获得前台窗口的句柄GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息GetParent 判断指定窗口的父窗口GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系GetWindowContextHelpId 取得与窗口关联在一起的帮助场景ID GetWindowLong 从指定窗口的结构中取得信息GetWindowPlacement 获得指定窗口的状态及位置信息GetWindowRect 获得整个窗口的范围矩形,窗口的边框、标题栏、滚动条及菜单等都在这个矩形内GetWindowText 取得一个窗体的标题(caption)文字,或者一个控件的内容GetWindowTextLength 调查窗口标题文字或控件内容的长短GetWindowWord 获得指定窗口结构的信息InflateRect增大或减小一个矩形的大小IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect 两个矩形的交集InvalidateRect 屏蔽一个窗口客户区的全部或部分区域IsChild 判断一个窗口是否为另一窗口的子或隶属窗口IsIconic 判断窗口是否已最小化IsRectEmpty 判断一个矩形是否为空IsWindow 判断一个窗口句柄是否有效IsWindowEnabled 判断窗口是否处于活动状态IsWindowUnicode 判断一个窗口是否为Unicode窗口。

这意味着窗口为所有基于文本的消息都接收Unicode文字IsWindowVisible 判断窗口是否可见IsZoomed 判断窗口是否最大化LockWindowUpdate 锁定指定窗口,禁止它更新MapWindowPoints 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统MoveWindow 改变指定窗口的位置和大小OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来OpenIcon 恢复一个最小化的程序,并将其激活PtInRect 判断指定的点是否位于矩形内部RedrawWindow 重画全部或部分窗口ReleaseCapture 为当前的应用程序释放鼠标捕获ScreenToClient 判断屏幕上一个指定点的客户区坐标ScrollWindow 滚动窗口客户区的全部或一部分ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分SetActiveWindow 激活指定的窗口SetCapture 将鼠标捕获设置到指定的窗口SetClassLong 为窗口类设置一个Long变量条目SetClassWord 为窗口类设置一个条目SetFocusAPI 将输入焦点设到指定的窗口。

如有必要,会激活窗口SetForegroundWindow 将窗口设为系统的前台窗口SetParent 指定一个窗口的新父SetRect 设置指定矩形的内容SetRectEmpty 将矩形设为一个空矩形SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID SetWindowLong 在窗口结构中为指定的窗口设置信息SetWindowPlacement 设置窗口状态和位置信息SetWindowPos 为窗口指定一个新位置和状态SetWindowText 设置窗口的标题文字或控件的内容SetWindowWord 在窗口结构中为指定的窗口设置信息ShowOwnedPopups 显示或隐藏由指定窗口所有的全部弹出式窗口ShowWindow 控制窗口的可见性ShowWindowAsync 与ShowWindow相似SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果TileWindows 以平铺顺序排列窗口UnionRect装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect 联合起来的结果UpdateWindow 强制立即更新窗口ValidateRect 校验窗口的全部或部分客户区WindowFromPoint 返回包含了指定点的窗口的句柄。

忽略屏蔽、隐藏以及透明窗口tsqgw (2002-03-14 14:48:00) ActivateKeyboardLayout 激活一个新的键盘布局。

键盘布局定义了按键在一种物理性键盘上的位置与含义Beep 用于生成简单的声音CharToOem 将一个字串从ANSI字符集转换到OEM字符集ClipCursor 将指针限制到指定区域ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符DestroyCaret 清除(破坏)一个插入符EnumCalendarInfo 枚举在指定“地方”环境中可用的日历信息EnumDateFormats 列举指定的“当地”设置中可用的长、短日期格式EnumSystemCodePages 枚举系统中已安装或支持的代码页EnumSystemLocales 枚举系统已经安装或提供支持的“地方”设置EnumTimeFormats 枚举一个指定的地方适用的时间格式ExitWindowsEx 退出windows,并用特定的选项重新启动ExpandEnvironmentStrings 扩充环境字串FreeEnvironmentStrings 翻译指定的环境字串块GetACP 判断目前正在生效的ANSI代码页GetAsyncKeyState 判断函数调用时指定虚拟键的状态GetCaretBlinkTime 判断插入符光标的闪烁频率GetCaretPos 判断插入符的当前位置GetClipCursor 取得一个矩形,用于描述目前为鼠标指针规定的剪切区域GetCommandLine 获得指向当前命令行缓冲区的一个指针GetComputerName 取得这台计算机的名称GetCPInfo 取得与指定代码页有关的信息GetCurrencyFormat 针对指定的“地方”设置,根据货币格式格式化一个数字GetCursor 获取目前选择的鼠标指针的句柄GetCursorPos 获取鼠标指针的当前位置GetDateFormat 针对指定的“当地”格式,对一个系统日期进行格式化GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄GetEnvironmentVariable 取得一个环境变量的值GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件GetKBCodePage 由GetOEMCP取代,两者功能完全相同GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表GetKeyboardLayoutName 取得当前活动键盘布局的名称GetKeyboardState 取得键盘上每个虚拟键当前的状态GetKeyboardType 了解与正在使用的键盘有关的信息GetKeyNameText 在给出扫描码的前提下,判断键名GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息GetLocaleInfo 取得与指定“地方”有关的信息GetLocalTime 取得本地日期和时间GetNumberFormat 针对指定的“地方”,按特定的格式格式化一个数字GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型GetSysColor 判断指定windows显示对象的颜色GetSystemDefaultLangID 取得系统的默认语言ID GetSystemDefaultLCID 取得当前的默认系统“地方”GetSystemInfo 取得与底层硬件平台有关的信息GetSystemMetrics 返回与windows环境有关的信息GetSystemPowerStatus 获得与当前系统电源状态有关的信息GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步GetThreadLocale 取得当前线程的地方IDGetTickCount 用于获取自windows启动以来经历的时间长度(毫秒)GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间GetTimeZoneInformation 取得与系统时区设置有关的信息GetUserDefaultLangID 为当前用户取得默认语言ID GetUserDefaultLCID 取得当前用户的默认“地方”设置GetUserName 取得当前用户的名字GetVersion 判断当前运行的Windows和DOS版本GetVersionEx 取得与平台和操作系统有关的版本信息HideCaret 在指定的窗口隐藏插入符(光标)IsValidCodePage 判断一个代码页是否有效IsValidLocale 判断地方标识符是否有效keybd_event 这个函数模拟了键盘行动LoadKeyboardLayout 载入一个键盘布局MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换MessageBeep 播放一个系统声音。

相关文档
最新文档