Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Русский справочник ΠΏΠΎ Win32 APIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 34

Автор Варас Π‘ΠΎΡ€ΠΎΠΊΠ°

lpTimeProc - ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, которая вызываСтся ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ события ΠΈΠ»ΠΈ пСриодичСски ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΡŽ пСриодичСских событий. Если fuEvent опрСдСляСт Ρ„Π»Π°Π³ TIME_CALLBACK_EVENT_SET ΠΈΠ»ΠΈ TIME_CALLBACK_EVENT_PULSE, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpTimeProc интСрпрСтируСтся ΠΊΠ°ΠΊ дСскриптор события. Для Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ fuEvent , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ lpTimeProc интСрпрСтируСтся ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сигнатурой:


void ( CALLBACK )( UINT uTimerID , UINT uMsg , DWORD_PTR dwUser , DWORD_PTR dw1 , DWORD_PTR dw2 ).


dwUser - опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅.

fuEvent - Ρ‚ΠΈΠΏ события Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:


Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ПояснСниС

TIME_ONESHOT

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ происходит ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, послС uDelay миллисСкунд.

TIME_PERIODIC

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ происходит ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ uDelay миллисСкунд.


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ fuEvent Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:


Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ПояснСниС

TIME_CALLBACK_FUNCTION

По истСчСнии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Windows Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpTimeProc. ПовСдСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

TIME_CALLBACK_EVENT_SET

По истСчСнии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Windows Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SetEvent для установки события, опрСдСляСмого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpTimeProc. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ dwUser игнорируСтся.

TIME_CALLBACK_EVENT_PULSE

По истСчСнии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Windows Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ PulseEvent для срабатывания события, опрСдСляСмого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° lpTimeProc. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ dwUser игнорируСтся.

TIME_KILL_SYNCHRONOUS

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° этого Ρ„Π»Π°Π³Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ происхоТдСниС события послС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ timeKillEvent.


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


ВозвращаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ события Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π² случаС успСха, ΠΈΠ»ΠΈ ошибка Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL, Ссли Π΅Π΅ Π²Ρ‹Π·ΠΎΠ² Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ΠΉ, ΠΈ событиС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π½Π΅ Π±Ρ‹Π»ΠΎ создано. (Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ события Ρ‚Π°ΠΊΠΆΠ΅ пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°).


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² timeSetEvent для пСриодичСских событий Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ timeKillEvent . Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ события с Ρ„Π»Π°Π³Π°ΠΌΠΈ TIME_KILL_SYNCHRONOUS ΠΈ TIME_CALLBACK_FUNCTION ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ происхоТдСниС события послС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ timeKillEvent .


ВрСбования


Windows NT/2000/XP: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Windows NT 3.1 ΠΈ Π²Ρ‹ΡˆΠ΅.

Windows 95/98/Me: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Windows 95 ΠΈ Π²Ρ‹ΡˆΠ΅.

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ: ОбъявлСна Π² Mmsystem.h; ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Windows.h.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Winmm.lib.


Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


PulseEvent, SetEvent, timeKillEvent.


Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ систСмы

LockWorkStation


Ѐункция LockWorkStation отправляСт запрос Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ дисплСя Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΅Π΅ ΠΎΡ‚ нСсанкционированного использования.


BOOL LockWorkStation ( VOID );


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


Ѐункция Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².


Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния


Π’ случаС успСха возвращаСтся Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ функция выполняСтся асинхронно, Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ опСрация Π±Ρ‹Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π°. Оно Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π±Ρ‹Π»Π° Π»ΠΈ рабочая станция ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°.

Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ возвращаСтся Π½ΡƒΠ»ΡŒ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ошибкС Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GetLastError.


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ


ΠžΠ±Ρ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ рабочая станция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ: отсутствиС вошСдшСго Π² систСму ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΡΡ‚ΡŒ процСсса Π½Π΅ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС, ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ запроса Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ графичСской ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ (GINA DLL).

Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиш Ctrl + Alt + Del ΠΈ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ " Lock Workstation " ("Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°"). Для разблокирования Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ станции ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠΉΡ‚ΠΈ Π² систСму.


ВрСбования


Windows NT /2000/ XP: Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Windows 2000 ΠΈ Π²Ρ‹ΡˆΠ΅.

Windows 95/98/Me: НС поддСрТиваСтся .

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ: ОбъявлСна Π² Winuser.h; ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Windows.h.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ User32.lib.