Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125

Буфер обмена, перехватывается микрософтовскими программами

12.03.2013, 12:54. Показов 4622. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет форумчане, суть вопроса состоит в том, что моя программа, перехватывает картинку с веб камеры и через буфер(не особо понимаю как, пытаюсь разобратся) в общем буфер обмена постоянно забивается картинками с веб камеры, но если открыта микрософт офисовская прога, то прога начинает матерится, что нет доступа к буферу обмена, как обойти эту проблемку? Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
pCBL = Clipboard ();
 hWndC=capCreateCaptureWindow("",WS_CHILD,  this->Left, this->Top, Image1->Width, Image1->Height, this->Handle, 11011);capDriverConnect (hWndC,0);
 Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
                capGrabFrame(hWndC);
            if(capEditCopy(hWndC))
    Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCBL->GetAsHandle(CF_BITMAP),0);
                Image1->Canvas->TextOutA(10,10,Now());
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2013, 12:54
Ответы с готовыми решениями:

Программа для обмена данными между другим программами
Не знаю в какую часть форума написать, изучаю c# поэтому тут. Надо сделать небольшую программу для экспорт данных из 1С, преобразование и...

Реализация ssl для обмена между программами на одном устройстве
Вопрос как создать защищенный сеанс используя протокол ssl между двумя программами. Программы обмениваются сообщениями и запущены на одном...

Буфер обмена
Здравствуйте, мне срочно надо добавить в одну программу поддержку работы с буфером обмена. Я про него ничего не знаю! Не могли бы вы дать...

36
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.03.2013, 13:39
Цитата Сообщение от Graf_N Посмотреть сообщение
как обойти эту проблемку?
Не использовать буфер обмена... чЁ иначе сделать нельзя ? зачем буфер забивать ?
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 13:42  [ТС]
Avazart, Буду рад если предложишь альтернативную идею, дабы поих теоретических/практических знаний пока не хватает.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 13:50
Цитата Сообщение от Avazart Посмотреть сообщение
Не использовать буфер обмена
Это привильно, конечно, но как?

Надо вместо capEditCopy использовать что-то другое...

в хелпе нашел, что можно поставить колбек capSetCallbackOnFrame
может в эту сторону смотреть?

Я, к сожелению, не могу попробовать, нет веб-камеры
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.03.2013, 13:51
Ну а я знаю что требуется от твоей проги ?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 13:53
из хелпа
capSetCallbackOnFrame
The capSetCallbackOnFrame macro sets a preview callback function in the application. AVICap calls this procedure when the capture window captures preview frames. You can use this macro or explicitly call the WM_CAP_SET_CALLBACK_FRAME message.

BOOL capSetCallbackOnFrame(
hwnd,
fpProc
);
Parameters

hwnd

Handle to a capture window.

fpProc

Pointer to the preview callback function. Specify NULL for this parameter to disable a previously installed callback function.


The following example is a simple frame callback function. Register this callback by using the capSetCallbackOnFrame macro.

// FrameCallbackProc: frame callback function
// hWnd: capture window handle
// lpVHdr: pointer to struct containing captured
// frame information
//
LRESULT PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
if (!hWnd)
return FALSE;

wsprintf(gachBuffer, "Preview frame# %ld ", gdwFrameNum++);
SetWindowText(hWnd, (LPSTR)gachBuffer);
return (LRESULT) TRUE ;
}
Незнаю оно, не оно
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 13:55  [ТС]
Avazart, постоянно перехватывать изображение с веб камеры и передавать его в имейдж1, вуаля) При этом реализовать это не через буфер обмена Оо

Добавлено через 1 минуту
_Dimon_, ммм) Я в английском плохо шарю...
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 14:12
а еще есть capSetCallbackOnVideoStream

Добавлено через 2 минуты
ею регистрируешь callback ф-цию вида

C++
1
2
3
4
LRESULT CALLBACK capVideoStreamCallback(
  HWND hWnd,         
  LPVIDEOHDR lpVHdr  
);
Добавлено через 1 минуту

Не по теме:

блин, самому интересно стало, а камеру сеструхе одолжил ((



Добавлено через 9 минут
там, кстати, таймера ненадо уже, имхо
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:13  [ТС]
_Dimon_, мм?) Ладно, как время освободится попробую. Отпишусь, как что!
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.03.2013, 14:18
Проверить не могу у меня capDriverConnect (hWndC,0); возвращает ошибку...
Хотя встроенная камера работает в скайпе...
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 14:21
должно получится как-то так

C++
1
2
3
4
5
6
7
8
9
LPVIDEOHDR lpVHdr;
 
capSetCallbackOnVideoStream(Image1->Handle, capVideoStreamCallback1);
 
LRESULT CALLBACK capVideoStreamCallback1(Image1->Handle, lpVHdr)
{        
  //LPVIDEOHDR lpVHdr  -  судя по описанию, в структуре lpVHdr должна бить инфа про твои кадры
  и их тут можно обработать
}

вобщем почитай SDK
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:26  [ТС]
Avazart, Оо а должно?)

Добавлено через 4 минуты
_Dimon_,
[C++ Error] Unit1.cpp(41): E2316 'Handle' is not a member of 'TImage'
ругается на:
capSetCallbackOnVideoStream(Image1->Handle, capVideoStreamCallback1);
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 14:30
C++
1
this->Handle
это тот самый хендл что в твоем примере

но я надеюсь ты понял, что это только замена capEditCopy ?
все что до него должно остатся
1
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:32  [ТС]
_Dimon_, щас, мозгом поварю, просто несколько задач в голове)
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 14:34
и раз таймера не будет, и раз пошла такая пянка, то может стоит заменить capGrabFrame на capGrabFrameNoStop (там только название сменить), но не уверен
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:37  [ТС]
_Dimon_, Короче смотри, теперь он ругается на [C++ Error] Unit1.cpp(31): E2108 Improper use of typedef 'LRESULT'
LRESULT CALLBACK capVideoStreamCallback1(this->Handle, lpVHdr)
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.03.2013, 14:48
тут вроде есть пример с исходниками
https://sites.google.com/site/... -using-vfw

Добавлено через 5 минут
Запускаю от туда exe-ник работает!
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:55  [ТС]
Avazart, К сожалению это не билдер если я правильно понимаю.... Хотя покапатся стоит...
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
12.03.2013, 14:56
>>Короче смотри, теперь он ругается на [C++ Error] Unit1.cpp(31): E2108 Improper use of typedef 'LRESULT'

Ну приведи тип
0
26 / 26 / 0
Регистрация: 30.12.2012
Сообщений: 125
12.03.2013, 14:58  [ТС]
_Dimon_, Почему нельзя примером?... Ладно пошел я домой, там думать буду!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2013, 14:58
Помогаю со студенческими работами здесь

Буфер обмена
Привет всем! Возникла такая проблема с буфером обмена, которая заключается в том, что при копировании элементов (неважно сколько) они не...

Буфер обмена
Добрый вечер форумчане. Выручайте. Вот код Delphi 7: procedure TSpisok.BitBtn1Click(Sender: TObject); var Path : String; ...

Буфер обмена
Как сделать так что бы программа постоянно проверяла буфер обмена и содержимое буфера добавляла в Memo1. Додумался только до : ...

Буфер обмена.
В паскале будер обмена как представлен? Если он представлен файлом то можно ли его связать с переменной? Если он представлен в виде...

Буфер обмена
Не могу понять как правильно написать скрипт. Задача скрипта при поступление информации в буфер обмена скрипт ищет совпадение в текстовом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru