Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Мерцание формы при перерисовке https://www.cyberforum.ru/ csharp-net/ thread216745.html
после каждого хода идет прорисовка поля и сопровождается мерцанием. даблбуфер не помогает... namespace soft { public partial class Form1 : Form { Graphics g; public Form1() { InitializeComponent();
Огромный EXE Файл , Нужна помошь C#
И так , ситуация такая , есть программа , которая берет файл(любой) и записывает его в конце другой программы(отныне шаблон) , которая должна читать записанный в себе файл и копировать куда то (типа инсталятора, только из одного setup файла) . все работает нормально , пока это проделываешь с небольшими файлами(до 100мб) , но когда дело доходит до >=1гб , шаблон запускается больше одной минуты , в...
C# Работа с COM поортом Такой вопрос появился, что можно почитать чтобы работать в С# с COM портом, например снять и обработать показания датчика температуры, или что-то подобное. Подскажите литературу, статьи любую информацию. https://www.cyberforum.ru/ csharp-net/ thread216596.html C# BitConverter little-endian -> big-endian https://www.cyberforum.ru/ csharp-net/ thread216563.html
Копирую в массив byte некоторые значения byte msg = new byte; Array.Copy(BitConverter.GetBytes(STX), 0, msg, 0, sizeof(int)); Array.Copy(BitConverter.GetBytes(Status), 0, msg, sizeof(int), sizeof(int)); Array.Copy(BitConverter.GetBytes(X), 0, msg, sizeof(int)*2, sizeof(int)); Array.Copy(BitConverter.GetBytes(Y), 0, msg, sizeof(int)*3, sizeof(int)); Array.Copy(BitConverter.GetBytes(Z), 0,...
C# Импорт DLL
Есть DLL, в которой определён namespace DLL_test, а в программе нужно импортировать функции из этой DLL. Вся проблема в том, что namespace в программе совпадает с namespace в DLL и возникает конфликт (переименовывать namespace нельзя). Как можно импортировать функции из DLL, не создавая ссылку на ней в проекте, или обращаться к DLL не только по namespace, а ещё по имени? Или ещё какие-нибудь...
C# Простой хост сервер Здравствуйте хочется попробовать написать простенький хост сервер для локальной сети. Подскажите куда смотреть что бы понять что мне надо знать для этого. https://www.cyberforum.ru/ csharp-net/ thread216500.html
C# Узнать информацию о процессе Здравствуйте у меня возник вопрос как узнать информацию об определенном процессе, а точнее где располагается исполняемый фаил? Просьба привести пример например с процессом explorer.exe если вы сочтете нужным приводить пример. Добавлено через 27 минут Вопрос снят разобрался... спасибо что прочли эту тему https://www.cyberforum.ru/ csharp-net/ thread216464.html C# Графический редактор
Хочу написать графический редактор в C#. Встал вопрос о панели инструментов. В фотошопе эта панелька висит слева, открывается синхронно с главным окном. Как можно реализовать это так, чтобы при нажатии активность не переводилась на панель инструментов?
C# Как создать собственный элемент управления в Visual C#? как создать собственний елемент управления у Visual C#. Мне нужна сделать такой компонент, каторий делает button не толька прямоугольним но и круглим, или другой форми!!!!!! Очень нужно! Заранее спасиба!Русский язык учим? Пишите нормально. https://www.cyberforum.ru/ csharp-net/ thread216198.html C# Загрузка html-страницы Возможно в c# скачать html страницу, без использования запроса, создания файла и вставки в него содержимого запроса? https://www.cyberforum.ru/ csharp-net/ thread216130.html
координаты попадания C#
Доброе время суток! Помогите пожалуйста рассчитать правильно координаты попадания фишек в клетки int X = 1 + (e.X - 2 * ots) / c_Width; int Y = 1 + (e.Y - 2 * ots) / c_Width; int Result = game.Go(X,Y,this,ref Message); c_Width=32- ширина клетки, а ots=2- отступ от краев в поле поле с клетками 10 на 10, и поле посередине формы, когда слева...
C# Генерация уникального ID компьютера https://www.cyberforum.ru/ csharp-net/ thread216029.html
Здравствуйте, Недавно задался вопросом проверки уникальности компьютера пользователя, для это нужна какая то его уникальная часть - номер винчестера или еще что нибудь. Когда то очень давно, когда я еще баловался AutoIT-ом находил функцию генерации уникального айди компьютера по его железу. Теперь вот хотелось бы найти достойный аналог на C#. Может кто сталкивался с такой задачей?...
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
23.06.2013, 01:46 0

Как можно управлять лампочками (светодиодами) Num, Caps, Scroll - C# - Ответ 4759014

23.06.2013, 01:46. Показов 7893. Ответов 14
Метки (Все метки)

Лучший ответ Сообщение было отмечено NickoTin как решение

Решение

Описание способа, который не зависит от типа клавиатуры.

Код на C
KbdLED.h
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef KBDLED_H_
#define KBDLED_H_
 
#include <Windows.h>
 
#define KEYBOARD_CAPS_LOCK_ON     4
#define KEYBOARD_NUM_LOCK_ON      2
#define KEYBOARD_SCROLL_LOCK_ON   1
 
typedef PVOID HKBD;
 
typedef struct _KBD_DEVPATH_LIST {
    struct _KBD_DEVPATH_LIST* Next;
    DWORD chLength;
    DWORD cbSize;
    TCHAR DevicePath[ANYSIZE_ARRAY];
} KBD_DEVPATH_LIST, *PKBD_DEVPATH_LIST;
 
PKBD_DEVPATH_LIST GetKeyboardsList();
 
BOOL FreeKeyboardsListMemory(PKBD_DEVPATH_LIST pFirst);
 
HKBD OpenKeyboard(PKBD_DEVPATH_LIST kbd);
 
BOOL CloseKeyboard(HKBD hKbd);
 
BOOL SetLedState(HKBD hKbd, USHORT ledFlags);
 
#endif
KbdLED.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "KbdLED.h"
#include <SetupAPI.h>
 
#pragma comment(lib, "Setupapi.lib")
 
#if defined(_UNICODE)
#define _T(x) L ##x
#else
#define _T(x) x
#endif
 
#define IOCTL_KEYBOARD_SET_INDICATORS   CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
 
#define GET_DIDD(x) ((PSP_DEVICE_INTERFACE_DETAIL_DATA)((PBYTE)(x) + FIELD_OFFSET(KBD_DEVPATH_LIST, cbSize)))
 
const GUID GUID_DEVINTERFACE_KEYBOARD = { 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd };
 
typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
    //
    // Unit identifier.  Specifies the device unit for which this
    // request is intended.
    //
    USHORT UnitId;
 
    //
    // LED indicator state.
    //
    USHORT LedFlags;
} KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
 
PKBD_DEVPATH_LIST GetKeyboardsList()
{
    HDEVINFO                 hKbdDev = NULL;
    DWORD                    devIndex;
    SP_DEVICE_INTERFACE_DATA devIntfsData = {0};
    PKBD_DEVPATH_LIST        retList = NULL;
    PKBD_DEVPATH_LIST        previous = NULL;
 
    hKbdDev = SetupDiGetClassDevs( &GUID_DEVINTERFACE_KEYBOARD, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
 
    if ( INVALID_HANDLE_VALUE == hKbdDev ) {
        OutputDebugString(_T("SetupDiGetClassDevs call failed.\r\n"));
        return NULL;
    }
 
    devIntfsData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
 
    for (devIndex = 0;
         SetupDiEnumDeviceInterfaces(hKbdDev, NULL, &GUID_DEVINTERFACE_KEYBOARD, devIndex, &devIntfsData);
         devIndex++)
    {
        DWORD               buffSize;
        PKBD_DEVPATH_LIST   current;
 
        SetupDiGetDeviceInterfaceDetail( hKbdDev, &devIntfsData, NULL, 0, &buffSize, NULL );
 
        if ( GetLastError() != ERROR_INSUFFICIENT_BUFFER ) {
            OutputDebugString(_T("SetupDiGetDeviceInterfaceDetail first call failed.\r\n"));
            continue;
        }
 
        current = malloc(FIELD_OFFSET(KBD_DEVPATH_LIST, cbSize) + buffSize);
 
        if ( !current ) {
            OutputDebugString(_T("malloc call failed.\r\n"));
            continue;
        }
 
        current->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
        current->chLength = (buffSize - FIELD_OFFSET(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath)) / sizeof(TCHAR);
 
        if ( !SetupDiGetDeviceInterfaceDetail(hKbdDev, &devIntfsData, GET_DIDD(current), buffSize, NULL, NULL) ) {
            OutputDebugString(_T("SetupDiGetDeviceInterfaceDetail second call failed.\r\n"));
            free(current);
            continue;
        }
        
        if ( previous )
            previous->Next = current;
        if ( !retList )
            retList = current;
 
        current->Next = NULL;
        previous = current;
    }
 
    SetupDiDestroyDeviceInfoList(hKbdDev);
    return retList;
}
 
BOOL FreeKeyboardsListMemory(PKBD_DEVPATH_LIST pFirst)
{
    PKBD_DEVPATH_LIST next = NULL;
 
    if ( !pFirst )
        return FALSE;
    
    do {
        next = pFirst->Next;
        free(pFirst);
        pFirst = next;
    } while ( next );
 
    return TRUE;
}
 
typedef struct _KBD_INFO
{
    HANDLE hDevice;
    PKBD_DEVPATH_LIST kbd;
} KBD_INFO, *PKBD_INFO;
 
HKBD OpenKeyboard(PKBD_DEVPATH_LIST kbd)
{
    PKBD_INFO kbdInfo;
    HANDLE    hDevice;
 
    if ( !kbd )
        return NULL;
 
    hDevice = CreateFile(kbd->DevicePath, 0, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
 
    if ( INVALID_HANDLE_VALUE == hDevice ) {
        OutputDebugString(_T("CreateFile call failed.\r\n"));
        return NULL;
    }
 
    kbdInfo = malloc(sizeof(KBD_INFO));
    kbdInfo->hDevice = hDevice;
    kbdInfo->kbd = kbd;
 
    return kbdInfo;
}
 
BOOL CloseKeyboard(HKBD hKbd)
{
    if ( !hKbd )
        return FALSE;
 
    if ( !CloseHandle((*(PKBD_INFO)hKbd).hDevice) )
        return FALSE;
 
    free(hKbd);
    return TRUE;
}
 
BOOL SetLedState(HKBD hKbd, USHORT ledFlags)
{
    KEYBOARD_INDICATOR_PARAMETERS kip;
    DWORD zero;
 
    if ( !hKbd )
        return FALSE;
 
    kip.LedFlags = ledFlags;
 
    return DeviceIoControl(
                (*(PKBD_INFO)hKbd).hDevice, IOCTL_KEYBOARD_SET_INDICATORS, 
                &kip, sizeof(kip), NULL, 0, &zero, NULL);
}
main.c
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include "KbdLED.h"
 
int main()
{
    HKBD              hKbd;
    PKBD_DEVPATH_LIST kbdList;
 
    kbdList = GetKeyboardsList();
    hKbd = OpenKeyboard(kbdList);
 
    if ( !SetLedState(hKbd, KEYBOARD_CAPS_LOCK_ON) )
        printf("SetLedState failed...\r\n");
    
    CloseKeyboard(hKbd);
    FreeKeyboardsListMemory(kbdList);
    return 0;
}

Если кому-то нужно могу перевести на C#, но только если кому-то нужно...

Вернуться к обсуждению:
Как можно управлять лампочками (светодиодами) Num, Caps, Scroll C#
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2013, 01:46
Готовые ответы и решения:

Мигание лампочек Num, Caps, Scroll с временными паузами
Необходимо, чтобы определенная лампочка моргнула при выполнении определенного условия. ...

Включение/выключение caps num scroll
помогите сделать прогу которая Включает/выключает caps,num,scroll lock использую TASM 5.0 код пишу...

Acer aspire 5552G-N974G64Mikk Проблема с Caps Lock, Num Lock, Scroll Lock
Вообщем у меня такая же проблемма https://www.cyberforum.ru/notebooks/thread552722.html ...

Вывести на экран в символическом виде состояние NUM LOCK, CAPS LOCK и SCROLL LOCK
Помогите решить задачку на турбо си Выводить на экран в символическом виде состояние NUM LOCK,...

14
23.06.2013, 01:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2013, 01:46
Помогаю со студенческими работами здесь

Клавиатура мигает всеми тремя индикаторами Caps Lock, Scroll Lock и Num Lock и соответственно не работает!
Здравствуйте парни и девушки! Столкнулся с такой проблемой! Имеется клавиатура Genius Ergomedia...

Работа с клавиатурой (клавиши num lock, caps lock, scroll lock)
определить состояние статуса клавиш &quot; num lock, caps lock,scroll lock &quot; с отображением и их...

Как по 1му каналу ШИМ управлять 2мя светодиодами?
Можно ли легко организовать управление 2мя светодиодами по одному каналу ШИМ, так чтобы...

поочередное включение num-caps
Здравствуйте всем, нужна помощь, в этом языке вообще не силен, а дали лабу сделать... даже не знаю...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru