Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Visual Basic - Трюки и Хитрости, советы и ответы на вопросы


Служба Рассылок Городского Кота
VB Хитрости - советы и ответы на вопросы

Здравствуйте, уважаемые читатели.

Сегодня поговорим о системных хитростях. Т.е. о вещах, которые можно делать со стандартными системными обьектами. Эти объекты у всех на виду, и, конечно же, хочется сделать с ними что-либо эдакое.... Впрочем, как изготовить хранитель экрана (screensaver) cвоими руками, используя только подручные материалы, не является темой нашего сегодняшнего выпуска. Этот код можно найти в сети достаточно спокойно.
Я рекомендую не просто копировать нижележащий код. А так же посмотреть, как проводятся простейшие манипуляции с API - это полезно, и позволяет избежать ошибок, когда вы будите писать что -то свое и вызывать API функции.

1. Итак, что мы видим перед собой на экране? Правильно Таскбар - эта та самая полосочка внизу экрана, куда минимизируются окна. Первое желание - спрятать ее.

Скопируйте это на форму , запустите ее.


Private Declare Function FindWindow Lib "user32"  _

Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA"(ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Заметьте, никаких Public декларайий внутри формы. Если функции 'обьявлены в модуле, то там можно делать их паблик Private Const WM_SHOWWINDOW = &H18 Dim hWndTaskbar As Long Dim bShow As Boolean Private Sub Form_Click() Dim r As Long Dim i As Integer i = 0 bShow = Not bShow r = SendMessage(hWndTaskbar, WM_SHOWWINDOW, bShow, i) End Sub Private Sub Form_Load() bShow = True hWndTaskbar = FindWindow("shell_trayWnd", "") End Sub

2. Да и вообще - этот таскбар может быть налепелен слева, справа, или даже сверху. А некоторые юзеры (никому не рассказывайте только) делают его высотой в 2 или 3 строки.
Таким образом, ваше приложение может не влезать в экран. Первый прмер позволит спрятать таскбар если он мешается , а вот мешается ли он - можно выяснить взяв его размеры и координаты:


Dim mLeft     As Single
Dim  mTop      As Single
Dim  mWidth    As Single
Dim  mHeight   As Single


Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"  _
                                        (ByVal lpClassName As String, 
ByVal lpWindowName As String) As Long Private Declare Function GetWindowRect Lib "user32" _ (ByVal hwnd As Long, lprect As RECT) As Long Public Sub GetTascbarInfo() Dim precTaskbar As RECT Dim plngResult As Long Dim phWndTaskbar As Long phWndTaskbar = FindWindow("shell_trayWnd", "") plngResult = GetWindowRect(phWndTaskbar, precTaskbar) mLeft = precTaskbar.L * Screen.TwipsPerPixelX mTop = precTaskbar.T * Screen.TwipsPerPixelY mWidth = (precTaskbar.R - precTaskbar.L) * Screen.TwipsPerPixelX mHeight = (precTaskbar.B - precTaskbar.T) * Screen.TwipsPerPixelY Print mLeft, mTop, mHeight End Sub Private Sub Form_DblClick() GetTascbarInfo End Sub

3. Ну , и напоследок, как минимизировть все открытые окна, или восстановить их обратно


Private Const WM_COMMAND = &H111
Private Const MIN_ALL = 419
Private Const MIN_ALL_UNDO = 416

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"  _
                            (ByVal lpClassName As String, 
ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long,
ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Sub Command1_Click() Dim lRetVal As Long lRetVal = FindWindow("Shell_TrayWnd", vbNullString) lRetVal = PostMessage(lRetVal, WM_COMMAND, MIN_ALL, 0&) End Sub Private Sub Command2_Click() Dim lRetVal As Long lRetVal = FindWindow("Shell_TrayWnd", vbNullString) lRetVal = PostMessage(lRetVal, WM_COMMAND, MIN_ALL_UNDO, 0&) End Sub


Традиционная рекомендация из серии "куда пойти учиться" - по мнению читателей (а читатели выражают свое мнение не только письмами, но и покупками, статистика которых вполне доступна) лучший печатный учебник по VB . Отзывы читателей об этой книге можно посмотреть у меня на сайте - здесь

Рассылка, которая вам может пригодится:
"Русские документы" - самые свежие компьютерные статьи

Еженедельные анонсы компьютерных статей, появившихся на сайте "Русские документы"
Вся самая интересная информация: от программирования и хитростях операционных систем до безопасности и программных руководств. И все это - на русском языке !

Подписаться:

 

 

Успехов в программировании!

Борис Рудой

Автор сайта - Visual Basic на русском



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное