Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

ВОПРОС ПО n-файлам   Найти похожие ветки 

 
[BAD]Angel ©   (2002-11-27 15:15) [0]

Уважаемые мастера!
Пример:
Если в проводнике (Explorer) выделить n-ое кол-во mp3 файлов, шелкнуть правой кнопкой мыши выбрать соответствующий пункт, то они добавятся в WinAmp (PlayList)...

Как это реализовать в проекте?


 
[BAD]Angel ©   (2002-11-27 15:37) [1]

мда... :-(((( видать не судьба мне узнать ответ на этот вопрос!


 
Smithson ©   (2002-11-27 15:42) [2]

Ishell чего-то там не помню. Короче, смотри расширения оболочки и интерфейсы. Если эти термины незнакомы, то стоит поискать готовые компненты, но лично я сумневаюсь в их существовании.


 
[BAD]Angel ©   (2002-11-27 15:51) [3]

Можно и без расширения оболочки!
В реестре прописываешь строку project1.exe "%1", после чего в проект поступает ParamStr(1) имя и путь к выделенному файлу... Но если файлов много, то запустится много копий проекта... Что и есть проблемой!!!

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


 
down   (2002-11-27 15:55) [4]

В Demos есть пример ShellExt, посмотри.


 
[BAD]Angel ©   (2002-11-27 16:01) [5]

смотрел... не то!
Говорю же расширение оболочки мне не нужно......


 
[BAD]Angel ©   (2002-11-27 16:20) [6]

идеи кончились? жалко! :-(


 
[BAD]Angel ©   (2002-11-28 13:27) [7]

...


 
_Nicola_   (2002-11-28 15:10) [8]

В FAQе есть ответ на подобный вопрос. Надо обрабатывать в программе ParamStr(1). А от новых запусков принимать только строки запуска. Так вот, вся сложность в том, чтобы передать эту строку в проект. В ответе на этот вопрос это делается, через GlobalAddAtom и посылку сообщений. Мне тоже это надо, но что-нибудь попроще.


 
[BAD]Angel ©   (2002-11-29 12:47) [9]

Это все я сдела... но я не могу отследить, когда придет последний файл... В этом-то и сложность.


 
RV ©   (2002-11-29 12:54) [10]

из раслылки этого сайта

{ На эту форму можно бросить файл (например из проводника) и
он будет открыт }unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ShellAPI {обязательно!};type TForm1 = class(TForm) Memo1: TMemo; FileNameLabel: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); protected {Это и есть самая главная процедура} procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles; end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.WMDropFiles(var Msg: TMessage);var Filename: array[0 .. 256] of Char; Count : integer;begin { Получаем количество файлов (просто пример) } nCount := DragQueryFile( msg.WParam, $FFFFFFFF, acFileName, cnMaxFileNameLen); { Получаем имя первого файла } DragQueryFile( THandle(Msg.WParam), 0, { это номер файла } Filename,SizeOf(Filename) ) ; { Открываем его } with FileNameLabel do begin Caption := LowerCase(StrPas(FileName)); Memo1.Lines.LoadfromFile(Caption); end; { Отдаем сообщение о завершении процесса } DragFinish(THandle(Msg.WParam));end;procedure TForm1.FormCreate(Sender: TObject);begin { Говорим Windows, что на нас можно бросать файлы } DragAcceptFiles(Handle, True); end;procedure TForm1.FormDestroy(Sender: TObject);begin { Закрываем за собой дверь золотым ключиком} DragAcceptFiles(Handle, False); end;end.


 
[BAD]Angel ©   (2002-11-29 13:01) [11]

Про Drag"n"Drop я знаю. Но мне нужно именно через контекстное меню... Не обязательно конечно таким алгоритмом... можете предложить другой! :-)


 
[BAD]Angel ©   (2002-11-29 13:26) [12]

ПОМОГИТЕЕЕеееее!!!! :(


 
_Nicola_   (2002-11-29 14:27) [13]

Блин, объясни четче, в чем проблема. Ты не знаешь как в контекстное меню пункт добавить?


 
[BAD]Angel ©   (2002-11-30 12:28) [14]

_Nicola_: Я уже задолбался объяснять! :-)

Добавления пункта в конт. меню:
В реестре есть ключ: HKEY_CLASSES_ROOT\*\shell сюда добавляем следующее: \МОЙ ПРОЕКТ\command

command = "путь к проекту\имя проекта.exe "%l""

Все... пункт добавлен!

После чего выделяешь файлы, нажимаеш пункт меню и... ТУТ ПРОБЛЕМА
сколько выделено файлов, столько копий моего проекта запускается с параметром "%l", т.е. ParamStr(1) = путь и имя выделенного файла...

НУ ТАК ВОТ: КАК ОПРЕДЕЛИТЬ ЧТО ПРИШЕЛ ПОСЛЕДНИЙ ФАЙЛ ИЗ ВЫДЕЛЕННЫХ?????


 
AlexT1000   (2002-11-30 13:08) [15]

извини. мне просто интересно.

а в экзешник при таких раскладах приходит только одно имя файла?

т.е чуму равно ParamCount

мож это надо в DDE смотреть?!


 
[BAD]Angel ©   (2002-11-30 13:14) [16]

в экзешник приходят два параметра

ParamStr(0)=путь и имя проекта
ParamStr(1)=путь и имя выделенного файла

а ParamCount соотв. равен 2.


 
AlexT1000   (2002-11-30 13:42) [17]

поставь блокировку на запуск твоего приложения.
т.е .чтобы запускалась только одна копия его. (код ищи в факах)

и ты будешь получать файл (можешь его записывать в какойто свой временой файл и посылать общее сообщение для системы типа ПЕРЕЧИТАТЬ ПЛАЙЛИСТ (создай его сам)) копия твоего приложения его получит и перечитает этот лист.


 
[BAD]Angel ©   (2002-11-30 14:21) [18]

а поточнее можно... у меня еже мозги плавятся :-(
Я бы хотел конкретно на примере! (кодом)


 
AlexT1000   (2002-11-30 16:36) [19]

кодом нельзя. работы много.

типа

код в DPR

AddToMyTempFile(ParamStr(1));

if isMyAppRun then begin
Handle := FindMyWindowHandle;
SendMessage(Handle,MyMessage,0,0);
Exit;
end;

isMyAppRun - функция определения того загружена уже твоя прога или нет

FindMyWindowHandle - функция поиска окна в виндах
см. FindWindow
на получение этого сообщения нужно поставить обработчик

procedure MyMess(Var Message :TMessage); message MYMESSAGE;


procedure MyMess(Var Message :TMessage);
begin
ReadListFromMyTempFile;
end;

см. RegisterWindowMessage и т.д и т.п



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
1-28074
alvin
2002-11-28 07:28
2002.12.09
Файлы ресурсов


6-28157
Aristokrat
2002-10-11 13:22
2002.12.09
Сообщения по локалке


14-28210
Agent Smith
2002-11-16 19:20
2002.12.09
картинки для рабочего стола


4-28365
Nomad.kz
2002-10-23 14:58
2002.12.09
определить размер файла


8-28148
Fredericco
2002-07-05 16:31
2002.12.09
Вопрос по захвату потокового видео.