Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прехват нажатия клавишь, если программа свернута в трей 
:(
    Опции темы
Dimyan
Дата 28.2.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: 3
Всего: 4



Как мне перехватить нажатие какой либо клавиши моей программкой если она сидит свернутая в трее?


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
shedon
Дата 28.2.2004, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: нет
Всего: 11



Поставить хук на клаву.


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
Dimyan
Дата 1.3.2004, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: 3
Всего: 4



а можно поставить хук средствами C#?


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
IZ@TOP
Дата 3.3.2004, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



А что такое "ХУК" confused.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Dimyan
Дата 3.3.2004, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: 3
Всего: 4



хук(в краце) - перехват системных сообщений


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
Dimyan
Дата 8.3.2004, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: 3
Всего: 4



Хочу поделится найденым ответом
Для глобального системного хука клавиатуры (т.к. мне было нужно именно перехват нажатия клавишь клавиатуры) можно использовать функцию WinAPI - RegisterHotKey, а вот пример подсказанного мне способа использования этой функции:
Код
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

 

public class WindowsForm : System.Windows.Forms.Form
{
[DllImport("USER32.DLL", EntryPoint="RegisterHotKey")]
public static extern bool HotK(int hWnd, int id, uint fsModifiers, uint vk);
public static int pressCnt;
const int MOD_CONTROL = 2;
const int MOD_ALT = 1;
const int WM_HOTKEY = 0x312;
const int VK_F2 = 0x71;
 
[STAThread]
public static void Main()
{
 Application.Run(new WindowsForm());
}

public WindowsForm()
{
 this.Size = new Size(500, 50);
 if( !HotK(this.Handle.ToInt32(), 1, MOD_CONTROL+MOD_ALT, VK_F2) )
  throw( new ArgumentException("Can't install hot key! Bad arguments?"));

}

protected override void WndProc(ref Message m)
   {
       switch (m.Msg)
       {
           case WM_HOTKEY:
  this.Text = "HotKey was pessed "+(++pressCnt).ToString()+" times."+
    "Lparam="+m.LParam.ToInt32().ToString("X")+";Wparam="+m.WParam.ToInt32().ToString("X");
        break;                
 }
       base.WndProc(ref m);
}
}

Так, что пользуйтесь ребятки, думаю не у меня одного на этом форуме возникали подобные вопросы


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
zmejg
Дата 3.8.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



столкнулся с той же проблемой.

все работает, но есть только одна проблемка - мой обработчик работает, стандартная обработка нажатия клавиши  не происходит . кто может подсказать что нужно делать?
PM MAIL   Вверх
zmejg
Дата 10.10.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



Так что, никто не знает?
...очень нужно

Добавлено через 1 минуту и 33 секунды
вызываю две процедуры base.WndProc и base.DefWindowProc, думал это поможет, но результата никакого
PM MAIL   Вверх
nettitan
Дата 13.3.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



а как этот хук использовать подскажите плиз.....
например мне нада перехватить нажатие Ctrl+С из другой программы  smile 

PM MAIL WWW ICQ Skype   Вверх
zaver
Дата 13.3.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

Репутация: нет
Всего: 3



эта тема уже была.
вот ссылка на мега-супер-пупер-папский хук
адский-папский хук
PM MAIL WWW ICQ Skype YIM MSN   Вверх
nettitan
Дата 13.3.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



Оке  smile 
посмотрим что за адски-супер-дупер-пупер и все в єтом роде ХУК  smile 
О результатах сообщю, щас будем шаманить  smile 
PM MAIL WWW ICQ Skype   Вверх
nettitan
Дата 15.3.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.6.2006
Где: г. Хмельницкий

Репутация: нет
Всего: нет



Да !!! таки фунциклирует  smile 
Могу сказать только БОЛЬШОЕ СПАСИБО !!!!
PM MAIL WWW ICQ Skype   Вверх
starostin
Дата 27.12.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.9.2009
Где: Ярославль

Репутация: нет
Всего: 1



Объясните мне тупом, что за Dispose в дизайнере форма1.цс? Что она делать должна и почему компилятор говорит что для неё нет соответствующего переопределения? 
PM MAIL ICQ Skype GTalk Jabber MSN   Вверх
CYBERDREAM
Дата 28.12.2010, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



starostin, ты темой не ошибся?


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
starostin
Дата 28.12.2010, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.9.2009
Где: Ярославль

Репутация: нет
Всего: 1



может и ошибъся, просто вытекает эта ошибка из этого примера. Создаю проект, вставляю этот код 
Цитата
Код


using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 
  
public class WindowsForm : System.Windows.Forms.Form 

 [DllImport("USER32.DLL", EntryPoint="RegisterHotKey")] 
 public static extern bool HotK(int hWnd, int id, uint fsModifiers, uint vk); 
 public static int pressCnt; 
 const int MOD_CONTROL = 2; 
 const int MOD_ALT = 1; 
 const int WM_HOTKEY = 0x312; 
 const int VK_F2 = 0x71; 
  
 [STAThread] 
 public static void Main() 
 { 
  Application.Run(new WindowsForm()); 
 } 
 public WindowsForm() 
 { 
  this.Size = new Size(500, 50); 
  if( !HotK(this.Handle.ToInt32(), 1, MOD_CONTROL+MOD_ALT, VK_F2) ) 
   throw( new ArgumentException("Can't install hot key! Bad arguments?")); 
 } 
 protected override void WndProc(ref Message m) 
    { 
        switch (m.Msg) 
        { 
            case WM_HOTKEY: 
   this.Text = "HotKey was pessed "+(++pressCnt).ToString()+" times."+ 
     "Lparam="+m.LParam.ToInt32().ToString("X")+";Wparam="+m.WParam.ToInt32().ToString("X"); 
         break;                
  } 
        base.WndProc(ref m); 
 } 
}



и появляеться ошибка, что Dispose не имеет подходящих переопределений в Designer.Form1.cs
PM MAIL ICQ Skype GTalk Jabber MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.