Hallo,
ich sitz grad am Problem ein externes Programm aufzurufen, aktiv zu setzen und dann zu verarbeiten. Eigentlich soweit nicht schlimm.
ABER: ich krieg das Programm nicht immer ins Bild, soll heißen wenn das Programm auf die Taskbar minimiert wird funktioniert das AppActivate nicht,
das geht nur wenn es nur im Hintergrund ist.
Hier erstmal ein wenig Code:
Wie ihr seht hab ich es auch schon mit Sendkeys versucht, funktioniert nicht da es in der anwendung keine Funktion für ALT gibt.
Nächster Ansatz wäre jetzt mit ALT+Tab solange durch zu scrollen bis ich die betreffende Prozess-Id erwischt habe.
Wie geht das?
Habt ihr evtl noch andere Vorschläge wie ich mit .Net das minimierte Programm bekomme?
ich sitz grad am Problem ein externes Programm aufzurufen, aktiv zu setzen und dann zu verarbeiten. Eigentlich soweit nicht schlimm.
ABER: ich krieg das Programm nicht immer ins Bild, soll heißen wenn das Programm auf die Taskbar minimiert wird funktioniert das AppActivate nicht,
das geht nur wenn es nur im Hintergrund ist.
Hier erstmal ein wenig Code:
Code:
Public Sub New() Me.InitializeComponent() End Sub Private Function GetProcessID(ByVal hProcess As String, ByVal MachineName As String) _ As String Try Dim ps As Diagnostics.Process() = _ Diagnostics.Process.GetProcessesByName(hProcess, MachineName) For Each Item As Diagnostics.Process In ps Return Item.Id.ToString() 'Return Item.MainWindowHandle.ToString() Next Catch ex As Exception MessageBox.Show(ex.Message.ToString(), "Info") End Try Return String.Empty End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Id = GetProcessID("DtmCtc", Environment.MachineName).ToString If (Not Id.ToString Is String.Empty) Then 'MessageBox.Show(Id, "ProcessId") Else MsgBox("Programm nicht gefunden") End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button2.Click AppActivate(Id) System.Windows.Forms.SendKeys.SendWait("{F5}") System.Windows.Forms.SendKeys.Send("vbKeyMenu" + "vbKeySpace" + "vbKeyR") End Sub End Class
Nächster Ansatz wäre jetzt mit ALT+Tab solange durch zu scrollen bis ich die betreffende Prozess-Id erwischt habe.
Wie geht das?
Habt ihr evtl noch andere Vorschläge wie ich mit .Net das minimierte Programm bekomme?
Comment