none
Ejecutar Form en segundo plano. RRS feed

  • Pregunta

  • Buen día, espero por favor me puedan ayudar. 

    Estoy manipulando el SDK de digital persona. Quisiera saber como puedo ejecutar el formulario en "segundo plano", es decir, que aun estando abierta otra ventana de Windows el formulario de captura continué trabajando. Intente con show dialog pero cuando toco el lector de huellas no ocurre nada. El programa lo estoy desarrollando con VB.

    Gracias

    • Cambiado Enrique M. Montejo miércoles, 28 de febrero de 2018 17:24 Pregunta relacionada con Windows Forms.
    lunes, 26 de febrero de 2018 20:08

Todas las respuestas

  • como puedo ejecutar el formulario en "segundo plano"

    intentaste probando Me.Hide() ? y para mostrar de nuevo el form usas el NotifyIcon

    lunes, 26 de febrero de 2018 20:26
  • Si. Pero solo lo oculta. Creo que lo que necesito es que este siempre activo.
    lunes, 26 de febrero de 2018 20:33
  • bueno , entra en https://foro.elhacker.net/ , registrare y plantea tu pregunta en el subforo de VB.NET

     bueno hay esta un buen GURU (Elektro) que te ayudara . en ese foro siempre te ayudan puedes ver los temas resueltos y los aportes. te encantara.

    lunes, 26 de febrero de 2018 20:59
  • Muchísimas gracias!!
    lunes, 26 de febrero de 2018 22:09
  • hola

    >>aun estando abierta otra ventana de Windows el formulario de captura continué trabajando

    pero estas seguro que el lector envia la lectura de forma general a windows para que cualquiera pueda tomar el dato?

    si es asi podrias aplciar la tecnica de hooking que hace uso de las api de windows

    Managing Low-Level Keyboard Hooks in VB .NET

    con estas api estaras escuchando el keyboard, pero debes asegurarte que esta libreria envia el dato de esta forma

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 28 de febrero de 2018 17:43
  • EL lector parpadea, por lo que parece estar enviando el dato. Ok, lo intentaré con la API que me comentas. Estoy probando con SetWindowPos, crees que me pueda servir?

    jueves, 1 de marzo de 2018 18:20
  • Si me puede mostrar código del SDK de Digital Persona, probablemente le puedo ayudar.  Si dice que se necesita un formulario para operar, imagino que tal vez eso quiere decir que lo que se necesita es que haya una ventana que reciba un mensaje de notificación.  Eso lo pueden hacer inclusive las ventanas invisibles.

    Jose R. MCP
    Code Samples

    viernes, 2 de marzo de 2018 3:47
    Moderador
  • Buenas,

    El formulario que abres con showdialog es en el que esperas recibir los datos del lector o es otro? digo porque cuando abres algo con showdialog, paras el resto de formularios, es decir, si tu formulario con el lector es LectorForm, y el otro es RestForm, y desde tu LectorForm abres RestForm con showdialog, tu lector va a dejar de funcionar, para que ambos formularios ejecuten su trabajo, tienes que abrirlo con Show()

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    viernes, 2 de marzo de 2018 9:18
  • El programa tiene la finalidad de registrar horas de entrada y salida de personal. El equipo en donde implementaré el programa es utilizado para realizar otras tareas, por lo tanto, cuando una persona “cheque” su acceso, este debe funcionar aunque este alguno otro programa abierto como Microsoft Word o cualquier otro.

    Tengo dos formularios para dicha tarea: CaptureForm  y VerificationForm. El primero que carga es CaptureForm y manda llamar a Verification Form de la siguente forma:

    Dim Verifier As New VerificationForm()

                Verifier.Verify()

        Public Sub Verify()

            ShowDialog()

        End Sub

    El código de capture form es el siguiente, es aquí en donde se detecta cuando colocas tu dedo en el lector:

    Imports System.ComponentModel

    Imports System.Runtime.InteropServices

    Imports System.Web.Services

    Imports System.Web.Services.Protocols

    Imports System.Data.OleDb

    Imports System.Security.Policy

    Imports System.IO

    Imports System.Data.Odbc

    Public Class CaptureForm

        Implements DPFP.Capture.EventHandler

        Private Capturer As DPFP.Capture.Capture

        Friend bytes1 As Byte() = Nothing

        Friend bytes2 As Byte() = Nothing

        Friend bytes3 As Byte() = Nothing

        Friend Flag As Integer = 0

        <DllImportAttribute("user32.dll", EntryPoint:="SetWindowPos")> _

        Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInteger) As <MarshalAs(UnmanagedType.Bool)> Boolean

        End Function

        Protected Overridable Sub Init()

            Try

                Capturer = New DPFP.Capture.Capture()                   ' Create a capture operation.

                If (Not Capturer Is Nothing) Then

                    Capturer.EventHandler = Me                              ' Subscribe for capturing events.

                Else

                    SetPrompt("Can't initiate capture operation!")

                End If

            Catch ex As Exception

                MessageBox.Show("Can't initiate capture operation!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End Try

        End Sub

        Protected Overridable Sub Process(ByVal Sample As DPFP.Sample)

            DrawPicture(ConvertSampleToBitmap(Sample))

        End Sub

        Protected Function ConvertSampleToBitmap(ByVal Sample As DPFP.Sample) As Bitmap

            Dim convertor As New DPFP.Capture.SampleConversion()  ' Create a sample convertor.

            Dim bitmap As Bitmap = Nothing              ' TODO: the size doesn't matter

            convertor.ConvertToPicture(Sample, bitmap)        ' TODO: return bitmap as a result

            Return bitmap

        End Function

        Protected Function ExtractFeatures(ByVal Sample As DPFP.Sample, ByVal Purpose As DPFP.Processing.DataPurpose) As DPFP.FeatureSet

            Dim extractor As New DPFP.Processing.FeatureExtraction()    ' Create a feature extractor

            Dim feedback As DPFP.Capture.CaptureFeedback = DPFP.Capture.CaptureFeedback.None

            Dim features As New DPFP.FeatureSet()

            extractor.CreateFeatureSet(Sample, Purpose, feedback, features) ' TODO: return features as a result?

            If (feedback = DPFP.Capture.CaptureFeedback.Good) Then

                Return features

            Else

                Return Nothing

            End If

        End Function

        Protected Sub StartCapture()

            If (Not Capturer Is Nothing) Then

                Try

                    Capturer.StartCapture()

                    SetPrompt("Usando el lector de huellas digitales," + vbLf + "escanee su huella digital.")

                Catch ex As Exception

                    SetPrompt("No se pudo iniciar la captura!")

                End Try

            End If

        End Sub

        Protected Sub StopCapture()

            If (Not Capturer Is Nothing) Then

                Try

                    Capturer.StopCapture()

                Catch ex As Exception

                    SetPrompt("Can't terminate capture!")

                End Try

            End If

        End Sub

        Private Sub CaptureForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            If Flag = 0 Then

                Dim Verifier As New VerificationForm()

                Verifier.Verify()

            End If

            Init()

            StartCapture()

        End Sub

        Sub OnComplete(ByVal Capture As Object, ByVal ReaderSerialNumber As String, ByVal Sample As DPFP.Sample) Implements DPFP.Capture.EventHandler.OnComplete

            MakeReport("Huella digital capturada")

            'MakeReport("Huella digital capturada" & Nombre)

            SetPrompt("Escanee huella digital")

            Process(Sample)

        End Sub

        Sub OnFingerGone(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerGone

            'MakeReport("The finger was removed from the fingerprint reader.")

        End Sub

        'Sub OnFingerTouch1(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerTouch

        '    MakeReport("Lector de huellas tocado.")

        'End Sub

        Sub OnFingerTouch(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerTouch

            MakeReport("Lector de huellas tocado.")

        End Sub

        Sub OnReaderConnect(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnReaderConnect

            MakeReport("Lector de huellas conectado.")

        End Sub

        Sub OnReaderDisconnect(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnReaderDisconnect

            MakeReport("Lector de huellas desconectado.")

            MakeReport("Conecte el lector de huellas.")

        End Sub

        Sub OnSampleQuality(ByVal Capture As Object, ByVal ReaderSerialNumber As String, ByVal CaptureFeedback As DPFP.Capture.CaptureFeedback) Implements DPFP.Capture.EventHandler.OnSampleQuality

            If CaptureFeedback = DPFP.Capture.CaptureFeedback.Good Then

                MakeReport("La calidad de la huella es buena.")

            Else

                MakeReport("La calidad de la huella es pobre")

            End If

        End Sub

        Protected Sub SetStatus(ByVal status)

            Invoke(New FunctionCall(AddressOf _SetStatus), status)

        End Sub

        Private Sub _SetStatus(ByVal status)

            StatusLine.Text = status

        End Sub

        Protected Sub SetPrompt(ByVal text)

            Invoke(New FunctionCall(AddressOf _SetPrompt), text)

        End Sub

        Private Sub _SetPrompt(ByVal text)

            Prompt.Text = text

        End Sub

        Protected Sub MakeReport(ByVal status)

            Invoke(New FunctionCall(AddressOf _MakeReport), status)

        End Sub

        Private Sub _MakeReport(ByVal status)

            If status <> "" Then

                StatusText.AppendText(status + Chr(13) + Chr(10))

            End If

        End Sub

        Protected Sub DrawPicture(ByVal bmp)

            Invoke(New FunctionCall(AddressOf _DrawPicture), bmp)

        End Sub

        Private Sub _DrawPicture(ByVal bmp)

            Picture.Image = New Bitmap(bmp, Picture.Size)

        End Sub

    End Class

    viernes, 2 de marzo de 2018 17:16
  • El programa tiene la finalidad de registrar horas de entrada y salida de personal. El equipo en donde implementaré el programa es utilizado para realizar otras tareas, por lo tanto, cuando una persona “cheque” su acceso, este debe funcionar aunque este alguno otro programa abierto como Microsoft Word o cualquier otro.

    Tengo dos formularios para dicha tarea: CaptureForm  y VerificationForm. El primero que carga es CaptureForm y manda llamar a Verification Form de la siguente forma:

    Dim Verifier As New VerificationForm()

                Verifier.Verify()

        Public Sub Verify()

            ShowDialog()

        End Sub

    El código de capture form es el siguiente, es aquí en donde se detecta cuando colocas tu dedo en el lector. El evento cuando conectas el lector si se dispara aunque tengas otro programa activo, sin embargo no ocurre lo mismo con el evento cuando colocas tu dedo. Muchas gracias por tu amable atención.

    Sub OnFingerGone(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerGone

            'MakeReport("The finger was removed from the fingerprint reader.")

        End Sub

        'Sub OnFingerTouch1(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerTouch

        '    MakeReport("Lector de huellas tocado.")

        'End Sub

        Sub OnFingerTouch(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnFingerTouch

            MakeReport("Lector de huellas tocado.")

        End Sub

        Sub OnReaderConnect(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnReaderConnect

            MakeReport("Lector de huellas conectado.")

        End Sub

        Sub OnReaderDisconnect(ByVal Capture As Object, ByVal ReaderSerialNumber As String) Implements DPFP.Capture.EventHandler.OnReaderDisconnect

            MakeReport("Lector de huellas desconectado.")

            MakeReport("Conecte el lector de huellas.")

        End Sub


    viernes, 2 de marzo de 2018 17:19
  • Alguien que me pueda ayudar por favor?
    martes, 3 de abril de 2018 15:44
  • Tengo el mismo problema, Pudiste resolverlo?
    lunes, 23 de julio de 2018 16:13
  • No, aún no lo he resuelto... Tu lo resolviste?

    martes, 4 de diciembre de 2018 14:45