diff --git a/openrct2.vcxproj b/openrct2.vcxproj
index 1c82ce90d8..89e758c22d 100644
--- a/openrct2.vcxproj
+++ b/openrct2.vcxproj
@@ -663,7 +663,11 @@
openrct2-libs-vs2015-x64.lib;imm32.lib;version.lib;winmm.lib;%(AdditionalDependencies)
UseFastLinkTimeCodeGeneration
/OPT:NOLBR /ignore:4099 %(AdditionalOptions)
+ Console
+
+ PerMonitorHighDPIAware
+
@@ -689,7 +693,11 @@
true
openrct2-libs-vs2015-x64.lib;imm32.lib;version.lib;winmm.lib;%(AdditionalDependencies)
/ignore:4099 %(AdditionalOptions)
+ Windows
+
+ PerMonitorHighDPIAware
+
diff --git a/src/platform/windows.c b/src/platform/windows.c
index 8ab8449a60..2bf5862c8d 100644
--- a/src/platform/windows.c
+++ b/src/platform/windows.c
@@ -51,10 +51,26 @@ static HMODULE _dllModule = NULL;
/**
* Windows entry point to OpenRCT2 without a console window.
*/
-// int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
-// {
-// return 0;
-// }
+int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
+{
+ _dllModule = hInstance;
+
+ int argc;
+ char ** argv = (char**)windows_get_command_line_args(&argc);
+ int runGame = cmdline_run(argv, argc);
+
+ // Free argv
+ for (int i = 0; i < argc; i++) {
+ free(argv[i]);
+ }
+ free(argv);
+
+ if (runGame == 1) {
+ openrct2_launch();
+ }
+
+ return gExitCode;
+}
/**
* Windows entry point to OpenRCT2 with a console window using a traditional C main function.