НОУ ІНТУІТ, Лекція, WinApi
Приклади роботи з функціями Win32 API
Розмова про особливості виклику Win32 API функцій ще не закінчена. Тим не менш, час перервати загальний виклад і звернутися до прикладів. Багато чого з того, що було сказано, доцільно проілюструвати прикладами роботи з конкретними функціями Win 32 API. Кожен із наших прикладів буде присвячений роботі з деякою групою функцій.
Робота з вікнами
Дамо коротку характеристику функцій, що використовуються:
Наведемо тепер процедуру, у якій послідовно запускаються описані тут функції (У прикладах використовуються документи: DocOne6, DocTwo6
Наведемо відразу ж і результати налагоджувального друку. Зауважимо, що це функції виконалися успішно, тому не з'являлися повідомлення у діалогових вікнах, передбачені у разі неуспіху.
- Спочатку, при виклику функції API GetActiveWindow було отримано описувач активного вікна. Зауважимо, що це було вікно коду виконуваної процедури. Значення цього описника дорівнює 655 706 .
- Потім, при виклику функції GetWindowRect був отриманий прямокутник, що визначає положення вікна на екрані. Функція успішно завершила роботу та повернула результат, рівний 1 (істина). Як і в інших випадках, після закінчення виконання функції ми перевірили результат на успішність завершення.
- На наступному етапі було отримано заголовок активного вікна. Як видно з роздруківки заголовка, активним було вікно коду, що виконується. Результат 58 , який повернула функція GetWindowText , визначає кількість символів результуючого рядка. Зверніть увагу, перед викликом функції переданий їй рядок був ініціалізований нульовими символами. Після успішного завершення з рядка було виділено результат, який задає заголовок. Його друк показує, що активним у момент запуску функції було вікно, що виконуєтьсякоду. Для виділення заголовка з рядка використовувався нульовий символ як ознака закінчення заголовка. Для вирішення цього завдання можна було використовувати і число символів, що повертаються - значення, що повертається функцією.
- Наступним кроком було одержання описувача вікна по заданому заголовку. Як таке було використано заголовок вікна з тестовим документом. Функція FindWindow знайшла таке вікно і повернула його описувач, рівний 6684884 . Зверніть увагу, що перший параметр був заданий константою vbNullString .
- Вікно, описувач якого було отримано в останньому виклику, двічі перебудовувалося, спочатку мінімізувалося, потім нормалізувалося, при двох викликах функції ShowWindow з різними значеннями констант.
- На останньому етапі знову викликалася функція FindWindow для знаходження описника новоствореного документа. Потім під час виклику функції SetWindowText було змінено заголовок цього вікна. Зверніть увагу, що нове значення заголовка передавалося функції у вигляді звичайної рядкової константи.
Характеристики оточення
Наш наступний приклад показує, як отримати, використовуючи виклик Win32 API функцій, такі характеристики оточення:
- Версію операційної системи.
- Тип процесора.
- Загальний та використовуваний обсяг фізичної та віртуальної пам'яті.
Функції, які використовуються в цьому прикладі, належать бібліотеці Kernel32. Зауважте, що на відміну від більшості випадків у цьому прикладі будуть викликатися не тільки функції, але й процедури, що зберігаються в бібліотеці Kernel32. Почнемо з опису констант, типів та операторів Declare, що передують виклику API функцій:
Для збору інформації про оточення - використовуваного процесора, операційної системи, наявної пам'яті та інших характеристик комп'ютера використовуємотри наступні функції (процедури) Win32 API:
Наведемо процедуру, в якій викликаються зазначені функції API, обробляється отримана інформація, кінцеві результати виводяться у вікно налагодження: