Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
Время: 0.039 c
1-1083047567
basken
2004-04-27 10:32
2004.05.16
Как принудительно показать хинт контрола?


7-1080938479
profi
2004-04-03 00:41
2004.05.16
Работа с модемом


3-1082468480
MakNik
2004-04-20 17:41
2004.05.16
Как освобождать память, занятую SQL-сервером?


1-1083091603
Demi
2004-04-27 22:46
2004.05.16
Проблема открытия файла через контекстное меню Windows.


6-1080144803
neteditor
2004-03-24 19:13
2004.05.16
Receiveln





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский