zoukankan      html  css  js  c++  java
  • vc监控鼠标键盘动作

    #include <windows.h>
    #include <stdio.h>

    LRESULT CALLBACK WinSunProc(
    HWND hwnd, // handle to window
    UINT uMsg, // message identifier
    WPARAM wParam, // first message parameter
    LPARAM lParam // second message parameter
    );

    int WINAPI WinMain(
    HINSTANCE hInstance, // handle to current instance
    HINSTANCE hPrevInstance, // handle to previous instance
    LPSTR lpCmdLine, // command line
    int nCmdShow // show state
    )
    {
    WNDCLASS wndcls;
    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
    wndcls.hIcon=LoadIcon(NULL,IDI_ASTERISK);
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WinSunProc;
    wndcls.lpszClassName="MouseKey";
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&wndcls);

    HWND hwnd;
    hwnd=CreateWindow("MouseKey","键盘鼠标监控",WS_OVERLAPPEDWINDOW,
    0,0,600,400,NULL,NULL,hInstance,NULL);

    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);

    MSG msg;
    while(GetMessage(&msg,NULL,0,0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return 0;
    }

    LRESULT CALLBACK WinSunProc(
    HWND hwnd, // handle to window
    UINT uMsg, // message identifier
    WPARAM wParam, // first message parameter
    LPARAM lParam // second message parameter
    )
    {
    PAINTSTRUCT ps ;
    static POINT pt ;
    TCHAR szBuffer[128];
    static int x, y ;

    switch(uMsg)
    {
    case WM_CHAR:
    char szChar[20];
    sprintf(szChar,"键盘输ASCII码为%d",wParam);
    MessageBox(hwnd,szChar,"键盘动作",0);
    break;
    case WM_LBUTTONDOWN:
    x = LOWORD( lParam ) ; //获取鼠标位置x坐标信息
    y = HIWORD( lParam ) ; //获取鼠标位置y坐标信息
    wsprintf( szBuffer, "鼠标左键被单击, 击中客户区坐标: (%i, %i)", x, y );
    MessageBox( hwnd, szBuffer, TEXT("鼠标动作"), MB_OK ) ;
    HDC hdcl;
    hdcl=GetDC(hwnd);
    ReleaseDC(hwnd,hdcl);
    break;
    case WM_RBUTTONDOWN:
    x = LOWORD( lParam ) ; //获取鼠标位置x坐标信息
    y = HIWORD( lParam ) ; //获取鼠标位置y坐标信息
    wsprintf( szBuffer, "鼠标右键被单击, 击中客户区坐标: (%i, %i)", x, y );
    MessageBox( hwnd, szBuffer, TEXT("鼠标动作"), MB_OK ) ;
    HDC hdcr;
    hdcr=GetDC(hwnd);
    ReleaseDC(hwnd,hdcr);
    break;
    case WM_MOUSEMOVE:
    GetCursorPos(&pt) ;
    InvalidateRect( hwnd, NULL, TRUE ) ;
    break;
    case WM_PAINT:
    HDC hDC;
    hDC=BeginPaint(hwnd,&ps);
    wsprintf( szBuffer, "屏幕坐标:(%i, %i)", pt.x, pt.y );
    TextOut( hDC, 10, 10, szBuffer, lstrlen(szBuffer) ) ;
    ScreenToClient( hwnd, &pt ) ; //将相对于屏幕的坐标转换为相对于窗口客户区的坐标
    wsprintf( szBuffer, "客户区坐标:(%i, %i)", pt.x, pt.y );
    TextOut( hDC, 10, 30, szBuffer, lstrlen(szBuffer) ) ;
    EndPaint( hwnd, &ps ) ;
    break;
    case WM_CLOSE:
    if(IDYES==MessageBox(hwnd,"是否真的结束?","鼠标键盘监控测试",MB_YESNO))
    {
    DestroyWindow(hwnd);
    }
    break;
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    default:
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }

  • 相关阅读:
    js保存图片至本地
    ArrayLike
    key的作用
    react Video event
    react中字符串换行
    react打包后找不到静态文件
    2020软件工程第三次作业
    003 Longest Substring Without Repeating Characters
    002addTwoNumbers
    001twoSum
  • 原文地址:https://www.cnblogs.com/vipwtl/p/4831617.html
Copyright © 2011-2022 走看看