Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открытие окна программы в рамках формы / 12 сообщений из 12, страница 1 из 1
30.11.2007, 14:41
    #34978296
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Прошу всех, кто знает как сделать так, чтоб при нажатии на команд1 открывалось окно программы С:\Програм файлз\тра-ля-ля.exe в пределах формы. Причём в четвёртой её части, потому что будут ещё три кнопки, чтоб открывать окна программ в остальных трёх четвертях данной формы.
Но это уже сильно. А пока прошу о первом.
...
Рейтинг: 0 / 0
30.11.2007, 15:33
    #34978507
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Да забыл, окна программы 320х240.
...
Рейтинг: 0 / 0
30.11.2007, 15:58
    #34978616
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
ну вот что то в этом роде...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (- 16 )
Const WS_BORDER = &H800000
Const WS_THICKFRAME = &H40000

Private Sub Command1_Click()
Dim lHWND As Long
Dim lStyle
'запускаем программу "блокнот"
Shell "notepad"
'ищем окно запущенной программы
'NOTE: иногда запущенная программа не успевает создать окно,
'NOTE: тут ужо чего нибудь придумывать надо
lHWND = FindWindow(vbNullString, "Untitled - Notepad")
If lHWND =  0  Then Exit Sub
'вписываем окно программы в свою форму
SetParent lHWND, Me.hwnd
'указываем новые координаты для окна запущенной программы внутри своей формы
SetWindowPos lHWND,  0 ,  10 ,  10 ,  250 ,  250 ,  0 
'прячем заголовок окна запущенной программы,
'запрещаем изменение размеров окна запущенной программы,
'в общем приклеиваем ее
'NOTE: с консольными приложениями вроде не работает
lStyle = GetWindowLong(lHWND, GWL_STYLE)
lStyle = lStyle And (Not WS_BORDER)
lStyle = lStyle And (Not WS_THICKFRAME)
SetWindowLong lHWND, GWL_STYLE, lStyle
End Sub
...
Рейтинг: 0 / 0
30.11.2007, 16:01
    #34978630
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
ну и конечно же в коде:
Dim lStyle As Long
...
Рейтинг: 0 / 0
30.11.2007, 16:20
    #34978702
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Чё-то не сильно окно программы хочет приклеиваться к форме.
...
Рейтинг: 0 / 0
30.11.2007, 16:40
    #34978763
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
part_okЧё-то не сильно окно программы хочет приклеиваться к форме.

Извиняюсь.
Немного разобрался со своими премудростями (в смысле со своим кодом) и всё получилось. Аказываица нич@го сложн@го нету!
Спасибки.

Да, инАКда необходимо просто поднапрячь свой мозК, если есть чё напрягать, конечно.
...
Рейтинг: 0 / 0
30.11.2007, 17:35
    #34978943
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Nikz As Long
Хорошо, а как же мне закрыть это окно в форме?
...
Рейтинг: 0 / 0
30.11.2007, 18:00
    #34979005
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
запомнить значение lHWND а потом тынц
...
Рейтинг: 0 / 0
30.11.2007, 18:22
    #34979061
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Nikzзапомнить значение lHWND а потом тынц


Уточни так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_CLOSE = &H10

Private Sub Command1_Click()
Dim lHWND As Long
Shell "notepad"
lHWND = FindWindow(vbNullString, "Untitled - Notepad")
Call SendMessage(lHWND, WM_CLOSE,  0 ,  0 )
End Sub

...
Рейтинг: 0 / 0
30.11.2007, 23:01
    #34979350
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Nikzзапомнить значение lHWND а потом тынц
Я, конечно, извиняюсь, но я только учусь ВБ.
Не могли бы Вы мне объяснить немного как же всё-таки пользоваться WM_CLOSE?
А в данном случае как закрыть окно?
p.s. Надо же кому-то мне объяснить впервый раз...
...
Рейтинг: 0 / 0
03.12.2007, 15:35
    #34982618
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Option Explicit
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Const GWL_STYLE = (- 16 )
Const WS_BORDER = &H800000
Const WS_THICKFRAME = &H40000
Const WM_CLOSE = &H10

Private lHWND As Long

Private Sub Command1_Click()
Dim lStyle As Long
'запускаем программу "блокнот"
Shell "notepad"
'ищем окно запущенной программы
'так как переменная lHWND объявлена Private ее значение сохранится по завершению работы процедуры
'NOTE: иногда запущенная программа не успевает создать окно,
'NOTE: тут ужо чего нибудь придумывать надо
lHWND = FindWindow(vbNullString, "Untitled - Notepad")
If lHWND =  0  Then Exit Sub
'вписываем окно программы в свою форму
SetParent lHWND, Me.hwnd
'указываем новые координаты для окна запущенной программы внутри своей формы
SetWindowPos lHWND,  0 ,  10 ,  10 ,  250 ,  250 ,  0 
'прячем заголовок окна запущенной программы,
'запрещаем изменение размеров окна запущенной программы,
'в общем приклеиваем ее
'NOTE: с консольными приложениями вроде не работает
lStyle = GetWindowLong(lHWND, GWL_STYLE)
lStyle = lStyle And (Not WS_BORDER)
lStyle = lStyle And (Not WS_THICKFRAME)
SetWindowLong lHWND, GWL_STYLE, lStyle
End Sub

Private Sub Command2_Click()
'пошлем сообщение "закрыться" окну с хендлом полученным при нажатии на Command1
Call SendMessage(lHWND, WM_CLOSE,  0 ,  0 )
End Sub
...
Рейтинг: 0 / 0
03.12.2007, 18:12
    #34983229
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие окна программы в рамках формы
Спасибо, помогло.
Дошло и облегчило.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открытие окна программы в рамках формы / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]