Страница: 1 |
Страница: 1 |
Вопрос: вставка данных во всплывающее окно
Добавлено: 27.03.07 17:47
Автор вопроса: APS | ICQ: 234458121
Возможно, не совсем правильно сформулировал тему.
Вопрос вот какой? При печати на принтере Adobe PDF появляется окно для ввода пути и имени файла. Можно ли как-то автоматом выбрать папку и подставить имя файла, а потом считать какими они были при закрытии окна.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
APS
ICQ: 234458121
Вопросов: 38
Ответов: 107
Профиль | | #1
Добавлено: 27.03.07 22:37
насколько я понимаю, надо пользоваться API
т.е. сначала надо найти нужное окно по хеадеру
это примерно понятно как делать
вот что дальше, как найти то поле в окне, которое нужно?
Номер ответа: 2
Автор ответа:
APS
ICQ: 234458121
Вопросов: 38
Ответов: 107
Профиль | | #2
Добавлено: 27.03.07 23:30
окно "Сохранить PDF-файл как" я ловлю
как теперь отловить остальные параметры данного окна?
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 28.03.07 02:15
api EnumChildWindows
Номер ответа: 4
Автор ответа:
APS
ICQ: 234458121
Вопросов: 38
Ответов: 107
Профиль | | #4
Добавлено: 29.03.07 16:22
 ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
Declare Function EnumChildWindows Lib "user32.dll" (ByVal hWndParent As Long, _
ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetWindowTextLength Lib "user32.dll" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" _
 ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Sub adobe()
Dim fhwnd As Long ' дескриптор окна
' ищем окно печати PDF-файла
fhwnd = FindWindow(vbNullString, "Сохранить PDF-файл как"
If fhwnd = 0 Then ' если не найдено
Debug.Print "Печать PDF-файла сейчас не активирована"
Else
' ищем дочерние окна
Debug.Print "Печать PDF-файла запрашивает имя файла"
' Use the above callback function to list all of the enumerated windows. Note that lParam is
' set to 0 because we don't need to pass any additional information to the function.
retval = EnumChildWindows(fhwnd, AddressOf EnumChildProc, 0)
End If
End Sub
' This function displays the title bar text of the window identified by hwnd.
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim slength As Long, wintext As String ' window title text length and buffer
Dim retval As Long ' return value
Static winnum As Integer ' counter keeps track of how many windows have been enumerated
winnum = winnum + 1 ' one more window enumerated....
slength = GetWindowTextLength(hwnd) + 1 ' get length of title bar text
buffer = Space(slength) ' make room in the buffer
retval = GetWindowText(hwnd, buffer, slength) ' get title bar text
Debug.Print "Window #"; winnum; " : "; ' display number of enumerated window
Debug.Print Left(buffer, slength - 1) ' display title bar text of enumerated window
EnumChildProc = 1 ' nonzero return value means continue enumeration
End Function
Полазил в примерах и т.д. Попытался из них что-то склеить. Но никак не могу найти, где ошибка. Выдает пустые заголовки дочерних окон. Хотя, может, оно так и есть?