Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hvatanje Minimize All (Win+D / Win+M) sa global hook

[es] :: C/C++ programiranje :: Hvatanje Minimize All (Win+D / Win+M) sa global hook

[ Pregleda: 3559 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Hvatanje Minimize All (Win+D / Win+M) sa global hook28.05.2005. u 17:34 - pre 230 meseci
Zna li neko kako se "hvata" Windows događaj "Minimize All", koji se može
dobiti sa Win+D (naizmeničan) ili Win+M i to sa global hook.

Dakle, potreban je DLL za "global kezboard hook". Evo dela DLL koda koga ja sada
koristim za hvatanje npr Alt+?, ali pojma nemam kako bi islo za Win+?...

--- *.CPP / DLL ---
Code:

DWORD __stdcall CheckKey( int nCode, WORD wParam, LONG lParam )
{
   if( pHookInfo )
   {
       if( ((nCode >= 0) && (nCode != HC_NOREMOVE))
           && ((lParam & 0x40000000) == 0) // Skip if it's a repeat
           && (lParam & 0x20000000) ) // Check if Alt is pressed
       {
           // Send key information to the main window
           if( pHookInfo->hAppWnd )
               SendMessage(pHookInfo->hAppWnd, WM_KEYHOOK, 0, lParam);
       }
       return CallNextHookEx(pHookInfo->ghhookKB, nCode, wParam, lParam);
   }
   return 0;
}

 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
212.200.125.*



Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 01:30 - pre 230 meseci
Pogledaj u msdn.microsoft.com/msdnmag/ issues/02/09/CQA/default.aspx. Potrazi TaskKeyHook.cpp. Tu se nalazi primer kako spreciti tipku START. Mozes pozvati GetAsyncKeyState() da proveris da li je START pritisnut u kombinaciji sa D ili M.

Kad je tvoj kod u pitanju pokusaj sa:
Code:

DWORD __stdcall CheckKey( int nCode, WORD wParam, LONG lParam )
{
   if( pHookInfo )
   {
       bool fDM = ( GetAsyncKeyState(VK_LWIN)<0 || GetAsyncKeyState(VK_RWIN)<0 ) && ( wParam == 'D' || wParam == 'M' );
       if( ((nCode >= 0) && (nCode != HC_NOREMOVE))
           && ((lParam & 0x40000000) == 0) // Skip if it's a repeat
           && (lParam & 0x20000000) // Check if Alt is pressed
           && !fDM )        {
           // Send key information to the main window
           if( pHookInfo->hAppWnd )
               SendMessage(pHookInfo->hAppWnd, WM_KEYHOOK, 0, lParam);
       }
       return CallNextHookEx(pHookInfo->ghhookKB, nCode, wParam, lParam);
   }
   return 0;
}

Pls javni da li ovo zaista radi.

Takodje, jako dobra WROX-ova knjiga "Visual C++ Windows Shell Programming" (Dino Esposito, jedan od znacajnih autora u MSDN-u), u tekstu "Tips for Preventing File Deletion" daje primenu keyboard HOOK-a, a koriste, koliko sam video, isti pristup kojim i ti resavas problem. Fajl koji mozes da potrazis na netu ili uz pomoc P2P klijenata se zove "visual c windows shell programming - wrox.pdf"
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 07:24 - pre 230 meseci
Dragane,

Pogledao sam tvoj predlog a proveriću da li radi tek sutra, jer danas sam totalno
"rasprodat" porodičnim obavezama. Inače to mi treba radi jedne situacije kod
programa koji se minimizuju/zatvaraju u Tray...

Javiću da li radi...
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
212.200.125.*



Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 08:51 - pre 230 meseci
Hook je mozda malo overkill kad je u pitanju minimizacija programa u Sys. tray. Pogledaj dokumentaciju za f-ju Shell_NotifyIcon().
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
*.metrohive.neobee.net.

Jabber: DarkMan


Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 17:51 - pre 230 meseci
Evo ti deo koda iz jedne moje aplikacije:

Code:

LRESULT CALLBACK LowLevelKeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
    static BOOL ShiftDown = FALSE;
    static BOOL CtrlDown = FALSE;
    static BOOL AltDown = FALSE;
    PKBDLLHOOKSTRUCT kbd = (PKBDLLHOOKSTRUCT)lParam;
    
    if(wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) {
        if(kbd->vkCode == VK_LSHIFT   || kbd->vkCode == VK_RSHIFT  ) ShiftDown = TRUE;
        if(kbd->vkCode == VK_LCONTROL || kbd->vkCode == VK_RCONTROL) CtrlDown = TRUE;
        if(kbd->vkCode == VK_LMENU    || kbd->vkCode == VK_RMENU   ) AltDown = TRUE;
    } else if(wParam == WM_KEYUP || wParam == WM_SYSKEYUP) {
        if(kbd->vkCode == VK_LSHIFT   || kbd->vkCode == VK_RSHIFT  ) ShiftDown = FALSE;
        if(kbd->vkCode == VK_LCONTROL || kbd->vkCode == VK_RCONTROL) CtrlDown = FALSE;
        if(kbd->vkCode == VK_LMENU    || kbd->vkCode == VK_RMENU   ) AltDown = FALSE;
    }
    
    if(code >= 0) {
        if(cfg.DisableKeyboard) return 1;
        if(cfg.DisableWinKey   && (kbd->vkCode == VK_LWIN || kbd->vkCode == VK_RWIN)) return 1;
        if(cfg.DisableAppKey   && kbd->vkCode == VK_APPS) return 1;
        if(cfg.DisableShiftEsc && ShiftDown && kbd->vkCode == VK_ESCAPE) return 1;
        if(cfg.DisableCtrlEsc  && CtrlDown  && kbd->vkCode == VK_ESCAPE) return 1;
        if(cfg.DisableAltEsc   && AltDown   && kbd->vkCode == VK_ESCAPE) return 1;
        if(cfg.DisableShiftTab && ShiftDown && kbd->vkCode == VK_TAB   ) return 1;
        if(cfg.DisableCtrlTab  && CtrlDown  && kbd->vkCode == VK_TAB   ) return 1;
        if(cfg.DisableAltTab   && AltDown   && kbd->vkCode == VK_TAB   ) return 1;
        if(cfg.DisableAltF4    && AltDown   && kbd->vkCode == VK_F4    ) return 1;
        if(cfg.DisableAltEnter && AltDown   && kbd->vkCode == VK_RETURN) return 1;
    }
    return CallNextHookEx(hKeyboardLLHook, code, wParam, lParam);
}


Ja sam inace koristio Low Level Keyboard Hook koji radi jedino u Win NT/2K/XP i jedino sto ne moze da presretne (tj. da onemoguci) je CTRL-ALT-DEL.
Code:

    hKeyboardLLHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 18:25 - pre 230 meseci
Citat:

Hook je mozda malo overkill kad je u pitanju minimizacija programa u Sys. tray.
Pogledaj dokumentaciju za f-ju Shell_NotifyIcon().


Nisi me razumeo ;) Nije hook samo radi toga. Zapravo nedavno sam uradio neki
priručni englesko-srpski rečnik, koji se može pozivati i sa global keyboard hook radi
lakše manipulacije. U principu ja u svakom trenutku "znam" da li je rečnik "na ekranu"
ili nije, sem u slučaju Win+D/Win+M. Nije neki ozbiljan problem, ali me nervira.

P.S. Ako hoćeš da vidiš o čemu se radi skini rečnik sa:
http://www.antivari.com/setup_sr.exe
...a nažalost treba nešto i podesiti (codepage) jer VCL još uvek nije Unicode
(ovih dana nešto prerađujem sa 3rd party Unicode komponentama, ali otom potom):

ControlPanel/Regional and Language Options/Advanced/Combo: Serbian (Latin)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook29.05.2005. u 18:27 - pre 230 meseci
Citat:

Evo ti deo koda iz jedne moje aplikacije:

Hvala, pogledaću obavezno. Sad imam dosta materijala za ponedeljak ;)
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
212.200.125.*



Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook30.05.2005. u 11:05 - pre 230 meseci
Sjajno, vrlo korisno i prijatno za oko i koriscenje, a fascinira i broj reci/fraza (270.000 ako sam dobro brojao). Nadam se da ces moci da ga komercijalizujes, ali i da mi za 2 meseca nece iskociti ogroman MSG Box sa molbom tipa "Za dalje koriscenje programa uplatite xyz € ili secem struju" Nadam se da cu imati bar neki popust :)
Da li mogu da se posluzim srpskim delom recnika, posto sam pre par godina napravio program Korektor (C#) namenjen osobama koje se bave pripremom za stampu da se delom automatizuje postupak korekcije tekstova (automatsko ispravljanje permutacija, ispustenih i suvisnih slova,...). Medjutim, bio je ogranicen na nekih 200-250.000 reci koje sam "posudio" iz tekstova Dnevnog lista "Danas" dok sam im pravio Search engine za sajt.
Ako zelis mozda mogu da ti prepricam ideju i da se to nadje kao sastavni deo tvog recnika, posto nemam bas neke preterane namere da svoj program komercijalizujem - koristi mi za kucnu upotrebu ako iskoci "priprema" neke knjige/casopisa. Mozda bi to moglo da bude "Unique Selling Point" za tvoj proizvod.

P.S. laicki pitam da li imas problem sa Unicode zbog "formata baze" (koju ces iskreno se nadam zastititi od ovakvih kao sto sam ja)?
P.S.S. svaki pokusaj da se ovo smatra reklamom Recnika je besmislen:) Ovo su samo prvi dojmovi i pohvale i trudu i rezultatu truda. Svaka cast.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Hvatanje Minimize All (Win+D / Win+M) sa global hook30.05.2005. u 14:00 - pre 230 meseci
Citat:

[...] a fascinira i broj reci/fraza (270.000 ako sam dobro brojao).

Broj reči jeste veliki, ali mu je to i najslabija tačka. Nastao je krpljenjem i
spajanjem nekih baza reči koje sam ranije imao, tako da mi se baza reči ne sviđa,
ali mi je sasvim dovoljna za neku običnu prepisku na engleskom jeziku (strani
formumi i sl.)

Citat:

Nadam se da ces moci da ga komercijalizujes, [...]

U Srbiji :) ma nema teorije. Zapravo rečnik sam u prvom momentu radio u trenucima
dosade za samog sebe, jer stari dobri rečnik Davora Magdića nije imao "šđžčć" pa
mi je postao tesan. Onda su se javile neke kolege/koleginice s posla da im ga
instaliram, pa sam onda uradio install proceduru, i tako je krenulo...

Citat:

ali i da mi za 2 meseca nece iskociti ogroman MSG Box sa molbom tipa "Za dalje koriscenje programa uplatite xyz € ili secem struju" Nadam se da cu imati bar neki popust :)

Neće da izađe ništa jer nema zaštita. Kome treba neka ga skine ako ima s čime
(ja sam srećni vlasnik kablovskog interneta) i neka koristi...

Citat:

Da li mogu da se posluzim srpskim delom recnika, posto sam pre par godina
napravio program Korektor (C#) namenjen osobama koje se bave pripremom za
stampu da se delom automatizuje postupak korekcije tekstova (automatsko
ispravljanje permutacija, ispustenih i suvisnih slova,...). Medjutim, bio je ogranicen
na nekih 200-250.000 reci koje sam "posudio" iz tekstova Dnevnog lista "Danas"
dok sam im pravio Search engine za sajt.

Uzmi sve što ti život pruža :) A ti, ako budeš došao u posed nekog lepog, kulturnog
fonda reči - obavezno javi!

Citat:

Ako zelis mozda mogu da ti prepricam ideju i da se to nadje kao sastavni deo tvog recnika, posto nemam bas neke preterane namere da svoj program komercijalizujem - koristi mi za kucnu upotrebu ako iskoci "priprema" neke knjige/casopisa. Mozda bi to moglo da bude "Unique Selling Point" za tvoj proizvod.

Super, hoću da znam.
Trenutno ja polako dižem sidro sa VCL baziranih tvorevina i prelazim na .NET
(slušao sam neke kurseve među kojima i ASP.NET i zadovoljan sam konceptom),
pa da vidimo...

Citat:

P.S. laicki pitam da li imas problem sa Unicode zbog "formata baze"

Nije laički, i biće nekih problema... Ali sve ću to da prebacim da bude Unicode.
Trenutno VCL nije Unicode a u principu *ne volim* da koristim 3rd party
Unicode komponente za VCL ako nisam 100% siguran da su od nekog izvora od
poverenja. Danas im svakakvog softvera - pogledaj samo ovaj rečnik ;)

Citat:

(koju ces iskreno se nadam zastititi od ovakvih kao sto sam ja)?

Uža specijalnost mi i jesu zaštite, ali ovo neću da štitim. Napravio sam odavno (kao
nezavisan modul/klasu) ceo sisistem za licenciranje. Dakle u programu unos
licencnog ključa, sa druge strane generator tih licncnih ključeva. takođe u sklopu
sistema i alat za kriptovanje SVIH resursnih datoteka i dinamičko dekriptovanje, isl.

Vezivanje prema želji hardverski broj HD-a, NIC kartice, Particijia, a u beta fazi
su i hardlockovi, inače domaće proizvodnje.

Kakva paranoja, a?

Citat:

P.S.S. svaki pokusaj da se ovo smatra reklamom Recnika je besmislen:) Ovo su
samo prvi dojmovi i pohvale i trudu i rezultatu truda. Svaka cast.

Ne bi trebalo da bude reklala, pa stvar je BESPLATNA, a ja sam sve drugo samo
ne profiter od softvera.

Nedavno sam na ES-u i stavio rečnik za download i nije bilo reakcije (dobrih)
moderatora...

 
Odgovor na temu

[es] :: C/C++ programiranje :: Hvatanje Minimize All (Win+D / Win+M) sa global hook

[ Pregleda: 3559 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.