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

Вниз

лаги с paramcount   Найти похожие ветки 

 
vasja123   (2011-05-18 18:53) [0]

Привет мастерам!! помогите с лагом! пытаюсь открыть несколько файлов своей прогой.


procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin

for i:=1 to paramcount do
 begin
   ShowMessage(Paramstr(i));
   ...
 end;

end;


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


 
Anatoly Podgoretsky ©   (2011-05-18 18:59) [1]

Что ты сделал? Только больше не говори, мол открывал.


 
vasja123   (2011-05-18 19:02) [2]

зарегил свой тип файлов. через проводник выделил несколько файлов и отикрываю их своей прогой.


 
Andy BitOff ©   (2011-05-18 19:20) [3]

> vasja123   (18.05.11 19:02) [2]
> через проводник выделил несколько
> файлов и отикрываю их своей прогой.

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


 
vasja123   (2011-05-18 19:37) [4]

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


 
Andy BitOff ©   (2011-05-18 19:41) [5]

> vasja123   (18.05.11 19:37) [4]
> Должен же быть какойто способ

http://tinyurl.com/3ml8n8h


 
Плохиш ©   (2011-05-18 19:45) [6]

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


 
vasja123   (2011-05-18 19:54) [7]

а это понятно. ну вот я запрещу своей проге запускаться повторно. от этого paramcount не изменится же.


 
vasja123   (2011-05-18 20:01) [8]

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


 
Плохиш ©   (2011-05-18 20:04) [9]


> vasja123   (18.05.11 20:01) [8]

Ничего-то ты не понял, да и ладно, мне-то пофигу...


 
vasja123   (2011-05-18 20:11) [10]

дело в том что прога все равно запускается только 1 раз(((


 
Плохиш ©   (2011-05-18 20:17) [11]


> vasja123   (18.05.11 20:11) [10]
>
> дело в том что прога все равно запускается только 1 раз

Доказательства этого утверждения есть?


 
Andy BitOff ©   (2011-05-18 20:17) [12]

> vasja123   (18.05.11 20:11) [10]

Помести ярлык своей программы в папку SendTo. Выбери в проводнике несколько файлов и по РМБ через меню Отправить - (ярлык твоей программы). Тогда получишь список всех выбранных файлов через строку параметров. Но тут тоже тонкость, файлов не должно быть много, точнее не файлов, ограничение длины ком.строки.


 
Andy BitOff ©   (2011-05-18 20:19) [13]

> vasja123   (18.05.11 20:11) [10]
> дело в том что прога все равно запускается только 1 раз(((

Если приведенный код и есть вся программа, то это утверждение не может быть верным.


 
vasja123   (2011-05-18 20:35) [14]

доказательства такие: если прогу просто так запускать несколько раз то она будет открываться, а если выделить несколько файлов и открыть через эту прогу то она откроется только 1 раз


>Andy BitOff

> Помести ярлык своей программы в папку SendTo. Выбери в проводнике
> несколько файлов и по РМБ через меню Отправить - (ярлык
> твоей программы). Тогда получишь список всех выбранных файлов
> через строку параметров. Но тут тоже тонкость, файлов не
> должно быть много, точнее не файлов, ограничение длины ком.
> строки.


это не удобно. представь чтобы в винампе такое было.


 
Andy BitOff ©   (2011-05-18 20:43) [15]

> vasja123   (18.05.11 20:35) [14]
> доказательства такие: если прогу просто так запускать несколько
> раз то она будет открываться, а если выделить несколько
> файлов и открыть через эту прогу то она откроется только
> 1 раз


Не верю, ибо у меня открывает как и положено по копии на каждый переданный файл.


> это не удобно. представь чтобы в винампе такое было.

А мне-то... Удобно, не удобно...


 
vasja123   (2011-05-18 20:47) [16]

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

я кое что нашел может это поможет

if not(SendMessage(Хендел проводника, LVM_GETITEMSTATE, Индекс элемента в проводнике, LVIS_SELECTED) = 0) then
           //Элемент выделен


 
vasja123   (2011-05-18 20:49) [17]

только тут непонятно что писать вместо Хендел проводника и Индекс элемента в проводнике
подскажите плиз


 
Плохиш ©   (2011-05-18 20:50) [18]


> vasja123   (18.05.11 20:35) [14]
>
> доказательства такие: если прогу просто так запускать несколько
> раз то она будет открываться, а если выделить несколько
> файлов и открыть через эту прогу то она откроется только
> 1 раз
>

Ошибка в программе. Нотепад и графический редактор открываются положенное число раз.


 
Andy BitOff ©   (2011-05-18 20:52) [19]

Не надо заниматься глупостями
http://tinyurl.com/6zqyxa9


 
vasja123   (2011-05-18 20:58) [20]

странно у мя и блокнот 1 раз запускается


 
QAZ   (2011-05-18 21:38) [21]


> Эксплореру пофигу на твои желания, он запускает, как и было
> сказано, по экземпляру программы на каждый файл.
> Это задача программы, при запуске, найти уже запущенный
> её экземпляр и передать ему имя файла, а самой закрыться.
>  Ну и соответственно программа должна уметь принимать имена
> файлов из вне.

аяяй какую неправду глаголиш
данная фишка доступна наверно с win3.1


 
vasja123   (2011-05-18 21:46) [22]

QAZ можешь поподробнее


 
vasja123   (2011-05-18 21:46) [23]

QAZ можешь поподробнее


 
QAZ   (2011-05-19 10:58) [24]


> можешь поподробнее

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

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


 
DiamondShark ©   (2011-05-19 11:30) [25]


> vasja123   (18.05.11 21:46) [23]

Ты русская языка мама не училь?

Для нескольких выделенных файлов проводник и по "Ентеру" и по контекстному меню "Открыть" запускает по одной копии приложения, передавая по одному имени в командной строке.

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


 
QAZ   (2011-05-19 11:38) [26]


> DiamondShark ©   (19.05.11 11:30) [25]

аяяй какую неправду глаголиш
ты тоже не постиг дзена ;)


 
vasja123   (2011-05-22 02:54) [27]

кароче я сделаю так:

Как передать строку другому приложению?
получатель:


procedure ReceiveMessage (var Msg: TMessage); message WM_COPYDATA;
..
procedure TFormReceive.ReceiveMessage;
var
 pcd : PCopyDataStruct;
begin
 pcd := PCopyDataStruct(Msg.LParam);
 Caption := PChar(pcd.lpData);
end;

отправитель:

procedure TFormXXX.Button1Click(Sender: TObject);
var
cd : TCopyDataStruct;
begin
cd.cbData := Length(Edit1.Text)+1;
cd.lpData := PChar(Edit1.Text);
SendMessage ( FindWindow("TFormReceive", nil),
              WM_COPYDATA,
              0,
              LParam(@cd));
end;


только вот не понятно как получатель будет знать что ему будут передавать n отправителей((( QAZ твое кунг-фу наверно самое мощьное но я пока еще новичок


 
Германн ©   (2011-05-22 03:14) [28]


> кароче я сделаю так:
>

Троешеник - он всегда троешник.


 
Virgo_Style ©   (2011-05-22 10:28) [29]


> как получатель будет знать что ему будут передавать n отправителей


А какая получателю разница?


 
Юрий Зотов ©   (2011-05-22 11:05) [30]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=904


 
vasja123   (2011-05-22 18:52) [31]


Virgo_Style ©   (22.05.11 10:28) [29]

точно))


> Юрий Зотов ©   (22.05.11 11:05) [30]

Полезная ссылка. Спасибо мастера очень помогли)))



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

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

Наверх




Память: 0.54 MB
Время: 0.009 c
2-1305722012
111222
2011-05-18 16:33
2011.09.04
вывести bold текст


2-1305730411
vasja123
2011-05-18 18:53
2011.09.04
лаги с paramcount


2-1305871555
Tirael
2011-05-20 10:05
2011.09.04
как получить все дочерние и "внучатые" контролы?


1-1258480783
STD
2009-11-17 20:59
2011.09.04
TVirtualStringTree ScrollBar


1-1265825105
Дмитрий Белькевич
2010-02-10 21:05
2011.09.04
Особенность создания компонентных врапперов OLE