Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[ Статья ] Находим местоположение WINCMD.INI
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Gosha



Joined: 02 Feb 2005
Posts: 11

Post (Separately) Posted: Mon Feb 07, 2005 09:30    Post subject: Reply with quote

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

Тоже происходит если использовать
Quote:
кривые имена файлов
в качестве параметров в командной строке.
Back to top
View user's profile Send private message
TSergey



Joined: 24 Jan 2005
Posts: 49

Post (Separately) Posted: Mon Feb 07, 2005 09:56    Post subject: Reply with quote

Gosha, с таким подходом можно дойти до стояния: Windows полностью глюкавый и вообще не работает.
Или в качестве INI-файла подсунут файл свопа.
Продолжать можно бесконечно.

Если есть возможность программно узнать имя файла, то никакие оправдания не могут прикрыть лень программиста.
Back to top
View user's profile Send private message
mozers



Joined: 16 Dec 2004
Posts: 82
Location: с Нижнего

Post (Separately) Posted: Mon Feb 07, 2005 10:22    Post subject: Reply with quote

Gosha
ОК. Давайте исключим из рассмотрения те варианты, при которых сам ТС нормально работать не может.
Что это за работа, если при любом изменении настроек от выдает "Error: Cannot write ! Please remove the write protection!"?

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

Суров ты Twisted Evil
Back to top
View user's profile Send private message
TSergey



Joined: 24 Jan 2005
Posts: 49

Post (Separately) Posted: Mon Feb 07, 2005 10:25    Post subject: Reply with quote

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

Суров ты Twisted Evil
Дык. Я сам такой же: лентяй еще тот.
Вообще программисты - это самые продвинутые лентяи. Ну кто еще, из-за того, что ему лень раз в день нажать кнопочку, напишет программу, которая будет делать это за него? Twisted Evil
Back to top
View user's profile Send private message
Gosha



Joined: 02 Feb 2005
Posts: 11

Post (Separately) Posted: Mon Feb 07, 2005 12:09    Post subject: Reply with quote

Тогды можно предложить следующию схему (актуальна, как для пог так и для плугинов)

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 файлов в системе. (т.е. Поиск файла по диску)
Back to top
View user's profile Send private message
Gosha



Joined: 02 Feb 2005
Posts: 11

Post (Separately) Posted: Tue Feb 08, 2005 09:32    Post subject: Reply with quote

А теперь к делу.
Кто нить знает, как извлечь командную строку любого процесса, а то кроме создания дочернего потока в голову пока ни чего не приходит.
Back to top
View user's profile Send private message
Nik



Joined: 01 Jan 2005
Posts: 574
Location: Киров

Post (Separately) Posted: Tue Feb 08, 2005 15:28    Post subject: Reply with quote

[quote="SAM"]

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

Эта функция предназначена для ini-файлов плагинов, поэтому возвращает строку: путь_к_файлу_настройки\имя_плагина.
Как я уже говорил, если убрать имя и вставить вместо него wincmd.ini, то получится полный путь... Если имя wincmd.ini изменено, то такой вариант не подойдет...
Back to top
View user's profile Send private message
TSergey



Joined: 24 Jan 2005
Posts: 49

Post (Separately) Posted: Tue Feb 15, 2005 08:38    Post subject: Reply with quote

Из радостей значений в реестре.
Не знаю кому пришло в голову так делать (точнее: догадываюсь, но не понимаю за что?): в реестре значения
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
Back to top
View user's profile Send private message
mozers



Joined: 16 Dec 2004
Posts: 82
Location: с Нижнего

Post (Separately) Posted: Tue Feb 15, 2005 11:13    Post subject: Reply with quote

TSergey
Точка в пути - это лишь один из многочисленных вариантов...
Все вы ребята - умные и проблему решаете самым трудным способом.
А я уже говорил о великом множестве ньюансов... И все их надо учесть...
А мы - по простому Wink Немного через одно место. Но... работает всегда правильно Smile
http://total.altruistic.ru/files/GetTotalINI.zip
(спасибо Shura за дельные коррективы)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Feb 15, 2005 11:31    Post subject: Reply with quote

TSergey wrote:
Из радостей значений в реестре.
Не знаю кому пришло в голову так делать (точнее: догадываюсь, но не понимаю за что?):

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

А какой, собственно, каталог является текущим для командера при его запуске? Да свой же, родимый Laughing По крайней мере именно из него он по-дефолту грузит необходимые библиотеки и другое свое файло (totalcmd.inc, иконки, библиотеки архиваторов, описание панелей инструментов и пр.).
Back to top
View user's profile Send private message
TSergey



Joined: 24 Jan 2005
Posts: 49

Post (Separately) Posted: Tue Feb 15, 2005 11:36    Post subject: Reply with quote

Volniy wrote:
А какой, собственно, каталог является текущим для командера при его запуске?
Тот, который я укажу в ярлыке, а не:
Volniy wrote:
Да свой же, родимый Laughing



ЗЫ. Со времен появления МелкоМагка нелюблю программы, которые считают себя умнее пользователя.
Back to top
View user's profile Send private message
vserd



Joined: 26 Apr 2005
Posts: 118

Post (Separately) Posted: Mon Jun 13, 2005 18:41    Post subject: Reply with quote

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.

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

Давайте Кристиана попробуем порасспрашивать на эту тему. Особенно когда передается относительный путь из ярлыка? Кто может грамотно написать на английском текст с проблемой? (у меня только чтение по английскому, писать не могу, и на слух не воспринимаю :((( )
Back to top
View user's profile Send private message
Nik



Joined: 01 Jan 2005
Posts: 574
Location: Киров

Post (Separately) Posted: Mon Jun 13, 2005 20:08    Post subject: Reply with quote

А может попросить Гислера - пусть внедрит в плагинный интерфейс функцию для определения путь к ini-файлу? Это дело-то на пару минут...
Back to top
View user's profile Send private message
mozers



Joined: 16 Dec 2004
Posts: 82
Location: с Нижнего

Post (Separately) Posted: Mon Jun 13, 2005 20:30    Post subject: Reply with quote

2Nik
Насколько я знаю, Гислер пообещал (еще до выхода 6.53) сделать пару переменных $MAININI и $FTPINI.
Но как известно - обещанного три года ждут Sad
Back to top
View user's profile Send private message
mozers



Joined: 16 Dec 2004
Posts: 82
Location: с Нижнего

Post (Separately) Posted: Tue Jun 14, 2005 16:58    Post subject: Reply with quote

Уже известный вам архивчик дополнился примером на Delphi (автор - Vladimir Serdyuk)
Алгоритм тот же - путь к файлам INI извлекается из появляющегося на мгновение окна About.
Рекомендуется все таки записать найденнные пути куда нибудь (лучше - в качестве относительных) чтобы не дергать то и дело дракона за хвост Wink
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group