|
|
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Как сохранить экран в файл? Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 09:02 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
GetDC(0) - контекст экрана, дальше читаем Win API. Вот пример, для тех, кто не умеет пользоваться поиском http://gethelp.devx.com/techtips/pb_pro/10min/10min0899.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 09:54 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Под Windows Me всё работает, но под Windows 2000 нет. CreateCompatibleDC возвращает 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 15:52 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
авторCreateCompatibleDC возвращает 0. Если перебить определение функций руками, то у меня заработало... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2004, 18:18 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Если перебить определение функций руками, то у меня заработало... Когда набирал определение функции заново, то смотрел в MSDN, и поэтому набрал правильно. На самом деле там на странице ошибка, надо в определениях функций писать не uint, а ulong, т.к. HDC занимает несколько больше 16 бит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2004, 11:15 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, уже тоже об этом подумал. Всё заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 08:18 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Пытаюсь теперь сохранить изображение в файл. Пишу. Long ll_DC, ll_DestDC,ll_BMP,l1 Uint i1 st_bitmapinfo pbinf ll_DC = GetDC(0) ll_DestDC = CreateCompatibleDC(ll_DC) ll_BMP = CreateCompatibleBitmap(ll_DC, li_W, li_H ) -- Всё в порядке -- Далее пытаюсь получить информацию о картинке SetNull(l1) i1 = GetDIBits(ll_DC, ll_BMP,0,0, l1, pbinf, 0) i1 = 0 - т.е. структура не заполнилась. В чём ошибка? ... DeleteDC ReleaseDC Function Int GetDIBits(ULong hdc, ULong hbmp,Uint uStartScan, Uint cScanLines, Long lpvBits, ref ST_BITMAPINFO lpbi, UINT uUsage )Library "gdi32.dll" Windows 2000, Pb 9.0.1 Build 6533 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 13:08 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Вот тут и ошибка: umalovi1 = GetDIBits(ll_DC, ll_BMP,0,0, l1, pbinf, 0) MSDNint GetDIBits( HDC hdc, // handle to DC HBITMAP hbmp, // handle to bitmap UINT uStartScan, // first scan line to set UINT cScanLines, // number of scan lines to copy LPVOID lpvBits, // array for bitmap bits LPBITMAPINFO lpbi, // bitmap data buffer UINT uUsage // RGB or palette index ); --- С уважением, IKAR ikarhomecenter@narod.ru IkarHomeCenter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 13:20 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Нет, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 13:57 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Локшин МаркGetDC(0) - контекст экрана, дальше читаем Win API. Вот пример, для тех, кто не умеет пользоваться поиском http://gethelp.devx.com/techtips/pb_pro/10min/10min0899.asp А я получаю постоянно черный квадрат вместо рисунка. Прямо Малевич какой-то! :) Сделал все, как написано в ссылке + поменял uint на ulong. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 14:49 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Поменять нужно не только в GetDc, но и где используем его. Function Boolean BitBlt( Ulong hDestDC, int ix, int iy, int iw, int ih, Ulong hSourceDC, int idx, int idy, long oper ) Library "gdi32.dll" Function Ulong SelectObject(Ulong Hdc, Ulong Hobj) Library"gdi32.dll" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 15:49 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
umalovПоменять нужно не только в GetDc, но и где используем его. Function Boolean BitBlt( Ulong hDestDC, int ix, int iy, int iw, int ih, Ulong hSourceDC, int idx, int idy, long oper ) Library "gdi32.dll" Function Ulong SelectObject(Ulong Hdc, Ulong Hobj) Library"gdi32.dll" Спасибо. Работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2004, 16:16 |
|
||
|
Как сохранить экран в файл?
|
|||
|---|---|---|---|
|
#18+
Наконец добрался до сохранения файла. Пишу далее lpBits = GlobalAlloc(0,pbinf.bmiheader.biSizeImage) l1 = GetDIBits(ll_DestDC, ll_BMP,0,li_H,lpBits, pbinf, 0) //Create file pszFile = '1.bmp' SetNull(s33) SetNull(iii1) // Создадим файл hf = CreateFileA(pszFile, 2147483648 + 1073741824, 0,s33, 2, 128, iii1); // Заголовок файла st_BITMAPFILEHEADER hdr.bfType = 19778 hdr.bfSize = 14 + pbinf.bmiheader.biSize + pbinf.bmiheader.biClrUsed * 4 + pbinf.bmiheader.biSizeImage hdr.bfReserved1 = 0; hdr.bfReserved2 = 0; hdr.bfOffBits = 14 + pbinf.bmiheader.biSize + pbinf.bmiheader.biClrUsed * 4 // SetNull(s33) b2 = WriteFile(hf, hdr,14, l32,s33) // Заголовок файла st_BITMAPINFOHEADER pbih = pbinf.bmiheader b2 = WriteFile(hf, pbih,40, l32,s33) // dwTotal = pbih.biSizeImage cb = pbih.biSizeImage; hp = lpBits; do while (cb > 32765) //32765 b2 = WriteFile(hf,hp, 32765,l32,s33) cb = cb - 32765; hp = hp + 32765; loop b2 = WriteFile(hf, hp, cb,l32,s33) //Закроем файл и освободим память CloseHandle(hf) GlobalFree(lpBits) В файле только шум. Понимаю, что дело с записью данных, конкретно, наверное, с указателем на память с картинкой. Т.к. при просмотре bmp файла вижу, что там вовсе не то - иногда попадает даже код программы. Никак не могу разобраться. Кто знает - помогите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2004, 11:21 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32685482&tid=1338893]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 263ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...