Полезные API функции Windows В процессе создания приложения на Visual Basic возникают ситуации, когда какое-либо действие нельзя осуществить стандартными средствами Visual Basic. Здесь на помощь приходят Windows API. Вот пример: вам необходимо узнать сколько место осталось на диске. Как это зделать с помощью VB? Никак. А с помощью Windows API - легко! Здесь я поместил наиболее часто употребляемые ф-ции Windows API. Они расположены в алфавитном порядке. BitBlt - Копирует изображение из одного hDC в другой. ExitWindowsEx - Перезагрузка или выход из Windows. FindWindow - Находит Handle окна с указанным Caption. GetCursorPos - Возвращает текущую позицию курсора мыши (глобально). GetDriveType - Возвращает тип накопителя. GetForegroundWindow - Возвращает Handle активного окна. SetCursorPos - Устанавливает новую позицию курсора мыши. SetVolumeLabel - Изменяет метку диска. SetWindowPos - Устанавливает позицию окна с определённым Handle (также с помощью этой функции можно сделать так, чтобы окно было ПОВЕРХ всех. ShellExecute - Запускает приложение, ассоциированное с расширением, которое имеет указанный файл (также может просто запустить указанное приложение). ShowCursor - Скрывает или показывает курсор мыши на экране. BitBlt - Копирует изображение из одного hDC в другой. Синтаксис объявления: Declare Function BitBlt Lib "gdi32" Alias "BitBlt" _ (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _ ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _ ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Пример: Поместите на форму 2 PictureBox и загрузите в первый какую-нибудь картинку. Затем вставьте такой код: Private Const SRCCOPY = &HCC0020 Private Sub Command1_Click() BitBlt Picture2.hDC, 0, 0, 100, 100, Picture1.hDC, 0, 0, SRCCOPY End Sub ExitWindowsEx - Перезагрузка или выход из Windows. Синтаксис объявления: Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" _ (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Пример: Private Sub Command1_Click() ExitWindowsEx EWX_SHUTDOWN, 0 'Выключит компьютер. Второй параметр в ф-ции игнорируется End Sub FindWindow - Находит Handle окна с указанным Caption. Синтаксис объявления: Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Пример: Private Sub Command1_Click() Dim hand As Long hand = FindWindow(vbNullString, "Калькулятор") 'hand - содержит Handle (или дескриптор) окна с заголовком Калькулятор End Sub GetCursorPos - Возвращает текущую позицию курсора мыши (глобально). Синтаксис объявления: Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" _ (lpPoint As POINTAPI) As Long Пример: Type POINTAPI x As Long y As Long End Type Private Sub Command1_Click() Dim a As POINTAPI GetCursorPos a Form1.Caption = a.x End Sub GetDriveType - Возвращает тип накопителя. Синтаксис объявления: Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _ (ByVal nDrive As String) As Long Пример: Private Sub Command1_Click() Form1.Caption = GetDriveType("E:\") 'Возвратит 5 если это устройство CD-ROM End Sub GetForegroundWindow - Возвращает Handle активного окна. Синтаксис объявления: Declare Function GetForegroundWindow Lib "user32" Alias _ "GetForegroundWindow" () As Long Пример: Private Sub Command1_Click() Dim a As Long a = GetForegroundWindow 'a содержит Handle активного окна End Sub SetCursorPos - Устанавливает новую позицию курсора мыши. Синтаксис объявления: Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" _ (ByVal x As Long, ByVal y As Long) As Long Пример: Private Sub Command1_Click() SetCursorPos 100, 100 End Sub SetVolumeLabel - Изменяет метку диска. Синтаксис объявления: Declare Function SetVolumeLabel Lib "kernel32" Alias _ "SetVolumeLabelA" (ByVal lpRootPathName As String, _ ByVal lpVolumeName As String) As Long Пример: Private Sub Command1_Click() SetVolumeLabel "D:\", "NewLabel" End Sub SetWindowPos - Устанавливает позицию окна с определённым Handle (также с помощью этой функции можно сделать так, чтобы окно было ПОВЕРХ всех. Синтаксис объявления: Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" _ (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 Sub Command1_Click() SetWindowPos Form1.hwnd, -1, 0, 0, 200, 200, 0 'Устанавливает форму поверх всех окон, а также перемещает её в 'указанные координаты и задаёт указанный размер (200 на 200 пикселей) End Sub ShellExecute - Запускает приложение, ассоциированное с расширением, которое имеет указанный файл (также может просто запустить указанное приложение). Синтаксис объявления: Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Пример: Const SW_MAXIMIZE = 3 Private Sub Command1_Click() ShellExecute Form1.hwnd, "open", "C:\temp\1.bmp", 0, 0, SW_MAXIMIZE 'Откроет программу, ассоциированную с расширением bmp и развернёт 'её на весь экран End Sub ShowCursor - Скрывает или показывает курсор мыши на экране. Синтаксис объявления: Declare Function ShowCursor Lib "user32" Alias "ShowCursor" _ (ByVal bShow As Long) As Long Пример: ShowCursor 1 'Добавляет к дисплейному счёткику единицу ShowCursor 0 'Отнимает от дисплейного счёткика единицу Когда счётчик становится меньше нуля - курсор исчезает.