Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
slamer
1

Программно делать ScreenShot рабочего стола.

06.10.2006, 17:04. Показов 4212. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, собс-но задача - нужно програмно делать ScreenShot рабочего стола на С#. Когдато еще на VC++ 6 делал такое через GDI и Win32Api. Не подскажите, нет ли в .NET FW каких то своих классов, которые могли бы помочь в решении данной задачи? В MSDN нашел некий класс - Screen но кажется это не то.
Спасибо!
PS: VisualStudio 2005, C#.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2006, 17:04
Ответы с готовыми решениями:

программно поменять картинку рабочего стола
Подскажите пожалуйста каким образом можно в винде программно поменять картинку рабочего стола. ...

Как программно нажать клавишу F5 для обновления рабочего стола из своего приложения?
Есть ли метод или функция эмулирующая нажатие клавиши F5 для обновления рабочего стола? Или...

Как программно сменить фон рабочего стола
Как программно сменить фон рабочего стола? P.S. Windows 7

Сканирование рабочего стола
Кто нить может подсказать код сканирования на файлы. Нужно сканировать рабочий стол, выявить кол-во...

5
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
06.10.2006, 17:52 2
Не знаю можно ли это сделать используя только классы из FCL, но поиск в Google дает только примеры с использованием WinAPI. Вот один из них - http://www.developerfusion.co.uk/show/4630/ http://www.developerfusion.co.uk/show/4630/.
0
slamer
09.10.2006, 21:43 3
Спасибо bazile, вобщем сделал как раньше, кстати ссылка очень помогла, т.к. раньше у меня только bmp'шки создавались.
slamer
09.10.2006, 22:04 4
Кстати, не подскажите как в C# получить хендлер активного окна?
В том примере в метод можно передать указатель на нужное окно, а как его получить?
Пробовал следующее -
C#
1
2
[DllImport("user32.dll")]
public static extern IntPtr GetActiveWindow();
и
C#
1
2
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
Ну и потом IntPtr hendler = Usr32.GetForegroundWindow(); Но чегото не то получается.
Как быть?
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
09.10.2006, 22:41 5
GetForegroundWindow должна работать без проблем. Тестовый пример у меня прекрасно получает HWND активного окна. Единственное, что судя по документации возможны моменты когда GetForegroundWindow возвращает NULL. В этом случае можно воспользоваться функцией <GetTopWindow>.
0
slamer
10.10.2006, 16:15 6
Точно, все работает, просто проблема в другом, я пытался получить активное окно через контекстное меню в системном трее, следовательно фокус с окна слетал и я получал кусок рабочего стола начиная с левого верхнего угла.
Теперь другая проблема ), я нахожу нужное окно (оно неактивное и закрыто другими) через
IntPtr handler = <FONT size=2>FindWindow(<FONT color=#0000ff size=2>string <FONT size=2>lpClassName (= null), <FONT color=#0000ff size=2>string<FONT size=2> lpWindowName<FONT size=2>), по названию (оно известно),
<FONT size=2>передаю его функции <FONT size=2>GetWindowDC(handler) для получения контекст девайса, далее как в примере по Вашей ссылке создается скриншот. В итоге я получаю картинку, правильных размеров (т.е. размер соответствует нужному) а вот на картинке куски верхних окон, которые попали в прямоугольник нужного окна.
<FONT size=2><FONT size=2>Не поясните где неточность? Неправильно определяется GetWindowDC(handler)?</P>
10.10.2006, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2006, 16:15
Помогаю со студенческими работами здесь

Скриншот рабочего стола
Как можно снять скриншот экрана в шарпе?

Изменение заставки рабочего стола
сабж, такое возможно?

Скриншот рабочего стола с курсором
Всем привет, облазил инет, ответа не нашел... Как сделть скриншот что бы курсор мыши не исчезал?)...

Изменение фона рабочего стола
Народ подскажите новичку как добраться до класса отвечающего за представление рабочего стола и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru