Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.058 c
2-1200445189
VladSel
2008-01-16 03:59
2008.02.10
сравнение чисел


1-1194184086
Zakir
2007-11-04 16:48
2008.02.10
Передача данных с помощью сообщений windows


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


15-1198821897
user_
2007-12-28 09:04
2008.02.10
Работь программистом


9-1166878569
maxProg
2006-12-23 15:56
2008.02.10
Direct3D - Освещение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский