ShellExecute | Und andere schwerzuverstehende Sachen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ShellExecute | Und andere schwerzuverstehende Sachen

    Hay Leuteichhabe ein Problem . Undzwar...

    VB.NET-Quellcode

    1. Private Declare Function GetDesktopWindow Lib "user32" () As Long
    2. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    3. ByVal hWnd As Long, ByVal lOperation As String, ByVal lpFile As String, _
    4. ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



    das habe ich alles Declariert. Nun wollte aber die eig. Sache nicht funktionieren.

    VB.NET-Quellcode

    1. Call ShellExecute(GetDesktopWindow(), "Open", "Datensicherung.ps1", "", "C:\Programme\Power Gui\ScriptEditor.exe", 1)


    ich hbae son dem ShellExecute rein garkeine Ahnung und die Declarationen sind alle von Google.
    könnte mir einer sagen warum da folgende Fehlermeldung kommt ?

    PInvokeStackImbalance wurde erkannt.
    Message: Ein Aufruf an die PInvoke-Funktion "WindowsApplication1!WindowsApplication1.Datensicherung: : ShellExecute" 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.





    Oder wenn ihn Zeit und Lust habt mir direkt die letzte Zeile vervollständigen??
    also mein Programm "PowerGui" liebt hier : "C:\Programme\Power Gui\ScriptEditor.exe"
    und mein Dokument hier : C:\Datensicherung.ps1


    ich hoffe wirklich auf antworten.

    mit lieben Grüßen
    Checky97

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Checky97“ ()

    Willkommen im Forum. :thumbup:

    Checky97 schrieb:

    PInvokeStackImbalance wurde erkannt.
    Da hast Du doch bestimmt alten VB6-Code zu Grunde gelegt.
    Mach mal in der Deklaration von ShellExecute aus allen Long ein Integer.
    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!
    Danke danke. ich werde es morgen in der Firma direkt auspropieren.. ich danke dir vielmals.

    Edit:

    @Rod: OKe hab ich jetzt gemacht.. hatte zuerst das AS vergessen.

    jetzt saget es mir

    System.OverflowException wurde nicht behandelt.
    Message=Die arithmetische Operation hat einen Überlauf verursacht.


    Bei dieser Zeile

    VB.NET-Quellcode

    1. Call ShellExecute(GetDesktopWindow(), "Open", "C:\Datensicherung.ps1", "", "C:\Programme\Power Gui\ScriptEditor.exe", 1)


    #######################################################################

    Nachtrag:
    Ich habe das mit dem IntPtr gerade mal ausprobiert. Es funzt auch nicht :(

    Edit by hal2000:
    - Vollzitat entfernt.
    - Doppelpost zusammengefügt
    - rote Schriftfarbe entfernt.

    Liest hier eigentlich irgendjemand die Regeln beim Registrieren?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hal2000“ ()

    Du musst nicht den ganzen Post vor Dir zitieren, das ist echt lästig.
    Mir fällt da noch was auf, steht hier:

    VB.NET-Quellcode

    1. Declare Function ShellExecuteA Lib "shell32.dll" ( _
    2. ByVal hWnd As IntPtr, _
    3. ByVal lpOperation As String, _
    4. ByVal lpFile As String, _
    5. ByVal lpParameters As String, _
    6. ByVal lpDirectory As String, _
    7. ByVal nShowCmd As Integer) As IntPtr
    Da musst Du IntPtr verwenden.
    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!