WinAPI: GetLogicalDriveStrings

//声明:GetLogicalDriveStrings(
 nBufferLength: DWORD; {缓冲区大小}
 lpBuffer: PAnsiChar  {缓冲区}
): DWORD;

//缓冲区的结果是这样储存的: 譬如 A 驱动器会表示为 A:\ 后面 隔一个空字符, 依次向后;

//所以每个驱动器会占 4 字节.

//举例:procedure TForm1.FormCreate(Sender: TObject);
var
 PStr: PChar;
 DriveArr: array[0..4*26] of Char; {每个驱动器 4 字节, 最多 26 个驱动器}
begin
 GetLogicalDriveStrings(SizeOf(DriveArr), DriveArr); {函数调用就这么简单}
 PStr := DriveArr;         {因为 PStr 是 #0 结尾的, 所以现在它指向的 是前 4 个字节}
 Memo1.Clear;           {清空 Memo}
 While PStr<>nil do
 begin
  Memo1.Lines.Add(PStr);
  Inc(PStr,StrLen(PStr)+1);    {字符串指针是可以运算的, 这里相当于指针移 动 4 个位置, 而指向下一个}
  if(Byte(PStr[0]) = 0) then PStr := nil; {如果下一个的第一个字符就是空, 就 是没有了, While 等着 nil 终止呢}
 end;
end;

//效果图:

时间: 2024-09-14 06:07:50

WinAPI: GetLogicalDriveStrings的相关文章

Delphi与Windows API专题

Delphi调用WinAPI 字符及字符串函数(15): CharNext.CharPrev Delphi调用WinAPI 字符及字符串函数(14): CharToOem.OemToChar Delphi调用WinAPI 字符及字符串函数(13) Delphi调用WinAPI 字符及字符串函数(12): lstrlen - 串长度 Delphi调用WinAPI 字符及字符串函数(11) Delphi调用WinAPI 字符及字符串函数(10) Delphi调用WinAPI 字符及字符串函数(9)

调用WinApi实现邮槽通信C/S实例

Just a test.高手无视. 服务端: //Code by Pnig0s1992 //Date:2012,3,19 #include <stdio.h> #include <Windows.h> VOID UseMailSlot(LPTSTR lpMailSlotName); int main(int argc,char **argv) { LPTSTR lpSlotName = TEXT("\\\\.\\mailslot\\first_slot"); U

c#使用WINAPI进行读取写入配置文件

我们c#读写配置文件通常用IO对文件进行读写.我觉得使用winapi的Kernel32.dll 对ini文件读取更好更方便一些 对ini文件读写 我们可以使用Kernel32.dll 中的WritePrivateProfileString(写入),GetPrivateProfileString(读入字符串) ,GetPrivateProfileInt(读入整型值)三个方法.下面我介绍着三个方法 一.将信息写入.INI文件中. 1.所用的WINAPI函数为: WritePrivateProfile

什么是WinAPI

视窗操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的内核应用程序编程接口的称法.它设计为由C/C++程序调用,而且它也是应用软件与Windows系统最直接的交互方式.而大多数驱动程序所需要的对Windows系统的更底层次访问接口,由所用版本的Windows的Native API来提供接口. Windows有一个软件开发包(SDK, software development kit)提供相应的文档和工具,以使程序员开发使用Wi

如何使用C#操作WinAPI

Windows API是对Windows操作系统的API函数,在C#中调用Windows API的实质是托管代码对非托管代码的调用. 主要使用的格式就是:   using System.Runtime.InteropServices; namespace TestWinAPI1 {class Program {static void Main(string[] args) { Beep(100, 100); } [DllImport("kernel32", CharSet = Char

c语言-关于winAPI下拉列表问题

问题描述 关于winAPI下拉列表问题 我想在窗口里面创建一个下拉列表框,就是类似设置波特率那种,我是用纯C写的,请问有相关的控件吗,参数是什么?没有的话需要怎么设计呢?求老司机带路,谢谢

用GetLogicalDriveStrings或FindFirstVoum两种方法获取主机驱动器列表

电子书截图: 代码A: 1 #include <windows.h> 2 #include <stdlib.h> 3 #include <stdio.h> 4 5 #define BUFSIZE 1024 6 7 BOOL GetDirverInfo(LPSTR szDrive); 8 9 void main(void) 10 { 11 CHAR szLogicalDriveStrings[BUFSIZE]; 12 PCHAR szDrive; 13 14 ZeroMe

WINAPI玩赏

希望多领域同时跟进,可以互相增益彼此的了解. PYTHON看过了,抽空熟悉一下WINDOWS的API. PDF是早就下载好的<精通WINDOWS API--函数,接口,编程实例>. 第一次用VS2010,清除一个WARN: 1>start.cpp(11): warning C4007: 'WinMain' : must be '__stdcall' 网上说是加WINAPI关键字. http://blog.5h77.com/archives/680 书上代码如下: 1 #include &

网络编程-DWORD WINAPI 函数名。这是什么意思啊。怎么用

问题描述 DWORD WINAPI 函数名.这是什么意思啊.怎么用 在用C语言编写网络时经常会有这些看不懂的,结构,函数.这应该看什么书补充这方面的知识呢? 解决方案 这个事Windows编程中要了解的,首先DWORD是数据类型,在这里是返回值,WINAPI是函数调用形式,最终就是_stdcall形式,即由被调用函数来清理栈中的参数,这种方式是不能实现可变参数的. 解决方案二: 使用windows系统函数 windows api = windows application programming