hWnd Окна

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

hWnd Окна

Сообщение Akella » 13.01.2005 (Чт) 8:44

Как определить hWnd и адресс ОТКРЫТОЙ ПАПКИ (Окна) на рабочем столе (не пренадлежащего VB)
Не бойся что не знаешь, бойся что не учишься.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 13.01.2005 (Чт) 17:03

FindWindow("CabinetWClass", "C:\")

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

Сообщение tyomitch » 14.01.2005 (Пт) 3:45

Ух ты, а ведь и вправду CabinetWClass... Чудеса :roll:
Если кто не знает, в бета-версиях Chicago файловый менеджер назывался не Explorer, а File Cabinet, и запускался файлом cab32.exe
Изображение

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 19.01.2005 (Ср) 10:27

Я чегото пе врубился как FindWindow("CabinetWClass", "C:\") определит hWnd и адресс ОТКРЫТОЙ ПАПКИ на рабочем столе.
Мне надо чтобы при нажатии PrintScreen делалось изображение активного окна(Проги) и это изображение сохранялось по адресу этого окна(проги).
Не бойся что не знаешь, бойся что не учишься.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.01.2005 (Ср) 11:30

А ты не врубайся, ты попробуй.
Lasciate ogni speranza, voi ch'entrate.

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 20.01.2005 (Чт) 14:02

Делаю Caption = GetWindowDC(FindWindow("CabinetWClass", "C:\")), и что дальше
Не бойся что не знаешь, бойся что не учишься.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 20.01.2005 (Чт) 14:06

А дальше API GUIDE :!:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 20.01.2005 (Чт) 14:08

Api Guide писал(а):
Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
    'Ask for a Window title
    Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match")
    'Search the window
    WinWnd = FindWindow(vbNullString, Ret)
    If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
    'Show the window
    ShowWindow WinWnd, SW_SHOWNORMAL
    'Create a buffer
    lpClassName = Space(256)
    'retrieve the class name
    RetVal = GetClassName(WinWnd, lpClassName, 256)
    'Show the classname
    MsgBox "Classname: " + Left$(lpClassName, RetVal)
    'Post a message to the window to close itself
    PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub


Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 21.01.2005 (Пт) 8:19

я так понял что Ramzes'овский код для закрывания окон, а как найти размеры окошка.
Не бойся что не знаешь, бойся что не учишься.

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

Сообщение tyomitch » 21.01.2005 (Пт) 8:20

Akella писал(а):я так понял что Ramzes'овский код для закрывания окон, а как найти размеры окошка.
http://bbs.vbstreets.ru/viewtopic.php?t=12840


И уж GetWindowDC-то здесь совершенно не при чём.
Изображение

Akella
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 144
Зарегистрирован: 15.09.2004 (Ср) 14:26
Откуда: Россия, Тюмень

Сообщение Akella » 21.01.2005 (Пт) 11:14

я непонимаю как пользоваться этим CabinetWClass.
Покажите плз.
Не бойся что не знаешь, бойся что не учишься.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 22.01.2005 (Сб) 2:33

Узнать Caption можна так:
Код: Выделить всё
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Function GetWinText(hwnd as long) as string
Dim MyStr As String
    'Create a buffer
    MyStr = String(100, Chr$(0))
    'Get the windowtext
    GetWindowText Me.hwnd, MyStr, 100
    'strip the rest of buffer
    getwintext = Left$(MyStr, InStr(MyStr, Chr$(0)) - 1)
end function
الفيجوال بيسك الرابح

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 22.01.2005 (Сб) 4:12

CabinetWClass то класс твоего окна , далее используя FindWindow("CabinetWClass", vbnullstring) , ты узнаешь hwnd окна ! Например что делать если прога не имеет заголовка , а нам надо hwnd её получить , естественно будем искать по классу ! :wink:

:wink:
Max!


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

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

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

    TopList