Функции api windows: Краткий справочник по функциям WinAPI
Русский_Проект: Функции API
Справочник по функциям Windows API
В данном справочнике приводятся примеры использования различных функций API при написании программ на Visual Basic. Если вы только приступили к программированию с помощью API, то прочитайте сначала Введение. Также ознакомьтесь с определениями терминов, если Вы не понимаете некоторые используемые термины.
Выбирайте способ работы с функциями API:
- Список функций по алфавиту
- Список функций с обратным вызовом по алфавиту
- Другая информация по функциям
- Список функций по категориям
- Список структур по алфавиту
- Макросы
- Примеры к функциям
- Сообщения Windows
Список функций по алфавиту
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
- A
- AccessibleObjectFromPoint
- ActivateKeyboardLayout
- AddFontResource
- AdjustTokenPrivileges
- AllocConsole
- AlphaBlend
- AngleArc
- AnimateWindow
- AppendMenu
- Arc
- ArcTo
- AttachThreadInput
- auxGetVolume
- auxSetVolume
- BackupEventLog
- Beep
- BeginPath
- BitBlt
- BlockInput
- BringWindowToTop
- CallNextHookEx
- CallWindowProc
- ChangeDisplaySettings
- CharLower
- CharToOem
- CharUpper
- CheckMenuRadioItem
- ChooseColor
- ChooseFont
- Chord
- ClearEventLog
- ClientToScreen
- ClipCursor
- CloseClipboard
- CloseEventLog
- CloseHandle
- ClosePrinter
- CloseServiceHandle
- CloseWindow
- CoCreateGuid
- CombineRgn
- CommDlgExtendedError
- CompareFileTime
- CompareString
- ConfigurePort
- ControlService
- CopyFile
- CopyImage
- CopyMemory
- CopyRect
- CoTaskMemFree
- CountClipboardFormats
- CreateBitmap
- CreateBrushIndirect
- CreateCaret
- CreateCompatibleBitmap
- CreateCompatibleDC
- CreateCursor
- CreateDC
- CreateDirectory
- CreateDirectoryEx
- CreateEllipticRgn
- CreateEllipticRgnIndirect
- CreateFile
- CreateFont
- CreateFontIndirect
- CreateHatchBrush
- CreateIconIndirect
- CreateMenu
- CreatePatternBrush
- CreatePen
- CreatePenIndirect
- CreatePolygonRgn
- CreatePolyPolygonRgn
- CreatePopupMenu
- CreateProcess
- CreateRectRgn
- CreateRectRgnIndirect
- CreateRoundRectRgn
- CreateSolidBrush
- CreateStatusWindow
- CreateToolBarEx
- CreateWindowEx
D
- DefWindowProc
- DeleteDC
- DeleteFile
- DeleteObject
- DestroyCursor
- DestroyIcon
- DestroyMenu
- DestroyWindow
- DeviceCapabilities
- DeviceIOControl
- DialogBoxParam
- DllGetVersion
- DragAcceptFiles
- DragQueryFile
- DrawAnimatedRects
- DrawCaption
- DrawEdge
- DrawFocusRect
- DrawFrameControl
- DrawIcon
- DrawIconEx
- DrawMenuBar
- DrawState
- DrawText
- DrawTextEx
- DuplicateIcon
- Ellipse
- EmptyClipboard
- EnableTheming
- EnableWindow
- EndDialog
- EndDoc
- EndMenu
- EndPage
- EndPath
- EnumChildWindows
- EnumClipboardFormats
- EnumDisplayDevices
- EnumDisplaySettings
- EnumFontFamiliesEx
- EnumJobs
- EnumPorts
- EnumPrinters
- EnumProcesses
- EnumProcessModules
- EnumPropsEx
- EnumServicesStatus
- EnumSystemCodePages
- EnumThreadWindows
- EnumWindows
- EqualRect
- EqualRgn
- ExitProcess
- ExitWindowsDialog
- ExitWindowsEx
- ExtFloodFill
- ExtractAssociatedIcon
- ExtractIcon
- ExtractIconEx
F
- FatalAppExit
- FileTimeToLocalFileTime
- FileTimeToSystemTime
- FillMemory
- FillRect
- FillRgn
- FindClose
- FindExecutable
- FindFirstFile
- FindNextFile
- FindWindow
- FindWindowEx
- FlashWindow
- FlashWindowEx
- FlatSB_EnableScrollBar
- FlatSB_GetScrollPos
- FlatSB_GetScrollProp
- FlatSB_GetScrollRange
- FlatSB_SetScrollPos
- FlatSB_SetScrollProp
- FlatSB_SetScrollRange
- FlatSB_ShowScrollBar
- FormatMessage
- FrameRect
- FrameRgn
- FreeConsole
- FreeLibrary
G
- GetACP
- GetActiveWindow
- GetArcDirection
- GetAsyncKeyState
- GetBrushOrgEx
- GetCapture
- GetCaretBlinkTime
- GetClassInfo
- GetClassInfoEx
- GetClassLong
- GetClassName
- GetClientRect
- GetClipCursor
- GetClipboardData
- GetClipboardFormatName
- GetComputerName
- GetConsoleCP
- GetConsoleCursorInfo
- GetConsoleFontSize
- GetConsoleScreenBufferInfo
- GetConsoleTitle
- GetConsoleWindow
- GetCPInfo
- GetCurrencyFormat
- GetCurrentConsoleFont
- GetCurrentDirectory
- GetCurrentPositionEx
- GetCurrentProcess
- GetCurrentProcessId
- GetCurrentThemeName
- GetCurrentThread
- GetCurrentThreadId
- GetCursor
- GetCursorPos
- GetDateFormat
- GetDC
- GetDesktopWindow
- GetDeviceCaps
- GetDIBits
- GetDiskFreeSpace
- GetDiskFreeSpaceEx
- GetDlgItem
- GetDlgItemText
- GetDoubleClickTime
- GetDriveType
- GetEnvironmentVariable
- GetFileAttributes
- GetFileInformationByHandle
- GetFileSize
- GetFileTime
- GetFileVersionInfo
- GetFileVersionInfoSize
- GetFocus
- GetForegroundWindow
- GetFullPathName
- GetIconInfo
- GetKeyboardLayout
- GetKeyboardLayoutList
- GetKeyboardLayoutName
- GetKeyboardState
- GetKeyboardType
- GetKeyState
- GetLastError
- GetLastInputInfo
- GetLocaleInfo
- GetLocalTime
- GetLogicalDrives
- GetLogicalDriveStrings
- GetLongPathName
- GetMenu
- GetMenuInfo
- GetMenuItemCount
- GetMenuItemInfo
- GetMessage
- GetModuleFileNameEx
- GetMonitorInfo
- GetNumberFormat
- GetNumberOfEventLogRecords
- GetObject
- GetOEMCP
- GetOpenFileName
- GetParent
- GetPixel
- GetPolyFillMode
- GetPrinterDriver
- GetPriorityClass
- GetPrivateProfileInt
- GetPrivateProfileString
- GetProcAddress
- GetProductInfo
- GetProfileInt
- GetProfileString
- GetProp
- GetRgnBox
- GetSaveFileName
- GetScrollInfo
- GetShortPathName
- GetStdHandle
- GetStockObject
- GetSubMenu
- GetSysColor
- GetSysColorBrush
- GetSystemDefaultLCID
- GetSystemDirectory
- GetSystemInfo
- GetSystemMenu
- GetSystemMetrics
- GetSystemPowerStatus
- GetSystemTime
- GetSystemTimeAsFileTime
- GetTempFileName
- GetTempPath
- GetTextAlign
- GetTextCharacterExtra
- GetTextColor
- GetThreadLocale
- GetThreadPriority
- GetTickCount
- GetTimeFormat
- GetTimeZoneInformation
- GetTitleBarInfo
- GetTopWindow
- GetUserDefaultLCID
- GetUserName
- GetVersion
- GetVersionEx
- GetVolumeInformation
- GetWindow
- GetWindowDC
- GetWindowLong
- GetWindowPlacement
- GetWindowRect
- GetWindowRgn
- GetWindowsDirectory
- GetWindowText
- GetWindowTextLength
- GetWindowThreadProcessId
- GlobalAlloc
- GlobalFree
- GlobalLock
- GlobalMemoryStatus
- GlobalMemoryStatusEx
- GlobalSize
- GlobalUnlock
H
- HideCaret
- HtmlHelp
I
- ImageList_Draw
- InflateRect
- InitCommonControls
- InitCommonControlsEx
- InitializeFlatSB
- InsertMenuItem
- IntersectRect
- InvalidateRect
- InvertRect
- InvertRgn
- IsBadStringPtr
- IsCharAlpha
- IsCharAlphaNumeric
- IsCharLower
- IsCharUpper
- IsChild
- IsClipboardFormatAvailable
- IsDebuggerPresent
- IsIconic
- IsNTAdmin
- IsProcessorFeaturePresent
- IsPwrHibernateAllowed
- IsRectEmpty
- IsThemeActive
- IsUserAnAdmin
- IsWindow
- IsWindowEnabled
- IsWindowVisible
- IsZoomed
J
K
- keybd_event
- KillTimer
L
- LineTo
- LoadBitmap
- LoadCursor
- LoadCursorFromFile
- LoadIcon
- LoadImage
- LoadKeyboardLayout
- LoadLibrary
- LocalFileTimeToFileTime
- LockWindowUpdate
- LockWorkStation
- LogonUser
- LookupAccountName
- LookupPrivilegeValue
- lstrcmp
- lstrcmpi
- lstrcpy
- lstrcpyn
- lstrlen
- MessageBeep
- MessageBox
- MessageBoxEx
- MessageBoxIndirect
- ModifyMenu
- MonitorFromPoint
- mouse_event
- MoveFile
- MoveMemory
- MoveToEx
- MoveWindow
- MulDiv
- NetApiBufferFree
- NetLocalGroupAdd
- NetMessageBufferSend
- NetQueryDisplayInformation
- NetRemoteTOD
- NetScheduleJobAdd
- NetScheduleJobDel
- ObjectPropertyDialog
- OemToChar
- OffsetRect
- OffsetRgn
- OleCreatePictureIndirect
- OleTranslateColor
- OpenClipBoard
- OpenEventLog
- OpenPrinter
- OpenProcess
- OpenProcessToken
- OpenSCManager
- OpenService
P
- PageSetupDlg
- PaintDesktop
- PathAddBackSlash
- PathAddExtension
- PathCommonPrefix
- PathCompactPath
- PathCompactPathEx
- PathFileExists
- PathFindExtension
- PathFindFieName
- PathIsDirectory
- PathIsFileSpec
- PathIsPrefix
- PathIsRelative
- PathRelativePathTo
- PathRemoveBackSlash
- PathRemoveFileSpec
- PathStripPath
- PathToRegion
- PickIconDlg
- Pie
- PolyBezier
- PolyBezierTo
- Polygon
- Polyline
- PolylineTo
- PolyPolygon
- PolyPolyline
- PostMessage
- PrintDlg
- PrinterProperties
- PStoreCreateInstance
- PtInRect
- PtInRegion
Q
- QueryPerformanceCounter
- QueryPerformanceFrequency
- QueryServiceConfig
- QueryServiceStatus
R
- ReadConsole
- ReadFile
- Rectangle
- RectInRegion
- RedrawWindow
- RegCloseKey
- RegConnectRegistry
- RegCreateKeyEx
- RegDeleteKey
- RegDeleteValue
- RegEnumKeyEx
- RegEnumValue
- RegisterClass
- RegisterClassEx
- RegisterHotKey
- RegisterServiceProccess
- RegNotifyChangeKeyValue
- RegOpenKeyEx
- RegQueryValueEx
- RegSetValueEx
- ReleaseCapture
- ReleaseDC
- RemoveDirectory
- RemoveFontResource
- RemoveMenu
- RemoveProp
- RestartDialog
- RoundRect
- RunDialog
S
- ScreenToClient
- ScrollWindow
- SelectClipPath
- SelectObject
- SendInput
- SendMessage
- SendMessageTimeOut
- SetActiveWindow
- SetArcDirection
- SetBitmapBits
- SetBkColor
- SetBkMode
- SetBrushOrgEx
- SetCaretBlinkTime
- SetClassLong
- SetClipboardData
- SetComputerName
- SetConsoleCursorInfo
- SetConsoleCursorPosition
- SetConsoleTextAttribute
- SetConsoleTitle
- SetCurrentDirectory
- SetCursor
- SetCursorPos
- SetDIBits
- SetDoubleClickTime
- SetEnvironmentVariable
- SetErrorMode
- SetFileAttributes
- SetFilePointer
- SetFileTime
- SetFocus
- SetForegroundWindow
- SetKeyboardState
- SetLastError
- SetLastErrorEx
- SetLayeredWindowAttributes
- SetLocaleInfo
- SetLocalTime
- SetMenu
- SetMenuInfo
- SetMenuItemBitmaps
- SetMenuItemInfo
- SetParent
- SetPixel
- SetPixelV
- SetPolyFillMode
- SetPriorityClass
- SetProp
- SetRect
- SetRectEmpty
- SetScrollInfo
- SetSuspendState
- SetSysColors
- SetSystemCursor
- SetSystemPowerState
- SetSystemTime
- SetTextAlign
- SetTextCharacterExtra
- SetTextColor
- SetThreadLocale
- SetThreadPriority
- SetTimer
- SetVolumeLabel
- SetWindowLong
- SetWindowPlacement
- SetWindowPos
- SetWindowRgn
- SetWindowsHookEx
- SetWindowText
- SetWindowTheme
- SfcGetNextProtectedFile
- SfcIsFileProtected
- SHAddToRecentDocs
- SHAppBarMessage
- SHAutoComplete
- SHBrowseForFolder
- Shell_NotifyIcon
- ShellAbout
- ShellExecute
- ShellExecuteEx
- SHEmptyRecycleBin
- SHFileOperation
- SHFormatDrive
- SHGetFileInfo
- SHGetFolderLocation
- SHGetFolderPath
- SHGetPathFromIDList
- SHGetSpecialFolderLocation
- SHGetSpecialFolderPath
- ShowCaret
- ShowCursor
- ShowScrollBar
- ShowWindow
- ShowWindowAsync
- SHQueryRecycleBin
- Sleep
- StartDoc
- StartPage
- StartService
- StretchBlt
- StrFormatByteSize
- StrFromTimeInterval
- StrokePath
- StrTrim
- SubtractRect
- SwapMouseButton
- SystemParametersInfo
- SystemTimeToFileTime
T
- TerminateProcess
- TextOut
- TrackMouseEvent
- TrackPopupMenu
- TrackPopupMenuEx
- TransparentBlt
U
- UnhookWindowsHookEx
- UninitializeFlatSB
- UnionRect
- UnregisterClass
- UnregisterHotKey
- UpdateWindow
- UrlCreateFromPath
- VerQueryValue
- WaitForSingleObject
- waveOutGetVolume
- waveOutSetVolume
- WideCharToMultiByte
- WindowFromPoint
- WinExec
- WinHelp
- WriteConsole
- WriteFile
- WritePrivateProfileString
- WriteProfileString
X
Y
Z
- ZeroMemory
B
C
E
M
N
O
V
W
В начало
Список функций с обратным вызовом по алфавиту
- BrowseCallbackProc
- CCHookProc
- CFHookProc
- EnumChildProc
- EnumCodePagesProc
- EnumFontFamExProc
- EnumFontFamProc
- EnumThreadWndProc
- EnumWindowsProc
- PropEnumProcEx
- SoundSentryProc
- WindowProc
Другая информация по функциям
- CSIDL
- Коды виртуальных клавиш
- Стили окон
- Расширенные стили окна
Реклама
НОУ ИНТУИТ | Лекция | WinApi
Аннотация: Несколько слов об API, Win32, DLL. .VBA и Win32 API. Вызов функций и оператор Declare. Две кодировки ANSI и Unicode. API Viewer. Два языка: C и VB. Различия при вызове функций. Соответствие между простыми типами данных. Структуры языка C и тип, определенный пользователем, в языке VBA. Об описателях языка C и объектах Windows. Void функции языка C. Вызов аргументов по ссылке ByRef и по значению ByVal. Строковые аргументы при вызове функций Win32 API. Тип Any. Примеры работы с Win32 API функциями. Работа с окнами. Характеристики окружения. Вызов функций Win32 API, работающих в Unicode кодировке. Обработка ошибок, возникающих при вызове функций Win32 API. Функции API и вызов Callback функций. Функции высших порядков и конструкция AddressOf. Функция EnumWindows. Функции Win32 API для работы с таймером. Функция SetTimer. Функция обратного вызова TimerProc. Функция KillTimer. Пример создания, работы и удаления таймера. Классы как обертка вызовов функций Win32 API. Построение и использование класса ВашТаймер.
Программный код большинства примеров данной лекции можно найти в проектах, доступных для просмотра: DocOne6, DocTwo6.
Несколько слов об API, Win32, DLL
API (Application Programming Interface — интерфейс прикладных программ) — это множество функций, организованных, обычно, в виде DLL. Функции API позволяют организовать интерфейс между прикладной программой и средой, в которой работает эта программа. Вызов функций API позволяет программе получать доступ к ресурсам среды и управлять ее работой. Как правило, API задает стандарт взаимодействия среды и прикладной программы.
Win32 — это название интерфейса, ориентированного на 32-х разрядные приложения и реализованного на таких известных платформах как Windows 95, Windows 98, Windows NT, Windows CE. Функции, составляющие этот интерфейс, позволяют прикладной программе получать доступ к ресурсам операционной системы и управлять ее работой. Более ранние версии Windows используют интерфейс, известный как Win16. Конечно, не все функции, составляющие интерфейс Win32, реализованы в полной мере на всех платформах, так что вызов одной и той же функции под NT приведет к определенному результату, а под Windows 95 работает как вызов заглушки. Любое из приложений, работающее в среде Windows, прямо или косвенно вызывает функции, входящие в Win32 API.
Функции, составляющие Win32 интерфейс, организованы в виде нескольких динамически подключаемых библиотек ( DLL ) и исполняемых файлов. Говоря о Win32 API, следует в первую очередь упомянуть три основные библиотеки:
- Kernel32.dll. Эта библиотека предназначена для работы с объектами ядра операционной системы и ее функции позволяют управлять памятью и другими системными ресурсами.
- User32.dll. Здесь сосредоточены функции для управления окнами — основным видом объектов операционной системы. Обработка сообщений, работа с меню, таймерами, все это выполняют функции этой DLL.
- GDI32.dll. Эта библиотека, обеспечивающая графический интерфейс операционной системы (Graphics Device Interface). Функции управления выводом на экран дисплея, управления выводом принтера, функции для работы со шрифтами — все они входят в состав этой библиотеки.
Заметьте, Win API функции находятся не только в этих библиотеках. С другой стороны API функции не обязательно входят в состав Win32 интерфейса. Например, MAPI интерфейс (Messaging Application Programming Interface) составляют функции, предназначенные для обработки сообщений электронной почты, TAPI (Telephone API) — функции работы с телефонными сообщениями. MAPI, TAPI, также как и Win32 это некоторый набор функций, задающий определенный стандарт взаимодействия
Как мы уже говорили, функции, образующие API, обычно, организованы в виде DLL — динамически подключаемых библиотеках. Одно из достоинств DLL состоит в том, что, сколько бы приложений (процессов) не работало с функциями одной и той же DLL, код DLL существует в единственном экземпляре.
.VBA и Win32 API
Работая на VBA, неявно всегда приходится иметь дело с функциями Win32 API, только вызов их упрятан в вызываемых VBA функциях или методах объектов Office 2000. Так, например, при работе с объектом Shape так или иначе будут вызываться функции GDI32, обеспечивающие работу с графикой, при работе c функциями VBA.Interaction, например GetSettings, SaveSettings и другими, будет вызываться соответствующие функции работы с реестром Windows, хранящиеся в библиотеках User32 и advapi32. Такой косвенный вызов имеет свои преимущества, обеспечивая определенную безопасность в работе VBA программ. Но в ряде случаев VBA программисту необходим доступ ко всем возможностям операционной системы, предоставляемым Win32 API интерфейсом. Естественно, в этом случае он понимает, что на него ложится большая ответственность в обеспечении корректного вызова функций, поскольку ошибки в вызове могут привести к непредвиденным отказам в работе программы.
Вызов функций и оператор Declare
Элементы ActiveX, COM объекты могут экспонировать свой интерфейс, — свои свойства и методы. Это означает, что они уведомляют, предоставляют информацию клиентам о своем интерфейсе. Технически это обеспечивается тем, что эти объекты, наряду с DLL, сопровождаются TypeLib — библиотекой типов, в которой содержится в требуемом виде информация об интерфейсе объекта. В этом случае, для того чтобы начать работу с объектом, достаточно подключить ссылку на эту библиотеку в меню Tools|References в среде редактора VBE. Эта возможность не раз обсуждалась, когда речь шла о вызове, например, приложения Excel в документах Word. Напомним, что приложения Office 2000 представляют собой ActiveX объекты, построенные на основе COM технологии. Они явно экспонируют свой интерфейс, именно поэтому нет проблем при работе с такими приложениями, вызовами свойств и методов их многочисленных объектов.
Библиотеки, составляющие Win32 интерфейс, не сопровождаются библиотеками типов TypeLib. Поэтому необходимо самому программисту уведомить VBA о том, где найти и как следует вызывать ту или иную функцию Win32 API Вызову каждой функции должен предшествовать оператор Declare, описывающий эту функцию. Этот оператор и сама схема вызова библиотечных функций используется при работе с любыми DLL, а не только с теми, которые содержат Win32 API функции. В общем случае в DLL могут храниться как функции, так и процедуры. Два варианта вызова этого оператора соответствуют ссылке на процедуру и на функцию, возвращающую значение. Первый вариант:
[Public | Private] Declare Sub имя Lib "имя-библиотеки" [Alias "псевдоним"] [([параметры])]
Во втором случае его синтаксис:
[Public | Private] Declare Function имя Lib "имя-библиотеки" [Alias "псевдоним"] [([параметры])] [As возвращаемый-тип]
В этих вызовах ключевые слова и параметры имеют следующий смысл:
- Ключевое слово Public используется, чтобы сделать объявляемую процедуру доступной всем модулям проекта; ключевое слово Private ограничивает доступ к объявленной процедуре лишь модулем, в котором она объявлена. Заметьте, в стандартном модуле можно использовать оба описателя, но в модуле класса разрешается использовать только описатель Private.
- Ключевое слово Sub в первом случае означает, что речь идет о процедуре; альтернативный ключ Function во втором случае указывает на функцию, возвращающую значение, которое может быть использовано в выражениях.
- Обязательный параметр имя является именем объявляемой процедуры или функции. Это имя используется при вызовах в VBA программах. Оно может совпадать или отличаться от того имени, под которым процедура (функция) хранится в DLL. Заметьте, для имен функций Win32 API в отличие от Win 16 имеет значение различие между прописными и строчными буквами.
- После обязательного ключевого слова Lib должно следовать в кавычках имя-библиотеки, содержащей объявляемую процедуру.
- Ключ Alias позволяет указать, что процедура имеет в DLL другое имя — » псевдоним «, благодаря чему можно избежать коллизии имен в программе. Если первый символ параметра » псевдоним » не является признаком числа ( # ), псевдоним понимается как имя входной точки DLL для данной процедуры; если же первый символ псевдонима — ( # ), следующие за ним число должно задавать порядковый номер входной точки процедуры в DLL. Дело в том, что процедура может иметь несколько точек входа.
- Необязательный список параметры задает список параметров, передаваемых процедуре при вызове.
- As возвращаемый-тип во втором варианте оператора задает тип значения, возвращаемого функцией; им может быть любой из базисных типов VBA (не допускаются только строки фиксированной длины), тип объекта или определенный пользователем тип.
- Список параметры — это список разделенных запятыми параметров процедуры; каждый элемент этого списка имеет вид:
[Optional] [ByVal | ByRef] [ParamArray] переменная[()] [As тип]
- Здесь ключ Optional означает, что данный параметр необязателен; при этом все следующие в списке параметры должны быть необязательными и сопровождаться этим же ключом Optional. Этот ключ нельзя применять, если среди параметров есть массив параметров ParamArray.
- Ключевые слова ByVal и ByRef указывают на то, что параметр передается по значению или по ссылке; по умолчанию в VBA предполагается передача значения по ссылке ( ByRef ).
- Ключевое слово ParamArray позволяет задать массив элементов типа Variant ; этот параметр должен быть последним в списке и не должен перед собой иметь ключей ByVal, ByRef или Optional ; такой массив позволяет передавать в процедуру произвольное (заранее неизвестное) число параметров.
- Переменная — произвольное допустимое в VBA имя переменной; пустые скобки () после имени переменной означают, что соответствующий параметр — массив.
- Необязательное определение As тип задает тип параметра, значения которого могут быть такими же, как и у описанного выше определения возвращаемый-тип. Задав произвольный тип ( As Any ), Вы исключите проверку при передаче параметра процедуре.
Вот пример задания оператора Declare для двух функций Win32 API:
Private Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" _ (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Private Declare Function GetTempPath Lib "kernel32" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long
Синтаксически оператор Declare прост и понятен, нужно указать библиотеку, имя функции, под которым она будет вызываться в VBA программе, ее имя (псевдоним) под которым она записана в библиотеке и параметры функции в привычном синтаксисе. Однако реальная жизнь не так проста и в организации вызова функций API есть много подводных камней. Дело в том, что DLL служат средством межязыкового взаимодействия. Сама DLL может быть разработана на одном языке, а вызываться в другом. Тогда возникает проблема правильной передачи параметров, поскольку может не быть точного соответствия между типами данных двух используемых языков. Функции Win32 API разработаны в ориентации на синтаксис языка C и C++. Поэтому при записи оператора Declare требуется корректно указать типы параметров, так чтобы они соответствовали типам, используемым в языке C. Еще одна проблема состоит в том, что помимо оператора Declare, в ряде случаев необходимо предварительно описать требуемые типы данных и константы, необходимые в процессе вызова функции. Так что, прежде чем вызвать функцию из DLL, необходимо корректно задать оператор Declare, описать необходимые типы и константы, — все это может быть не столь простой задачей.
Windows API — это… Что такое Windows API?
Windows API (англ. application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Microsoft Windows корпорации «Майкрософт» и совместимой с ними свободной бесплатной операционной системы ReactOS. Является самым прямым способом взаимодействия приложений с Windows и ReactOS. Для создания программ, использующих Windows API, «Майкрософт» выпускает комплект разработчика программного обеспечения, который называется Platform SDK, и содержит документацию, набор библиотек, утилит и других инструментальных средств для разработки.
Общие сведения
Windows API был изначально спроектирован для использования в программах, написанных на языке Си или C++. Работа через Windows API — это наиболее близкий к системе способ взаимодействия с ней из прикладных программ. Более низкий уровень доступа, необходимый только для драйверов устройств, в текущих версиях Windows предоставляется через Windows Driver Model.
Версии
- Win16 — первая версия Windows API для 16-разрядных версий Windows. Изначально назывался просто Windows API, затем стал называться Win16 для отличия от Win32.
- Win32s — подмножество Win32, устанавливаемое на семейство 16-разрядных систем Windows 3.x, и реализующее ограниченный набор функций Win32 API для этих систем.
- Win32 — 32-разрядный API для современных версий Windows. Самая популярная ныне версия. Базовые функции этого API реализованы в динамически подключаемых библиотеках
kernel32.dll
иadvapi32.dll
; базовые модули графического интерфейса пользователя — вuser32.dll
иgdi32.dll
. Win32 появился вместе с Windows NT и затем был перенесён в несколько ограниченном виде в системы серии Windows 9x. В современных версиях Windows, происходящих от Windows NT, работу Win32 GUI обеспечивают два модуля:csrss.exe
(процесс исполнения клиент-сервер), работающий в пользовательском режиме, иwin32k.sys
в режиме ядра. Работу же системных Win32 API обеспечивает ядро —ntoskrnl.exe
. - Win64 — 64-разрядная версия Win32, содержащая дополнительные функции для использования на 64-разрядных компьютерах. Win64 API можно найти только в 64-разрядных версиях Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 и Windows 8.
Технологии, доступные через Windows API
Алфавитный список технологий, доступных через Windows API:
- Система контроля и управления доступом.
- Microsoft Active Accessibility.
- Active Directory.
- Active Server Pages.
- ActiveX.
- Автоматизация.
- Фоновая интеллектуальная служба передачи (BITS).
- Bluetooth.
- CDO.
- Certificate Enrollment Control.
- Certificate Services.
- Collaboration Data Objects.
- Component Object Model
- COM Plus.
- Common Controls.
- Криптография.
- Debugging and Error Handling.
- Device I/O.
- Распределённая файловая система.
- DLL, процессы и многопоточность.
- Domain Name System.
- Dynamic Host Configuration Protocol (DHCP).
- Extensible Authentication Protocol (EAP).
- Extensible Markup Language (XML) и парсер MSXML.
- Fax Service.
- Групповая политика.
- HTTP.
- ICS и ICF.
- Image Color Management (ICM)
- Image Mastering API (IMAPI)
- Indexing Service
- Infrared Data Association (IrDa)
- Internet Authentication Service (IAS)
- Internet Connection Sharing and Firewall (ICSF)
- Internet Explorer
- Internet Information Services (IIS)
- Internet Protocol Helper (IP Helper)
- Interprocess Communications
- Lightweight Directory Access Protocol (LDAP)
- LSA Authentication
- LSA Policy
- Memory Management
- Message Queuing (MSMQ)
- Messaging Application Programming Interface (MAPI)
- Microsoft .NET Passport
- Microsoft Agent
- Microsoft Data Access Components (MDAC)
- Microsoft Interface Definition Language (MIDL)
- Microsoft Management Console (MMC)
- Microsoft Transaction Server (MTS)
- Multicast Address Dynamic Client Allocation Protocol (MADCAP)
- Multicast Group Manager
- National Language Support
- NetMeeting
- NetShell
- Network Load Balancing Provider
- Network Management
- Network Monitor
- Network Provider API
- OLE DB
- OLE DB Provider for Internet Publishing
- OnNow
- Open Database Connectivity (ODBC)
- OpenGL
- Password Filters
- PC Health
- Performance Monitoring
- Plug and Play и Universal Plug and Play
- Power Management
- Quality of Service (QoS)
- Real-time Communications (RTC) Client //ссылка ведет не на ту статью
- Remote Access Service (RAS)
- Remote Procedure Call (имеется в виду служба RPC Service)
- Removable Storage Manager (RSM)
- Routing and Remote Access Service (RRAS)
- Routing Table Manager Version 1 (RTMV1)
- Routing Table Manager Version 2 (RTMV2)
- Security Support Provider Interface (SSPI)
- Server Cluster API
- Server Data Objects (SDO)
- Service Security Attachments
- Setup API
- Shell (имеется в виду Explorer Shell)
- Side-by-side Assemblies
- Simple Network Management Protocol (SNMP)
- Smart Card
- Still Image
- Storage и Structured Storage
- Synchronization Manager
- System.DirectoryServices
- System Event Notification Service (SENS)
- System Restore
- Tablet PC
- Task Scheduler
- Telephony Application Programming Interface (TAPI) 2.2
- Telephony Application Programming Interface (TAPI) 3
- Telephony Service Provider Interface (TSPI и MSPI)
- Terminal Services
- Text Services Framework
- Unicode (и MSLU)
- Universal Description, Discovery, and Integration (UDDI)
- Video for Windows
- Windows Clustering
- Windows File Protection
- Windows GDI
- Windows GDI+
- Windows Image Acquisition (WIA)
- Windows Installer
- Windows Management Instrumentation (WMI)
- Windows Multimedia
- Windows Sockets
- Windows System Information
- Windows User Interface
- Winlogon и Gina
- WinSNMP
См. также
Ссылки
Литература
- Гэри Неббет Справочник по базовым функциям API Windows NT/2000 = Windows NT/2000 Native API Reference. — М.: «Вильямс», 2002. — С. 528. — ISBN 1-57870-199-6
Windows api— набор функций операционной системы
Аббревиатура API,
Application Programming Interface (API) — это просто
некоторый готовый набор функций, который
могут использовать разработчики
приложений. В общем случае данное
понятие эквивалентно тому, что раньше
чаще называли библиотекой подпрограмм.
Однако чаще всего под API подразумевается
некоторая особая категория таких
библиотек.
В ходе разработки
практически любого достаточно сложного
приложения (MyAppication) для конечного
пользователя формируется набор
специфических внутренних функций,
используемых для реализации данной
конкретной программы, который называется
MyApplication API. Часто оказывается, что эти
функции могут эффективно использоваться
также для создания других приложений,
в том числе другими программистами.
В этом случае авторы исходя из стратегии
продвижения своего продукта должны
решить вопрос — открывают ли они
доступ к этому набору для внешних
пользователей или нет? При положительном
ответе на него в описании программного
пакета, как его достоинство, появляется
фраза о том, что «комплект включает
открытый набор API-функций».
Таким образом,
чаще всего под API подразумевается набор
функций, являющийся частью одного
приложения, но при этом доступных
для использования в других программах.
Например, Excel кроме интерфейса для
конечного пользователя имеет набор
функций Excel API, который может использоваться,
в частности, при создании приложений
с помощью VB.
Соответственно,
Windows API — это набор функций, являющийся
частью самой операционной системы
и в то же время — доступной
для любого другого приложения. И в этом
плане вполне оправдана аналогия с набором
системных прерываний BIOS/DOS, который
фактически представляет собой DOS API.
Отличие заключается
в том, что состав функций Windows API,
с одной стороны значительно шире,
по сравнению с DOS, с другой —
не включает многие средства прямого
управления ресурсами компьютера, которые
были доступны программистам в предыдущей
ОС. Кроме того, обращение к Windows API
выполняется с помощью обыкновенных
процедурных обращений, а вызов функций
DOS — через специальную машинную
команду процессора, которая называется
Interrupt («прерывание»).
Win16 API и Win32 API
Как известно смена
Windows 3.x на Windows 95 ознаменовала собой
переход от 16-разрядной архитектуры
операционной системы к 32-разрядной.
Одновременно произошла замена
16-разрядного Windows API (Win16 API) на новый
32-разрядный вариант (Win32 API) . В данном
случае нужно просто иметь в виду, что
за небольшим исключением набор
Win32 API является единым для семейств
Windows 9x и Windows NT.
Далее под термином
API будет подразумеваться Win API и более
того, по умолчанию — Win32 API.
При знакомстве
с Win API обнаруживается, что многие
встроенные функции — не что иное,
как обращение к соответствующим
системным процедурам, но только
реализованные в виде синтаксиса
данного языка. Учитывая это, необходимость
использования API определяется следующим
вариантами:
API-функции, которые
полностью реализованы в виде встроенных
функций. Тем не менее, иногда и в этом
случае бывает полезным перейти
к применению API, так как это позволяет
порой существенно повысить производительность
(в частности, за счет отсутствия
ненужных преобразований передаваемых
параметров).
Встроенные функции
реализуют лишь частный случай
соответствующей API-функции. Это довольно
обычный вариант.
Огромное число
API-функций вообще не имеют аналогов
в существующем сегодня варианте
компиляторов. Например, удалить каталог
нельзя средствами VB — для этого нужно
использовать функцию DeleteDirectory.
Следует также
подчеркнуть, что некоторые API-функции
(их доля в Win API весьма незначительна)
не могут вызываться из программ
из-за ряда ограничений языка, например
отсутствие возможности работы с адресами
памяти. Но в ряде случаев могут
помочь нетривиальные приемы программирования
(в частности, в случае с теми же
адресами).
Win API
и Dynamic Link Library
(DLL)
Набор Win API реализован
в виде динамических DLL-библиотек.
В данном случае
под DLL мы подразумеваем традиционный
вариант двоичных динамических библиотек,
которые обеспечивают прямое обращение
приложений к нужным процедурам —
подпрограммам или функциям (примерно
также как это происходит при вызове
процедур внутри проекта). Такие библиотеки
могут создаваться с помощью разных
инструментов — VC++, Delphi, Fortran, Assembler.
Обычно файлы
динамических библиотек имеют расширение
.DLL, но это совсем не обязательно.
Для Win16 часто применялось расширение
.EXE, драйверы внешних устройств обозначаются
с помощью .DRV.
Определить точное
число API-функций Windows и файлов,
их содержащих, достаточно сложно
(но все они находятся в системном
каталоге). В этом плане лучше выделить
состав библиотек, составляющих ядро
операционной системы, и основных
библиотек с ключевыми дополнительными
функциями.
Библиотеки Win32 API
ядра операционной системы Windows 95/98:
KERNEL32.DLL: низкоуровневые
функции управления памятью, задачами
и другими ресурсами системы;
USER32.DLL: здесь
в основном находятся функции управления
пользовательским интерфейсом;
GDI32.DLL: библиотека
Graphics Device Interface — разнообразные функции
вывода на внешние устройства;
COMDLG32.DLL: функции,
связанные с использованием диалоговых
окон общего назначения.
Основные библиотеки
с функциями расширения:
COMCTL32.DLL: набор
дополнительных элементов управления
Windows, в том числе Tree List и Rich Text;
MAPI32.DLL: функции
работы с электронной почтой;
NETAPI32.DLL: элементы
управления и функции работы с сетью;
ODBC32.DLL: функции
этой библиотеки нужны для работы
с различными базами данных через
протокол ODBC;
WINMM.DLL: операции
доступа к системным средствам
мультимедиа.
winapi — функции Windows API
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
winapi — Какая связь между C и Windows API?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.