| |
VB.NET - FortgeschritteneMessageBox 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 | |
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 | |
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 | |
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 | |
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 ! | |
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.... | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
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
|
|