Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

usb flash   Найти похожие ветки 

 
Farel ©   (2007-11-01 17:51) [0]

ПРИВЕТ ВСЕМ!!!
Уважаемые, подскажите пожалуйста как определить серийный номер флешки


 
Dimaxx ©   (2007-11-01 17:57) [1]

Поиском научить пользоваться? Не так давно была тема...


 
Farel ©   (2007-11-01 17:59) [2]

умею!!!
там по поиску даже не компилится!!! и Я там не увидил ниче связанное с серийным номером флехи!


 
Dimaxx ©   (2007-11-01 18:00) [3]

См. раздел WinAPI.


 
Farel ©   (2007-11-01 18:01) [4]

Спасибо за помощь :(


 
Dimaxx ©   (2007-11-01 18:07) [5]

УУу, сразу обижаться?? На сердитых воду возят, на надутых кирпичи (шутка).

Чем тебя не устраивает тема?
http://delphimaster.net/view/4-1190208449/


 
Farel ©   (2007-11-01 18:10) [6]

Понимаешь, не могу скомпилить. Если можешь подскажи что там не так спасибо


 
Palladin ©   (2007-11-01 18:21) [7]


> Farel ©   (01.11.07 18:10) [6]

религия не позволяет? мама ругается? папа ремнем шпарит? или ошибку какую пишет?


 
Farel ©   (2007-11-01 18:23) [8]

юморист. ну да. что типа того.
но все таки пишит ошибку


 
Palladin ©   (2007-11-01 18:25) [9]


> Farel ©   (01.11.07 18:23) [8]

песец... откуда такие балбесы берутся...
я вот тоже пошел на кухню, суп сварить, а вот что то не получается... может ты мне подскажешь в чем проблема?


 
Farel ©   (2007-11-01 18:30) [10]

function SetupDiGetClassDevsA(ClassGuid: PGUID; Enumerator: PChar; hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall; external setupapi;

вот в этой строке пишит ошибку
field definitionnot allowed after methods or properties


 
Dimaxx ©   (2007-11-01 18:31) [11]


> но все таки пишит ошибку

Почему из тебя надо все клещами тянуть? Какую ошибку, на какой строке кода написать можешь?


 
Dimaxx ©   (2007-11-01 18:31) [12]

Весь код приведи. Судя по ошибке записал объявление не там где положено.


 
Palladin ©   (2007-11-01 18:37) [13]


> 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.


 
Palladin ©   (2007-11-01 18:39) [14]


> Farel ©   (01.11.07 18:30) [10]

а ну конечно... ты объявления внешних функций в класс формы походу запихал... ай молодца


 
Farel ©   (2007-11-01 18:43) [15]

спасибо огромное!!! :)


 
Farel ©   (2007-11-01 18:48) [16]

Работает,но что то серийный номерфлешки не совпадает с тем что показывает програмка


 
Farel ©   (2007-11-01 18:50) [17]

Или это серийный номер тома. Если так, то не подскажете как определить именно серийный номер флешки!?


 
Riply ©   (2007-11-01 20:47) [18]

> [17] Farel ©   (01.11.07 18:50)
> Или это серийный номер тома. Если так, то не подскажете
> как определить именно серийный номер флешки!?

Попробуй DeviceIoControl с запросом: IOCTL_STORAGE_QUERY_PROPERTY
P.S. С параметром не уверена, но что-то похожее :)



Страницы: 1 вся ветка

Текущий архив: 2007.11.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.039 c
2-1194034973
неугомонный
2007-11-02 23:22
2007.11.25
scrollbar stringgrid


2-1194208293
Xak
2007-11-04 23:31
2007.11.25
Как правельно запустить *.bat


2-1193386440
kyn66
2007-10-26 12:14
2007.11.25
Gif-анимация в Splash-окне


15-1193229698
abhtr
2007-10-24 16:41
2007.11.25
документация на русском для IBExpert


15-1193397825
vajo
2007-10-26 15:23
2007.11.25
Нужно внести изменение в текстовом файле на сайте.