Страница: 1 | 2 |
|
Вопрос: Можно запустить программу в программе?
|
Добавлено: 19.04.04 00:08
|
|
Автор вопроса: kolyanoid
|
Звучит глупо, но всё же. Вот, допустим есть программа (VBшная), которая запускает другую программу (не VBшную, но тоже оконную). Можно ли сделать так, чтобы она запускалась не как отдельное окно, а как "окно в окне". Ну как например в PHOTOSHOP'е можно много картинок в разных окнах загружать. Можно ли такое учудить с внешней ЕХЕшкой?
Ответить
|
Номер ответа: 3 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #3
|
Добавлено: 19.04.04 23:22
|
nu pochemuzhe ne srabotaet?srabotaet, da eshe kak! ya vot proboval, tak zapuskal Explorer.exe, cherez Shell, poluchal ego hWnd, i govoril SetParent na formua nashu eto hWnd. vse rabotal prekrasno, tol`ko esli ty zakryvaesh` svoe okno, to tot Explorer net, tak chto ego nado vrushnuyu TerminateProcess'om ili WM_QUIT posylat` emu, ili che-to tak takoe. A vobshe rabotaet, nado tol`ko poeksperimentirovat`..... Udachi
Ответить
|
Номер ответа: 4 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #4
|
Добавлено: 19.04.04 23:24
|
nu pochemuzhe ne srabotaet?srabotaet, da eshe kak! ya vot proboval, tak zapuskal Explorer.exe, cherez Shell, poluchal ego hWnd, i govoril SetParent na formua nashu eto hWnd. vse rabotal prekrasno, tol`ko esli ty zakryvaesh` svoe okno, to tot Explorer net, tak chto ego nado vrushnuyu TerminateProcess'om ili WM_QUIT posylat` emu, ili che-to tak takoe. A vobshe rabotaet, nado tol`ko poeksperimentirovat`..... Udachi
Ответить
|
Номер ответа: 5 Автор ответа: kolyanoid
Вопросов: 19 Ответов: 60
|
Профиль | | #5
|
Добавлено: 20.04.04 00:23
|
2 AASoft А код можешь представить, пожалуйста? Ну примерно. А то очень надо свой проект доделать P.S. 2 sne Ну это понятно Просто, более доступного примера для народа на ум не пришло
Ответить
|
Номер ответа: 6 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #6
|
Добавлено: 20.04.04 20:48
|
a pochemu zhe net?na, lovi: Private Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long Dim Prog_hWnd as Long Dim Me_hWnd as Long Private Sub Form_Load() Me_hWnd = Me.hWnd Prog_hWnd = Shell("explorer.exe",vbnormalfocus") if Prog_hWnd <> 0 then If SetParent(Prog_hWnd, Me_hWnd) <> 0 Then 'Succeded Me.Caption = "Explorer.EXE war run and it is now in YOUR form!" Else 'Failed Me.Caption = "Explorer.EXE war run, but failed to get set in YOUR form!" End If Else Me.Caption = "Explorer.EXE war NOT run!" End If End Sub Private Sub Form_Unload(Cancel as integer) DestroyWindow Prog_hWnd unload me end End Sub P.S. Ya ne uveren chto eto srabotaet, tak kak shas sizhu ne doma, VB6.0 netu, tak chto ........vobshem pridu domoj, proveryu, i napishu eshe raz esli ne srabotaet.udachi
Ответить
|
Номер ответа: 7 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #7
|
Добавлено: 21.04.04 19:03
|
ne moe, s allapi.net, no vse zhe...... 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 = GetWin
Ответить
|
Номер ответа: 10 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #10
|
Добавлено: 22.04.04 20:00
|
ups, sorry, izvini blin. pervyj i ne dolzhen rabotat`, on ne pravil`nyj s rozhdeniya, ...mnoj napisan...gy. da vot, a vtoroj ne vlez, shas ssylku dam, posmotrish. u menya rabotal, nichego menyat` ne nado. rabotaet pravda v XP in 2k. ssylochka vot: http://www.mentalis.org/apilist/56C1BBA2F17A9ED35A1B54D4462EB24C.html izvini eshe raz za ne vlezhshij kod... kstati, ento mne napomnilo:Pavel, kogda budem ves` sajt na tochku perevodit`. pomnica ty mne tama zadanie daval, tak ono gdeto u menya sdelanoe valyaetsya, a design ty mne tak i neprislal. davaj- ka, shli. a to ono der`movo smotricca.
Ответить
|
Номер ответа: 13 Автор ответа: AASoft
Вопросов: 86 Ответов: 920
|
Профиль | | #13
|
Добавлено: 23.04.04 21:20
|
zameni "c:\windows\notepad.exe" v proge na "notepad.exe" i eshe v formu_unload ili gde ono tam pishet TerminateProcess GetCurrentProcess, 0 zameni na unload me end vse rabotaet prekrasno. shas eshe raz poproboval v 2k, vse pashet, a v 98 ne idet, govorit operaciya ne razreshena windosom.
Ответить
|
Страница: 1 | 2 |
Поиск по форуму