ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. 
Windows API

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΡƒΠΊΠ² ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetConsoleTextAttribute. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся дСскриптор Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° консоли, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ — Ρ†Π²Π΅Ρ‚ Π±ΡƒΠΊΠ² ΠΈ Ρ„ΠΎΠ½Π°. Π¦Π²Π΅Ρ‚ получаСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ (сумма ΠΈΠ»ΠΈ опСрация «Π˜Π›Π˜») Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ констант. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° «ΡΠΌΠ΅ΡΡŒ» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΈ ΠΈΠ½Ρ‚Снсивности, Π½ΠΎ ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² (см. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΠΆΠ΅). Ѐункция… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Windows API (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ ΡΠΎΠΎΡ‚вСтствии с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±Ρ‹Π»ΠΎ написано консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «Π₯удоТСствСнный холст» Π² Ρ‚Скстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ курсора символ ΠΏΠ΅Ρ€Π°, ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ стираСт символ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ, присутствуСт ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ ΠΏΠ΅Ρ€Π°. Π’ Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ курсора Π² ΠΎΠΊΠ½Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рисунок 1 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

wsprintfA.

Π­Ρ‚Π° функция являСтся Π½Π΅ΠΊΠΈΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Π‘ΠΈ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — sprintf. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€, ΠΊΡƒΠ΄Π° помСщаСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ форматирования. Π’Ρ‚ΠΎΡ€ΠΎΠΉ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π½ΡƒΡŽ строку, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: «Π§ΠΈΡΠ»Π°: %lu, %lu». Π”Π°Π»Π΅Π΅ ΠΈΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π»ΠΈΠ±ΠΎ сами ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ссли это числа), число ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТимым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π½ΠΎΠΉ строки. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ‚ΠΎ ΡΡ‚Π΅ΠΊ освобоТдаСт программист. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π½ Π½ΠΈΠΆΠ΅. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ import32. lib (TASM32) Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ wsprintfA, a _wsprintfA (!). Если функция Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ Π² EAX Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° Π΄Π»ΠΈΠ½Π° скопированной строки.

ADD ESP, N.

Данная ΠΊΠΎΠΌΠ°Π½Π΄Π° освобоТдаСт N Π±Π°ΠΉΡ‚ стСка.

ReadConsoleInput.

Π­Ρ‚Π° функция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΈ ΠΌΡ‹ΡˆΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

  • 1. дСскриптор Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° консоли.
  • 2. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ (ΠΈΠ»ΠΈ массив структур), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится информация ΠΎ ΡΠΎΠ±Ρ‹Ρ‚иях, ΠΏΡ€ΠΎΠΈΡΡˆΠ΅Π΄ΡˆΠΈΡ… с ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΡŽ.
  • 3. количСство ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… записСй (структур).
  • 4. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ слово, содСрТащСС количСство Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… записСй.

GetStdHandle.

Π­Ρ‚Π° функция ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния дСскриптора консоли. Π•Ρ‘ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… констант:

STD_INPUT_HANDLE equ -10; для ввода.

STD_OUTPUT_HANDLE equ -11; для Π²Ρ‹Π²ΠΎΠ΄Π°.

STD_ERROR_HANDLE equ -12; для сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

WriteConsoleA.

Для Π²Ρ‹Π²ΠΎΠ΄Π° тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция API WriteConsoleA, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ (слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ) ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ смысл.

  • Β· 1-ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — дСскриптор Π±ΡƒΡ„Π΅Ρ€Π° Π²Ρ‹Π²ΠΎΠ΄Π° консоли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetStdHandle.
  • Β· 2-ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π±ΡƒΡ„Π΅Ρ€, Π³Π΄Π΅ находится Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ тСкст.
  • Β· 3-ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — количСство Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов.
  • Β· 4-ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ DWORD, ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ количСство Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… символов.
  • Β· 5-ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

Π‘ΡƒΡ„Π΅Ρ€, Π³Π΄Π΅ находится Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ тСкст, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½ΡƒΠ»Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ указываСтся количСство Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов.

SetConsoleCursorPosition.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ курсора Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetConsoleCursorPosition со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

  • Β· 1-ΠΉ, дСскриптор Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° консоли.
  • Β· 2-ΠΉ, структура COORD:

COORD STRUC.

Π₯ WORD ?

Y WORD ?

COORD ENDS.

SetConsoleTitle

Для опрСдСлСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° консоли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция SetConsoleTitle, СдинствСнным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся адрСс строки с Π½ΡƒΠ»Π΅ΠΌ Π½Π° ΠΊΠΎΠ½Ρ†Π΅.

FreeConsole.

Данная функция ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ освобоТдаСт консоль.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ консоль, поэтому Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ FreeConsole ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² «Ρ‡ΡƒΠΆΠΎΠΉ» консоли ΠΎΠ½Π° наслСдуСт эту консоль, поэтому, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ FreeConsole, Π½ΠΎΠ²ΠΎΠΉ консоли Π½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ — Ρ‡ΡƒΠΆΠΎΠΉ консоли эта функция Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚.

AllocConsole.

Для создания консоли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ WindowsAllocConsole:

Function AllocConsole Lib «kernel32» Alias DWORD «AllocConsole» ().

Из ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° содСрТится Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Windowskernel32, поэтому Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² нашСй ассСмблСрной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² (kernel32.inc) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (kernel32.lib). По Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ функцияAllocConsoleзаписываСт (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚) Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€EAXΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ΠΎΠΉ 4 Π±Π°ΠΉΡ‚Π° (DWORD). Если консоль ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ, Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€EAXΠ±ΡƒΠ΄Π΅Ρ‚ записан ноль.

CharToOemA.

Windows (русскоязычная) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Win1251, консоль — DOS. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΡ‹ Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ всС ΠΆΠ΅ ΠΏΠΎΠ΄ Windows, опрСдСляСмыС Π² Π½Π΅ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки Π½Π° ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Win1251 ΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎ. API-функция WindowsCharToOemΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ строки Win1251 Π² DOS, Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ кирилличСских символов.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹, числовыС значСния, сопоставляСмыС Ρ†ΠΈΡ„Ρ€Π°ΠΌ ΠΈ Π»Π°Ρ‚инским символам, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ Π² ΠΎΠ±Π΅ΠΈΡ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…, поэтому, Ссли Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡŒ выводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π° ΠΈ Ρ‡ΠΈΡΠ»Π°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽCharToOemΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Ѐункция опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Function CharToOem Lib «user32» Alias DWORD «CharToOemA» (DWORD lpszSrc, DWORD lpszDst).

Ѐункция содСрТится Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Windowsuser32, Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ассСмблСрной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ указания Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² (user32.inc) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (user32.lib). По Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€EAXΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ΠΎΠΉ 4 Π±Π°ΠΉΡ‚Π°: ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ 3 Π±Π°ΠΉΡ‚Π° Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ, младший Π±Π°ΠΉΡ‚ Ρ€Π°Π²Π΅Π½ 1, Ссли адрСса источника ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, ΠΏΡ€ΠΈ ΠΈΡ… ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ — 0.

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: lpszSrc- (long pointer string zero Source) адрСс Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½ΡƒΠ»Π΅ΠΌ строки-источника;lpszDst- (long pointer string zero Destination) адрСс строки-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°.

Π•ΡΡ‚ΡŒ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ строк ассСмблСром, эту ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π°Π΄ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈCharToOem. АссСмблСр Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΡ‚Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅ строки символов Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈΠ»ΠΈ ΠΎΡ‚ Ρ‡ΠΈΡΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ ΠΊΠΎΠ½Ρ†Π΅ строки ассСмблСр Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ условного Π±Π°ΠΉΡ‚Π°, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π΅Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ символьной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΏΠΎ Π΅Π΅ ΠΈΠΌΠ΅Π½ΠΈ) связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ MASM32 вычисляСт ΠΏΠΎ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ символьной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΈ компиляции подставляСт, Ссли Π½Π° Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния Π΄Π»ΠΈΠ½Ρ‹ строки.

ЀункцияCharToOemΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строка-источник ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ Π½ΡƒΠ»Π΅ΠΌ (string zero, ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒnull-terminated). Если ΠΌΡ‹ ΡΡ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ источника адрСс ΠΈΠ· Π½Π°ΡˆΠ΅Π³ΠΎ сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Ρ‚ сСбя соотвСтствСнно — Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, начиная с ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΅ΠΉ Π°Π΄Ρ€Π΅ΡΠ°, Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… всС, Π² Ρ‚ΠΎΠΌ числС ΠΈ Ρ‡ΠΈΡΠ»ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ любой размСрности, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ Π΅ΠΉ Π½ΡƒΠ»Ρ. Microsoft MSDN Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽCharToOemопасной — Π½Π΅Π±Ρ€Π΅ΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² ΠΊΠΎΠ΄, ΠΎΠ½Π° навСрняка Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя строкС-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΡƒ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½ΡƒΠ»Π΅ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ — достаточно лишь Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строка-источник Π²ΠΌΠ΅Ρ‰Π°Π»Π°ΡΡŒ Π² ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Π΅ΠΌ строка-источник.

SetConsoleTextAttribute.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΡƒΠΊΠ² ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SetConsoleTextAttribute. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся дСскриптор Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° консоли, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ — Ρ†Π²Π΅Ρ‚ Π±ΡƒΠΊΠ² ΠΈ Ρ„ΠΎΠ½Π°. Π¦Π²Π΅Ρ‚ получаСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ (сумма ΠΈΠ»ΠΈ опСрация «Π˜Π›Π˜») Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ· ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½ΠΈΠΆΠ΅ констант. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° «ΡΠΌΠ΅ΡΡŒ» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΈ ΠΈΠ½Ρ‚Снсивности, Π½ΠΎ ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² (см. ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½ΠΈΠΆΠ΅).

FOREGROUND_BLUE equ 1h; синий Ρ†Π²Π΅Ρ‚ Π±ΡƒΠΊΠ².

FOREGROUND_GREEN equ 2h; Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π±ΡƒΠΊΠ².

FOREGROUND_RED equ 4h; красный Ρ†Π²Π΅Ρ‚ Π±ΡƒΠΊΠ².

FOREGROUND_INTENSITY equ 8h; ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

BACKGROUND_BLUE equ 10h; синий свСт Ρ„ΠΎΠ½Π°.

BACKGROUND_GREEN equ 20h; Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°.

BACKGROUND_RED equ 40h; красный Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°.

BACKGROUND_INTENSITY equ 80h; ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ.

SetConsoleScreenBufferSize.

Ѐункция SetConsoleScreenBufferSize устанавливаСт Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠΊΠ½Π° консоли. Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π±ΡƒΡ„Π΅Ρ€ (ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ), Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ.

  • Β· 1-ΠΉ, дСскриптор Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° консоли.
  • Β· 2-ΠΉ, структура COORD:

COORD STRUC.

Π₯ WORD ?

Y WORD ?

COORD ENDS.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ