vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 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
MessageBox eines Fremdprogramms auslesen 
Autor: schlumpf90
Datum: 03.05.15 20:15

Hallo zusammen,

ich bräuchte mal bitte einen Tipp von euch.
Ich möchte mit meinem VB.NET Programm "A" ein anderes Programm "B" quasi überwachen.
Das Programm "B" bringt in einem Fehlerfall eine Messagebox mit einem Fenstertitel, einem Text und einem OK-Button.

Wie ich mir unter all den offenen Fenstern nur dieses und auch das Handle des Fensters heraus picken kann, habe ich schon hin bekommen.
Ich weiß aber nicht, wie ich mir nun den eigentlichen Text der MessageBox in mein Programm holen und dort verarbeiten kann.

Ich freue mich auf eure Vorschläge und sage schon einmal danke !!!

VG,

Matthias
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MessageBox eines Fremdprogramms auslesen 
Autor: GPM
Datum: 03.05.15 21:32

Ein Beispiel:

Imports System.Text
Public Class Form1
    Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, _
      ByVal lpWindowName As String) As IntPtr
    Declare Auto Sub GetDlgItemText Lib "user32" (ByVal hDlg As IntPtr, ByVal _
    nIDDlgItem As Int32, ByVal sb As StringBuilder, ByVal nMaxCount As Int32)
    Private WithEvents Btn As New Button With {.Dock = DockStyle.Bottom, .Text _
    = "Start", .Parent = Me}
    Private WithEvents T As New Timer With {.Enabled = True}
 
    Private Sub Btn_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Btn.Click
        MessageBox.Show(Now.ToString, "MsgBox")
    End Sub
 
    Private Sub T_Tick(ByVal sender As Object, ByVal e As System.EventArgs) _
      Handles T.Tick
        Dim Hnd As IntPtr = FindWindow("#32770", "MsgBox")  'DialogBox und 
        ' Titeltext
        If Hnd <> IntPtr.Zero Then
            Dim sb As New StringBuilder(256)
            GetDlgItemText(Hnd, &HFFFF, sb, sb.MaxCapacity)
            Me.Text = sb.ToString
        End If
    End Sub
End Class
 
MfG GPM
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MessageBox eines Fremdprogramms auslesen 
Autor: schlumpf90
Datum: 04.05.15 08:02

Super, das wars....
Ich musste für meine Zwecke zwar den StringBuilder(256) auf StringBuilder(2048) anpassen, weil die Message ein wenig länger ist, aber es hat dann alles super funktioniert.

VIELEN DANK, das bringt mich deutlich weiter !!!

VG, Matthias
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Ergänzender Hinweis 
Autor: Manfred X
Datum: 04.05.15 11:54

Man kann "GetDlgItemText" als Function aufrufen und
erhält die Länge der gelesenen Nachricht als Rückgabe
oder 0, falls die Abfrage nicht funktioniert hat.

Von www.pinvoke.net ...
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Function GetDlgItemText(
    ByVal hDlg As IntPtr, _
    ByVal nIDDlgItem As Integer, _
    ByVal lpString As StringBuilder, _
    ByVal nMaxCount As Integer) As Integer
End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MessageBox eines Fremdprogramms auslesen 
Autor: schlumpf90
Datum: 20.05.15 21:30

Hallo Leute,

ich habe noch einmal eine Frage zu diesem Thema.
Wenn meine EXE im Vordergrund ist, funktioniert die Lösung (siehe weiter oben) tadellos.
Wenn ich aber über die Aufgabenplanung meine EXE quasi im Hintergrund (also nicht sichtbar) laufen lasse, dann funktioniert es nicht.

Gibt es dafür auch eine Lösung ???

Vielen Dank und viele Grüße !
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MessageBox eines Fremdprogramms auslesen 
Autor: schlumpf90
Datum: 21.05.15 11:44

Ich ziehe meine Frage zurück !
Ich hab herausgefunden, dass mein Programm, welches über den Taskplaner im Hintergrund ausgeführt wird, gar keine Messagebox aufmacht, die man abfragen könnte....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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