elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9
1  Programación / .NET (C#, VB.NET, ASP) / Uso de Tapi en: 12 Septiembre 2011, 16:11 pm
Hola a todos.

Estoy con la centralita Avaya y necesito capturar las llamadas entrantes.

Lo primero me he declarado unas variables a nivel de clase:
Código
  1.    Public CallerID As String
  2.    Private Const MediaAudio As Integer = 8
  3.    Private Const MediaModem As Integer = 16
  4.    Private Const MediaFax As Integer = 32
  5.    Private Const MediaVideo As Integer = 32768
  6.    Private WithEvents oTAPI As TAPI3Lib.TAPI '
  7.    Private oAddress As ITAddress
  8.    Private RegCookie As Integer
  9.  

Lo primero es realizar la conexión con la centralita:
Código
  1. Try
  2.  
  3.            Dim m_TAPI As New TAPIClass
  4.  
  5.            Dim MediaTypes As Integer
  6.            m_TAPI.Initialize()
  7.            oTAPI = m_TAPI
  8.  
  9.            m_TAPI = Nothing
  10.  
  11.            Dim AddressCollection As ITCollection = oTAPI.Addresses()
  12.  
  13.            For Each Address As ITAddress In AddressCollection
  14.  
  15.                If Address.State = ADDRESS_STATE.AS_INSERVICE Then
  16.  
  17.                    Dim MediaSupport As ITMediaSupport = Address
  18.  
  19.                    MediaTypes = MediaSupport.MediaTypes
  20.  
  21.                    MediaSupport = Nothing
  22.  
  23.                    If MediaTypes And MediaModem = MediaModem Then
  24.  
  25.                        If MediaTypes And MediaAudio = MediaAudio Then
  26.  
  27.                            oAddress = Address
  28.  
  29.                            MsgBox(oAddress.AddressName)
  30.  
  31.                            Exit For
  32.                        End If
  33.                    End If
  34.  
  35.                End If
  36.  
  37.            Next Address
  38.  
  39.            If Not oAddress Is Nothing Then
  40.  
  41.                RegCookie = oTAPI.RegisterCallNotifications(oAddress, True, False, MediaTypes, 1)
  42.                oTAPI.EventFilter = (TAPI_EVENT.TE_CALLNOTIFICATION Or TAPI_EVENT.TE_CALLSTATE Or TAPI_EVENT.TE_CALLINFOCHANGE)
  43.            Else
  44.                MsgBox("No se encontró ninguna extensión.")
  45.            End If
  46.  
  47.        Catch ex As Exception
  48.            MsgBox("Error TAPI:" & vbCrLf & ex.Message, MsgBoxStyle.Critical)
  49.        End Try
  50.  


El siguiente código es para capturar los eventos.
Código
  1.  
  2. Private Sub oTAPI_Event(ByVal TapiEvent As TAPI3Lib.TAPI_EVENT, ByVal pEvent As Object) Handles oTAPI.Event
  3.  
  4.        Dim thAsyncCall As System.Threading.Thread
  5.  
  6.        Select Case TapiEvent
  7.            Case TAPI_EVENT.TE_CALLNOTIFICATION
  8.                thAsyncCall = New Threading.Thread(AddressOf CallNotificationEvent)
  9.                CallNotificationObject = CType(pEvent, ITCallNotificationEvent)
  10.                thAsyncCall.Start()
  11.            Case TAPI_EVENT.TE_CALLSTATE
  12.                thAsyncCall = New Threading.Thread(AddressOf CallStateEvent)
  13.                CallStateObject = CType(pEvent, ITCallStateEvent)
  14.                thAsyncCall.Start()
  15.            Case TAPI_EVENT.TE_CALLINFOCHANGE
  16.                thAsyncCall = New Threading.Thread(AddressOf CallInfoEvent)
  17.                CallInfoObject = CType(pEvent, ITCallInfoChangeEvent)
  18.                thAsyncCall.Start()
  19.        End Select
  20.  
  21.    End Sub
  22.  
  23. Private CallNotificationObject As ITCallNotificationEvent
  24.  
  25.    Private Sub CallNotificationEvent()
  26.        Select Case CallNotificationObject.Event
  27.            Case CALL_NOTIFICATION_EVENT.CNE_MONITOR
  28.            Case CALL_NOTIFICATION_EVENT.CNE_OWNER
  29.        End Select
  30.    End Sub
  31.  
  32.    Private CallStateObject As ITCallStateEvent
  33.  
  34.    Private Sub CallStateEvent()
  35.        Select Case CallStateObject.State
  36.            Case CALL_STATE.CS_IDLE
  37.            Case CALL_STATE.CS_INPROGRESS
  38.            Case CALL_STATE.CS_OFFERING
  39.            Case CALL_STATE.CS_CONNECTED
  40.  
  41.               Form2.ShowDialog()
  42.  
  43.            Case CALL_STATE.CS_QUEUED
  44.            Case CALL_STATE.CS_HOLD
  45.            Case CALL_STATE.CS_DISCONNECTED
  46.  
  47.  
  48.        End Select
  49.    End Sub
  50.  
  51.    Private CallInfoObject As ITCallInfoChangeEvent
  52.  
  53.    Private Sub CallInfoEvent()
  54.  
  55.        CallerID = CallInfoObject.Call.CallInfoString(CALLINFO_STRING.CIS_CALLERIDNUMBER) 'CIS_CALLERIDNAME)
  56.  
  57.    End Sub
  58.  

Tal como está el codigo me funciona abriendome el Form2 (eso si, tengo que ponerlo como Showdialog porque con el Show no lo veo y en callinfoevent tengo el numero entrante.

Mi problema está que solamente está funcionando con multihilo y al modificar el código de la siguiente manera  no me funciona.

Código
  1. Private Sub oTAPI_Event(ByVal TapiEvent As TAPI3Lib.TAPI_EVENT, ByVal pEvent As Object) Handles oTAPI.Event
  2.  
  3.        Select Case TapiEvent
  4.            Case TAPI_EVENT.TE_CALLNOTIFICATION
  5.                CallNotificationEvent()
  6.            Case TAPI_EVENT.TE_CALLSTATE
  7.                CallNotificationEvent()
  8.            Case TAPI_EVENT.TE_CALLINFOCHANGE
  9.                CallNotificationEvent()
  10.        End Select
  11.  
  12.    End Sub
  13.  

No debería ser lo mismo?

A ver si me se explicar. Tengo un formlario Form1, en él tengo declarado un array de forms publico. Con un botón voy abriendo las instancias del Form2 y los abiertos los voy guardando en el array. Dentro del Form2 tengo un botón para abrir la instancia del Form3, pasandole en el contructor el número del Form2 que ha abierto el form3 para que pueda hacer referncia a él. Desde el form3 cuando le cierro le paso los parametros al form2

form1.arraydeforms(id).variable = <valor>

donde el id es el número del form (Form2) de array que lo ha abierto (Form3)

Me imagino que es por el multihilo que cuando desde el Form3 hago la referencia al Form2, me dice que el array no lo tengo creado porque cuando hago lo mismo pero con un botón me funciona bien.

Perdonad pero creo que no se explicarme mejor.
2  Programación / .NET (C#, VB.NET, ASP) / Trabajar con imágenes en sql server y vb.net en: 28 Febrero 2011, 13:47 pm
Hola a todos.

Os cuento mi problema. Necesito recorrer una tabla de sql server que tiene un campo de tipo Imagen. Esta imagen la necesito almacenar e una carpeta como jpg para luego poder subirla por ftp.

Ya he leido todos los campos de la tabla pero no estoy seguro como tengo que manejar el campo de tipo imagen. Hay alguna función para coger el campo imagen y exportarlo a un archivo?

Gracias por vuestra ayuda.
3  Programación / .NET (C#, VB.NET, ASP) / Re: Borrar Registro en DataSet en: 12 Octubre 2010, 16:39 pm
He añadido al dataset un query de eliminación pero solamente por el campo clave, no como lo genera él por defecto con todos los campos y de esta manera si que funciona correctamente

Código:
LICENCIATableAdapter.DeleteQuery(268)
4  Programación / .NET (C#, VB.NET, ASP) / Re: Borrar Registro en DataSet en: 12 Octubre 2010, 16:27 pm
Perdona, me lo podrías explicar. No me estoy enternado. Por cierto, si lo borro con el bindingnavigator me funciona perfectamente.

No estoy seguro si tiene algo que ver pero en el momento de borrar si que se borra el registro pero no actualiza en la base de datos.
5  Programación / .NET (C#, VB.NET, ASP) / Re: Borrar Registro en DataSet en: 12 Octubre 2010, 16:16 pm
Pero si la sentencia de update está mal tampoco me guardaría el registro nuevo no?
6  Programación / .NET (C#, VB.NET, ASP) / Borrar Registro en DataSet en: 11 Octubre 2010, 20:36 pm
Hola

Estoy intentando borrar un registro del dataset.
Estoy utilizando el siguiente código:

Código:
        Dim registro As LicenciaDataSet.LICENCIARow

        registro = LicenciaDataSet.LICENCIA.Rows.Find(268)

        LicenciaDataSet.LICENCIA.Rows.Remove(registro)

        Me.TableAdapterManager.UpdateAll(Me.LicenciaDataSet)

En el formulario me lo borra pero no en la base de datos. Es como si el UpdateAll no me funcionara.

Para insertar uno nuevo no tengo ningún problema.

Código:
     Dim registro As LicenciaDataSet.LICENCIARow
        registro = LicenciaDataSet.LICENCIA.NewLICENCIARow

        registro.LICENCIA = 11
        registro.VERSION = "11"
        registro.IDPRODUTO = 1
        registro.IDFABRICANTE = 1
        registro.OBSERVACIONES = "hola1"

        LicenciaDataSet.LICENCIA.Rows.Add(registro)

        Me.TableAdapterManager.UpdateAll(Me.LicenciaDataSet)

Donde está el fallo en el borrado?
7  Programación / .NET (C#, VB.NET, ASP) / Problema dos Combobox enlazado dentro de un datagridview. en: 4 Octubre 2010, 11:21 am
He Creado dos origenes de datos, uno se llama productos y se compone de una serie de campos
entre lo que tengo IDlocal y IDCliente.
Tambien tengo otro origen de datos llamado ClienteLocal que se compone de dos tablas, una Cliente y otro Local.
Estas dos ultimas estan relacionadas por el campo idcliente que aparece tanto en la tabla cliente como en el local.
He arrastrado el origen de datos productos al formulario se ha creado un datagridview con los campos de los productos.
Los campos IdCliente e IdLocal los he cambiado a tipo combobox.
IDCliente lo he asociado al origen de datos Cliente y el IDLocal lo he enlazado al PK_ClienteLocal (tabla locales)
Con todo esto lo que intento que me muestre el nombre del cliente y del lolal en datagridview pero no funcion.
Por ultimo decir que la relacion de clientes locales es de uno a varios (un cliente puede tener varios locales)

Con los mismos origenes de datos he utilizado dos combobox en el formulario enlazandolos con las misma logica que he comentado
al principio y me ha funcionado bien.

Como debo hacerlo en un datagrid?
8  Programación / .NET (C#, VB.NET, ASP) / Re: Validar nulos en: 2 Octubre 2010, 19:25 pm
Gracias por la respuesta.

Los datos los estoy validando en dos eventos del datagrid.

El primero es dataerror.

Código
  1.        If TypeOf (e.Exception) Is ConstraintException Then
  2.            MsgBox("El producto introducido ya existe")
  3.            e.Cancel = True
  4.        End If
  5.  

Y el segundo es RowValidating

Código
  1. If PRODUCTODataGridView(2, e.RowIndex).Value Is DBNull.Value Then
  2.            MsgBox("Debe introducir un nombre del producto")
  3.            e.Cancel = True
  4. End If
  5.  
Es correcta esta forma?


Por ultimo, al dar el botón nuevo del bindingnavigator se produce el evento BindingNavigatorAddNewItem, cual es el evento que salta cuando la fila ya está insertada? El problema es que al añadir una fila nueva que solamente tiene un campo ya que el campo clave está oculto, no me pone el cursor en el campo sino me lo selecciona en azul.
He visto que con PRODUCTODataGridView.BeginEdit(True) pero no estoy seguro donde tiene que ir ya que no encuentro el evento que se produce cuando se ha añadido un registro nuevo.

Un saludo.
9  Programación / .NET (C#, VB.NET, ASP) / Validar DataSet en: 1 Octubre 2010, 10:21 am
Hola.

Tengo un datagridview enlazado a datos. Tambien tengo un bindingnavigatos. Lo que he hecho es hacerlo manual cuando el usuario cambia de fila pulsando las flechas de bindingnavigator. Para ello por ejemplo en la flecha de siguiente, valido si todo está bien y utilizo bindingsource.movenext Esto lo repito para anterior, primero y ultimo. Al final el el bloque de código es el mismo cambiando solamente el move para cada caso.
Código
  1. DataGridView.EndEdit
  2.  
  3. Try
  4.   BindingSource.EndEdit()
  5.   BindingSource.MoveFirst()
  6. Catch nulo As NoNullAllowedException
  7.   msgbox("Debe introducir un valor")
  8. Catch ex as Exception
  9.   msgobx(ex.Message)
  10. End Try

Puedo hacer esta validación a nivel de dataset? Me refiero a controlar la excepción fuera del formulario para no tener que repetir lo mismo cada vez.

Un saludo.
10  Programación / .NET (C#, VB.NET, ASP) / Validar nulos en: 1 Octubre 2010, 09:19 am
Hola.

Cual es la forma de validar los campos antes de grabar? EStoy utilizando un bindingSource y BindingNavigator. Cuando estoy en un datagrid le añado un campo y vuelvo a añadir otro (sin rellenar el campo que no puede ser nulo) me salta un error pero no se posiciona en ninguna linea de codigo.
Otra cosa, el me.validating del formulario a quien llama?

Un saludo.
Páginas: [1] 2 3 4 5 6 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines