Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HRESULT SaveIcon(HICON hIcon, const char* path)
- {
- // Create the IPicture intrface
- PICTDESC desc = { sizeof(PICTDESC) };
- desc.picType = PICTYPE_ICON;
- desc.icon.hicon = hIcon;
- IPicture* pPicture = 0;
- HRESULT hr = OleCreatePictureIndirect(&desc, IID_IPicture, FALSE, (void**)&pPicture);
- if (FAILED(hr)) return hr;
- // Create a stream and save the image
- IStream* pStream = 0;
- CreateStreamOnHGlobal(0, TRUE, &pStream);
- LONG cbSize = 0;
- hr = pPicture->SaveAsFile(pStream, TRUE, &cbSize);
- // Write the stream content to the file
- if (!FAILED(hr))
- {
- HGLOBAL hBuf = 0;
- GetHGlobalFromStream(pStream, &hBuf);
- void* buffer = GlobalLock(hBuf);
- HANDLE hFile = CreateFileA(path, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
- if (!hFile)
- {
- hr = HRESULT_FROM_WIN32(GetLastError());
- }
- else
- {
- DWORD written = 0;
- WriteFile(hFile, buffer, cbSize, &written, 0);
- CloseHandle(hFile);
- }
- GlobalUnlock(buffer);
- }
- // Cleanup
- pStream->Release();
- pPicture->Release();
- return hr;
- }
- //Capture cursor.
- CURSORINFO getHCursor()
- {
- CURSORINFO cursorInfo;
- cursorInfo.cbSize = sizeof(CURSORINFO);
- if (GetCursorInfo(&cursorInfo) == 0)
- {
- MessageBox(NULL, _T("Exception : GetCursorInfo creation failed"),_T("message"),MB_OK|MB_SYSTEMMODAL);
- cursorInfo.hCursor = NULL;
- return cursorInfo;
- }
- return cursorInfo;
- }
- //Main Call
- int _tmain(int argc, _TCHAR* argv[])
- {
- while (true)
- {
- CURSORINFO CursorInfo = getHCursor();
- if (CursorInfo.hCursor == NULL)
- {
- ::Sleep(MinSleep);
- continue;
- }
- SaveIcon((HICON)CursorInfo.hCursor, "C:\Users\Desktop\myicon.ico");
- Sleep(MaxSleep);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement