Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Slasher-K

#411
Las siguientes funciones nunca fallan y sirven una para saber si existe un archivo, y otra para saber si existe un directorio.


Function IsFile(ByVal Filename As String) As Boolean
  On Error Resume Next
  IsFile = (GetAttr(Filename) And Not vbDirectory)
End Function

Function IsDir(ByVal sDir As String) As Boolean
On Error Resume Next
If sDir = vbNullString Then Exit Function
IsDir = ((GetAttr(sDir) And vbDirectory) = vbDirectory)
End Function


Saludos.
#412
La siguiente función completa con los ceros que sea necesario a la izquiera de un número.


Function FillNum(Number As Long, Digits As Integer) As String
  If Len(CStr(Number)) > Digits Then Digits = Len(CStr(Number)) + 1
 
  FillNum = String$(Digits - Len(CStr(Number)), "0") & Number
End Function


Saludos.
#413
Existe una librería que se llama AVICAP32.DLL que contiene las funciones de multimedia del sistema y que, entre otras cosas, te permite controlar la webcam.

Esta librería tiene la función capCreateCaptureWindow que crea una ventana dentro de otra (ventana padre) para enviar las imágenes tomadas por la webcam y devuelve el controlador de ventana (hWnd).

Para implementarla es muy sencillo, se crea un PictureBox y luego se llama a esta función pasandole como argumento hWndParent (ventana padre) en controlador de ventana del PictureBox. Por ej:




Const RES_X = 680  'Resolución horizontal
Const RES_Y = 480  'Resolución vertical

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private hWndCap As Long

Private Sub Form_Load()
  'NOTA: picCapFrame es el nombre de un control PictureBox.
  '


  'Crea la ventana a la que se enviarán las imágenes de la cam.
  '
  hWndCap = capCreateCaptureWindow(vbNullString,0,0,0, RES_X, RES_Y, picCapFrame.hWnd, 0)
End Sub


Luego queda utilizar la función SendMessage para enviarle los mensajes a la ventana que creamos (hWndCap ). Hay varios mensajes predefinidos que controlan las acciones de la webcam:


Const WM_CAP_CONNECT = 1034     'Conecta el dispositivo de captura.
Const WM_CAP_DISCONNECT = 1035  'Desconecta el dispositivo de captura.
Const WM_CAP_GET_FRAME = 1084   'Obtiene un frame desde el dispositivo.
Const WM_CAP_COPY = 1054        'Copia el frame capturado con WM_CAP_GET_FRAME al portapapeles.


Sabiendo esto se puede ir obteniendo frame por frame y enviando los datos en tiempo real con el control WinSock o usando la API de winsock, pero claro esto conlleva un consumo muy grande de ancho de banda y si el programa se ejecuta en una pc con conexión de 56k va a ser muy alevoso :P.

Por último, antes de descargar el programa debe llamarse a DestroyWindow para liberar el controlador de ventana.

Con esos datos creo que ya se puede empezar a probar, de lo contrario remitirse a google ;D. Igualmente dejo el link de MSDN que es de donde saqué toda la referencia de las funciones.

Windows Multimedia

Saludos.
#414
No... lo deberías cambiar por el nombre de tu control WinSock.
#415
sckConexion es el nombre del socket, lo que hago es llamar al método Close para asegurar que cierre las conexiones y deje de escuchar.

Saludos.
#416
Intenta con la instrucción End en el evento Unload del formulario.


Private Sub Form_Unload(Cancel As Integer)
  Call sckConexion.Close
  End
End Sub


Saludos.
#417
Establece la propiedad Multiline a True.
#418
El problema con la propiedad Picture es que no se puede ajustar. Muchas veces es necesario cargar las imágenes en tiempo de ejecución y es necesario ajustarlas al tamaño actual del control.

En el caso que no quieras crear un control de usuario (aunque si creas tus propios botones podés hacer que se comporten como quieras) hay otro método mediante código para cambiar la imagen del botón y ajustarla. Existe el mensaje BM_SETIMAGE que se le puede enviar a los botones de comandos mediante la función SendMessage.

Lo bueno de este método es que antes de usar SendMessage hay que cargar la imagen con la función LoadImage y esta función te permite hacerle distintas modificaciones a la imagen, ya sea ponerla en escala de grises, cambiarle el tamaño, etc.

Saludos.
#419
No te olvides de llamar al método Close antes de cerrar la aplicación, sino el control se va a descargar pero la conexión va a seguir activa.

Además no estoy seguro pero si no me equivoco cuando el control se descarga llama a la función WSACleanup y si es así descarga la DLL de winsock de memoria, entonces esa es la razón por la que se cuelga.

Saludos.
#420
Directamente no se le puede agregar una imagen, lo que se puede hacer es crear un CommandButton personalizado. Dando vueltas por la web encontré un control y su código para que veas un buen ejemplo y puedas modificarlo.

http://www.freevbcode.com/ShowCode.Asp?ID=1871

Saludos.