Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2015, 12:35   #1
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
Сообщение ParamStr(i), i>2

всем добра) сделал ассоциацию файлов со своей программой, теперь при открытии файла он передается с помощью ParamStr(1), и запускает программу, а если открыть несколько файлов, то каждый открывает себе программу и передается туда... подскажите пожалуйста, как это исправит?
PTyTb32 вне форума Ответить с цитированием
Старый 26.02.2015, 13:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Думаю что придется делать запуск единого экземпляра программы, и в уже запущенный передавать новое имя открываемого файла.
Идея выраженна тут:
http://delphiworld.narod.ru/_all_articles_.html раздел Приложение свое - [68]
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.02.2015, 19:41   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

я такую шляпу делал. кусок кода (do not copy-paste!):
Код:
// Передача командной строки в первую копию программы
procedure SendCommandLine;
var
  PrevMainFormHandle: THandle; // Хэндл формы предыд. копии программы
  FileName: string;
  Len: Integer;
  Data: TCopyDataStruct; // Структура для передачи
  Buffer: array[0..MAX_PATH - 1] of Char; // Буфер для передачи
begin
  FileName:= ParamStr(1);
  Len:= Length(FileName);

  if not FileExists(FileName) or (Len > MAX_PATH)
    then Exit;

  PrevMainFormHandle:= FindWindow('TSourceEditorMainForm', nil);

  if PrevMainFormHandle = 0
    then Exit;

  //Buffer:= FileName;
  FillChar(Buffer, SizeOf(Buffer), #0);
  Move(FileNAme[1], Buffer[0], Len);
  Data.dwData:= 0;
  Data.cbData:= SizeOf(Buffer);
  Data.lpData:= @Buffer;
  SendMessage(PrevMainFormHandle, WM_COPYDATA, 0, Integer(@Data));
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.02.2015, 21:37   #4
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

большое спасибо)))
PTyTb32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Способы узнать путь до исполняемой программы кроме ExtractFilePath(paramstr(0)) Crystallon Общие вопросы Delphi 2 14.11.2011 05:54
ParamStr(1) grater83 Общие вопросы Delphi 6 03.07.2011 23:58
ParamStr Renat21 Общие вопросы Delphi 10 06.02.2011 11:36
paramstr ZhekON Общие вопросы Delphi 11 09.06.2007 13:57