Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2008, 11:29   #1
EVO-X
 
Регистрация: 02.05.2008
Сообщений: 5
По умолчанию Реестр

Имеется такой кусок кода моей программы:
Код:
function SHRegGetPath(hkey:HKEY; pszSubKey:PChar; pszValue:PChar;
         pszPath:PChar; dwFlags:DWORD):LongInt;
         stdcall; external 'shlwapi.dll' name 'SHRegGetPathA';
Код:
var
Fo : TSHFileOpStruct;
buffer : array [0..4096] of char;
p : pchar;
c:array [0..MAX_PATH] of char;
res:longint;
begin
res:= SHRegGetPath( HKEY_LOCAL_MACHINE,'SOFTWARE\7-Zip','Path',c,0);
if res<>0 then begin
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,nil,res,0,c,High(c)-1,nil);
ShowMessage('Программа не установлена!');
Exit;
end;
FillChar(Buffer, sizeof(Buffer), #0);
p := @buffer;
p := StrECopy(p, 'lg\ru.txt') + 1;
FillChar(Fo, sizeof(Fo), #0);
Fo.Wnd := Handle;
Fo.wFunc := FO_COPY;
Fo.pFrom := @Buffer;
Fo.pTo := c;
Fo.fFlags := 0;
if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
ShowMessage('Ошибка при копировании!') else ShowMessage('Файл успешно скопирован!')
end;
Он выполняет следущее: считывает путь установленной программы из реестра, затем если программа установлена, копирует файл по тому пути, который указан в реестре. Например, программа установлена в "C:\Program Files\7-Zip" , моя программа считывает этот путь из реестра и копирует в папку 7-Zip. Но что нужно добавить или изменить, чтобы файл копировался не в корневую папку программы (т.е. 7-Zip), а например, в папку Lang (находящаяся в корневой папке программы), т.е. по пути "C:\Program Files\7-Zip\Lang". Как это сделать? Заранее благодарен.
EVO-X вне форума Ответить с цитированием
Старый 14.07.2008, 15:02   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Если я не ошибаюсь, то в строке Fo.pTo := c; в параметр "c" записан путь в который будет копироваться файл, значит следуя из этого можно сделать так:

Код:
Fo.pTo := c + StrToInt('\Lang');
И тогда файл будет копироваться в папку Lang.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 14.07.2008, 20:19   #3
EVO-X
 
Регистрация: 02.05.2008
Сообщений: 5
По умолчанию

Да я уже сам разобрался, но все равно спасибо за помощь.
EVO-X вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реестр JRcoker Общие вопросы Delphi 12 12.09.2008 19:14
Реестр и C++ Лубышев Помощь студентам 1 12.03.2008 08:28
Реестр Teen4jump Общие вопросы Delphi 2 28.02.2008 10:17
реестр Михаил Юрьевич Общие вопросы Delphi 9 12.02.2008 00:00