Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрытие дисков в проводнике, Как скрыть диски 
:(
    Опции темы
olbolab
  Дата 7.7.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 14.5.2007

Репутация: нет
Всего: нет



Здраствуйте уважаемые програмисты, есть трабла, по сути код приведенный ниже должен скрывать диски в проводнике, но при скрытии дисков выскакивает ошибка. Проверте, правильно ли написан код:

 
Код

procedure TForm1.hideallClick(Sender: TObject);
var i:byte;
begin
 if hideall.Checked=true then
  begin
   rg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',false);
   rg.WriteInteger('NoDrives',67108863);
   rg.CloseKey;
   showall.Checked:=false;
   for i:=0 to 25 do hide.Checked[i]:=true;
  end

end;

procedure TForm1.showallClick(Sender: TObject);
var i:byte;
begin
 if showall.Checked=true then
  begin
   rg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',false);
   rg.WriteInteger('NoDrives',0);
   rg.CloseKey;
   hideall.Checked:=false;
   for i:=0 to 25 do hide.Checked[i]:=false;
  end

end;

procedure TForm1.hddrvClick(Sender: TObject);
function summator:integer;
var s:integer;
begin
 s:=0;
 if hide.Checked[25]=true then s:=s+33554432;
 if hide.Checked[24]=true then s:=s+16777216;
 if hide.Checked[23]=true then s:=s+8388608;
 if hide.Checked[22]=true then s:=s+4194304;
 if hide.Checked[21]=true then s:=s+2097152;
 if hide.Checked[20]=true then s:=s+1048576;
 if hide.Checked[19]=true then s:=s+524288;
 if hide.Checked[18]=true then s:=s+262144;
 if hide.Checked[17]=true then s:=s+131072;
 if hide.Checked[16]=true then s:=s+65536;
 if hide.Checked[15]=true then s:=s+32768;
 if hide.Checked[14]=true then s:=s+16384;
 if hide.Checked[13]=true then s:=s+8192;
 if hide.Checked[12]=true then s:=s+4096;
 if hide.Checked[11]=true then s:=s+2048;
 if hide.Checked[10]=true then s:=s+1024;
 if hide.Checked[9]=true then s:=s+512;
 if hide.Checked[8]=true then s:=s+256;
 if hide.Checked[7]=true then s:=s+128;
 if hide.Checked[6]=true then s:=s+64;
 if hide.Checked[5]=true then s:=s+32;
 if hide.Checked[4]=true then s:=s+16;
 if hide.Checked[3]=true then s:=s+8;
 if hide.Checked[2]=true then s:=s+4;
 if hide.Checked[1]=true then s:=s+2;
 if hide.Checked[0]=true then s:=s+1;
 result:=s
end;
begin
 rg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',false);
 rg.WriteInteger('NoDrives',summator);
 rg.CloseKey

end;

procedure TForm1.Label3MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
label3.Font.style:=[fsUnderline,fsBold];
label3.Font.Color:= $00804000;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
label3.Font.style:=[];
label3.Font.Color:= clblack;
end;

PM MAIL   Вверх
Alexeis
Дата 7.7.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



  Не знаю как там на счет ошибок, но функцию function summator:integer; - можно легко упростить до

Код

function summator : integer;
var
  i : integer;
begin
 result := 0;
 for i := 0 to 25
 do
   if hide.Checked[i] then result := result + (1 shl i);
end;


Кстати у меня этот код работает. Проверял
Код

uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
var
  r : TRegistry;
begin
  r := TRegistry.Create;
  r.RootKey := HKEY_CURRENT_USER;
  r.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', false);
  r.WriteInteger('NoDrives',67108863);
  r.CloseKey;
  r.Free;
end;


Это сообщение отредактировал(а) Alexeis - 7.7.2007, 17:21


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.