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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обмен данными между приложениями. 
V
    Опции темы
NightmareZ
Дата 10.10.2009, 16:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Как можно передать строку из одного приложения в другое?


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


Шустрый
*


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

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



Файлом, БД, .net remoting, wcf, web-service, msmq, тупо сокеты, etc. ...

Это сообщение отредактировал(а) Ram1reS - 10.10.2009, 17:29
--------------------
 
PM MAIL ICQ   Вверх
Medved
Дата 10.10.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Да как угодно. Начиная от простейшего метода, через общий файл (текстовой или какой либо другой) и заканчивая специализированными технологиями для интеграции приложений. 
Можешь БД использовать, можешь веб-сервис, можешь локальный сервис на компьютере, или COM взаимодействие. 

Все зависит от контекста и конкретной задачи.

Код

Direct TCP Networking
    System.Net
Message Queuing
    System.Messaging
Распределенные вычисления
    System.Runtime.Remoting
XML веб-сервисы
    System.Web.Services


Вот хорошая презентация на эту тему: Стратегия выбора протоколов для удаленного взаимодействия между слоями приложения


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


[хакер]
**


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

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



Зачем нужно: Запускается одна копия приложения. Затем вторая. Вторая обнаруживает, что одна копия уже запущена, завершает свою работу и передаёт первой копии параметры командной строки, если они есть.

Цитата(Ram1reS @  10.10.2009,  17:28 Найти цитируемый пост)
Файлом, БД, .net remoting, wcf, web-service, msmq, тупо сокеты, etc. ...


Файл не в тему, ибо не вижу смысла что-то на диске создавать для такой мелочи. БД тем более.
Сокеты, remoting, wcf... не может какой-нить файрвол это дело блочить?
Msmq под дотНетом есть?

Добавлено через 12 минут и 58 секунд
Сборку System.Messaging.dll не могу подключить. Добавляю референс, а студия пишет, что сборки нету....

user posted image


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


Эксперт
****


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

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



Цитата

Технология Message Queuing позволяет работающим в различное время приложениям взаимодействовать в гетерогенных сетях и системах, которые могут временно отключаться от сети. Приложения отправляют, получают и считывают (то есть читают без удаления) сообщения из очередей. Message Queuing — необязательный компонент операционных систем Windows 2000 и Windows NT, поэтому его следует устанавливать отдельно.

Класс MessageQueue — это упаковщик службы Message Queuing. Существует несколько версий Message Queuing, поэтому при использовании класса MessageQueue его поведение в каждом случае будет несколько другим, в зависимости от используемой операционной системы
.

http://msdn.microsoft.com/ru-ru/library/sy...pDownFilterText


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


[хакер]
**


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

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



А проще варинт есть?

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


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

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



Может лучше Mutex?
--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
NightmareZ
Дата 11.10.2009, 01:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Crypton @  11.10.2009,  01:31 Найти цитируемый пост)
Может лучше Mutex?


А что с ним?


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


Эксперт
****


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

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



Цитата(NightmareZ @  11.10.2009,  04:33 Найти цитируемый пост)
А что с ним? 

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

Но это не решает вопроса о передачи строки из одного приложения, в другое.
Используй реестр или временный файл. Это конечно не кошерно, но практично.  

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

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


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


[хакер]
**


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

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



Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
С помощью мьютексов можно запретить повторный запуск приложения.

А.... м....... ну я вроде не спрашивал, как запретить повторный запуск.......

Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
Используй реестр или временный файл. Это конечно не кошерно, но практично.  

Если два приложения одновременно будут писать в файл/реестр?
Как передать первому экземпляру приложения информацию о том, что нужно прочитать этот файл/ветку реестра, ибо информация в нём/ней обновилась?

Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
А вообще для меня такого рода прблемы служат индикаторм того, что программист начинает гордить куйню.  Горе от ума вообщем.

Ну так просвяти, как избавиться от этой проблемы? Как бы поступил ты?

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


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


Эксперт
****


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

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



Цитата(NightmareZ @  11.10.2009,  05:50 Найти цитируемый пост)
Ну так просвяти, как избавиться от этой проблемы? Как бы поступил ты?

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

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


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


Эксперт
****


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

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



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

Вопросы как сделать то, или другое обычно исходят от неумения или лени читать документацию, которая поставляется с платформой, на которой реализуется решение. И особенно это относятся к тем случаям,  которые касаются инфраструктурного кода (в отличии от прикладного уровня,  непосредственно реализующего бизнес-процессы и задачи конечного пользователя) 
Зачастую, задачи, которые реаются простым и изящным способом, неопытные программисты начинают решать "через америку". В смысле, что тебе надо добраться до соседнего дома в Рязани, но ты для этого фрахтуешь частный самолет, летишь через Германию, там пересаживаешься на Боинг, перелетаешь через Атлантику в Нью-Йорк, а от туда на параходе в порт Находка, потом на собачьих упряжках до Новосиба, а от туда уже на поезде до Рязани, потом на такси до нужного дома.  Хотя всего-то надо было пройти 10 метров пешком. 
И это довольно распространенная ситуация в отечественном программировании. Отчасти это объясняется особенностями преподавания и обучения программированию на территории бывшего СНГ, когда вместо того, что обучать программированию, учат кодингу. И книги соответственно по кодированию вместо того чтобы называть их "руководство по кодингу", называют "руководство по программированию".
А кодинг и программирование - это разные понятия. Так как программирование включает в себя линейку - проектирование-кодирование-тестирование. 

Мне вот опыт подсказывает что в данном случае возможна именна такая ситуация.


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


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


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


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

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



Я бы использовал  System.Runtime.Remoting.Channels.Ipc

Добавлено через 6 минут и 6 секунд
Цитата(NightmareZ @  10.10.2009,  19:47 Найти цитируемый пост)
Запускается одна копия приложения. Затем вторая. Вторая обнаруживает, что одна копия уже запущена, завершает свою работу и передаёт первой копии параметры командной строки, если они есть.


Medved, ИМХО, требования вполне адекватные… Мне кажется, подобным образом работают, например видеопроигрыватели, например тот же LightAlloy 





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


Эксперт
****


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

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



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

С таким же успехом можно убить певрое (ненужное приложение) и запустить вторую копию, в которую и передаются все данные. 

Цитата(Rohoss @  11.10.2009,  14:53 Найти цитируемый пост)
 System.Runtime.Remoting.Channels.Ipc

Угу, микроскопом гвозди забивать - вот как это называется. 


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


[хакер]
**


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

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



Цитата(Medved @  11.10.2009,  05:03 Найти цитируемый пост)
Мне вот опыт подсказывает что в данном случае возможна именна такая ситуация.

Обгадили с ног до головы. Косолапый считает, что я "неопытный программист", "неумеющий и ленящийся читать документацию", "начитавшийся книг по кодингу". Вот чесно, в реальной жизни я бы предпочёл за такой подход дать по морде, но так как на форумах это не принято и физически нереализуемо, то попрошу лишь не разводить свою философию в моих темах.

Цитата(Rohoss @  11.10.2009,  11:53 Найти цитируемый пост)
Я бы использовал  System.Runtime.Remoting.Channels.Ipc

Ок, спасибо, попробую.

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

А ещё так работают, например, Paint.NET, Photoshop....

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

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


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
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   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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