![]() |
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. |
Mind
Пользуешся функцией: Код:
HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);Только этот поиск не гарантирует тебе уникальности, т.к. теоретически может быть несколько окон с именем "Test". Цитата:
Цитата:
|
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? |
Кто-нибуд может привести пример исползования функции EnumWindows.
|
Mind
В общем всё правильно. По поводу 2го вопроса - смотри MSDN. Там есть всё. |
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: |
Для эмуляции нажатия клавиш можно еще пользоваться функцией:
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.