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

Вниз

Передать параметр первой копии программы   Найти похожие ветки 

 
tsarevep ©   (2002-07-10 02:41) [0]

Здравствуйте всем!
Ребят поможите, а то зациклился совсем.
Вообщем програма SDI интерфейс, с возможностью открытия нескольких документов. Повторный экземпляр программы недопстим и не должен быть нужен. Когда с програмной строки запускаю на открытие документ, то все прекрасно открывается, но если программа уже запущена, естественно ParamStr идёт для второй копии. И просто закрывается второй экземпляр.
Подскажите плиз как передать этот параметр первой копии программы.
С уважением.


 
tsarevep ©   (2002-07-10 10:10) [1]

Ну разве никто этим не занимался?
С уважением.


 
Fiend ©   (2002-07-10 10:13) [2]

я делал так:
при загрузке экземпляра искал окно предидущего инстанса. Затем посылал ему по хэндлу сообщение с параметрами. Если нада могу вырезать текст


 
tsarevep ©   (2002-07-10 10:49) [3]

Конечно б надо!
Спасибо заранее.


 
Fiend ©   (2002-07-10 10:57) [4]

const WM_MESSAGETOSERVER = WM_USER+1;

type
TMainForm = class(TForm)
private
{ Private declarations }
procedure MESSAGETOSERVER(var Message: TMessage); message WM_MESSAGETOSERVER;
public
{ Public declarations }
end;

procedure TMainForm.MESSAGETOSERVER(var Message: TMessage);
begin
//Это обработчик пользовательского события
case Message.WParam of
1 : pmShutDownServerClick(nil);
2 : pmStopServerClick(nil);
3 : StartServer;
end;
end;

А это функция которая ищет окно прдидущего инстанса, если находит возвращает его хэндл, если нет то 0

function FindHwnd: hWnd;
VAR Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
Result:=0;
Wnd := MainForm.Handle;
WHILE Wnd <> 0 DO
BEGIN
{


 
handra ©   (2002-07-10 11:09) [5]

Вот только параметры в виде строки с помощью SendMessage не передать, придется задуматься над использованием DDE.


 
tsarevep ©   (2002-07-10 12:56) [6]

Огромное спасибо!
Но поиск окна по Application.Title не подходит, так как он постоянно изменяется. Да и просто лежит компонента на форме которая не даёт второй запуск. Но у нее есть событие OnAlreadyExist в котором и можно передать ParamStr только не доходит как. Вот нужно как то засунуть в эту процедуру что то вроде.

if параметр then
не знаю чего
else
halt;// тоже не обязательно сама убьёт

Ну а DDE может и не плохо было бы только у меня 8 книжек и только в двух написано про то как связать свою прогу через DDE c Exсel, а зачем мне Excel. В остальных вобще этот протокол упущен.
C уважением.


 
I am   (2002-07-11 02:26) [7]

Я это делал через FileMapping. При запуске приложения оно проверяет наличие файла отображаемого в память. Если его нет значит оно его создает и пишет туда свой хэндл, а если есть, то считывает из него хэндл уже запущенного приложения и посылает ему свои параметры через WM_COPYDATA.

CreateFileMapping
MapViewOfFile


 
Юрий Зотов ©   (2002-07-11 02:32) [8]

Практически готовое решение (и даже не одно) см. здесь:
http://www.delphikingdom.com/helloworld/samples_win.htm


 
tsarevep ©   (2002-07-11 08:20) [9]

Приогромнейшее спасибо всем!
То Юрий Зотов © - Да не практически, а готовое, даже названия переменных с моими совпали и поэтому только {Copy - Paste).
Прогнал я ее по всем статьям. Единственная ошибка почему то если сделать Edit With MYPROGRAMM больше 34 файлов Windows говорит "Отказано в доступе указанному пути или файлу". Хотя редко у кого ума хватает сразу 35 файлов отправить в какую нибудь прогу, но все равно неприятно. Если вам не трудно напишите почему это происходит.
Особая вам благодарность.
С уважением.



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
3-70603
Zeidlitz
2002-06-24 03:43
2002.07.22
Импорт данных из *.dbf в Interbase


1-70825
Извращенец
2002-07-10 21:52
2002.07.22
Последний крик программерам-мастакам. Ошибка


1-70708
artko
2002-07-08 14:47
2002.07.22
как создать форму, имея только имя ее класса(string)?


14-70889
dishar
2002-06-24 23:14
2002.07.22
Срочно нужен список литературы


3-70593
jaric
2002-06-28 16:25
2002.07.22
Проблемы с Halcyon