powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открытие окна программы в рамках формы
12 сообщений из 12, страница 1 из 1
Открытие окна программы в рамках формы
    #34978296
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу всех, кто знает как сделать так, чтоб при нажатии на команд1 открывалось окно программы С:\Програм файлз\тра-ля-ля.exe в пределах формы. Причём в четвёртой её части, потому что будут ещё три кнопки, чтоб открывать окна программ в остальных трёх четвертях данной формы.
Но это уже сильно. А пока прошу о первом.
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #34978507
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да забыл, окна программы 320х240.
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #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
Открытие окна программы в рамках формы
    #34978630
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и конечно же в коде:
Dim lStyle As Long
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #34978702
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чё-то не сильно окно программы хочет приклеиваться к форме.
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #34978763
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
part_okЧё-то не сильно окно программы хочет приклеиваться к форме.

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

Да, инАКда необходимо просто поднапрячь свой мозК, если есть чё напрягать, конечно.
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #34978943
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nikz As Long
Хорошо, а как же мне закрыть это окно в форме?
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #34979005
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запомнить значение lHWND а потом тынц
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #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
Открытие окна программы в рамках формы
    #34979350
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nikzзапомнить значение lHWND а потом тынц
Я, конечно, извиняюсь, но я только учусь ВБ.
Не могли бы Вы мне объяснить немного как же всё-таки пользоваться WM_CLOSE?
А в данном случае как закрыть окно?
p.s. Надо же кому-то мне объяснить впервый раз...
...
Рейтинг: 0 / 0
Открытие окна программы в рамках формы
    #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
Открытие окна программы в рамках формы
    #34983229
part_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, помогло.
Дошло и облегчило.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Открытие окна программы в рамках формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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