DELPHI中如何调用API,可举例说明

合集下载

DELPHI下API简述

DELPHI下API简述

1 DELPHI下API简述DELPHI下API简述/show.asp?id=144auxGetDevCaps API 获取附属设备容量auxGetNumDevs API 返回附属设备数量auxGetV olume API 获取当前卷设置auxOutMessage API 向输出设备发送消息auxSetV olume API 设置附属设备卷AbortDoc API 终止一项打印作业AbortPath API 终止或取消DC中的一切路径AbortPrinter API 删除打印机缓冲文件AbortSystemShutdown API 停止系统工作AccessCheck API 检验客户访问权限AccessCheckAndAuditAlarm API 检验访问,产生声音或警报ActivateKeyboardLayout API 激活一个新的键盘设备AddAccessAllowedAce API 将ACCESS_ALLOWED_ACE加入ACL AddAccessDeniedAce API 将ACCESS_DENIED_ACE加入ACL AddAce API 将ACE加入一个已存在的ACLAddAtom API 将一个字符串加入本地原子表AddAuditAccessAce API 将SYSTEM_AUDIT_ACE加入ACL AddFontResource API 将一种字体加入字体表AddForm API 加入一个打印机窗体AddJob API 启动一个打印作业AddMonitor API 加入一个打印机管理器AddPort API 加入一个打印机端口AddPrintProcessor API 将打印处理器复制到打印机服务器中AddPrintProvidor API 加入一个打印机支持器AddPrinter API 在打印机服务器上建立一个打印机AddPrinterConnection API 为当前用户建立与打印机的联系AddPrinterDriver API 将打印机驱动程序复制到打印机服务器中AdjustTokenGroups API 使能/取消令牌中的群AdjustTokenPrivileges API 使能/取消令牌特权AdjustWindowRect API 计算所需窗口矩形的大小AdjustWindowRectEx API 计算所需窗口矩形的大小AdvancedDocumentProperties API 进行打印机高级设置AllocConsole API 为当前进程建立控制台AllocateAndInitializeSid API 分配和初始化SID AllocateLocallyUniqueId API 分配LUIDAngleArc API 按指定角度画弧AnimatePalette API 替换逻辑调色板中的项目AnyPopup API 标识弹出式窗口是否存在AppendMenu API 在菜单中加入新的项目Arc API 画弧ArcTo API 画椭圆弧AreAllAccessesGranted API 检查所有要求的访问AreAnyAccessesGranted API 检查任何要求的访问ArrangeIconicWindows API 排列最小化的子窗口AttachThreadInput API 将线索彼此相连Abort 函数引起放弃的意外处理Abs 函数绝对值函数AddExitProc 函数将一过程添加到运行时库的结束过程表中Addr 函数返回指定对象的地址AdjustLineBreaks 函数将给定字符串的行分隔符调整为CR/LF序列Align 属性使控件位于窗口某部分Alignment 属性控件标签的文字位置AllocMem 函数在堆栈上分配给定大小的块AllowGrayed 属性允许一个灰度选择AnsiCompareStr 函数比较字符串(区分大小写)AnsiCompareText 函数比较字符串(不区分大小写)AnsiLowerCase 函数将字符转换为小写AnsiUpperCase 函数将字符转换为大写Append 函数以附加的方式打开已有的文件ArcTan 函数余切函数AssignFile 函数给文件变量赋一外部文件名Assigned 函数测试函数或过程变量是否为空AutoSize 属性自动控制标签的大小===============================================BackupEventLog API 将事件记录保存至后备文件BackupRead API 产生磁带备份读BackupSeek API 产生磁带备份查寻BackupWrite API 产生磁带备份写Beep API 产生一个声调BeginDeferWindowPos API 创建一个窗口位置结构BeginPaint API 准备一个画图窗BeginPath API 开始一个路径等级BeginUpdateResource API 在可执行文件中开始资源文件更新BitBlt API 在设备描述表间复制位图作者:219.136.187.* 2005-12-26 16:05 回复此发言--------------------------------------------------------------------------------2 DELPHI下API简述BringWindowToTop API 恢复重叠窗BroadcastSystemMessage APIBuildCommDCB API 向DCB中传送设备定义字符串BuildCommDCBAndTimeouts API 建立COMMDCB并设置超时值BackgroundColor 属性背景色BeginThread 函数以适当的方式建立用于内存管理的线程BevelInner 属性控件方框的内框方式BevelOuter 属性控件方框的外框方式BevelWidth 属性控件方框的外框宽度BlockRead 函数读一个或多个记录到变量中BlockWrite 函数从变量中写一个或多个记录BorderStyle 属性边界类型BorderWidth 属性边界宽度Break 命令终止for、while、repeat循环语句Brush 属性画刷===============================================CallMsgFilter API 将消息传给消息过滤过程CallNamedPipe API 多管道操作CallNextHookEx API 调中链中的下一个挂钩过程CallWindowProc API 将消息传答窗口函数CancelDC API 取消指定DC上的任何悬而未决的操作CascadeWindows APIChangeClipboardChain API 从剪贴板查看窗口上删除一个窗口ChangeMenu APIChangeServiceConfig API 修改服务参数CharLower API 将字符或字符串变为小写CharLowerBuff API 将字符串变为小写CharNext API 转到字符串的下一个字符CharPrev API 转到字符串的上一个字符CharToOem API 把字符串转换成OEM字符CharToOemBuff API 把字符串转换成OEM字符CharUpper API 将字符或字符串变为大写CharUpperBuff API 将字符串变为小写CheckColorsInGamut API 检查设备调色板中是否有色彩CheckDlgButton API 用对话按钮修改复选标记CheckMenuItem API 修改菜单项的复选标记属性CheckMenuRadioItem APICheckRadioButton API 用单选按钮放置一个复选标记ChildWindowFromPoint API 确定包含有点的窗口ChildWindowFromPointEx APIChooseColor API 建立一个色彩选择对话框ChooseFont API 建立一个字体选择对话框ChoosePixelFormat APIChord API 画一条弦ClearCommBreak API 恢复字符传输ClearCommError API 允许出错后进行通信ClearEventLog API 消除事件记录ClientToScreen API 将客户点转换成屏幕坐标ClipCursor API 将光标限制在矩形内CloseClipboard API 关闭剪贴板CloseDesktop APICloseDriver API 光闭可装入的多媒体驱动程序CloseEnhMetaFile API 光闭增强型图元文件DC CloseEventLog API 光闭事件记录句柄CloseFigure API 光闭路径中的一个数CloseHandle API 关闭打开的对象句柄CloseMetaFile API 关闭WINDOWS图元文件DC ClosePrinter API 关闭打开的打印机CloseServiceHandle API 关闭Service Control Manager对象CloseWindow API 最小化窗口CloseWindowStation APIColorMatchToTarget API 控件预览设备描述表CombineRgn API 将两个区域合成一个区域CombineTransform API 将两个变换式结合在一起CommConfigDialog APICommDlgExtendedError API 返回出错数据CommandLineToArgv APICompareFileTime API 比较两个64位文件时间CompareString API 比较两个局部指定字符串ConfigurePort API 配置打印机端口ConnectNamedPipe API 等待要连接的客户机ConnectToPrinterDlg API 显示浏览对话并连接网络打印机ContinueDebugEvent API 使调试线索继续ControlService API 向服务器发送控件ConvertDefaultLocale API 将缺省局部转换为实际的局部值CopyAcceleratorTable API 复制一个加速表CopyCursor API 复制一个光标CopyEnhMetaFile API 复制增强型图元文件CopyFile API 复制文件作者:219.136.187.* 2005-12-26 16:05 回复此发言--------------------------------------------------------------------------------3 DELPHI下API简述CopyIcon API 复制图标CopyImage APICopyLZFile APICopyMetaFile API 复制Windows图元文件CopyRect API 复制矩形大小CopySid API 将SID复制到缓冲区中CountClipboardFormats API 返回剪贴板格式的数量CreateAcceleratorTable API 建立加速表CreateBitmap API 建立独立于设备的内存位图CreateBitmapIndirect API 用BITMAP结构建立位图CreateBrushIndirect API 用指定属性建立一个刷子CreateCaret API 为系统脱字号建立新的形状CreateColorSpace API 建立逻辑色影区域CreateCompatibleBitmap API 建立与DC相兼容的位图CreateCompatibleDC API 建立与指定DC相兼容的DC CreateConsoleScreenBuffer API 将句柄返回给新的屏幕缓冲区CreateCursor API 用指定的尺寸建立一个光标CreateDC API 建立设备描述表CreateDIBPatternBrush API 从DIB中建立图案刷子CreateDIBPatternBrushPt API 从位图中建立逻辑刷子CreateDIBSection APICreateDIBitmap API 从DIB spec中建立位图句柄CreateDesktop APICreateDialogIndirectParam API 从内存模块中建立非模态对话框CreateDialogParam API 建立非模态对话框CreateDirectory API 建立一个新目录CreateDirectoryEx API 用模板属性建立一个目录CreateDiscardableBitmap API 建立可放弃位图CreateEllipticRgn API 建立椭圆区域CreateEllipticRgnIndirect API 建立椭圆区域CreateEnhMetaFile API 建立增强型图元文件DC CreateEvent API 返回新事件对象一个句柄CreateFile API 建立、打开或截断文件CreateFileMapping API 返回新文件映像对象一个句柄CreateFont API 建立逻辑字体CreateFontIndirect API 用LOGFONT结构建立字体CreateHalftonePalette API 为设备描述表建立中间色调调色板CreateHatchBrush API 建立影线刷子CreateIC API 建立信息上下文CreateIcon API 建立有指定属性的图标CreateIconFromResource API 建立图标或光标CreateIconIndirect API 建立图标或光标CreateIoCompletionPort APICreateMDIWindow API 建立新的MDI窗口CreateMailslot API 建立MailsoltCreateMenu API 建立菜单CreateMetaFile API 建立WINDOWS图元DC CreateMutex API 将句柄返回给MUTEX对象CreateNamedPipe API 建立命名管道实例CreatePalette API 建立逻辑色彩调色板CreatePatternBrush API 从位图中建立图案刷子CreatePen API 建立逻辑画笔CreatePenIndirect API 用LOGPEN结构建立画笔CreatePipe API 建立匿名管道CreatePolyPolygonRgn API 建立由多边形组成的区域CreatePolygonRgn API 建立多边形区域CreatePopupMenu API 建立弹出式菜单CreatePrivateObjectSecurity API 分配并初始化保护SD CreateProcess API 建立新的进程和线索对象CreateProcessAsUser API 建立指定用户的新进程CreateRectRgn API 建立矩形区域CreateRectRgnIndirect API 用RECT结构建立一个区域CreateRemoteThread API 在另一进程中建立线索CreateRoundRectRgn API 建立圆角矩形CreateScalableFontResource API 建立带字体信息的资源文件CreateSemaphore API 将句柄返回给新的信号量CreateService API 建立服务对象CreateSolidBrush API 用指定颜色建立实心刷子CreateTapePartition API 建立新的磁带分区CreateThread API 建立新的线索CreateWindowEx API 建立窗口Caption 属性标签文字的内容ChangeFileExt 函数改变文件的后缀ChDir 函数改变当前目录Checked 属性确定复选框选中状态Chr 函数返回指定序数的字符CloseFile 命令关闭打开的文件Color 属性标签的颜色作者:219.136.187.* 2005-12-26 16:05 回复此发言--------------------------------------------------------------------------------4 DELPHI下API简述Columns 属性显示的列数CompareStr 函数比较字符串(区分大小写)Concat 函数合并字符串Continue 命令继续for、while、repeat的下一个循环Copy 函数返回一字符串的子串Cos 函数余弦函数Ctl3D 属性是否具有3D效果Cursor 属性鼠标指针移入后的形状DPtoLP API 将设备坐标转换位逻辑坐标DdeAbandonTransaction API 取消异步交互DdeAccessData API 访问DDE数据对象DdeAddData API 向DDE数据对象中加入数据DdeClientTransaction API 开始DDE数据事务DdeCmpStringHandles API 比较两个DDE字符串句柄DdeConnect API 建立与服务器的对话DdeConnectList API 建立多个DDE对话DdeCreateDataHandle API 建立DDE数据句柄DdeCreateStringHandle API 建立DDE字符串句柄DdeDisconnect API 终止DDE对话DdeDisconnectList API 取消DDE对话表列DdeEnableCallback API 使能或取消一个或多个DDE对话DdeFreeDataHandle API 释放DDE数据对象DdeFreeStringHandle API 释放DDE字符串句柄DdeGetData API 将数据从DDE数据对象中复制到缓冲区DdeGetLastError API 返回由DDEML函数设置的出错代码DdeImpersonateClient API DDE服务器模拟客户机DdeInitialize API 用DDEML登记应用程序DdeKeepStringHandle API 为字符串句柄增加可用记录DdeNameService API 登记取消服务器名称DdePostAdvise API 提示服务器向客户机发送建议数据DdeQueryConvInfo API 返回关于DDE对话的信息DdeQueryNextServer API 在对话表列中获得下一个句柄DdeQueryString API 将字符串句柄文本复制到缓冲区DdeReconnect API 重建DDE对话DdeSetQualityOfService API 指明服务的DDE质量DdeSetUserHandle API 将用户定义句柄与事务建立关联DdeUnaccessData API 释放DDE数据对象DdeUninitialize API 释放应用程序的DDEML资源DebugActiveProcess API 连接调试进程DebugBreak API 建立断点DefDlgProc API 提供缺省窗口消息进程DefDriverProc API 定义缺省消息处理器DefFrameProc API 缺省MDI框架窗口消息进程DefMDIChildProc API 缺省MDI子窗口消息进程DefWindowProc API 调用缺省窗口过程DeferWindowPos API 更新窗口位置结构DefineDosDevice API 定义、重定义或删除DOS的设备名DeleteAce API 从已存在的ACL中删除ACEDeleteAtom API 删除一个原子DeleteColorSpace API 删除指定色彩空间DeleteCriticalSection API 删除临界部分DeleteDC API 删除设备描述表DeleteEnhMetaFile API 取消增强图元文件句柄DeleteFile API 删除文件DeleteForm API 删除打印机窗体层差DeleteMenu API 删除菜单项DeleteMetaFile API 取消WINDOWS图元文件句柄DeleteMonitor API 删除打印机监视器DeleteObject API 从内存删除一个对象DeletePort API 删除打印机端口DeletePrintProcessor API 删除打印机处理器DeletePrintProvidor API 删除打印机提供者DeletePrinter API 删除打印机服务器上的打印机DeletePrinterConnection API 删除与打印机的连接DeletePrinterDriver API 删除打印机驱动程序DeleteService API 从SC MANAGER数据库中删除服务DeregisterEventSource API 光闭事件句柄DescribePixelFormat APIDestroyAcceleratorTable API 取消加速表DestroyCaret API 取消当前脱字号DestroyCursor API 取消CREA TECURSOR建立的光标DestroyIcon API 取消由CREA TEICON建立的图标DestroyMenu API 取消菜单并释放内存DestroyPrivateObjectSecurity API 删除被保护的服务器对象的SDDestroyWindow API 取消窗口DeviceCapabilities API 返回设备驱动程序的功能作者:219.136.187.* 2005-12-26 16:05 回复此发言--------------------------------------------------------------------------------5 DELPHI下API简述DeviceIoControl API 直接调用驱动程序DialogBoxIndirectParam API 从内存模块中建立对话框DisableThreadLibraryCalls APIDisconnectNamedPipe API 切断命名管道的服务器终端DispatchMessage API 向窗口发送消息DlgDirList API 填充目录列表框DlgDirListComboBox API 填充目录列表框DlgDirSelectComboBoxEx API 从目录列表框中返回用户选择DlgDirSelectEx API 从目录列表框中返回用户选择DoEnvironmentSubst APIDocumentProperties API 配置打印机设置DosDateTimeToFileTime API 将MS-DOS日期时间转换为64位格式DragAcceptFiles API 登记窗口是否接受托动文件的内容DragDetect APIDragFinish API 释放分配用于托动文件的内容DragObject APIDragQueryFile API 返回托动的文件名DragQueryPoint API 返回鼠标位置DrawAnimatedRects APIDrawCaption APIDrawEdge APIDrawEscape API 实现非GDI可画图设备方法DrawFocusRect API 用焦点风格画矩形DrawFrameControl APIDrawIcon API 在指定设备描述表中画一个图标DrawIconEx APIDrawMenuBar API 重显示菜单栏DrawState APIDrawText API 在矩形中画出已格式化文本DrawTextEx APIDrvGetModuleHandle API 获得可安装驱动程序的例子句柄DuplicateHandle API 复制对象句柄DuplicateIcon APIDuplicateToken API 复制访问令牌Date 函数返回当前的日期DateTimeToFileDate 函数将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr 函数将日期时间格式转换为字符串DateTimeToString 函数将日期时间格式转换为字符串DateToStr 函数将日期格式转换为字符串DayOfWeek 函数返回星期的数值Dec 函数递减变量值DecodeDate 函数将日期格式分解为年月日DecodeTime 函数将时间格式分解为时、分、秒、毫秒Delete 函数从字符串中删除子串DeleteFile 命令删除文件DiskFree 函数返回剩余磁盘空间的大小DiskSize 函数返回指定磁盘的容量Dispose 函数释放动态变量所占的空间DisposeStr 函数释放字符串在堆栈中的内存空间DitherBackground 属性使背景色的色彩加重或减少50%DragCursor 属性当鼠标按下时光标的形状DragMode 属性按动的作用方式DropDownCount 属性容许的显示数据项的数目===============================================作者:219.136.187.* 2005-12-26 16:05 回复此发言--------------------------------------------------------------------------------6 回复:DELPHI下API简述===============================================Ellipse API 画椭圆EmptyClipboard API 清空剪贴板并释放数据句柄EnableMenuItem API 使能、取消或使菜单项不可激活EnableScrollBar API 使能、取消滚动条EnableWindow API 设备窗口使能状态EndDeferWindowPos API 更新窗口的位置及大小EndDialog API 隐藏对话框EndDoc API 结束打印作业EndDocPrinter API 结束打印作业EndPage API 结束一页EndPagePrinter API 结束打印页EndPaint API 在指定窗口中标记图画结尾标志EndPath API 结束路径EndUpdateResource API 在可执行文件中结束资源更新EnterCriticalSection API 加入临界部分EnumCalendarInfo APIEnumChildWindows API 将子窗口句柄传给回调函数EnumClipboardFormats API 返回CLIPBOARD格式EnumDateFormats API 枚举局部指定数据格式EnumDependentServices API 枚举依赖于设备的服务EnumDesktopWindows APIEnumDesktops APIEnumEnhMetaFile API 用增强图元文件返回GDI调用EnumFontFamilies API 返回指定家族的字体EnumFontFamiliesEx API 返回指定家族的字体EnumFonts API 枚举指定设备上的字体EnumForms API 枚举所支持的打印机窗体EnumICMProfiles API 枚举可用的颜色分布EnumJobs API 获取打印作业信息EnumMetaFile API 用WINDOWS图元文件返回GDI调用EnumMonitors API 枚举可用监视器EnumObjects API 枚举设备描述表中的画笔和刷子EnumPorts API 枚举可用打印机端口EnumPrintProcessorDatatypes API 枚举打印机所支持的数据类型EnumPrintProcessors API 枚举已安装的打印机处理器EnumPrinterDrivers API 枚举已安装的打印机驱动程序EnumPrinterPropertySheets APIEnumPrinters APIEnumProps 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 关闭WINDOWS ExpandEnvironmentStrings 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 函数对有类型或无类型文件测试是否到文件尾作者:219.136.187.* 2005-12-26 16:07 回复此发言--------------------------------------------------------------------------------7 回复:DELPHI下API简述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 函数对指定的文件做写操作作者:219.136.187.* 2005-12-26 16:07 回复此发言--------------------------------------------------------------------------------8 回复:DELPHI下API简述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-RA TIO过滤器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 返回剪贴板所有者窗口句柄GetClipboardV iewer 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 为控制台输出获取代码页作者:219.136.187.* 2005-12-26 16:07 回复此发言--------------------------------------------------------------------------------9 回复:DELPHI下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 返回指向环境块的指针GetEnvironmentV ariable API 返回过程环境变量GetExitCodeProcess API 返回过程中断代码GetExitCodeThread API 返回线索中断代码GetExpandedName API 取压缩文件的原文件名GetFileAttributes API 返回文件属性GetFileInformationByHandle API 返回文件信息GetFileSecurity API 获取文件或目录安全信息GetFileSize API 返回指定文件大小GetFileTime API 返回文件64位时间GetFileTitle API 返回文件名GetFileType API 返回文件类型GetFileV ersionInfo API 返回文件的版本信息GetFileV ersionInfoSize 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 返回扩充出错代码作者:219.136.187.* 2005-12-26 16:07 回复此发言--------------------------------------------------------------------------------10 回复:DELPHI下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 返回过程窗口站句柄作者:219.136.187.* 2005-12-26 16:07 回复此发言--------------------------------------------------------------------------------11 回复:DELPHI下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 返回次规范数组地址。

如何在DELPHI中调用外部程序

如何在DELPHI中调用外部程序

如何在Delphi中调用外部程序本实例介绍如何在自己的程序中调用指定的Windows程序。

首先启动一个新的项目,在空白的窗体上添加4个TButton组件。

添加组件后的窗体如图1所示。

图1添加组件后的窗体其中WinExec按钮用于以WinExec函数来调用指定的Windows程序。

ShellExecute按钮用于以ShellExecute函数来调用指定的Windows程序。

CreateProcess按钮和TerminateProcess按钮用于实现对被调用程序更全面的操作,前者用于调用指定的Windows 程序,而后者则用于终止被调用的Windows程序。

以WinExec函数的方式来调用指定的Windows程序的响应代码如下:其中WinExec函数的第1个参数表示了被调用程序的路径和名称,第2个参数表示了程序的显示方式。

以ShellExecute函数的方式来调用指定的Windows程序的响应代码如下:其中ShellExecute用于打开与指定文件关联在一起的程序文件。

第1个参数用于指定一个窗口的句柄;第2个参数指定了程序运行的类别,如’Open’或’Print’;第3个参数指定了想用关联程序打印或打开的一个程序名或文件名;如果第3个参数中指定了一个可执行文件,那么第4个参数就是传递给执行程序的参数;第5个参数指定了可执行程序的完整路径。

最后一个参数用于设定程序运行方式。

下面来介绍利用CreateProcess函数和TerminateProcess函数如何实现对被调用程序更全面的操作。

首先定义3个全局变量:利用CreateProcess函数调用指定程序的响应代码如下:调用CreateProcess函数激活C:\WINNT\Notepad.exe程序后,把它的进程信息存储在变量PI中,然后通过下面的语句来关闭本实例打开的C:\WINNT\Notepad.exe程序:程序代码如下:保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

Delphi调用外部程序详解[宝典]

Delphi调用外部程序详解[宝典]

Delphi调用外部程序详解Delphi调用外部程序详解(Shellexecute,Winexec)2008-10-0411:27Delphi调用外部程序详解WinExec主要运行EXE文件。

如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW);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:用于指定默认目录。

●ShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。

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。

DELPHIXE移动开发调用的例子方法

DELPHIXE移动开发调用的例子方法

调用的例子方法:usesAndroidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, ; procedure Call_URI(const AAction : JString;const AURI: string);varuri: Jnet_Uri;Intent: JIntent;beginuri := StrToJURI(AURI);Intent := TJIntent.JavaClass.init(AAction, uri);{Intent.putExtra()如果是要发短信等复杂的应用,需要传递各种其他的参数.要用到Intent.putExtra()传递多个参数.这里只封装最简单的,具体Intent.putExtra()的用法,可以查询Java的资料.大把的}SharedActivityContext.startActivity(Intent);end;//使用例子://打电话Call_URI(TJIntent.JavaClass.ACTION_CALL, 'tel:137114553XX');//打开地图显示某个坐标点Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'geo:38.899533,-77.036476');//发送电子邮件Call_URI(TJIntent.JavaClass.ACTION_SENDTO, 'mailto:wr960204@');//播放音乐Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'file:///sdcard/download/最炫民族风.mp3');调用的例子方法:===========================我是分割线==================================================android 系统常用URI:android 系统常用URI:android 系统常用URI:android 系统常用URI:显示网页:1. Uri uri = Uri.parse("");2. Intent it = new Intent(Intent.ACTION_VIEW,uri);3. startActivity(it);显示地图:1. Uri uri = Uri.parse("geo:38.899533,-77.036476");2. Intent it = new Intent(Intent.Action_VIEW,uri);3. startActivity(it);路径规划:1. Uri uri = Uri.parse("/maps?f=d&saddr=startLat startLng&daddr=endLat endLng&hl=en");2. Intent it = new Intent(Intent.ACTION_VIEW,URI);3. startActivity(it);拨打电话:调用拨号程序1. Uri uri = Uri.parse("tel:xxxxxx");2. Intent it = new Intent(Intent.ACTION_DIAL, uri);3. startActivity(it);1. Uri uri = Uri.parse("tel.xxxxxx");2. Intent it =new Intent(Intent.ACTION_CALL,uri);3. 要使用这个必须在配置文件中加入发送SMS/MMS调用发送短信的程序1. Intent it = new Intent(Intent.ACTION_VIEW);2. it.putExtra("sms_body", "The SMS text");3. it.setType("vnd.android-dir/mms-sms");4. startActivity(it);发送短信1. Uri uri = Uri.parse("smsto:0800000123");2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);3. it.putExtra("sms_body", "The SMS text");4. startActivity(it);发送彩信1. Uri uri = Uri.parse("content://media/external/images/media/23");2. Intent it = new Intent(Intent.ACTION_SEND);3. it.putExtra("sms_body", "some text");4. it.putExtra(Intent.EXTRA_STREAM, uri);5. it.setType("image/png");6. startActivity(it);发送Email1.2. Uri uri = Uri.parse("mailto:xxx@");3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);4. startActivity(it);1. Intent it = new Intent(Intent.ACTION_SEND);2. it.putExtra(Intent.EXTRA_EMAIL, "me@");3. it.putExtra(Intent.EXTRA_TEXT, "The email body text")4. it.setType("text/plain");5. startActivity(Intent.createChooser(it, "Choose Email Client"));1. Intent it=new Intent(Intent.ACTION_SEND);2. String[] tos={"me@"};3. String[] ccs={"you@"};4. it.putExtra(Intent.EXTRA_EMAIL, tos);5. it.putExtra(Intent.EXTRA_CC, ccs);6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");8. it.setType("message/rfc822");9. startActivity(Intent.createChooser(it, "Choose Email Client"));添加附件1. Intent it = new Intent(Intent.ACTION_SEND);2. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");3. it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/mysong.mp3[/url]");4. sendIntent.setType("audio/mp3");5. startActivity(Intent.createChooser(it, "Choose Email Client"));播放多媒体1.2. Intent it = new Intent(Intent.ACTION_VIEW);3. Uri uri = Uri.parse("[url=]file:///sdcard/song.mp3[/url]");4. it.setDataAndType(uri, "audio/mp3");5. startActivity(it);1. Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");2. Intent it = new Intent(Intent.ACTION_VIEW, uri);3. startActivity(it);Uninstall 程序1. Uri uri = Uri.fromParts("package", strPackageName, null);2. Intent it = new Intent(Intent.ACTION_DELETE, uri);3. startActivity(it);//调用相册public static final String MIME_TYPE_IMAGE_JPEG = "imageUri packageURI = Uri.parse("package:"+wistatmap);Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);startActivity(uninstallIntent);install apkUri installUri = Uri.fromParts("package", "xxx", null);returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);play audioUri playUri = Uri.parse("[url=]file:///sdcard/download/everything.mp3[/url]");returnIt = new Intent(Intent.ACTION_VIEW, playUri);//发送附件Intent it = new Intent(Intent.ACTION_SEND);it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/eoe.mp3[/url]");sendIntent.setType("audio/mp3");startActivity(Intent.createChooser(it, "Choose Email Client"));//搜索应用Uri uri = Uri.parse("market://search?q=pname:pkg_name");Intent it = new Intent(Intent.ACTION_VIEW, uri);startActivity(it);//where pkg_name is the full package path for an application//进入联系人页面Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(People.CONTENT_URI);startActivity(intent);//查看指定联系人Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);//info.id联系人ID Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(personUri);startActivity(intent)。

delphi 函数里面调用窗口的方法

delphi 函数里面调用窗口的方法

delphi 函数里面调用窗口的方法(最新版3篇)《delphi 函数里面调用窗口的方法》篇1在Delphi 中,如果在函数内部需要调用窗口的方法,可以使用以下两种方式:1. 使用窗体的方法名称直接调用:如果在函数内部需要调用窗口的方法,可以使用窗体的方法名称直接调用。

例如,如果窗体名为Form1,需要调用其方法Name1,则可以在函数内部使用以下代码进行调用:```1;```这种方式调用窗口方法时,需要保证窗体已经初始化,否则会出现异常。

2. 使用窗体的方法指针进行调用:如果在函数内部需要调用窗口的方法,可以使用窗体的方法指针进行调用。

例如,如果窗体名为Form1,需要调用其方法Name1,则可以在函数内部使用以下代码进行调用:```varMethod: TMethod;begin// 获取窗体Form1 的方法指针Method := Form1.MethodName1;// 调用方法Method();end;```这种方式调用窗口方法时,不需要保证窗体已经初始化,因为方法指针是在运行时获取的。

《delphi 函数里面调用窗口的方法》篇2在Delphi 中,如果在函数内部需要调用窗口的方法,可以使用以下方式:1. 在函数内部创建一个窗口对象,然后调用窗口的方法。

例如:```function CallWindowMethod(Window: TWindow): Boolean;varMethodName: string;Method: TMethod;begin// 获取窗口类的方法MethodName := "WindowMethod";Method := Window.GetType().GetMethod(MethodName);if Method = nil thenraise Exception.Create("Window method not found");// 调用窗口方法Method.Invoke(Window, []);// 返回布尔值表示是否成功调用Result := True;end;```2. 在函数内部使用全局变量或类变量保存窗口对象,然后调用窗口的方法。

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中调用API函数两例

在Delphi中调用API函数两例
叫 0eu e 1F 丑 FrC et (e&rT oe t cdr T I缸 】 omra eS n : ̄j c}
b i eg n
T嘴r i 组件弹出0 T啪r n i 事件的代码编辑窗口, 按如下所示添加
代码:
p r
v盯
Fm 1Tar mr( n e : be t. o ieHie S d rT dcj e 0
反状 态 直 至 F一 次按 键为 止 。通 常键 盘 的状 态键 包 括
键盘缓冲区每一位都有特定的格式, 对于状态键来说 最
低位是 1 时表示状态键处于 状态, 河 以使用 d l 提供的 话 e曲i Od d 0函数来确定这一位的状态 为了使程序显示正确的状态
[ L c] [co lck ,Cp L k和[ne t这四个钝 在编  ̄mok ,S rlLc ] [ sc ] Isr ] a c
维普资讯 hБайду номын сангаасtp://
从Cm oe t eDn n 模板W n5 i9 页中选择 sa uB r tt sa 组件. 按如下
所 示设 置 它 的属 性
M in aB to g lo tm I ih 0 l gt2 e
的左下角. 下这段代码说明了如何使用A I P 改变 d ll 中提 ep i 1 示属性 的一 些特 性。有一 点需要 声明的是代码中使用到的
常量按镑名称
v IS ̄ [ne t键 l ( NE T I r] s
当今不少流行软件的编辑窗 口( 包括D] h的代丹编辑窗 e i p 口) 的底音 都有一个状态条用来显示一些状态信息, 比如当前光
标的位置、 页码消息和状态键的状态。 什么是状态键呢 ?我们
v一 K

Delphi中的函数调用模式

Delphi中的函数调用模式

Delphi中的函数调用模式在用Delphi3 0开发软件时,出现了硬件驱动程序(DLL)中的函数和过程不能正常调用的问题,该硬件由英国Schlumberger公司生产,驱动程序用汇编语言编写的。

其《编程指南》给出的Microsoft C的示范程序均能正常运行。

但运行此软件时现出的错误提示为:Access violationat address XXXXXXXX in module'…·经仔细分析,才发现问题出现在函数调用模式上Delphi3 0支持五种调用模式:register、cdec L pascal、stdcall和safecall0 根据调用模式的不同,参数可以通过CPU的寄存器或堆校传递给函数和过程。

reg ister模式使用CPU的三个寄存器传递参数,而其它模式则用堆校来传递参数。

在register和pascal模式下从左至右传递参数,即参数表中最左边的参数最先被求值并传递,而最右边的参数最后求值并传递。

另三种模式cdecl、std call和Jsafecall则从右至左传递参数。

这些模式中除了cd ecl外,都是由过程和函数在返回时清除堆校中的参数,而对于cdecl模式,需由调用者在调用结束时清除堆校中的参数。

如何选择调用模式,有以下三条规则:1 Delphi30使用register模式作为缺省调用模式以提高运行效率。

2 如果有调用关系的几个模块是用不同语言编写的,其接口应使用stdcall模式。

3 如果要实现双界面函数和过程,应使用safec all模式。

所以解决我们的问题只要选用stdcall模式即可Schlumberger公司的《编程指南》上在Microsoft C环境下的DLL函数说明(仅举两例)为:void(FAR PASCAL 士Imp Connect)(unsigned s hortfar士,shortfar士);void(FAR PASCAL 士Imp Init)(shortfar士,s hortfar士);相应的在Delphi30下DLL函数引入说明为:procedure ImpConnect(var Car dA ddress:wor d; varCardHandle:smallint);stdcall;procedure Imp Init(varPollTab:smallint;var ErrorFlag:smallint;var Car dH andle:smallint);st dcal l;这样修改以后,程序即可正常运行(原来我们没有说明调用模式,即使用缺省的register模式),由此我们也可得出个经验:对些高版本的新软件,使用时要注意改进和扩充,并经常看看帮助文件,定会大有禅益。

DELPHI中使用API函数详解

DELPHI中使用API函数详解
end;
⑤语法:IsWindow(hWnd: HWND): BOOL;
单元:windows.pas
作用:判断一个窗口句柄是否有效
返回值:有效返回TRUE,否则返回FALSE
示例:
procedure TForm1.Button1Click(Sender: TObject);
var
TheText: PChar;
TextLen: Integer;
begin
TextLen:=GetWindowTextLength(Form1.Handle);
GetMem(TheText,TextLen);
GetWindowText(Form1.Handle,TheText,TextLen+1);
EnableWindow(Edit1.Handle,FALSE);
Button1.Caption:=‘Enable Window';
Edit1.Text:=‘This window is disabled';
end
else
begin
EnableWindow(Edit1.Handle,TRUE);

返回值:BOOL,如果返回真,WINDOWS已经禁止,否则返回假
示例:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (IsWindowEnabled(Edit1.Handle)) then
begin
但在windows 95中不会忽略
示例:
procedure TForm1.Timer1Timer(Sender: TObject);

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直接用WindowsAPI编程讲解

Delphi直接用WindowsAPI编程讲解

Delphi程序员往往习惯了用VCL元件编程,其实Delphi也能进行基于WINDOWS API SDK的编程。

而且用Delphi在某些方面效果似乎比用VisualC++效果还要好。

比如本例程,用Delphi 6编译出来只有9216字节(9k)而同样的Visual C++程序却有16896字节(17k)。

(此例程是笔者从网上下载的c++源码例程,其中有c源程序,和编译好的.exe文件。

源代码经笔者改写成Delphi代码。

)这证明Delphi编译器的优化效果非常好。

API是(Application Programming Interface)的缩写,意为应用编程界面,它包含了编写Windows所有函数、数据类型。

VCL就是以它为基础进行封装的,它是应用程序在Windows 上运行的基础。

通过熟悉使用WINDOWS API SDK直接编制WINDOWS程序,程序员将对WINDOWS的执行机制有更深入的了解,从而编写出更高效、实用的程序。

下面是我们用API函数建立的第一个程序:1 : program HELLOWIN;2 :3 : uses4 : windows, Messages ,mmsystem;5 :6 :7 :8 : var9 : sz_appname:array [0..8] of char='HelloWin'#0;10 : Win_Class: WNDCLASSEX; //窗口类11 : w_Handle,inst:HWND;//w_Handle窗口句柄、程序句柄12 : w_msg:TMSG; //消息数据13 :14 : function WindowProc(h_Wnd,u_Msg,w_Param,l_Param: LONGINT):LRESULT;stdcall;15 : //回调函数16 : var p_hdc:hdc;17 : p_rect:trect;18 : ps : PAINTSTRUCT ;19 : begin20 :21 :22 : case u_msg of23 : WM_DESTROY : PostQuitMessage (0);24 : WM_CREATE : PlaySound (pchar('hellowin.wav'#0), 0, SND_FILENAME or SND_ASYNC) ;25 : WM_PAINT :begin26 : p_hdc := BeginPaint (h_wnd, ps) ;27 : GetClientRect (h_wnd, p_rect);28 : DrawText (p_hdc, pchar('Hello, Windows!'#0), -1, p_rect,29 : DT_SINGLELINE or DT_CENTER or DT_VCENTER) ;30 : EndPaint (h_wnd, ps) ;31 : end;32 :33 : end;34 : Result := DefWindowProc(h_Wnd, u_Msg, w_Param, l_Param);35 : end;36 :37 :38 :39 :40 : begin41 : Inst := hInstance;42 : win_class.cbSize := sizeof (win_class) ;43 : win_class.style := CS_HREDRAW or CS_VREDRAW ;44 : win_class.lpfnWndProc := @WindowProc ;45 : win_class.cbClsExtra := 0 ;46 : win_class.cbWndExtra := 0 ;47 : win_class.hInstance := Inst ;48 : win_class.hIcon := LoadIcon (0, IDI_APPLICATION) ;49 : win_class.hCursor := LoadCursor (0, IDC_ARROW) ;50 : win_class.hbrBackground := HBRUSH (GetStockObject (WHITE_BRUSH)) ;51 : win_class.lpszMenuName := nil ;52 : win_class.lpszClassName := @sz_AppName ;53 : win_class.hIconSm := LoadIcon (0, IDI_APPLICATION) ;54 : RegisterClassEx(Win_Class);55 : w_Handle:=CreateWindow(@sz_appname, pchar('The Hello Program'#0),56 : WS_OVERLAPPEDWINDOW,200,200,300,300,0,0,57 : Inst,nil) ;58 :59 : ShowWindow (w_Handle, SW_SHOWNORMAL) ;60 : UpdateWindow(w_Handle);61 :62 :63 : while(GetMessage(w_msg, 0, 0, 0)) do64 : begin65 : TranslateMessage(w_msg);66 : DispatchMessage(w_msg);67 : end;68 :69 :70 : end.以上源程序读者可以直接拷贝到记事本中,把行标去掉后另存为.dpr文件,然后用Delphi直接打开,就可以编译运行,之后你就会听到电脑向你发出的问候。

delphi 引用方法

delphi 引用方法

delphi 引用方法(实用版3篇)目录(篇1)1.Delphi 简介2.Delphi 引用方法的概念3.Delphi 引用方法的步骤4.Delphi 引用方法的实例5.总结正文(篇1)【1.Delphi 简介】Delphi 是一种编程语言,它是由 Borland 公司开发的,基于 Object Pascal 语言。

Delphi 被广泛应用于 Windows 应用程序开发,因其简洁的语法和强大的功能而受到程序员们的喜爱。

【2.Delphi 引用方法的概念】在 Delphi 中,引用方法是指在当前对象中引用另一个对象的方法,被引用的方法称为客方法,引用客方法的对象称为主对象。

引用方法可以用于实现类的多态性,使得类的行为可以根据实际对象的类型而有所不同。

【3.Delphi 引用方法的步骤】要使用 Delphi 引用方法,需要遵循以下步骤:1) 在主对象的定义中,使用“uses”关键字引用客方法所在的单元;2) 在主对象中,使用客方法的完全限定名调用该方法。

【4.Delphi 引用方法的实例】例如,我们有一个名为“TPerson”的类,其中包含一个名为“ShowInfo”的方法,用于显示个人信息。

现在,我们希望在另一个名为“TStudent”的类中引用“TPerson”的“ShowInfo”方法,以便在学生类中显示学生的个人信息。

我们可以按照以下步骤实现:1) 在“TStudent”类的定义中,使用“uses”关键字引用“TPerson”单元;2) 在“TStudent”类中,使用“TPerson.ShowInfo”调用“ShowInfo”方法。

这样,当我们创建一个“TStudent”对象并调用其“ShowInfo”方法时,将会调用“TPerson”类中的“ShowInfo”方法,从而实现显示学生个人信息的功能。

【5.总结】Delphi 引用方法为程序员提供了一种灵活的方法来实现类的多态性,使得类的行为可以根据实际对象的类型而有所不同。

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函数1. API之⽹络函数WNetAddConnection 创建同⼀个⽹络资源的永久性连接WNetAddConnection2 创建同⼀个⽹络资源的连接WNetAddConnection3 创建同⼀个⽹络资源的连接WNetCancelConnection 结束⼀个⽹络连接WNetCancelConnection2 结束⼀个⽹络连接WNetCloseEnum 结束⼀次枚举操作WNetConnectionDialog 启动⼀个标准对话框,以便建⽴同⽹络资源的连接WNetDisconnectDialog 启动⼀个标准对话框,以便断开同⽹络资源的连接WNetEnumResource 枚举⽹络资源WNetGetConnection 获取本地或已连接的⼀个资源的⽹络名称WNetGetLastError 获取⽹络错误的扩展错误信息WNetGetUniversalName 获取⽹络中⼀个⽂件的远程名称以及/或者UNC(统⼀命名规范)名称WNetGetUser 获取⼀个⽹络资源⽤以连接的名字WNetOpenEnum 启动对⽹络资源进⾏枚举的过程2. API之消息函数BroadcastSystemMessage 将⼀条系统消息⼴播给系统中所有的顶级窗⼝GetMessagePos 取得消息队列中上⼀条消息处理完毕时的⿏标指针屏幕位置GetMessageTime 取得消息队列中上⼀条消息处理完毕时的时间PostMessage 将⼀条消息投递到指定窗⼝的消息队列PostThreadMessage 将⼀条消息投递给应⽤程序RegisterWindowMessage 获取分配给⼀个字串标识符的消息编号ReplyMessage 答复⼀个消息SendMessage 调⽤⼀个窗⼝的窗⼝函数,将⼀条消息发给那个窗⼝SendMessageCallback 将⼀条消息发给窗⼝SendMessageTimeout 向窗⼝发送⼀条消息SendNotifyMessage 向窗⼝发送⼀条消息3. API之⽂件处理函数CloseHandle 关闭⼀个内核对象。

怎样在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调用百度定位API(根据IP获取城市及GPS信息等)

DELPHI调用百度定位API(根据IP获取城市及GPS信息等)

DELPHI调⽤百度定位API(根据IP获取城市及GPS信息等)缘由:因智能助理在⽤户说出“天⽓如何”时,需要⾃动获取城市,所以这⾥需要根据⽤户IP⾃动获取城市,所以有了这篇⽂章QQ508882988uses SuperObject;function GetLocInfByIP_BaiDu(sIP, sServerAK: string): string;var sUrl, ak, sIPS, sR: string;vJson, vj: ISuperObject;response: TStringStream;FHttp: TIdHTTP;beginsR := '';ak := '9fe55cc6597c6b331754b19a048accd4';if sIP <> '' then beginsIPS := '&ip='+ sIP;end else beginsIPS := '';end;sUrl := '/location/ip?ak='+sServerAK + sIPS;response := TStringStream.create('', tencoding.utf8);FHttp := TIdHttp.Create(nil);sR := FHttp.Post(sUrl, response);FHttp.Free;vJson := SO((sr));//我这⾥只⽤到城市,所以如下取出,各位客官可⾃⾏根据情况获取result := SO(SO(vJson.S['content']).S['address_detail']).S['city'];end;返回的结果json串形如下:{address: "CN|北京|北京|None|CHINANET|1|None", #地址content: #详细内容{address: "北京市", #简要地址address_detail: #详细地址信息{city: "北京市", #城市city_code: 131, #百度城市代码district: "", #区县province: "北京市", #省份street: "", #街道street_number: "" #门址},point: #百度经纬度坐标值{x: "116.39564504",y: "39.92998578"}},status: 0 #返回状态码}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DELPHI中如何调用API,可举例说明
第一部分Delphi知识1. 如果一个元件希望放到IDE的元件面板上,它必须从________类派生,如果一个元件能作为其它元件的容器,它必须从_____________类派生,如果一个元件在运行时可见,它必须从___________________类派生(A)TGraphicControl
(B)TWinContr
1、rtl70.bpl是什么?有什么用?
2、delphi的Package相对dll有什么优点?
3、以下的记录(结构)变量在内存占多少字节?type a = packed record v1: Byte; v2: Word; v3: string[16]; v4: Double; v5: string; v6: TForm; end;
4、以下的写法是否正确?type a
1.您为什么选择软件开发这个行业?(30字左右简写);
2.如果有您解决不了的软件问题您会采取什么样的解决措施;
3.a.请您写出Object Pascal所支持的数据类型;b.请您写出Shl、Shr、Xor、Not 的数学表示法;
4.请您写出VCL结构层次(以TObject开始,最少五层);5
二.是非题(共20道)1.从主菜单上选择Project|Syntax Check 菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。

()2.Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。

()3.粘贴时,如果作为容器的组件已被选择,
剪贴
一.选择题(共40道)1.用户开发程序时需要经常在窗体和编辑器窗口之间来回切换,可使用快捷键()。

A、F12和F11 B、F12和F13 C、F12和Ctrl+F12 D、F12和Alt+F12 E、F12和Shift+F12 2.某函数如下:Function check(n,k:Integer):Integer; Var m:Integer; Beg
编程语言:delphi7.0或Vc++6.0 时间:4小时内环境:可参考帮助文档,但不能上网查资料1、编程查找指定目录下所有EXE 文件,并将其全路径存入Result.txt中,要求用递归。

2、采用SOCKET(可用SOCKET API或delphi Socket控件)实现点对点传输大文件,要求不能掉。

相关文档
最新文档