我試圖發現在Windows 7上的Java與JNA AppData\LocalLow
工作的位置,但可用於工作最接近的功能是:檢測應用程序數據 LocalLow的位置與JNA
W32API.HRESULT SHGetFolderPath(W32API.HWND hwndOwner,int nFolder,W32API.HANDLE
hToken,W32API.DWORD dwFlags,char[] pszPath)
在這裏,我們已在Solution in C#
但在我的情況下,JAVA + JNA,我想知道我怎麼可以使用LocalLow GUID
只有SHGetFolderPath
,也許我應該看看這個問題從不同的角度(JNI也許會更好嗎? )
如果有人能幫助,得益於
乾杯
編輯: 「F」 好了,現在我加SHGetKnownFolderPath,但在這裏,它使返回我這樣的字符串
static interface Shell32 extends Library {
public static final int MAX_PATH = 260;
public static final String FOLDERID_APPDATALOW = "{A520A1A4-1780-4FF6-BD18-167343C5AF16}";
static Shell32 INSTANCE = (Shell32) Native.loadLibrary("shell32",
Shell32.class, OPTIONS);
public int SHGetKnownFolderPath(Guid.GUID rfid, int dwFlags, HANDLE hToken,
char[] pszPath);
}
public static void main(String[] args) {
char[] pszPath = new char[Shell32.MAX_PATH];
Guid.GUID localLowId = Ole32Util.getGUIDFromString(Shell32.FOLDERID_APPDATALOW);
int hResult = Shell32.INSTANCE.SHGetKnownFolderPath(localLowId, 0, null, pszPath);
if (hResult == 0) {
String path = new String(pszPath);
int len = path.indexOf('\0');
path = path.substring(0, len);
System.out.println(path);
} else {
System.err.println("Error: " + hResult);
}
}
您可能需要延長StdCallLibrary而因爲w32 API使用stdcall調用約定而不是庫。 – technomage 2011-07-08 00:27:36