Delphi и вебкамера.

программирование программы windows Delphi делфи

Нажимаю на кнопку, светодиод на камере загорается, но программа показывает черный экран. Почему?



var
Form1: TForm1;
hWndC : THandle;
Bt : BITMAPINFO;

implementation

{$R *.dfm}
const WM_CAP_START = WM_USER;
const WM_CAP_STOP = WM_CAP_START + 68;
const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const WM_CAP_SAVEDIB = WM_CAP_START + 25;
const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const WM_CAP_SEQUENCE = WM_CAP_START + 62;
const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44;
const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45;
const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5;

function capCreateCaptureWindowA(lpszWindowName: PCHAR;
dwStyle: longint;
x: integer;
y: integer;
nWidth: integer;
nHeight: integer;
ParentWin: HWND;
nId: integer): HWND;
stdcall external 'AVICAP32.DLL';



procedure TForm1.Button1Click(Sender: TObject);
begin
hWndC := capCreateCaptureWindowA('My Own Capture Window',
WS_CHILD or WS_VISIBLE,
0,
0,
Panel1.Width,
Panel1.Height,
Form1.Panel1.Handle,
0);

if SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0) <> 0 then
begin
//
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if hWndC <> 0 then SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;

end.
Ответы:
Сложно сказать
Может Timer.Enabled = False
Может в комнате слишком темно ;-)
Не пойму, что за код, ты пытаешься послать сообщение программе драйверу от веб камеры? "if SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0) <> 0 then
 begin
//
 end;"


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.