Torna al Thread

'La funzione per ottenere l'ID univoco del messaggio <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _ Private Shared Function RegisterWindowMessage(ByVal lpString As String) As UInteger End Function 'La funzione per inviare i messaggi <DllImport("user32.dll", CharSet:=CharSet.Unicode)> _ Private Shared Function SendMessage(ByVal hWnd As IntPtr, _ ByVal msg As UInteger, _ ByVal wParam As IntPtr, _ ByVal lParam As IntPtr) As Boolean End Function 'L'ID del messaggio per avvisare l'applicazione in C++ Private Shared ReadOnly MESSAGE_SEND_ID As UInteger = RegisterWindowMessage("MESSAGE_SEND_ID") 'L'ID del messaggio che ci avvisa che il procedimento è completato Private Shared ReadOnly MESSAGE_ALERTME_ID As UInteger = RegisterWindowMessage("MESSAGE_ALERTME_ID") 'L'identificatore dei messaggi di Broadcast Private Shared ReadOnly HWND_BROADCAST As IntPtr = New IntPtr(&HFFFF) Private Sub TuoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TuoButton.Click 'In questa funzione avvisiamo l'applicazione in C++, passando il 'nome del file in lParam: Dim FileName As String = "C:\prova.txt" 'Converto in memoria non gestita, necessario per passare l'argomento Dim argFileName As IntPtr = Marshal.StringToHGlobalAuto(FileName) 'Invio il messaggio di Broadcast in modo che lo ricevano tutte le applicazioni SendMessage(HWND_BROADCAST, MESSAGE_SEND_ID, IntPtr.Zero, argFileName) 'Ricordati di deallocare la memoria non gestita! Marshal.FreeHGlobal(argFileName) End Sub Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) 'Qui riceviamo i messaggi dalle altre applicazioni 'Controllo che l'ID sia quello fornito dall'applicazione C++ If (m.Msg = MESSAGE_ALERTME_ID) Then 'Fai qui quello che devi fare! MsgBox("Messaggio ricevuto!") ''Se il programma ti passa una stringa, la ottieni con: 'Dim strArg As String = Marshal.PtrToStringAuto(m.WParam) Else 'Gli altri messaggio non ci interessano, richiamiamo la funzione base MyBase.WndProc(m) End If End Sub
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5