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;
    }
  • 相关阅读:
    JAVA中字符串比较equals()和equalsIgnoreCase()的区别
    idea无法调试的解决方案.
    idea如何把快捷键改成eclipse的快捷键
    idea安装和破解教程
    在idea中maven项目 jar包下载不完整解决办法
    Spring boot入门级项目(超详细简易版)
    123123
    ww
    无限极操作
    无限极菜单1
  • 原文地址:https://www.cnblogs.com/ggzone/p/10121277.html
Copyright © 2011-2022 走看看