Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как сделать Word дочерним окном моего приложения / 20 сообщений из 20, страница 1 из 1
26.07.2005, 10:19:28
    #33184163
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
Мне необходимо открыть Word дочерним окном моего приложения. Просто открыть и загрузить файл я могу. Но чтоб внутри моего приложения не получается. Подскажите пожалуйста!
...
Рейтинг: 0 / 0
26.07.2005, 10:26:16
    #33184184
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
через OLE контейнер. Есть такая иконка на тулбоксе.
...
Рейтинг: 0 / 0
26.07.2005, 10:30:25
    #33184196
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
Код: 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
26.07.2005, 10:51:56
    #33184267
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
При компиляции ругается на STARTUPINFO и PROCESS_INFORMATION.
...
Рейтинг: 0 / 0
26.07.2005, 11:01:19
    #33184301
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
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
26.07.2005, 11:58:49
    #33184488
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
К сожалению Word открывается отдельным приложением
...
Рейтинг: 0 / 0
26.07.2005, 12:02:54
    #33184500
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
andruha1К сожалению Word открывается отдельным приложением
Само собой отдельным, но внутри вашего процесса, т.е. как бы модально в вашей программе. А вообще-то Word и есть отдельное приложение.
...
Рейтинг: 0 / 0
26.07.2005, 12:32:37
    #33184624
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
Как открыть такоеже окно внутри родительского окна (MDI интерфейс)
...
Рейтинг: 0 / 0
26.07.2005, 12:45:38
    #33184681
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
big-dukeчерез OLE контейнер. Есть такая иконка на тулбоксе.
2 andruha1:
Что, ответы выборочно читаем?
...
Рейтинг: 0 / 0
26.07.2005, 16:12:38
    #33185300
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
А можно пример кода. Для открытия документа с помощью ole. Please!
...
Рейтинг: 0 / 0
27.07.2005, 14:06:21
    #33186946
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
/topic/87796&hl=#637617

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

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

Код: 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
29.07.2005, 15:42:13
    #33192028
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
авторОткрыл внутри Ole компонента, но не знаю как достучатся до объектов документа.
OLE1.Object вернет объект Word.Application
...
Рейтинг: 0 / 0
29.07.2005, 16:13:09
    #33192128
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
...
Рейтинг: 0 / 0
29.07.2005, 16:14:09
    #33192130
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
andruha1Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
Там же прямая ссылка есть в коде! :)
...
Рейтинг: 0 / 0
29.07.2005, 16:30:52
    #33192181
andruha1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать Word дочерним окном моего приложения
Melkiades andruha1Это клево! Большое спасибо. Подскажите не занющему человеку что это за способы работы с окнами и где об этом можно почитать.
Там же прямая ссылка есть в коде! :)

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


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