Я пытаюсь зарегистрировать глобальную горячую клавишу в Visual C# 2012, создать целевую платформу .NET3, после использования http://www.dreamincode.net/forums/topic ... l-hotkeys/ в качестве руководства я получил следующие (сокращенные) файлы:
using System;
using System.Collections.Generic;
using System.Text;
namespace barcodelabel
{
class GlobalHotkeyConstants
{
public const int NOMOD = 0x0000;
public const int ALT = 0x0001;
public const int CTRL = 0x0002;
public const int SHIFT = 0x0004;
public const int WIN = 0x0008;
//windows message id for hotkey
public const int WM_HOTKEY_MSG_ID = 0x0312;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Windows;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace barcodelabel
{
public partial class Form1 : Form
{
private GlobalHotkey ghk;
protected override void WndProc(ref Message m)
{
if (m.Msg == GlobalHotkeyConstants.WM_HOTKEY_MSG_ID) {
MessageBox.Show("HOTKEY PRESSED");
}
base.WndProc(ref m);
}
public Form1()
{
InitializeComponent();
this.ghk = new GlobalHotkey(GlobalHotkeyConstants.SHIFT, Keys.F10, this);
}
private void Form1_Load(object sender, EventArgs e)
{
if (!this.ghk.Register())
{
MessageBox.Show("Hotkey could not be registered");
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.ghk.Unregister();
}
}
Какую бы горячую клавишу я ни выбрал, ее невозможно зарегистрировать. Я попробовал использовать Hotkey Explorer с http://hkcmdr.anymania.com/, чтобы проверить, занята ли горячая клавиша, но мне сказали, что она бесплатна.
Я пытаюсь зарегистрировать глобальную горячую клавишу в Visual C# 2012, создать целевую платформу .NET3, после использования http://www.dreamincode.net/forums/topic/180436-global-hotkeys/ в качестве руководства я получил следующие (сокращенные) файлы:
[list] [*]GlobalHotkey.cs
[code]using System; using System.Windows.Forms; using System.Runtime.InteropServices;
namespace barcodelabel { public class GlobalHotkey { private int modifier; private int key; private IntPtr hWnd; private int id;
public GlobalHotkey(int modifier, Keys key, Form form) { this.modifier = modifier; this.key = (int)key; this.hWnd = form.Handle; id = this.GetHashCode(); }
public bool Register() { return RegisterHotKey(hWnd, id, modifier, key); }
public bool Unregister() { return UnregisterHotKey(hWnd, id); }
public override int GetHashCode() { return modifier ^ key ^ hWnd.ToInt32(); }
[DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
[code]using System; using System.Collections.Generic; using System.Text;
namespace barcodelabel { class GlobalHotkeyConstants { public const int NOMOD = 0x0000; public const int ALT = 0x0001; public const int CTRL = 0x0002; public const int SHIFT = 0x0004; public const int WIN = 0x0008;
//windows message id for hotkey public const int WM_HOTKEY_MSG_ID = 0x0312;
} } [/code] [*]Моя форма1.cs
[code]using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Windows; using System.Windows.Forms; using System.Runtime.InteropServices; using Microsoft.Win32;
namespace barcodelabel { public partial class Form1 : Form {
private GlobalHotkey ghk;
protected override void WndProc(ref Message m) { if (m.Msg == GlobalHotkeyConstants.WM_HOTKEY_MSG_ID) { MessageBox.Show("HOTKEY PRESSED");
} base.WndProc(ref m); }
public Form1() { InitializeComponent(); this.ghk = new GlobalHotkey(GlobalHotkeyConstants.SHIFT, Keys.F10, this); }
private void Form1_Load(object sender, EventArgs e) { if (!this.ghk.Register()) { MessageBox.Show("Hotkey could not be registered"); } }
Какую бы горячую клавишу я ни выбрал, ее невозможно зарегистрировать. Я попробовал использовать Hotkey Explorer с http://hkcmdr.anymania.com/, чтобы проверить, занята ли горячая клавиша, но мне сказали, что она бесплатна.
F5 = компилировать по необходимому + запустить
Ctrl+Shift+B = собирать все открытые (загруженные) проекты, но не запускать
??? = компилировать как необходимо , но не запускать
F5 = компилировать по необходимому + запустить
Ctrl+Shift+B = собирать все открытые (загруженные) проекты, но не запускать
??? = компилировать как необходимо , но не запускать
У меня есть приложение winforms без окон, которое использует ApplicationContext для настройки NotifyIcon (TrayIcon), с помощью которого пользователь может управлять. Но я также хочу использовать горячие клавиши.
Я нашел несколько хороших подходов с...
Кто-нибудь знает, как использовать вызовы API RegisterHotKey/UnregisterHotKey в консольном приложении? Я предполагаю, что настройка/удаление горячей клавиши такое же, но как мне сделать обратный звонок при нажатии клавиши?
Каждый пример, который я...
Я создаю систему автоматизации с использованием Python, которая требует переключения вкладок, щелчков мышью и т. д., что полностью задействует мою систему. Во время этого я не могу получить доступ к своему терминалу или панели задач, чтобы вручную...