26.09.2007, 13:14
|
Начинающий
|
|
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
|
|
//И вторая(продолжение)
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
if (not LoadSetupAPI) then
begin
ShowMessage('Could not load SetupAPI.dll');
exit;
end;
DevInfo := nil;
ShowHidden := false;
DevInfo := SetupDiGetClassDevs(nil, nil, 0, DIGCF_PRESENT or DIGCF_ALLCLASSES);
if (DevInfo = Pointer(INVALID_HANDLE_VALUE)) then
begin
ShowMessage('GetClassDevs');
exit;
end;
ClassImageListData.cbSize := SizeOf(TSPClassImageListData);
if (not SetupDiGetClassImageList(ClassImageListData)) then
begin
ShowMessage('GetClassImageList');
exit;
end;
ImageList.Handle := ClassImageListData.ImageList;
TreeView.Images := ImageList;
EnumAddDevices(ShowHidden, TreeView, DevInfo);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetupDiDestroyDeviceInfoList(DevInfo);
SetupDiDestroyClassImageList(ClassImageListData);
UnloadSetupApi;
end;
procedure TForm1.mExitClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.mRefreshDisplayClick(Sender: TObject);
begin
EnumAddDevices(ShowHidden, TreeView, DevInfo);
end;
procedure TForm1.mShowHiddenDevicesClick(Sender: TObject);
begin
ShowHidden := not ShowHidden;
MainMenu.Items[2][2].Checked := ShowHidden;
EnumAddDevices(ShowHidden, TreeView, DevInfo);
end;
procedure TForm1.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
with MainMenu, TreeView.Selected do
begin
Items[1][0].enabled := false;
Items[1][1].enabled := false;
if (IsDisabled(Index, DevInfo)) then
begin
Items[1][0].enabled := true
end else
begin
if (IsDisableable(Index, DevInfo)) then Items[1][1].enabled := true
end;
end;
end;
procedure TForm1.TreeViewDblClick(Sender: TObject);
begin
with TreeView.Selected do
begin
if (IsDisabled(Index, DevInfo)) then
begin
ChangeEnableDevice(Self);;
end else
begin
if (IsDisableable(Index, DevInfo)) then ChangeDisableDevice(Self);
end;
end;
end;
procedure TForm1.ChangeEnableDevice(Sender: TObject);
begin
if (MessageBox(Handle, 'Включить устройство?', 'Change Device Status', MB_OKCANCEL) = IDOK) then
begin
if (StateChange(DICS_ENABLE, TreeView.Selected.Index, DevInfo)) then EnumAddDevices(ShowHidden, TreeView, DevInfo);
end;
end;
procedure TForm1.ChangeDisableDevice(Sender: TObject);
begin
if (MessageBox(Handle, 'Отрубить устройство?', 'Change Device Status', MB_OKCANCEL) = IDOK) then
begin
if (StateChange(DICS_DISABLE, TreeView.Selected.Index, DevInfo)) then EnumAddDevices(ShowHidden, TreeView, DevInfo);
end;
end;
|