Страница: 1 |
Требуется запустить из моей программы любую чужую , и иметь после этого возможность ее скрыть и показать... вот собственно и все. Тока как это реализовать... бросте код плиз..
Запустить - ShellExecute, скрыть/показать: FindWindow, ShowWindow Дескриптор... Хм получить можно либо зная название класса окна, либо зная заголовок окна... Или можно получить ProcessID, даже если не ты запускал эту прогу, а если ее запускал ты, то так даже проще, идентификатор процесса те возвратит VB'шная функция Shell(...) Далее используем этот вот модуль, и оопля, мы можем перебрать все окна процесса и отсортировав, найти нужное нам )) Option Explicit Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long Private Const WM_CLOSE As Long = &H10 Public Sub CloseByPID(ByVal target_pid As Long) Call EnumChildWindows(ByVal GetDesktopWindow, AddressOf ChildWindowProc, target_pid) End Sub Private Function ChildWindowProc(ByVal hWnd As Long, ByVal lpData As Long) As Long Dim pID As Long Call GetWindowThreadProcessId(hWnd, pID) If pID = lpData Then If GetParent(hWnd) = &H0 Then Call PostMessage(hWnd, WM_CLOSE, &H0, &H0) ChildWindowProc = True End Function Public Function AppRun(sFullPath As String, Optional WindowStyle As VbAppWinStyle = vbNormalFocus) As Long AppRun = Shell(sFullPath, vbNormalFocus) End Function Правда этот модуль для закрытия окошка, но я уверен что ты его смогешь и для себя переделать 2 sne т.е. если я правильно понял то надо перебирать все hWnd окон и проверять их на принадлежность нужного мне PID с помощью GetWindowThreadProcessId ???? А если тогда функция обратная GetWindowThreadProcessId ???? и еще если есть примеры рабочие на подобную тему, скиньте плиз Страница: 1 |
Вопрос: запуск и управление чужей программой
Добавлено: 06.01.04 06:48
Автор вопроса: Grayich | Web-сайт:
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 06.01.04 07:04
Номер ответа: 2
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #2
Добавлено: 06.01.04 11:11
Спасибо. Тока как получить дескриптор окна проги которую я запустил ??
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 06.01.04 13:15
Номер ответа: 4
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #4
Добавлено: 15.01.04 15:14