Bonjour,

A force de creuser le sujet, je me suis rendu-compte qu'il était préférable de récupérer la longueur d'une String (peut-être que c'est à différencier d'un buffer ?) via VBA.LenB. Hors, le code suivant plante en 64 bits.

Le bout de code suivant permet de lire le contenu d'une console MS-DOS.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
    '...
 
    Dim lpCharacter As String: lpCharacter = VBA.Space$(8192) 'je pourrais augmenter la taille, mais ça me suffit
 
    'a priori, je devrais écrire nLength:=VBA.LenB(lpCharacter) au lieu de nLength:=VBA.LenB(lpCharacter) pour assurer une compatibilité mixte 32 vs. 64 bits, mais ça plante en 64 bits
    API.ReadConsoleOutputCharacter hConsoleOutput:=hConsoleOutput, _
        lpCharacter:=lpCharacter, _
        nLength:=VBA.Len(lpCharacter), _
        dwReadXY:=0&, _
        lpNumberOfCharsRead:=lpNumberOfCharsRead 'dwReadXY est remplacé par dwReadCoord dans la déclaration officielle
 
    pStr = VBA.left$(lpCharacter, lpNumberOfCharsRead)
 
    '...
Pouvez-vous s'il vous plaît m'en dire davantage concernant ce type de subtilité ?

Merci