Разное

Функции 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

  1. AccessibleObjectFromPoint
  2. ActivateKeyboardLayout
  3. AddFontResource
  4. AdjustTokenPrivileges
  5. AllocConsole
  6. AlphaBlend
  7. AngleArc
  8. AnimateWindow
  9. AppendMenu
  10. Arc
  11. ArcTo
  12. AttachThreadInput
  13. auxGetVolume
  14. auxSetVolume
  15. B

  16. BackupEventLog
  17. Beep
  18. BeginPath
  19. BitBlt
  20. BlockInput
  21. BringWindowToTop
  22. C

  23. CallNextHookEx
  24. CallWindowProc
  25. ChangeDisplaySettings
  26. CharLower
  27. CharToOem
  28. CharUpper
  29. CheckMenuRadioItem
  30. ChooseColor
  31. ChooseFont
  32. Chord
  33. ClearEventLog
  34. ClientToScreen
  35. ClipCursor
  36. CloseClipboard
  37. CloseEventLog
  38. CloseHandle
  39. ClosePrinter
  40. CloseServiceHandle
  41. CloseWindow
  42. CoCreateGuid
  43. CombineRgn
  44. CommDlgExtendedError
  45. CompareFileTime
  46. CompareString
  47. ConfigurePort
  48. ControlService
  49. CopyFile
  50. CopyImage
  51. CopyMemory
  52. CopyRect
  53. CoTaskMemFree
  54. CountClipboardFormats
  55. CreateBitmap
  56. CreateBrushIndirect
  57. CreateCaret
  58. CreateCompatibleBitmap
  59. CreateCompatibleDC
  60. CreateCursor
  61. CreateDC
  62. CreateDirectory
  63. CreateDirectoryEx
  64. CreateEllipticRgn
  65. CreateEllipticRgnIndirect
  66. CreateFile
  67. CreateFont
  68. CreateFontIndirect
  69. CreateHatchBrush
  70. CreateIconIndirect
  71. CreateMenu
  72. CreatePatternBrush
  73. CreatePen
  74. CreatePenIndirect
  75. CreatePolygonRgn
  76. CreatePolyPolygonRgn
  77. CreatePopupMenu
  78. CreateProcess
  79. CreateRectRgn
  80. CreateRectRgnIndirect
  81. CreateRoundRectRgn
  82. CreateSolidBrush
  83. CreateStatusWindow
  84. CreateToolBarEx
  85. CreateWindowEx

    D

  86. DefWindowProc
  87. DeleteDC
  88. DeleteFile
  89. DeleteObject
  90. DestroyCursor
  91. DestroyIcon
  92. DestroyMenu
  93. DestroyWindow
  94. DeviceCapabilities
  95. DeviceIOControl
  96. DialogBoxParam
  97. DllGetVersion
  98. DragAcceptFiles
  99. DragQueryFile
  100. DrawAnimatedRects
  101. DrawCaption
  102. DrawEdge
  103. DrawFocusRect
  104. DrawFrameControl
  105. DrawIcon
  106. DrawIconEx
  107. DrawMenuBar
  108. DrawState
  109. DrawText
  110. DrawTextEx
  111. DuplicateIcon
  112. E

  113. Ellipse
  114. EmptyClipboard
  115. EnableTheming
  116. EnableWindow
  117. EndDialog
  118. EndDoc
  119. EndMenu
  120. EndPage
  121. EndPath
  122. EnumChildWindows
  123. EnumClipboardFormats
  124. EnumDisplayDevices
  125. EnumDisplaySettings
  126. EnumFontFamiliesEx
  127. EnumJobs
  128. EnumPorts
  129. EnumPrinters
  130. EnumProcesses
  131. EnumProcessModules
  132. EnumPropsEx
  133. EnumServicesStatus
  134. EnumSystemCodePages
  135. EnumThreadWindows
  136. EnumWindows
  137. EqualRect
  138. EqualRgn
  139. ExitProcess
  140. ExitWindowsDialog
  141. ExitWindowsEx
  142. ExtFloodFill
  143. ExtractAssociatedIcon
  144. ExtractIcon
  145. ExtractIconEx

    F

  146. FatalAppExit
  147. FileTimeToLocalFileTime
  148. FileTimeToSystemTime
  149. FillMemory
  150. FillRect
  151. FillRgn
  152. FindClose
  153. FindExecutable
  154. FindFirstFile
  155. FindNextFile
  156. FindWindow
  157. FindWindowEx
  158. FlashWindow
  159. FlashWindowEx
  160. FlatSB_EnableScrollBar
  161. FlatSB_GetScrollPos
  162. FlatSB_GetScrollProp
  163. FlatSB_GetScrollRange
  164. FlatSB_SetScrollPos
  165. FlatSB_SetScrollProp
  166. FlatSB_SetScrollRange
  167. FlatSB_ShowScrollBar
  168. FormatMessage
  169. FrameRect
  170. FrameRgn
  171. FreeConsole
  172. FreeLibrary

    G

  173. GetACP
  174. GetActiveWindow
  175. GetArcDirection
  176. GetAsyncKeyState
  177. GetBrushOrgEx
  178. GetCapture
  179. GetCaretBlinkTime
  180. GetClassInfo
  181. GetClassInfoEx
  182. GetClassLong
  183. GetClassName
  184. GetClientRect
  185. GetClipCursor
  186. GetClipboardData
  187. GetClipboardFormatName
  188. GetComputerName
  189. GetConsoleCP
  190. GetConsoleCursorInfo
  191. GetConsoleFontSize
  192. GetConsoleScreenBufferInfo
  193. GetConsoleTitle
  194. GetConsoleWindow
  195. GetCPInfo
  196. GetCurrencyFormat
  197. GetCurrentConsoleFont
  198. GetCurrentDirectory
  199. GetCurrentPositionEx
  200. GetCurrentProcess
  201. GetCurrentProcessId
  202. GetCurrentThemeName
  203. GetCurrentThread
  204. GetCurrentThreadId
  205. GetCursor
  206. GetCursorPos
  207. GetDateFormat
  208. GetDC
  209. GetDesktopWindow
  210. GetDeviceCaps
  211. GetDIBits
  212. GetDiskFreeSpace
  213. GetDiskFreeSpaceEx
  214. GetDlgItem
  215. GetDlgItemText
  216. GetDoubleClickTime
  217. GetDriveType
  218. GetEnvironmentVariable
  219. GetFileAttributes
  220. GetFileInformationByHandle
  221. GetFileSize
  222. GetFileTime
  223. GetFileVersionInfo
  224. GetFileVersionInfoSize
  225. GetFocus
  226. GetForegroundWindow
  227. GetFullPathName
  228. GetIconInfo
  229. GetKeyboardLayout
  230. GetKeyboardLayoutList
  231. GetKeyboardLayoutName
  232. GetKeyboardState
  233. GetKeyboardType
  234. GetKeyState
  235. GetLastError
  236. GetLastInputInfo
  237. GetLocaleInfo
  238. GetLocalTime
  239. GetLogicalDrives
  240. GetLogicalDriveStrings
  241. GetLongPathName
  242. GetMenu
  243. GetMenuInfo
  244. GetMenuItemCount
  245. GetMenuItemInfo
  246. GetMessage
  247. GetModuleFileNameEx
  248. GetMonitorInfo
  249. GetNumberFormat
  250. GetNumberOfEventLogRecords
  251. GetObject
  252. GetOEMCP
  253. GetOpenFileName
  254. GetParent
  255. GetPixel
  256. GetPolyFillMode
  257. GetPrinterDriver
  258. GetPriorityClass
  259. GetPrivateProfileInt
  260. GetPrivateProfileString
  261. GetProcAddress
  262. GetProductInfo
  263. GetProfileInt
  264. GetProfileString
  265. GetProp
  266. GetRgnBox
  267. GetSaveFileName
  268. GetScrollInfo
  269. GetShortPathName
  270. GetStdHandle
  271. GetStockObject
  272. GetSubMenu
  273. GetSysColor
  274. GetSysColorBrush
  275. GetSystemDefaultLCID
  276. GetSystemDirectory
  277. GetSystemInfo
  278. GetSystemMenu
  279. GetSystemMetrics
  280. GetSystemPowerStatus
  281. GetSystemTime
  282. GetSystemTimeAsFileTime
  283. GetTempFileName
  284. GetTempPath
  285. GetTextAlign
  286. GetTextCharacterExtra
  287. GetTextColor
  288. GetThreadLocale
  289. GetThreadPriority
  290. GetTickCount
  291. GetTimeFormat
  292. GetTimeZoneInformation
  293. GetTitleBarInfo
  294. GetTopWindow
  295. GetUserDefaultLCID
  296. GetUserName
  297. GetVersion
  298. GetVersionEx
  299. GetVolumeInformation
  300. GetWindow
  301. GetWindowDC
  302. GetWindowLong
  303. GetWindowPlacement
  304. GetWindowRect
  305. GetWindowRgn
  306. GetWindowsDirectory
  307. GetWindowText
  308. GetWindowTextLength
  309. GetWindowThreadProcessId
  310. GlobalAlloc
  311. GlobalFree
  312. GlobalLock
  313. GlobalMemoryStatus
  314. GlobalMemoryStatusEx
  315. GlobalSize
  316. GlobalUnlock

    H

  317. HideCaret
  318. HtmlHelp

    I

  319. ImageList_Draw
  320. InflateRect
  321. InitCommonControls
  322. InitCommonControlsEx
  323. InitializeFlatSB
  324. InsertMenuItem
  325. IntersectRect
  326. InvalidateRect
  327. InvertRect
  328. InvertRgn
  329. IsBadStringPtr
  330. IsCharAlpha
  331. IsCharAlphaNumeric
  332. IsCharLower
  333. IsCharUpper
  334. IsChild
  335. IsClipboardFormatAvailable
  336. IsDebuggerPresent
  337. IsIconic
  338. IsNTAdmin
  339. IsProcessorFeaturePresent
  340. IsPwrHibernateAllowed
  341. IsRectEmpty
  342. IsThemeActive
  343. IsUserAnAdmin
  344. IsWindow
  345. IsWindowEnabled
  346. IsWindowVisible
  347. IsZoomed

    J

    K

  348. keybd_event
  349. KillTimer

    L

  350. LineTo
  351. LoadBitmap
  352. LoadCursor
  353. LoadCursorFromFile
  354. LoadIcon
  355. LoadImage
  356. LoadKeyboardLayout
  357. LoadLibrary
  358. LocalFileTimeToFileTime
  359. LockWindowUpdate
  360. LockWorkStation
  361. LogonUser
  362. LookupAccountName
  363. LookupPrivilegeValue
  364. lstrcmp
  365. lstrcmpi
  366. lstrcpy
  367. lstrcpyn
  368. lstrlen
  369. M

  370. MessageBeep
  371. MessageBox
  372. MessageBoxEx
  373. MessageBoxIndirect
  374. ModifyMenu
  375. MonitorFromPoint
  376. mouse_event
  377. MoveFile
  378. MoveMemory
  379. MoveToEx
  380. MoveWindow
  381. MulDiv
  382. N

  383. NetApiBufferFree
  384. NetLocalGroupAdd
  385. NetMessageBufferSend
  386. NetQueryDisplayInformation
  387. NetRemoteTOD
  388. NetScheduleJobAdd
  389. NetScheduleJobDel
  390. O

  391. ObjectPropertyDialog
  392. OemToChar
  393. OffsetRect
  394. OffsetRgn
  395. OleCreatePictureIndirect
  396. OleTranslateColor
  397. OpenClipBoard
  398. OpenEventLog
  399. OpenPrinter
  400. OpenProcess
  401. OpenProcessToken
  402. OpenSCManager
  403. OpenService

    P

  404. PageSetupDlg
  405. PaintDesktop
  406. PathAddBackSlash
  407. PathAddExtension
  408. PathCommonPrefix
  409. PathCompactPath
  410. PathCompactPathEx
  411. PathFileExists
  412. PathFindExtension
  413. PathFindFieName
  414. PathIsDirectory
  415. PathIsFileSpec
  416. PathIsPrefix
  417. PathIsRelative
  418. PathRelativePathTo
  419. PathRemoveBackSlash
  420. PathRemoveFileSpec
  421. PathStripPath
  422. PathToRegion
  423. PickIconDlg
  424. Pie
  425. PolyBezier
  426. PolyBezierTo
  427. Polygon
  428. Polyline
  429. PolylineTo
  430. PolyPolygon
  431. PolyPolyline
  432. PostMessage
  433. PrintDlg
  434. PrinterProperties
  435. PStoreCreateInstance
  436. PtInRect
  437. PtInRegion

    Q

  438. QueryPerformanceCounter
  439. QueryPerformanceFrequency
  440. QueryServiceConfig
  441. QueryServiceStatus

    R

  442. ReadConsole
  443. ReadFile
  444. Rectangle
  445. RectInRegion
  446. RedrawWindow
  447. RegCloseKey
  448. RegConnectRegistry
  449. RegCreateKeyEx
  450. RegDeleteKey
  451. RegDeleteValue
  452. RegEnumKeyEx
  453. RegEnumValue
  454. RegisterClass
  455. RegisterClassEx
  456. RegisterHotKey
  457. RegisterServiceProccess
  458. RegNotifyChangeKeyValue
  459. RegOpenKeyEx
  460. RegQueryValueEx
  461. RegSetValueEx
  462. ReleaseCapture
  463. ReleaseDC
  464. RemoveDirectory
  465. RemoveFontResource
  466. RemoveMenu
  467. RemoveProp
  468. RestartDialog
  469. RoundRect
  470. RunDialog

    S

  471. ScreenToClient
  472. ScrollWindow
  473. SelectClipPath
  474. SelectObject
  475. SendInput
  476. SendMessage
  477. SendMessageTimeOut
  478. SetActiveWindow
  479. SetArcDirection
  480. SetBitmapBits
  481. SetBkColor
  482. SetBkMode
  483. SetBrushOrgEx
  484. SetCaretBlinkTime
  485. SetClassLong
  486. SetClipboardData
  487. SetComputerName
  488. SetConsoleCursorInfo
  489. SetConsoleCursorPosition
  490. SetConsoleTextAttribute
  491. SetConsoleTitle
  492. SetCurrentDirectory
  493. SetCursor
  494. SetCursorPos
  495. SetDIBits
  496. SetDoubleClickTime
  497. SetEnvironmentVariable
  498. SetErrorMode
  499. SetFileAttributes
  500. SetFilePointer
  501. SetFileTime
  502. SetFocus
  503. SetForegroundWindow
  504. SetKeyboardState
  505. SetLastError
  506. SetLastErrorEx
  507. SetLayeredWindowAttributes
  508. SetLocaleInfo
  509. SetLocalTime
  510. SetMenu
  511. SetMenuInfo
  512. SetMenuItemBitmaps
  513. SetMenuItemInfo
  514. SetParent
  515. SetPixel
  516. SetPixelV
  517. SetPolyFillMode
  518. SetPriorityClass
  519. SetProp
  520. SetRect
  521. SetRectEmpty
  522. SetScrollInfo
  523. SetSuspendState
  524. SetSysColors
  525. SetSystemCursor
  526. SetSystemPowerState
  527. SetSystemTime
  528. SetTextAlign
  529. SetTextCharacterExtra
  530. SetTextColor
  531. SetThreadLocale
  532. SetThreadPriority
  533. SetTimer
  534. SetVolumeLabel
  535. SetWindowLong
  536. SetWindowPlacement
  537. SetWindowPos
  538. SetWindowRgn
  539. SetWindowsHookEx
  540. SetWindowText
  541. SetWindowTheme
  542. SfcGetNextProtectedFile
  543. SfcIsFileProtected
  544. SHAddToRecentDocs
  545. SHAppBarMessage
  546. SHAutoComplete
  547. SHBrowseForFolder
  548. Shell_NotifyIcon
  549. ShellAbout
  550. ShellExecute
  551. ShellExecuteEx
  552. SHEmptyRecycleBin
  553. SHFileOperation
  554. SHFormatDrive
  555. SHGetFileInfo
  556. SHGetFolderLocation
  557. SHGetFolderPath
  558. SHGetPathFromIDList
  559. SHGetSpecialFolderLocation
  560. SHGetSpecialFolderPath
  561. ShowCaret
  562. ShowCursor
  563. ShowScrollBar
  564. ShowWindow
  565. ShowWindowAsync
  566. SHQueryRecycleBin
  567. Sleep
  568. StartDoc
  569. StartPage
  570. StartService
  571. StretchBlt
  572. StrFormatByteSize
  573. StrFromTimeInterval
  574. StrokePath
  575. StrTrim
  576. SubtractRect
  577. SwapMouseButton
  578. SystemParametersInfo
  579. SystemTimeToFileTime

    T

  580. TerminateProcess
  581. TextOut
  582. TrackMouseEvent
  583. TrackPopupMenu
  584. TrackPopupMenuEx
  585. TransparentBlt

    U

  586. UnhookWindowsHookEx
  587. UninitializeFlatSB
  588. UnionRect
  589. UnregisterClass
  590. UnregisterHotKey
  591. UpdateWindow
  592. UrlCreateFromPath
  593. V

  594. VerQueryValue
  595. W

  596. WaitForSingleObject
  597. waveOutGetVolume
  598. waveOutSetVolume
  599. WideCharToMultiByte
  600. WindowFromPoint
  601. WinExec
  602. WinHelp
  603. WriteConsole
  604. WriteFile
  605. WritePrivateProfileString
  606. WriteProfileString

    X

    Y

    Z

  607. ZeroMemory

В начало


Список функций с обратным вызовом по алфавиту

  • 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, следует в первую очередь упомянуть три основные библиотеки:

  1. Kernel32.dll. Эта библиотека предназначена для работы с объектами ядра операционной системы и ее функции позволяют управлять памятью и другими системными ресурсами.
  2. User32.dll. Здесь сосредоточены функции для управления окнами — основным видом объектов операционной системы. Обработка сообщений, работа с меню, таймерами, все это выполняют функции этой DLL.
  3. 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

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

winapi — Какая связь между C и Windows API?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *