Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Мигание

Привет всем!
Я вот хотел узнать, как можно помигать лампочками клавиатуры в XP.
Под 98 там есть KeyState или как - то така называется, а вот XP не
реагирует.
--
Да и вообще, как под виндой заставить мигать что-то другое.
Я понимаю, вопрос глупый, но как -то давным -давно я видел прогу, которая
под музычку мигала всеми лампочками. Очень красиво :-)

Номер выпуска : 5154
Возраст листа : 866 (дней)
Количество подписчиков : 549
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/510082
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Thu, 2 Feb 2006 23:54:48 +0300 (#510082)

 

Ответы:

В XP есть три кнопочки "Num lock", "CapsLock", и "Scroll Lock"!
Вот ими под музыку и мигаешь!!!!

Номер выпуска : 5160
Возраст листа : 866 (дней)
Количество подписчиков : 548
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/510526
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Fri, 03 Feb 2006 13:20:51 +0300 (#510526)

 

Здравствуйте !

Если Вы про SetKeyboardState, то:

Because the SetKeyboardState function alters the input state of the calling
thread and not the global input state of the system, an application cannot
use SetKeyboardState to set the NUM LOCK, CAPS LOCK, or SCROLL LOCK (or the
Japanese KANA) indicator lights on the keyboard. These can be set or cleared
using SendInput to simulate keystrokes.

То есть, используйте SendInput.

Ну и еще:
Windows NT/2000/XP: The keybd_event function can also toggle the NUM LOCK,
CAPS LOCK, and SCROLL LOCK keys.
Windows 95/98/Me: The keybd_event function can toggle only the CAPS LOCK
and SCROLL LOCK keys. It cannot toggle the NUM LOCK key.

Гм... это смотря что...

Ответить   Fri, 3 Feb 2006 22:56:52 +0300 (#510544)

 

'******************************************************************
' Author : Lior Ben-Arie
'
' This code shows how to synconize and function with Scroll Lock,
' Num Lock and Caps Lock Keys.
'
' Most of the code is taken from Microsoft MSDN...
'
' Enjoy ...
'******************************************************************
Option Explicit
' Declare Type for API call:
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
' Constant declarations:
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1
Const KEY_COLOR_ON = vbGreen
Const KEY_COLOR_OFF = &H8000000F
' API declarations:
Private Declare Function GetVersionEx Lib "kernel32" Alias
"GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long
Private OSInfo As OSVERSIONINFO
Private keys(0 To 255) As Byte
Private Sub cmdCaps_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_CAPITAL, cmdCaps.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdCaps.BackColor = IIf(cmdCaps.BackColor = KEY_COLOR_OFF,
KEY_COLOR_ON, KEY_COLOR_OFF)
End If
End Sub
Private Sub cmdNum_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_NUMLOCK, cmdNum.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdNum.BackColor = IIf(cmdNum.BackColor = KEY_COLOR_OFF, KEY_COLOR_ON,
KEY_COLOR_OFF)
End If
End Sub
Private Sub cmdScroll_Click()
' Call to Sub ChangeKeyStatus in order to change the actual status of
the key
Call ChangeKeyStatus(VK_SCROLL, cmdScroll.BackColor = KEY_COLOR_OFF)
' Indicate Key status by it's color (Only for Win9x,
' In WINNT color status changes in Form_KeyDown)
If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
cmdScroll.BackColor = IIf(cmdScroll.BackColor = KEY_COLOR_OFF,
KEY_COLOR_ON, KEY_COLOR_OFF)
End If
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
' When pressing the Key on the keyboard the button color will change
accordingly
Select Case KeyCode
Case VK_CAPITAL: cmdCaps.BackColor = IIf(cmdCaps.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
Case VK_SCROLL: cmdScroll.BackColor = IIf(cmdScroll.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
Case VK_NUMLOCK: cmdNum.BackColor = IIf(cmdNum.BackColor =
KEY_COLOR_OFF, KEY_COLOR_ON, KEY_COLOR_OFF)
End Select
End Sub
Private Sub Form_Load()

' Get operating system information
OSInfo.dwOSVersionInfoSize = Len(OSInfo)
GetVersionEx OSInfo

' Get keyboard status into keys array
GetKeyboardState keys(0)

' Indicate Key status by it's color
cmdNum.BackColor = IIf(keys(VK_NUMLOCK), KEY_COLOR_ON, KEY_COLOR_OFF)
cmdCaps.BackColor = IIf(keys(VK_CAPITAL), KEY_COLOR_ON, KEY_COLOR_OFF)
cmdScroll.BackColor = IIf(keys(VK_SCROLL), KEY_COLOR_ON,
KEY_COLOR_OFF)

End Sub
Private Sub ChangeKeyStatus(ByVal lngKey As Long, ByVal bOn As
Boolean)

' It's quite clear what this sub does...

If OSInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '--> Win9x
keys(lngKey) = IIf(bOn, 1, 0)
SetKeyboardState keys(0)
ElseIf OSInfo.dwPlatformId = VER_PLATFORM_WIN32_NT Then '--> WinNT
'Simulate Key Press
keybd_event lngKey, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event lngKey, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If

End Sub

Номер выпуска : 5163
Возраст листа : 869 (дней)
Количество подписчиков : 546
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/511454
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Mon, 06 Feb 2006 02:46:37 +0300 (#511454)