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

Вниз

MDI приложение   Найти похожие ветки 

 
ZeFiR ©   (2006-02-12 13:44) [0]

Привет, Мастера!
делаю сабж(текстовый редактор)... Нужно, чтоб при открытии файла запускалась не еще один екзе, а MDIChild с этим же файлом в уже запущеной проге.


 
tesseract ©   (2006-02-12 14:53) [1]

Делаешь при старте объект синхронизации. Например мютекс.
И добавляешь обработку своего сообщения.
Если он уже существует то посылаешь уже открытому exe сообщение с именем файла который нужно открыть.


 
vovnuke ©   (2006-02-12 14:58) [2]

А в чем вопрос?


 
ZeFiR ©   (2006-02-12 16:23) [3]


> tesseract ©   (12.02.06 14:53) [1]

А можна пример раз меня в конференцию для начинающих перенесли?


 
tesseract ©   (2006-02-14 10:30) [4]

http://www.interface.ru/borland/d5_3prraz1.htm

немного неодобно - через Clipboard зато очень просто :-)


 
Loginov Dmitry ©   (2006-02-14 14:07) [5]

ParamStr()


 
аматор ©   (2006-02-14 17:39) [6]

Привет...
ParamStr() - эт когда запустил,  а если прога уже работает :) ?

Простенький совет всем начинающим: "http://delphiworld.narod.ru/" зайдите по этой ссылке, скачайте прогу, и начните читать........
И большинство вопросов отпадут!


 
Loginov Dmitry ©   (2006-02-14 18:54) [7]


> ParamStr() - эт когда запустил,  а если прога уже работает
> :) ?


Проглядел, извеняюсь :)

Можно так, например:

 program Project1;
 uses
   Windows, Messages;

 var
    H: THandle;
 H := FindWindow("Имя класса", "Имя окна");
 if H <> 0 then
 begin
   PostMessage(H, WM_USER, PChar(ParamStr(1)), 0);
   Halt(0);
 end;



> Простенький совет всем начинающим: "http://delphiworld.narod.
> ru/" зайдите по этой ссылке, скачайте прогу, и начните читать.
> .......
> И большинство вопросов отпадут!


Ну если все будут юзать Кулибу, DW и пр. то сюда и постить-то будет некому :))


 
Leonid Troyanovsky ©   (2006-02-14 19:06) [8]


> Loginov Dmitry ©   (14.02.06 18:54) [7]

> Можно так, например:
..
>    PostMessage(H, WM_USER, PChar(ParamStr(1)), 0);


Так - нельзя, т.е., бестолку ParamStr(1).
Обмениваться строками положено через SendMessage(.., WM_COPYDATA)

--
Regards, LVT.


 
Loginov Dmitry ©   (2006-02-15 11:10) [9]


> Так - нельзя, т.е., бестолку ParamStr(1).


Да, вы правы, действительно ParamStr(0) можно, а ParamStr(1) - почему-то нельзя.
Следующий код вполне рабочий:


program Project1;

uses
 Windows, Messages,
 Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}
var
 H: THandle;
 S: string;
begin
 S := ParamStr(0);
 //S := ParamStr(1); // НЕ РАБОТАЕТ ДАЖЕ ПРИ НАЛИЧИЕ ПАРАМЕТРОВ

 H := FindWindow(nil, "Имя окна");
 if H <> 0 then
 begin
   SendMessage(H, WM_USER, Integer(PChar(S)), 0);
   Halt;
 
 end;

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.



unit1;
..............
procedure HookWMUser(var Msg: TMessage); message WM_USER;
........
procedure TForm1.HookWMUser(var Msg: TMessage);
begin
 Memo1.Lines.Add(PChar(Msg.WParam))
end;


 
Leonid Troyanovsky ©   (2006-02-15 11:22) [10]


> Loginov Dmitry ©   (15.02.06 11:10) [9]

> Да, вы правы, действительно ParamStr(0) можно, а ParamStr(1)
> - почему-то нельзя.


Неважно, какую строку - все равно, нельзя.
В разных приложениях - разные адресные пространства,
поэтому, то, что имеет смысл в одном - PChar(s) в другом
может указывать на что-то совсем другое.

Кроме того, PostMessage (в отличии от SendMessage)  не
дожидается того, что другой поток прочитает это значение.

Использование же SendMessage(.., WM_COPYDATA..) основано
на другом механизме, который гарантирует правильную посылку
данных через границы процесса.
Похожими свойствами обладают еще некоторые сообщения
(f.e., WM_GETTEXT), но никак не WM_USER.

--
Regards, LVT.



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

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

Наверх




Память: 0.49 MB
Время: 0.028 c
2-1140423841
pupapumQ
2006-02-20 11:24
2006.03.05
Программа в пуск


4-1134732879
Tapok
2005-12-16 14:34
2006.03.05
Не сохраняется иконка программы в файл


15-1139650945
Yanis
2006-02-11 12:42
2006.03.05
Вот это война :)


2-1140266752
Azeem
2006-02-18 15:45
2006.03.05
эмуляция щелчка мыши


5-1126124877
TStas
2005-09-08 00:27
2006.03.05
Как заставить компонент выглядеть, как невизуальный?