コンソール アプリケーションからGetConsoleScreenBufferInfoEx関数を呼び出そうとしています。問題があれば、アプリケーションは 64 ビット Windows 7 で動作する 32 ビット アプリケーションです。言語は RealBasic です。
すべての構造を正しく定義したと思います。バッファ出力ハンドルは、呼び出されている他のすべての API 関数に対して機能します。
Declare Function GetConsoleScreenBufferInfoEx Lib "Kernel32" (cHandle As Integer, ByRef info As CONSOLE_SCREEN_BUFFER_INFOEX) As Boolean
Declare Function GetLastError Lib "Kernel32" () As Integer
Declare Function GetStdHandle Lib "Kernel32" (hIOStreamType As Integer) As Integer
Const STD_OUTPUT_HANDLE = -11
Dim stdHandle As Integer = GetStdHandle(STD_OUTPUT_HANDLE)
Dim err As Integer
Dim info As CONSOLE_SCREEN_BUFFER_INFOEX
If GetConsoleScreenBufferInfoEx(stdHandle, info) Then
Break
Else
err = GetLastError //Always 87, Invalid parameter
Break
End If
構造:
Structure CONSOLE_SCREEN_BUFFER_INFOEX
cbSize As Integer
dwSize As COORD
CursorPosition As COORD
Attribute As UInt16
srWindow As SMALL_RECT
MaxWindowSize As COORD
PopupAttributes As UInt16
FullScreenSupported As Boolean
ColorTable(15) As UInt32
Structure COORD
X As UInt16
Y As UInt16
Structure SMALL_RECT
Left As UInt16
Top As UInt16
Right As UInt16
Bottom As UInt16
私はこれを20回以上行ってきましたが、何も悪いようには見えません。COORD および SMALL_RECT 構造体はこれまで何度も使用してきたので、変換エラーはなかったと思います。ただし、CONSOLE_SCREEN_BUFFER_INFOEX 構造体は、ここで初めて使用され、私の翻訳のどこかにエラーがあるように感じます。