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

Вниз

Добавление файлов в программу.   Найти похожие ветки 

 
NaRuTo ©   (2008-01-17 10:07) [0]

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


 
KilkennyCat ©   (2008-01-17 10:15) [1]


> как можно выделить несколько файлов и при нажатии на них


комбинируя клики мышью, перемещение курсора и шифт с ктрлом


> эти файлы открывались в моём плеере (добавлялись в список!
> )
>


так собсссно, что нужно: открыть их всех, или добавить в список?


 
NaRuTo ©   (2008-01-17 10:26) [2]

Ну вот например выделишь файлы, кликнишь по ним и они воспроизводятся в каком нибудь плеере.


 
oldman ©   (2008-01-17 11:01) [3]


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


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

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


 
Dennis I. Komarov ©   (2008-01-17 11:04) [4]

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

ParamStr ?


 
sniknik ©   (2008-01-17 11:08) [5]

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

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


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

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


 
Dennis I. Komarov ©   (2008-01-17 11:48) [7]

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

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


 
KilkennyCat ©   (2008-01-17 12:47) [8]


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


и не говори :)


 
NaRuTo ©   (2008-01-17 15:09) [9]

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


 
Dennis I. Komarov ©   (2008-01-17 15:37) [10]

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

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


 
sniknik ©   (2008-01-17 15:49) [11]

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

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


 
sniknik ©   (2008-01-17 15:53) [12]

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


 
NaRuTo ©   (2008-01-17 16:58) [13]

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;
Правильно?


 
clickmaker ©   (2008-01-17 17:00) [14]


> Правильно?

а работает?


 
NaRuTo ©   (2008-01-17 17:05) [15]

Работает!


 
clickmaker ©   (2008-01-17 17:08) [16]


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

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


 
sniknik ©   (2008-01-17 17:41) [17]

как же вы любите все усложнять...
куча кода вместо
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;

...

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


 
NaRuTo ©   (2008-01-17 19:26) [18]

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


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

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


 
sniknik ©   (2008-01-17 19:55) [20]

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

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


 
NaRuTo ©   (2008-01-17 20:18) [21]

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


 
KilkennyCat ©   (2008-01-17 21:25) [22]


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


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



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

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

Наверх




Память: 0.52 MB
Время: 0.02 c
15-1199797926
Kolan
2008-01-08 16:12
2008.02.10
Поставил RAD 2007, хоть бы с русским баг исправили&#133


15-1199963354
Layner
2008-01-10 14:09
2008.02.10
Люди, объясните в чем подвох, сам разобрать не могу


8-1172907142
Maxim_k
2007-03-03 10:32
2008.02.10
RGBToCMYK


15-1199920272
ArtemESC
2008-01-10 02:11
2008.02.10
Посоветуйте что-нибудь играбельное...


2-1200743036
Squirrel
2008-01-19 14:43
2008.02.10
использование дерева