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

Вниз

Обновление устройств Plug&Paly   Найти похожие ветки 

 
SYNthetic   (2002-11-21 17:45) [0]

Мастера, помогоите плиз, в FAQ надыбал такой исходник для обределения устройств в системе:

type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private declarations }
procedure WMDeviceChange(var Message: TMessage);
message WM_DEVICECHANGE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;

procedure TForm1.WMDeviceChange(var Message: TMessage);
var
s : string;
begin
{Do Something here}
case Message.wParam of
DBT_DEVICEARRIVAL :
s := "A device has been inserted and is now available";
DBT_DEVICEQUERYREMOVE: begin
s := "Permission to remove a device is requested";
ShowMessage(s);
{True grants premission}
Message.Result := integer(true);
exit;
end;
DBT_DEVICEQUERYREMOVEFAILED :
s := "Request to remove a device has been canceled";
DBT_DEVICEREMOVEPENDING :
s := "Device is about to be removed";
DBT_DEVICEREMOVECOMPLETE :
s := "Device has been removed";
DBT_DEVICETYPESPECIFIC :
s := "Device-specific event";
DBT_CONFIGCHANGED :
s:= "Current configuration has changed"
else s := "Unknown Device Message";
end;
ShowMessage(s);
inherited;
end;


Подскажите только как пользоваться этой процедцрой?


 
pj ©   (2002-11-21 17:55) [1]

Вообщето толку от нее мало без
RegisterDeviceNotification
система забудет тебя информировать этим сообщением..


 
han_malign ©   (2002-11-21 17:56) [2]

не для для обределения устройств в системе - а для определения изменений в составе устройств.

а для определения устройств надо делать примерно так:
var
hDevInfoSet : HDEVINFO;
DevInfoData : SP_DEVINFO_DATA;
_ch: array [0..299] of char;
begin
Result:=0;
//Создание списка информации об устройствах
hDevInfoSet := SetupDiGetClassDevsA(Nil,Nil,0,DIGCF_PRESENT);
if((hDevInfoSet=0)or(hDevInfoSet=INVALID_HANDLE_VALUE))then begin
// flogln("di.log","Create DeviceInfoList failed 0x" + HexDWord(GetLastError));
exit;
end;

DevInfoData.cbSize := sizeof(DevInfoData);
while SetupDiEnumDeviceInfo(hDevInfoSet,Result,DevInfoData)do begin
inc(Result);
if(SetupDiGetDeviceRegistryPropertyA(
hDevInfoSet,
DevInfoData,
SPDRP_DEVICEDESC,
nil,
_ch,
255,
nil))
then begin
// flogln("di.log",cProps[i]+": "+_s);
aText:=aText+_ch+#0;
end
// else flogln("di.log","Get Device Reg Prop failed 0x" + HexDWord(GetLastError));
end;

- для того чтобы работало нужен портированный под дельфи SetupAPI(.h), есть на сайте Jedi


 
SYNthetic   (2002-11-22 13:54) [3]

Сори ошибся, для определения изменений в оборудовании, плиз раскажите как пользоваться приведённой мной выше функцией? Нужно просто чтобы прога Определяла внешний модем под XP\2000 если он был выключен при загрузке ОС



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
14-37305
sancho
2002-12-22 10:48
2003.01.13
Картриджи принтера


1-37211
TALLA
2002-12-28 18:47
2003.01.13
Как сделать Drag&Drop нескольких одинаковых объектов?


1-37048
Brat-2
2003-01-02 15:47
2003.01.13
Поиск подстроки в строке


1-37138
Yurko
2002-12-29 03:22
2003.01.13
IconChange


3-36924
13-ый
2002-12-17 10:42
2003.01.13
Деревья на основе БД