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

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

Добавление файлов в программу. [D7, XP]


Страницы:   1 2

NaRuTo ©   (2008-01-17 10:07:00) 

Я делаю Media Player, как можно выделить несколько файлов и при нажатии на них, эти файлы открывались в моём плеере (добавлялись в список!)


KilkennyCat   (2008-01-17 21:25:00) [1]


> NaRuTo ©   (17.01.08 20:18) [21]


не подумайте, что хочу обидеть, да и я ведь не всей информацией владею, мож Вам только этот плеер нужен и все... но если не только этот плеер, если и дальше планируется, то лучше бы учить английский. Никто за Вас переводить документацию такого рода не будет - это неинтересно.


NaRuTo   (2008-01-17 20:18:00) [2]

Да я не пойму чо надо в первом параметре писать, английского я не учу, я только так немного знаю


sniknik   (2008-01-17 19:55:00) [3]

> А что указывать то в .dpr файле одного WM_COPYDATA мало
скзал же "Работает!"?

> В основном морока у меня заключается с FindWindow можете пояснить какие параметры нужно вписывать
F1, там все есть.


NaRuTo   (2008-01-17 19:39:00) [4]

В основном морока у меня заключается с FindWindow можете пояснить какие параметры нужно вписывать


NaRuTo   (2008-01-17 19:26:00) [5]

А что указывать то в .dpr файле одного WM_COPYDATA мало


sniknik   (2008-01-17 17:41:00) [6]

как же вы любите все усложнять...
куча кода вместо
procedure TForm1.CopyData(var Msg: TWMCopyData); // message WM_COPYDATA;
begin
with Msg.CopyDataStruct^ do
  if dwData = 255
    then Label1.Caption:= PChar(lpData) // это вместо OpenFile(Copy(ParamStr, 0, i - 1)); который не знаю что у тебя делает
    else inherited;
end;

проверка isDelimiter и тд. лишняя т.к. сообщение с данными посылаешь ты сам из другой копии, и в этой копии только 1 параметр - имя файла, какой смысл и куда вставлять разделители чтобы после их проверять?

при посылке данные в указателе строки должны завершатся #0 (понятно зачем думаю?) например так
var
 CopyDataStructure: TCopyDataStruct;
 Msg: string;
begin
 Msg:= 'Тестовая строка';

 with CopyDataStructure do begin
   dwData:= 255;
   cbData:= Length(Msg)+1; //вот собственно, +1 это с захватом завершающего #0
   lpData:= @Msg[1];
 end;

...

и все в общем то...


clickmaker   (2008-01-17 17:08:00) [7]


> [15] NaRuTo ©   (17.01.08 17:05)
> Работает!

значит, неправильно )


NaRuTo   (2008-01-17 17:05:00) [8]

Работает!


clickmaker   (2008-01-17 17:00:00) [9]


> Правильно?

а работает?


NaRuTo   (2008-01-17 16:58:00) [10]

procedure TMainForm.CopyData(var Msg: TWMCopyData);
var

 ParamStr: string;
 CopyDataStructure: TCopyDataStruct;
 i: integer;
 len: integer;
begin

 CopyDataStructure := Msg.CopyDataStruct^;
 ParamStr := '';
 len := CopyDataStructure.cbData;
 for i := 0 to len - 1 do
 begin
   ParamStr := ParamStr + (PChar(CopyDataStructure.lpData) + i)^;
 end;

 i := 0;
 while not (Length(ParamStr) = 0) do
 begin
   if isDelimiter(#13, ParamStr, i) then
   begin
     OpenFile(Copy(ParamStr, 0, i - 1));
     ParamStr := Copy(ParamStr, i + 1, Length(ParamStr) - i - 1);
   end;
   inc(i);
 end;
 inherited;
end;
Правильно?


sniknik   (2008-01-17 15:53:00) [11]

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


sniknik   (2008-01-17 15:49:00) [12]

> Так может кто-нибудь напишет мне эти процедуры WM_COPYDATA
гугль.
это кстати не процедура, это тип сообщения на передачу данных между процессами (не единственный вариант кстати, можно еще к примеру, может даже удобнее будет, держать список с "маппед" файле, в памяти... т.е. открываешь файл если он есть докладываешь запись, закрываешь, отключаешься... если фай отсутствует то создаешь и продолжаешь работу в этой копии).

ключевые слова даны, ищи по ним, общая идея описана... ищи, читай по частям, попытайся объединить все в "кучу" как понял... чего не понял спрашивай. и не проси чтобы ктото тебе чтото написал/за тебя, сам пиши что получилось чтобы проверили.
если думаешь что чтото неправильно в идее - опровергни/скажи почему не устраивает. ... делай чтонибудь в общем.


Dennis I. Komarov   (2008-01-17 15:37:00) [13]

> [9] NaRuTo ©   (17.01.08 15:09)

Зачем? Кто программу пишет?


NaRuTo   (2008-01-17 15:09:00) [14]

Так может кто-нибудь напишет мне эти процедуры WM_COPYDATA


KilkennyCat   (2008-01-17 12:47:00) [15]


> Dennis I. Komarov ©   (17.01.08 11:48) [7]


и не говори :)


Dennis I. Komarov   (2008-01-17 11:48:00) [16]

> [6] sniknik ©   (17.01.08 11:10)

Это был контрольный :)


sniknik   (2008-01-17 11:10:00) [17]

кстати findwindow довольно медленная, а запуски в таком варианте следуют очень быстро... есть шанс что всетаки задублируются... еще думаю нужно мьютексом подстраховаться...


sniknik   (2008-01-17 11:08:00) [18]

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

теоретически так и есть, попробуй реализовать на практике. ;о)) потребуется paramstr(), WM_COPYDATA и findwindow... ну и там по ходу сообразишь, может еще чего.


Dennis I. Komarov   (2008-01-17 11:04:00) [19]

> [0] NaRuTo ©   (17.01.08 10:07)

ParamStr ?


oldman   (2008-01-17 11:01:00) [20]


> NaRuTo ©   (17.01.08 10:26) [2]
> Ну вот например выделишь файлы, кликнишь по ним и они воспроизводятся
> в каком нибудь плеере.


И воспроизводятся они вот так вот сразу все???
Или таки добавляются в плейлист, а воспроизводятся по очереди?

Кстати,
Выделяем несколько файлов doc и жмем ентер.
В ворде они тоже открываются по очереди, а не все сразу одновременно.
Вот ведь какая штука...


Страницы:   1 2

Наверх

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