У меня проблема, создал новый рабочий стол, запустил свою программу которая его заменила. Можно ли как нибудь переместить на этот стол стандартную панель задач.
нашел ошибочку в hwnd2 = FindWindow(vbNullString, DESKTOP_NAME)
переделал так
Public Sub Create(ByVal sDesktopName As String)
Dim lR As Long
m_hDesktopThreadOld = GetThreadDesktop(GetCurrentThreadId())
ApiErrorHandler Err.LastDllError, (m_hDesktopThreadOld = 0)
m_hDesktopInputOld = OpenInputDesktop(0, False, DESKTOP_SWITCHDESKTOP)
ApiErrorHandler Err.LastDllError, (m_hDesktopInputOld = 0)
m_hDesktop = CreateDesktop(StrPtr(sDesktopName), ByVal 0&, ByVal 0&, 0, GENERIC_ALL, ByVal 0&
ApiErrorHandler Err.LastDllError, (m_hDesktop = 0)
If Not (m_hDesktop = 0) Then
lR = SetThreadDesktop(m_hDesktop)
lR = SwitchDesktop(m_hDesktop)
m_sDesktop = sDesktopName
Dim hwnd1 As Long
Dim hwnd2 As Long
Dim hwnd3 As Long
hwnd1 = FindWindow("Shell_traywnd", ""
hwnd2 = m_hDesktop
hwnd3 = SetParent(hwnd1, hwnd2)
End If
имхо это слишком просто... речь же идет не о рядовых окнах, а панели задач, которое само по себе является уникальным окном в системе и я очень сомневаюсь, что с ним можно проводить подобные операции
Не помогло, проблема ещё в том, что сам Бейсик остаётся на главном столе, и что либо отлаживать сложно
все равно, отлови GetLastError и запиши код ошибки где-нибудь... для этого бейсик с главного стола вытаскивать не обязателльно
Я предлагаю порпобовать другой вариант: на основе этого класса создать свое окно и setparent его к твоей десктоп
Ошибку не выдаёт, вроде я не правильный нендл нового рабочего стола передаю. Как можно узнать нендл рабочего стола, зная его название.
В общем щас попытался сделать наоборот, все контролы с моей формы запихал на стандартный рабочий стол, но в панеле задач появились их кнопки, можно ли их как нибудь убрать от туда.
Ещё одна неприятность после того как запихал все на стандартный раб. стол, кнопка свернуть все окна мои контролы тоже сворачивает. Все таки лучше со своим столом пытаться работать.
Как можно узнать нендл рабочего стола, зная его название.
ты это уже сделал - только через FindWindow, больше никак.
Лучше попробуй WindowFromPoint или GetDesktopWindow
и ещё, не подскажите, как изменять размер и положение контролов зная их hwnd
setwindowrect, setwindowpos...
В общем щас попытался сделать наоборот, все контролы с моей формы запихал на стандартный рабочий стол, но в панеле задач появились их кнопки, можно ли их как нибудь убрать от туда.
Творю программу для ограничений доступа к компьютеру + меню для выбора программ.
Работаю в интернет кафешке, вот написал тут типа своего шелла, все нормально, тока так и не получилось запретить сворачиваться при нажатии "свернуть все окна". Программа закрывает собой стандартный рабочий стол. Ну так есть ещё какие нибудь идеи по отображению панели задач. Может завершить проводник, а потом заново запустить. Вдруг он запустится под моим "рабочим столом"
Да не, ограничение, это просто запрет заходить в определённые папки и т.д. и. т.п. Прога уже написана, работает года два, просто хотел усовершенствовать
попробуй поискать на эту тему... в интернете должна быть информация. Раз уж рабочий стол так делали и столько там нюансов (одной CreateDeskTop не обойтись)))), мжет есть пример и по панеле зада...
Во всяком случае чо-то новенькое найдешь, узнаешь... - например тут уже http://forum.sources.ru/index.php?s=7b7aa68bf909823e81287f430b9156de&showtopic=156994