IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Posilka soobshenia oknu (http://www.imho.ws/showthread.php?t=61606)

Mind 12.06.2004 23:46

Posilka soobshenia oknu
 
Privet vsem!!!
Navernoe eta tema uzhe bila.
Kak poluchit hwnd okna znaya tolko zagolovok?
K primeru nazvanie okna = "Test1".
I eshe, kakoi cod pri nazhatii klavishi Enter?
Nado poslat etomu oknu, chto klavisha Enter nazhata.
Kak eto sdelat?

Thx.

Dimm 13.06.2004 00:13

Mind

Пользуешся функцией:
Код:

HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
Она вернёт тебе handle окна. Через него ты сможешь послать сообщение.
Только этот поиск не гарантирует тебе уникальности, т.к. теоретически может быть несколько окон с именем "Test".


Цитата:

I eshe, kakoi cod pri nazhatii klavishi Enter? VK_ENTER?
VK_RETURN (0D)

Цитата:

Nado poslat etomu oknu, chto klavisha Enter nazhata.
Kak eto sdelat?
Сформируй мессадж WM_KEYDOWN (т.е. создай нужные WPARAM и LPARAM ) и пошли всё это при помощи SendMessage

Mind 13.06.2004 01:33

Vot moi kod:
HWND hwnd1;
hwnd1=(HWND)FindWindow(NULL,cap1);
//Gde cap1 eto CString=_Window's Title_
//Vmesto NULL dolzhen bit kakoi-to class. A esli ya ego ne znau?
::SendMessage(hwnd1,WM_KEYDOWN,VK_RETURN,0);
//Tak nado otpravlyat?

Mind 13.06.2004 05:56

Кто-нибуд может привести пример исползования функции EnumWindows.

Dimm 13.06.2004 21:24

Mind

В общем всё правильно. По поводу 2го вопроса - смотри MSDN. Там есть всё.

Mind 14.06.2004 05:16

Spasibo tebe. Vrode rabotaet. Tolko ya ispolzoval EnumWindows func. :beer:

Problema. Kogda posilau messagi chto nazhata klavisha Enter ili bukva v Notepad, on nichego ne delaet. Proboval vse. Prikruchival HWND k CWnd(SubclassWindow).
I eto ::PostMessage(hWnd,WM_KEYDOWN,VK_RETURN,0);.
Dumal mozhet eto iz-za togo chto okno ne aktivizirovanno. Aktiviziroval(wnd1.SetForegroundWindow();). Ne rabotaet. PLZ HELP!!! :help: :help: :help: :help: :help: :help: :help:

alexey_ma 14.06.2004 10:24

Для эмуляции нажатия клавиш можно еще пользоваться функцией:
VOID keybd_event(
BYTE bVk,
BYTE bScan,
DWORD dwFlags,
PTR dwExtraInfo
);

Или для Win NT/2000/XP :
UINT SendInput(
UINT nInputs,
LPINPUT pInputs,
int cbSize
);

Все это работает для активного окна. То есть сначала активируешь окно а потом вызываешь эти функции.


Часовой пояс GMT +4, время: 11:29.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.