Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Путь к файлу [XP]


Страницы:   1 2

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]

> Т.е., пользователь пускает и пускает файлы,
> а результатов не видит.

Что верно, то верно.... но я же несобирался полностью писать автору программу. В общих чертах понятно, далее если, что у него не получится пусть спрашивает, поможем.... Более того, он(автор) может остановится на первом варианте...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо