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

Вниз

Как передать строку другой копии моего приложения.   Найти похожие ветки 

 
APXi ©   (2004-05-01 23:45) [0]

Здравствуйте.
При запуске программы, она проверяет если она уже запущена то должна передать первой копии строку с параметрами. Как это сделать?
Спасибо.


 
DVM ©   (2004-05-01 23:49) [1]

Либо WM_COPYDATA либо Файлы отображенные в память


 
Урод   (2004-05-02 00:24) [2]

А так не пойдет?

const WM_mymess=WM_USER;
...
private
   procedure WMmymess(var a:TMessage); message WM_mymess;
...
procedure TForm1.WMmymess(var i:TMessage);
begin

  ShowMessage("Сообщение: "+inttostr(i.LParam));
end;
...

SendMessage(FindWindow("TForm1","Form1"),WM_mymess,0,1);
...


 
Урод   (2004-05-02 01:05) [3]

Вот такую еще фигню надо добавить
   ...
   h:=handle;
   ...
   repeat
       ...
       h:=GetNextWindow(h,GW_HWNDNEXT);
       GetWindowText(h,p,254);
       ...
   until (h=0)or ...;
   SendMessage(h,WM_mymess,0,1);


 
Германн ©   (2004-05-02 02:11) [4]

2 Урод   (02.05.04 00:24) [2]
А где тут "копия строки", которую пожелали передать в сабже?


 
Юрий Зотов ©   (2004-05-02 09:13) [5]

> Урод   (02.05.04 00:24) [2]
> А так не пойдет?

ВНУТРИ приложения - пойдет. МЕЖДУ приложениями - не пойдет. У каждого из них СВОЕ адресное пространство, поэтому прямая передача данных из одного в другое по адресу не имеет смысла.

А две копии одной программы (см. сабж) - это два РАЗНЫХ приложения.

> APXi

Самое простое - WM_COPYDATA. Детали - в справке.


 
имя   (2004-05-02 09:22) [6]

Удалено модератором


 
Mim1 ©   (2004-05-02 09:30) [7]

uuuh   (02.05.04 09:22) [6]

Причем тут поиск нужного пиложения.
Тебе же сказали
> СВОЕ адресное пространство

Не спорь с мастером.


 
Юрий Зотов ©   (2004-05-02 09:34) [8]

> uuuh   (02.05.04 09:22) [6]

> Можно и циферю передать, а потом ее обработать в case

Речь идет о передаче строки. Передать е в виде "цифери" можно только по адресу.

> Нужное приложение можно найти (см. [3]).

Можно. И что дальше? Разве проблема в том, чтобы найти? Зря я про адресные пространства писал?

> Надо попробовать твой вариант.

Вот-вот. Попробуйте оба варианта и сравните результаты. А еще лучше было бы сделать это СРАЗУ.


 
SammIk ©   (2004-05-02 10:05) [9]

Можно через маилслоты перадать, можно через сокеты,
можно просто писать в адресное пространство другои копии(изврат).
Вариантов много.


 
Anatoly Podgoretsky ©   (2004-05-02 11:49) [10]

uuuh   (02.05.04 09:22) [6]
Цифирь применима только в случае согласованных сообщений


 
Ihor Osov'yak ©   (2004-05-02 11:51) [11]

2 [9] SammIk ©  
?Сокеты, майлслоты, запись в адрессное пространство... Хм. А Вы не исключаете, что систему настраивал нормальный админ, установив к тому-же нормальный фаервол? Посему - см. [5]. И не нужно извратов там, где все делается и без извратов..


 
app ©   (2004-05-02 11:57) [12]

Forward:
Rouse_ ©   (02.05.04 00:02) [1]
SendMessage(
(HWND) hWnd,              // handle to destination window
WM_COPYDATA,              // message to send
(WPARAM) wParam,          // handle to window (HWND)
(LPARAM) lParam           // data (PCOPYDATASTRUCT)
);

АП: Дубль удален


 
SammIk ©   (2004-05-02 14:16) [13]

2[11]
Насколько мне известно никто не запрещает использование сокетов.
А маил слоты теперь просто не в моде))
А про писанину в адресное пространство, это да, это изврат.
Но тоже вариант


 
Rouse_ ©   (2004-05-02 16:16) [14]

> А маил слоты теперь просто не в моде
Откуда такая информация?
Мэйлслоты активно используются в современных OS


 
APXi ©   (2004-05-02 22:34) [15]

Извините, но что такое майл слоты?
А сокеты как я понимаю используются для работы в сети.


 
Alexander666 ©   (2004-05-03 06:49) [16]


> APXi ©
</I
Вот еще про WM_COPYDATA -http://www.coserv.net/~richardp/delphi/delphitips/note_75.htm


 
SammIk ©   (2004-05-03 08:00) [17]

2[15]
юниксы оч активно используют сокеты,
если мне не изменяет память, то графическая оболочка
общается с сервером через сокеты.
И ничего нет постыдного использовать сокеты, они для того и придуманны, чтобы передовать данные


 
KSergey ©   (2004-05-03 11:02) [18]

Никсы немного иная среда (мягко говря)
Просто со всякими сокетами недавно наткнулся на неприяпную гадость: все это работает лишь при наличии в системе сетевого интерфейса, который в общем случае у пользователя быть не обязан
Я понимаю, что большинство здесь сидящих пользуется компами с сетевухами, я понимаю, что пожно настроить "контроллер удаленного доступа", повесит ьна него протокол и т.д., но это, согласитесь, не всегда здорово, тем более, если есть другие варианты решения.


 
SammIk ©   (2004-05-03 11:12) [19]

loopback походу всегда есть, а для этих целеи именно он и нужен.
И это дает некоторые преимущества, если ему типа понадобится
в будующем что бы проги общались не только на 1 компе, а в сетке, то переписать будет проще.


 
KSergey ©   (2004-05-03 11:34) [20]

> SammIk ©   (03.05.04 11:12)
> loopback походу всегда есть

если установлен протокол TCP/IP
Со всеми вытекающими
А его наличие для Win не есть стандарт. Даже дефакто.
Не забывайте об этом, плиз!


 
Юрий Зотов ©   (2004-05-03 12:30) [21]

Вот не могу врубиться.

Стоит конкретная задача - одна копия программы должна передать другой своей копии строку параметров. Все происходит на одном компе.

Есть простой и гарантированно работащий способ решения, не требующий совершенно ничего.

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

А давайте еще о COM поговорим, а? Тоже ведь способ. Потом о DCOM вспомним, в плане удаленого общения. Потом о том, что строку можно передавать и тупо через файл, а этот файл по ftp гонять. Ну что нам стоит превратить нашу программу в клиент, он же сервер? Подумаешь, в три раза больше станет - ерунда ведь. Зато красиво и современно. И все способы обсудим, какие надо и не надо. И еще десяток своих придумаем.

Был задан конкретный вопрос. На него требовалось дать конкретный ответ. В виде наиболее простого и надежного решения. Что и было сделано.

На фига пустые пережевывания? Вот не могу врубиться.


 
SammIk ©   (2004-05-03 12:37) [22]

)))



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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
1-1083068196
P_Aleks
2004-04-27 16:16
2004.05.16
Потоки и формы


1-1082973506
Daman
2004-04-26 13:58
2004.05.16
Как получить тег любого объекта кликом на него


14-1082625216
Roof
2004-04-22 13:13
2004.05.16
Delphi 7 подвисает при запуске проекта


4-1080725400
DmitryNekl
2004-03-31 13:30
2004.05.16
Как вставить иконку?


9-1072825408
Jenaxx
2003-12-31 02:03
2004.05.16
КТо нить может помочь переделать прогу,