From a1728bef4efb06742b792f9f5b4aab48d1d7bb48 Mon Sep 17 00:00:00 2001 From: Sergey Bolhovskoy Date: Fri, 18 Mar 2016 08:39:23 +0000 Subject: =?UTF-8?q?VKontakte:=20add=20=E2=80=98Open=20in=20browser?= =?UTF-8?q?=E2=80=99=20button=20to=20captcha=20form=20add=20hidden=20optio?= =?UTF-8?q?n=20=E2=80=98AlwaysOpenCaptchaInBrowser=E2=80=99=20(BYTE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.miranda-ng.org/main/trunk@16495 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/VKontakte/src/misc.cpp | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'protocols/VKontakte/src/misc.cpp') diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp index b9d33b2328..d2731d64e7 100644 --- a/protocols/VKontakte/src/misc.cpp +++ b/protocols/VKontakte/src/misc.cpp @@ -1273,4 +1273,48 @@ CMString CVkProto::RemoveBBC(CMString& tszSrc) } return tszRes; +} + +CMString CVkProto::SaveImage(HBITMAP hBitmap) +{ + TCHAR tszTempDir[MAX_PATH]; + + if (!GetEnvironmentVariable(_T("TEMP"), tszTempDir, MAX_PATH)) + return CMString(); + + CMString tszImgFileName(FORMAT, _T("%s\\miranda_captcha.png"), tszTempDir); + + IMGSRVC_INFO isi = { sizeof(isi) }; + isi.tszName = mir_tstrdup(tszImgFileName); + isi.hbm = hBitmap; + isi.dwMask = IMGI_HBITMAP; + isi.fif = FREE_IMAGE_FORMAT::FIF_PNG; + + if (CallService(MS_IMG_SAVE, (WPARAM)&isi, IMGL_TCHAR)) + return tszImgFileName; + + return CMString(); +} + +void CVkProto::ShowCaptchaInBrowser(HBITMAP hBitmap) +{ + CMString tszFHTML = SaveImage(hBitmap); + + if (tszFHTML.IsEmpty()) + return; + + tszFHTML.Replace(_T(".png"), _T(".html")); + + if (!(GetFileAttributes(tszFHTML) < 0xFFFFFFF)) { + FILE *pFile = _tfopen(tszFHTML, _T("w")); + if (pFile == NULL) + return; + + CMStringA szHTML(""); + fwrite(szHTML, 1, szHTML.GetLength(), pFile); + fclose(pFile); + } + + tszFHTML = _T("file://") + tszFHTML; + Utils_OpenUrlT(tszFHTML); } \ No newline at end of file -- cgit v1.2.3