Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Оболочка, CreateDesktop, explorer.exe... Как это? Добавлено: 14.03.07 16:31  

Автор вопроса:  Programmer
Хочу создать свою оболочку наподобии
explorer.exe. Тоесть свой рабочий стол, меню "Пуск" и панель задач.
Очень нужно, но не знаю как это сделать. В инете искал, поиск не рулит, по иск по форуму вобще не роботает(Timeout), короче кто знает - подскажите.
Есть у меня подозрения на API функцию
CreateDesktop, но у меня ниче с ней не получаеться.

Заранее спасибо!

Ответить

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

Номер ответа: 1
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #1 Добавлено: 14.03.07 17:28
Не изобретай самокат, все равно хуже велосипеда будет....
Если хочешь поизголяться, попробуй Aston

Ответить

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



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #2
Добавлено: 14.03.07 18:23
Где - то на VBStreets.ru встречался мне пример skinnable_desktop_taskbar.zip. Не доделанный конечно, но основные принципы понять позволяет.

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 14.03.07 20:03
Да, поиск рулит... ещё попробуй "Soft_Shell" тоже оболочка на басике вроде...

Поиск по апи тоже кстати рулит, начиная с мсдна заканчивая гуглом...

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 14.03.07 22:22
Круто было бы, если одним вызовом CreateDesktop можно было создать свой explorer.exe... :)))))))))))))))))))))))

Ответить

Номер ответа: 5
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #5
Добавлено: 15.03.07 01:45
там все очень сложно. я когда-то начинал писать.
Там нужно юзать кучу хуков, перехватывать Апи, короче - геморрой. Если хочешь, то могу у себя исходники поискать. кое-что у меня получилось. но кажись я их грохнул всетки.

Ответить

Номер ответа: 6
Автор ответа:
 Bonapart



ICQ: 175256 

Вопросов: 32
Ответов: 108
 Web-сайт: team16.tut.su
 Профиль | | #6
Добавлено: 15.03.07 07:40
Да изобрести свой шелл одной функцией
Нужно прятать то что есть и своё подпихивать(таскбар,рабочий стол)

Ответить

Номер ответа: 7
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #7
Добавлено: 15.03.07 16:32
Народ а как заникать Такбар на VB6

Ответить

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



Вопросов: 71
Ответов: 246
 Профиль | | #8 Добавлено: 15.03.07 18:48
Docal, почаще заглядывай на vbnet.ru/faq:
 Включить/выключить панель задач Windows
     Добавьте на форму 2 CommandButton. Первая кнопка спрячет панель задач (там где расположена кнопка ПУСК), вторая - покажет.
------------------------------------
'Вариант 1
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40
Private Sub Command1_Click()
hwnd1 = FindWindow("Shell_traywnd", "";)
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
End Sub
Private Sub Command2_Click()
hwnd1 = FindWindow("Shell_traywnd", "";)
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
End Sub


'Вариант 2
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Const SW_HIDE = 0
Const SW_SHOW = 5

Public Sub ApplicationBar(Visible As Boolean)
Dim hWnd As Long
hWnd = FindWindow("Shell_TrayWnd", "";)
If Visible Then
ShowWindow hWnd, SW_SHOW
Else
ShowWindow hWnd, SW_HIDE
End If
EnableWindow hWnd, Visible
End Sub

Private Sub Command1_Click()
ApplicationBar False
End Sub

Private Sub Command2_Click()
ApplicationBar True
End Sub

Ответить

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



Вопросов: 71
Ответов: 246
 Профиль | | #9 Добавлено: 15.03.07 18:52
Нашол такой код:

Создание всплывающей панели      
     У каждого юзера, работающего в операционной системе Windows'98 есть панель задач (это панелька, на которой находится кнопка ПУСК). Некоторые любят в настройках этой панели установить значение "Автоматически убирать с экрана", и тогда панель будет автоматически убираться, когда она не активна. Так вот этот пример покажет, как можно средствами VB создать такую всплывающую справа панельку, подобную панели задач. Проект сырой, то есть вы можете его доработать, как вам заблагорасудится. Если вы что-то измените в этом проекте, {дайте мне знать}.

Создайте новый проект. Положите на форму компонент Timer. В свойствах формы укажите:
.AutoRedraw = True
.BorderStyle = 0
.MinButton = False
.MaxButton = False
.ShowInTaskbar = False
Вставьте следующий код:
------------------------------------
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type Formsize
Left As Long
Top As Long
Width As Long
Height As Long
End Type

Private Const MaxSize = 50
Private Const MinSize = 1
Private Const Fade = False ' Установите данное значение либо True либо False

Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
Timer1.Interval = 50
Form_Resize
End Sub
Private Sub Form_Resize()
Me.Move Screen.Width - (MinSize * Screen.TwipsPerPixelX), 0, (MaxSize * Screen.TwipsPerPixelX), Screen.Height
Me.Cls
Me.Line (0, 0)-(0, Me.Height), &HFFFFFF
End Sub
Private Sub Timer1_Timer()
Dim a As POINTAPI
Dim Form As Formsize
Dim CurCut As Long

Form.Width = Me.Width / Screen.TwipsPerPixelX
Form.Left = Me.Left / Screen.TwipsPerPixelX
Form.Height = Me.Height / Screen.TwipsPerPixelY
Form.Top = Me.Top / Screen.TwipsPerPixelY
Call GetCursorPos(a)
If a.x >= Form.Left And a.x < Form.Left + Form.Width And a.y >= Form.Top And a.y < Form.Height + Form.Top Then
If Me.Tag <> "0" Then
If Fade = True Then
CurCut = 1
Do Until Me.Left - (CurCut * Screen.TwipsPerPixelX) <= Screen.Width - (MaxSize * Screen.TwipsPerPixelX)
Me.Left = Me.Left - (CurCut * Screen.TwipsPerPixelX)
DoEvents
Loop
Me.Move Screen.Width - (MaxSize * Screen.TwipsPerPixelX), 0, (MaxSize * Screen.TwipsPerPixelX), Screen.Height
Else
Me.Move Screen.Width - (MaxSize * Screen.TwipsPerPixelX), 0, (MaxSize * Screen.TwipsPerPixelX), Screen.Height
End If
Me.Tag = "0"
End If
Else
If Me.Tag <> "1" Then
If Fade = True Then
CurCut = 1
Do Until Me.Left + (CurCut * Screen.TwipsPerPixelX) >= Screen.Width - (MinSize * Screen.TwipsPerPixelX)
Me.Left = Me.Left + (CurCut * Screen.TwipsPerPixelX)
DoEvents
Loop
Me.Left = Screen.Width - (MinSize * Screen.TwipsPerPixelX)
Else
Me.Left = Screen.Width - (MinSize * Screen.TwipsPerPixelX)
End If
Me.Tag = "1"
End If
End If
End Sub      


А вот как сделать, чтобы когда панель появляеться, все окна сдвигались?
Или есть еще способ создать свою панель задач?
Подскажите, плиз!

Ответить

Номер ответа: 10
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #10 Добавлено: 15.03.07 23:04
Я нашол способ создать панель задач нормальную, тока трей не знаю как делать, можно скачать здесь: http://vbcode.narod.ru/taskbar.zip.
Только учтите, я настраивал под свои размеры экрана, и еще - у меня Windows98, в ХР не испытывал.

Ответить

Номер ответа: 11
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #11 Добавлено: 15.03.07 23:54
ух респект, 98 рулит, хороший виндовс! надо себе будет на ВМ хотябы на память проинсталить :) А так это.. таскБар в Soft_shell был вроде неплохо реализован...

Вообще реализация своей оболчки предполагает отсутствия explorer.exe - т.е. убиваем его, и запускам своего...

Далее помнится надо было окно с определённым классом создавать, невспомню щас какой именно класс... можно посмотреть какой у трея winspy'ем например... и вообщем при создании окна такого система сама в него будет посылать сообщения, о том какая иконка добвлена, удалено итп итд... соответственно реагируя на эти сообщения можно создать свой трей...

А вообще говоря непонятна идея, ну зачем? Задача не из лёгких, для обучения не подходит, писать сложно и долго. Практической пользы немного - красивее сделать врядли получится, ограниченность пользователя разве что... хотя и в хр ровными руками можно довольно сурово настроить пользователя... Конкуренты тоже есть - LockWin например. Нет, я не отговариваю...:)

Ответить

Страница: 1 |

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



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