С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
Delphi 6-7

Считать путь из реестра и записать по этому пути файл

21.04.2008, 18:11. Показов 3733. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно чтобы при нажатии на кнопку копировался файл в папку, а путь папки нужно чтобы считывалось из реестра, т.е. считал путь из реестра и скопировал туда файл. Как копировать файлы я примерно знаю, а вот как работать с реестром незнаю. Кто знает помогите мне пожалуйста. Буду очень благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2008, 18:11
Ответы с готовыми решениями:

Записать - считать с реестра
вот пишу procedure SaveConnectionString(AconnectionString:string); var Reg:TRegistry; begin Reg := TRegistry.Create; ...

Файл: Получить полный путь к файлу и записать этот путь в отдельную переменную.
Доброго времени суток.Столкнулся с проблемой в ходе выполнения задачи. Мне нужно получить полный путь к файлу и записать этот путь в...

Записать информацию об ОС из реестра в файл
привет, друзья - товарищи, надо записать значение реестра в файл. В частности информацию об ОС. Что не так в коде? HANDLE...

12
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
21.04.2008, 19:48
Способов несколько. Вариант попроще: есть функция SHRegGetPath. Кроме того, что она может получить значения типа REG_SZ и REG_EXPAND_SZ, для строк REG_EXPAND_SZ она ещё подставит значения переменных среды.
http://msdn2.microsoft.com/en-... S.85).aspx
Delphi
1
2
3
4
5
6
7
8
9
10
uses Windows;
function SHRegGetPath(hkey:HKEY; pszSubKey:PChar; pszValue:PChar;
         pszPath:PChar; dwFlags:DWORD):LongInt;
         stdcall; external 'shlwapi.dll' name 'SHRegGetPathA';
var c:array [0..MAX_PATH] of char;
begin
SHRegGetPath( HKEY_LOCAL_MACHINE,
             'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',
             'Userinit',c,0);
end.
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
22.04.2008, 08:43  [ТС]
Большое спасибо, Somebody, у меня все получилось! Но есть еще пара вопросов. Если, например, путь в реестре не найден, то чтобы на экран вышло сообщение, что типа такого пути нет. И как сделать, чтобы программа сама нажала на какую либо кнопку, например, при копировании файла, если с таким именем уже существует то, спрашивет заменить его или нет, и чтобы программа ответила "Да", т.е. заменить.
Заранее благодарен.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
22.04.2008, 13:18
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
uses Windows;
function SHRegGetPath(hkey:HKEY; pszSubKey:PChar; pszValue:PChar;
         pszPath:PChar; dwFlags:DWORD):LongInt;
         stdcall; external 'shlwapi.dll' name 'SHRegGetPathA';
var c:array [0..MAX_PATH] of char;
    res:longint;
begin
//Получение значения
res:= SHRegGetPath( HKEY_LOCAL_MACHINE,
                    'SYSTEM\CurrentControlSet\Services\Eventlog',
                    'ImagePath',c,0);
//Если res<>0, то выводится сообщение об ошибке (в зависимости от кода ошибки)
if res<>0 then begin
   FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,res,0,c,High(c)-1,nil);
   MessageBox(0,c,nil,MB_ICONEXCLAMATION);
   ExitProcess(0);
   end;
//Если GetFileAttributes=-1, то, скорее всего, такого файла нет
//или нет прав на чтнеие атрибутов - всё равно ничего хорошего
if GetFileAttributes(c)=Cardinal(-1) then begin
   FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,GetLastError(),0,c,High(c)-1,nil);
   MessageBox(0,c,nil,MB_ICONEXCLAMATION);
   ExitProcess(0);
   end;
//false - заменить существующий, true - не заменять
CopyFile(c,'c:\SomeFile.zzz',false);
end.
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
22.04.2008, 14:40  [ТС]
Спасибо, с первым вопросом разобрался. А во втором вопросе я к примеру сказал замену файла, мне нужно чтобы на любой вопрос программа нажимала на выбранную мною кнопку, например на кнопку "Да".
А а копирование файла не работает. Надо не так: CopyFile(c,'c:\SomeFile.zzz',false); а так: CopyFile('c:\SomeFile.zzz',c,false); но так всеравно не работает, копируется только если указать не только путь, но еще и в какой файл копировать.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
23.04.2008, 13:57
А во втором вопросе я к примеру сказал замену файла, мне нужно чтобы на любой вопрос программа нажимала на выбранную мною кнопку, например на кнопку "Да".
Что известно о программе, где кнопка (название процесса, заголовок окна)? Как определить, какую нажимать - по названию?
А а копирование файла не работает. Надо не так: CopyFile(c,'c:\SomeFile.zzz',false); а так: CopyFile('c:\SomeFile.zzz',c,false); но так всеравно не работает, копируется только если указать не только путь, но еще и в какой файл копировать.
А, я невнимательно прочитал, что из реестра читается путь к папке.
Если из реестра читается абсолютный путь к папке, то к нему можно добавить имя файла, в который копировать, с помощью PathAppend ("" между именем папки и именем файла добавляется в случае необходимости).
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
{$APPTYPE CONSOLE}
uses Windows;
function PathAppend(pszPath,pszMore:PChar):LongBool;
         stdcall; external 'shlwapi.dll' name 'PathAppendA';
var c:array [0..MAX_PATH] of Char;
begin
c:='c:\dir';
if not PathAppend(c,'filename.ext') then {error};
//c='c:\dir\filename.ext';
c:='c:\dir\';
if not PathAppend(c,'filename.ext') then {error};
//c='c:\dir\filename.ext';
end.
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
24.04.2008, 15:48  [ТС]
Что известно о программе, где кнопка (название процесса, заголовок окна)? Как определить, какую нажимать - по названию?
Ну например мне надо чтобы когда в прогу Daemon Tools монтируется образ (по командной строки) то выходит окно с таким содержанием "Подтверждение безопасного режима для командной строки..." и 2 кнопки, "Да" и "Нет". И мне надо чтобы нажималось на кнопку "Да"
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
24.04.2008, 17:54
А прога должна быть постоянно запущена и нажимать кнопку при появлении окна или запускается, когда это окно с кнопками уже есть?
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
24.04.2008, 20:41  [ТС]
А прога должна быть постоянно запущена и нажимать кнопку при появлении окна или запускается, когда это окно с кнопками уже есть?
ну да Daemon Tools он всегда должен быть запущен, но если нет, то он всеравно запускается, т.к. выполняется эта команда: C:\Progra~1\DAEMON~1\daemon.exe -mount 0, name.mds , после ее выполнения вылазит то окошко и нужно нажать "Да"
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
24.04.2008, 21:04
Я про прогу, которая нажимает. Какая задача этой проги: нажать кнопку в существующем окне или сначала подождать, когда оно появится?
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
25.04.2008, 12:26  [ТС]
сначала подождать, когда оно появится
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
26.04.2008, 17:57
Ждать можно в цикле. Когда FindWindow найдёт окно, можно найти нём кнопку с помощью FindWindowEx, потом послать кнопке сообщение BM_CLICK. Если надо ждать появления окна долго и нажимать кнопку моментально (например, чтобы юзер не увидел), то надо установить хук (наверное, лучше WH_SHELL) с помощью SetWindowsHookEx и ловить создание окна.
0
0 / 0 / 0
Регистрация: 21.04.2008
Сообщений: 48
28.04.2008, 18:33  [ТС]
Спасибо, все получилось!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2008, 18:33
Помогаю со студенческими работами здесь

Файл создается не по указанному пути, если путь к нему - относительный
Доброе время суток. Пытаюсь создать файл и кое-что в него записать с помощью fopen_s: FILE* out; fopen_s(&amp;out,...

Файл: Считать данные из текстового файла и записать их в другой файл, заданный пользователем...
Доброго времени суток. Выполняя задание по программированию столкнулся с проблемой. Необходимо считать данный из текстового...

Записать полученный список имён ключей реестра в txt файл
Как построчно записать полученный список имён ключей реестра в txt файл? Делал так: RegistryKey r =...

Файл: записать в файл данные и считать из него в MessageBox
Здравствуйте, возникла проблема. Надо записать в файл данные и считать с него в MEssageBox. У меня выдает ошибку собственно: ...

Считать файл в два списка и записать обратно в файл
Товарищи нужна помощь, я не понимаю почему прогр не работает, что мне нужно переделать, поменять. Программа считывает имена в два double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Закрытая тема Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru