zoukankan      html  css  js  c++  java
  • 简单的窗口内容自动填充

    /****************************************************************************
    设置剪贴板文本
    ****************************************************************************/
    bool SetClipBoardText(const TCHAR* text, HWND hWnd)
    {
        assert(hWnd);
        //打开剪贴板
        if (!::OpenClipboard(hWnd))
            return false;
        //empties the clipboard and frees handles to data in the clipboard
        if (!EmptyClipboard())
        {
            CloseClipboard();
            return false;
        }
        //get text length
        int len = _tcslen(text);
        //After SetClipboardData is called, the system owns the object identified by the hMem parameter. 
        //The application can read the data, but must not free the handle or leave it locked. If the 
        //hMem parameter identifies a memory object, the object must have been allocated using the 
        //GlobalAlloc function with the GMEM_MOVEABLE and GMEM_DDESHARE flags. 
        HANDLE hClip = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, (len + 1)*sizeof(TCHAR));
        if (hClip == NULL)
        {
            CloseClipboard();
            return false;
        }
        //locks a global memory object and returns a pointer to the first byte of the object's memory block
        TCHAR* pBuf = (TCHAR*)GlobalLock(hClip);
        if (pBuf == NULL)
        {
            GlobalFree(hClip);
            CloseClipboard();
            return false;
        }
    
        memcpy(pBuf, text, len*sizeof(TCHAR));
        pBuf[len] = NULL;
    
        GlobalUnlock(hClip);
        if (NULL == SetClipboardData(CF_TEXT, hClip))
        {
            GlobalFree(hClip);
            CloseClipboard();
            return false;
        }
    
        CloseClipboard();
        return true;
    }
    
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        //设置类名和窗口名
        HWND hWnd = ::FindWindow(L"ClassName",L"WindowName");
    
        if (NULL != hWnd)
        {
            ::SetForegroundWindow(hWnd);
            //RECT rc;
            //::GetWindowRect(hWnd, &rc);
            //::SetCursorPos(rc.left + 257, rc.top + 281);
            //257 + (281<<16)效果同上面三句,设置坐标,坐标可以由spy++获得
            ::SendMessage(hWnd, WM_LBUTTONDOWN,0, 257 + (281<<16));
            SetClipBoardText(_T("2433453"),hWnd);
            ::SendMessage(hWnd, WM_PASTE, 0, 0);
        }
        system("pause");
        return 0;
    }
  • 相关阅读:
    经常使用排序算法时间复杂度和空间复杂度简析
    Android触碰事件
    opencv矩阵运算(2)
    [ACM] HDU 1400 Mondriaan&#39;s Dream (状态压缩,长2宽1长方形铺满)
    指针知识梳理8- 指针的指针
    Git学习笔记(一)
    Object-c Associated Object
    YTUOJ-计算该日在本年中是第几天(用户自己定义类型)
    MYSQL源代码编译的变动
    手机端小问题整理
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121277.html
Copyright © 2011-2022 走看看