Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обмен данными между приложениями. 
V
    Опции темы
Medved
Дата 11.10.2009, 14:21 (ссылка)  | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 0
Всего: 154



NightmareZ, прости, не заметил у тебя надписи [хакер], теперь все понятно. 

Цитата(NightmareZ @  11.10.2009,  17:11 Найти цитируемый пост)
"неопытный программист", "неумеющий и ленящийся читать документацию", "начитавшийся книг по кодингу"

Твоя реакция говорит мне о том, что так и есть. Еще сомневался, теперь уж точно уверен. 

А как тебя еще называть? Я тебе помог, а ты вместо благодарности еще и минус залепил. 

Цитата(NightmareZ @  11.10.2009,  17:11 Найти цитируемый пост)
. Вот чесно, в реальной жизни я бы предпочёл за такой подход дать по морде,

Писюн еще не вырос. 

Цитата(NightmareZ @  10.10.2009,  22:47 Найти цитируемый пост)
Сборку System.Messaging.dll не могу подключить. Добавляю референс, а студия пишет, что сборки нету....

Что же ты до конца эту проблему не решил? Столкнулся со сложностью, и тут же решил сдаться? Что до конца не добил? Опытный программист предпочитает разбираться до конца, а не бежать в кусты, при первой возникшей перед ним сложности. 

Ммм..да. Вот и помогай после этого. Был бы поумнее, может быть и уму разуму бы научился, а так продолжай и дальше быдлокодить smile


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
NightmareZ
Дата 11.10.2009, 14:22 (ссылка)    | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Medved, уйди пожалуйста из темы.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Medved
Дата 11.10.2009, 14:29 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 0
Всего: 154



Испугался? 

Цитата(NightmareZ @  11.10.2009,  17:11 Найти цитируемый пост)
Пойди погуляй. Меня не интересует твои измышлизмы по сабжу. Я задал конкретный вопрос и хочу лишь ответа на него. 

Посмотри первые два сообщения, в том числе и мое, там были конкретные ответы... Однако ты столкнулся со сложностью, и решил сигануть в кусты. 

Ты не ответил на мой вопрос:
Цитата(Medved @  11.10.2009,  07:40 Найти цитируемый пост)
Зачем тебе запрещать запуск двух копий приложения, и если уж запрещать (что не сложно реализовать черезь мьютексы, которые как раз для таких ситуаций и придуманы), то обязательно передавать параметры командной строки от одного приложения - к другому? Вот это мне сложно понять.
Откуда вообще взялось такое требование, и чем оно продиктовано?
Какие обстоятельства привели тебя к тому, что ты стал решать эту проблему (передавать командную строку)?

Видимо действительно нагородил...

Это сообщение отредактировал(а) Medved - 11.10.2009, 14:32


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Rohoss
Дата 11.10.2009, 14:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: нет
Всего: 18



Цитата(Medved @  11.10.2009,  14:05 Найти цитируемый пост)
Цитата(Rohoss @  11.10.2009,  14:53 )Medved, ИМХО, требования вполне адекватные… Мне кажется, подобным образом работают, например видеопроигрыватели, например тот же LightAlloy С таким же успехом можно убить певрое (ненужное приложение) и запустить вторую копию, в которую и передаются все данные. 

Зачем лишний раз загружать приложение? А если оно долго грузится… кому это надо?


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Skynin
Дата 11.10.2009, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 0
Всего: 10



... а еще можно следить за буфером обмена, как то массово делают перехватыватели ссылок из браузера. Например EMule. Правда, тогда информация которая там есть потеряется, а нужно бы чтобы осталась, ведь пользователь не были инициатором записи чего-то в буфер обмена.

Clipboard Class
Clipboard handling with .NET

В любом случае логика рассуждений:

Первая копия приложения должна ждать присылаемое:
1. Что-то постоянно опрашивать (файл, "флаг", ...) - по моему расточительно и неумно для данной задачи.
2. Слушать, авось что пришлют. По TCP/UDP, IPC, ..., Clipboard, ..., .... Если приложение оконное - получить дескриптор окна первой копии и всунуть событие в очередь его событий. 

Для того чтобы определиться с выбором из списка 2 - условий указано маловато. Поэтому ответ и получается - да делай шо хошь, кто ж тебя поймет, что тебе нужно то.

Потому что "Затем вторая. Вторая обнаруживает" - а если в это время запускается третья, как ей счирикиваться с двумя предыдущими? Или разрешено так - увидела что две уже копии - тогда все, просто молча и выключилась?

Цитата

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

Вот это то как раз рутинно решаемая проблема - при старте первой копии - ищется свободный порт(из диапазона, или начиная с попытки повеситься на порт по умолчанию) и записывается в такое место, из которого могут прочесть последующие копии программы.

Цитата

Как бы поступил ты?

Понятия не имею об задаче в целом. Может и задумался над вопросом "Какие обстоятельства привели меня к тому, что я стал решать эту проблему (передавать командную строку)?"

Это сообщение отредактировал(а) Skynin - 11.10.2009, 18:40
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
NightmareZ
Дата 12.10.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(Skynin @  11.10.2009,  18:38 Найти цитируемый пост)
Понятия не имею об задаче в целом. Может и задумался над вопросом "Какие обстоятельства привели меня к тому, что я стал решать эту проблему (передавать командную строку)?"


Есть программа. Есть тип файлов, ассоциированный с этой программой. Пользователь даблкликает на файле - происходит запуск первого экзепляра программы, которому передаётся имя файла, по которому кликал юзверь, в командной строке. Если юзверь так же захочет открыть другой подобный файл, не закрывая программу, что получится? - Будет запущен второй экземпляр программы, которому будет передано имя файла. Мне нужно закрыть второй экземпляр, а первому передать инфу о том, что нужно открыть новый файл.... чтобы в первом экземпляре было загружено уже два файла.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Veitmen
Дата 12.10.2009, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



Приветствую.

Я так понял это для вашего приложения - редактора? smile

Цитата(NightmareZ @  12.10.2009,  04:28 Найти цитируемый пост)
Есть программа. Есть тип файлов, ассоциированный с этой программой. Пользователь даблкликает на файле - происходит запуск первого экзепляра программы, которому передаётся имя файла, по которому кликал юзверь, в командной строке. Если юзверь так же захочет открыть другой подобный файл, не закрывая программу, что получится? - Будет запущен второй экземпляр программы, которому будет передано имя файла. Мне нужно закрыть второй экземпляр, а первому передать инфу о том, что нужно открыть новый файл.... чтобы в первом экземпляре было загружено уже два файла. 

Используйте маршалинг или тупо SendMessage.
Использовать Remoting, MSMQ, WCF or WebServices в данном случае бессмысленно, это и правда забивать микроскопом гвозди.

Копипаст с другого форума:
1. Посылка сообщений.
Один процесс вызывает SendMessage или PostMessage, другой процесс GetMessage. Все очень просто, передается 3 слова: сообщение, lparam и wparam.
2. Посылка прерываний (сигналов, если следовать терминологии *nix).
Один процесс вызывает какую-то функцию системы, передает ей PID и номер сигнала. Система прерывает выполнение программы-получателя и переходит к выполнению какой-то части программы, называемой обработчиком прерывания. Как только обработчик закончит выполнение — программы продолжает работать с той точки где была прервана.
3. Каналы ввода-вывода.
Все очень просто. Один процесс пишет в канал, другой читает. Можно передавать сколь угодно данных, на любой скорости. Проблема только в том, как соорудить этот канал данных. Можно при запуске переопределить STDIN и STDOUT или передать дескриптор канала по наследству, это если один процесс запускает другой. Можно использовать именованные каналы (если позволяет система). Можно использовать сокеты.
4. Файлы отображаемые в память.
Ни разу не пользовался. Но, как я понимаю некоторая часть памяти ставится в соответствие файлу чтение этой памяти приводит к чтению из файла, запись в память — к записи в файл.
5. Маршалинг (передача буфера через границы процессов средствами системы)
Идея простая, но описание грубое. Берем буфер (в памяти одного процесса) и передаем его системе. В другом процессе выделяем в виртуальной памяти место для буфера и запрашиваем у системы этот самый буфер. Система копирует данные из одного процесса в другой.

PM MAIL ICQ   Вверх
NightmareZ
Дата 12.10.2009, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(Veitmen @  12.10.2009,  05:07 Найти цитируемый пост)
Приветствую.

Взаимно smile

Цитата(Veitmen @  12.10.2009,  05:07 Найти цитируемый пост)
Я так понял это для вашего приложения - редактора?

Да smile

Цитата(Veitmen @  12.10.2009,  05:07 Найти цитируемый пост)
Используйте маршалинг или тупо SendMessage.

Маршалинг? А как его тут можно использовать?
А SendMessage не особо удобно.

Сейчас сделал через временные файлы. Первый экземпляр мониторит директорию, находащуюся в LocalApplicationData, а остальные пишут туда инфо о тех файлах, которые нужно загрузить.

Это сообщение отредактировал(а) NightmareZ - 13.10.2009, 02:48


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Veitmen
Дата 12.10.2009, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



Цитата(NightmareZ @  12.10.2009,  05:42 Найти цитируемый пост)
Маршалинг? А как его тут можно использовать?

Да и правда, маршалинг вам тут не поможет. Хотя поизвращаться можно. smile

Цитата(NightmareZ @  12.10.2009,  05:42 Найти цитируемый пост)
А SendMessage не особо удобно.

Безусловно, но если вы не хотели бы использовать файл то можно так.

Цитата(NightmareZ @  12.10.2009,  05:42 Найти цитируемый пост)
Сейчас сделал через временные файлы. Первый экземпляр мониторит директорию, находащуюся в LocalApplicationData, а остальные пишут туда инфо о тех файлах, которые нужно загрузить.

Нормальное решение. Так и нужно, и не надо тут что нить городить.

Удачи вам с вашим редактором. Слежу с интересом, надеюсь на фриварную версию. smile
PM MAIL ICQ   Вверх
NightmareZ
Дата 12.10.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(Veitmen @  12.10.2009,  06:48 Найти цитируемый пост)
Удачи вам с вашим редактором.

Спасибо smile


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
nyxiscoo1
Дата 15.10.2009, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.6.2008

Репутация: нет
Всего: нет



Есить готовое решение для VB .Net, но его можно использовать и в C#
http://www.codeproject.com/KB/cs/CSSIApp.aspx
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.