Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
15-1139605590
Стыдно
2006-02-11 00:06
2006.03.05
IO Completion Port


15-1138131982
Petr V. Abramov
2006-01-24 22:46
2006.03.05
Прощай, duailup дубль N :)


2-1140277888
Pit
2006-02-18 18:51
2006.03.05
Подменю в PopupMenu


15-1139565712
Koala
2006-02-10 13:01
2006.03.05
Планшет? какой выбрать....?


15-1139763415
DillerXX
2006-02-12 19:56
2006.03.05
Можно ли заставить Делфи...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский