Форум: "Начинающим";
Текущий архив: 2011.09.04;
Скачать: [xml.tar.bz2];
Внизлаги с 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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.003 c