Autor Beitrag
Siluro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 74

Win XP Prof., Win XP64 Prof., Win 7 Prof.
Delphi 7 Ent., Delphi XE, Delphi XE5
BeitragVerfasst: Mi 02.11.11 01:16 
Hi Leute,

ich hab da ein kleines Problem mit dem ich mich jetzt schon den ganzen Abend rumärgere. Ich habe mir ein kleines Tool geschrieben mit dem ich das Bild meiner Webcam wiedergeben will. Unter Windows XP Prof. 64 funktioniert das auch super aber unter Windows 7 Prof 64 bekomme ich nur ein schwarzes Bild. Die Lampe der Webcam geht an und ich kann, sie wird also angesprochen. Mir gehen langsam die Ideen aus.

Hier nochmal mein Code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_DRIVER_DISCONNECT = WM_USER +  11;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_DLG_VIDEOSOURCE = WM_USER + 42;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  vhandle: THandle;

implementation

{$R *.dfm}

function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';

procedure TForm1.Button1Click(Sender: TObject);
begin
  if vhandle <= 0 then begin
    vhandle := capCreateCaptureWindow('Video',ws_child+ws_visible, 88180240, Form1.Handle, 1);
  end;
  SendMessage(vhandle, WM_CAP_DRIVER_CONNECT, 00);
  SendMessage(vhandle, WM_CAP_SET_PREVIEWRATE, 300);
  SendMessage(vhandle, WM_CAP_SET_OVERLAY, 10);
  SendMessage(vhandle, WM_CAP_SET_PREVIEW, 10);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SendMessage(vhandle, WM_CAP_SET_PREVIEW, 00);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  SendMessage(vhandle, WM_CAP_DRIVER_DISCONNECT, 00);
end;

end.


Schon mal vielen Dank für eure Hilfe.

Gruß

Björn
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 02.11.11 09:31 
Bei mir funktioniert der Code unter Win7 64 Bit ...

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Siluro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 74

Win XP Prof., Win XP64 Prof., Win 7 Prof.
Delphi 7 Ent., Delphi XE, Delphi XE5
BeitragVerfasst: Mi 02.11.11 10:55 
Hi Thomas,

erstmal danke fürs Feedback. Demnach müsste der Fehler außerhalb meines Programms liegen. Hat jemand ne Idee? Könnte ein fehlender Codec der Grund sein?

Gruß

Björn

Edit: Problem gelöst. Hab den Webcam-Treiber neu installiert und es lief. Ich war einfach zu sehr auf einen potenziellen Fehler in meinem Code fixiert. Danke nochmal an alle, die sich meinetwegen den Kopf zerbrochen haben.