KNOW INTUIT, Лекция, WinApi

Примери за работа с Win32 API функции

Говоренето за особеностите на извикването на Win32 API функции все още не е приключило. Въпреки това е време да прекъснем общото изложение и да се обърнем към примери. Голяма част от казаното си струва да се илюстрира с примери за работа с конкретни Win 32 API функции. Всеки от нашите примери ще бъде посветен на работа с определена група функции.

Работа с прозорци

Нека да дадем кратко описание на използваните функции:

Сега даваме процедура, при която описаните тук функции се стартират една по една (Примерите използват документите: DocOne6, DocTwo6

Нека незабавно да дадем резултатите от печат за отстраняване на грешки. Обърнете внимание, че всички функции завършиха успешно, така че нямаше съобщения в диалоговите прозорци, предвидени в случай на повреда.

  • Първо, когато функцията GetActiveWindow API беше извикана, се получи манипулатор на активния прозорец. Обърнете внимание, че това беше прозорецът на кода на процедурата, която се изпълнява. Стойността на този спецификатор е 655706.
  • След това при извикване на функцията GetWindowRect се получава правоъгълник, който определя позицията на прозореца на екрана. Функцията завърши успешно и върна резултат 1 (вярно). Както в други случаи, когато функцията беше завършена, ние проверихме резултата за успех.
  • Следващата стъпка беше да получите заглавието на активния прозорец. Както можете да видите от разпечатката на заглавката, активният прозорец беше прозорецът на кода, който се изпълняваше. Резултатът 58, върнат от функцията GetWindowText, указва броя на знаците в резултантния низ. Моля, имайте предвид, че преди да извикате функцията, низът, предаден към нея, беше инициализиран с нулеви знаци. При успешно завършване от низа беше извлечен резултат, указващ заглавието. Отпечатването му показва, че изпълняваният прозорец е бил активен в момента на стартиране на функцията.код. За извличане на заглавката от низа е използван нулев знак като знак за края на заглавката. За да се реши този проблем, може да се използва и броя на върнатите знаци - стойността, върната от функцията.
  • Следващата стъпка беше дръжката на прозореца да получи заглавието. Като такова беше използвано заглавието на прозореца с тестовия документ. Функцията FindWindow намери такъв прозорец и върна манипулатора му, равен на 6684884. Имайте предвид, че първият параметър е зададен на константата vbNullString.
  • Прозорецът, чийто манипулатор беше получен при последното извикване, беше преустроен два пъти - първо беше минимизиран, след това беше нормализиран - при две извиквания на функцията ShowWindow с различни стойности на константите.
  • На последния етап функцията FindWindow беше извикана отново, за да намери манипулатора на новоотворения документ. След това, когато беше извикана функцията SetWindowText, заглавието на този прозорец беше променено. Обърнете внимание, че новата стойност на заглавката беше предадена на функцията като обикновена низова константа.
Характеристики на околната среда

Следващият ни пример показва как да получите, използвайки Win32 API повиквания, следните характеристики на средата:

  • Версията на използваната операционна система.
  • Тип процесор.
  • Общо и използвано количество физическа и виртуална памет.

Функциите, използвани в този пример, принадлежат на библиотеката Kernel32. Имайте предвид, че за разлика от повечето случаи, в този пример ще бъдат извикани не само функции, но и процедури, съхранени в библиотеката Kernel32. Нека започнем с описание на константите, типовете и операторите Declare, които предхождат извикванията на API:

За събиране на информация за средата - използвания процесор, операционната система, наличната памет и други характеристики на компютъра, ние използвамеследните три Win32 API функции (процедури):

Ето процедура, в която се извикват посочените API функции, получената информация се обработва и крайните резултати се показват в прозореца за отстраняване на грешки: