Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

c# Perfect-World screenshot

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 02.11.2010, 15:05   #1
 Разведчик
Аватар для chaozz
 
chaozz никому не известный тип
Регистрация: 30.10.2010
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Exclamation c# Perfect-World screenshot

Очень прошу помощи.
Кто поможет с кодом, необходимо чтобы при нажатии кнопки ( или через какое-то время ) делался скриншот окна Perfect World.
Заранее благодарен
  Ответить с цитированием
Старый 02.11.2010, 15:15   #2
обжигающий
 Главнокомандующий
Аватар для object
 
object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(
Регистрация: 17.11.2009
Сообщений: 1,062
Популярность: 64819
Золото Zhyk.Ru: 170
Сказал(а) спасибо: 1,456
Поблагодарили 2,062 раз(а) в 822 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

Зачем строить велосипед, если есть кнопка Принт-Скрин, и есть Paint.?
________________
Полные взломы игрулек VK:
Качок | Баббла Кадабра | Академия монстров | Клуб Искателей(?fix) | [HOT-NEW] Толстая птица онлайн
  Ответить с цитированием
Старый 02.11.2010, 15:36   #3
 Разведчик
Аватар для chaozz
 
chaozz никому не известный тип
Регистрация: 30.10.2010
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

может затем, что мне это для программы нужно? а не затем чтобы каждые 5 минут принскринить руками
  Ответить с цитированием
Старый 02.11.2010, 15:52   #4
обжигающий
 Главнокомандующий
Аватар для object
 
object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(object сломал счётчик популярности :(
Регистрация: 17.11.2009
Сообщений: 1,062
Популярность: 64819
Золото Zhyk.Ru: 170
Сказал(а) спасибо: 1,456
Поблагодарили 2,062 раз(а) в 822 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

Ну тогда может надо было написать нужно для программы? А то уважаемый, вы написали "необходимо чтобы при нажатии кнопки" . От сюда и вывод что легче нажать ПС, чем писать программу.
И на по следок надо тебе было в раздел программирования шуровать.
________________
Полные взломы игрулек VK:
Качок | Баббла Кадабра | Академия монстров | Клуб Искателей(?fix) | [HOT-NEW] Толстая птица онлайн
  Ответить с цитированием
Старый 02.11.2010, 16:04   #5
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

Цитата:
public static Bitmap PrintScreen(Screen screen)
{
Rectangle rect = screen.Bounds;

Bitmap bitmap = new Bitmap(
rect.Width, rect.Height);

using (Graphics bmpGraphics = Graphics.FromImage(bitmap))
bmpGraphics.CopyFromScreen(rect.X, rect.Y, 0, 0,
new Size(rect.Width, rect.Height));

return bitmap;
}

...

foreach (Screen screen in Screen.AllScreens)
{
Bitmap bitmap = PrintScreen(screen);
...
}

________________

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
Старый 02.11.2010, 16:07   #6
-= Элитный Мастер =-
 Главнокомандующий
Аватар для Kitsune
 
Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(Kitsune сломал счётчик популярности :(
Регистрация: 20.01.2010
Сообщений: 1,539
Популярность: 22780
Золото Zhyk.Ru: 600
Сказал(а) спасибо: 43
Поблагодарили 1,717 раз(а) в 538 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

Код:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace WindowScreenShot
{
    public static class ScreenCapture
    {
        public static Image CaptureScreen()
        {
            return CaptureWindow(User32.GetDesktopWindow());
        }

        public static Image CaptureWindow(IntPtr handle)
        {
            IntPtr hdcSrc = User32.GetWindowDC(handle);
            User32.RECT windowRect = new User32.RECT();
            User32.GetWindowRect(handle, ref windowRect);
            int width = windowRect.right - windowRect.left;
            int height = windowRect.bottom - windowRect.top;
            IntPtr hdcDest = GDI32.CreateCompatibleDC(hdcSrc);
            IntPtr hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc, width, height);
            IntPtr hOld = GDI32.SelectObject(hdcDest, hBitmap);
            GDI32.BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, GDI32.SRCCOPY);
            GDI32.SelectObject(hdcDest, hOld);
            GDI32.DeleteDC(hdcDest);
            User32.ReleaseDC(handle, hdcSrc);
            Image img = Image.FromHbitmap(hBitmap);
            GDI32.DeleteObject(hBitmap);
            return img;
        }

        public static void CaptureWindowToFile(IntPtr handle, string filename, ImageFormat format)
        {
            Image img = CaptureWindow(handle);
            img.Save(filename, format);
        }

        public static void CaptureScreenToFile(string filename, ImageFormat format)
        {
            Image img = CaptureScreen();
            img.Save(filename, format);
        }

        private class GDI32
        {
            public const int SRCCOPY = 0x00CC0020; // BitBlt dwRop parameter
            [DllImport("gdi32.dll")]
            public static extern bool BitBlt(IntPtr hObject, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hObjectSource,
                int nXSrc, int nYSrc, int dwRop);
            [DllImport("gdi32.dll")]
            public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC, int nWidth, int nHeight);
            [DllImport("gdi32.dll")]
            public static extern IntPtr CreateCompatibleDC(IntPtr hDC);
            [DllImport("gdi32.dll")]
            public static extern bool DeleteDC(IntPtr hDC);
            [DllImport("gdi32.dll")]
            public static extern bool DeleteObject(IntPtr hObject);
            [DllImport("gdi32.dll")]
            public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
        }

        private class User32
        {
            [StructLayout(LayoutKind.Sequential)]
            public struct RECT
            {
                public int left;
                public int top;
                public int right;
                public int bottom;
            }

            [DllImport("user32.dll")]
            public static extern IntPtr GetDesktopWindow();
            [DllImport("user32.dll")]
            public static extern IntPtr GetWindowDC(IntPtr hWnd);
            [DllImport("user32.dll")]
            public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
            [DllImport("user32.dll")]
            public static extern IntPtr GetWindowRect(IntPtr hWnd, ref RECT rect);
        }
    }
}
Использование:
Код:
Image screenshot = ScreenCapture.CaptureWindow(handle); // handle окна передаете, скрин которого хотите
Так же есть методы:
CaptureScreen - скриншот всего экрана
CaptureWindowToFile - скрнишот окна сохранить в файл
CaptureScreenToFile - скриншот экрана сохранить в файл
________________
Fireball - Быстрое снятие и загрузка скриншотов на хостинг.

Последний раз редактировалось Kitsune; 02.11.2010 в 16:09.
  Ответить с цитированием
Пользователь сказал cпасибо:
DnеpR (06.12.2010)
Старый 02.11.2010, 16:25   #7
 Разведчик
Аватар для chaozz
 
chaozz никому не известный тип
Регистрация: 30.10.2010
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: c# Perfect-World screenshot

Цитата:
Ну тогда может надо было написать нужно для программы? А то уважаемый, вы написали "необходимо чтобы при нажатии кнопки" . От сюда и вывод что легче нажать ПС, чем писать программу.
И на по следок надо тебе было в раздел программирования шуровать.

в названиее си шарп я не просто так поставил.

TBX1n,
J-Fobos,
спасибо большое! буду разбираться
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обменяю] Perfect World Serdrik Товары/услуги в Сети 0 24.09.2010 09:00

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 13:27.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net