ReDim kann die Anzahl der Dimensionen eines Arrays nicht verändern Bitte helfen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Mabbi.

    ReDim kann die Anzahl der Dimensionen eines Arrays nicht verändern Bitte helfen

    Hi,

    ich möchte folgenden Code in Visual Basic nutzen:

    Die Funktion findet Applikations Fenster, auch wenn man nur Teile des Namens kennt, also anders als FindWindow. Eigentlich sehr praktisch, wenn man dynamisch generiert Fenster mit Datumseinträgen oder Versionsnummern drin sucht.

    VB.NET-Quellcode

    1. Option Explicit
    2. Private Declare Function GetDesktopWindow Lib "user32" () As Long
    3. Private Declare Function GetWindow Lib "user32" (ByVal hwnd _
    4. As Long, ByVal wCmd As Long) As Long
    5. Private Declare Function GetClassName Lib "user32" Alias _
    6. "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
    7. As String, ByVal nMaxCount As Long) As Long
    8. Private Declare Function GetWindowTextLength Lib "user32" _
    9. Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    10. Private Declare Function GetWindowText Lib "user32" Alias _
    11. "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString _
    12. As String, ByVal cch As Long) As Long
    13. Private Declare Function GetParent Lib "user32" (ByVal hwnd _
    14. As Long) As Long
    15. Private Const GW_HWNDNEXT = 2
    16. Private Const GW_CHILD = 5
    17. Public Function FindWindowLike(ByRef hWndArray() As Variant, _
    18. ByVal hWndStart As Long, ByVal WindowText As String, _
    19. ByVal Classname As String) As Long
    20. Static nLevel As Long
    21. Static nCounter As Long
    22. Dim hwnd As Long
    23. Dim hwndMain As Long
    24. Dim nRetVal As Long
    25. Dim strWndTitle As String
    26. Dim strClassName As String
    27. Dim strWndType As String
    28. Dim strKey As String
    29. If nLevel = 0 Then
    30. If hWndStart = 0 Then hWndStart = GetDesktopWindow()
    31. nCounter = -1
    32. ReDim hWndArray(0 To 4, 0 To 0)
    33. End If
    34. nLevel = nLevel + 1
    35. hwnd = GetWindow(hWndStart, GW_CHILD)
    36. Do Until hwnd = 0
    37. nRetVal = FindWindowLike(hWndArray(), hwnd, WindowText, _
    38. Classname)
    39. strClassName = Space$(64)
    40. nRetVal = GetClassName(hwnd, strClassName, Len(strClassName))
    41. strClassName = Left$(strClassName, nRetVal)
    42. nRetVal = GetWindowTextLength(hwnd)
    43. If nRetVal > 0 Then
    44. If nRetVal > 256 Then nRetVal = 255
    45. strWndTitle = Space$(nRetVal + 1)
    46. GetWindowText hwnd, strWndTitle, Len(strWndTitle)
    47. strWndTitle = Left$(strWndTitle, nRetVal)
    48. Else
    49. strWndTitle = ""
    50. End If
    51. If (UCase$(strWndTitle) Like UCase$(WindowText)) And _
    52. (UCase$(strClassName) Like UCase$(Classname)) Then
    53. If GetParent(hwnd) <> 0 Then
    54. nRetVal = GetParent(hwnd)
    55. Do While nRetVal
    56. hwndMain = nRetVal
    57. nRetVal = GetParent(hwndMain)
    58. Loop
    59. strWndType = "Child"
    60. strKey = CStr(hwndMain) & "h" & CStr(nCounter)
    61. Else
    62. strWndType = "Parent"
    63. strKey = CStr(hwnd) & "h" & CStr(nCounter)
    64. End If
    65. nCounter = nCounter + 1
    66. ReDim Preserve hWndArray(0 To 4, 0 To nCounter)
    67. hWndArray(0, nCounter) = strWndTitle
    68. hWndArray(1, nCounter) = CStr(hwnd)
    69. hWndArray(2, nCounter) = strClassName
    70. hWndArray(3, nCounter) = strWndType
    71. hWndArray(4, nCounter) = strKey
    72. End If
    73. hwnd = GetWindow(hwnd, GW_HWNDNEXT)
    74. Loop
    75. nLevel = nLevel - 1
    76. FindWindowLike = nCounter + 1
    77. End Function


    Nun setze ich dieses ( Ursprung: vb-fun.de/cgi-bin/loadframe.pl?ID=vb/tipps/tip0392.shtml ) in ein neues Projekt in Visual Basc ein.

    Hier bekomme ich an folgenden Stellen

    VB.NET-Quellcode

    1. ReDim hWndArray(0 To 4, 0 To nCounter)
    2. ReDim hWndArray(0 To 4, 0 To 0)


    den Fehler:

    ReDim kann die Anzahl der Dimensionen eines Arrays nicht verändern.

    Tritt sowohl bei ReDim wie auch ReDim Preserve auf

    Der Code übersteigt mein Wissen, ich benutze den schon seit Jahren in VBA (er läuft dort so einwandfrei) und hätte gerne die gleiche Funktionalität in VB.
    Kann mir hier jemand bitte weiterhelfen ?

    Richtige Code-Tags gesetzt, und Farben angepasst ~ EaranMaleasi

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „EaranMaleasi“ ()

    @EaranMaleasi: Danke für den hinweis

    @Dksksm: Ich habe das nun so umgesetzt und es läuft auch, Danke.

    Leider bekomme ich nun einen neuen Fehler hier:

    VB.NET-Quellcode

    1. hwnd = GetWindow(hWndStart, GW_CHILD)


    GW_CHILD ist eine Konstante mit dem Wert 5, wie oben im Quelltext zu sehen
    "GUTO" ist ein Teilstring des Fensternamens, nachdem ich suchen will in diesem Falle.
    hwndStart hat aktuell den Wert von 65512 (macht in meinen Augen Sinn)

    Der Fehler lautet wie folgt:

    Ein Aufruf an die PInvoke-Funktion "GUTO!GUTO.zMOD_Var_Konst_API_Subs::GetWindow" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen.

    Da es leider nicht von mir programmiert sondern nur übernommen ist, bin ich da aktuell ziemlcih ratlos.

    Kann mir jemand bitte weitergelfen, Danke im voraus.
    @Mabbi Du verwendest VB6-Deklarationen der API-Funktionen.
    Sieh auf PInvoke nach, da findest Du die korrekten .NET-Deklarationen.
    ====
    Mach Dir ein separates kleines Test-Projekt, wo Du das Redim-Zeugs testen kannst.
    Überlege alternativ, ob eine List(Of T) besser geeignet ist, Dein Problem zu beschreiben.
    Und bevor ish es vergesse:
    Machst Du Option Strict On :!:
    Visual Studio - Empfohlene Einstellungen
    ====
    Der Fehler kommt von Deinen VB6-Deklarationen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Eierlein Bei Dir kommt aber kein IntPtr vor.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,

    ich habe nun intensiv im Internet gesucht und hier einen Code gefunden, der mit kleinen Änderungen läuft.

    forums.codeguru.com/showthread…tle&p=1499558#post1499558


    Dies ist mein Prozeduraufruf:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim hWnd As String = ""
    3. Dim Windowtitle As String = ""
    4. 'Windows application suchen
    5. hWnd = GetWindowHandle("GUTO", Windowtitle)
    6. 'Fenster erfolgreich gefunden ?
    7. If hWnd <> "0" Then
    8. 'Gefundene application focus setzen (activate)
    9. ShowAppWindow(Windowtitle)
    10. SetForegroundWindow(hWnd)
    11. My.Computer.Keyboard.SendKeys("% ", True)
    12. My.Computer.Keyboard.SendKeys("{Enter}", True)
    13. Else
    14. MsgBox("Keine Application gefunden mit folgendem Teilnamen: ""GUTO"" ?")
    15. End If
    16. End Sub


    und das hier meine Module:

    VB.NET-Quellcode

    1. 'partial name Windowsfinder
    2. Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Integer) As Integer
    3. Public Declare Function ShowWindow Lib "user32" (ByVal handle As IntPtr, ByVal nCmdShow As Integer) As Integer
    4. Public Function GetWindowHandle(ByVal partialTitle As String, ByRef Windowtitle As String) As IntPtr
    5. For Each p As Process In Process.GetProcesses()
    6. If p.MainWindowTitle.IndexOf(partialTitle, 0, StringComparison.CurrentCultureIgnoreCase) > -1 Then
    7. Windowtitle = p.MainWindowTitle
    8. Return p.MainWindowHandle 'Found Window
    9. End If
    10. Next
    11. Return IntPtr.Zero 'No Match Found
    12. End Function
    13. Public Sub ShowAppWindow(ByVal Title As String)
    14. Try
    15. Dim localByName As Process() = Process.GetProcessesByName(Title)
    16. For Each p As Process In localByName
    17. ShowWindow(p.MainWindowHandle, 3) ' SW_MAXIMIZE
    18. Next
    19. Catch ex As Exception
    20. MsgBox(ex)
    21. End Try
    22. End Sub
    23. End Module


    Das funktioniert soweit einwandfrei.

    Allerdings habe ich hierzu noch eine Frage:

    Eigentlich will ich die Application hiermit wiederherstellen und maximieren wenn minimiert:

    VB.NET-Quellcode

    1. ShowWindow(p.MainWindowHandle, 3)


    Das geht aber nicht, der Fokus geht drauf aber das Maximize funktioniert nicht, wenndie App in der Taskbar minimiert ist.

    Als Workaround nutz ich sendkeys:

    VB.NET-Quellcode

    1. My.Computer.Keyboard.SendKeys("% ", True)
    2. My.Computer.Keyboard.SendKeys("{Enter}", True)


    Ich schicke ALT+Space und dann RETURN weil ja "wiederherstellen" dann im Popup vorselektiert ist.

    Die Lösung finde ich aber nicht schön, kann mir jemand weiterhelfen warum das hier:

    VB.NET-Quellcode

    1. ShowWindow(p.MainWindowHandle, 3)


    nicht funktioniert ?
    Er findet das Fenster anhand des korrekten vollständigen Titels, der Aufruf in dieser Zeile ist dann aber ohne sichtbare Auswirkung. ;(

    Vielen Dank vorab für Eure Hilfe.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mabbi“ ()

    @Mabbi Bevor Du weiter machst, machst Du Option Strict On :!:
    Visual Studio - Empfohlene Einstellungen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    @Mabbi Bevor Du weiter machst, machst Du Option Strict On :!:
    Visual Studio - Empfohlene Einstellungen




    Option Strict On
    habe ich nun umgesetzt.

    hWnd = CStr(GetWindowHandle("GÜSTO", Windowtitle))
    SetForegroundWindow(CInt(hWnd))

    Bitte nun eine Antwort auf mein Problem:

    VB.NET-Quellcode

    1. ShowWindow(p.MainWindowHandle, 3)




    Warum funktioniert das nicht zum maximieren einer minimierten app?

    Er findet das Fenster anhand des korrekten vollständigen Titels, der
    Aufruf in dieser Zeile ist dann aber ohne sichtbare Auswirkung.

    Vielen Dank vorab für Eure Hilfe.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mabbi“ ()

    Mabbi schrieb:

    habe ich nun umgesetzt.
    Leider hast Du es nicht verstanden.
    Wenn eine Funktion einen IntPtr zurückgibt, konvertiere den nicht nach String :!:
    Nächster Versuch ...
    ====
    Das tun wir nicht zu unserem Vergnügen oder um Dich zu ärgern,
    sondern damit Du unsere Hilfe bald nicht mehr nötig hast. 8o
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Den angesprochenen Part habe ich nun so umgeschrieben:

    VB.NET-Quellcode

    1. Dim hWnd As IntPtr
    2. 'Windows application suchen
    3. hWnd = GetWindowHandle("GÜSTO", Windowtitle)
    4. 'Fenster erfolgreich gefunden ?
    5. If hWnd <> IntPtr.Zero Then


    Zusätzlich habe ich nun fast 2000 Codezeilen durchgeackert....um all die Definitionen einzutragen.

    Allerdings bekomme ich 2 Fehler nicht weg und finde auch nicht wirklich Infos dazu.

    Wenn ich ein FilesystemObject habe und .getfolder("Dateipad") aufrufe dann sagt er mit "Fehler 1 "Option Strict On" lässt spätes Binden nicht zu."

    Der Code sieht so aus (Dateipfad liegt als String vor):

    VB.NET-Quellcode

    1. Dim FSO As Object
    2. Dim Ordner As Object
    3. FSO = CreateObject("Scripting.Filesystemobject")
    4. Ordner = FSO.GetFolder(Dateipfad)


    docs.microsoft.com/de-de/offic…ace-help/getfolder-method
    Die MS Referenz sagt das .getfolder eine Objektvariable ist, zumindest soweit wie ich das verstehe.

    In VB6 war es as FOLDER, das geht hier aber nicht mehr und as OBJECT wirft den Fehler siehe oben.
    Welchen Variablentyp muss ich denn da nehmen bzw. wo bekomme ich diese Info her ?

    Der 2. Fehler ist ebenfalls "Late binding", da bin ich ebenfalls ratlos:

    VB.NET-Quellcode

    1. Private Sub QuickSort(ByRef arr_M_S_Index As Object, ByVal Spalte As Integer)
    2. Dim i As Long
    3. Dim j As Long
    4. Dim y As Long
    5. Dim temp As Integer
    6. 'Bubblesort Such Index Array geringste Anzahl von Treffer in Vorsuche nach oben
    7. For i = LBound(CType(arr_M_S_Index, Array), 1) To UBound(CType(arr_M_S_Index, Array), 1) - 1
    8. For j = LBound(CType(arr_M_S_Index, Array), 1) To UBound(CType(arr_M_S_Index, Array), 1) - 1
    9. 'wenn der 1. Eintrag grösser als der 2. ist
    10. If arr_M_S_Index(j, Spalte) > arr_M_S_Index(j + 1, Spalte) = True Then
    11. 'Zeilen tauschen im Array
    12. For y = LBound(CType(arr_M_S_Index, Array), 2) To UBound(CType(arr_M_S_Index, Array), 2)
    13. temp = arr_M_S_Index(j, y)
    14. arr_M_S_Index(j, y) = arr_M_S_Index(j + 1, y)
    15. arr_M_S_Index(j + 1, y) = temp
    16. Next y
    17. End If
    18. Next
    19. Next
    20. End Sub


    Er moniert diese Vergleiche:

    arr_M_S_Index(j, Spalte) > arr_M_S_Index(j + 1, Spalte)

    Hier mache ich wohl den Fehler das Array als Object zu übergeben, sobald ich auf den Inhalt einer Zelle zugreifen will bekomme ich den binding Fehler.

    Aber alle Versuche das Array als andere Variablen-typ zu übergeben scheitern, was mache ich falsch ?

    Danke für Eure Antworten.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mabbi“ ()

    1) Verwende anstatt dem FileSystemObject die Funktionen aus System.IO Namespace.

    2) Verwende statt deiner Quicksort-Methode ein Array.Sort oder noch besser Linq.

    Du hast mit dem .Net-Framework ein unheimlich mächtiges Werkzeug.
    Was in VB6 manuell auscodiert werden musste, gibt es jetzt gratis mit einem Aufruf.
    Wenn du das richtig nutzt, kannst du deine tausende Zeilen auf ein Minimum komprimieren.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod Jou.
    @Mabbi As Object sollte in Deinem Code nicht vorkommen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die beiden late binding Error habe ich nun selber gelöst.

    @petaod: Danke für den Hinweis, habe ich in meine TODO Liste geschrieben.
    Allerdings muss ich erstmal etwas mit den Array Functionen rumexperimentieren. Ich traue mich noch nicht, das adhoc im gesamten Projekt umzusetzen.
    System.IO Namespace habe ich mir schon angeguckt und bastel gerade in einer autarken Testumgebung daran, ob ich alle Funktionen die ich brauche auch abgebildet bekomme. Da bin ich optimistisch.
    Den betroffenen Part des Codes habe ich aktuell in ein Modul verschoben, das Ohne STRICT ON das Late binding zulässt, wird aber bei Erfolg mit dem System.IO Namespace dann sauber projektweit ersetzt.

    Aktuell arbeite ich gerade mal an den ersten 20-25% des Gesamtumfangs, was ich alles konvertieren möchte zu VB.
    Das alte Programm ist halt über ca.7 Jahre erst in Excel-Sheets mit app-functionen, dann mit VBA Marcos und Forms und danach in Teilen in VB6 entstanden und wird hier von 20 Leuten täglich genutzt, wobei es große Teile unserer Produktion, Repa/Rekla Bearbeitng Verwaltung, Berechnung von Rahmenaufträgen und Bedarfsplanung Einkauf, automatische Kundenmails (Rechnungen, Auftragsbestätigungen, Angebote etc.) und Akkordzeitenverwaltung mit angehängter Lohnvorbereitung steuert.
    Unsere alte Warenwirtschaftssoftware (eigentlich ein Witz es so zu nennen) macht nur noch FiBu und Stammdatenverwaltung.
    Entstanden ist das aus kleinen Modulen, die aus der Not und dem Willen nach Effizienz, Kontrolle und Nachvollziehbarkeit von Abläufen meinerseits geboren wurden...einfach Notwendigkeiten.
    Und es läuft (auch wenn es bei dem Flickwerk nicht vermuten sollte) 100% absturzfrei und zuverlässig.

    DIe Migration komplett von dem alten Excel Teilen weg ist das aktuell Ziel für den nächsten Step. Das Flickwerk aus alten Insellösungen habe ich in den letzten 2 jahren schon zu 90 % beseitig und viele Teile neu aufgesetzt in einem grossen Modul.
    Wenn es dann irgendwann komplett in VB läuft geht es weiter wie immer, refakturieren, neues ausprobieren und modulweise ersetzen.

    Ich möchte derzeit nicht mehr Baustellen aufmachen als ich bearbeiten kann und auch nur laufende Funktionen esetzen, wenn ich die neuen Methoden und deren Anwendung verstehe und richtig einsetzen kann.
    Ich verstehe Euren Ansatz und Danke auch für die Hilfe. Ich müsste defacto das ganze Teil eigentlich neu programmieren, das ist mir schon klar.

    Das geht aber zeittechnisch nicht, ich kann pro Arbeittag mal 30 Minuten oder 1 Stunde dafür abzwacken. Und es muss laufen, ich kann und will mich hier nicht total verzetteln.
    Kurzum, alles in kleinen Schritten, slow & safe.

    Und das Endergebnis wird hoffentlich wie immer überraschen...wenn mir jemand vor 10 Jahren gesagt hätte, das hier ganze Bereiche der Firma auf der Basis meiner autodidaktischen Experimente läuft, ich hätte Ihn einfach nur belächelt.

    In diesem Sinne...
    bitte nun eine Antwort auf mein Problem:

    VB.NET-Quellcode

    1. ShowWindow(p.MainWindowHandle, 3)


    Warum funktioniert das nicht zum maximieren einer minimierten app?

    Er findet das Fenster anhand des korrekten vollständigen Titels, der
    Aufruf in dieser Zeile ist dann aber ohne sichtbare Auswirkung.

    Vielen Dank vorab für Eure Hilfe.

    Mabbi schrieb:

    VB.NET-Quellcode

    1. ShowWindow(p.MainWindowHandle, 3)
    Was für Aufrufe von ShowWindow() kommen sonst noch in Deinem Programm vor?
    Was bedeutet der Parameter 3?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Was für Aufrufe von ShowWindow() kommen sonst noch in Deinem Programm vor?
    Nur an dieser einen Stelle

    Was bedeutet der Parameter 3?
    Die 3 ist das Parameter für Maximieren eines Windows-Fensters.
    s. hier: docs.microsoft.com/en-us/windo…ser/nf-winuser-showwindow

    Ich habe es auch schon mit dem Restore Befehl (9) versucht, auch das ohne Erfolg.

    Die Funktion erkennt das Fenster korrekt, die Messagebox taucht nur auf wenn die App nicht läuft, ansonsten wandert der Focus auf die App, die restore bzw. maximize windows ist aber ohne Effekt wenn die app in der Taskbar minimiert läuft.
    Das hier ist der Aufruf:

    VB.NET-Quellcode

    1. 'Gefundene application focus setzen (activate)
    2. ShowAppWindow(Windowtitle)
    3. SetForegroundWindow(hWnd)


    Das ist der Code im Modul:

    VB.NET-Quellcode

    1. Public Declare Function ShowWindow Lib "user32" (ByVal handle As IntPtr, ByVal nCmdShow As Integer) As Boolean
    2. ....
    3. Public Sub ShowAppWindow(ByVal Title As String)
    4. Try
    5. Dim localByName As Process() = Process.GetProcessesByName(Title)
    6. For Each p As Process In localByName
    7. ShowWindow(p.MainWindowHandle, 9) ' SW_Restore
    8. ShowWindow(p.MainWindowHandle, 3) ' SW_MAXIMIZE
    9. Next
    10. Catch ex As Exception
    11. ' do something
    12. MsgBox(ex)
    13. End Try
    14. End Sub


    Nachtrag:

    Hier:

    VB.NET-Quellcode

    1. Dim localByName As Process() = Process.GetProcessesByName(Title)


    kommt eine Variable mit der Länge NULL raus.
    Der Fokus auf die App kommt von

    VB.NET-Quellcode

    1. SetForegroundWindow(hWnd)


    die ShowwindowApp scheint überhaupt nichts zu machchen, weil er weder eine Exception wirft noch einen passenden Prozess findet ?

    2. Nachtrag:

    mir kam gerade eine Idee, warum den Process über den Namen identifizieren, wenn ich doch schon sicher bin, den IntPtr (hwnd) auf das richtige Fenster zu haben ?
    Also habe ich mal den einfachen Weg ausprobiert:

    VB.NET-Quellcode

    1. If hWnd <> IntPtr.Zero Then
    2. 'Gefundene application focus setzen (activate)
    3. ShowWindow(hWnd, 9) ' SW_Restore
    4. SetForegroundWindow(hWnd)
    5. Else
    6. MsgBox("Keine Application gefunden mit folgendem Teilnamen: ""GUTO"" ?")
    7. End If


    und siehe da...Erfolg. :)

    Problem gelöst. Manchmal sieht man den Wald vor Bäumen nicht. Danke für Eure Unterstützung.

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „EaranMaleasi“ ()