Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

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

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
adept



Зарегистрирован: 12.02.2007
Сообщения: 31

СообщениеДобавлено: Сб Мар 31 2007 02:15    Заголовок сообщения: Как открыть окно связанное с другим процессом? Ответить с цитатой

дело происходит на C#
ситуация:
приложение на WIndows Forms,
по событию загрузки смотрим нет ли ещё процессов с таким же именем, если есть завершаем работу текущего процесса, но перед этим хочется показать окно связанное с уже существующим процессом, как это можно сделать?

на данный момент умею искать и отрубать текущий процесс,
могу даже получить ссылку на объект Process, соответствующий ранее запущенному процессу, но чего с ней дальше сотворить не знаю Sad

помогите,а ? Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
and3008



Зарегистрирован: 12.10.2001
Сообщения: 14893
Откуда: Н.Новгород

СообщениеДобавлено: Сб Мар 31 2007 15:45    Заголовок сообщения: Ответить с цитатой

В Windows обхение между ОС и процессами основано на сообщениях.
Посылаешь сообщение процессу, он что-то делает.

Если есть такое сообщение, по приходу которого процесс откроет окошко на экране, значит все получится.
Надо только найти что послать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
adept



Зарегистрирован: 12.02.2007
Сообщения: 31

СообщениеДобавлено: Сб Мар 31 2007 18:03    Заголовок сообщения: Ответить с цитатой

and3008 писал(а):
В Windows обхение между ОС и процессами основано на сообщениях.
Посылаешь сообщение процессу, он что-то делает.

Если есть такое сообщение, по приходу которого процесс откроет окошко на экране, значит все получится.
Надо только найти что послать.


в C# у объекта Process нет ничего, что могло бы передать ему сообщение! (я думал, что форточки окну посылают сообщения?!?)
есть метод для получения MainWindowHandle, возвращает понятно что в виде IntPrt, с помощью Form.FromHandle(IntPtr) пытаюсь получить ссылку на окно, но она получается нулевой, что попробовать дальше пока не знаю

подскажите
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Jail



Зарегистрирован: 16.01.2007
Сообщения: 180
Откуда: Russia

СообщениеДобавлено: Вс Апр 01 2007 21:44    Заголовок сообщения: Ответить с цитатой

Цитата:
... что попробовать дальше пока не знаю

подскажите

Почитать книжку по С#. Очень поможет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
adept



Зарегистрирован: 12.02.2007
Сообщения: 31

СообщениеДобавлено: Пн Апр 02 2007 02:24    Заголовок сообщения: Ответить с цитатой

Jail писал(а):
Цитата:
... что попробовать дальше пока не знаю

подскажите

Почитать книжку по С#. Очень поможет.


оО! вы предлагаете второй по популярности ответ на форумах Smile)
занятно, наверное каждый считает своим долгом хоть раз так ответить на вопрос, гыгы Smile смешно если честно

интересно, что вам помешало промолчать если вы не знаете ответа на вопрос?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Jail



Зарегистрирован: 16.01.2007
Сообщения: 180
Откуда: Russia

СообщениеДобавлено: Вт Апр 03 2007 10:18    Заголовок сообщения: Ответить с цитатой

Цитата:
интересно, что вам помешало промолчать если вы не знаете ответа на вопрос?

Да просто этот вопрос уже столько раз задавался на разных форумах,что я не знаю млин...сколько уже можно отвечать на одно и тоже!!!
У многих одна большая проблемма,просто лень матушка! Вся эта инфа подробно описана в книжках и там всё расписано намного лучше чем объясню я Вам здесь или кто-то иной. Всё это есть и во многих книжка,повторюсь ещё раз. Поиск по форумам тоже даст огромный результат. А Погуглить, никак?
Цитата:
на данный момент умею искать и отрубать текущий процесс,
могу даже получить ссылку на объект Process, соответствующий ранее запущенному процессу, но чего с ней дальше сотворить не знаю Sad

Видите, как раз "на данный момент" Вы этого и не знаете. А если бы прочитали, то зналибы намного больше и были бы спецом в этом деле.
Если у Вас возникают вопросы с конкретной реализацией или проблема в проге, то это одно, а если у Вас не хватает знаний, то это Ваши проблемы! А может мне за Вас найти этут тему на форумах? Или может книжечки Вам поскидывать на мыло, а?
И вопросы типа "я начинающий прогер, какой язык посоветуете"....тоже на многих форумах создаются с частотой 1 раз в месяц. А всё потому, что поискать просто лень. Razz
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
adept



Зарегистрирован: 12.02.2007
Сообщения: 31

СообщениеДобавлено: Вт Апр 03 2007 19:16    Заголовок сообщения: Ответить с цитатой

модераторам: простите за флейм в этой теме)

2Jail:
Цитата:
А Погуглить, никак?

хахаха(под столом!) вы просто молодец, теперь первый по популярности ответ!! SmileSmile

Цитата:
Если у Вас возникают вопросы с конкретной реализацией или проблема в проге, то это одно, а если у Вас не хватает знаний, то это Ваши проблемы

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

            Process cpr = Process.GetCurrentProcess();
            Process[] spr = Process.GetProcessesByName(cpr.ProcessName);
            if(spr.Length==2)
                {
                    int num=0;
                    if (cpr.Id == spr[0].Id){ num=1; }
                    else if (cpr.Id == spr[1].Id) { num = 0; }
                    IntPtr wh = spr[num].MainWindowHandle;
                    Control f = Form.FromChildHandle(wh); // f always null
                    f.FindForm().Show();
                }

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

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

Вопрос: для вас что-нибудь означает слово Process?
только честно, чур в книжки не лазить SmileSmile


Цитата:
А может мне за Вас найти этут тему на форумах? Или может книжечки Вам поскидывать на мыло, а?

хм, кажется вы не совсем представляете для чего существует форум, по крайней мере ветка "программирование"

я "почему-то" думаю, что на форумах люди ищущие ответы задают вопросы, а люди знающие(жаль нельзя два раза подчеркнуть) ответы эти дают, а незнающие ответов молча смотрят на ответы, которые дают знающие люди, вот как-то так SmileSmile

Цитата:
сколько уже можно отвечать на одно и тоже!!!

и что вы часто отвечаете на такие вопросы? сколько раз за последний месяц? Smile

p.s. кажется вы обиделись Sad неужели из за того что я все слова пишу с маленькой буквы? не принимайте всё так близко к сердцу SmileSmile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...