Visualizzazione dei risultati da 1 a 5 su 5

Discussione: VBNET] Cross thread

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119

    VBNET] Cross thread

    Buongiorno a tutti.

    Sto cercando di risolvere questo problema di cross thread ma non riesco a capire perché non va.

    codice:
    <DllImport("user32.dll")> _
        Private Shared Function GetForegroundWindow() As IntPtr
        End Function
    
        <DllImport("user32.dll")> _
        Private Shared Function GetWindowThreadProcessId(hWnd As IntPtr, ProcessId As IntPtr) As IntPtr
        End Function
    
        <DllImport("user32.dll")> _
        Private Shared Function AttachThreadInput(idAttach As IntPtr, idAttachTo As IntPtr, fAttach As Boolean) As IntPtr
        End Function
    
        <DllImport("user32.dll")> _
        Private Shared Function GetFocus() As IntPtr
        End Function
    
        Public Function HwndActiveWindow() As String
            If Me.InvokeRequired Then
                Me.Invoke(New MethodInvoker(AddressOf HwndActiveWindow))
            Else
            Dim activeWindowHandle As IntPtr = GetForegroundWindow()
            Dim activeWindowThread As IntPtr = GetWindowThreadProcessId(activeWindowHandle, IntPtr.Zero)
            Dim thisWindowThread As IntPtr = GetWindowThreadProcessId(Me.Handle, IntPtr.Zero)
                AttachThreadInput(activeWindowThread, thisWindowThread, True)
                AttachThreadInput(activeWindowThread, thisWindowThread, False)
                Dim focusedControlHandle As IntPtr = GetFocus()
                Return focusedControlHandle.ToString
            End If
        End Function
    Praticamente invokerequired è true ma invece di ritornare alla funzione mi salta a endif

    Mi aiutate a risolvere ?

    Grazie, Alberto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Ma stai utilizzando thread diversi? Dal codice non si capisce ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    Originariamente inviato da oregon
    Ma stai utilizzando thread diversi? Dal codice non si capisce ...
    Si, la funzione viene chiamata da un evento che scatena invoke

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Puoi postare la parte di codice coinvolta per capire e poter fare qualche prova?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    119
    Non posso mandare il codice che chiama la funzione è TOP SECRET !!

    Non non posso perché in realtà la richiesta di quel valore viene inviato tramite un comando da un altro programma connesso via tcp

    Praticamente mi serve sapere l'hwnd o l'handle dell'applicazione che ha il focus da inviare al programma che l'ha richiesto

    Alberto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.