Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Переместить панель задач на новый рабочий стол Добавлено: 30.04.07 17:37  

Автор вопроса:  Rascal | Web-сайт: uzplat.org
У меня проблема, создал новый рабочий стол, запустил свою программу которая его заменила. Можно ли как нибудь переместить на этот стол стандартную панель задач.

Ответить

  Ответы Всего ответов: 36  

Номер ответа: 1
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #1
Добавлено: 30.04.07 17:59
Суперклассинг пробовал?

Ответить

Номер ответа: 2
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #2
Добавлено: 30.04.07 18:02
FindWindow и SetParent не катит?

Ответить

Номер ответа: 3
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #3
Добавлено: 30.04.07 19:20
Делал вот так


   hwnd1 = FindWindow("Shell_traywnd", "";)
    'hwnd3 = apiGetDesktopWindow()
   cNewDesktop.Create DESKTOP_NAME
   cNewDesktop.StartProcess sPath
   
   hwnd2 = FindWindow(vbNullString, DESKTOP_NAME)
   Call SetParent(hwnd1, hwnd2)


Не помогло, проблема ещё в том, что сам Бейсик остаётся на главном столе, и что либо отлаживать сложно

Ответить

Номер ответа: 4
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #4
Добавлено: 30.04.07 19:40
нашел ошибочку в 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
   
End Sub


Все равно не работает, но панель задач пропадает

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #5
Добавлено: 30.04.07 19:55
FindWindow и SetParent не катит?
имхо это слишком просто... речь же идет не о рядовых окнах, а панели задач, которое само по себе является уникальным окном в системе и я очень сомневаюсь, что с ним можно проводить подобные операции

Не помогло, проблема ещё в том, что сам Бейсик остаётся на главном столе, и что либо отлаживать сложно
все равно, отлови GetLastError и запиши код ошибки где-нибудь... для этого бейсик с главного стола вытаскивать не обязателльно :-)

Я предлагаю порпобовать другой вариант: на основе этого класса создать свое окно и setparent его к твоей десктоп

Ответить

Номер ответа: 6
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #6
Добавлено: 30.04.07 19:56
Все равно не работает, но панель задач пропадает
а что за ошибку выдает?

Ответить

Номер ответа: 7
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #7
Добавлено: 30.04.07 20:30
Ошибку не выдаёт, вроде я не правильный нендл нового рабочего стола передаю. Как можно узнать нендл рабочего стола, зная его название.

В общем щас попытался сделать наоборот, все контролы с моей формы запихал на стандартный рабочий стол, но в панеле задач появились их кнопки, можно ли их как нибудь убрать от туда.

Ответить

Номер ответа: 8
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #8
Добавлено: 30.04.07 20:32
и ещё, не подскажите, как изменять размер и положение контролов зная их hwnd

Ответить

Номер ответа: 9
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #9
Добавлено: 30.04.07 20:35
Ещё одна неприятность после того как запихал все на стандартный раб. стол, кнопка свернуть все окна мои контролы тоже сворачивает. Все таки лучше со своим столом пытаться работать.

Ответить

Номер ответа: 10
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #10
Добавлено: 30.04.07 21:36
как изменять размер и положение контролов зная их hwnd

SetWindowPos

Ответить

Номер ответа: 11
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #11
Добавлено: 30.04.07 21:56
Как можно узнать нендл рабочего стола, зная его название.
ты это уже сделал - только через FindWindow, больше никак.

Лучше попробуй WindowFromPoint или GetDesktopWindow

и ещё, не подскажите, как изменять размер и положение контролов зная их hwnd
setwindowrect, setwindowpos...

В общем щас попытался сделать наоборот, все контролы с моей формы запихал на стандартный рабочий стол, но в панеле задач появились их кнопки, можно ли их как нибудь убрать от туда.
ужос что творишь... это будет вирус?)))

Ответить

Номер ответа: 12
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #12
Добавлено: 01.05.07 14:43
Творю программу для ограничений доступа к компьютеру + меню для выбора программ.

Работаю в интернет кафешке, вот написал тут типа своего шелла, все нормально, тока так и не получилось запретить сворачиваться при нажатии "свернуть все окна". Программа закрывает собой стандартный рабочий стол. Ну так есть ещё какие нибудь идеи по отображению панели задач. Может завершить проводник, а потом заново запустить. Вдруг он запустится под моим "рабочим столом"

Ответить

Номер ответа: 13
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #13
Добавлено: 01.05.07 15:43
что-то у меня упало желание экспериментировать со своим рабочим столом)))))

хотя для ограничения доступа к компу - идея хорошая, но опасная - как бы себе самому не запретеить...
)))))

Ответить

Номер ответа: 14
Автор ответа:
 Rascal



Вопросов: 9
Ответов: 37
 Web-сайт: uzplat.org
 Профиль | | #14
Добавлено: 01.05.07 15:51
Да не, ограничение, это просто запрет заходить в определённые папки и т.д. и. т.п. Прога уже написана, работает года два, просто хотел усовершенствовать

Ответить

Номер ответа: 15
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #15
Добавлено: 01.05.07 16:01
попробуй поискать на эту тему... в интернете должна быть информация. Раз уж рабочий стол так делали и столько там нюансов (одной CreateDeskTop не обойтись)))), мжет есть пример и по панеле зада...

Во всяком случае чо-то новенькое найдешь, узнаешь... - например тут уже http://forum.sources.ru/index.php?s=7b7aa68bf909823e81287f430b9156de&showtopic=156994

http://www.sql.ru/forum/actualthread.aspx?tid=333872

http://www.codeproject.com/win32/AntonioWinLock.asp?df=100&forumid=62485&exp=0

В последнем меня поразило самое элементарное: у меня тоже получилось, что с главного исчезла панел задач (хоятв новом не отобразилась)

Возможно
ShowWindow(FindWindow("Shell_TrayWnd", NULL), SW_HIDE);
решало проблему, проверь, может получится :)

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам