![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
usb flash [D7, WinXP]
Farel © (2007-11-01 17:51:00)ПРИВЕТ ВСЕМ!!!
Уважаемые, подскажите пожалуйста как определить серийный номер флешки
Riply (2007-11-01 20:47:00) [1]> [17] Farel © (01.11.07 18:50)
> Или это серийный номер тома. Если так, то не подскажете
> как определить именно серийный номер флешки!?
Попробуй DeviceIoControl с запросом: IOCTL_STORAGE_QUERY_PROPERTY
P.S. С параметром не уверена, но что-то похожее :)
Farel (2007-11-01 18:50:00) [2]Или это серийный номер тома. Если так, то не подскажете как определить именно серийный номер флешки!?
Farel (2007-11-01 18:48:00) [3]Работает,но что то серийный номерфлешки не совпадает с тем что показывает програмка
Farel (2007-11-01 18:43:00) [4]спасибо огромное!!! :)
Palladin (2007-11-01 18:39:00) [5]
> Farel © (01.11.07 18:30) [10]
а ну конечно... ты объявления внешних функций в класс формы походу запихал... ай молодца
Palladin (2007-11-01 18:37:00) [6]
> Farel © (01.11.07 18:30) [10]
создай пустой проект, кинь на форму Button1
удали через Ctrl-A Del и вставь польностью следующий код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
const
SetupApi = 'SetupApi.dll';
type
HDEVINFO = THandle;
PSP_DEVINFO_DATA = ^SP_DEVINFO_DATA;
SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD;
Reserved: DWORD;
end;
function SetupDiGetClassDevsA(ClassGuid: PGUID; Enumerator: PChar; hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; external setupapi;
function SetupDiEnumDeviceInfo(DeviceInfoSet: HDEVINFO; MemberIndex: DWORD; DeviceInfoData: PSP_DEVINFO_DATA): boolean; stdcall; external setupapi;
function SetupDiDestroyDeviceInfoList(DeviceInfoSet: HDEVINFO): boolean; stdcall; external setupapi;
function CM_Get_Device_ID_Size(pulLen: PDWORD; dnDevInst: DWORD; ulFlags: DWORD): DWORD; stdcall; external setupapi;
function CM_Get_Device_IDA(dnDevInst: DWORD; Buffer: PChar; BufferLen: DWORD; ulFlags: DWORD): DWORD; stdcall; external setupapi;
const
CR_SUCCESS = $00000000;
function GetDeviceName(aDevInst: THandle): string;
var
IDLen: Integer;
begin
Result := '';
if (CM_Get_Device_ID_Size(@IDLen, aDevInst, 0) = CR_SUCCESS) and (IDLen > 0) then begin
SetLength(Result, IDLen);
if CM_Get_Device_IDA(aDevInst, PChar(Result), IDLen + 1, 0) <> CR_SUCCESS then
Result := ''
end
end;
procedure EnumDiskDrive;
const
GUID_DEVCLASS_DISKDRIVE: TGUID =
(D1: $4D36E967; D2: $E325; D3: $11CE; D4: ($BF, $C1, $08, $00, $2B, $E1, $03, $18));
var
hDevInfoSet: HDEVINFO;
DevInfo: SP_DEVINFO_DATA;
i: Integer;
begin
DevInfo.cbSize := sizeof(SP_DEVINFO_DATA);
hDevInfoSet := SetupDiGetClassDevsA(@GUID_DEVCLASS_DISKDRIVE, nil, 0, 2);
i := 0;
if hDevInfoSet <> INVALID_HANDLE_VALUE then begin
while (SetupDiEnumDeviceInfo(hDevInfoSet, i, @DevInfo)) do begin
ShowMessage(GetDeviceName(DevInfo.DevInst));
Inc(i)
end;
SetupDiDestroyDeviceInfoList(hDevInfoSet);
end
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumDiskDrive
end;
end.
Dimaxx (2007-11-01 18:31:00) [7]Весь код приведи. Судя по ошибке записал объявление не там где положено.
Dimaxx (2007-11-01 18:31:00) [8]
> но все таки пишит ошибку
Почему из тебя надо все клещами тянуть? Какую ошибку, на какой строке кода написать можешь?
Farel (2007-11-01 18:30:00) [9]function SetupDiGetClassDevsA(ClassGuid: PGUID; Enumerator: PChar; hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; external setupapi;
вот в этой строке пишит ошибку
field definitionnot allowed after methods or properties
Palladin (2007-11-01 18:25:00) [10]
> Farel © (01.11.07 18:23) [8]
песец... откуда такие балбесы берутся...
я вот тоже пошел на кухню, суп сварить, а вот что то не получается... может ты мне подскажешь в чем проблема?
Farel (2007-11-01 18:23:00) [11]юморист. ну да. что типа того.
но все таки пишит ошибку
Palladin (2007-11-01 18:21:00) [12]
> Farel © (01.11.07 18:10) [6]
религия не позволяет? мама ругается? папа ремнем шпарит? или ошибку какую пишет?
Farel (2007-11-01 18:10:00) [13]Понимаешь, не могу скомпилить. Если можешь подскажи что там не так спасибо
Dimaxx (2007-11-01 18:07:00) [14]УУу, сразу обижаться?? На сердитых воду возят, на надутых кирпичи (шутка).
Чем тебя не устраивает тема?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1190208449&n=5
Farel (2007-11-01 18:01:00) [15]Спасибо за помощь :(
Dimaxx (2007-11-01 18:00:00) [16]См. раздел WinAPI.
Farel (2007-11-01 17:59:00) [17]умею!!!
там по поиску даже не компилится!!! и Я там не увидил ниче связанное с серийным номером флехи!
Dimaxx (2007-11-01 17:57:00) [18]Поиском научить пользоваться? Не так давно была тема...