Thema Datum  Von Nutzer Rating
Antwort
05.09.2022 15:43:43 Eugen
NotSolved
05.09.2022 17:58:05 Gast15772
NotSolved
05.09.2022 18:20:20 Gast614
NotSolved
05.09.2022 18:25:18 Gast15772
NotSolved
05.09.2022 18:49:04 Trägheit
NotSolved
05.09.2022 18:52:15 Gast15772
NotSolved
05.09.2022 18:55:54 Trägheit
NotSolved
05.09.2022 18:57:59 Gast15772
NotSolved
05.09.2022 19:23:49 Trägheit
NotSolved
05.09.2022 22:00:28 Mase
NotSolved
08.09.2022 18:30:12 Trägheit
NotSolved
08.09.2022 20:24:47 Mase
NotSolved
06.09.2022 08:22:40 volti
NotSolved
Blau 32bit auf 64bit Code Excel
05.09.2022 18:17:42 Gast28746
NotSolved
05.09.2022 21:16:18 volti
NotSolved
06.09.2022 13:30:11 Eugen
NotSolved
10.09.2022 13:13:34 Gast4562
Solved

Ansicht des Beitrags:
Von:
Gast28746
Datum:
05.09.2022 18:17:42
Views:
202
Rating: Antwort:
  Ja
Thema:
32bit auf 64bit Code Excel

Habe schon alle Declare fuctions auf PtrSafe geaendert und mit LongPtr rumgedoktert

Da liegt auch schon das Problem... "herumdoktern" ist gar nicht notwendig, weil es ein Schema gibt. Man muss sich nur damit auseinander setzen. ;)

Beispiel:

Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long

Im Zweifel liefert einem Tante Google die Seite von Microsoft, auf welcher diese Funktion dokumentiert ist.

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics

Dann schaut man sich dort alle Datentypen genauer an (auch den von der Funktionsrückgabe).

Dann stellt man fest, dass sowohl nIndex als auch der Funktionsrückgabetyp den Datentyp int haben (in VBA entspricht das Long).

Und dann wird daraus:

Private Declare PtrSafe Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long

uuuuund fertsch!


Es geht aber oft noch einfacher...

  • Dokumentation sorgfältig studieren und darauf achten ob irgendwo Zeiger vorkommen.

Es geht aber oft noch einfacher...

  1. LongPtr ist nur dort relevant, wo es um Zeiger und Handles geht. Solche Parameter beginnen der Regel nach mit lp (=long pointer) oder h (=handle) - ganz klassisch z.B. ist der Parameter hwnd ... ein Fenster-Handle.
  2. Eine Besonderheit gibt es bei Zeichenketten (String) - z.B. bei der API Funktion GetWindowTextA(). Dort gibt es einen Parameter lpString der, wie man am lp sieht, ein Zeiger ist. In VBA kann man hier allerdings getrost lpString As String schreiben (lpString As LongPtr wäre auch ok, aber dann wäre es etwas umständlicher an den Text zu gelangen).

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
05.09.2022 15:43:43 Eugen
NotSolved
05.09.2022 17:58:05 Gast15772
NotSolved
05.09.2022 18:20:20 Gast614
NotSolved
05.09.2022 18:25:18 Gast15772
NotSolved
05.09.2022 18:49:04 Trägheit
NotSolved
05.09.2022 18:52:15 Gast15772
NotSolved
05.09.2022 18:55:54 Trägheit
NotSolved
05.09.2022 18:57:59 Gast15772
NotSolved
05.09.2022 19:23:49 Trägheit
NotSolved
05.09.2022 22:00:28 Mase
NotSolved
08.09.2022 18:30:12 Trägheit
NotSolved
08.09.2022 20:24:47 Mase
NotSolved
06.09.2022 08:22:40 volti
NotSolved
Blau 32bit auf 64bit Code Excel
05.09.2022 18:17:42 Gast28746
NotSolved
05.09.2022 21:16:18 volti
NotSolved
06.09.2022 13:30:11 Eugen
NotSolved
10.09.2022 13:13:34 Gast4562
Solved