Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > скрыть класс: ToolbarWindow32


Автор: piritus 26.2.2007, 19:03
вот еще один вопрос:
как можно скрыть класс ToolbarWindow32, тот что справа от кнопки ПУСК

Автор: anwe 26.2.2007, 19:55
Сначала находишь окно по классу Shell_TrayWnd через FindWindow с параметром 0 в имени окна. Дальше с помощью ShowWindow с влагом SW_HIDE прячешь его.

Автор: piritus 26.2.2007, 20:32
а ты сам это пробовал делать?

у меня "почему-то" не разрешает это делать
с меню QuickLaunch...

Автор: anwe 26.2.2007, 20:44
Цитата(piritus @  26.2.2007,  19:32 Найти цитируемый пост)
с меню QuickLaunch... 

Не знаю, что это, а с обычной панелью задач все получается!

Автор: piritus 26.2.2007, 21:04
Quick Launch - это панель инструментов "Быстрый запуск"

Автор: anwe 26.2.2007, 21:13
У меня все равно работает. smile 

Автор: piritus 26.2.2007, 21:34
интересно...
я наверное что-то не так делаю:
Код

.586p                  
.model flat, stdcall       
option casemap :none      

include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.data
WND     HWND        ?
WNDNAME db          "ToolbarWindow32",0   
WNDNAME2 db          "Quick Launch",0     
  

.code
Start:
    invoke  FindWindow,offset WNDNAME,offset WNDNAME2
    mov     WND,EAX                     
    invoke  ShowWindow,WND,SW_HIDE    
end Start



покажи, что у тебя вышло

Автор: anwe 26.2.2007, 23:11
Посмотри что я писал: Shell_TrayWnd и второй параметр 0!

Автор: piritus 27.2.2007, 12:33
если честно, то я не понял, куда посмотреть

Автор: anwe 27.2.2007, 14:25
Имя класса - Shell_TrayWnd. В FindWindow второй параметром 0. (Кстати, WND здесь лишний):
Код

...
WNDNAME db          "Shell_TrayWnd",0   
...
    invoke  FindWindow,offset WNDNAME,0
    invoke  ShowWindow,eax,SW_HIDE
...

Автор: piritus 27.2.2007, 15:25
ага, работает

а можно скрыть панель быстрого запуска (ToolbarWindow32), а  Shell_TrayWnd оставить?

Автор: anwe 27.2.2007, 20:14
Можно, только ToolbarWindow32 находится в своем контейнере ReBarWindow32, который является для него родительским окном. Поэтому сначало надо найти дочернее ReBarWindow32 по отношению к Shell_TrayWnd а после в нем найти ToolbarWindow32.

Автор: piritus 27.2.2007, 21:08
как я понимаю, получется такая иерархия:
Shell_TrayWnd->ReBarWindow32->ToolbarWindow32

что бы найти дочерний элемент нужно использовать EnumChildWindows (?)
а для того что бы в дочернем элементе найти дочерний элемент, что нужно использовать?

Автор: anwe 27.2.2007, 21:13
Можно все найти, допустим, и с помощью FindWindowEx.

Автор: piritus 27.2.2007, 22:05
что-то не выходит:
Код

.586p                  
.model flat, stdcall       
option casemap :none      

include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.data
WNDNAME1 db          "Shell_TrayWnd",0   
WNDNAME2 db          "ReBarWindow32",0  
WNDNAME3 db          "ToolbarWindow32",0  
hwnd1 HWND 0
hwnd2 HWND 0

.code
Start:
    invoke FindWindow,offset WNDNAME1,0
    mov hwnd1,eax
    
    invoke FindWindowEx,hwnd1,NULL,offset WNDNAME2,0
    mov hwnd2,eax
    
    invoke FindWindowEx,hwnd1,hwnd2,offset WNDNAME3,0
    invoke  ShowWindow,eax,SW_HIDE
end Start



скорее всего я что-то делаю не правильно

Автор: anwe 27.2.2007, 22:34
Ошибка в этой строке:
Код

invoke FindWindowEx,hwnd1,hwnd2,offset WNDNAME3,0
Ты же сам нарисовал: Shell_TrayWnd->ReBarWindow32->ToolbarWindow32. Значит искать-то надо в hwnd2; это же окно для искомого родитель! Первый же параметр - это хэндл родительского же окна. А в твоей строке поиск ведется в окне Shell_TrayWnd на уровне ReBarWindow32 (как написано во втором параметре), то есть на уровне первого вложения. А надо на уровне второго:
Код

invoke FindWindowEx,hwnd2,0,offset WNDNAME3,0

И еще, опять лишние ячейки памяти: hwnd1, hwnd2 не нужны.

Автор: piritus 28.2.2007, 11:15
а... ну все понял
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)