1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan
  5. Helfer und Tools
  6. Dlls, Includes, Units und Prozeduren

ProSpeed.dll

  • H.Brill
  • 27. September 2023 um 09:14
  • H.Brill
    Dauergast
    Reaktionen
    456
    Beiträge
    1.158
    • 27. September 2023 um 09:14
    • #1

    Hallo,

    Kann mir jemand erklären, warum das Fenster nach etwa 3 Sekunden troz Waitkey/WaitInput

    verschwindet bzw. sich das Programm beendet ?

    Code
    Declare Handle dll, Long exhdc, breite, hoehe, winkel, String datei
    Window 600, 400
    dll = ImportDLL("ProSpeed.dll", "")
    datei = "F:\Test.png"
    DrawPic datei, 100, 100; 0
    exhdc = LoadFileImage(addr(datei)) 'Bild laden
    breite = GetWidthImage(exhdc) 'Breite und Hoehe des Bilds
    hoehe = GetHeightImage(exhdc) 'ermitteln
    winkel = 90
    RotateImage(%HDC, 100, 200, breite, hoehe, exhdc, 0, 0, winkel, 0, 0) 
    
    WaitKey
    FreeDLL dll
    Alles anzeigen

    Funktionieren tut es ja.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • JörgG
    Dauergast
    Reaktionen
    528
    Beiträge
    1.119
    • 27. September 2023 um 19:58
    • #2

    Und wenn du hinter der letzten Zeile

    Code
    FreeDLL dll 'deine letzte Zeile
    Print "Blub, Fenster weg, puff"
    waitkey 

    anfügst, bleibt dieses Fenster, bis du eine Taste drückst?

    Welche Zeilen/Funktionen werden denn mit der ProSpeed.dll ausgeführt?

    Gruß Jörg

    Ideen gibt es viele - man muß sie nur haben...
    Linux Mint / LMDE / Antix (Win7 + 10 offline auf VirtualBox gelegentlich für XProfan oder PureBasic)

  • H.Brill
    Dauergast
    Reaktionen
    456
    Beiträge
    1.158
    • 27. September 2023 um 20:15
    • #3
    Zitat von JörgG

    Welche Zeilen/Funktionen werden denn mit der ProSpeed.dll ausgeführt?

    Zeilen 6, 7, 8, 10

    genauso übernommen, wie in der Prospeed - Hilfe beschrieben.

    Nur die Variablen sind mit Long deklariert, statt mit Postfix.

    Ein Waitkey dahiner bringt auch nichts. Hatte sogar ein

    Code
    While 1
      WaitInput
    EndWhile

    dahinter. Ohne Erfolg. Mache ich ja öfter so, wenn mir anfangs das Schließen-Kreuz reicht

    und es nur zum Testen ist.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

    Einmal editiert, zuletzt von H.Brill (27. September 2023 um 20:21)

  • Jens-Arne
    Weiß worum´s geht
    Reaktionen
    83
    Beiträge
    104
    • 28. September 2023 um 18:39
    • #4

    Hallo Heinz,

    das Programm "beendet" sich nicht, sondern es stürzt ab. Das liegt daran, dass Du 11 statt 10 Parameter bei RotateImage übergibst. ;) Das haben DLL-Funktionen so an sich. Wenn die Parameterzahl nicht stimmt, gibt es einen Absturz ohne Fehlermeldung, und zwar oft erst ein paar Sekunden verzögert. In dieser Zeit reagiert das Programm aber schon nicht mehr.

    LG Jens-Arne

  • JörgG
    Dauergast
    Reaktionen
    528
    Beiträge
    1.119
    • 28. September 2023 um 22:13
    • #5

    jo, seh ich auch so.

    sonst hätte das zweite waitkey auf jeden Fall das Programm abgefangen, weil an dieser Stelle ja dann die DLL entladen wäre, falls das erste waitkey aus irgendwelchen Gründen ausgelöst hätte.

    Gruß Jörg

    Ideen gibt es viele - man muß sie nur haben...
    Linux Mint / LMDE / Antix (Win7 + 10 offline auf VirtualBox gelegentlich für XProfan oder PureBasic)

  • H.Brill
    Dauergast
    Reaktionen
    456
    Beiträge
    1.158
    • 29. September 2023 um 07:37
    • #6

    Oh, danke.

    Da war wohl eine Null der beiden letzten Parameter zuviel.

    Manchmal sieht man den Wald vor lauter Bäumen nicht.

    Da hatte ich ja bisher mit meinen DLLs (listview.dll usw.) immer Glück gehabt.

    Bin auch immer davon ausgegangen, daß der Interpreter/Compiler das überprüft.

    Genauso, wenn ich bei DEF eine (2) schreibe und nur einen Parameter übergebe.

    Einzige Ausnahme war für mich immer nur CALL. Dort mußte es stimmen.

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Jens-Arne
    Weiß worum´s geht
    Reaktionen
    83
    Beiträge
    104
    • 5. Oktober 2023 um 18:54
    • #7

    XProfan kann die Parameter-Anzahl nicht überprüfen. Die steht in einer DLL nämlich nirgends. Bei stdcall-Funktionen kann man versuchen, sie über die Bereinigung des Stacks am Ende der Funktion herauszufinden, aber das funktioniert für sehr viele DLLs nicht. Z.B. nicht für PureBasic-DLLs, die folgen überhaupt nicht den Standardkonventionen. Da gibt es keine .edata-Section, zwei statt einer code-Section usw. usf.. Daran habe ich mir schonmal die Zähne ausgebissen. Dafür müsste man einen kompletten Disassembler schreiben und dann den Programmablauf parsen, und das übersteigt meine Fähigkeiten und auch meine Geduld nun doch bei weitem. Das PE-Format ist sowieso eine einzige Katastrophe. Aus diesen Gründen arbeitet auch kein einziges Programm, das ich kenne, zuverlässig, das versucht, die Parameter-Anzahl von DLL-Funktionen zu bestimmen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Windows 11

Ähnliche Themen

  • Der XProfan-Stammtisch

    • Schwabenpfeil!
    • 22. März 2009 um 20:36
    • XProfan-Stammtisch
  • Assemblercodes für das neue X4

    • RGH
    • 25. März 2017 um 00:18
    • Spezielles
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™