Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
ВнизДобавление файлов в программу. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c