コード: 全て選択
Const DESKTOP_KEY = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Const DESKTOP_KEY_VALUE = "Desktop"
Main()
Sub Main()
Dim hDesktopKey As HKEY
Dim pDesktopPath As VoidPtr
Dim DesktopPathLen As *DWord
RegOpenKeyEx(HKEY_CURRENT_USER, DESKTOP_KEY, 0, KEY_QUERY_VALUE, hDesktopKey)
RegQueryValueEx(hDesktopKey, DESKTOP_KEY_VALUE, 0, NULL, NULL, DesktopPathLen)
pDesktopPath = calloc(DesktopPathLen)
RegQueryValueEx(hDesktopKey, DESKTOP_KEY_VALUE, 0, NULL, pDesktopPath, DesktopPathLen)
RegCloseKey(hDesktopKey)
MessageBox(0, pDesktopPath, "", MB_OK)
free(pDesktopPath)
End Sub
DesktopPathLen を VarPtr(DesktopPathLen) に書き換えるとエラーは出なくなりますが、
DesktopPathLenは *DWord型なのでVarPtr()関数は必要ないように思います。
何故こうしないとエラーになるのでしょうか。