Sign in to follow this  
Followers 0
Killer

Run A App In Compatibility Mode

3 posts in this topic

Does anyone know how to have AutoIT to execute a program in its compatibility mode such as run in Win95, run in 256 colours etc?

Share this post


Link to post
Share on other sites



I think you'd pretty much have to do a mouse coordinate click program using "MouseMove"

I would write one for you, but it would be different depending on where the icon was on your screen

Just use the Autoit on-screen info thingy and find the coordinates

Just run it every time

Share this post


Link to post
Share on other sites

I think you'd pretty much have to do a mouse coordinate click program using "MouseMove"

I would write one for you, but it would be different depending on where the icon was on your screen

Just use the Autoit on-screen info thingy and find the coordinates

Just run it every time

That sounds complicated :think:

$path = "Full path to exe"
$check = _SetCompat($path)
If @error == 1 Then
    MsgBox(0,"Error", "Incorrect Operating System Version.")
ElseIf @error == 2 Then
    MsgBox(0,"Error", "Path to .exe file does not exist.")
EndIf

Func _SetCompat($pathToExe, $OS_Version = "", $256_Mode = 0, $640_480_Mode = 0, $Disable_Themes = 0, $Disable_Adv_Text = 0)
    $regString = ""
    Select
        Case StringInStr($OS_Version, "95")
            $regString &= "WIN95 "
        Case StringInStr($OS_Version, "98") Or StringInStr($OS_Version, "ME")
            $regString &= "WIN98 "
        Case StringInStr($OS_Version, "NT")
            $regString &= "NT4SP5 "
        Case StringInStr($OS_Version, "2000")
            $regString &= "WIN2000 "
        Case $OS_Version <> ""
            SetError(1)
            Return 0; Incorrect OS Version
    EndSelect
    If $256_Mode <> 0 Then
        $regString &= "256COLOR "
    EndIf
    If $640_480_Mode <> 0 Then
        $regString &= "640X480 "
    EndIf
    If $Disable_Themes <> 0 Then
        $regString &= "DISABLETHEMES "
    EndIf
    If $Disable_Adv_Text <> 0 Then
        $regString &= "DISABLECICERO "
    EndIf
    If StringRight($regString, 1) == " " Then
        $regString = StringTrimRight($regString, 1)
    EndIf
    If FileExists($pathToExe) Then
        RegWrite("HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers", $pathToExe, "REG_SZ", $regString)
        Return 1; Success
    Else
        SetError(2)
        Return 0; EXE file does not exist
    EndIf
EndFunc

[u]My UDFs[/u]Coroutine Multithreading UDF LibraryStringRegExp GuideRandom EncryptorArrayToDisplayString"The Brain, expecting disaster, fails to find the obvious solution." -- neogia

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0