Манипуляции с окнами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Манипуляции с окнами

Сообщение Роман-вб » 16.04.2006 (Вс) 18:37

Вот например с окнами своего проеткта мы манипулируем так: например, frmMain.WindowState=. А как "манипулировать" окнами др. программ?
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 16.04.2006 (Вс) 18:41

Все API на *Window*, плюс SendMessage и PostMessage.
Моду создают модоки, а распространяют модозвоны.

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 16.04.2006 (Вс) 18:43

hCORe
А поподробнее можешь?
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.04.2006 (Вс) 18:49

А что конкретно надо?
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.04.2006 (Вс) 18:50

Роман-вб
А поискать самому?
Если всё делать своими ручками, они скоро отвалятся !

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 16.04.2006 (Вс) 18:51

Примерчик: свернуть/развернуть "чужое" окно
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 16.04.2006 (Вс) 18:52

Kovu
Этот вариант мне известен, да вот чё-то не помог!
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.04.2006 (Вс) 19:22

Роман-вб
Да плохо ищешь. Пример из апигайда
Код: Выделить всё
Private Const SW_MINIMIZE = 6
Private Type POINTAPI
        x As Long
        y As Long
End Type
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Type WINDOWPLACEMENT
        Length As Long
        flags As Long
        showCmd As Long
        ptMinPosition As POINTAPI
        ptMaxPosition As POINTAPI
        rcNormalPosition As RECT
End Type
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Dim Rectan As RECT
Private Sub Form_Load()
    'Tip submitted by pyp99 (pyp99@hotmail.com)
    Dim WinEst As WINDOWPLACEMENT
    Dim rtn As Long
    WinEst.Length = Len(WinEst)
    'get the current window placement
    rtn = GetWindowPlacement(Me.hwnd, WinEst)
    Rectan = WinEst.rcNormalPosition
End Sub
Private Sub Command1_Click()
    Dim WinEst As WINDOWPLACEMENT
    Dim Punto As POINTAPI
    Dim rtn As Long
    'set the new min/max positions
    Punto.x = 100
    Punto.y = 100
    'initialize the structure
    WinEst.Length = Len(WinEst)
    WinEst.showCmd = SW_MINIMIZE
    WinEst.ptMinPosition = Punto
    WinEst.ptMaxPosition = Punto
    WinEst.rcNormalPosition = Rectan
    'set the new window placement (minimized)
    rtn = SetWindowPlacement(Me.hwnd, WinEst)
End Sub


Надеюсь разберешься.... :roll:
Если всё делать своими ручками, они скоро отвалятся !

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 16.04.2006 (Вс) 20:20

Kovu
Код: Выделить всё
rtn = GetWindowPlacement(Me.hwnd, WinEst)

Да но я не разобрался, как же мне свернуть/востановить не это же окно, а, допустим, окно OutlookExpress? :roll:
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.04.2006 (Вс) 20:25

Роман-вб

rtn = GetWindowPlacement(Me.hwnd, WinEst)
Замени на нужный тебе хэндл. Как его получить: Фпоиск! по FindWindow
Если всё делать своими ручками, они скоро отвалятся !

Роман-вб
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 520
Зарегистрирован: 04.04.2006 (Вт) 9:40
Откуда: Средняя полоса

Сообщение Роман-вб » 16.04.2006 (Вс) 20:42

Kovu
Скорее всего я пишу глупсть (она ничего не делает):
rtn = GetWindowPlacement(FindWindow("Калькулятор", vbNullString), WinEst)
И всё же...
Жить ещё 2 недели, работы на 8 лет, но я докажу на деле, на что способен аскет!

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 16.04.2006 (Вс) 20:48

Дык гет используется в данном случае чтоб получить рект окна передаваемый в SetWindowPlacement . Или по твоему код кнопки так, для красоты привинчен? :))))
Если всё делать своими ручками, они скоро отвалятся !


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 188

    TopList  
cron