slamer
|
|
1 | |
Программно делать ScreenShot рабочего стола.06.10.2006, 17:04. Показов 4212. Ответов 5
Метки нет (Все метки)
Добрый день, собс-но задача - нужно програмно делать ScreenShot рабочего стола на С#. Когдато еще на VC++ 6 делал такое через GDI и Win32Api. Не подскажите, нет ли в .NET FW каких то своих классов, которые могли бы помочь в решении данной задачи? В MSDN нашел некий класс - Screen но кажется это не то.
Спасибо! PS: VisualStudio 2005, C#. |
06.10.2006, 17:04 | |
Ответы с готовыми решениями:
5
программно поменять картинку рабочего стола Как программно нажать клавишу F5 для обновления рабочего стола из своего приложения? Как программно сменить фон рабочего стола Сканирование рабочего стола |
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# получить хендлер активного окна?
В том примере в метод можно передать указатель на нужное окно, а как его получить? Пробовал следующее -
Как быть? |
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 | |
10.10.2006, 16:15 | |
Помогаю со студенческими работами здесь
6
Скриншот рабочего стола Изменение заставки рабочего стола Скриншот рабочего стола с курсором Изменение фона рабочего стола Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |