powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать Word дочерним окном моего приложения
20 сообщений из 20, страница 1 из 1
Как сделать Word дочерним окном моего приложения
    #33184163
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо открыть Word дочерним окном моего приложения. Просто открыть и загрузить файл я могу. Но чтоб внутри моего приложения не получается. Подскажите пожалуйста!
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184184
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через OLE контейнер. Есть такая иконка на тулбоксе.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184196
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Sub API_OpenDocAndWait(fileName As String)
    Dim sfinal As String
    Dim s As String
    
    sfinal = fileName
    s = String$( 255 ,  0 )
    FindExecutable sfinal, "", s
    sfinal = Mid$(s,  1 , InStr( 1 , s, Chr$( 0 )) -  1 ) & " """ & sfinal & """"
    API_ExecCmd (sfinal)
End Sub

Private Function API_ExecCmd(cmdline$) As Long
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    Dim Ret As Long
    
    ' Initialize the STARTUPINFO structure:
    start.cb = Len(start)
    
    ' Start the shelled application:
    Ret& = CreateProcessA(vbNullString, cmdline$,  0 &,  0 &,  1 &, NORMAL_PRIORITY_CLASS,  0 &, vbNullString, start, proc)
    
    ' Wait for the shelled application to finish:
    Ret& = WaitForSingleObject(proc.hProcess, INFINITE)
    Call GetExitCodeProcess(proc.hProcess, Ret&)
    Call CloseHandle(proc.hThread)
    Call CloseHandle(proc.hProcess)
    API_ExecCmd = Ret&
End Function

В FileName посылаешь имя открываемого файла.

...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184267
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При компиляции ругается на STARTUPINFO и PROCESS_INFORMATION.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184301
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andruha1При компиляции ругается на STARTUPINFO и PROCESS_INFORMATION.
Код: 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.
Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
End Type

Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184488
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению Word открывается отдельным приложением
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184500
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andruha1К сожалению Word открывается отдельным приложением
Само собой отдельным, но внутри вашего процесса, т.е. как бы модально в вашей программе. А вообще-то Word и есть отдельное приложение.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184624
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как открыть такоеже окно внутри родительского окна (MDI интерфейс)
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33184681
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeчерез OLE контейнер. Есть такая иконка на тулбоксе.
2 andruha1:
Что, ответы выборочно читаем?
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33185300
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно пример кода. Для открытия документа с помощью ole. Please!
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33186946
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/87796&hl=#637617

Я думаю, что точно так-же можно запихнуть любое окно, тебе осталось только вытащить откуда-то hWnd окна Word.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33187105
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hibernate
Я думаю, что точно так-же можно запихнуть любое окно, тебе осталось только вытащить откуда-то hWnd окна Word.
Когда он сделает
Код: plaintext
CreateObject("Word.Application")
, у него и появится этот hWnd.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33187531
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может подскажете где вытащить hWnd для окна Word.
Если можно приведите ктод.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33189555
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andruha1Может подскажете где вытащить hWnd для окна Word.
Если можно приведите ктод.

Слушай, ты бы уж объяснил нормально людям, что ты сделать-то хочешь. А то уже целую неделю задаёшь какие-то наводящие вопросы. Каков твой желаемый конечный результат? Что должна уметь делать твоя программа? А то может быть тебе и простого RTF поля будет достаточно...
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33191924
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извените за некорктное выражение своих мыслей. Постараюсь обьяснить что я хочу:
Мне необходимо в моем приложении открыть файл Word_a и получить доступ к его объектам и методам. Но Word должен открыться внутри моего приложения, а не отдельным окном Винды. Открыл внутри Ole компонента, но не знаю как достучатся до объектов документа.
Знаю как добраться до объектов если открыть вот так:
Set WordApp = New Word.Application
Set DocWord = WordApp.Documents.Open(cdDocFile.fileName)
DocWord.Activate
Но мне необходимо чтобы окно Worda было MDIchild = true,для моего родительского окна.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33191999
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так вот?

Код: 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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Const GW_HWNDNEXT =  2 
Dim mWnd As Long
Function InstanceToWnd(ByVal target_pid As Long) As Long
    Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
    'Find the first window
    test_hwnd = FindWindow(ByVal  0 &, ByVal  0 &)
    Do While test_hwnd <>  0 
        'Check if the window isn't a child
        If GetParent(test_hwnd) =  0  Then
            'Get the window's thread
            test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
            If test_pid = target_pid Then
                InstanceToWnd = test_hwnd
                Exit Do
            End If
        End If
        'retrieve the next window
        test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
    Loop
End Function
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim Pid As Long
    'Lock the window update
    LockWindowUpdate GetDesktopWindow
    'Execute notepad.Exe
    Pid = Shell("c:\windows\notepad.exe", vbNormalFocus)
    If Pid =  0  Then MsgBox "Error starting the app"
    'retrieve the handle of the window
    mWnd = InstanceToWnd(Pid)
    'Set the notepad's parent
    SetParent mWnd, Me.hwnd
    'Put the focus on notepad
    Putfocus mWnd
    'Unlock windowupdate
    LockWindowUpdate False
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'Unload notepad
    DestroyWindow mWnd
    'End this program
    TerminateProcess GetCurrentProcess,  0 
End Sub

...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33192028
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОткрыл внутри Ole компонента, но не знаю как достучатся до объектов документа.
OLE1.Object вернет объект Word.Application
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33192128
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33192130
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andruha1Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
Там же прямая ссылка есть в коде! :)
...
Рейтинг: 0 / 0
Как сделать Word дочерним окном моего приложения
    #33192181
andruha1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkiades andruha1Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
Там же прямая ссылка есть в коде! :)

Извиняюс. Не заметил.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать Word дочерним окном моего приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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