Vapros za VC++
6 отговора
13 прегледа
Vapros za VC++
daite nyakuv source za logvane na klaviatura ... opitvam se da napravya neshto drebno no problema e che programkata hvasha keystrokes samo kogato fokusa e na neinia prozorec daite nyakva idea ?
pls samo na VC++
Хм, трудно разбирам същината ...
...на ситуацията ти. Но виж, има си технология на "движение" на събитията.
Ти винаги можеш да накараш една форма да прихваща събития, независимо от
това, кой неин "Windowed" контрол е активен. Някъде му викат 'keypreview".
А може и друго название да бъде. Всъщност дали това имаш предвид, като казваш "логвам клавиатурата"?
Хм, трудно разбирам същината ...
Pribwaj oste towa:
CWnd::GetFocus
------------------
static CWnd* PASCAL GetFocus( );
Return Value
A pointer to the window that has the current focus, or NULL if there is no focus window.
The pointer may be temporary and should not be stored for later use.
Remarks
Retrieves a pointer to the CWnd that currently has the input focus.
CWnd Overview | Class Members | Hierarchy Chart
See Also CWnd::GetActiveWindow, CWnd::GetCapture, CWnd::SetFocus,::GetFocus
...........................................
ili towa (kakto te sawetwat gore)
CWnd::WindowProc
---------------------
This method provides a CE procedure (WindowProc) for a CWnd object. It dispatches messages through the window’s message map.
At a Glance
Header file: Afxwin.h
Platforms: H/PC 2.0, Palm-size PC, H/PC Pro
Windows CE versions: 1.0 and later
Complete documentation: Visual C++ documentation
Хм, трудно разбирам същината ...
днес съм решил да съм в лошо настроение, така че предварително моля за извинение, ако засегна някого.
1. темата: "въпрос за VC++" - прочетох внимателно въпроса (няколко пъти) и не видях да има кой знае каква връзка с Visual C (че даже и ++); все едно в comp.lang.c да зададеш такъв въпрос - това, че желае реализация на C не променя особено контекста на въпроса тоест win32. Пък и какво значи VC++? кой да е компилатор за C (и линкер де) правещ PE файлове ще свърши работа. или се намеква за MFC? загадка...
2. какво е "форма"? това, че в Delphi и C++ Builder (VCL) казват така на pop-up прозорците, едва ли е уместна насока за отговор на въпрос несвързан пряко с гореупоменатите среди за разработка.
3. та :) отговор на въпроса:
hook.
погледни функцията SetWindowsHookEx и свързаните с нея. в MSDN-то все ще да има някакъв пример.
съвет: "официалният" вариант за поместване на глобалните променливи на DLL, която се използва за system-wide hook е да се използва memory-mapped file, но е възможно и чрез отделяне им в отделна секция на PE файла с вдигнат флаг shared (което изисква малко усилия с DEF файла, с microsoft-ския компилатор можеш направо да го вмъкнеш в сорс файла с #pragma). интересното е че hook handle-то може и да не е глобална shared променлива - в твоето DLL map-нато из различните процеси CallNextHookEx( 0, .. ) си работи без проблем. :) и .. ако не ме лъже паметта - map-ването на DLL-то в адресното пространство на другите процеси не става веднага (непосредствено след SetWindowsHookEx), а когато е необходимо - тоест си на някой процес и натиснеш клавиш.
успех!
Оф, тъй кажи де...
...че било hook!
Аз си рекох, че е някакъв прозорец ( при мен в Bildera form), който трябва
да прихваща от неговите си....
В кръга на майтапа, струва ми се, че ситуацията май произтича от опит за
нещо тарикатско...
Чакай, сетих се нещо...
...Що употреби "pop-up" сравнение? Давам си сметка, че Inprise Delphi/Cbuilder поизкривяват нещата. Но то е от "художествен" мерак. Пък и се напъват (уж)
И към Linux...
Естествено горния въпрос няма нищо общо с VCL. Ама, я си го представи, че
се появи откyм друга друга OS. Де Киро кирия...