vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Befehl an zweite Instanz meine Anwendung senden 
Autor: WaldiMaywood
Datum: 06.06.04 22:54

Hier ein kleines + einfaches Beispiel, das sehr gut die Funktionsweise verdeutlicht:
 
Public Class Form1
    Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
' ..
#End Region
    Public Declare Auto Function SendMessage Lib "user32" ( _
    ByVal hwnd As Int32, _
    ByVal wMsg As Int32, _
    ByVal wParam As Int32, _
    ByRef lParam As COPYDATASTRUCT) _
    As Int32
    Public Declare Auto Function FindWindow Lib "user32.dll"  ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Int32
    Public Structure COPYDATASTRUCT
        Public dwData As IntPtr
        Public cbData As Integer
        Public lpData As String
    End Structure
    Const WM_COPYDATA As Integer = &H4A
    Private Function getWindowHandle() As Integer
        For Each p As Process In System.Diagnostics.Process.GetProcessesByName( _
          Process.GetCurrentProcess.ProcessName)
            If p.Id <> Process.GetCurrentProcess.Id Then
                Return Me.FindWindow(vbNullString, "Destination")
            End If
        Next
        Return -1
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Dim cpy As COPYDATASTRUCT
        Dim strMsg As String = "Hello World!"
        Dim hwnd As Integer = getWindowHandle()
        cpy.lpData = strMsg
        cpy.cbData = strMsg.Length
        If hwnd = -1 Then MessageBox.Show("Keine 2. Instanz gefunden!") : Return
        Try
            SendMessage(hwnd, WM_COPYDATA, 0, cpy)
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)
        Try
            If m.Msg = WM_COPYDATA Then
                Dim cpy As COPYDATASTRUCT
                cpy = CType(m.GetLParam(cpy.GetType), COPYDATASTRUCT)
                MessageBox.Show("Nachricht: " + cpy.lpData)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Me.Text = "Destination"
    End Sub
End Class
Könnte evtl. noch etwas verbessert o. angepasst werden. Denke aber für den Anfang dürfte es ausreichen.

Steve
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Befehl an zweite Instanz meine Anwendung senden1.646Dartrax06.06.04 14:54
Re: Befehl an zweite Instanz meine Anwendung senden1.170WaldiMaywood06.06.04 15:11
Re: Befehl an zweite Instanz meine Anwendung senden1.154Dartrax06.06.04 20:50
Re: Befehl an zweite Instanz meine Anwendung senden1.132ModeratorDaveS06.06.04 22:06
Re: Befehl an zweite Instanz meine Anwendung senden1.872WaldiMaywood06.06.04 22:54
Re: Befehl an zweite Instanz meine Anwendung senden1.159Dartrax08.06.04 18:56
Re: Befehl an zweite Instanz meine Anwendung senden1.321ModeratorDaveS08.06.04 21:41
Re: Befehl an zweite Instanz meine Anwendung senden1.067WaldiMaywood09.06.04 09:22
Re: Befehl an zweite Instanz meine Anwendung senden1.102WaldiMaywood09.06.04 09:34
Dankeschön 1.066Dartrax09.06.04 17:27
VB6971Tico02.06.06 00:52
Re: VB6979ModeratorDaveS02.06.06 10:29
Re: VB61.085Wolf mit Schnul...02.06.06 13:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel