Я развернул проект на клиентском ПК. Можно ли добавить сочетание клавиш для вызова этой программы. Как сделать его свернутым в трей при его срабатывании? (Пользователь по-прежнему может открыть его, щелкнув значок в трее). Можно ли это сделать на уровне программирования?

2 ответа2

2

Вы не можете установить горячую клавишу, используя код C # ... Ваше приложение должно быть запущено, если вы хотите что-то установить, и вы хотите, чтобы оно запускалось с помощью ярлыка ... Конечно, это может быть установлено в настройках вашего приложения ... щелкните правой кнопкой мыши ваше приложение, настройки могут найти пункт, который позволяет вам указать ярлык для запуска приложения.

К значку в трее вопрос. Вам просто нужно скрыть свою форму, я предполагаю, что для этого нужно создать приложение для форм.

Вы можете сделать это с помощью следующего кода:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace MyTrayApp
{
    public class SysTrayApp : Form
    {
        [STAThread]
        public static void Main()
        {
            Application.Run(new SysTrayApp());
        }

        private NotifyIcon  trayIcon;
        private ContextMenu trayMenu;

        public SysTrayApp()
        {
            // Create a simple tray menu with only one item.
            trayMenu = new ContextMenu();
            trayMenu.MenuItems.Add("Exit", OnExit);

            // Create a tray icon. In this example we use a
            // standard system icon for simplicity, but you
            // can of course use your own custom icon too.
            trayIcon      = new NotifyIcon();
            trayIcon.Text = "MyTrayApp";
            trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);

            // Add menu to tray icon and show it.
            trayIcon.ContextMenu = trayMenu;
            trayIcon.Visible     = true;
        }

        protected override void OnLoad(EventArgs e)
        {
            Visible       = false; // Hide form window.
            ShowInTaskbar = false; // Remove from taskbar.

            base.OnLoad(e);
        }

        private void OnExit(object sender, EventArgs e)
        {
            Application.Exit();
        }

        protected override void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                // Release the icon resource.
                trayIcon.Dispose();
            }

            base.Dispose(isDisposing);
        }
    }
}

этот код был взят из http://alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/, который работает как шарм!

1

Вы можете использовать такой продукт, как Auto Hotkeys, который является бесплатным и подходит для определения горячих клавиш (и автоматической проверки орфографии и т.д.).

Для системного трея обычным способом сделать это является не проект в виде проекта форм, а консольный проект, который вызывает форму. Таким образом , форма не используется , пока она не вызывается из контекстного меню в системном трее - Загляните в NotifyIcon - Простой пример здесь. Другой (менее аккуратный) способ состоит в том, чтобы вначале скрыть основное из скрытого, но если форма не нужна, это действительно пустая трата ресурсов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .