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

ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ управлСния сторонними прилоТСниями

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для получСния дСскриптора Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя класса ΠΎΠΊΠ½Π° ΠΈ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. Если ΠΎΠ½ΠΈ нСизвСстны, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ поиска с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ EnumWindows, которая Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна ΠΏΠΎΠ·ΠΆΠ΅. Научимся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню. НаТмСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ мСню Π²Ρ‹Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠΎΠ΄ ΠΏΡƒΠ½ΠΊΡ‚ (Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Ρ‚ΠΎΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ!) ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ мСню, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ управлСния сторонними прилоТСниями (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠžΡ‡Π΅Π½ΡŒ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ стороннСС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, исходный ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ нСдоступСн ΠΈ Π½Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ собствСнного API, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия. Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² являСтся Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ 500 Ρ€Π°Π· Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠžΡ‚ΠΌΠ΅Π½Π°» ΠΏΡ€ΠΈ установки ΠŸΠž с Π½Π΅ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ³ΠΎ диска. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡŽ ΠΊΡ€ΠΈΠ²ΠΎΠΉ, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ ΠΊΠΎΠΌΠ°Π½Π΄ — Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ», ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сглаТиваниС, ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚… Π“ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ автоматичСски. Π’ ΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ рассказано, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, рассмотрим ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, написанным Π½Π° Ρ‡ΠΈΡΡ‚ΠΎΠΌ API Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ части «Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ …».

ΠΠ°Ρ‡Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ дСскриптор ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FindWindow, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ попавшССся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня с ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ ClassName ΠΈ WindowName. НС ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ поиск Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΎΠΊΠΎΠ½. Бинтаксис этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π”Π΅Π»Ρ„ΠΈ:

function FindWindow (ClassName, WindowName: PChar): HWnd;

Π³Π΄Π΅ ClassName — имя класса ΠΎΠΊΠ½Π° (Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ΡΡ пустым символом, nil — Ссли всС классы), WindowName — тСкстовый Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ nil, Ссли всС ΠΎΠΊΠ½Π°.

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 0, Ссли ΠΎΠΊΠ½ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ, Π»ΠΈΠ±ΠΎ, Π² ΡΠ»ΡƒΡ‡Π°Π΅ успСха, дСскриптор ΠΎΠΊΠ½Π°.

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

Π’ Π½Π°ΡˆΠ΅ΠΌ случаС, зная Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠΊΠ½Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

program program1;

{$APPTYPE CONSOLE}.

uses Windows, SysUtils;

const.

sClassName = 'myWindow';

var.

handle: HWND;

begin.

handle := FindWindow (sClassName, nil);

if handle = 0 then.

Writeln ('The window not found!').

else.

Writeln ('*> handle = ', handle);

writeln ('press enter');

readln;

end.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅Ρ‚ нСобходимости ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° — ΠΎΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСтся классом.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ для справки Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΊΠ½Π°ΠΌΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня:

Ѐункция.

ОписаниС.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

GetClassName.

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ имя класса ΠΎΠΊΠ½Π°.

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

ClassName: Π‘ΡƒΡ„Π΅p для ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈΠΌΠ΅Π½ΠΈ класса.

MaxCount: Π Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π°.

ЀактичСскоС число скопированных символов;

0 — Ссли ошибка.

GetWindowText.

КопиpΡƒΠ΅Ρ‚ Π² Str Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ тСкст ΠΎΡ€Π³Π°Π½Π° управлСния.

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½Π° управлСния.

Str: Π‘ΡƒΡ„Π΅Ρ€, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ строку.

MaxCount: Π Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° Str.

ЀактичСскоС число скопированных Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ 0, Ссли тСкст отсутствуСт.

GetWindowTextLength.

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ тСкста ΠΎΡ€Π³Π°Π½Π° управлСния.

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

Π”Π»ΠΈΠ½Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΠΊΠ½Π° Π² ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ….

IsIconic.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, являСтся Π»ΠΈ ΠΎΠΊΠ½ΠΎ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ).

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

НС Π½ΡƒΠ»ΡŒ, Ссли ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ; 0 — Ссли Π½Π΅Ρ‚.

IsWindow.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, являСтся Π»ΠΈ ΠΎΠΊΠ½ΠΎ допустимым ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

НС Π½ΡƒΠ»ΡŒ, Ссли ΠΎΠΊΠ½ΠΎ достовСрно; 0 — Ссли Π½Π΅Ρ‚.

IsWindowEnabled.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, являСтся Π»ΠΈ ΠΎΠΊΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΌ для Π²Π²ΠΎΠ΄Π° с ΠΌΡ‹ΡˆΠΈ ΠΈ Ρ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

Wnd: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

Н…

Π³Π΄Π΅ функция MakeWParam собираСт Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ слово ΠΈΠ· Π΄Π²ΡƒΡ… слов.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСкст Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС WM_SETTEXT. Участок ΠΊΠΎΠ΄Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ поиск edit’Π° ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ Π΅Π³ΠΎ тСкст выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

var pCh: pChar;

h_edit := FindWindowEx (handle, 0, 'EDIT', 'Hello');

if h_edit = 0 then.

Writeln ('The edit not found!').

else begin.

Writeln (' handle of the edit is ', h_edit);

pCh := 'тСкст, вставлСнный ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹';

SendMessage (h_edit, WM_SETTEXT, 0, integer (pCh));

end;

Научимся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню. НаТмСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡƒΠ½ΠΊΡ‚ мСню Π²Ρ‹Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠΎΠ΄ ΠΏΡƒΠ½ΠΊΡ‚ (Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ Ρ‚ΠΎΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ!) ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ мСню, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

h_menu := GetMenu (Handle); //ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ дСскриптор Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню ΠΎΠΊΠ½Π°.

if h_menu 0 then begin.

h_menu := GetSubMenu (h_menu, 0);//ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ дСскриптор ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню (0 -ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚).

//ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ 3 ΠΏΡƒΠ½ΠΊΡ‚Π° подмСню мСню (Ρ‡Π΅Ρ€Ρ‚Ρ‹ Π² ΠΌΠ΅Π½ΡŽ — это Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹).

id_menu := GetMenuItemID (h_menu, 2);

if id_menu 0 then.

//запускаСм ΠΏΡƒΠ½ΠΊΡ‚ мСню. ИмСнно PostMessage, SendMessage — Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

PostMessage (handle, WM_COMMAND, id_menu, 0);

end;

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ ΠΏΡƒΠ½ΠΊΡ‚ мСню — Π²Ρ‹Ρ…ΠΎΠ΄.

Π’ ΡΠ»ΡƒΡ‡Π°Π΅, Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ Π½Π΅ ΡΡΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ошибки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetLastError. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅:

// ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ функция являСтся макросом, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ с Π‘++ Π² ΠΏΠΎΡΡ‚Π°Π²ΠΊΠ΅ Delphi.

function MAKELANGID (sPrimaryLanguage: Word;

sSubLanguage: Word): Word;

begin.

result := (sSubLanguage shl 10) or.

sPrimaryLanguage;

end;

var pCh: pChar; // Π±ΡƒΡ„Π΅Ρ€ для сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

// ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки Π΅Π΅ ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ½ΡΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ тСкст с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FormatMessage.

FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER OR FORMAT_MESSAGE_FROM_SYSTEM,.

nil, GetLastError (), MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT) {Default language}, pCh, 0, nil);

// ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ:

MessageBox (0, pCh, 'Last error', MB_OK or MB_ICONINFORMATION);

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ компилятора Delphi, Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹ мСню ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ (Save all) ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (Run). ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню Save as… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡƒΡ‚ΠΈ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свою ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ‡ΡƒΠΆΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ВСст Ρ€ΡƒΠ±Π΅ΠΆΠ½ΠΎΠ³ΠΎ контроля № 3.

ВСст содСрТит 5 Π·Π°Π΄Π°Π½ΠΈΠΉ, Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… отводится 3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, ΠΏΠΎ Π’Π°ΡˆΠ΅ΠΌΡƒ мнСнию, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π»ΡŽΠ±Ρ‹ΠΌ Π·Π½Π°Ρ‡ΠΊΠΎΠΌ Π² Π±Π»Π°Π½ΠΊΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

1. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° WinSight позволяСт.

1).

Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, приходящим ΠΊ Π½ΠΈΠΌ.

2).

Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΡΠ²ΠΎΠΉΡΡ‚Π²Π°.

3).

Π˜Π·ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСния, приходящиС ΠΎΠΊΠ½Π°ΠΌ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ класс ΠΎΠΊΠΎΠ½.

4).

Волько ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°.

2. Π Π΅ΠΆΠΈΠΌ поиска Follow focus позволяСт.

1).

Π˜ΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΊΠ½Π°.

2).

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ сообщСния.

3).

Π˜ΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΊΠ½Π° ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ сообщСния.

4).

НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² 32 разрядных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

3. Для управлСния ΠΎΠΊΠ½ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

1).

Π­ΠΊΡ€Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (Rect).

2).

ГрафичСский дСскриптор (HDC).

3).

ΠžΠΊΠΎΠ½Π½Ρ‹ΠΉ дСскриптор (HWND).

4).

Класс ΠΎΠΊΠ½Π°, зарСгистрированный Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅.

4. Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ.

1).

ДСскриптор ΠΊΠ½ΠΎΠΏΠΊΠΈ.

2).

АксСлСратор (id) ΠΊΠ½ΠΎΠΏΠΊΠΈ.

3).

ДСскриптор ΠΈ Π°ΠΊΡΠ΅Π»Π΅Ρ€Π°Ρ‚ΠΎΡ€

4).

ДСскриптор ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π΅Π΅ Π°ΠΊΡΠ΅Π»Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π΄Π΅ΡΠΊΡ€ΠΈΠΏΡ‚ΠΎΡ€ ΠΎΠΊΠ½Π°.

5. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ всСх Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΎΠΊΠΎΠ½ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ рСкомСндуСтся ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ функциями:

1).

EnumWindows.

2).

FindWindow, GetNextWindow.

3).

EnumChildWindow.

4).

FindWindowEx.

Π‘Π»Π°Π½ΠΊ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

β„–.

1).

2).

3).

4).

5).

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ ΠΎΡ†Π΅Π½ΠΊΠΈ.

  • 4 ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² — ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ
  • 3 ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚Π° — Ρ…ΠΎΡ€ΠΎΡˆΠΎ
  • 2 ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚Π° — ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
  • 1 ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² — Π½Π΅ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ