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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ссылка на объект по ID 
:(
    Опции темы
Michigan
Дата 31.1.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При помощи какой функции можно сделать ссылку на объект(Приложение), для последующей работы.

                    Dim Obj_Explorer As Object
                    Dim ID_Prog As Integer

                    ID_Prog =Shell("C:\WINDOWS\explorer.exe", AppWinStyle.NormalFocus)

                    Obj_Explorer = XXX (ID_Prog)
PM MAIL   Вверх
Naum
Дата 31.1.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Смотря что ты хочешь потом делать с Obj_Explorer. Один из вариантов
Код

Dim Obj_Explorer as System.Diagnostics.Process
Dim ID_Prog as Integer
ID_Prog = Shell(.....)
Obj_Explorer=System.Diagnostics.Process.GetProcessById(ID_Prog)



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Michigan
Дата 31.1.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Странное дело - Приложение запускается, ID получает, а дальше стопиться, мол...

          Additional information: Process with an Id of 3116 is not running.
PM MAIL   Вверх
Naum
Дата 31.1.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Скорее всего дело в explorere. Всегда запускается только один экземпляр. Т.е. данные процеесса который ты запустил передаются в этот экземпляр. А сам процесс закрывается. Попробуй поставь в вызове процедуры Shell агрумент WaitForExit = true и увидишь, что после запуска процесс сразу закрывается.
И все таки ты реши зачем тебе это. Если просто следить за процессом, то можно воспользоваться System.Diagnostics.Process.GetProcessesByName(string name). А затем среди модулей этого процесса можно попробавть найти свое окошко. 
А как управлять я не знаю, но на форуме уже это обсуждалось поищи.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Yama
Дата 31.1.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Еще 1 вопрос в тему:

Цитата(Naum @  31.1.2007,  13:40 Найти цитируемый пост)
А затем среди модулей этого процесса можно попробавть найти свое окошко. 

Если окно, которое надо найи - это pop-up или просто новое окно программы(например, новое окно ИЕ, в котором открывается новая страничка), и, по сути, новое окно открывает уже запущенный процесс. Можно ли его найти как дочернее? Или как в принципе можно найти окна, которые были открыты вследствие каких-либо действий какого-либо конкретного приложеня? (говоря окна, я подразумеваю не в принципе все контролы, тексбоксы и т.п., а любой другой процесс, который был запущен данным процессом).
--------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию.
PM MAIL   Вверх
Michigan
Дата 31.1.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



   Что я хочу с ним делать!? 
   Ну скажем задать путь для открытия папки, Отключить дерево с левой стороны Explorera и т.д. ...
   Возможно путь открытия папки можно было бы задать во время выполнения команды SHELL ? Мне бы этого хватило
PM MAIL   Вверх
Naum
Дата 31.1.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Shell это всего лишь командная строка. Поэтому надо читать документацию по explorer'у какие у него есть параметры.
Но скорее всего должно прокатить
Код

Shell("C:\Windows\explorer.exe C:\Windows")



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Michigan
Дата 31.1.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сенкс Naum ! Фраза типа... 

Shell("""C:\WINDOWS\explorer.exe"" C:\", AppWinStyle.NormalFocus) 

Дала мне желаемый результат.

А что касается открытого экземпляра эксплорера как объекта, пытался исследовать объект

        Obj_Explorer = Process.GetProcessesByName("EXPLORER")  

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

в нем (Obj_Explorer) есть следующие множества Modules & Threads, я пытался найти в нем мой 
открытый экземплярчик по ID

                    ID_Prog = Shell("""C:\WINDOWS\explorer.exe"" C:\", AppWinStyle.NormalFocus)
                    Obj_Explorer = Process.GetProcessesByName("EXPLORER")
                    For i = 0 To Obj_Explorer(0).Threads(i).Count - 1
                        If Obj_Explorer(0).Threads(i).ID = ID_Prog Then
                            Obj_Explorer = Obj_Explorer(0).Threads(i)
                            Exit For
                        End If
                    Next

 ... но меня постигла неудача - такого объекта по такой метке комп не нашел... Но тема перспективная , буду ковыряться в форуме. 

Еще раз сенкс.

PM MAIL   Вверх
Naum
Дата 5.2.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Цитата(Michigan @  31.1.2007,  18:57 Найти цитируемый пост)
пытался найти в нем мой открытый экземплярчик по ID

Так точно не получиться. Shell возвращает ID процесса, а не потока. Про этот ID можно вообще забыть, потому что процесс сразу закрывается.



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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