Vapros za VC++

6 отговора 13 прегледа
#1

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++
Отговор
в отговор на beginner #2

Хм, трудно разбирам същината ...

...на ситуацията ти. Но виж, има си технология на "движение" на събитията. Ти винаги можеш да накараш една форма да прихваща събития, независимо от това, кой неин "Windowed" контрол е активен. Някъде му викат 'keypreview". А може и друго название да бъде. Всъщност дали това имаш предвид, като казваш "логвам клавиатурата"?
Отговор
в отговор на Любомир Ганов #3

Хм, трудно разбирам същината ...

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
Отговор
в отговор на Любомир Ганов #4

Хм, трудно разбирам същината ...

днес съм решил да съм в лошо настроение, така че предварително моля за извинение, ако засегна някого. 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), а когато е необходимо - тоест си на някой процес и натиснеш клавиш. успех!
Отговор
в отговор на _noname #5

Оф, тъй кажи де...

...че било hook! Аз си рекох, че е някакъв прозорец ( при мен в Bildera form), който трябва да прихваща от неговите си.... В кръга на майтапа, струва ми се, че ситуацията май произтича от опит за нещо тарикатско...
Отговор
в отговор на _noname #6

Чакай, сетих се нещо...

...Що употреби "pop-up" сравнение? Давам си сметка, че Inprise Delphi/Cbuilder поизкривяват нещата. Но то е от "художествен" мерак. Пък и се напъват (уж) И към Linux... Естествено горния въпрос няма нищо общо с VCL. Ама, я си го представи, че се появи откyм друга друга OS. Де Киро кирия...
Отговор