Autor Beitrag
dragi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Di 29.11.05 00:48 
Hallo,

ich komme eigentlich aus dem Delphi Lager aber möchte mich auch mit C# auseinandersetzen. Nach dem ich ein wenig mit der Sprache gespielt habe komme ich zu meiner ersten Ernsten Anwendung...ich möchte meine Webcam mit C# ansteuern. Unter Delphi geht das ziemlich einfach per API. Das gleiche möchte ich jetzt auch unter C# realisieren, dich wie nutze ich dort die Api? Ich muss doch dazu die AviCap32.dll einbinden doch da ist schon der erste Haken...mein SharpDevelop kennt kein DLLImport oder ich mache etwas falsch. Kann mir jemand zeigen wie ich DLLImport benutze und wo das aufgerufen werden muss? Ich muss ja erst diese DLL einbinden um dann die Konstanten deklarieren zu können, oder?

In delphi sieht das so aus:

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:
unit frm_WCMain;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Animate1: TAnimate;
    procedure Button1Click(Sender: TObject);
  private
    FCapWnd: HWnd;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

  WM_CAP_DLG_VIDEOFORMAT          = WM_USER+41;   
  WM_CAP_DLG_VIDEOSOURCE          = WM_USER+42;   
  WM_CAP_DLG_VIDEOCOMPRESSION     = WM_USER+46;   

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);
var handle:THandle;
begin
  handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0640480, Animate1.Handle, 1);
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 00);
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 300);
  sendMessage(handle, WM_CAP_SET_OVERLAY, 10);
  SendMessage(handle, wm_cap_set_preview, 10);
  Application.ProcessMessages;
end;

end.


Aber wie nutzt man API in C#? Auch wenn es sicherlich nciht der Sinn von C# ist die API zu nutzen wüsste ich keinen anderen Weg.

Gruß

dragi

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt