![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
Michigan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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) |
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Смотря что ты хочешь потом делать с Obj_Explorer. Один из вариантов
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
Michigan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
Странное дело - Приложение запускается, ID получает, а дальше стопиться, мол...
Additional information: Process with an Id of 3116 is not running. |
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Скорее всего дело в explorere. Всегда запускается только один экземпляр. Т.е. данные процеесса который ты запустил передаются в этот экземпляр. А сам процесс закрывается. Попробуй поставь в вызове процедуры Shell агрумент WaitForExit = true и увидишь, что после запуска процесс сразу закрывается.
И все таки ты реши зачем тебе это. Если просто следить за процессом, то можно воспользоваться System.Diagnostics.Process.GetProcessesByName(string name). А затем среди модулей этого процесса можно попробавть найти свое окошко. А как управлять я не знаю, но на форуме уже это обсуждалось поищи. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
Yama |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 2.8.2006 Репутация: нет Всего: 2 |
Еще 1 вопрос в тему:
Если окно, которое надо найи - это pop-up или просто новое окно программы(например, новое окно ИЕ, в котором открывается новая страничка), и, по сути, новое окно открывает уже запущенный процесс. Можно ли его найти как дочернее? Или как в принципе можно найти окна, которые были открыты вследствие каких-либо действий какого-либо конкретного приложеня? (говоря окна, я подразумеваю не в принципе все контролы, тексбоксы и т.п., а любой другой процесс, который был запущен данным процессом). --------------------
Если бы строители строили дома так же, как программисты пишут программы, то первый же залетевший в форточку дятел разрушил бы всю нашу цивилизацию. |
|||
|
||||
Michigan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 28.11.2006 Репутация: нет Всего: нет |
Что я хочу с ним делать!?
Ну скажем задать путь для открытия папки, Отключить дерево с левой стороны Explorera и т.д. ... Возможно путь открытия папки можно было бы задать во время выполнения команды SHELL ? Мне бы этого хватило |
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Shell это всего лишь командная строка. Поэтому надо читать документацию по explorer'у какие у него есть параметры.
Но скорее всего должно прокатить
-------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
Michigan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 ... но меня постигла неудача - такого объекта по такой метке комп не нашел... Но тема перспективная , буду ковыряться в форуме. Еще раз сенкс. |
|||
|
||||
Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 1 Всего: 15 |
Так точно не получиться. Shell возвращает ID процесса, а не потока. Про этот ID можно вообще забыть, потому что процесс сразу закрывается. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |