powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прикрепить форму
4 сообщений из 4, страница 1 из 1
Прикрепить форму
    #32150068
SashaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Подскажите пожалуйста как сделать так, чтобы моя форма на VB (например Form1.exe) подвешивалась к программе Word или к-л другой программе (например к нижнему правому углу) и соответственно при любых перемещениях окна Word форма тоже должна перемещаться.
Спасибо.
...
Рейтинг: 0 / 0
Прикрепить форму
    #32150097
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Готовый код не дам ибо такими проблемами не был обременен.
Тебе прийдется использовать Win32 API для поиска hwnd нужного тебе окна (самого Word или конкретного окна документа), далее отслеживать по таймеру или через те же API место расположения границ окна и перемещать свою форму куда нужно.
На сайтах по VB есть куча примеров для работы с окнами и границами. Объединишь - получишь что тебе нужно.
...
Рейтинг: 0 / 0
Прикрепить форму
    #32153013
SashaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо конечно, но что то у меня всё равно ничего не получается.

Я просмотрел несколько сайтов и единственное что мне удалось это прикрепить одну форму к другой, но прикрепить форму к Word-у не удалось!!!
Form1 к form2 я прикрепил следующим образом:

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_MOVE = &H3
Public Const GWL_WNDPROC = -4
Public glPrevWndProc As Long

Public Function pMyWindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_MOVE And Form1.WindowState = vbNormal Then
Form2.Move Form1.Left - 1000, Form1.Top - 2500
End If
pMyWindowProc = CallWindowProc(glPrevWndProc, hw, uMsg, wParam, lParam)
End Function

Private Sub Form_Load()
Form2.Show
Form1.Show
glPrevWndProc = SetWindowLong(Form1.hWnd, GWL_WNDPROC, AddressOf pMyWindowProc)
End Sub

Но мне то нужно форму прикрепить не к другой форме, а Word-у!!!

Затем я нашел hwnd окна Word следующим способом:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim FFF As Long

FFF = FindWindow(OpusApp, vbNullString)

А ввиду того что VB я владею далеко не в совершенстве, то на этом у меня всё заглохло!!!


Подскажите что делать дальше (а лучше пришлите код, если не трудно).
HELP Me Please!!!
...
Рейтинг: 0 / 0
Прикрепить форму
    #32153070
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окно Ворда ты нашел (FFF = FindWindow(OpusApp, vbNullString) ), теперь ищи API функцию, котрая возвращет информацию об этм окне (место расположения, щирина, высота...) Делай соответсвующие выводы/расчеты и перемещай свою форму куда нужно.
Твой первый приведенный пример принимет в качестве парaметра hwnd формы, так и передай hwnd Ворда - FFF).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прикрепить форму
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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