Программа обработки события нажатия внешней кнопки - C#
Формулировка задачи:
Всем привет! Мне понадобилась приставка к ПК в виде кнопки. Подключается по USB и при нажатии на неё воспроизводилась бы мелодия на ПК.
Поиск нечто подобного привёл меня на этот сайт
http://blog.flipwork.nl/?x=entry:entry081009-142605
В это проекте при нажатии на кнопку эмулируется нажатие на символ “[ или ]”
Из проекта:
What does it do?
This 1-Key-Keyboard can be plugged into any computer and will be recognised as a standard USB keyboard.
When closing the switch, the keystroke ‘]’ will be sent.
When opening the switch, the keystoke ‘[’ will be sent.
Собственно собрать кнопку и прошить МК не проблема. Возможно, мне даже удастся изменить символ (если это необходимо). Но проблема в ответной программе на ПК.
Какая задача программы.
1) Должна быть в трее (можно даже без формы)
2) При отлове символа воспроизводила звуковой файл (который лежит в заранее оговоренном месте (то есть программа без настроек)).
2.1) Если есть возможность так сделать. Как только программа ловит символ. Все звуки и музыка воспроизводящиеся в данный момент затихали. Проигрывала заданную мелодию. А потом опять все звуки и музыку запускала бы вновь. (Или если быть точнее, то просто уменьшала бы громкость музыки до 0 а потом восстанавливала.)
Собственно есть ли возможность написать подобную программу? Или я слишком многого хочу?
Про себя:
Программировал я очень давно. И то так…… пару раз что то написал и всё. Я даже не знаю с чего и начать… В общем пока всё печально
Решение задачи: «Программа обработки события нажатия внешней кнопки»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.IO; using System.Drawing.Imaging; using System.Runtime.InteropServices; using System.Media; namespace MusicalButton { public partial class Form1 : Form { private static SoundPlayer player; public Form1() { InitializeComponent(); ToolStripMenuItem ExitMenuItem = new ToolStripMenuItem("Exit"); contextMenuStrip1.Items.AddRange(new[] { ExitMenuItem }); notifyIcon1.ContextMenuStrip=contextMenuStrip1; ExitMenuItem.Click += ExitMenuItem_Click; } void Form1Load(object sender, EventArgs e) { myOneAndOnlyForm = this; this.WindowState = FormWindowState.Minimized; this.ShowInTaskbar = false; this.Visible=false; SetHook(); } void ExitMenuItem_Click(object sender, EventArgs e) { UnHook(); this.Close(); } public static void PlayMusic(Form1 form) { player = new SoundPlayer(); player.SoundLocation = @"C:\k.wav"; player.Play(); } private static Form1 myOneAndOnlyForm = null; // ... { GLOBAL HOOK } [DllImport("user32.dll")] static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc callback, IntPtr hInstance, uint threadId); [DllImport("user32.dll")] static extern bool UnhookWindowsHookEx(IntPtr hInstance); [DllImport("user32.dll")] static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, int wParam, IntPtr lParam); [DllImport("kernel32.dll")] static extern IntPtr LoadLibrary(string lpFileName); private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); const int WH_KEYBOARD_LL = 13; // Номер глобального LowLevel-хука на клавиатуру const int WM_KEYDOWN = 0x100; // Сообщения нажатия клавиши private LowLevelKeyboardProc _proc = hookProc; private static IntPtr hhook = IntPtr.Zero; public void SetHook() { IntPtr hInstance = LoadLibrary("User32"); hhook = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, hInstance, 0); } public static void UnHook() { UnhookWindowsHookEx(hhook); } public static IntPtr hookProc(int code, IntPtr wParam, IntPtr lParam) { if (code >= 0 && wParam == (IntPtr)WM_KEYDOWN) { int vkCode = Marshal.ReadInt32(lParam); //////ОБРАБОТКА НАЖАТИЯ if (vkCode.ToString() == "219") { PlayMusic(myOneAndOnlyForm); } return (IntPtr)1; } else return CallNextHookEx(hhook, code, (int)wParam, lParam); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д