Показать сообщение отдельно
  #8  
Старый 26.09.2007, 13:14
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 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;
Ответить с цитированием