Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#31: 2014-04-20 22:43:01 ЛС | профиль | цитата
nesco писал(а):
Где-то я читал
Насчет "&" не читал. Да и на своих не встречал.
flash_test.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1flash_test.png [70.6KB] [692]
Ответов: 4
Рейтинг: 0
#32: 2014-04-21 11:24:41 ЛС | профиль | цитата
Доброго времени суток. Мне тоже нужен компонент (схема) с помощью которой можно будет узнать заводской серийный номер флеш диска.
У меня есть компонент который это делает на XP вот ссылка: http://yadi.sk/d/SDxYbzoXMfS8e.
Но он почему то на 7-ке не работает. Помогите пожалуйста.
карма: 1

0
Ответов: 2202
Рейтинг: 675
#33: 2014-04-21 20:40:54 ЛС | профиль | цитата
israr, этот компонент вот от сюда: http://forum.hiasm.com/forum.html?q=3&p=68662. Задали бы вопрос автору, может он уже обновил для себя, но в виду отсутствия интереса к элементу не обновляет на форуме.
Chesh был последний раз в 06 Feb 2014, да и почтовый ящик в профиле есть.
карма: 11

0
Ответов: 4
Рейтинг: 0
#34: 2014-04-22 15:43:24 ЛС | профиль | цитата
Написал что то не отвечает. Может кто нибудь уже делал себе?

Вот этот код по сути выводит серийный номер. Но мне нужно чтобы он выводил серийный номер только что вставленной флешки.
unit HiAsmUnit;

interface

uses kol,Share,Debug,Windows;

type
THiAsmClass = class(TDebug)

private

public
onGetSerialNum: THI_Event;
Procedure doGetSerialNum(var _Data:TData; Index:Word);

end;

implementation
Procedure THiAsmClass.doGetSerialNum;
type
ULONG_PTR = DWORD;
//{$EXTERNALSYM ULONG_PTR}

//
// Define type for reference to device information set
//
HDEVINFO = Pointer;
//{$EXTERNALSYM HDEVINFO}

//
// Device information structure (references a device instance
// that is a member of a device information set)
//
PSPDevInfoData = ^TSPDevInfoData;
SP_DEVINFO_DATA = packed record
cbSize: DWORD;
ClassGuid: TGUID;
DevInst: DWORD; // DEVINST handle
Reserved: ULONG_PTR;
end;

//{$EXTERNALSYM SP_DEVINFO_DATA}
TSPDevInfoData = SP_DEVINFO_DATA;

TSetupDiGetDeviceRegistryPropertyA = function(DeviceInfoSet: HDEVINFO;const DeviceInfoData: TSPDevInfoData; Property_: DWORD;var PropertyRegDataType: DWORD; PropertyBuffer: PBYTE; PropertyBufferSize: DWORD;var RequiredSize: DWORD): BOOL; stdcall;
TSetupDiGetClassDevsA = function(ClassGuid: PGUID; const Enumerator: PAnsiChar;hwndParent: HWND; Flags: DWORD): HDEVINFO; stdcall;
TSetupDiEnumDeviceInfo = function(DeviceInfoSet: HDEVINFO;MemberIndex: DWORD; var DeviceInfoData: TSPDevInfoData): BOOL; stdcall;
TSetupDiGetDeviceInstanceIdA = function(DeviceInfoSet: HDEVINFO;DeviceInfoData: PSPDevInfoData; DeviceInstanceId: PAnsiChar;DeviceInstanceIdSize: DWORD; RequiredSize: PDWORD): BOOL; stdcall;
TSetupDiDestroyDeviceInfoList = function(DeviceInfoSet: HDEVINFO): BOOL; stdcall;

const
DIGCF_DEFAULT = $00000001; // only valid with DIGCF_DEVICEINTERFACE
DIGCF_PRESENT = $00000002;
DIGCF_ALLCLASSES = $00000004;
DIGCF_PROFILE = $00000008;
DIGCF_DEVICEINTERFACE = $00000010;

var
HSetupAPI, Devn:integer;
SerialNum,dtyp:DWORD;
PnPHandle: HDEVINFO;
DeviceInfo: SP_DEVINFO_DATA;
GotDev: LongBool;
PluggedIn: ulong;
DeviceInstanceId : array [0..255] of char;
RequiredSize: DWORD;
dinst, itsname, text: string;

qSetupDiGetDeviceRegistryPropertyA : TSetupDiGetDeviceRegistryPropertyA;
qSetupDiGetClassDevsA : tSetupDiGetClassDevsA;
qSetupDiEnumDeviceInfo : tSetupDiEnumDeviceInfo;
qSetupDiGetDeviceInstanceIdA : tSetupDiGetDeviceInstanceIdA;
qSetupDiDestroyDeviceInfoList : tSetupDiDestroyDeviceInfoList;
begin
HSetupAPI := LoadLibrary('SetupAPI.dll');

if HSetupAPI <> 0 then
begin
qSetupDiGetClassDevsA := GetProcAddress(HSetupAPI, 'SetupDiGetClassDevsA');
qSetupDiEnumDeviceInfo := GetProcAddress(HSetupAPI, 'SetupDiEnumDeviceInfo');
qSetupDiGetDeviceInstanceIdA := GetProcAddress(HSetupAPI, 'SetupDiGetDeviceInstanceIdA');
qSetupDiDestroyDeviceInfoList := GetProcAddress(HSetupAPI, 'SetupDiDestroyDeviceInfoList');
qSetupDiGetDeviceRegistryPropertyA := GetProcAddress(HSetupAPI,'SetupDiGetDeviceRegistryPropertyA');
end;
PnPHandle := qSetupDiGetClassDevsa(0, NIL, 0,DIGCF_ALLCLASSES or DIGCF_PRESENT);

Devn := 0;
repeat
DeviceInfo.cbSize:=sizeof(DeviceInfo);
GotDev:=qSetupDiEnumDeviceInfo(PnPHandle,Devn,DeviceInfo);
PluggedIn:=0;

if GotDev then
begin
qSetupDiGetDeviceInstanceIdA(PnPHandle,@DeviceInfo,@DeviceInstanceId,255,@RequiredSize);
_hi_OnEvent(onGetSerialNum,DeviceInstanceId);

Devn := Devn+1;
end;
until not GotDev;
FreeLibrary(HSetupAPI);
end;
end.
------------ Дoбавленo в 14.00:
Как то некоректно код добавился. Вот ссылка http://yadi.sk/d/b2vTc39xMxe5n
------------ Дoбавленo в 15.43:
хорошо я понял
карма: 1

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#35: 2014-04-22 15:52:37 ЛС | профиль | цитата
israr писал(а):
Но мне нужно чтобы он выводил серийный номер только что вставленной флешки.

У меня получилось вывести только под Win7, в XP не получилось. В принципе, можно и приведенный код попытаться присобачить
карма: 22

0
Ответов: 4
Рейтинг: 0
#36: 2014-04-22 16:06:47 ЛС | профиль | цитата
Данный код да работает на 7. На ХР нет. Вот мне и нужно чтобы при вставке флешки выводился серийный номер вставленной флешки. А данный код выводит информацию о всех устройствах находящихся в системе.
карма: 1

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#37: 2014-04-22 16:35:51 ЛС | профиль | цитата
israr писал(а):
Вот мне и нужно чтобы при вставке флешки выводился серийный номер вставленной флешки

Для Семерки пожалуйста, есть такой код, для XP, увы, строка инфы интерфейса отличается
------------ Дoбавленo в 16.35:
Вот. Для Семерки -- flashserialnumber.sha
карма: 22

0
файлы: 1flashserialnumber.sha [8.4KB] [450]
Ответов: 4
Рейтинг: 0
#38: 2014-04-22 17:34:13 ЛС | профиль | цитата
Спасибо. Работает. А для ХР вот по этой ссылке компонент. Который выводит инфу о флеш дисках.
Ссылка:http://yadi.sk/d/SDxYbzoXMfS8e.
карма: 1

0
38
Сообщение
...
Прикрепленные файлы
(файлы не залиты)