Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизКак передать строку другой копии моего приложения. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 2.14 c