Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 9

Работа со скриншотом экрана в clipboard

11.11.2017, 09:50. Показов 2839. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, вопрос следующий:
нужно узнать значение в RGB палитре заданного пикселя в скриншоте экрана, сделанного посредством нажатия print screen.
Задачу решал так:

сохранял содержимое в файл на диск

Visual Basic
1
SavePicture Clipboard.GetData(vbCFBitmap), "c:\1.bmp"
потом открывал и уже выдергивал значение пикселя в переменную s по координатам (x,y) для разрешения 1600х900

Visual Basic
1
2
3
Open "c:\1.bmp" For Binary As 1
Get #1, ((900- y - 1) * 1600+ (x + 1)) * 3 + 55 , s
Close #1
Но каждый раз записывать и считывать из файла долго, нельзя ли как-нибудь выдергивать значение из RGB палитры напрямую из clipboard'a?

Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2017, 09:50
Ответы с готовыми решениями:

Класс Clipboard - ошибка «Requested Clipboard operation did not succeed»
Пытаюсь скопировать текст программно таким образом: Clipboard.SetText("something") Вместо выполнения поручения, он напрочь отказывается...

Работа с clipboard
Добрый день, пытаясь сделать программу появилась проблема. Хочу чтобы при нажатии на кнопку(CopyButton) в буфер копировался текст из...

Работа с Clipboard
Здравствуйте! Заметил, что если скопировать картинку (клик ПКМ->Копировать), в буфер обмена помещается строка с адресом этой картинки. Хочу...

25
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 9
13.11.2017, 22:25  [ТС]
Студворк — интернет-сервис помощи студентам
Мне нужен произвольный пиксель, один, поэтому метод The trick не совсем подошел(при увеличении разрешения или подключении монитора увеличивается и массив, и время падает.
Да, я засунул его в цикл.
Насколько я понял, идет постоянное создание, это и вызывает проблему.
Я не владею синтаксисом, поэтому подскажите пожалуйста как конкретно написать Ваш метод.
Спасибо.
0
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
13.11.2017, 23:12
Visual Basic
1
2
3
4
5
6
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
 
Private Sub Timer1_Timer()
    BackColor = GetPixel(GetDC(0), 10, 110)   
End Sub
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
14.11.2017, 09:33
SoftIce,
After painting with a common DC, the ReleaseDC function must be called to release the DC. Class and private DCs do not have to be released. ReleaseDC must be called from the same thread that called GetDC. The number of DCs is limited only by available memory.
1
es geht mir gut
 Аватар для SoftIce
11275 / 4761 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
14.11.2017, 10:27
Лучший ответ Сообщение было отмечено Gaskon как решение

Решение

Никогда такого не было, и вот опять! (с)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
'Private Declare Function GetDesktopWindow Lib "user32" () As Long
Dim DC As Long
 
Private Sub Form_Load()
   'DC = GetDesktopWindow
    DC = GetDC(0)
End Sub
 
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Call ReleaseDC(0, DC)
End Sub
 
Private Sub Timer1_Timer()
    BackColor = GetPixel(DC, 10, 110) 'это в цикл, у меня в таймере
End Sub
Пиксель-то хоть не надо освобождать ?
1
14.11.2017, 15:47

Не по теме:

fever brain, ты Правила читал ? Пункт 5.10

Запрещено накручивать репутацию и другую статистику пользователя любым способом, включая создание пользователей-клонов, а также склонять (агитировать) других пользователей к ее изменению.

0
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 9
14.11.2017, 19:13  [ТС]
Благодарю, это именно то, что надо.
Я, правда, не совсем понимаю принцип работы GetDC. Видимо мне надо и GetDC заводить в цикл(и Realeas соответственно)?
Таймер не использую по причине некорректной работы системного времени(видимо батареечка на BIOS подсела).
И еще, если я выполняю GetPixel в модуле, мне почему-то опять необходимо вызывать GetDC уже в модуле, иначе выдает другое значение RGB, это специфика этой функции? Я ее прописал как Public в объявлении тоже в модуле.
Не сильно ли это будет подтормаживать, если в модуль программа лезет каждый проход цикла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2017, 19:13

Работа с классом Clipboard
Ребят, у меня такая проблема: недавно решил написать программку, которая в частности, работает с буфером обмена: помещает в него список...

Работа с Буфером обмена (Clipboard)
Всем привет! Ребята, в простом не могу найти решение. Подскажите, почему не работает. Мне нужно скопировать в "Буфер...

Работа с Clipboard. Как убрать мерцающую рамку?
При работе (Excel)макроса, внутри создаваемого документа происходит запись в Clipboard. При просмотре документа последняя скопированная в...

Ошибка при работе с Clipboard: "Сannot open clipboard. Отказано в доступе."
Хотел написать программу для автоматической замены текста в буфере обмена, но при обращении к буферу получаю ошибку "Сannot open...

Работа с разрешением экрана
Здравствуйте! Столкнулась с такой проблемой. Нужно создать cmd-файл для изменения разрешения экрана, и записать параметры текущего...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru