(Оно разработано в c#, визуальный studio)
Привет то, за чем оно последует, является следующим у меня есть панель в windowsForms и с любым shortcut давайте говорить (CTR+A), распределенный элемент menuStrip, команда выполняет следующее:
private void ocultarToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.WindowState==FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Maximized;
}
else
{
this.WindowState = FormWindowState.Minimized;
}
}
Это, что он делает кратко, состоит в том, что он приуменьшает панель.
То, что я хочу сделать, состоит в том, чтобы в undir та же команда повернулась, чтобы максимизировать, но это не делает, потому что фокус приложения или он не в той же самой (или будьте браузер, windows, другим app, и т.д.).
Я предполагаю, что он был бы должен регистрировать shortcut в windows, у которого была связь с действием, которое я хочу реализовать, но правда у меня даже не есть самая минимальная идея как делать это ò, если существовал какой-то другой метод.
Если эти на Windows платформе ты можешь использовать ее funciГіn API Windows RegisterHotKey
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
//Declaramos nuestras API y Constantes Necesarias
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
private const int WM_HOTKEY = 0x0312;
enum KeyModifier
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
WinKey = 8
}
//Sobrescribimos nuestro procedimiento WndProc para darle unan nueva
funcionalidad y poder detectar el evento del teclado registrado.
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_HOTKEY) //Detectamos el evento
{
Visible =true; //Mostrar Formulario
}
}
public Form1()
{
InitializeComponent();
int id = 0; //dejar por defecto
//Registramos El evento asociado al iniciar el formulario
RegisterHotKey(this.Handle, id, (int)KeyModifier.Control, Keys.A.GetHashCode()); // Registar Ctrl + A
}
private void ExampleForm_FormClosing(object sender, FormClosingEventArgs e)
{
UnregisterHotKey(this.Handle, 0); // Anular Registro
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Visible = false;
}
}
}