diff --git a/source/net/filebot/platform/windows/Kernel32.java b/source/net/filebot/platform/windows/Kernel32.java new file mode 100644 index 00000000..9e9e2945 --- /dev/null +++ b/source/net/filebot/platform/windows/Kernel32.java @@ -0,0 +1,17 @@ +package net.filebot.platform.windows; + +import com.sun.jna.Native; +import com.sun.jna.platform.win32.WTypes.LPWSTR; +import com.sun.jna.platform.win32.WinDef.UINTByReference; +import com.sun.jna.win32.StdCallLibrary; +import com.sun.jna.win32.W32APIOptions; + +public interface Kernel32 extends StdCallLibrary { + + public static final long APPMODEL_ERROR_NO_PACKAGE = 15700; + + Kernel32 INSTANCE = Native.loadLibrary("kernel32", Kernel32.class, W32APIOptions.DEFAULT_OPTIONS); + + long GetCurrentPackageFullName(UINTByReference packageFullNameLength, LPWSTR packageFullName); + +} diff --git a/source/net/filebot/platform/windows/WinAppUtilities.java b/source/net/filebot/platform/windows/WinAppUtilities.java index 99432300..72b2f8df 100644 --- a/source/net/filebot/platform/windows/WinAppUtilities.java +++ b/source/net/filebot/platform/windows/WinAppUtilities.java @@ -8,9 +8,14 @@ import java.util.logging.Level; import javax.swing.UIManager; +import com.sun.jna.Memory; +import com.sun.jna.Native; import com.sun.jna.WString; import com.sun.jna.platform.win32.Shell32; +import com.sun.jna.platform.win32.WinDef.UINT; +import com.sun.jna.platform.win32.WinDef.UINTByReference; import com.sun.jna.platform.win32.WinError; +import com.sun.jna.platform.win32.WTypes.LPWSTR; import com.sun.jna.ptr.PointerByReference; public class WinAppUtilities { @@ -35,6 +40,25 @@ public class WinAppUtilities { return null; } + public static String getPackageName() { + System.out.println("WinAppUtilities.getPackageName()"); + + UINTByReference length = new UINTByReference(new UINT(0)); + Kernel32.INSTANCE.GetCurrentPackageFullName(length, null); + + System.out.println(length); + System.out.println(length.getValue()); + System.out.println(length.getValue().longValue()); + + LPWSTR lpwstr = new LPWSTR(new Memory(length.getValue().intValue() * Native.WCHAR_SIZE)); + Kernel32.INSTANCE.GetCurrentPackageFullName(length, lpwstr); + System.out.println(length); + System.out.println(length.getValue()); + System.out.println(lpwstr); + + return lpwstr.toString(); + } + public static void initializeApplication(String aumid) { if (aumid != null) { setAppUserModelID(aumid);