ďťż

Ładny brzuch

Dzień Dobry.

Pisze program do monitorowani domu przez kamey internetowe podłączone do USB.
Wszystko opiera sie na TGGLite i DirectShow.

Niewiem jak mogę pobrać dostępne uządzenia i aktywować odpowiednie, które będzie przekazywać obraz do pliku.
(przez gg oczywiscie)
czyli np.
if MsgBody=lista then begin //procedura zapisująca użądzenia np. do memo //to tu nizej jest dobrze MFormat:= vararraycreate([0,1], varvariant); MFormat[0]:=0; MFormat[1]:='<n>'; GGLite1.ggsendmessage(false, MsgFrom, Memo.Lines.Text ,MFormat);

PS. to mój pierwszy post...:)



moze po prostu polecenie
"aktywuj 1"
czyli na podstawie zwyklego pos + copy mozesz zdobyc numer kamery do aktywowania :)
jak juz masz numerek to robisz tak jak w demku z DSPacka :)

Nom ale właśnie oto chodzi że ja niekumem demka z ds :|

{Katalog Delphi}\lib\DSPack\demos
Na pewno jest



Jest w demo, sam z tamtąd brałem ;). Urządzenia w demosie wczytują się do menu, niestety nieraz zdarza się że zaczynają się powtarzać.

mam dema i wiem jak działają, ale niewiem jak zrobić zeb przez gg aktywowac dane użądzenie.
chodzi oto ze wysle wiadomosc Kamera 1 i aktywuje mi pierwszą pozycje w tym menu.

Dobra już mam siedzialem 2 godziny :D

procedure TVideoForm.onselectDevice(sender: TObject); begin FilterGraph.ClearGraph; FilterGraph.Active := false; Filter.BaseFilter.Moniker := SysDev.GetMoniker(TMenuItem(Sender).tag); FilterGraph.Active := true; with FilterGraph as ICaptureGraphBuilder2 do begin CheckDSError(RenderStream(@PIN_CATEGORY_CAPTURE , nil, Filter as IBaseFilter, nil, ASFWriter as IbaseFilter)); CheckDSError(RenderStream(@PIN_CATEGORY_PREVIEW , nil, Filter as IBaseFilter, nil, VideoWindow as IbaseFilter)); end; FilterGraph.Play; end; procedure TVideoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin SysDev.Free; FilterGraph.ClearGraph; FilterGraph.Active := false; end; //button1.click zamiast form.create xD procedure TVideoForm.Button1Click(Sender: TObject); var Device: TMenuItem; i: integer; begin SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); if SysDev.CountFilters > 0 then for i := 0 to SysDev.CountFilters - 1 do begin Device := TMenuItem.Create(Devices); Device.Caption := SysDev.Filters[i].FriendlyName; Device.Tag := i; Device.onclick := onselectDevice; Devices.Add(Device); Device.Click; // tu problem, sam to dodałem:) end; end;

No więc problem taki.
gdy kamera jest jedna to jest ok
ale jezeli sa dwie to wybiera tylko jedna (raczej normalne)
ale jak zrobic ze jak klikne drugi przycisk to mi wybierze tą drugą itd.

juz mowilem - musisz parsowac (wielkie slowo) wiadomosci przychodzace

to to ja wiem, ale chodzi mi o procedure która zasymuluje wcisnięcie 2. kamery bo ta co jest wybiera tylko pierwszą.


to to ja wiem, ale chodzi mi o procedure która zasymuluje wcisnięcie 2. kamery bo ta co jest wybiera tylko pierwszą.

nie mam pod reka DSPacka ale w demku masz wybor kamery - zobacz jaki kod jest tam odpowiedzialny za wybranie danego urzadzenia :)

dobra już sibie podaruje, bede podglądał z jednej. :D w demku mam ale tam jest menu a nie przycisk ja potrzebuje procedury jak zzrobić zeby kliknąć odpowiednie to menu. Chodzilo o cos w stylu Button.Click. Ale trudno :)


dobra już sibie podaruje, bede podglądał z jednej. :D w demku mam ale tam jest menu a nie przycisk ja potrzebuje procedury jak zzrobić zeby kliknąć odpowiednie to menu. Chodzilo o cos w stylu Button.Click. Ale trudno :)

Czy to naprawde takie trudne zmodyfikowac troche kod? :faintthud:  rownie dobrze moze byc TList lub pochodne, tablica, cokolwiek ... 
To sa wlasnie efekty za duzej ilosci komponentow :rolleyes:

no nie trudno, juz sobie poradzilem :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •