- Ayrı bir başlık açtım, RTMP ile dolaylı yolla ilgili olduğundan @alyamus'un başlığında kirlilik olmasın istedim.
- Sistemde kurulu WebCam'leri aşağıdaki procedure ile alıyorum. bkz. bu linkteki projeyi indirip çalıştırarak da sonucu deneyebilirsiniz.
- Web üzerinde aradığınızda çok farklı şekillerde bu listeye ulaşılmış ama Delphi sürümünden sürümüne yeniden elden geçirilmesi gereken metodlar olduğundan onları beğenmedim. bkz.bir örneği burada.
- Verdiğim aşağıdaki örnek çalışıyorsa da bildirin -ne ala ki size özel bir örnek olsun-, çalışmıyorsa da bildirin ki sorunun nerede olduğunu beraber masaya yatıralım.

Teşekkürler.

Procedıure aşağıdaki şekilde :
Kod: Tümünü seç
procedure CihazListesi( slListe: TStrings );
Var
REG : TRegistry;
slGecici, slAlt1, slAlt2 : TStringList;
strFriendlyName : String;
i, j, k : Integer;
begin
slGecici := TStringList.Create;
slAlt1 := TStringList.Create;
slAlt2 := TStringList.Create;
REG := TRegistry.Create;
REG.RootKey := HKEY_LOCAL_MACHINE;
// AlternatifVID : HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\VID_5986&PID_0315&MI_00\7&2e7922d7&0&0000
// Audio : HKEY_CURRENT_USER\Software\Microsoft\ActiveMovie\devenum\{33D9A762-90C8-11D0-BD43-00A0C911CE86}\Mikrofon (Realtek High Definiti
if REG.OpenKey('\SYSTEM\ControlSet001\Control\DeviceClasses', False) then
begin
Reg.GetKeyNames( slGecici );
for i := 0 to slGecici.Count - 1 do
begin
if Reg.OpenKey('\SYSTEM\ControlSet001\Control\DeviceClasses\'+ slGecici[i], False ) then
begin
Reg.GetKeyNames( slAlt1 );
for j := 0 to slAlt1.Count - 1 do
begin
if Pos( 'VID', slAlt1[j] ) > 0 then
begin
if Reg.OpenKey('\SYSTEM\ControlSet001\Control\DeviceClasses\'+ slGecici[i] + '\' + slAlt1[j], False ) then
begin
Reg.GetKeyNames( slAlt2 );
for k := 0 to slAlt2.Count - 1 do
begin
if Reg.OpenKey('\SYSTEM\ControlSet001\Control\DeviceClasses\'+ slGecici[i] + '\' + slAlt1[j] + '\' + slAlt2[k], False ) then
begin
if Reg.OpenKey('\SYSTEM\ControlSet001\Control\DeviceClasses\'+ slGecici[i] + '\' + slAlt1[j] + '\' + slAlt2[k] + '\Device Parameters', False ) then
begin
strFriendlyName := Reg.ReadString( 'FriendlyName' );
if (strFriendlyName <> '') AND (slListe.IndexOf(strFriendlyName) < 0) then slListe.Add( strFriendlyName );
end;
end;
end;
end;
end;
end;
end;
end;
end;
Reg.Free;
slAlt2.Free;
slAlt1.Free;
slGecici.Free;
end;
Kod: Tümünü seç
procedure TForm1.FormShow(Sender: TObject);
begin
With ComboBox1 do begin
CihazListesi( Items );
Style := csDropDownList;
ItemIndex := 0;
end;
end;