Страница 1 из 2

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

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

событие предположим такое:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
// какой-то код
}

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

Добавлено: 20 сен 2009, 15:39
Newbie
SendMessage ?

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

Добавлено: 20 сен 2009, 16:09
BattleMage
я не совсем понял что это за функция. щас почитал инфу и всё равно не совсем разобался(( поясни в 2-3 словах и пример кода желательно

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

Добавлено: 20 сен 2009, 16:59
Newbie
В общем есть 2 функции у API SendMessage и PostMessage (с апи работал очень мало по этому могу ошибиться далее).

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

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

Добавлено: 20 сен 2009, 18:55
BattleMage
так, я почитал, немного уже разбираться начал. кстати ты перепутал их

единственная проблема: как подключить winapi к visual c#? так и не приходилось это делать. делал ко всем средам, но не к этой...

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

Добавлено: 20 сен 2009, 19:17
Newbie
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);
}
}

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

Добавлено: 20 сен 2009, 19:51
BattleMage
ясно. а как конкретно PostMessage? для неё какой DLL и какой тип писать после extern static?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
и что в параметрах PostMessage?

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

Добавлено: 20 сен 2009, 20:21
Newbie
Открой msdn да посмотри...
Неужели тебе примера мало, чтобы понять как экспортить API...

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

Добавлено: 20 сен 2009, 22:36
BattleMage

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

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

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

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

Добавлено: 20 сен 2009, 23:32
Newbie
BattleMage писал(а):

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

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

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

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

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