1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[VB6][WebCam] Alterar o dispositivo de captura programaticamente.

Discussão em 'Programação' iniciada por Kayvlim, 24 de Setembro de 2006. (Respostas: 5; Visualizações: 4973)

  1. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    (espero ter feito bem o título...)

    Hello, pessoal! Tudo bem?

    A minha dúvida de hoje:

    Tenho uma webcam (emprestada). ÉÉÉÉÉÉÉÉÉÉÉÉÉÉ :-D :P agora, quero fazer um programa que tira fotos ao utilizador:
    [​IMG]
    (IMAGEM 1)

    À esquerda está a foto que a webcam tirou (a boneca de porcelana da minha mãe -.- ) e à direita está a lista de dispositivos. Só há um ^^'

    Agora, o problema:
    Ao ligar o driver, ele pede automaticamente para eu escolher um dispositivo de vídeo:
    [​IMG]
    (IMAGEM 2)
    Esta combo tem 3 opções. Eu não queria que esta janela aparecesse cada vez que o utilizador activasse o driver.

    Código do programa (está comentado em inglês porque eu fiz primeiro esta pergunta num fórum inglês de Visual Basic):

    'Create Capture window:
    mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 96, 96, Me.hwnd, 0)

    'Connect to webcam:

    DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0

    'DISConnect webcam:

    DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0

    'Get Current Frame
    SendMessage mCapHwnd, GET_FRAME, 0, 0
    'Copy Current Frame to ClipBoard
    SendMessage mCapHwnd, COPY, 0, 0
    'Put ClipBoard's Data to picOutput
    picOutput.Picture = Clipboard.GetData
    'Clear ClipBoard
    Clipboard.Clear

    Se precisarem, eu traduzo.
    O CONNECT 0,0 conecta o driver 0. O outro 0 não sei o que quer dizer; e penso que pode ser isso que eu preciso. Ou, ao espiar (Spy++) as mensagens do MSN, encontrei uma que é a WM_DEVICECHANGE (passa os valores 7,0). No entanto, ao fazer Post dessa mensagem com esses parâmetros para mCapHwnd não resultou.

    Voltando à questão, eu queria que o utilizador pudesse, na primeira execução, escolher o tal dispositivo de captura, mas a partir daí ele gravava a escolha, e não voltava a pedir.

    Para não restarem dúvidas, digo já que o MSN Messenger faz isso:
    [​IMG]
    (IMAGEM 3)
    Ou seja, a tal janela que me aparece, está quase "incluida" na janela do messenger; e no MSN eu escolhi uma vez o dispositivo e ele nunca mais mo pediu. É isso que eu quero :)

    Em suma, quero que a janela em IMAGEM 2 só apareça uma vez; ou se possível, quero fazer com que o meu programa consiga ter uma janela semelhante à IMAGEM 3.

    Penso que não fui suficientemente explícito. Se precisarem de explicações, perguntem que eu tento-vos responder ;)

    Obrigado pelo vosso tempo :)

    Cumprimentos [[[[[[[[[]]]]]]]]]
    angelofwisdom
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    * bump *
    Ninguém? :(

    (já foi postado há 6 dias... acho que posso fazer bump...)
     
  3. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    BUMP :|

    ninguém?????????????????
     
  4. inginheiiro

    inginheiiro Power Member

    driver.

    Yellow :)

    usa o WM_CAP_DRIVER_CONNECT

    Código:
    Public Const WM_USER As Short = &H400S
    Public Const WM_CAP_DRIVER_CONNECT As Integer = WM_USER + 10
    Public Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_USER + 11
    
    Function capDriverConnect(ByVal lwnd As Integer, ByVal i As Short) As Boolean 
      capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, i, 0) 
    End Function  
    
    Function capDriverDisconnect(ByVal lwnd As Integer) As Boolean 
      capDriverDisconnect = SendMessage(lwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0) 
    End Function 
    
    ....
    
    capDriverConnect mCapHwnd, IndiceDoDriver        ' tenta o valor 0 ... se não der tenta o 1
    
    ...
    ...
    
    capDriverDisconnect mCapHwnd

    Nota: Conselho! deixa o vb6 ... :)

    /ing
     
  5. dark_fenix

    dark_fenix Power Member

    isto da pa fazer o k?
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Mas que desenterranço! Vens buscar um tópico que tem quase um ano para perguntar o que dá para fazer com isto?


    O que eu tinha na altura (para além de uma webcam que já não tenho :x ) era um programa que conseguia usar a webcam.
    O meu problema era que não conseguia fazer com que o programa soubesse decidir qual dos dispositivos usar automaticamente. Portanto, em vez de aparecer aquela janela standard, aparecia uma do programa, e a escolha do utilizador seria gravada.

    Nunca soube corrigir isso, e como fiquei sem a webcam dias depois da resposta do inginheiiro, ainda não tive a oportunidade de testar o que ele disse :\
     

Partilhar esta Página