 	if (!FileExist(PrgPaths))
 	{
 	; https://www.autohotkey.com/boards/viewtopic.php?f=76&t=31269
-		if (A_Is64bitOS && A_PtrSize == 4)
+		if (A_Is64bitOS && !PrgLnch.64Bit())
 		{
 			if (!(disableRedirect := DllCall("Wow64DisableWow64FsRedirection", "Ptr*", oldRedirectionValue)))
 			return % PrgLnch.SelIniChoicePath . " does not exist and there is a redirection error!"


		if (noPrompt || defResMsg)
		{
			if (DefResMsg == 1)
			return 1
			else
			return 0
		}
		else
		{
		defResMsg := TaskDialog("Same Resolution", "Informational: The resolution on the Prg's target`nmonitor is identical to its current resolution", , "When the target resolution is the same as the existing resolution, the firmware`nin most monitors performs a rescan each time the change resolution function`nis called, a consideration fortunately handled in most video driver software.`nChoose the recommended action, unless trouble-shooting the monitor.`n`nScreen resolution always changes automatically when " . """" . "Change at every mode" . """" . "`nin " . """" . "Res Options" . """" . " is selected`, irrespective of the following choices.", , "Change resolution", "Do not change resolution (Recommended)", "Decide later")
			if (defResMsg < 0)
			{
			defResMsg := -defResMsg
				if (defResMsg != 3)
				IniWrite, %defResMsg%, % PrgLnch.SelIniChoicePath, General, DefResMsg
			}
			if (defResMsg == 1)
			return 1
			else
			return 0
		}
	}
	else
	return 1

	PrgLnchOpt.CurrMonStat := 0
	return False
	}
	OffsetDWORD := 4, OffsetUchar := 1

	sizeOfmonitorHandleAndDesc := 128 * (A_IsUnicode ? 2 : 1) + ((PrgLnch.64Bit() + 1) * OffsetDWORD)

	VarSetCapacity(monitorHandleandDesc, sizeOfmonitorHandleandDesc, 0)
	VarSetCapacity(Physical_Monitor, numberOfPhysicalMonitors * sizeOfmonitorHandleandDesc, 0)
	; Get Physical Monitor from handle

	;NumPut(Physical_Monitor, Device_Mode, OffsetDWORD + offsetWORDStr, Ushort) ; initialise cbsize member
	if (DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR", "Ptr", hMonitor, "uint", numberOfPhysicalMonitors, "Ptr", &Physical_Monitor))
	{

		Loop %numberOfPhysicalMonitors%
		{
			if (A_Index > 1)
			outStr .= "`n"

			physHand := NumGet(Physical_Monitor, (A_Index - 1) * sizeOfmonitorHandleAndDesc)
			; 0 value Physical Monitor Handles are valid and common!!!
			VarSetCapacity(MC_TIMING_REPORT, OffsetUchar + OffsetDWORD + OffsetDWORD)
			retVal := DllCall("dxva2\GetTimingReport", "Ptr", physHand, "Ptr", &MC_TIMING_REPORT)
