Fix URL opener not working on Windows build.
This commit is contained in:
@@ -1,8 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Cryville.Common.Unity {
|
namespace Cryville.Common.Unity {
|
||||||
public static class UrlOpener {
|
public static class UrlOpener {
|
||||||
public static void Open(string url) {
|
public static void Open(string url) {
|
||||||
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
|
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
|
||||||
System.Diagnostics.Process.Start(url);
|
url += "\0";
|
||||||
|
unsafe {
|
||||||
|
fixed (char* lpFile = url) {
|
||||||
|
var info = new SHELLEXECUTEINFOW {
|
||||||
|
cbSize = (uint)sizeof(SHELLEXECUTEINFOW),
|
||||||
|
fMask = 0x0540,
|
||||||
|
lpFile = lpFile,
|
||||||
|
nShow = 1,
|
||||||
|
};
|
||||||
|
ShellExecuteExW(ref info);
|
||||||
|
}
|
||||||
|
}
|
||||||
#elif UNITY_ANDROID
|
#elif UNITY_ANDROID
|
||||||
using (var clazz = new UnityEngine.AndroidJavaClass("world.cryville.common.unity.UrlOpener")) {
|
using (var clazz = new UnityEngine.AndroidJavaClass("world.cryville.common.unity.UrlOpener")) {
|
||||||
clazz.CallStatic("open", url);
|
clazz.CallStatic("open", url);
|
||||||
@@ -22,5 +36,27 @@ namespace Cryville.Common.Unity {
|
|||||||
#error Unknown platform.
|
#error Unknown platform.
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
|
||||||
|
[DllImport("shell32.dll")]
|
||||||
|
static extern void ShellExecuteExW(ref SHELLEXECUTEINFOW pExecInfo);
|
||||||
|
unsafe struct SHELLEXECUTEINFOW {
|
||||||
|
public uint cbSize;
|
||||||
|
public uint fMask;
|
||||||
|
public IntPtr hwnd;
|
||||||
|
public char* lpVerb;
|
||||||
|
public char* lpFile;
|
||||||
|
public char* lpParameters;
|
||||||
|
public char* lpDirectory;
|
||||||
|
public int nShow;
|
||||||
|
public IntPtr hInstApp;
|
||||||
|
public IntPtr lpIDList;
|
||||||
|
public IntPtr lpClass;
|
||||||
|
public IntPtr hkeyClass;
|
||||||
|
public uint dwHotKey;
|
||||||
|
public IntPtr hIconMonitor;
|
||||||
|
public IntPtr hProcess;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user