Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.12.2012, 13:48
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию Как узнать какие диски не заняты

Здравствуйте, прошу помощи по данному вопросу, нужно чтобы в комбобокс попали все не занятые буквы в системе (например жесткие диски CDRom и тд), и еще один вопрос, как добавить к программе параметр например:

Если запустил в обычном режиме то запустить программу со всеми функциями.

Если запустил например так programm.exe -a тогда например можно редактировать параметры.

Вообще программа будет заниматься подключением нескольких сетевых хранилищ. Если вы знаете аналог того что я пишу то будет здорово) Подскажите, батники никак нельзя) Все делаю с WinExec,пробывал с NETRESOURCE и WnetAddconnection2 но чтото не срослось.. Я слышал что WnetAddconnection сама знает какой диск добавить, можно ли это както совместить?

Последний раз редактировалось true, 08.12.2012 в 13:55.
Ответить с цитированием
  #2  
Старый 08.12.2012, 15:19
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от true
Здравствуйте, прошу помощи по данному вопросу, нужно чтобы в комбобокс попали все не занятые буквы в системе (например жесткие диски CDRom и тд),
Смотри функцию GetLogicalDrives - возвращает целое число, каждый бит которой соответствует определённой букве диска. 1 - подключен, 0 - нет.
Цитата:
Сообщение от true
и еще один вопрос, как добавить к программе параметр например:

Если запустил в обычном режиме то запустить программу со всеми функциями.

Если запустил например так programm.exe -a тогда например можно редактировать параметры.
Параметры с которыми запущено приложение можно узнать через функции: ParamCount - количество параметров, ParamStr(i) - сами параметры.
Цитата:
Сообщение от true
Все делаю с WinExec,пробывал с NETRESOURCE и WnetAddconnection2 но чтото не срослось..
Что не срослось? Должно работать.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
true (08.12.2012)
  #3  
Старый 08.12.2012, 15:55
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Вот с WnetAddconnection пробывал может чтото нетак, пример нашел в интернете

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
WNetConnectionDialog(Handle,RESOURCETYPE_DISK) ;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
reg:TRegistry;
nr: NETRESOURCE;
lpLogin, lpPassword:PChar;
Begin
reg:=Tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false);
reg.WriteString('Disk',Pchar((Application.ExeName)));
reg.CloseKey;
reg.Free;

ZeroMemory (@nr, SizeOf (nr));
lpLogin:=Pchar(Edit3.Text);
lpPassword:=Pchar(Edit4.Text);

  if Checkbox1.Checked  then
    nr.dwType := RESOURCETYPE_PRINT
     else
     nr.dwType := RESOURCETYPE_DISK;

nr.lpLocalName := Pchar(Edit1.Text);
nr.lpRemoteName := Pchar(Edit2.Text);
nr.lpProvider :='';
If WNetAddConnection2 (nr,lpLogin, lpPassword, CONNECT_UPDATE_PROFILE) <> NO_ERROR
Then ShowMessage ('Could not connect');


end;

А можно примеры к GetLogicalDrives, я так понял что он число возвращает, как мне сделать чтобы он их в латинские буквы переводил?
Ответить с цитированием
  #4  
Старый 08.12.2012, 16:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от true
А можно примеры к GetLogicalDrives, я так понял что он число возвращает, как мне сделать чтобы он их в латинские буквы переводил?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  d: DWORD;
  c: Char;
  s: string;
begin
  d := GetLogicalDrives;
  for c := 'A' to 'Z' do
  begin
    if Odd(d) then s := s + c;
    d := d shr 1;
  end;
  ShowMessage(s);
end;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
true (08.12.2012)
  #5  
Старый 08.12.2012, 16:30
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от true
Вот с WnetAddconnection пробывал может чтото нетак, пример нашел в интернете
Я сейчас не на работе, так что проверить не могу.
Попробуй эти примеры:
Подключение сетевого диска
Подключение сетевого диска 2
Отобразить, присоединить сетевые диски
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
true (08.12.2012)
  #6  
Старый 09.12.2012, 15:59
true true вне форума
Новичок
 
Регистрация: 03.10.2010
Сообщения: 64
Репутация: 10
По умолчанию

Здравствуйте еще раз, наверно будет неправильно создавать новую тему для такого вопроса, я может плохо искал но как правильно записать в реестр выбранный параметр combobox'a в реестр?

Комбобокс будет заполняться после каждого вызова программы

Код:
ComboBox2.Items.Strings[ComboBox2.ItemIndex]):=FIniFile.ReadString('option','Combo2',ComboBox2.Items.Strings[ComboBox2.ItemIndex]));
FIniFile.WriteString('option','Combo2',ComboBox2.Items.Strings[ComboBox2.ItemIndex]);

Или комбобокс нужно заполнить и сохрнить все Items?

Последний раз редактировалось true, 09.12.2012 в 16:06.
Ответить с цитированием
  #7  
Старый 09.12.2012, 16:09
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от true
я может плохо искал
Верно. Искал плохо. Смотри >>здесь<< раздел Реестр.
Цитата:
Сообщение от true
но как правильно записать в реестр выбранный параметр combobox'a в реестр?
Для работы с реестром нужно использовать класс TRegistry вместо TIniFile.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
true (09.12.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025