![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Путь к файлу [XP]
Litestone © (2007-02-18 13:48:00)Здравствуйте, неподскажет ли кто нибудь как узнать путь к файлу, который запускает мою программу во время её работы.
Leonid Troyanovsky (2007-02-20 21:29:00) [1]
> RASkov (20.02.07 00:31) [30]
> и тем самым OS работает с одной копией программы.... имхо.
Да, пожалуй, что оно так и есть.
> RASkov (20.02.07 00:42) [31]
> (> просто "перетаскиванием" файла .myfile на
> > значок программы, запускается еще одна копия)
Да уж.
Не знаю, предусмотрено ли искомое взаимодействие проводника
с запускаемым. Хотя, сама тема не возбуждает, бо то, что когда-то
попадалось на глаза из SDK Explorer with DDE вызывало тоску.
Врядли сейчас что-то улучшилось.
Возможно, что, в самом деле, стоит послать всю эту ddeml
и изготовить требуемые грабли собс-ручно.
С учетом, конечно, требований [7] - там нет ничего лишнего,
чесслово.
--
Regards, LVT.
RASkov (2007-02-20 00:42:00) [2]> По поводу значка - постараюсь разобраться завтра.
(> просто "перетаскиванием" файла .myfile на
> значок программы, запускается еще одна копия)
Значок - имелось ввиду <Project>.exe в проводнике Windows....
так, для ясности...на всяк.
RASkov (2007-02-20 00:31:00) [3]> Не уверен. Но, кажется, что, все же, копия отрабатывает.
> Неохота исходники Windows изучать (мне их еще найти их надо)
> .
Как там может показаться, что работает код на OnCreate, т.е. я про вторую копию, я для проверки убрал из метода Create формы все и перенес на ButtonClick; После старта программы если не нажимая сначала кнопку попытаться "запустить" файл *.myfie система ругается, что не найден файл зарегистрированный для открытия *.myfile. После нажатия кнопки (выполнения бывшего OnCreate) все встает на свои места....
Всеж DDE оно и в африке DDE. Мы ж DDE сервер регистрируем и тем самым OS работает с одной копией программы.... имхо.
Leonid Troyanovsky (2007-02-20 00:18:00) [4]
> RASkov (19.02.07 16:16) [27]
> "Может" - не нужен, дабы если б он лежал на путях, то его
> бы непременно раздавили, т.е. нашли....
Принимается.
> Первый способ тоже работает, только, что проверил (Win XP
> SP2, D7)
> И мне практически ничего менять не пришлось, добавил у формы
> два события Create и Destroy, на форму Memo1, раздел implementation
> полность и как есть скоприровал со статьи по ссылке, подправил
> *.reg, импортировал, скомпилил и положил exe'шник по пути
> из *.reg - далее создал файл 123.myfile и ... все нормально,
Спасибо, все стало более понятным.
> но...
> мне кажется для автора вопроса более подходит второй вариант,
> или нужно дорабатывать первый - Обработку при передаче
> через параметр (просто "перетаскиванием" файла .myfile на
> значок программы, запускается еще одна копия).
> Вообщем-то вариант Leonid Troyanovsky [5] рабочий.
Вообще-то, это вариант Майкла. Или, если угодно, Михаэля,
бо, все же он германец, IMHO.
По поводу значка - постараюсь разобраться завтра.
> Кстати с вариантом DDE этого непроисходит, т.е. нет никакой
> второй копии, работа только с одним экземпляром программы.
Не уверен. Но, кажется, что, все же, копия отрабатывает.
Неохота исходники Windows изучать (мне их еще найти их надо).
--
Regards, LVT.
RASkov (2007-02-19 16:24:00) [5]> надо узнать путь файла, который запустил её второй раз во время её работы.).
> Winamp узнаёт путь файла который был запущен во время работы Winamp
> запускаемая программа ищет окно своей раннее запущенной копии
Кстати с вариантом DDE этого непроисходит, т.е. нет никакой второй копии, работа только с одним экземпляром программы.
RASkov (2007-02-19 16:16:00) [6]> Может он не лежит на путях поиска.
"Может" - не нужен, дабы если б он лежал на путях, то его бы непременно раздавили, т.е. нашли....
> [26] Litestone (19.02.07 15:44)
Первый способ тоже работает, только, что проверил (Win XP SP2, D7)
И мне практически ничего менять не пришлось, добавил у формы два события Create и Destroy, на форму Memo1, раздел implementation полность и как есть скоприровал со статьи по ссылке, подправил *.reg, импортировал, скомпилил и положил exe'шник по пути из *.reg - далее создал файл 123.myfile и ... все нормально, но...
мне кажется для автора вопроса более подходит второй вариант, или нужно дорабатывать первый - Обработку при передаче через параметр (просто "перетаскиванием" файла .myfile на значок программы, запускается еще одна копия).
Вообщем-то вариант Leonid Troyanovsky [5] рабочий.
Litestone (2007-02-19 15:44:00) [7]Похоже эта тайна останется неразгаданной...
Leonid Troyanovsky (2007-02-19 13:43:00) [8]
> Litestone (19.02.07 12:00) [23]
> Да и ещё забыл сказать что мне пришлось найти в папке с
> Delphi Файл Ddeml.pas и вставить его в папку с проектом.
Может он не лежит на путях поиска.
--
Regards, LVT.
Leonid Troyanovsky (2007-02-19 13:40:00) [9]
> Litestone (19.02.07 11:51) [22]
> Oперационная система XP SP2
> Delphi 2006
Не знаю на моем w2k3 все нормально, вот только что испытал.
> Да и к тому же в статье было написано "DDE - вымирающий
> зверь, и, наверное, последний ему заповедник - взаимодействие
Ну, так Explorer продолжает понимать DDE.
> приложения с Explorer" может поэтому? Сам незнаю код написан,
> а не работает.
Мне неудобно спрашивать, но:
- Выполнялся ли реестровый скрипт .reg ?
- Соответствуют ли путь к exe с описанным в нем?
- Чего, вообще, написано в HCR\.myfile и HCR\myfile ?
Проверь, если не влом, а то неохота идти на машину с XP.
Все ж, надо довести исследование до конца.
> Хотя есть ещё одна особенность uses Ddeml; пришлось писать
> после Implementation.
Ну, да, Майкл привел, как раз, раздел implementation.
--
Regards, LVT.
Litestone (2007-02-19 12:00:00) [10]Да и ещё забыл сказать что мне пришлось найти в папке с Delphi Файл Ddeml.pas и вставить его в папку с проектом.
Litestone (2007-02-19 11:51:00) [11]Oперационная система XP SP2
Delphi 2006
Да и к тому же в статье было написано "DDE - вымирающий зверь, и, наверное, последний ему заповедник - взаимодействие приложения с Explorer" может поэтому? Сам незнаю код написан, а не работает.
Хотя есть ещё одна особенность uses Ddeml; пришлось писать после Implementation.
Leonid Troyanovsky (2007-02-18 20:50:00) [12]
> Litestone (18.02.07 18:54) [20]
> Первый вариант у меня не работал вообще хотя весь код я
Вообще-то, мы здесь стараемся учиться на чужих ошибках,
поэтому для меня, например, было б весьма интересно узнать,
что именно не работало. Потому, как до сих пор, этот код
считался вполне работоспособным.
Если не затруднит - нерабочий код в студию.
С указанием ОС и других интимностей.
--
Regards, LVT.
Litestone (2007-02-18 18:54:00) [13]Первый вариант у меня не работал вообще хотя весь код я написал
полностью, поэтому я и решил остановиться на втором.
А чего тут переделывать, всё вроде как часы работает, мне лишь бы
файлы принимал, остальное мелочи которые я и сам сумею сделать.
И вообще громадное спасибо всем !!!!!
Leonid Troyanovsky (2007-02-18 18:53:00) [14]
> RASkov (18.02.07 18:33) [18]
> Вот заполню пробел...по активации :)
Не, так нельзя.
Т.е., SetForegroundWindow должно делать то приложение,
которое в настоящий момент foreground.
А таким является запускаемое, т.к. оно пускается юзером
(из проводника, cmd & etc).
--
Regards, LVT.
RASkov (2007-02-18 18:33:00) [15]> [16] Litestone (18.02.07 18:17)
Вот заполню пробел...по активации :)
procedure TForm1.CopyData(var Msg: TWMCopyData);
.....
begin
CopyDataStructure := Msg.CopyDataStruct^;
.......
Application.Restore;
Application.BringToFront;
inherited;
end;
RASkov (2007-02-18 18:28:00) [16]> [16] Litestone (18.02.07 18:17)
Просто интересно - на каком варианте остановился?
Дело в том, что как и правильно замечено в [12], в моем варианте нет активизации формы при получении данных. И работает только если в делфи не загружен "этот" проект.
Litestone (2007-02-18 18:17:00) [17]Почему, всё отлично работает ?:)
RASkov (2007-02-18 17:50:00) [18]> [14] Leonid Troyanovsky © (18.02.07 17:43)
Ладно, уговорил :)
>Автор не пользуйся моим вариантом, по моей лени, я не стал его переделывать для твоих целей, и посему он тебе не подойдет. чесно.
:)
ЗЫ ОФФТОП
Leonid Troyanovsky (2007-02-18 17:43:00) [19]
> RASkov (18.02.07 17:01) [13]
> Что верно, то верно.... но я же несобирался полностью писать
> автору программу.
Дык, и мой комментарий адресован, скажем, не только автору.
--
Regards, LVT.
RASkov (2007-02-18 17:01:00) [20]> Т.е., пользователь пускает и пускает файлы,
> а результатов не видит.
Что верно, то верно.... но я же несобирался полностью писать автору программу. В общих чертах понятно, далее если, что у него не получится пусть спрашивает, поможем.... Более того, он(автор) может остановится на первом варианте...