[ Статья ] Находим местоположение WINCMD.INI
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3  Next  :| |:
Total Commander -> Написание плагинов для Total Commander

#16:  Author: Gosha PostPosted: Mon Feb 07, 2005 09:30
    —
SAM
Определить на 100%, где находятся эти файлы нельзя изначально!!!
Приведу несколько примеров, которые это продемонстрируют.
1. Записываем в [HKEY_CURRENT_USER\Software\Ghisler\Total Commander] IniFileName=
Quote:
(пустую строку). TC при этом ни чего не говоря запускается, но ни какого ini файла не создает, а следовательно и найти его нет ни какой возможности.
2. Запишем в этот же ключ недопустимое имя файла, т.е. в имени которого присутсвую не допустимые для имени файла символы. TC при этом весело запускается, но опять ни какого ini файла не создает, а следовательно см. п1.

Тоже происходит если использовать
Quote:
кривые имена файлов
в качестве параметров в командной строке.

#17:  Author: TSergey PostPosted: Mon Feb 07, 2005 09:56
    —
Gosha, с таким подходом можно дойти до стояния: Windows полностью глюкавый и вообще не работает.
Или в качестве INI-файла подсунут файл свопа.
Продолжать можно бесконечно.

Если есть возможность программно узнать имя файла, то никакие оправдания не могут прикрыть лень программиста.

#18:  Author: mozersLocation: с Нижнего PostPosted: Mon Feb 07, 2005 10:22
    —
Gosha
ОК. Давайте исключим из рассмотрения те варианты, при которых сам ТС нормально работать не может.
Что это за работа, если при любом изменении настроек от выдает "Error: Cannot write ! Please remove the write protection!"?

TSergey
Quote:
никакие оправдания не могут прикрыть лень программиста

Суров ты Twisted Evil

#19:  Author: TSergey PostPosted: Mon Feb 07, 2005 10:25
    —
SAM wrote:
TSergey
Quote:
никакие оправдания не могут прикрыть лень программиста

Суров ты Twisted Evil
Дык. Я сам такой же: лентяй еще тот.
Вообще программисты - это самые продвинутые лентяи. Ну кто еще, из-за того, что ему лень раз в день нажать кнопочку, напишет программу, которая будет делать это за него? Twisted Evil

#20:  Author: Gosha PostPosted: Mon Feb 07, 2005 12:09
    —
Тогды можно предложить следующию схему (актуальна, как для пог так и для плугинов)

1. Во время запуска определяем родительский процесс на принадлежность к TC (т.е. из TC ли нас запустили). По наличию %commander_path% определять не рекомендуется (особенно для плугинов)
1.1. Если да, то вытягивает командную строку и парсим ее
1.1.1 Пропарсили удачно и INI файл найден, то заканчиваем поиск.
1.1.2 В параметрах командной строки файла нет, тогда пытаемся искать стандартным образом (HKCU,HKLM,%windir%\wincmd.ini,сохраненные настройки)
1.1.2.1 Поиск прошел удачно. Заканчиваем процесс.
1.1.2.2 Неудачно. Предлагаем пользователю показать файл самостоятельно и заканчиваем поиск с любым результатом.
1.2. Если нет пытаемся стандартным образом определить местоположение (HKCU,HKLM,%windir%\wincmd.ini,сохраненные настройки)
1.2.1 Поиск прошел успешно. Заканчиваем.
1.2.2 Если неудачно, то предлагаем запустить прогу из под TC.

2. Если все таки файл так и найден, можно предложить поиск простым перебором всех INI файлов в системе. (т.е. Поиск файла по диску)

#21:  Author: Gosha PostPosted: Tue Feb 08, 2005 09:32
    —
А теперь к делу.
Кто нить знает, как извлечь командную строку любого процесса, а то кроме создания дочернего потока в голову пока ни чего не приходит.

#22:  Author: NikLocation: Киров PostPosted: Tue Feb 08, 2005 15:28
    —
[quote="SAM"]

Nik
Лишь путь Sad А имя?

Эта функция предназначена для ini-файлов плагинов, поэтому возвращает строку: путь_к_файлу_настройки\имя_плагина.
Как я уже говорил, если убрать имя и вставить вместо него wincmd.ini, то получится полный путь... Если имя wincmd.ini изменено, то такой вариант не подойдет...

#23:  Author: TSergey PostPosted: Tue Feb 15, 2005 08:38
    —
Из радостей значений в реестре.
Не знаю кому пришло в голову так делать (точнее: догадываюсь, но не понимаю за что?): в реестре значения
Code:
[HKEY_CURRENT_USER\Software\Ghisler\Total Commander]
"IniFileName"=".\wincmd.ini"
"FtpIniName"=".\wcx_ftp.ini"

означают ничто иное, как:
Code:
[HKEY_CURRENT_USER\Software\Ghisler\Total Commander]
"IniFileName"="%COMMANDER_PATH%\wincmd.ini"
"FtpIniName"="%COMMANDER_PATH%\wcx_ftp.ini"


Сама по себе запись .\wcx_ftp.ini означает взять файл в текущем каталоге, но ТС это понимает по своему.

ЗЫ. Изменил код в своем сообщении http://forum.wincmd.ru/viewtopic.php?p=1780#1780

#24:  Author: mozersLocation: с Нижнего PostPosted: Tue Feb 15, 2005 11:13
    —
TSergey
Точка в пути - это лишь один из многочисленных вариантов...
Все вы ребята - умные и проблему решаете самым трудным способом.
А я уже говорил о великом множестве ньюансов... И все их надо учесть...
А мы - по простому Wink Немного через одно место. Но... работает всегда правильно Smile
http://total.altruistic.ru/files/GetTotalINI.zip
(спасибо Shura за дельные коррективы)

#25:  Author: VolniyLocation: Местный PostPosted: Tue Feb 15, 2005 11:31
    —
TSergey wrote:
Из радостей значений в реестре.
Не знаю кому пришло в голову так делать (точнее: догадываюсь, но не понимаю за что?):

Эта фича появилась с версии 4.54 (16.07.01), когда переменная %COMMANDER_PATH% еще не существовала (та была введена только в версии 6.0 (17.11.03)).
Quote:
Сама по себе запись .\wcx_ftp.ini означает взять файл в текущем каталоге, но ТС это понимает по своему.

А какой, собственно, каталог является текущим для командера при его запуске? Да свой же, родимый Laughing По крайней мере именно из него он по-дефолту грузит необходимые библиотеки и другое свое файло (totalcmd.inc, иконки, библиотеки архиваторов, описание панелей инструментов и пр.).

#26:  Author: TSergey PostPosted: Tue Feb 15, 2005 11:36
    —
Volniy wrote:
А какой, собственно, каталог является текущим для командера при его запуске?
Тот, который я укажу в ярлыке, а не:
Volniy wrote:
Да свой же, родимый Laughing



ЗЫ. Со времен появления МелкоМагка нелюблю программы, которые считают себя умнее пользователя.

#27:  Author: vserd PostPosted: Mon Jun 13, 2005 18:41
    —
Quote:

А какой, собственно, каталог является текущим для командера при его запуске?

Тот, который я укажу в ярлыке, а не:

Да свой же, родимый

Если в ярлыке запуска указаны полные пути к INI, тогда, берет из них как и ожидается. А если нет, тогда из %CommanderPath% в не зависимости от указания текущей директории.

Пример 1:
Создаем ярлык на рабочем столе.
Прописываем ему командную строку C:\TC\Totalcmd.exe /i=.\dir1\my.ini, в качестве рабочей директории ставим D:\ запускаем коммандер, смотрим на пути: C:\TC\dir1\my.ini.

пример 2:
Создаем ярлык на рабочем столе.
Прописываем ему командную строку C:\TC\Totalcmd.exe /i=..\dir1\my.ini, в качестве рабочей директории ставим D:\1\ запускаем коммандер, смотрим на пути: ..\dir1\my.ini.

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

Давайте Кристиана попробуем порасспрашивать на эту тему. Особенно когда передается относительный путь из ярлыка? Кто может грамотно написать на английском текст с проблемой? (у меня только чтение по английскому, писать не могу, и на слух не воспринимаю :((( )

#28:  Author: NikLocation: Киров PostPosted: Mon Jun 13, 2005 20:08
    —
А может попросить Гислера - пусть внедрит в плагинный интерфейс функцию для определения путь к ini-файлу? Это дело-то на пару минут...

#29:  Author: mozersLocation: с Нижнего PostPosted: Mon Jun 13, 2005 20:30
    —
2Nik
Насколько я знаю, Гислер пообещал (еще до выхода 6.53) сделать пару переменных $MAININI и $FTPINI.
Но как известно - обещанного три года ждут Sad

#30:  Author: mozersLocation: с Нижнего PostPosted: Tue Jun 14, 2005 16:58
    —
Уже известный вам архивчик дополнился примером на Delphi (автор - Vladimir Serdyuk)
Алгоритм тот же - путь к файлам INI извлекается из появляющегося на мгновение окна About.
Рекомендуется все таки записать найденнные пути куда нибудь (лучше - в качестве относительных) чтобы не дергать то и дело дракона за хвост Wink



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3  Next  :| |:
Page 2 of 3

Powered by phpBB © 2001, 2005 phpBB Group