【温故Delphi】GAEA用到Win32 API目录

  Delphi是Windows平台下著名的快速应用程序开发工具,它在VCL中封装并使用了大量的Win32 API。

  GAEA基于VCL开发的工具类产品,在程序中使用了大量的Win32 API,将经常用到或涉及到的API罗列并梳理一下。

系统API

  1、事件对像:CreateEvent、setevent、ResetEvent和WaitForSingleObject;

  2、互斥体:CreateMutex,OpenMutex和ReleaseMutex

  3、时间:GetTickCount,Sleep,GetCPUTickCount

  4、QueryPerformanceFrequency,QueryPerformanceCounter,PerformanceCounter,GetProcessorInfo

  5、DLL相关:LoadLibrary,FreeLibrary

  6、GetLastError

进程API

  1、CreateProcess,ShellExecute

  2、ExitProcess,TerminateProcess,GetExitCodeProcess

  3、GetProcessID

  4、其他:CreateToolhelp32Snapshot,Process32First,Process32Next

窗口API

  1、EnableWindow,IsWindowEnabled,EnumThreadWindows

  2、LockWindowUpdate:锁定指定窗口,禁止它更新,同时只能有一个窗口处于锁定状态

  3、FindWindow:查找窗口,GetWindowLong:该函数获得有关指定窗口的信息

文件API

  1、GetTempFileName

  2、CreateFile,CopyFile,DeleteFile,OpenFile

  3、GetFileAttributes:获取文件属性,

  4、FindFirstFile,FindNextFile,遍历文件夹查找文件

【温故Delphi】GAEA用到Win32 API目录

时间: 2024-07-30 05:47:58

【温故Delphi】GAEA用到Win32 API目录的相关文章

【温故Delphi】双击工程文件打开软件

问题描述 大部分软件都有鼠标双击文件,就能打开所关联的软件并打开所选工程,这是如何做到的呢? 把文件关联到一个程序中,双击文件来启动程序,那么这个文件名称就是这个程序的命令行的一个参数. 所以要想实现双击工程文件打开软件,在程序运行入口必须要处理命令行. 代码说明 1 begin 2 Application.Initialize; 3 CreateMainForm(); 4 //GetCommandLine为Win32 API,用于获取命令行内容 5 HandleCommandLine(GetC

【温故Delphi】Win32API之GetTempFileName

所遇问题 新建的算量工程文件暂时保存到临时文件中,代码中调用了Win32 API——GetTempFileName 但在一台笔记本上,函数返回了一个空字符串! 为了查明原因想到了好用的GetLastError——返回错误信息. 结果错误信息为“拒绝访问”,这让我很快想到了传入文件夹用户权限问题. 经过检验,果然当前用户没有传入文件夹的写权限. 1 function GetTempFileA(const APrefix: string; const APath: string): string;

【温故Delphi】Win32API之CreateMutex

解决问题 如何让一个软件在一台机器上只能运行一个实例呢?这个问题用专业术语就是进程互斥.这个问题可以通过CreateMutex来解决. 进程互斥的核心思想:进程在启动时首先检查是否存在此进程实例,如果没有则创建进程并设置进程实例已存在的标记. CreateMutex用于创建一个互斥体: OpenMutex为现有的一个已命名互斥体对象创建一个新句柄: ReleaseMutex释放由线程拥有的一个互斥体的控制权. 具体实现代码如下: 1 constructor TUniqueAppInstance.

win32 api

Microsoft在StrSafe.h定义了新的安全字符串函数 为了防止缓冲区溢出,在将一个可写缓冲区作为参数传递时,必须传递它的大小,大小可以有_countof获得, _countof获取字符数, sizeof获取字节数 for example: int a[10]; // _countof(a) == 10 _CrtSetReportMode(_CRT_ASSERT, 0); // in head of program 可以禁止C run time可能触发的debug assertion f

使用win32 API 实现串行通信 (一)

本文基于wince平台,使用win32 API实现串行通信 1.打开和关闭串行端口 串行端口设备使用CreateFile函数打开,所使用的名称要遵循特定的格式,即3个字符 COM后紧跟要打开的COM端口号,再加个冒号,冒号是Windows CE所必需的. 如,hser=CreateFile(TEXT(“COM1:”),GENERIC_READ|GENERIC_WRITE,0, NULL,OPEN_EXISTING,0,NULL),为以可读可写的方式打开COM1端口. 调用CloseHandle函

delphi调用百度语音识别REST API

delphi调用百度语音识别REST API-20160616-感谢 魔术猫 和 DelphiTeacher 兄的帮助解决了返回中文乱码的问题!-注:语音的录音格式目前只支持评测8k/16k采样率16bit位深的单声道语音 压缩格式支持:pcm(不压缩).wav.opus.speex.amr.x-flac var sUrl, sLan, cuid, apiKey, secretKey, token, sR: string;  response: TStringStream; Stream: TF

C#调用Win32 api时的内存操作

一般情况下,C#与Win 32 Api的互操作都表现的很一致:值类型传递结构体,一维.二维指针传递IntPtr.在Win32 分配内存时,可以通过IntPtr以类似移动指针的方式读取内存.通过IntPtr移动时,需要考虑指针的计算.规则总体上来说显得一致,但Win32 Api庞杂,总有一些令人困惑的函数.比如GetIpForwardTable.该函数的功能是返回Ip(v4)的路由表.在win32 的结构体定义如下: DWORD GetIpForwardTable( _Out_ PMIB_IPFO

【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)

注:这里的服务是指Windows 服务. 市面上常见的安装一个服务的方法大概有这么几种: 用Process类调用sc.exe.Installutil.exe等外部工具进行安装.极不推荐,须知创建一个进程开销不小,并且依赖外部工具有损程序健壮性 使用TransactedInstaller和AssemblyInstaller安装类进行安装.不推荐,既然都用托管方法,何不用更好的方法呢 用ManagedInstallerClass.InstallHelper进行安装.这个我认为是托管方法中首选的方法,

通过 WIN32 API 实现嵌入程序窗体

写了一个不使用 COM, 而是通过 WIN32 API 实现的示例, 它把写字板程序嵌在了自己的一个面板中. 这么做可能没有实际意义, 因为两个程序之前没有进行有价值的交互, 这里仅仅是为了演示这么做到, 以下是详细注释过的主要源代码. 我把它封装到一个类中: [csharp] view plaincopy using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys