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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2009, 14:24   #1
Яр|/||< (^_^)
LosYear
Форумчанин
 
Аватар для Яр|/||< (^_^)
 
Регистрация: 19.06.2009
Сообщений: 695
Счастье Определение WIndows & system32

Как определить папки windosw & system32
Яр|/||< (^_^) вне форума Ответить с цитированием
Старый 15.08.2009, 14:26   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Код:
{Возвращает системную директорию типа: C:\Windows}
Function TForm1.SystemDir : String;
Var
  Windir : Array [0..MAX_PATH] Of Char;
Begin
GetWindowsDirectory(WinDir, Sizeof(Windir));
Result := WinDir;
End
Доработать и будет возвращать что хотите..
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 15.08.2009, 15:48   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

для system32 GetSystemDirectory
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 15.08.2009, 16:15   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Мне часто задают подобные вопросы и если интересует проблема узнавания путей к виртуальным и системным папкам, то вот посмотри этот модуль, подключи его к твоей проге и используй.
Коментарии и пояснения в модуле.
Вложения
Тип файла: zip Virtual_Folders_Path.zip (2.3 Кб, 24 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 15.08.2009, 21:31   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Сообщение

Ваш файл можно модифицировать, например сделав двумерный массив со значениями такого типа:
('%WinDir%', '$24'), (), .... и т.д.
А потом в цикле искать совпадения.
----------------------------------------

Выложу свой свежий компонент, смысл которого возвращать реальные пути до папок по путям заданным с помощь знака процента:
Данные получаю отсюда: Software\Microsoft\Windows\CurrentV ersion\Explorer\Shell Folders

Пример задания значений(слово обязательно между % должно быть, Регистр слов НЕ важен): %AppData%, %Cookies%, %Start Menu%, и т.д.
%WinDir% не вытащит, т.к в этой ветке реестра её нет.

Пример применения модуля после установки:
Код:
property InPath:string; // передаём сюда строку на преобразование
property OutPath:string; // получем через неё результат работы
Код:
Var O :TPathDecode;
......
begin
 // считаем, что объект создан
 O.InPath := '%Cookies%';
 ShowMessage(O.OutPath);
end;
Вложения
Тип файла: rar PathDecode.rar (3.7 Кб, 12 просмотров)

Последний раз редактировалось Alter; 15.08.2009 в 22:02.
Alter вне форума Ответить с цитированием
Старый 15.10.2009, 22:36   #6
Hintman
Пользователь
 
Регистрация: 14.04.2007
Сообщений: 28
По умолчанию

Использование функции GetWindowsDirectory или GetSystemDirectory выдает ошибку. Почему так может быть? Вот, создаю пустой, новый проект...

Код:
procedure TForm1.Button1Click(Sender: TObject);

var
win_dir: PAnsiChar;
i: Cardinal;
s: String;

begin
i:=GetWindowsDirectory(win_dir,MAX_PATH);
s:=IntToStr(i);
ShowMessage(s);
end;
Ошибка возникает при вызове ShowMessage(s).
Ну, естественно, если эту строку убрать, ошибка не пропадает.
В чем же дело?.. Прям на пустом месте проблема...
Изображения
Тип файла: jpg error_.JPG (9.3 Кб, 40 просмотров)
Hintman вне форума Ответить с цитированием
Старый 15.10.2009, 22:39   #7
Hintman
Пользователь
 
Регистрация: 14.04.2007
Сообщений: 28
По умолчанию

Все-таки разобрался... Надо вот так:

procedure TForm1.Button1Click(Sender: TObject);

var
win_dir: PAnsiChar;
i: Cardinal;
s: String;

begin

win_dir := GetMemory(MAX_PATH);
i:=GetWindowsDirectory(win_dir,MAX_ PATH);
FreeMemory(s_sys_dir);


s:=IntToStr(i);
ShowMessage(s);
end;
Hintman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исчез файл <Windows root>\system32\hal.dll Lilu_75 Windows 9 09.03.2011 19:58
Linux & Windows Messir_bastet Свободное общение 14 08.06.2009 00:25
D:\WINDOWS\system32\amvo0.dll>>> 13th Безопасность, Шифрование 8 15.01.2009 12:43
из Паскаля определить запущен ли Windows Трофимов Александр Паскаль, Turbo Pascal, PascalABC.NET 9 14.06.2007 15:25
GetDir & Windows StartUp NovaC Общие вопросы Delphi 1 06.02.2007 06:48