установка приоритета события

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

здравствуйте, появился следующий вопрос. как устанавливать приоритетность на события? при выполнении, оно же попадает в очередь событий, а мне нужно, чтобы оно выполнилось сразу же (максимальный приоритет). наверное какая-то winapi функция на это есть.

событие предположим такое:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
// какой-то код
}
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

SendMessage ?
BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

я не совсем понял что это за функция. щас почитал инфу и всё равно не совсем разобался(( поясни в 2-3 словах и пример кода желательно
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

В общем есть 2 функции у API SendMessage и PostMessage (с апи работал очень мало по этому могу ошибиться далее).

Одна из них посылает сообщение, которое встает в очередь и дожидается пока очередь его не обработает. (по моему это PostMessage)
Другая посылает сообщение, которое мгновенно обрабатывается, не зависимо от длины очереди. (это по моему про SendMessage)
BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

так, я почитал, немного уже разбираться начал. кстати ты перепутал их

единственная проблема: как подключить winapi к visual c#? так и не приходилось это делать. делал ко всем средам, но не к этой...
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

class Program
{
[DllImport("user32.dll", EntryPoint = "MessageBox", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int MessageBox(int hWnd, string smessage, string scaption, uint uiType);

static void Main(string[] args)
{
MessageBox(0, "вызов функции Win32", "Net", 0);
}
}
BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

ясно. а как конкретно PostMessage? для неё какой DLL и какой тип писать после extern static?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
и что в параметрах PostMessage?
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

Открой msdn да посмотри...
Неужели тебе примера мало, чтобы понять как экспортить API...
BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

Код: Выделить всё

public static extern int PostMessage(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam);
первый параметр дескриптор (хендл) окна? его же тоже через какую-то API функцию надо получить. как это сделать?

не мог бы для моего случая написать? мне нужно нажатие на клавишу. не знаю что именно и как: WM_KEYDOWN или textBox1_KeyDown
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

BattleMage писал(а):

Код: Выделить всё

public static extern int PostMessage(HandleRef hwnd, int msg, IntPtr wparam, IntPtr lparam);
первый параметр дескриптор (хендл) окна? его же тоже через какую-то API функцию надо получить. как это сделать?

не мог бы для моего случая написать? мне нужно нажатие на клавишу. не знаю что именно и как: WM_KEYDOWN или textBox1_KeyDown
Апи для получения хендла окна FindWindow.

У меня есть вопрос, как ты собираешься управлять очередью сообщений в c#?

Вообще лудше напиши в кратце чо те надо, уверен можно обойтись и без подобного изврата с апи.
Ответить